<?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>206546</bug_id>
          
          <creation_ts>2020-01-21 11:44:45 -0800</creation_ts>
          <short_desc>webkitpy: WebSocket server doesn&apos;t support Python 3</short_desc>
          <delta_ts>2022-02-15 09:41:03 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>230319</dup_id>
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=230513</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=236375</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=230319</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>DoNotImportToRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jonathan Bedard">jbedard</reporter>
          <assigned_to name="Jonathan Bedard">jbedard</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>ap</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>glenn</cc>
    
    <cc>gsnedders</cc>
    
    <cc>slewis</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1609172</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-01-21 11:44:45 -0800</bug_when>
    <thetext>There are changes we can make to fix this, although they would need to be upstreamed to work. In the mean time, we should explicitly run the WebSocket server with Python 2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609187</commentid>
    <comment_count>1</comment_count>
      <attachid>388331</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-01-21 12:01:22 -0800</bug_when>
    <thetext>Created attachment 388331
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609253</commentid>
    <comment_count>2</comment_count>
      <attachid>388331</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2020-01-21 13:47:27 -0800</bug_when>
    <thetext>Comment on attachment 388331
Patch

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

&gt; Tools/ChangeLog:8
&gt; +        websocket_server.py doesn&apos;t support Python 3, and needs to be run with

Is there a new version of the server that supports Python 3? Perhaps Chromium implemented the changes already?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609268</commentid>
    <comment_count>3</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-01-21 14:03:01 -0800</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #2)
&gt; Comment on attachment 388331 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=388331&amp;action=review
&gt; 
&gt; &gt; Tools/ChangeLog:8
&gt; &gt; +        websocket_server.py doesn&apos;t support Python 3, and needs to be run with
&gt; 
&gt; Is there a new version of the server that supports Python 3? Perhaps
&gt; Chromium implemented the changes already?

There is not, https://github.com/web-platform-tests/wpt/issues/8820 tracks this on their side. We need to update our import anyways, and then I can see what it takes to get this specific script Python 3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609292</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2020-01-21 14:28:03 -0800</bug_when>
    <thetext>Two things that make it look like something is off here:

1. We have our own server, our tests were failing. So that needs a fix or a workaround too.

2. But only one of WPT WebSocket tests was failing. Is it actually broken?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609316</commentid>
    <comment_count>5</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-01-21 14:57:39 -0800</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #4)
&gt; Two things that make it look like something is off here:
&gt; 
&gt; 1. We have our own server, our tests were failing. So that needs a fix or a
&gt; workaround too.
&gt; 
&gt; 2. But only one of WPT WebSocket tests was failing. Is it actually broken?

We did have an &apos;old&apos; server, but it wasn&apos;t our own, it was just an old version of a third party script. Carlos replaced the old one with the w3c one a few months back, https://trac.webkit.org/changeset/247640/webkit. Now we have a single WebSocket server, the w3c one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609406</commentid>
    <comment_count>6</comment_count>
      <attachid>388331</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2020-01-21 17:30:39 -0800</bug_when>
    <thetext>Comment on attachment 388331
Patch

Seems fine as an interim measure. May be worth considering python2 when it exists though, as I’m not sure what this patch will do on systems where “python” is python3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609453</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2020-01-21 22:26:14 -0800</bug_when>
    <thetext>Still, would prefer to understand why wpt tests aren’t failing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609663</commentid>
    <comment_count>8</comment_count>
      <attachid>388453</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-01-22 11:50:08 -0800</bug_when>
    <thetext>Created attachment 388453
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609722</commentid>
    <comment_count>9</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-01-22 13:34:57 -0800</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #6)
&gt; Comment on attachment 388331 [details]
&gt; Patch
&gt; 
&gt; Seems fine as an interim measure. May be worth considering python2 when it
&gt; exists though, as I’m not sure what this patch will do on systems where
&gt; “python” is python3.

This is a good point. I changed the code to reference python2 instead of python, and it will use the current interpreter if that interpreter is Python 2. If a script is running on a system in Python 3 that doesn&apos;t have python2, this will fail, but that seems acceptable, or at least, no worse than the current situation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609728</commentid>
    <comment_count>10</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-01-22 13:46:08 -0800</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #7)
&gt; Still, would prefer to understand why wpt tests aren’t failing.

When I run those tests independently, they don&apos;t even start the WebSocket server. So it&apos;s not surprising they don&apos;t fail when the WebSocket server fails to start.

What I don&apos;t understand is what those tests are actually supposed to be testing. But I&apos;m not sure that question is within the scope of this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609734</commentid>
    <comment_count>11</comment_count>
      <attachid>388453</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-22 13:58:41 -0800</bug_when>
    <thetext>Comment on attachment 388453
Patch

Clearing flags on attachment: 388453

Committed r254944: &lt;https://trac.webkit.org/changeset/254944&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609735</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-22 13:58:43 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609745</commentid>
    <comment_count>13</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2020-01-22 14:18:54 -0800</bug_when>
    <thetext>&gt; When I run those tests independently, they don&apos;t even start the WebSocket server. So it&apos;s not surprising they don&apos;t fail when the WebSocket server fails to start.

This doesn&apos;t necessarily tell us much. The server is started anyway when running all tests, so this problem may be masked most of the time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609825</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-22 15:58:44 -0800</bug_when>
    <thetext>&lt;rdar://problem/58814743&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840518</commentid>
    <comment_count>15</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2022-02-11 13:28:33 -0800</bug_when>
    <thetext>Looks like https://github.com/web-platform-tests/wpt/issues/8820 was resolved, so there now is a new version that supports Python 3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840531</commentid>
    <comment_count>16</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2022-02-11 13:42:39 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840532</commentid>
    <comment_count>17</comment_count>
      <attachid>451740</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2022-02-11 13:42:50 -0800</bug_when>
    <thetext>Created attachment 451740
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840598</commentid>
    <comment_count>18</comment_count>
      <attachid>451751</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2022-02-11 15:26:39 -0800</bug_when>
    <thetext>Created attachment 451751
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840610</commentid>
    <comment_count>19</comment_count>
      <attachid>451751</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2022-02-11 16:13:20 -0800</bug_when>
    <thetext>Comment on attachment 451751
Patch

rs=me, as long as the license is unchanged.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840612</commentid>
    <comment_count>20</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2022-02-11 16:27:47 -0800</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #19)
&gt; Comment on attachment 451751 [details]
&gt; Patch
&gt; 
&gt; rs=me, as long as the license is unchanged.

Double checked that the license in https://github.com/web-platform-tests/wpt/blob/master/LICENSE.md matches what we have in LayoutTests/imported/w3c/web-platform-tests/LICENSE.md</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840646</commentid>
    <comment_count>21</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2022-02-11 18:17:00 -0800</bug_when>
    <thetext>Looks like I need to look at the tests we are importing as well, will do so next week. Will not be landing until EWS is green.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841260</commentid>
    <comment_count>22</comment_count>
    <who name="Sam Sneddon [:gsnedders]">gsnedders</who>
    <bug_when>2022-02-14 08:31:50 -0800</bug_when>
    <thetext>Note that bug 230319 already previously started to try and update pywebsocket; one of these should be dupe&apos;d to the other.

Bug 227255 actually already imported a recent enough version of the WPT tools for our purposes, but this didn&apos;t get noticed because it didn&apos;t remove the (gone upstream) web-platform-tests/tools/pywebsocket/.

It may well be worthwhile just focusing on removing that, and moving to web-platform-tests/tools/third_party/pywebsocket3/, rather than doing this combined with a reimport.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841287</commentid>
    <comment_count>23</comment_count>
      <attachid>451914</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2022-02-14 09:35:08 -0800</bug_when>
    <thetext>Created attachment 451914
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841760</commentid>
    <comment_count>24</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2022-02-15 09:41:03 -0800</bug_when>
    <thetext>I&apos;m going to move work over to bug 230319, since that already has more work done that I&apos;ve done here.

*** This bug has been marked as a duplicate of bug 230319 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388331</attachid>
            <date>2020-01-21 12:01:22 -0800</date>
            <delta_ts>2020-01-22 11:50:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206546-20200121120122.patch</filename>
            <type>text/plain</type>
            <size>2128</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI1NDg2OSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE2IEBACisyMDIwLTAxLTIxICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICB3ZWJraXRweTogV2ViU29ja2V0IHNlcnZlciBkb2Vzbid0IHN1cHBvcnQg
UHl0aG9uIDMgKFdvcmthcm91bmQpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDY1NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICB3ZWJzb2NrZXRfc2VydmVyLnB5IGRvZXNuJ3Qgc3VwcG9ydCBQeXRob24g
MywgYW5kIG5lZWRzIHRvIGJlIHJ1biB3aXRoCisgICAgICAgIFB5dGhvbiAyLgorCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvc2VydmVycy93ZWJzb2NrZXRfc2VydmVy
LnB5OgorICAgICAgICAoUHlXZWJTb2NrZXQuX3ByZXBhcmVfY29uZmlnKTogVXNlIFB5dGhvbiAy
IGV4cGxpY2l0bHkuCisKIDIwMjAtMDEtMjEgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIEZpeCB0dk9TIHZhbHVlcyBpbiBTVVBQT1JURURfUExBVEZPUk1TCklu
ZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJzL3dlYnNvY2tl
dF9zZXJ2ZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvc2VydmVycy93ZWJzb2NrZXRfc2VydmVyLnB5CShyZXZpc2lvbiAyNTQ4NjMpCisrKyBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJzL3dlYnNvY2tldF9zZXJ2
ZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTExOCwxMyArMTE4LDEzIEBAIGNsYXNzIFB5V2ViU29j
a2V0KGh0dHBfc2VydmVyLkxpZ2h0dHBkKToKICAgICAgICAgb3V0cHV0X2xvZyA9IHNlbGYuX2Zp
bGVzeXN0ZW0uam9pbihzZWxmLl9vdXRwdXRfZGlyLCBsb2dfZmlsZV9uYW1lICsgIi1vdXQudHh0
IikKICAgICAgICAgc2VsZi5fd3NvdXQgPSBzZWxmLl9maWxlc3lzdGVtLm9wZW5fdGV4dF9maWxl
X2Zvcl93cml0aW5nKG91dHB1dF9sb2cpCiAKLSAgICAgICAgcHl0aG9uX2ludGVycCA9IHN5cy5l
eGVjdXRhYmxlCiAgICAgICAgIHdwdF90b29sc19iYXNlID0gc2VsZi5fZmlsZXN5c3RlbS5qb2lu
KHNlbGYuX2xheW91dF90ZXN0cywgImltcG9ydGVkIiwgInczYyIsICJ3ZWItcGxhdGZvcm0tdGVz
dHMiLCAidG9vbHMiKQogICAgICAgICBweXdlYnNvY2tldF9iYXNlID0gc2VsZi5fZmlsZXN5c3Rl
bS5qb2luKHdwdF90b29sc19iYXNlLCAicHl3ZWJzb2NrZXQiKQogICAgICAgICBweXdlYnNvY2tl
dF9kZXBzID0gW3NlbGYuX2ZpbGVzeXN0ZW0uam9pbih3cHRfdG9vbHNfYmFzZSwgInRoaXJkX3Bh
cnR5IiwgInNpeCIpXQogICAgICAgICBweXdlYnNvY2tldF9zY3JpcHQgPSBzZWxmLl9maWxlc3lz
dGVtLmpvaW4ocHl3ZWJzb2NrZXRfYmFzZSwgJ21vZF9weXdlYnNvY2tldCcsICdzdGFuZGFsb25l
LnB5JykKICAgICAgICAgc3RhcnRfY21kID0gWwotICAgICAgICAgICAgcHl0aG9uX2ludGVycCwg
Jy11JywgcHl3ZWJzb2NrZXRfc2NyaXB0LAorICAgICAgICAgICAgIyBGSVhNRSBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NTQ2OiBTaG91bGQgYmUgdXNpbmcgdGhl
IHNhbWUgdmVyc2lvbiBvZiBQeXRob24gcnVuLXdlYmtpdC10ZXN0cyBpcworICAgICAgICAgICAg
J3B5dGhvbicsICctdScsIHB5d2Vic29ja2V0X3NjcmlwdCwKICAgICAgICAgICAgICctLXNlcnZl
ci1ob3N0JywgJ2xvY2FsaG9zdCcsCiAgICAgICAgICAgICAnLS1wb3J0Jywgc3RyKHNlbGYuX3Bv
cnQpLAogICAgICAgICAgICAgIyBGSVhNRTogRG9uJ3Qgd2UgaGF2ZSBhIHNlbGYuX3BvcnRfb2Jq
LmxheW91dF90ZXN0X3BhdGg/Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388453</attachid>
            <date>2020-01-22 11:50:08 -0800</date>
            <delta_ts>2022-02-11 13:42:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206546-20200122115007.patch</filename>
            <type>text/plain</type>
            <size>1843</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI1NDkyOSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE2IEBACisyMDIwLTAxLTIyICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICB3ZWJraXRweTogV2ViU29ja2V0IHNlcnZlciBkb2Vzbid0IHN1cHBvcnQg
UHl0aG9uIDMgKFdvcmthcm91bmQpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDY1NDYKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1
cnlha292LgorCisgICAgICAgIHdlYnNvY2tldF9zZXJ2ZXIucHkgZG9lc24ndCBzdXBwb3J0IFB5
dGhvbiAzLCBhbmQgbmVlZHMgdG8gYmUgcnVuIHdpdGgKKyAgICAgICAgUHl0aG9uIDIuCisKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJzL3dlYnNvY2tldF9z
ZXJ2ZXIucHk6CisgICAgICAgIChQeVdlYlNvY2tldC5fcHJlcGFyZV9jb25maWcpOiBVc2UgUHl0
aG9uIDIgZXhwbGljaXRseS4KKwogMjAyMC0wMS0yMiAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFy
ZEBhcHBsZS5jb20+CiAKICAgICAgICAgd2Via2l0cHk6IE1ha2UgbG9nZ2luZyBkdXJpbmcgSW1h
Z2VEaWZmIGNyYXNoZXMgYWNjdXJhdGUKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3NlcnZlcnMvd2Vic29ja2V0X3NlcnZlci5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJzL3dlYnNvY2tldF9zZXJ2ZXIu
cHkJKHJldmlzaW9uIDI1NDkyOSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3NlcnZlcnMvd2Vic29ja2V0X3NlcnZlci5weQkod29ya2luZyBjb3B5KQpAQCAtMTE4LDcg
KzExOCwxMSBAQCBjbGFzcyBQeVdlYlNvY2tldChodHRwX3NlcnZlci5MaWdodHRwZCk6CiAgICAg
ICAgIG91dHB1dF9sb2cgPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5fb3V0cHV0X2Rpciwg
bG9nX2ZpbGVfbmFtZSArICItb3V0LnR4dCIpCiAgICAgICAgIHNlbGYuX3dzb3V0ID0gc2VsZi5f
ZmlsZXN5c3RlbS5vcGVuX3RleHRfZmlsZV9mb3Jfd3JpdGluZyhvdXRwdXRfbG9nKQogCisgICAg
ICAgICMgRklYTUUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjU0
NjogU2hvdWxkIGJlIHVzaW5nIHRoZSBzYW1lIHZlcnNpb24gb2YgUHl0aG9uIHJ1bi13ZWJraXQt
dGVzdHMgaXMKICAgICAgICAgcHl0aG9uX2ludGVycCA9IHN5cy5leGVjdXRhYmxlCisgICAgICAg
IGlmIHN5cy52ZXJzaW9uX2luZm8gPiAoMywgMCk6CisgICAgICAgICAgICBweXRob25faW50ZXJw
ID0gJ3B5dGhvbjInCisKICAgICAgICAgd3B0X3Rvb2xzX2Jhc2UgPSBzZWxmLl9maWxlc3lzdGVt
LmpvaW4oc2VsZi5fbGF5b3V0X3Rlc3RzLCAiaW1wb3J0ZWQiLCAidzNjIiwgIndlYi1wbGF0Zm9y
bS10ZXN0cyIsICJ0b29scyIpCiAgICAgICAgIHB5d2Vic29ja2V0X2Jhc2UgPSBzZWxmLl9maWxl
c3lzdGVtLmpvaW4od3B0X3Rvb2xzX2Jhc2UsICJweXdlYnNvY2tldCIpCiAgICAgICAgIHB5d2Vi
c29ja2V0X2RlcHMgPSBbc2VsZi5fZmlsZXN5c3RlbS5qb2luKHdwdF90b29sc19iYXNlLCAidGhp
cmRfcGFydHkiLCAic2l4IildCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451740</attachid>
            <date>2022-02-11 13:42:50 -0800</date>
            <delta_ts>2022-02-11 16:13:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206546-20220211134241.patch</filename>
            <type>text/plain</type>
            <size>5787927</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NjY0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMzcxYTkwMzVkZjg4ODA0YWU3NTVmNTNkMjg1MjQwYjgx
NjM2MjhjOC4uMjhlZDA1ZDI2N2NjZmE2MWI3YzEwOThkNmEwOTY5MjhkYmVlYjAzZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
IEBACisyMDIyLTAyLTExICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KKwor
ICAgICAgICB3ZWJraXRweTogV2ViU29ja2V0IHNlcnZlciBkb2Vzbid0IHN1cHBvcnQgUHl0aG9u
IDMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjU0
NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTg4MTQ3NDM+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9zZXJ2ZXJzL3dlYnNvY2tldF9zZXJ2ZXIucHk6CisgICAgICAgIEFsd2F5cyBpbnZva2Ug
d2Vic29ja2V0IHNlcnZlciB3aXRoIFB5dGhvbiAzLgorCiAyMDIyLTAyLTAyICBKb25hdGhhbiBC
ZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbZ2l0LXdlYmtpdF0gSGFuZGxl
IGxvY2FsIGNvbW1pdCBvbiBwcm9kdWN0aW9uIGJyYW5jaApkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvc2VydmVycy93ZWJzb2NrZXRfc2VydmVyLnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvc2VydmVycy93ZWJzb2NrZXRfc2Vy
dmVyLnB5CmluZGV4IGI0ZTMxMDhkYjM2MWQ3ZmI3Y2Y1ZjA5MjY0NTBkMjJjMzY5YmEzOGMuLmZh
YmMyMGZiMTE4ZDE4OTA4MzUxM2FlOTQyNjU3ZTg3YTE5MjljZjMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3NlcnZlcnMvd2Vic29ja2V0X3NlcnZlci5w
eQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJzL3dlYnNv
Y2tldF9zZXJ2ZXIucHkKQEAgLTExOCwxMCArMTE4LDkgQEAgY2xhc3MgUHlXZWJTb2NrZXQoaHR0
cF9zZXJ2ZXIuTGlnaHR0cGQpOgogICAgICAgICBvdXRwdXRfbG9nID0gc2VsZi5fZmlsZXN5c3Rl
bS5qb2luKHNlbGYuX291dHB1dF9kaXIsIGxvZ19maWxlX25hbWUgKyAiLW91dC50eHQiKQogICAg
ICAgICBzZWxmLl93c291dCA9IHNlbGYuX2ZpbGVzeXN0ZW0ub3Blbl90ZXh0X2ZpbGVfZm9yX3dy
aXRpbmcob3V0cHV0X2xvZykKIAotICAgICAgICAjIEZJWE1FIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY1NDY6IFNob3VsZCBiZSB1c2luZyB0aGUgc2FtZSB2ZXJz
aW9uIG9mIFB5dGhvbiBydW4td2Via2l0LXRlc3RzIGlzCiAgICAgICAgIHB5dGhvbl9pbnRlcnAg
PSBzeXMuZXhlY3V0YWJsZQotICAgICAgICBpZiBzeXMudmVyc2lvbl9pbmZvID4gKDMsIDApOgot
ICAgICAgICAgICAgcHl0aG9uX2ludGVycCA9ICdweXRob24yJworICAgICAgICBpZiBzeXMudmVy
c2lvbl9pbmZvIDwgKDMsIDApOgorICAgICAgICAgICAgcHl0aG9uX2ludGVycCA9ICdweXRob24z
JwogCiAgICAgICAgIHdwdF90b29sc19iYXNlID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYu
X2xheW91dF90ZXN0cywgImltcG9ydGVkIiwgInczYyIsICJ3ZWItcGxhdGZvcm0tdGVzdHMiLCAi
dG9vbHMiKQogICAgICAgICBweXdlYnNvY2tldF9iYXNlID0gc2VsZi5fZmlsZXN5c3RlbS5qb2lu
KHdwdF90b29sc19iYXNlLCAicHl3ZWJzb2NrZXQiKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VM
b2cKaW5kZXggNmU0ODhiOWIzZjEyYTdiMGE2MzQ4ODVmN2U3NWMzZTYxMTI2Mzg1NC4uMGRmMGM1
MWQ3ZTFkNTQxZGY4MWEyNTE3Y2NmZTI2OWYyYTRjNmUwYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDItMTEgIEpvbmF0aGFuIEJlZGFyZCAg
PGpiZWRhcmRAYXBwbGUuY29tPgorCisgICAgICAgIHdlYmtpdHB5OiBXZWJTb2NrZXQgc2VydmVy
IGRvZXNuJ3Qgc3VwcG9ydCBQeXRob24gMworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NTQ2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODgxNDc0
Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy90b29sczogUmUtc3luY2VkIGZyb20gdXBzdHJlYW0gYXQgZmVjNWU2
ZmZlYmZmLgorCiAyMDIyLTAyLTExICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkIGdhcmRlbmluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvTUVUQS55bWwgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL01FVEEueW1sCmluZGV4IGExYWVi
ODRkNGE2ZmUxMjYzNzFkMWI4Zjg5OWE5NjdlZTBlNWFhODMuLmRiN2Q0ZDc4NmI0MDUxODgyZGMz
MWFhZTY3NDU2YTcxODQ4ZTMzZTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvTUVUQS55bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9NRVRBLnltbApAQCAtMSwzICsxLDQg
QEAKIHN1Z2dlc3RlZF9yZXZpZXdlcnM6CiAgIC0gamdyYWhhbQogICAtIGZvb2xpcAorICAtIERh
bmllbFJ5YW5TbWl0aApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9jZXJ0cy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2VydHMvdzNjLWltcG9ydC5sb2cK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4NzE5MTE0ZjFmMjNmY2YxMDVkNmEyYTdj
ODZlZjk3NTdiMmM2ZGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9j
ZXJ0cy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLVRoZSB0
ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0
b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0
ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9n
aXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1Nj
cmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1v
ZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVz
OgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2Vy
dHMvUkVBRE1FLm1kCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9jZXJ0cy9jYWNlcnQua2V5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9jZXJ0cy9jYWNlcnQucGVtCi0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jZXJ0cy9jb25maWcuanNvbgotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2VydHMvd2ViLXBs
YXRmb3JtLnRlc3Qua2V5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9jZXJ0cy93ZWItcGxhdGZvcm0udGVzdC5wZW0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvX19pbml0X18u
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2Np
L19faW5pdF9fLnB5CmluZGV4IGE2ODM0YjgyODVhNTZiZWYwZTE1NDNmZDkwMWM3ZTZmMmY4YmMy
MDIuLmU2OWRlMjliYjJkMWQ2NDM0YjhiMjlhZTc3NWFkOGMyZTQ4YzUzOTEgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvX19p
bml0X18ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9jaS9fX2luaXRfXy5weQpAQCAtMSArMCwwIEBACi0jIFRoaXMgZmlsZSBpcyByZXF1
aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRpcmVjdG9yeSBmb3IgbW9kdWxlcy4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2FmZmVjdGVkX3Rlc3RzLnlt
bCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kv
YXp1cmUvYWZmZWN0ZWRfdGVzdHMueW1sCmluZGV4IDk2YWIyYjhjYzUyM2VhNjg0OTk2OTMzZjRi
ZjNlNzYxNzZiZDlkOWMuLmZmYjFmZTFmNmZiMTRhZGQ0ZjFmODMzMjAzMzQzZjBhZWZkMjBjNzYg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvY2kvYXp1cmUvYWZmZWN0ZWRfdGVzdHMueW1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvYWZmZWN0ZWRfdGVzdHMu
eW1sCkBAIC02LDcgKzYsOSBAQCBwYXJhbWV0ZXJzOgogc3RlcHM6CiAtIHRlbXBsYXRlOiBjaGVj
a291dC55bWwKIC0gJHt7IGlmIG5lKHBhcmFtZXRlcnMuY2hlY2tvdXRDb21taXQsICcnKSB9fToK
LSAgLSBzY3JpcHQ6IGdpdCBjaGVja291dCAke3sgcGFyYW1ldGVycy5jaGVja291dENvbW1pdCB9
fQorICAtIHNjcmlwdDogfAorICAgICAgc2V0IC1ldXggLW8gcGlwZWZhaWwKKyAgICAgIGdpdCBj
aGVja291dCAke3sgcGFyYW1ldGVycy5jaGVja291dENvbW1pdCB9fQogICAgIGRpc3BsYXlOYW1l
OiAnQ2hlY2tvdXQgJHt7IHBhcmFtZXRlcnMuY2hlY2tvdXRDb21taXQgfX0nCiAtIHRlbXBsYXRl
OiBwaXBfaW5zdGFsbC55bWwKICAgcGFyYW1ldGVyczoKQEAgLTE1LDcgKzE3LDEwIEBAIHN0ZXBz
OgogLSB0ZW1wbGF0ZTogaW5zdGFsbF9zYWZhcmkueW1sCiAtIHRlbXBsYXRlOiB1cGRhdGVfaG9z
dHMueW1sCiAtIHRlbXBsYXRlOiB1cGRhdGVfbWFuaWZlc3QueW1sCi0tIHNjcmlwdDogLi93cHQg
cnVuIC0teWVzIC0tbm8tcGF1c2UgLS1uby1mYWlsLW9uLXVuZXhwZWN0ZWQgLS1uby1yZXN0YXJ0
LW9uLXVuZXhwZWN0ZWQgLS1hZmZlY3RlZCAke3sgcGFyYW1ldGVycy5hZmZlY3RlZFJhbmdlIH19
IC0tbG9nLXdwdHJlcG9ydCAkKEJ1aWxkLkFydGlmYWN0U3RhZ2luZ0RpcmVjdG9yeSkvd3B0X3Jl
cG9ydC5qc29uIC0tbG9nLXdwdHNjcmVlbnNob3QgJChCdWlsZC5BcnRpZmFjdFN0YWdpbmdEaXJl
Y3RvcnkpL3dwdF9zY3JlZW5zaG90LnR4dCAtLWNoYW5uZWwgcHJldmlldyAtLWtpbGwtc2FmYXJp
IHNhZmFyaQorLSBzY3JpcHQ6IHwKKyAgICBzZXQgLWV1eCAtbyBwaXBlZmFpbAorICAgICAgZXhw
b3J0IFNZU1RFTV9WRVJTSU9OX0NPTVBBVD0wCisgICAgLi93cHQgcnVuIC0teWVzIC0tbm8tcGF1
c2UgLS1uby1mYWlsLW9uLXVuZXhwZWN0ZWQgLS1uby1yZXN0YXJ0LW9uLXVuZXhwZWN0ZWQgLS1h
ZmZlY3RlZCAke3sgcGFyYW1ldGVycy5hZmZlY3RlZFJhbmdlIH19IC0tbG9nLXdwdHJlcG9ydCAk
KEJ1aWxkLkFydGlmYWN0U3RhZ2luZ0RpcmVjdG9yeSkvd3B0X3JlcG9ydC5qc29uIC0tbG9nLXdw
dHNjcmVlbnNob3QgJChCdWlsZC5BcnRpZmFjdFN0YWdpbmdEaXJlY3RvcnkpL3dwdF9zY3JlZW5z
aG90LnR4dCAtLWNoYW5uZWwgcHJldmlldyAtLWtpbGwtc2FmYXJpIHNhZmFyaQogICBkaXNwbGF5
TmFtZTogJ1J1biB0ZXN0cycKIC0gdGFzazogUHVibGlzaEJ1aWxkQXJ0aWZhY3RzQDEKICAgZGlz
cGxheU5hbWU6ICdQdWJsaXNoIHJlc3VsdHMnCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2Z5aV9ob29rLnltbCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1
cmUvZnlpX2hvb2sueW1sCmluZGV4IDE3ODg1MDJlYjRmMGVjZTdkMjk1YzIxYjI4Zjc3YTA5ZGRl
NmYyOTguLmRmOTJjZTEwNjY0ZDRmNjk3Y2QwNDU2Y2ZjNTg2ZjFiNWNlYzMzYzkgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kv
YXp1cmUvZnlpX2hvb2sueW1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvZnlpX2hvb2sueW1sCkBAIC0xMyw3ICsxMywxMSBA
QCBqb2JzOgogICAgIHZtSW1hZ2U6ICd1YnVudHUtMjAuMDQnCiAgIHN0ZXBzOgogICAtIGNoZWNr
b3V0OiBub25lCi0gIC0gc2NyaXB0OiBjdXJsIC1mIC1zIC1TIC1kICJhcnRpZmFjdD0ke3sgcGFy
YW1ldGVycy5hcnRpZmFjdE5hbWUgfX0iIC1YIFBPU1QgaHR0cHM6Ly93cHQuZnlpL2FwaS9jaGVj
a3MvYXp1cmUvJChCdWlsZC5CdWlsZElkKQorICAtIHNjcmlwdDogfAorICAgICAgc2V0IC1ldXgg
LW8gcGlwZWZhaWwKKyAgICAgIGN1cmwgLWYgLXMgLVMgLWQgImFydGlmYWN0PSR7eyBwYXJhbWV0
ZXJzLmFydGlmYWN0TmFtZSB9fSIgLVggUE9TVCBodHRwczovL3dwdC5meWkvYXBpL2NoZWNrcy9h
enVyZS8kKEJ1aWxkLkJ1aWxkSWQpCiAgICAgZGlzcGxheU5hbWU6ICdJbnZva2Ugd3B0LmZ5aSBo
b29rJwotICAtIHNjcmlwdDogY3VybCAtZiAtcyAtUyAtZCAiYXJ0aWZhY3Q9JHt7IHBhcmFtZXRl
cnMuYXJ0aWZhY3ROYW1lIH19IiAtWCBQT1NUIGh0dHBzOi8vc3RhZ2luZy53cHQuZnlpL2FwaS9j
aGVja3MvYXp1cmUvJChCdWlsZC5CdWlsZElkKQorICAtIHNjcmlwdDogfAorICAgICAgc2V0IC1l
dXggLW8gcGlwZWZhaWwKKyAgICAgIGN1cmwgLWYgLXMgLVMgLWQgImFydGlmYWN0PSR7eyBwYXJh
bWV0ZXJzLmFydGlmYWN0TmFtZSB9fSIgLVggUE9TVCBodHRwczovL3N0YWdpbmcud3B0LmZ5aS9h
cGkvY2hlY2tzL2F6dXJlLyQoQnVpbGQuQnVpbGRJZCkKICAgICBkaXNwbGF5TmFtZTogJ0ludm9r
ZSBzdGFnaW5nLndwdC5meWkgaG9vaycKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9jZXJ0cy55bWwg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6
dXJlL2luc3RhbGxfY2VydHMueW1sCmluZGV4IDU2ODIxOTliMzg3M2EyNzllZGUwMzQ1YzYwY2Uz
N2RjMjgwZmEyYTIuLmJlZTVhYjA4NGUzN2ZlODA4OTYwMjE5ZDA5MmRiMmMwYTVhNjBmODEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvY2kvYXp1cmUvaW5zdGFsbF9jZXJ0cy55bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9pbnN0YWxsX2NlcnRzLnltbApA
QCAtMSw3ICsxLDkgQEAKIHN0ZXBzOgogLSBzY3JpcHQ6IHwKKyAgICBzZXQgLWV1eCAtbyBwaXBl
ZmFpbAogICAgICMgaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy9yZXN1bHRz
LWNvbGxlY3Rpb24vYmxvYi9tYXN0ZXIvc3JjL3NjcmlwdHMvdHJ1c3Qtcm9vdC1jYS5zaAotICAg
IHN1ZG8gc2VjdXJpdHkgYWRkLXRydXN0ZWQtY2VydCAtZCAtciB0cnVzdFJvb3QgLWsgL0xpYnJh
cnkvS2V5Y2hhaW5zL1N5c3RlbS5rZXljaGFpbiB0b29scy9jZXJ0cy9jYWNlcnQucGVtCisgICAg
IyBvbmx5IHJ1biB0aGlzIG9uIG1hY09TIDwgMTEKKyAgICBbICIxMSIgPSAiYGVjaG8gLWUgJCgg
c3dfdmVycyAtcHJvZHVjdFZlcnNpb24gKVxcXG4xMSB8IHNvcnQgLVYgfCBoZWFkIC1uMWAiIF0g
fHwgc3VkbyBzZWN1cml0eSBhZGQtdHJ1c3RlZC1jZXJ0IC1kIC1yIHRydXN0Um9vdCAtayAvTGli
cmFyeS9LZXljaGFpbnMvU3lzdGVtLmtleWNoYWluIHRvb2xzL2NlcnRzL2NhY2VydC5wZW0KICAg
ZGlzcGxheU5hbWU6ICdJbnN0YWxsIHdlYi1wbGF0Zm9ybS50ZXN0IGNlcnRpZmljYXRlIChtYWNP
UyknCiAgIGNvbmRpdGlvbjogYW5kKHN1Y2NlZWRlZCgpLCBlcSh2YXJpYWJsZXNbJ0FnZW50Lk9T
J10sICdEYXJ3aW4nKSkKIC0gc2NyaXB0OiBjZXJ0dXRpbCDigJNhZGRzdG9yZSAtZW50ZXJwcmlz
ZSDigJNmICJSb290IiB0b29sc1xjZXJ0c1xjYWNlcnQucGVtCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2luc3Rh
bGxfY2hyb21lLnltbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9jaHJvbWUueW1sCmluZGV4IDljY2RjNDliYTBlZTFm
YTQzODJjZjVlMDZjOThhMTQ5ODkzOGEzMzkuLjc1OTkzMjFiZTI0ODc3Nzg4ZWZkOGFhOTcwZjMx
OGZmNWM3ZDJmNzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9jaHJvbWUueW1sCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5z
dGFsbF9jaHJvbWUueW1sCkBAIC0yLDYgKzIsNyBAQCBzdGVwczoKICMgVGhlIGNvbmZsaWN0aW5n
IGdvb2dsZS1jaHJvbWUgYW5kIGNocm9tZWRyaXZlciBjYXNrcyBhcmUgZmlyc3QgdW5pbnN0YWxs
ZWQuCiAjIFRoZSByYXcgZ29vZ2xlLWNocm9tZS1kZXYgY2FzayBVUkwgaXMgdXNlZCB0byBieXBh
c3MgY2FjaGluZy4KIC0gc2NyaXB0OiB8CisgICAgc2V0IC1ldXggLW8gcGlwZWZhaWwKICAgICBI
T01FQlJFV19OT19BVVRPX1VQREFURT0xIGJyZXcgdW5pbnN0YWxsIC0tY2FzayBnb29nbGUtY2hy
b21lIHx8IHRydWUKICAgICBIT01FQlJFV19OT19BVVRPX1VQREFURT0xIGJyZXcgdW5pbnN0YWxs
IC0tY2FzayBjaHJvbWVkcml2ZXIgfHwgdHJ1ZQogICAgIGN1cmwgaHR0cHM6Ly9yYXcuZ2l0aHVi
dXNlcmNvbnRlbnQuY29tL0hvbWVicmV3L2hvbWVicmV3LWNhc2stdmVyc2lvbnMvbWFzdGVyL0Nh
c2tzL2dvb2dsZS1jaHJvbWUtZGV2LnJiID4gZ29vZ2xlLWNocm9tZS1kZXYucmIKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kv
YXp1cmUvaW5zdGFsbF9maXJlZm94LnltbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9maXJlZm94LnltbAppbmRleCA3
YjhjN2JlMDVmZWU5YmM2ZDZkYjk2MDlhMjFhNzFiOGNjOTNiMjZhLi43M2FmNTk3NjY1NTNmN2Vm
NWY0ZDQ2NDdkN2E5NGY4YjA5NzdhOGZkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2luc3RhbGxfZmlyZWZveC55
bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9jaS9henVyZS9pbnN0YWxsX2ZpcmVmb3gueW1sCkBAIC0yLDYgKzIsNyBAQCBzdGVwczoKICMg
VGhpcyBpcyBlcXVpdmFsZW50IHRvIGBIb21lYnJldy9ob21lYnJldy1jYXNrLXZlcnNpb25zL2Zp
cmVmb3gtbmlnaHRseWAsCiAjIGJ1dCB0aGUgcmF3IFVSTCBpcyB1c2VkIHRvIGJ5cGFzcyBjYWNo
aW5nLgogLSBzY3JpcHQ6IHwKKyAgICBzZXQgLWV1eCAtbyBwaXBlZmFpbAogICAgIGN1cmwgaHR0
cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0hvbWVicmV3L2hvbWVicmV3LWNhc2stdmVy
c2lvbnMvbWFzdGVyL0Nhc2tzL2ZpcmVmb3gtbmlnaHRseS5yYiA+IGZpcmVmb3gtbmlnaHRseS5y
YgogICAgIEhPTUVCUkVXX05PX0FVVE9fVVBEQVRFPTEgYnJldyBpbnN0YWxsIC0tY2FzayBmaXJl
Zm94LW5pZ2h0bHkucmIKICAgZGlzcGxheU5hbWU6ICdJbnN0YWxsIEZpcmVmb3ggTmlnaHRseScK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9mb250cy55bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2luc3RhbGxfZm9udHMueW1sCmlu
ZGV4IDM0OGViNzQ1NGUwNjRjYWQ1NWI4YTJlNmNlOWViZGY5NjcyMmU0ZGQuLjI3OWMyNjJjN2Vm
YWIwNzExZjIzMDAwNTQwNDdhM2Q1Yzc5NGNmZjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9mb250
cy55bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9jaS9henVyZS9pbnN0YWxsX2ZvbnRzLnltbApAQCAtMSw1ICsxLDcgQEAKIHN0ZXBzOgog
IyBJbnN0YWxsaWcgQWhlbSBpbiAvTGlicmFyeS9Gb250cyBpbnN0ZWFkIG9mIHVzaW5nIC0taW5z
dGFsbC1mb250cyBpcyBhCiAjIHdvcmthcm91bmQgZm9yIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWIt
cGxhdGZvcm0tdGVzdHMvd3B0L2lzc3Vlcy8xMzgwMy4KLS0gc2NyaXB0OiBzdWRvIGNwIGZvbnRz
L0FoZW0udHRmIC9MaWJyYXJ5L0ZvbnRzCistIHNjcmlwdDogfAorICAgIHNldCAtZXV4IC1vIHBp
cGVmYWlsCisgICAgc3VkbyBjcCBmb250cy9BaGVtLnR0ZiAvTGlicmFyeS9Gb250cwogICBkaXNw
bGF5TmFtZTogJ0luc3RhbGwgQWhlbSBmb250JwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9pbnN0YWxsX3NhZmFy
aS55bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2NpL2F6dXJlL2luc3RhbGxfc2FmYXJpLnltbAppbmRleCBkOTI5ZmZhNGRhOTI5NjkyOWEwN2Fi
MjEwODRjNTkyMTY3YzkxMjJiLi5jZGExYjUzMDJiNTllMWI5MjM4ZmY5ODc1MTE1OGQ5OGZhYWVm
Y2NjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2NpL2F6dXJlL2luc3RhbGxfc2FmYXJpLnltbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2luc3RhbGxfc2Fm
YXJpLnltbApAQCAtOCw3ICs4LDggQEAgc3RlcHM6CiAgIGNvbmRpdGlvbjogZXEodmFyaWFibGVz
WydzYWZhcmlkcml2ZXJfZGlhZ25vc2UnXSwgdHJ1ZSkKIC0gJHt7IGlmIGVxKHBhcmFtZXRlcnMu
Y2hhbm5lbCwgJ3ByZXZpZXcnKSB9fToKICAgLSBzY3JpcHQ6IHwKLSAgICAgIHNldCAtZXV4Cisg
ICAgICBzZXQgLWV1eCAtbyBwaXBlZmFpbAorICAgICAgZXhwb3J0IFNZU1RFTV9WRVJTSU9OX0NP
TVBBVD0wCiAgICAgICBIT01FQlJFV19OT19BVVRPX1VQREFURT0xIGJyZXcgaW5zdGFsbCAtLWNh
c2sgdG9vbHMvY2kvYXp1cmUvc2FmYXJpLXRlY2hub2xvZ3ktcHJldmlldy5yYgogICAgICAgIyBX
b3JrYXJvdW5kIGZvciBgc3VkbyBzYWZhcmRyaXZlciAtLWVuYWJsZWAgbm90IHdvcmtpbmcgb24g
Q2F0YWxpbmE6CiAgICAgICAjIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMv
d3B0L2lzc3Vlcy8yMTc1MQpAQCAtMTksNyArMjAsOSBAQCBzdGVwczoKICAgICBkaXNwbGF5TmFt
ZTogJ0luc3RhbGwgU2FmYXJpIFRlY2hub2xvZ3kgUHJldmlldycKIC0gJHt7IGlmIGVxKHBhcmFt
ZXRlcnMuY2hhbm5lbCwgJ3N0YWJsZScpIH19OgogICAtIHNjcmlwdDogfAotICAgICAgc2V0IC1l
dXgKKyAgICAgIHNldCAtZXV4IC1vIHBpcGVmYWlsCisgICAgICBleHBvcnQgU1lTVEVNX1ZFUlNJ
T05fQ09NUEFUPTAKKyAgICAgIHN1ZG8gc29mdHdhcmV1cGRhdGUgLS1pbnN0YWxsICQoIHNvZnR3
YXJldXBkYXRlIC1sIHwgZ3JlcCAtbyAnXCogTGFiZWw6IFwoU2FmYXJpLipcKScgfCBzZWQgLWUg
J3MvKiBMYWJlbDogLy8nICkKICAgICAgIHN1ZG8gc2FmYXJpZHJpdmVyIC0tZW5hYmxlCiAgICAg
ICBkZWZhdWx0cyB3cml0ZSBjb20uYXBwbGUuU2FmYXJpIFdlYktpdEphdmFTY3JpcHRDYW5PcGVu
V2luZG93c0F1dG9tYXRpY2FsbHkgMQogICAgIGRpc3BsYXlOYW1lOiAnQ29uZmlndXJlIFNhZmFy
aScKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvY2kvYXp1cmUvc2FmYXJpLXRlY2hub2xvZ3ktcHJldmlldy5yYiBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvc2FmYXJp
LXRlY2hub2xvZ3ktcHJldmlldy5yYgppbmRleCA1ODY3NWJkYWRkMDFiMzE1ZDhlYmY0ZTgyNGMz
ZTQ3YThjYTNkMDBkLi40OGY4N2RkNmM1YzRjOWJiYzhlZTc2OTVhNDE5OWQ1NDIzNjUyMDY3IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2NpL2F6dXJlL3NhZmFyaS10ZWNobm9sb2d5LXByZXZpZXcucmIKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9zYWZhcmkt
dGVjaG5vbG9neS1wcmV2aWV3LnJiCkBAIC0xLDE5ICsxLDIwIEBACiBjYXNrICJzYWZhcmktdGVj
aG5vbG9neS1wcmV2aWV3IiBkbwotICBpZiBNYWNPUy52ZXJzaW9uIDw9IDpjYXRhbGluYQotICAg
IHZlcnNpb24gIjEyNSwwNzEtNDQ1MjctMjAyMTA1MjYtOTM0MzAyNDQtMDMzNC00ZmFlLTg3OGQt
NTY1MDJhNjU2MDAzIgotICAgIHNoYTI1NiAiNmVhODMwZWM1YzkxMDE2NjVlMThkNzdmMzFhN2Yy
MjBhMGZjOGFmYzM1YjlhYzAzNmVlMjlkNWVlM2RiZGQyMyIKLSAgZWxzZQotICAgIHZlcnNpb24g
IjEyNSwwNzEtNDU4OTktMjAyMTA1MjYtM2ZlNzM1OWMtMGYyMC00ODUwLWI2ZWMtZGE5YjE5NzEx
OWMyIgotICAgIHNoYTI1NiAiNjNlNDk2MWZkMGNjYTM0NWI1ODEyOGMwZWRiMzM2Mjc4NDdkMDJi
OTlhNzc2MTNjNTRjMGE4OWU2NDAyZDM2ZSIKKyAgaWYgTWFjT1MudmVyc2lvbiA9PSA6bW9udGVy
ZXkKKyAgICB2ZXJzaW9uICIxNDAsMDAyLTY5NTA3LTIwMjIwMjEwLTUyMTA5QjQ4LUM1QUItNEUy
MS05MUNCLUU5NDlBMUFCMEI2NiIKKyAgICB1cmwgImh0dHBzOi8vc2VjdXJlLWFwcGxkbmxkLmFw
cGxlLmNvbS9TVFAvI3t2ZXJzaW9uLmFmdGVyX2NvbW1hfS9TYWZhcmlUZWNobm9sb2d5UHJldmll
dy5kbWciCisgICAgc2hhMjU2ICIzZWYxMWI1YjhmZDM4OWU1MDk5OTk1MmU0NzVkYmM1NjIzOTgz
OTAwOWFkYzI2M2ZmNTBjNjQ5OGM5YjI1YTExIgorICBlbHNpZiBNYWNPUy52ZXJzaW9uID09IDpi
aWdfc3VyCisgICAgdmVyc2lvbiAiMTQwLDAwMi02OTYwMC0yMDIyMDIxMC02M0I5OUVEMS04NzJB
LTRGRjAtQTA2NS0zRTlENkI4MUI1ODMiCisgICAgdXJsICJodHRwczovL3NlY3VyZS1hcHBsZG5s
ZC5hcHBsZS5jb20vU1RQLyN7dmVyc2lvbi5hZnRlcl9jb21tYX0vU2FmYXJpVGVjaG5vbG9neVBy
ZXZpZXcuZG1nIgorICAgIHNoYTI1NiAiZTNhYjljYzA5YzcxNDg3ZTY4ZjY2ZWQ3N2VmNDEzMDQ4
YTNkNTdlOTdiZjM0NjEwN2NkNDUyNDMxYjYxOTlmZCIKICAgZW5kCiAKLSAgdXJsICJodHRwczov
L3NlY3VyZS1hcHBsZG5sZC5hcHBsZS5jb20vU1RQLyN7dmVyc2lvbi5hZnRlcl9jb21tYX0vU2Fm
YXJpVGVjaG5vbG9neVByZXZpZXcuZG1nIgogICBhcHBjYXN0ICJodHRwczovL2RldmVsb3Blci5h
cHBsZS5jb20vc2FmYXJpL2Rvd25sb2FkLyIKICAgbmFtZSAiU2FmYXJpIFRlY2hub2xvZ3kgUHJl
dmlldyIKICAgaG9tZXBhZ2UgImh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9zYWZhcmkvZG93
bmxvYWQvIgogCiAgIGF1dG9fdXBkYXRlcyB0cnVlCi0gIGRlcGVuZHNfb24gbWFjb3M6ICI+PSA6
Y2F0YWxpbmEiCisgIGRlcGVuZHNfb24gbWFjb3M6ICI+PSA6YmlnX3N1ciIKIAogICBwa2cgIlNh
ZmFyaSBUZWNobm9sb2d5IFByZXZpZXcucGtnIgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL3RveF9weXRlc3Qu
eW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9j
aS9henVyZS90b3hfcHl0ZXN0LnltbAppbmRleCAxMmVkNjZhOWEwMjA2ZjY4NjZmYjEyMGUyNjRi
ZTM5ZGM3ZTI5MmU0Li4zNzA0ZWNjNWJlZDlkNjIyNTc0Y2NiNzRjMjc1YTFiNWNmMTQ5YTNmIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2NpL2F6dXJlL3RveF9weXRlc3QueW1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvdG94X3B5dGVzdC55bWwKQEAgLTcs
NyArNyw5IEBAIHN0ZXBzOgogICBwYXJhbWV0ZXJzOgogICAgIHBhY2thZ2VzOiB0b3gKIAotLSBz
Y3JpcHQ6IHRveCAtYyAke3sgcGFyYW1ldGVycy5kaXJlY3RvcnkgfX0gLWUgJHt7IHBhcmFtZXRl
cnMudG94ZW52IH19IC0tIC0tanVuaXR4bWw9cmVzdWx0cy54bWwKKy0gc2NyaXB0OiB8CisgICAg
c2V0IC1ldXggLW8gcGlwZWZhaWwKKyAgICB0b3ggLWMgJHt7IHBhcmFtZXRlcnMuZGlyZWN0b3J5
IH19IC1lICR7eyBwYXJhbWV0ZXJzLnRveGVudiB9fSAtLSAtLWp1bml0eG1sPXJlc3VsdHMueG1s
CiAgIGRpc3BsYXlOYW1lOiAnUnVuIHRlc3RzJwogCiAtIHRhc2s6IFB1Ymxpc2hUZXN0UmVzdWx0
c0AyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2NpL2F6dXJlL3VwZGF0ZV9ob3N0cy55bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL3VwZGF0ZV9ob3N0cy55bWwK
aW5kZXggNjNjN2U0NTgxMTI5N2EyZGQ1MzQyYjNiM2FiOTA5M2FjYWI2ZjVjZC4uYmNiODUzNmE1
Y2JhMGY3NDg4MGM1MWI0YzVjMmJlNThkYTE3ZTVhOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS91cGRhdGVfaG9z
dHMueW1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvY2kvYXp1cmUvdXBkYXRlX2hvc3RzLnltbApAQCAtMSw1ICsxLDcgQEAKIHN0ZXBzOgot
LSBzY3JpcHQ6IC4vd3B0IG1ha2UtaG9zdHMtZmlsZSB8IHN1ZG8gdGVlIC1hIC9ldGMvaG9zdHMK
Ky0gc2NyaXB0OiB8CisgICAgc2V0IC1ldXggLW8gcGlwZWZhaWwKKyAgICAuL3dwdCBtYWtlLWhv
c3RzLWZpbGUgfCBzdWRvIHRlZSAtYSAvZXRjL2hvc3RzCiAgIGRpc3BsYXlOYW1lOiAnVXBkYXRl
IGhvc3RzIChtYWNPUyknCiAgIGNvbmRpdGlvbjogYW5kKHN1Y2NlZWRlZCgpLCBlcSh2YXJpYWJs
ZXNbJ0FnZW50Lk9TJ10sICdEYXJ3aW4nKSkKIC0gcG93ZXJzaGVsbDogfApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVy
ZS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvY2kvYXp1cmUvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDU1YzY5MmI1ZTYwNzcwZjdmOWJhMDFkYTFkZTdjNGQzZWI2NGQ2NDEuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS93M2MtaW1wb3J0Lmxv
ZworKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVj
dG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlm
eSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxs
IHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0
Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10
ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhp
cyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVz
OgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvUkVBRE1FLm1kCi0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVy
ZS9hZmZlY3RlZF90ZXN0cy55bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL2NoZWNrb3V0LnltbAotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvY2xlYW51cF93aW4xMC55
bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2Np
L2F6dXJlL2NvbS5hcHBsZS5TYWZhcmlUZWNobm9sb2d5UHJldmlldy5wbGlzdAotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvZnlpX2hv
b2sueW1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9jaS9henVyZS9pbnN0YWxsX2NlcnRzLnltbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvaW5zdGFsbF9jaHJvbWUueW1sCi0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9p
bnN0YWxsX2VkZ2UueW1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9jaS9henVyZS9pbnN0YWxsX2ZpcmVmb3gueW1sCi0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9pbnN0YWxsX2ZvbnRz
LnltbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
Y2kvYXp1cmUvaW5zdGFsbF9weXRob24ueW1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS9pbnN0YWxsX3NhZmFyaS55bWwKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2F6dXJlL3Bp
cF9pbnN0YWxsLnltbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvY2kvYXp1cmUvcHVibGlzaF9sb2dzLnltbAotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvc2FmYXJpLXRlY2hub2xvZ3kt
cHJldmlldy5yYgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvY2kvYXp1cmUvc3lzdGVtX2luZm8ueW1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9henVyZS90b3hfcHl0ZXN0LnltbAotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYXp1cmUvdXBk
YXRlX2hvc3RzLnltbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvY2kvYXp1cmUvdXBkYXRlX21hbmlmZXN0LnltbApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9jaV9idWlsdF9k
aWZmLnNoIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9jaS9jaV9idWlsdF9kaWZmLnNoCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5k
ZXggZjhhZTNlNjFiZjc1NmQ5N2M3OGUyZDk1ODkxMjFiN2Q2MDEwNjZmYi4uZmFkOTQ2ZDI5NzNh
NjIxNWNhNWM0YzMwNmJkZmYxOTRiYWU3ZTQyZQotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2NpX2J1aWx0X2RpZmYuc2gKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9jaV9idWls
dF9kaWZmLnNoCkBAIC0yMiw3ICsyMiw3IEBAIG1haW4oKSB7CiAgICAgICAgICdodG1sL2NhbnZh
cy9vZmZzY3JlZW4vdGV4dC8yZC50ZXh0LmRyYXcuc3Ryb2tlLmJhc2ljLnBuZycKICAgICApCiAK
LSAgICAuL3VwZGF0ZS1idWlsdC10ZXN0cy5zaAorICAgIC4vd3B0IHVwZGF0ZS1idWlsdAogICAg
IGdpdCB1cGRhdGUtaW5kZXggLS1hc3N1bWUtdW5jaGFuZ2VkICR7ZXhjbHVkZWRbKl19CiAgICAg
Z2l0IGRpZmYgLS1leGl0LWNvZGUKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvY2lfcmVzb3VyY2VzX3VuaXR0ZXN0LnNo
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9j
aV9yZXNvdXJjZXNfdW5pdHRlc3Quc2gKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9jaS9jaV90b29sc19pbnRlZ3JhdGlvbl90ZXN0LnNoIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9jaV90b29sc19pbnRlZ3JhdGlvbl90
ZXN0LnNoCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvY2lfdG9vbHNf
dW5pdHRlc3Quc2ggYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2NpL2NpX3Rvb2xzX3VuaXR0ZXN0LnNoCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAx
MDA3NTUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvY2kvY2lfd3B0cnVubmVyX2luZnJhc3RydWN0dXJlLnNoIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9jaV93cHRydW5uZXJf
aW5mcmFzdHJ1Y3R1cmUuc2gKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9j
aS9jb21tYW5kcy5qc29uIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9jaS9jb21tYW5kcy5qc29uCmluZGV4IDNmYjZkMjIyYjE3ZGVkOWY3OGIwMjYw
NzUwOWQwOTBiMDY2MWZiNGQuLmQxNTZhMzJlNjUyYzFhNTlkZmY5MGRlMGE3MDNjZjlhOWE0OTM3
NWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvY2kvY29tbWFuZHMuanNvbgorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2NvbW1hbmRzLmpzb24KQEAgLTIwLDYgKzIwLDE2
IEBACiAgICAgImhlbHAiOiAiUmVnZW5lcmF0ZSB0aGUgV1BUIGNlcnRpZmljYXRlcyIsCiAgICAg
InZpcnR1YWxlbnYiOiBmYWxzZQogICB9LAorICAidXBkYXRlLWJ1aWx0IjogeworICAgICJwYXRo
IjogInVwZGF0ZV9idWlsdC5weSIsCisgICAgInNjcmlwdCI6ICJydW4iLAorICAgICJwYXJzZXIi
OiAiZ2V0X3BhcnNlciIsCisgICAgImhlbHAiOiAiVXBkYXRlIGJ1aWx0IHRlc3RzIiwKKyAgICAi
dmlydHVhbGVudiI6IHRydWUsCisgICAgInJlcXVpcmVtZW50cyI6IFsKKyAgICAgICAgInJlcXVp
cmVtZW50c19idWlsZC50eHQiCisgICAgXQorICB9LAogICAidGMtZG93bmxvYWQiOiB7CiAgICAg
InBhdGgiOiAidGMvZG93bmxvYWQucHkiLAogICAgICJzY3JpcHQiOiAicnVuIiwKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kv
ZXBvY2hzX3VwZGF0ZS5zaCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvY2kvZXBvY2hzX3VwZGF0ZS5zaApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUg
MTAwNzU1CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2NpL2ludGVyZmFjZXNfdXBkYXRlLnNoIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9pbnRlcmZhY2VzX3VwZGF0ZS5zaApv
bGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3JlcXVpcmVtZW50c19idWls
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2NpL3JlcXVpcmVtZW50c19idWlsZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzc2MTAyZGMzZTY3NTU3NmY1
OWI4NzVlNWY5MzE5ZTY0MTZiMzUxYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvcmVxdWlyZW1lbnRzX2J1aWxk
LnR4dApAQCAtMCwwICsxLDQgQEAKK2NhaXJvY2ZmaT09MS4zLjAKK2ZvbnR0b29scz09My4xMy4x
CitweXlhbWwKK2dlbnNoaQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9ydW5fdGMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3J1bl90Yy5weQpvbGQgbW9kZSAxMDA2
NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IGM4MjEzYjAzMWZjMjE4NjE2MzhmMzI5Y2YxMzE1OWU4
MGMwMjEwY2UuLjdlNzU5MjE4YzA5OGY0MGI0MzJkZDhkYzg4OTc5MGE0NjNmNjdiYTEKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9ydW5f
dGMucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9jaS9ydW5fdGMucHkKQEAgLTk2LDEyICs5NiwxNSBAQCBkZWYgZ2V0X3BhcnNlcigpOgog
ICAgIHAuYWRkX2FyZ3VtZW50KCItLXh2ZmIiLAogICAgICAgICAgICAgICAgICAgIGFjdGlvbj0i
c3RvcmVfdHJ1ZSIsCiAgICAgICAgICAgICAgICAgICAgaGVscD0iU3RhcnQgeHZmYiIpCi0gICAg
cC5hZGRfYXJndW1lbnQoIi0tY2hlY2tvdXQiLAotICAgICAgICAgICAgICAgICAgIGhlbHA9IlJl
dmlzaW9uIHRvIGNoZWNrb3V0IGJlZm9yZSBzdGFydGluZyBqb2IiKQogICAgIHAuYWRkX2FyZ3Vt
ZW50KCItLWluc3RhbGwtY2VydGlmaWNhdGVzIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVmYXVs
dD1Ob25lLAogICAgICAgICAgICAgICAgICAgIGhlbHA9Ikluc3RhbGwgd2ViLXBsYXRmb3JtLnRl
c3QgY2VydGlmaWNhdGVzIHRvIFVBIHN0b3JlIikKICAgICBwLmFkZF9hcmd1bWVudCgiLS1uby1p
bnN0YWxsLWNlcnRpZmljYXRlcyIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZWZhdWx0PU5vbmUs
CiAgICAgICAgICAgICAgICAgICAgaGVscD0iRG9uJ3QgaW5zdGFsbCB3ZWItcGxhdGZvcm0udGVz
dCBjZXJ0aWZpY2F0ZXMgdG8gVUEgc3RvcmUiKQorICAgIHAuYWRkX2FyZ3VtZW50KCItLW5vLXNl
dHVwLXJlcG9zaXRvcnkiLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0ic2V0dXBfcmVwb3Np
dG9yeSIsCisgICAgICAgICAgICAgICAgICAgaGVscD0iRG9uJ3QgcnVuIGFueSByZXBvc2l0b3J5
IHNldHVwIHN0ZXBzLCBpbnN0ZWFkIHVzZSB0aGUgZXhpc3Rpbmcgd29ya3RyZWUuICIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICJUaGlzIGlzIHVzZWZ1bCBmb3IgbG9jYWwgdGVzdGluZy4iKQor
ICAgIHAuYWRkX2FyZ3VtZW50KCItLWNoZWNrb3V0IiwKKyAgICAgICAgICAgICAgICAgICBoZWxw
PSJSZXZpc2lvbiB0byBjaGVja291dCBiZWZvcmUgc3RhcnRpbmcgam9iIikKICAgICBwLmFkZF9h
cmd1bWVudCgiLS1yZWYiLAogICAgICAgICAgICAgICAgICAgIGhlbHA9IkdpdCByZWYgZm9yIHRo
ZSBjb21taXQgdGhhdCBzaG91bGQgYmUgcnVuIikKICAgICBwLmFkZF9hcmd1bWVudCgiLS1oZWFk
LXJldiIsCkBAIC0zOTgsNyArNDAxLDggQEAgZGVmIG1haW4oKToKICAgICBpZiBldmVudDoKICAg
ICAgICAgc2V0X3ZhcmlhYmxlcyhldmVudCkKIAotICAgIHNldHVwX3JlcG9zaXRvcnkoYXJncykK
KyAgICBpZiBhcmdzLnNldHVwX3JlcG9zaXRvcnk6CisgICAgICAgIHNldHVwX3JlcG9zaXRvcnko
YXJncykKIAogICAgICMgSGFjayBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkKICAgICBpZiBh
cmdzLnNjcmlwdCBpbiBbInJ1bi1hbGwiLCAibGludCIsICJ1cGRhdGVfYnVpbHQiLCAidG9vbHNf
dW5pdHRlc3QiLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9jaS90YXNrY2x1c3Rlci1ydW4ucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3Rhc2tjbHVzdGVyLXJ1bi5weQpv
bGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL19faW5pdF9fLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy9f
X2luaXRfXy5weQppbmRleCBhNjgzNGI4Mjg1YTU2YmVmMGUxNTQzZmQ5MDFjN2U2ZjJmOGJjMjAy
Li5lNjlkZTI5YmIyZDFkNjQzNGI4YjI5YWU3NzVhZDhjMmU0OGM1MzkxIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL19f
aW5pdF9fLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvY2kvdGMvX19pbml0X18ucHkKQEAgLTEgKzAsMCBAQAotIyBUaGlzIGZpbGUgaXMg
cmVxdWlyZWQgZm9yIFB5dGhvbiB0byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZXMu
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy9kZWNpc2lvbi5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvZGVj
aXNpb24ucHkKaW5kZXggZDE5ZmY3NjkyY2Y0ZjYzMDJjYTMzZDkyN2M1MjMwODIwNTAyNDEzMi4u
ZjVjMTg0NDYwZTFjNTViOTVkNmUwNTYzMWMxNTU1OTE5ZjNlZjBlNSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy9kZWNp
c2lvbi5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2NpL3RjL2RlY2lzaW9uLnB5CkBAIC0xMDAsNiArMTAwLDMxIEBAIGRlZiBnZXRfZXh0
cmFfam9icyhldmVudCk6CiAgICAgcmV0dXJuIGpvYnMKIAogCitkZWYgZmlsdGVyX2V4Y2x1ZGVk
X3VzZXJzKHRhc2tzLCBldmVudCk6CisgICAgIyBTb21lIHVzZXJzJyBwdWxsIHJlcXVlc3RzIGFy
ZSBleGNsdWRlZCBmcm9tIHRhc2tzLAorICAgICMgc3VjaCBhcyBwdWxsIHJlcXVlc3RzIGZyb20g
YXV0b21hdGVkIGV4cG9ydHMuCisgICAgdHJ5OgorICAgICAgICBzdWJtaXR0ZXIgPSBldmVudFsi
cHVsbF9yZXF1ZXN0Il1bInVzZXIiXVsibG9naW4iXQorICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAg
ICAgICAgIyBKdXN0IGlnbm9yZSBleGNsdWRlZCB1c2VycyBpZiB0aGUKKyAgICAgICAgIyB1c2Vy
bmFtZSBjYW5ub3QgYmUgcHVsbGVkIGZyb20gdGhlIGV2ZW50LgorICAgICAgICBsb2dnZXIuZGVi
dWcoIlVuYWJsZSB0byByZWFkIHVzZXJuYW1lIGZyb20gZXZlbnQuIENvbnRpbnVpbmcuIikKKyAg
ICAgICAgcmV0dXJuCisKKyAgICBleGNsdWRlZF90YXNrcyA9IFtdCisgICAgIyBBIHNlcGFyYXRl
IGxpc3Qgb2YgaXRlbXMgZm9yIHRhc2tzIGlzIG5lZWRlZCB0byBpdGVyYXRlIG92ZXIKKyAgICAj
IGJlY2F1c2UgcmVtb3ZpbmcgYW4gaXRlbSBkdXJpbmcgaXRlcmF0aW9uIHdpbGwgcmFpc2UgYW4g
ZXJyb3IuCisgICAgZm9yIG5hbWUsIHRhc2sgaW4gbGlzdCh0YXNrcy5pdGVtcygpKToKKyAgICAg
ICAgaWYgc3VibWl0dGVyIGluIHRhc2suZ2V0KCJleGNsdWRlLXVzZXJzIiwgW10pOgorICAgICAg
ICAgICAgZXhjbHVkZWRfdGFza3MuYXBwZW5kKG5hbWUpCisgICAgICAgICAgICB0YXNrcy5wb3Ao
bmFtZSkgICMgcmVtb3ZpbmcgZXhjbHVkZWQgdGFzaworICAgIGlmIGV4Y2x1ZGVkX3Rhc2tzOgor
ICAgICAgICBsb2dnZXIuaW5mbygKKyAgICAgICAgICAgIGYiVGFza3MgZXhjbHVkZWQgZm9yIHVz
ZXIge3N1Ym1pdHRlcn06XG4gKiAiICsKKyAgICAgICAgICAgICJcbiAqICIuam9pbihleGNsdWRl
ZF90YXNrcykKKyAgICAgICAgKQorCisKIGRlZiBmaWx0ZXJfc2NoZWR1bGVfaWYoZXZlbnQsIHRh
c2tzKToKICAgICBzY2hlZHVsZWQgPSBPcmRlcmVkRGljdCgpCiAgICAgcnVuX2pvYnMgPSBOb25l
CkBAIC0zMzgsNiArMzYzLDcgQEAgZGVmIGRlY2lkZShldmVudCk6CiAKICAgICB0cmlnZ2VyZWRf
dGFza3MgPSBmaWx0ZXJfdHJpZ2dlcnMoZXZlbnQsIGFsbF90YXNrcykKICAgICBzY2hlZHVsZWRf
dGFza3MgPSBmaWx0ZXJfc2NoZWR1bGVfaWYoZXZlbnQsIHRyaWdnZXJlZF90YXNrcykKKyAgICBm
aWx0ZXJfZXhjbHVkZWRfdXNlcnMoc2NoZWR1bGVkX3Rhc2tzLCBldmVudCkKIAogICAgIGxvZ2dl
ci5pbmZvKCJVTlNDSEVEVUxFRCBUQVNLUzpcbiAgJXMiICUgIlxuICAiLmpvaW4oc29ydGVkKHNl
dChhbGxfdGFza3Mua2V5cygpKSAtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQoc2NoZWR1bGVkX3Rhc2tzLmtleXMoKSkpKSkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvY2kvdGMvdGFza3MvdGVzdC55bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL3Rhc2tzL3Rlc3QueW1sCmluZGV4IDY0ODRlNjU0
YWM4YjQ4OWFjMzJlZWE4MGQ1YzBkNDUyYmVlMWRiMWQuLjRjNzQ2MmQxYWU1NDQ2NWU2YzczMjMy
MDM4MTk5ZjIwODI5OGFhMzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvdGFza3MvdGVzdC55bWwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy90YXNrcy90
ZXN0LnltbApAQCAtMjk2LDkgKzI5NiwxMyBAQCB0YXNrczoKICAgICAgICAgLSB2YXJzOgogICAg
ICAgICAgICAgYnJvd3NlcjogZmlyZWZveAogICAgICAgICAgICAgY2hhbm5lbDogbmlnaHRseQor
ICAgICAgICAgICAgc3RhYmlsaXR5LWV4Y2x1ZGUtdXNlcnM6CisgICAgICAgICAgICAgIC0gbW96
LXdwdHN5bmMtYm90CiAgICAgICAgIC0gdmFyczoKICAgICAgICAgICAgIGJyb3dzZXI6IGNocm9t
ZQogICAgICAgICAgICAgY2hhbm5lbDogZGV2CisgICAgICAgICAgICBzdGFiaWxpdHktZXhjbHVk
ZS11c2VyczoKKyAgICAgICAgICAgICAgLSBjaHJvbWl1bS13cHQtZXhwb3J0LWJvdAogICAgICAg
ZG86CiAgICAgICAgIC0gd3B0LSR7dmFycy5icm93c2VyfS0ke3ZhcnMuY2hhbm5lbH0tc3RhYmls
aXR5OgogICAgICAgICAgICAgdXNlOgpAQCAtMzIyLDYgKzMyNiw3IEBAIHRhc2tzOgogICAgICAg
ICAgICAgICAtLXZlcmlmeS1yZXBlYXQtbG9vcD0wCiAgICAgICAgICAgICAgIC0tdmVyaWZ5LXJl
cGVhdC1yZXN0YXJ0PTEwCiAgICAgICAgICAgICAgIC0tZ2l0aHViLWNoZWNrcy10ZXh0LWZpbGU9
Ii9ob21lL3Rlc3QvYXJ0aWZhY3RzL2NoZWNrcnVuLm1kIgorICAgICAgICAgICAgZXhjbHVkZS11
c2VyczogJHt2YXJzLnN0YWJpbGl0eS1leGNsdWRlLXVzZXJzfQogCiAgICAgICAgIC0gd3B0LSR7
dmFycy5icm93c2VyfS0ke3ZhcnMuY2hhbm5lbH0tcmVzdWx0czoKICAgICAgICAgICAgIHVzZToK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvY2kvdGMvdGFza3MvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL3Rhc2tzL3czYy1pbXBvcnQubG9nCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZDIzYzI1MWI2OTBlNjM2OTYzY2I3MTA4ZmVk
MTM0Y2ViMTdlMTA2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kv
dGMvdGFza3MvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1U
aGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVw
b3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0Lgot
SW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBz
Oi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29s
cy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5P
VCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0
aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVx
dWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBm
aWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2NpL3RjL3Rhc2tzL3Rlc3QueW1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL3Rlc3RkYXRhL3czYy1pbXBvcnQubG9n
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90
Yy90ZXN0ZGF0YS93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
OTE2ZWZkYzllMWViYjBmNDc1YjJkN2NjOTdhY2I1MWExM2E2MzBkMy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL3Rlc3RkYXRhL3czYy1pbXBvcnQubG9nCisr
KyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5
IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRo
ZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVx
dWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3Jt
LXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3Rz
IGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZp
bGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZp
eGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1O
b25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy90ZXN0ZGF0YS9lcG9jaHNfZGFp
bHlfcHVzaF9ldmVudC5qc29uCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9jaS90Yy90ZXN0ZGF0YS9tYXN0ZXJfcHVzaF9ldmVudC5qc29uCi0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy90ZXN0
ZGF0YS9wcl9ldmVudC5qc29uCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9jaS90Yy90ZXN0ZGF0YS9wcl9ldmVudF90ZXN0c19hZmZlY3RlZC5qc29u
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2NpL3RjL3Rlc3RzL19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy90ZXN0cy9fX2luaXRfXy5weQppbmRleCBh
NjgzNGI4Mjg1YTU2YmVmMGUxNTQzZmQ5MDFjN2U2ZjJmOGJjMjAyLi5lNjlkZTI5YmIyZDFkNjQz
NGI4YjI5YWU3NzVhZDhjMmU0OGM1MzkxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL3Rlc3RzL19faW5pdF9fLnB5Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kv
dGMvdGVzdHMvX19pbml0X18ucHkKQEAgLTEgKzAsMCBAQAotIyBUaGlzIGZpbGUgaXMgcmVxdWly
ZWQgZm9yIFB5dGhvbiB0byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZXMuClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy90ZXN0cy90ZXN0X3ZhbGlkLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy90
ZXN0cy90ZXN0X3ZhbGlkLnB5CmluZGV4IGZmNmNhN2E0YzQ4YzJiZjRkODVjODc2ZDU5MGY4ZjA3
Nzg3MmIwNGUuLmVkZTNiZGJhN2M1ZGI2OTU0YjlmZmI3MmY2YzJlNDNmMDA5MDM5OGIgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
Y2kvdGMvdGVzdHMvdGVzdF92YWxpZC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL3Rlc3RzL3Rlc3RfdmFsaWQucHkKQEAgLTM3
LDYgKzM3LDI4IEBAIGRlZiB0ZXN0X3ZlcmlmeV90YXNrY2x1c3Rlcl95bWwoKToKICAgICAgICAg
anNvbmUucmVuZGVyKHRlbXBsYXRlLCBjb250ZXh0KQogCiAKK0BweXRlc3QubWFyay5wYXJhbWV0
cml6ZSgiZXZlbnRfcGF0aCxleHBlY3RlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgWygi
cHJfZXZlbnQuanNvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm96ZW5zZXQoWyJs
aW50IiwgIndwdC1jaHJvbWUtZGV2LXN0YWJpbGl0eSJdKSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICgicHJfZXZlbnRfdGVzdHNfYWZmZWN0ZWQuanNvbiIsIGZyb3plbnNldChbImxpbnQi
XSkpXQorICAgICAgICAgICAgICAgICAgICAgICAgICkKK2RlZiB0ZXN0X2V4Y2x1ZGVfdXNlcnMo
ZXZlbnRfcGF0aCwgZXhwZWN0ZWQpOgorICAgICIiIlZlcmlmeSB0aGF0IHRhc2tzIGV4Y2x1ZGVk
IGJ5IHRoZSBQUiBzdWJtaXR0ZXIgYXJlIHByb3Blcmx5IGV4Y2x1ZGVkIiIiCisgICAgdGFza3Mg
PSB7CisgICAgICAgICJsaW50IjogeworICAgICAgICAgICAgImNvbW1hbmRzIjogIndwdCBleGFt
cGxlIgorICAgICAgICB9LAorICAgICAgICAid3B0LWNocm9tZS1kZXYtc3RhYmlsaXR5Ijogewor
ICAgICAgICAgICAgImNvbW1hbmRzIjogIndwdCBleGFtcGxlIiwKKyAgICAgICAgICAgICJleGNs
dWRlLXVzZXJzIjogWyJjaHJvbWl1bS13cHQtZXhwb3J0LWJvdCJdCisgICAgICAgIH0KKyAgICB9
CisgICAgd2l0aCBvcGVuKGRhdGFfcGF0aChldmVudF9wYXRoKSwgZW5jb2Rpbmc9InV0ZjgiKSBh
cyBmOgorICAgICAgICBldmVudCA9IGpzb24ubG9hZChmKQorICAgICAgICBkZWNpc2lvbi5maWx0
ZXJfZXhjbHVkZWRfdXNlcnModGFza3MsIGV2ZW50KQorICAgICAgICBhc3NlcnQgc2V0KHRhc2tz
KSA9PSBleHBlY3RlZAorCisKIGRlZiB0ZXN0X3ZlcmlmeV9wYXlsb2FkKCk6CiAgICAgIiIiVmVy
aWZ5IHRoYXQgdGhlIGRlY2lzaW9uIHRhc2sgcHJvZHVjZXMgdGFza3Mgd2l0aCBhIHZhbGlkIHBh
eWxvYWQiIiIKICAgICBmcm9tIHRvb2xzLmNpLnRjLmRlY2lzaW9uIGltcG9ydCBkZWNpZGUKQEAg
LTE0NSw3ICsxNjcsNiBAQCBkZWYgdGVzdF92ZXJpZnlfcGF5bG9hZCgpOgogICAgICAgJ3dwdC1m
aXJlZm94LW5pZ2h0bHktc3RhYmlsaXR5JywKICAgICAgICd3cHQtZmlyZWZveC1uaWdodGx5LXJl
c3VsdHMnLAogICAgICAgJ3dwdC1maXJlZm94LW5pZ2h0bHktcmVzdWx0cy13aXRob3V0LWNoYW5n
ZXMnLAotICAgICAgJ3dwdC1jaHJvbWUtZGV2LXN0YWJpbGl0eScsCiAgICAgICAnd3B0LWNocm9t
ZS1kZXYtcmVzdWx0cycsCiAgICAgICAnd3B0LWNocm9tZS1kZXYtcmVzdWx0cy13aXRob3V0LWNo
YW5nZXMnLAogICAgICAgJ2xpbnQnLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy90ZXN0cy93M2MtaW1wb3J0LmxvZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMv
dGVzdHMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwNThl
ZmUyZGRiNTBmZjk2OTU5Y2U0YTZhMDI1MTlkOTM5NWQwMjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy90ZXN0cy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9u
dWxsCkBAIC0xLDIwICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGlt
cG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0
cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24g
dGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93
cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJL
aXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5v
bmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvdGVzdHMvX19pbml0X18ucHkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL3Rlc3RzL3Rl
c3RfZGVjaXNpb24ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2NpL3RjL3Rlc3RzL3Rlc3RfdGFza2dyYXBoLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy90ZXN0cy90ZXN0X3ZhbGlk
LnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2NpL3RjL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYjkyMzRjNmFkMTdlY2U4OWVhYTdlZGZkZGY0MTRjNzgxOTkw
MDg0OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL3czYy1p
bXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRo
aXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBO
T1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0
ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20v
d2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBv
cnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJl
bW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcg
dmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90Yy9SRUFETUUu
bWQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2Np
L3RjL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9jaS90Yy9kZWNpc2lvbi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGMvZG93bmxvYWQucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL2dpdGh1Yl9jaGVja3Nf
b3V0cHV0LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9jaS90Yy9zaW5rX3Rhc2sucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3RjL3Rhc2tncmFwaC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90ZXN0cy9fX2lu
aXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvY2kvdGVzdHMvX19pbml0X18ucHkKaW5kZXggYTY4MzRiODI4NWE1NmJlZjBlMTU0M2ZkOTAx
YzdlNmYyZjhiYzIwMi4uZTY5ZGUyOWJiMmQxZDY0MzRiOGIyOWFlNzc1YWQ4YzJlNDhjNTM5MSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9jaS90ZXN0cy9fX2luaXRfXy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3Rlc3RzL19faW5pdF9fLnB5CkBAIC0xICswLDAg
QEAKLSMgVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMgZGly
ZWN0b3J5IGZvciBtb2R1bGVzLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kv
dGVzdHMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2NpL3Rlc3RzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA1Yjk3Y2IwNzgxZGVmOTY4ZGViY2FjNGM2OWI4OGY3NDNkNjIyZjI0Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGVzdHMvdzNjLWltcG9y
dC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBk
aXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBt
b2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEg
cHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWIt
cGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13
M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3Zl
IHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3Rlc3RzL19faW5pdF9f
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9j
aS90ZXN0cy90ZXN0X2pvYnMucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdXBkYXRlX2J1aWx0LnB5IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS91cGRhdGVfYnVpbHQu
cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYWFkYWJhNjRmNWRiNTI4ZDA5NzM5OTUyMDRhYjM2M2U0M2MwOTYxYgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvY2kvdXBkYXRlX2J1aWx0LnB5CkBAIC0wLDAgKzEsNjkgQEAKK2ltcG9ydCBs
b2dnaW5nCitpbXBvcnQgb3MKK2ltcG9ydCBzdWJwcm9jZXNzCitmcm9tIGFyZ3BhcnNlIGltcG9y
dCBBcmd1bWVudFBhcnNlcgorCitsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigpCisKK3dwdF9y
b290ID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxl
X18pLCBvcy5wYXJkaXIsIG9zLnBhcmRpcikpCisKK3NjcmlwdHMgPSB7CisgICAgImNhbnZhcyI6
IFsiaHRtbC9jYW52YXMvdG9vbHMvZ2VudGVzdC5weSJdLAorICAgICJjb25mb3JtYW5jZS1jaGVj
a2VycyI6IFsiY29uZm9ybWFuY2UtY2hlY2tlcnMvdG9vbHMvZGwucHkiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiY29uZm9ybWFuY2UtY2hlY2tlcnMvdG9vbHMvaW5zLWRlbC1kYXRl
dGltZS5weSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb25mb3JtYW5jZS1jaGVj
a2Vycy90b29scy9waWN0dXJlLnB5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNv
bmZvcm1hbmNlLWNoZWNrZXJzL3Rvb2xzL3VybC5weSJdLAorICAgICJjc3MtdWkiOiBbImNzcy9j
c3MtdWkvdG9vbHMvYXBwZWFyYW5jZS1idWlsZC13ZWJraXQtcmVmdGVzdHMucHkiXSwKKyAgICAj
IEZJWE1FOiBodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdC9pc3N1ZXMv
MzIwNjAKKyAgICAjICJjc3MtdGV4dCI6IFsiY3NzL2Nzcy10ZXh0L2xpbmUtYnJlYWtpbmcvdG9v
bHMvZ2VuZXJhdGUtc2VnbWVudC1icmVhay10cmFuc2Zvcm1hdGlvbi1ydWxlcy10ZXN0cy5weSJd
LAorICAgICMgImNzcy10ZXh0LWRlY29yIjogWyJjc3MvY3NzLXRleHQtZGVjb3IvdG9vbHMvZ2Vu
ZXJhdGUtdGV4dC1lbXBoYXNpcy1saW5lLWhlaWdodC10ZXN0cy5weSIsCisgICAgIyAgICAgICAg
ICAgICAgICAgICAgImNzcy9jc3MtdGV4dC1kZWNvci90b29scy9nZW5lcmF0ZS10ZXh0LWVtcGhh
c2lzLXBvc2l0aW9uLXByb3BlcnR5LXRlc3RzLnB5IiwKKyAgICAjICAgICAgICAgICAgICAgICAg
ICAiY3NzL2Nzcy10ZXh0LWRlY29yL3Rvb2xzL2dlbmVyYXRlLXRleHQtZW1waGFzaXMtcnVieS10
ZXN0cy5weSIsCisgICAgIyAgICAgICAgICAgICAgICAgICAgImNzcy9jc3MtdGV4dC1kZWNvci90
b29scy9nZW5lcmF0ZS10ZXh0LWVtcGhhc2lzLXN0eWxlLXByb3BlcnR5LXRlc3RzLnB5Il0sCisg
ICAgImh0bWw1bGliIjogWyJodG1sL3Rvb2xzL3VwZGF0ZV9odG1sNWxpYl90ZXN0cy5weSJdLAor
ICAgICJpbmZyYXN0cnVjdHVyZSI6IFsiaW5mcmFzdHJ1Y3R1cmUvYXNzdW1wdGlvbnMvdG9vbHMv
YWhlbS1nZW5lcmF0ZS10YWJsZS5weSJdLAorICAgICJtaW1lc25pZmYiOiBbIm1pbWVzbmlmZi9t
aW1lLXR5cGVzL3Jlc291cmNlcy9nZW5lcmF0ZWQtbWltZS10eXBlcy5weSJdLAorICAgICJzcGVj
dWxhdGl2ZS1wYXJzaW5nIjogWyJodG1sL3N5bnRheC9zcGVjdWxhdGl2ZS1wYXJzaW5nL3Rvb2xz
L2dlbmVyYXRlLnB5Il0KK30KKworCitkZWYgZ2V0X3BhcnNlcigpOgorICAgIHBhcnNlciA9IEFy
Z3VtZW50UGFyc2VyKCkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLWxpc3QiLCBhY3Rpb249
InN0b3JlX3RydWUiLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iTGlzdCBzdWl0ZXMg
dGhhdCBjYW4gYmUgdXBkYXRlZCBhbmQgdGhlIHJlbGF0ZWQgc2NyaXB0IGZpbGVzIikKKyAgICBw
YXJzZXIuYWRkX2FyZ3VtZW50KCItLWluY2x1ZGUiLCBuYXJncz0iKiIsIGNob2ljZXM9c2NyaXB0
cy5rZXlzKCksIGRlZmF1bHQ9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IlN1
aXRlcyB0byB1cGRhdGUgKGRlZmF1bHQgaXMgdG8gdXBkYXRlIGV2ZXJ5dGhpbmcpIikKKyAgICBy
ZXR1cm4gcGFyc2VyCisKKworZGVmIGxpc3Rfc3VpdGVzKGluY2x1ZGUpOgorICAgIGZvciBuYW1l
LCBzY3JpcHRfcGF0aHMgaW4gc2NyaXB0cy5pdGVtcygpOgorICAgICAgICBpZiBuYW1lIGluIGlu
Y2x1ZGU6CisgICAgICAgICAgICBwcmludChuYW1lKQorICAgICAgICAgICAgZm9yIHNjcmlwdF9w
YXRoIGluIHNjcmlwdF9wYXRoczoKKyAgICAgICAgICAgICAgICBwcmludChmIiAgICB7c2NyaXB0
X3BhdGh9IikKKworCitkZWYgcnVuKHZlbnYsICoqa3dhcmdzKToKKyAgICBpbmNsdWRlID0ga3dh
cmdzWyJpbmNsdWRlIl0KKyAgICBpZiBpbmNsdWRlIGlzIE5vbmU6CisgICAgICAgIGluY2x1ZGUg
PSBsaXN0KHNjcmlwdHMua2V5cygpKQorCisgICAgaWYga3dhcmdzWyJsaXN0Il06CisgICAgICAg
IGxpc3Rfc3VpdGVzKGluY2x1ZGUpCisgICAgICAgIHJldHVybiAwCisKKyAgICBmYWlsZWQgPSBG
YWxzZQorCisgICAgZm9yIHRhcmdldCBpbiBpbmNsdWRlOgorICAgICAgICBmb3Igc2NyaXB0IGlu
IHNjcmlwdHNbdGFyZ2V0XToKKyAgICAgICAgICAgIHNjcmlwdF9wYXRoID0gc2NyaXB0LnJlcGxh
Y2UoIi8iLCBvcy5wYXRoLnNlcCkKKyAgICAgICAgICAgIGNtZCA9IFtvcy5wYXRoLmpvaW4odmVu
di5iaW5fcGF0aCwgInB5dGhvbjMiKSwgb3MucGF0aC5qb2luKHdwdF9yb290LCBzY3JpcHRfcGF0
aCldCisgICAgICAgICAgICBsb2dnZXIuaW5mbyhmIlJ1bm5pbmcgeycgJy5qb2luKGNtZCl9IikK
KyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwo
Y21kLCBjd2Q9b3MucGF0aC5kaXJuYW1lKHNjcmlwdF9wYXRoKSkKKyAgICAgICAgICAgIGV4Y2Vw
dCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcjoKKyAgICAgICAgICAgICAgICBsb2dnZXIu
ZXJyb3IoZiJVcGRhdGUgc2NyaXB0IHtzY3JpcHR9IGZhaWxlZCIpCisgICAgICAgICAgICAgICAg
ZmFpbGVkID0gVHJ1ZQorCisgICAgcmV0dXJuIDEgaWYgZmFpbGVkIGVsc2UgMApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS93
M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvY2kvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDdjYTlkZGQwYTAzNDY4ODZjNjU4OWUzYTk0OGE0OTc5Y2RmZTMxYzkuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxs
CkBAIC0xLDMyICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9y
dGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBk
aXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhl
IFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQK
LQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQg
dG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUK
LVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2NpX2J1aWx0X2RpZmYuc2gKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2NpX3Jlc291
cmNlc191bml0dGVzdC5zaAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvY2kvY2lfdG9vbHNfaW50ZWdyYXRpb25fdGVzdC5zaAotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvY2lfdG9vbHNfdW5pdHRl
c3Quc2gKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2NpL2NpX3dwdHJ1bm5lcl9pbmZyYXN0cnVjdHVyZS5zaAotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvY29tbWFuZHMuanNvbgotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvZXBvY2hzX3VwZGF0
ZS5zaAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
Y2kvaW50ZXJmYWNlc191cGRhdGUuc2gKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2pvYnMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL21ha2VfaG9zdHNfZmlsZS5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvbWFuaWZlc3RfYnVp
bGQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2NpL3JlZ2VuX2NlcnRzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9jaS9ydW5fdGMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3Rhc2tjbHVzdGVyLXJ1bi5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvd2Vic2l0ZV9idWlsZC5z
aApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9jaS93ZWJzaXRlX2J1aWxkLnNoIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS93ZWJzaXRlX2J1aWxkLnNoCm9sZCBtb2RlIDEwMDY0
NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggZmMyNTVhZTgzZjIyMTlkM2UzMmE4NTlmMGQ2Mzc0NWVk
NjgyYjQzNi4uYWRmZGY0MWFlNzM4MTJkZTE3Nzk3OGFjMDdmODdkNmM4ZWIxMGIxMAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3dlYnNp
dGVfYnVpbGQuc2gKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9jaS93ZWJzaXRlX2J1aWxkLnNoCkBAIC0xMCw3ICsxMCw4IEBAIHNvdXJjZV9y
ZXZpc2lvbj0kKGdpdCByZXYtcGFyc2UgSEVBRCkKICMgd3B0LXByLWJvdC4KICMKICMgaHR0cHM6
Ly9oZWxwLmdpdGh1Yi5jb20vZW4vYXJ0aWNsZXMvZ2VuZXJpYy1qZWt5bGwtYnVpbGQtZmFpbHVy
ZXMKLXJlbW90ZV91cmw9aHR0cHM6Ly8ke0RFUExPWV9UT0tFTn1AZ2l0aHViLmNvbS93ZWItcGxh
dGZvcm0tdGVzdHMvd3B0LmdpdAorcmVtb3RlX3VybD1odHRwczovLyR7REVQTE9ZX1RPS0VOfUBn
aXRodWIuY29tLyR7R0lUSFVCX1JFUE9TSVRPUll9LmdpdAord3B0X3Jvb3Q9JFBXRAogCiBmdW5j
dGlvbiBqc29uX3Byb3BlcnR5IHsKICAgY2F0ICR7MX0gfCBcCkBAIC0zMCwxOSArMzEsMjMgQEAg
Z2l0IGNvbmZpZyAtLWdsb2JhbCB1c2VyLm5hbWUgIndwdC1wci1ib3QiCiAKICMgUHJlcGFyZSB0
aGUgb3V0cHV0IGRpcmVjdG9yeSBzbyB0aGF0IHRoZSBuZXcgYnVpbGQgY2FuIGJlIHB1c2hlZCB0
byB0aGUKICMgcmVwb3NpdG9yeSBhcyBhbiBpbmNyZW1lbnRhbCBjaGFuZ2UgdG8gdGhlIHByaW9y
IGJ1aWxkLgotbWtkaXIgLXAgZG9jcy9fYnVpbGQvaHRtbAotY2QgZG9jcy9fYnVpbGQvaHRtbAor
bWtkaXIgLXAgZG9jcy9fYnVpbGQKK2NkIGRvY3MvX2J1aWxkCiBnaXQgaW5pdAogZ2l0IGZldGNo
IC0tZGVwdGggMSAke3JlbW90ZV91cmx9IGdoLXBhZ2VzCiBnaXQgY2hlY2tvdXQgRkVUQ0hfSEVB
RAogZ2l0IHJtIC1yZiAuCiAKICMgQnVpbGQgdGhlIHdlYnNpdGUKLWNkIC4uLy4uCi1waXAgaW5z
dGFsbCAtciByZXF1aXJlbWVudHMudHh0Ci1tYWtlIGh0bWwKK3Vuc2V0IE5PREVfRU5WCitjZCAk
e3dwdF9yb290fS9kb2NzCitucG0gaW5zdGFsbCAuCitleHBvcnQgUEFUSD0iJFBXRC9ub2RlX21v
ZHVsZXMvLmJpbjokUEFUSCIKK2NkICR7d3B0X3Jvb3R9CiAKLWNkIF9idWlsZC9odG1sCisuL3dw
dCBidWlsZC1kb2NzCisKK2NkIGRvY3MvX2J1aWxkCiAjIENvbmZpZ3VyZSBETlMKIGVjaG8gd2Vi
LXBsYXRmb3JtLXRlc3RzLm9yZyA+IENOQU1FCiAjIERpc2FibGUgSmVreWxsCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2RvY2tl
ci8uYmFzaHJjIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9kb2NrZXIvLmJhc2hyYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYmUwM2M0ODlhYTUyODM2MDBjNDYwZTEy
YWY0YjYzODY5MjMxMWZmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9kb2NrZXIvLmJhc2hyYwpAQCAtMCwwICsxLDQg
QEAKK2Z1bmN0aW9uIHh2ZmJfc3RhcnQoKSB7CisgICAgR0VPTUVUUlk9IiRTQ1JFRU5fV0lEVEgi
IngiIiRTQ1JFRU5fSEVJR0hUIiJ4IiIkU0NSRUVOX0RFUFRIIgorICAgIHh2ZmItcnVuIC0tc2Vy
dmVyLWFyZ3M9Ii1zY3JlZW4gMCAkR0VPTUVUUlkgLWFjICtleHRlbnNpb24gUkFORFIiICRACit9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2RvY2tlci9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvZG9ja2VyL19faW5pdF9fLnB5CmluZGV4IGE2ODM0YjgyODVh
NTZiZWYwZTE1NDNmZDkwMWM3ZTZmMmY4YmMyMDIuLmU2OWRlMjliYjJkMWQ2NDM0YjhiMjlhZTc3
NWFkOGMyZTQ4YzUzOTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvZG9ja2VyL19faW5pdF9fLnB5CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZG9ja2VyL19faW5pdF9fLnB5
CkBAIC0xICswLDAgQEAKLSMgVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBQeXRob24gdG8gc2Vh
cmNoIHRoaXMgZGlyZWN0b3J5IGZvciBtb2R1bGVzLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvZG9ja2VyL2RvY3VtZW50YXRpb24vRG9ja2VyZmlsZSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZG9ja2VyL2RvY3VtZW50YXRpb24v
RG9ja2VyZmlsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTAxZjk4ZTRkNGRmMGU3
Zjc1MDFiYjVkNzA1N2QxZDUyODIyMWJkZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2RvY2tlci9kb2N1bWVudGF0aW9uL0RvY2tlcmZpbGUKKysrIC9kZXYvbnVsbApA
QCAtMSwzICswLDAgQEAKLUZST00gcHl0aG9uOjItc3RyZXRjaAotCi1SVU4gYXB0LWdldCB1cGRh
dGUgJiYgYXB0LWdldCBpbnN0YWxsIC0teWVzIGdpdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9kb2NrZXIvZG9jdW1lbnRhdGlv
bi93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvZG9ja2VyL2RvY3VtZW50YXRpb24vdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzMjRiMmY0MDlhZjE3MmM5ODYzMWI5YmFhMTRjMzgxZmU5
M2I4MWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9kb2NrZXIvZG9j
dW1lbnRhdGlvbi93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAK
LVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyBy
ZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQu
Ci1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0
cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRv
b2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8g
Tk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3Bl
cnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyBy
ZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9m
IGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvZG9ja2VyL2RvY3VtZW50YXRpb24vRG9ja2VyZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9kb2NrZXIvZnJvbnRlbmQu
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2Rv
Y2tlci9mcm9udGVuZC5weQppbmRleCBjMDU5MzdiNzNkY2RhNzViODBlYmYzY2MyY2EyZjhkY2Nk
YjBkZmRhLi4yN2EwY2Q1OTAzMTRhNWZlNzA1YTgxNTUyZjE4MjEwNGUyMTRlMzQ5IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2Rv
Y2tlci9mcm9udGVuZC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2RvY2tlci9mcm9udGVuZC5weQpAQCAtMTEzLDYgKzExMyw4IEBAIGRl
ZiBwYXJzZXJfcnVuKCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAiL2hvbWUvdGVzdC93ZWIt
cGxhdGZvcm0tdGVzdHMvIikKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLXByaXZpbGVnZWQi
LCBhY3Rpb249InN0b3JlX3RydWUiLAogICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iUnVu
IHRoZSBpbWFnZSBpbiBwcml2aWxlZGdlZCBtb2RlIChyZXF1aXJlZCBmb3IgZW11bGF0b3JzKSIp
CisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS10YWciLCBhY3Rpb249InN0b3JlIiwgZGVmYXVs
dD0id3B0OmxvY2FsIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkRvY2tlciBpbWFn
ZSB0YWcgdG8gdXNlIChkZWZhdWx0IHdwdDpsb2NhbCkiKQogICAgIHJldHVybiBwYXJzZXIKIAog
CkBAIC0xMzAsNyArMTMyLDcgQEAgZGVmIHJ1bigqYXJncywgKiprd2FyZ3MpOgogICAgIGVsc2U6
CiAgICAgICAgIGFyZ3MuZXh0ZW5kKFsiLS1tb3VudCIsCiAgICAgICAgICAgICAgICAgICAgICAi
dHlwZT1iaW5kLHNvdXJjZT0lcyx0YXJnZXQ9L2hvbWUvdGVzdC93ZWItcGxhdGZvcm0tdGVzdHMi
ICUgd3B0X3Jvb3RdKQotICAgIGFyZ3MuZXh0ZW5kKFsiLWl0IiwgIndwdDpsb2NhbCJdKQorICAg
IGFyZ3MuZXh0ZW5kKFsiLWl0Iiwga3dhcmdzWyJ0YWciXV0pCiAKICAgICBwcm9jID0gc3VicHJv
Y2Vzcy5Qb3BlbihhcmdzKQogICAgIHByb2Mud2FpdCgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2RvY2tlci9yZXRyeS5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZG9ja2Vy
L3JldHJ5LnB5Cm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZG9ja2VyL3N0
YXJ0LnNoIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9kb2NrZXIvc3RhcnQuc2gKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9k
b2NrZXIvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2RvY2tlci93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZTExY2JmYmI5MGQ3NGE3YmVkYTc1YmQxYzI1YmZiNWY4YTMxNmE4YS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2RvY2tlci93M2MtaW1wb3J0Lmxv
ZworKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVj
dG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlm
eSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxs
IHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0
Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10
ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhp
cyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVz
OgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZG9ja2VyL0RvY2tlcmZpbGUKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2RvY2tlci9S
RUFETUUubWQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2RvY2tlci9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvZG9ja2VyL2NvbW1hbmRzLmpzb24KLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2RvY2tlci9mcm9udGVuZC5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZG9ja2VyL3Jl
dHJ5LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9kb2NrZXIvc2VjY29tcC5qc29uCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9kb2NrZXIvc3RhcnQuc2gKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZ2l0aWdub3JlL19faW5pdF9f
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9n
aXRpZ25vcmUvX19pbml0X18ucHkKaW5kZXggYTY4MzRiODI4NWE1NmJlZjBlMTU0M2ZkOTAxYzdl
NmYyZjhiYzIwMi4uZTY5ZGUyOWJiMmQxZDY0MzRiOGIyOWFlNzc1YWQ4YzJlNDhjNTM5MSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9naXRpZ25vcmUvX19pbml0X18ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9naXRpZ25vcmUvX19pbml0X18ucHkKQEAgLTEgKzAsMCBA
QAotIyBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFB5dGhvbiB0byBzZWFyY2ggdGhpcyBkaXJl
Y3RvcnkgZm9yIG1vZHVsZXMuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9naXRp
Z25vcmUvdGVzdHMvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2dpdGlnbm9yZS90ZXN0cy9fX2luaXRfXy5weQppbmRleCBhNjgz
NGI4Mjg1YTU2YmVmMGUxNTQzZmQ5MDFjN2U2ZjJmOGJjMjAyLi5lNjlkZTI5YmIyZDFkNjQzNGI4
YjI5YWU3NzVhZDhjMmU0OGM1MzkxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2dpdGlnbm9yZS90ZXN0cy9fX2luaXRfXy5weQor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2dp
dGlnbm9yZS90ZXN0cy9fX2luaXRfXy5weQpAQCAtMSArMCwwIEBACi0jIFRoaXMgZmlsZSBpcyBy
ZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRpcmVjdG9yeSBmb3IgbW9kdWxlcy4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2dpdGlnbm9yZS90ZXN0cy93M2MtaW1w
b3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvZ2l0aWdub3JlL3Rlc3RzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBjMmI4MDQwMmNmZmIyMjg5MWI4Nzk2ZGRmMzQ5MmE3OGQ2YjY3ZWZjLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZ2l0aWdub3JlL3Rlc3RzL3czYy1pbXBv
cnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMg
ZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1Qg
bW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBh
IHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2Vi
LXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQt
dzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92
ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVu
ZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9naXRpZ25vcmUvdGVzdHMv
X19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2dpdGlnbm9yZS90ZXN0cy90ZXN0X2dpdGlnbm9yZS5weQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9naXRpZ25vcmUv
dzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2dpdGlnbm9yZS93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggM2Y1Y2NlMjhmZjc5NmFmYjFmMmQ2Mzg4MGQwNzAwMDc3YzdkNGZlMy4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2dpdGlnbm9yZS93M2MtaW1wb3J0Lmxv
ZworKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVj
dG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlm
eSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxs
IHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0
Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10
ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhp
cyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVz
OgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZ2l0aWdub3JlL19faW5pdF9fLnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9naXRp
Z25vcmUvZ2l0aWdub3JlLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvX19pbml0X18ucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvX19p
bml0X18ucHkKaW5kZXggYTY4MzRiODI4NWE1NmJlZjBlMTU0M2ZkOTAxYzdlNmYyZjhiYzIwMi4u
ZTY5ZGUyOWJiMmQxZDY0MzRiOGIyOWFlNzc1YWQ4YzJlNDhjNTM5MSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3Rz
L19faW5pdF9fLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvbGludC90ZXN0cy9fX2luaXRfXy5weQpAQCAtMSArMCwwIEBACi0jIFRoaXMg
ZmlsZSBpcyByZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRpcmVjdG9yeSBmb3Ig
bW9kdWxlcy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVt
bXkvY3NzL2Nzcy11bmlxdWUvYS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5p
cXVlL2EtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDAwNDkx
ZmQ3ZTViYjZmYTI4YzUxN2EwYmIzMmI4YjUwNjUzOWQ0ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvYS1leHBl
Y3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotMQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3Rz
L2R1bW15L2Nzcy9jc3MtdW5pcXVlL2EtcmVmLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlx
dWUvYS1yZWYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMDA0OTFmZDdlNWJiNmZhMjhjNTE3YTBiYjMyYjhi
NTA2NTM5ZDRkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL2Et
cmVmLmh0bWwKQEAgLTAsMCArMSBAQAorMQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3Mt
dW5pcXVlL21hdGNoL2EtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9t
YXRjaC9hLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwMDQ5
MWZkN2U1YmI2ZmEyOGM1MTdhMGJiMzJiOGI1MDY1MzlkNGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL21hdGNo
L2EtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLTEKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGlu
dC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9tYXRjaC9hLXJlZi5odG1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15
L2Nzcy9jc3MtdW5pcXVlL21hdGNoL2EtcmVmLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDAwNDkxZmQ3ZTVi
YjZmYTI4YzUxN2EwYmIzMmI4YjUwNjUzOWQ0ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1t
eS9jc3MvY3NzLXVuaXF1ZS9tYXRjaC9hLXJlZi5odG1sCkBAIC0wLDAgKzEgQEAKKzEKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
bGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9tYXRjaC9zdXBwb3J0L3Rvb2xzL3czYy1p
bXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL21hdGNoL3N1cHBvcnQvdG9vbHMv
dzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxZGJhMzQ0Y2Jh
ZjY3YWUyNTU1ZjNjODBiYjMwY2ZjMmVjZDg2MDUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL21hdGNoL3N1cHBv
cnQvdG9vbHMvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1U
aGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVw
b3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0Lgot
SW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBz
Oi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29s
cy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5P
VCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0
aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVx
dWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBm
aWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbWF0Y2gvc3VwcG9ydC90b29scy9hLmh0
bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9tYXRjaC9zdXBwb3J0L3cz
Yy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL21hdGNoL3N1cHBvcnQvdzNj
LWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmYjM1MjNlZTIyNGRj
YzY5ZGYzNjlkZTMzYjc1NDk4ZjdjYTc1NGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL21hdGNoL3N1cHBvcnQv
dzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1UaGUgdGVzdHMg
aW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4K
LURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwg
Y3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHVi
LmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRz
L2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkg
b3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVp
cmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVz
dHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbWF0Y2gvc3VwcG9ydC9hLmh0bWwKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90
ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9tYXRjaC90b29scy93M2MtaW1wb3J0LmxvZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0
cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9tYXRjaC90b29scy93M2MtaW1wb3J0LmxvZwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGM4Y2IwZjI5MzM5YzU4ZTAxYjY4MzdjMTEwMjhhNGMw
NWIxOTc2YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVz
dHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbWF0Y2gvdG9vbHMvdzNjLWltcG9ydC5sb2cKKysrIC9k
ZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2Vy
ZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2Ug
dGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0
IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVz
dHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4g
V2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4K
LQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6
Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUK
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlx
dWUvbWF0Y2gvdG9vbHMvYS5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlx
dWUvbWF0Y2gvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbWF0Y2gv
dzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjZmE2ZGRjMGI1
MTU1MWZkNDFjNmQ5YThkMGFmMmQ1OTUxOTU2NzMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL21hdGNoL3czYy1p
bXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotVGhlIHRlc3RzIGluIHRo
aXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBO
T1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0
ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20v
d2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBv
cnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJl
bW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcg
dmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1
bW15L2Nzcy9jc3MtdW5pcXVlL21hdGNoL2EtZXhwZWN0ZWQuaHRtbAotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3Mv
Y3NzLXVuaXF1ZS9tYXRjaC9hLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVu
aXF1ZS9ub3QtbWF0Y2gvYS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVl
L25vdC1tYXRjaC9hLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDBjZmJmMDg4ODZmY2E5YTkxY2I3NTNlYzg3MzRjODRmY2JlNTJjOWYuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVl
L25vdC1tYXRjaC9hLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0y
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbm90LW1hdGNoL2EtcmVmLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xp
bnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbm90LW1hdGNoL2EtcmVmLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMGNmYmYwODg4NmZjYTlhOTFjYjc1M2VjODczNGM4NGZjYmU1MmM5ZgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9ub3QtbWF0Y2gvYS1yZWYuaHRtbApA
QCAtMCwwICsxIEBACisyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbm90
LW1hdGNoL3N1cHBvcnQvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUv
bm90LW1hdGNoL3N1cHBvcnQvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGY1MjM0NjQwZWEzYWRiZmFjYjgyZWIzYTlhYTY5YmRkOWMwMTRhZmEuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3Mt
dW5pcXVlL25vdC1tYXRjaC9zdXBwb3J0L3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAg
LTEsMTcgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQg
ZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVj
dGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BU
IGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1U
aGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byBy
ZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJv
cGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL25vdC1tYXRj
aC9zdXBwb3J0L2EuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL25v
dC1tYXRjaC90b29scy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9u
b3QtbWF0Y2gvdG9vbHMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDI0ZmE3ODE4OTg5YmIzNjI0MjJlMTQxZmYxN2YwMzIxMDc5MDBmZmMuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5p
cXVlL25vdC1tYXRjaC90b29scy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE3
ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20g
dGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBp
biBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRo
dWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBy
dW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBv
cnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5
IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9ub3QtbWF0Y2gvdG9v
bHMvYS5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbm90LW1hdGNo
L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL25vdC1tYXRjaC93M2Mt
aW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGRkYmMzYmEwY2I2NmM4
MTc1ZmY2OTBmMDZiODM2MTIwZTJkYTNhNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbm90LW1hdGNoL3czYy1p
bXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotVGhlIHRlc3RzIGluIHRo
aXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBO
T1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0
ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20v
d2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBv
cnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJl
bW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcg
dmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1
bW15L2Nzcy9jc3MtdW5pcXVlL25vdC1tYXRjaC9hLWV4cGVjdGVkLmh0bWwKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkv
Y3NzL2Nzcy11bmlxdWUvbm90LW1hdGNoL2EuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nz
cy9jc3MtdW5pcXVlL3JlbGF0aXZlLXRlc3RoYXJuZXNzLWludGVyYWN0Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVt
bXkvY3NzL2Nzcy11bmlxdWUvcmVsYXRpdmUtdGVzdGhhcm5lc3MtaW50ZXJhY3QuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hNTBlZjk4M2E5MzlkYWE0NWI0NjcxYWVmMGFiMDA5NDQ1YTZhYTM1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL3JlbGF0aXZlLXRlc3RoYXJuZXNz
LWludGVyYWN0Lmh0bWwKQEAgLTAsMCArMSw1IEBACis8IWRvY3R5cGUgaHRtbD4KKzxsaW5rIHJl
bD1oZWxwIGhyZWY9Imh0dHBzOi8vd3d3LnczLm9yZy9UUi9DU1MyL3Zpc3VmeC5odG1sI292ZXJm
bG93LWNsaXBwaW5nIj4KKzxtZXRhIG5hbWU9ZmxhZ3MgY29udGVudD1pbnRlcmFjdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvc2VsZWN0b3JzL3czYy1p
bXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL3NlbGVjdG9ycy93M2MtaW1wb3J0
LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDU4MmE0NjBmMmNjZDFiMDQzMDBi
MmFmZDEwN2UxNzdlMjQzZTg1Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvc2VsZWN0b3JzL3czYy1pbXBvcnQu
bG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGly
ZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9k
aWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1
bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBs
YXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNj
LXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0
aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9y
IHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nz
cy9jc3MtdW5pcXVlL3NlbGVjdG9ycy9hLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3Mv
Y3NzLXVuaXF1ZS9zdXBwb3J0L3Rvb2xzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9j
c3MtdW5pcXVlL3N1cHBvcnQvdG9vbHMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDYzNDY0OWE0OWNhYmQ0ODA5YmM0NzFiODZmMzAyZWY5NmMxMGRhMTkuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nz
cy9jc3MtdW5pcXVlL3N1cHBvcnQvdG9vbHMvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApA
QCAtMSwxNyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRl
ZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGly
ZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBX
UFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0K
LVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRv
IHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Q
cm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvc3VwcG9y
dC90b29scy9hLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9zdXBw
b3J0L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL3N1cHBvcnQvdzNj
LWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmNDNkNGE1NDU0ZDJk
NWNhYmIwMDFjN2Q2N2JiMjlkOWFhMThlN2YuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL3N1cHBvcnQvdzNjLWlt
cG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhp
cyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5P
VCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRl
IGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93
ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9y
dC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVt
b3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVt
bXkvY3NzL2Nzcy11bmlxdWUvc3VwcG9ydC9hLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9j
c3MvY3NzLXVuaXF1ZS90b29scy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVu
aXF1ZS90b29scy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
OGRiNmI4ODc4MzJjMjdmMmQ0Yzg5NzM4YTMzMTM1M2M3NDYzYmJmOC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUv
dG9vbHMvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1UaGUg
dGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3Np
dG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5z
dGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8v
Z2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9T
Y3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBt
b2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVz
IHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWly
aW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxl
czoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xp
bnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvdG9vbHMvYS5odG1sCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVz
dHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nz
cy11bmlxdWUvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0
ZDMyNTFlMzU0Yzc2M2IxYTU5YjkxZjdlODExZGZmMmZlZGVlMjIuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL3cz
Yy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotVGhlIHRlc3RzIGlu
IHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1E
byBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNy
ZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5j
b20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9p
bXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9y
IHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3Rz
L2R1bW15L2Nzcy9jc3MtdW5pcXVlL2EtZXhwZWN0ZWQuaHRtbAotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3Nz
LXVuaXF1ZS9hLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvcmVsYXRpdmUtdGVzdGhh
cm5lc3MuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3JlZi9leGlzdGVudF9yZWxhdGl2ZS1l
eHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9saW50L3Rlc3RzL2R1bW15L3JlZi9leGlzdGVudF9yZWxhdGl2ZS1leHBlY3RlZC5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNjlkZTI5YmIyZDFkNjQzNGI4YjI5
YWU3NzVhZDhjMmU0OGM1MzkxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvcmVmL2V4aXN0ZW50X3JlbGF0aXZlLXJlZi5odG1s
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50
L3Rlc3RzL2R1bW15L3JlZi9leGlzdGVudF9yZWxhdGl2ZS1yZWYuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
NjlkZTI5YmIyZDFkNjQzNGI4YjI5YWU3NzVhZDhjMmU0OGM1MzkxCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMv
ZHVtbXkvcmVmL3NhbWVfZmlsZV9wYXRoLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvcmVmL3NhbWVfZmlsZV9w
YXRoLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmE4MGMxZjIwZGRmMGRmZjhiYTEwZWZmM2NjZTRmYzcyODZm
NzljOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9yZWYvc2FtZV9maWxlX3BhdGguaHRt
bApAQCAtMCwwICsxIEBACis8bGluayByZWw9Im1hdGNoIiBocmVmPSJzYW1lX2ZpbGVfcGF0aC5o
dG1sIj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9yZWYvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVt
bXkvcmVmL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNDRk
YTU5YTkyY2I2NGMyNmFkY2YzYTg1MzM5N2U3MzdkNjA1NDc2Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9yZWYvdzNjLWltcG9ydC5sb2cK
KysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rv
cnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkg
dGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCBy
ZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZv
cm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVz
dHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMg
ZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
LU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvcmVmL2Fi
c29sdXRlLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvcmVmL2V4aXN0ZW50X3JlbGF0aXZlLWV4cGVjdGVkLmh0
bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xp
bnQvdGVzdHMvZHVtbXkvcmVmL2V4aXN0ZW50X3JlbGF0aXZlLmh0bWwKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvcmVm
L2V4aXN0ZW50X3Jvb3RfcmVsYXRpdmUuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9yZWYvbm9uX2V4aXN0ZW50
X3JlbGF0aXZlLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvcmVmL25vbl9leGlzdGVudF9yb290X3JlbGF0aXZl
Lmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2xpbnQvdGVzdHMvZHVtbXkvcmVmL3NhbWVfZmlsZV9lbXB0eS5odG1sCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVz
dHMvZHVtbXkvdGVzdHMvZGlyMS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS90ZXN0cy9kaXIx
L3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjI5OTFkOWJl
NmNjZjQxODgwMTAwMDZhNmU2ZDgzNjk4ZDI4ZTdlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS90ZXN0cy9kaXIxL3czYy1pbXBvcnQubG9n
CisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0
b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5
IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwg
cmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRm
b3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRl
c3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlz
IGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6
Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3Rlc3Rz
L2RpcjEvYS5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9saW50L3Rlc3RzL2R1bW15L3Rlc3RzL2RpcjEvYS5qcwotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS90ZXN0
cy9kaXIxL2EueGh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvdGVzdHMvZGlyMS9iLmh0bWwKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90
ZXN0cy9kdW1teS90ZXN0cy9kaXIyL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3Rlc3RzL2Rp
cjIvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjZDY2OWU2
NTNiZmMyMzdiNjM3OGYzYWU5ZWU2Njc1MGM1NTBiYWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3Rlc3RzL2RpcjIvdzNjLWltcG9ydC5s
b2cKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJl
Y3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2Rp
ZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVs
bCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxh
dGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2Mt
dGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRo
aXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhl
czoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvdGVz
dHMvZGlyMi9hLnhodG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvdGVzdHMvcmVsYXRpdmUtdGVz
dGhhcm5lc3MtbWFudWFsLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvdGVzdHMvcmVsYXRpdmUtdGVzdGhhcm5l
c3MtbWFudWFsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTU2OTNiOTkwYzFkNTE2NWFhNTEwMzczZDVjNjk1
NWUwNjYxYjhhMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS90ZXN0cy9yZWxhdGl2ZS10
ZXN0aGFybmVzcy1tYW51YWwuaHRtbApAQCAtMCwwICsxLDMgQEAKKzwhZG9jdHlwZSBodG1sPgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1t
eS93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjM0ZDE2NzMw
ZjcwMDRmNzRkMjM0YzljY2FkYjJjMGVjZWQyYjUwOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYv
bnVsbApAQCAtMSwyMiArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBp
bXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVz
dHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9u
IHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMv
d3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2Vi
S2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1O
b25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvYWJvdXRfYmxhbmsuaHRt
bAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGlu
dC90ZXN0cy9kdW1teS9icm9rZW4uaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9icm9rZW5faWdub3JlZC5odG1s
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50
L3Rlc3RzL2R1bW15L2RlcGVuZGVuY3kuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9saW50Lmlnbm9yZQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0
cy9kdW1teS9va2F5Lmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy93M2MtaW1wb3J0LmxvZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy93
M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjdiNTE4OWZiZTEx
ZDk4Y2RkNzg4ZjMwNmRlNjU2YjE2NjhiZWI4NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAt
MSwyMSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBm
cm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0
bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQg
Z2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRo
ZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJl
aW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9w
ZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvYmFzZS5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0
cy90ZXN0X2ZpbGVfbGludHMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvdGVzdF9saW50LnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL3Rlc3RfcGF0aF9s
aW50cy5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9saW50L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3czYy1pbXBvcnQubG9nCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlY2VhYzU4ZDRlZDcwNTM0YmU5ODYyYmM4ZWJlZWU3MGNm
MTVkOWM3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC93M2Mt
aW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0
aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8g
Tk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVh
dGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29t
L3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1w
b3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciBy
ZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5n
IHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9y
IHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC9fX2luaXRf
Xy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
bGludC9jb21tYW5kcy5qc29uCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9saW50L2ZubWF0Y2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvbGludC5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC9ydWxlcy5weQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5p
ZmVzdC9jYXRhbG9nL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9jYXRhbG9nL3czYy1pbXBvcnQubG9nCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZDEzOTExYzBhN2JiZWNlY2Y2YWFkZmExMDVm
ZDhkNTU5YTA3Mjc2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFu
aWZlc3QvY2F0YWxvZy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAg
QEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFcz
QyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJL
aXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0J
aHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhl
IFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQot
RG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVBy
b3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVl
cyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0
IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvbWFuaWZlc3QvY2F0YWxvZy94aHRtbC5kdGQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvY2F0YWxvZy94
aHRtbC5kdGQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL21hbmlmZXN0L2NhdGFsb2cveGh0bWwuZHRkCmluZGV4IDgwNDIzNDgwYmM1OTc1NDI2OTEw
MTBhNTBjYTJjMTZmOTQ1YTcwODQuLjQzMDdiMWMyYzQzMzJiMjk0OTk5YTVmYTMxM2E2YTI4ZWVj
NTdmZjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvbWFuaWZlc3QvY2F0YWxvZy94aHRtbC5kdGQKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9jYXRhbG9nL3ho
dG1sLmR0ZApAQCAtMSwyMTI1ICsxLDIxMjUgQEAKLTwhLS1FTlRJVFkgVGFiICImI3g5OyItLT4K
LTwhLS1FTlRJVFkgTmV3TGluZSAiJiN4QTsiLS0+Ci08IS0tRU5USVRZIGV4Y2wgIiYjeDIxOyIt
LT4KLTwhLS1FTlRJVFkgcXVvdCAiJiN4MjI7Ii0tPgotPCEtLUVOVElUWSBRVU9UICImI3gyMjsi
LS0+Ci08IS0tRU5USVRZIG51bSAiJiN4MjM7Ii0tPgotPCEtLUVOVElUWSBkb2xsYXIgIiYjeDI0
OyItLT4KLTwhLS1FTlRJVFkgcGVyY250ICImI3gyNTsiLS0+Ci08IS0tRU5USVRZIGFtcCAiJiN4
MjY7I3gyNjsiLS0+Ci08IS0tRU5USVRZIEFNUCAiJiN4MjY7I3gyNjsiLS0+Ci08IS0tRU5USVRZ
IGFwb3MgIiYjeDI3OyItLT4KLTwhLS1FTlRJVFkgbHBhciAiJiN4Mjg7Ii0tPgotPCEtLUVOVElU
WSBycGFyICImI3gyOTsiLS0+Ci08IS0tRU5USVRZIGFzdCAiJiN4MkE7Ii0tPgotPCEtLUVOVElU
WSBtaWRhc3QgIiYjeDJBOyItLT4KLTwhLS1FTlRJVFkgcGx1cyAiJiN4MkI7Ii0tPgotPCEtLUVO
VElUWSBjb21tYSAiJiN4MkM7Ii0tPgotPCEtLUVOVElUWSBwZXJpb2QgIiYjeDJFOyItLT4KLTwh
LS1FTlRJVFkgc29sICImI3gyRjsiLS0+Ci08IS0tRU5USVRZIGNvbG9uICImI3gzQTsiLS0+Ci08
IS0tRU5USVRZIHNlbWkgIiYjeDNCOyItLT4KLTwhLS1FTlRJVFkgbHQgIiYjeDI2OyN4M0M7Ii0t
PgotPCEtLUVOVElUWSBMVCAiJiN4MjY7I3gzQzsiLS0+Ci08IS0tRU5USVRZIG52bHQgIiYjeDI2
OyN4M0M7JiN4MjBEMjsiLS0+Ci08IS0tRU5USVRZIGVxdWFscyAiJiN4M0Q7Ii0tPgotPCEtLUVO
VElUWSBibmUgIiYjeDNEOyYjeDIwRTU7Ii0tPgotPCEtLUVOVElUWSBndCAiJiN4M0U7Ii0tPgot
PCEtLUVOVElUWSBHVCAiJiN4M0U7Ii0tPgotPCEtLUVOVElUWSBudmd0ICImI3gzRTsmI3gyMEQy
OyItLT4KLTwhLS1FTlRJVFkgcXVlc3QgIiYjeDNGOyItLT4KLTwhLS1FTlRJVFkgY29tbWF0ICIm
I3g0MDsiLS0+Ci08IS0tRU5USVRZIGxzcWIgIiYjeDVCOyItLT4KLTwhLS1FTlRJVFkgbGJyYWNr
ICImI3g1QjsiLS0+Ci08IS0tRU5USVRZIGJzb2wgIiYjeDVDOyItLT4KLTwhLS1FTlRJVFkgcnNx
YiAiJiN4NUQ7Ii0tPgotPCEtLUVOVElUWSByYnJhY2sgIiYjeDVEOyItLT4KLTwhLS1FTlRJVFkg
SGF0ICImI3g1RTsiLS0+Ci08IS0tRU5USVRZIGxvd2JhciAiJiN4NUY7Ii0tPgotPCEtLUVOVElU
WSBVbmRlckJhciAiJiN4NUY7Ii0tPgotPCEtLUVOVElUWSBncmF2ZSAiJiN4NjA7Ii0tPgotPCEt
LUVOVElUWSBEaWFjcml0aWNhbEdyYXZlICImI3g2MDsiLS0+Ci08IS0tRU5USVRZIGZqbGlnICIm
I3g2NjsmI3g2QTsiLS0+Ci08IS0tRU5USVRZIGxjdWIgIiYjeDdCOyItLT4KLTwhLS1FTlRJVFkg
bGJyYWNlICImI3g3QjsiLS0+Ci08IS0tRU5USVRZIHZlcmJhciAiJiN4N0M7Ii0tPgotPCEtLUVO
VElUWSB2ZXJ0ICImI3g3QzsiLS0+Ci08IS0tRU5USVRZIFZlcnRpY2FsTGluZSAiJiN4N0M7Ii0t
PgotPCEtLUVOVElUWSByY3ViICImI3g3RDsiLS0+Ci08IS0tRU5USVRZIHJicmFjZSAiJiN4N0Q7
Ii0tPgotPCEtLUVOVElUWSBuYnNwICImI3hBMDsiLS0+Ci08IS0tRU5USVRZIE5vbkJyZWFraW5n
U3BhY2UgIiYjeEEwOyItLT4KLTwhLS1FTlRJVFkgaWV4Y2wgIiYjeEExOyItLT4KLTwhLS1FTlRJ
VFkgY2VudCAiJiN4QTI7Ii0tPgotPCEtLUVOVElUWSBwb3VuZCAiJiN4QTM7Ii0tPgotPCEtLUVO
VElUWSBjdXJyZW4gIiYjeEE0OyItLT4KLTwhLS1FTlRJVFkgeWVuICImI3hBNTsiLS0+Ci08IS0t
RU5USVRZIGJydmJhciAiJiN4QTY7Ii0tPgotPCEtLUVOVElUWSBzZWN0ICImI3hBNzsiLS0+Ci08
IS0tRU5USVRZIERvdCAiJiN4QTg7Ii0tPgotPCEtLUVOVElUWSBkaWUgIiYjeEE4OyItLT4KLTwh
LS1FTlRJVFkgRG91YmxlRG90ICImI3hBODsiLS0+Ci08IS0tRU5USVRZIHVtbCAiJiN4QTg7Ii0t
PgotPCEtLUVOVElUWSBjb3B5ICImI3hBOTsiLS0+Ci08IS0tRU5USVRZIENPUFkgIiYjeEE5OyIt
LT4KLTwhLS1FTlRJVFkgb3JkZiAiJiN4QUE7Ii0tPgotPCEtLUVOVElUWSBsYXF1byAiJiN4QUI7
Ii0tPgotPCEtLUVOVElUWSBub3QgIiYjeEFDOyItLT4KLTwhLS1FTlRJVFkgc2h5ICImI3hBRDsi
LS0+Ci08IS0tRU5USVRZIHJlZyAiJiN4QUU7Ii0tPgotPCEtLUVOVElUWSBjaXJjbGVkUiAiJiN4
QUU7Ii0tPgotPCEtLUVOVElUWSBSRUcgIiYjeEFFOyItLT4KLTwhLS1FTlRJVFkgbWFjciAiJiN4
QUY7Ii0tPgotPCEtLUVOVElUWSBzdHJucyAiJiN4QUY7Ii0tPgotPCEtLUVOVElUWSBkZWcgIiYj
eEIwOyItLT4KLTwhLS1FTlRJVFkgcGx1c21uICImI3hCMTsiLS0+Ci08IS0tRU5USVRZIHBtICIm
I3hCMTsiLS0+Ci08IS0tRU5USVRZIFBsdXNNaW51cyAiJiN4QjE7Ii0tPgotPCEtLUVOVElUWSBz
dXAyICImI3hCMjsiLS0+Ci08IS0tRU5USVRZIHN1cDMgIiYjeEIzOyItLT4KLTwhLS1FTlRJVFkg
YWN1dGUgIiYjeEI0OyItLT4KLTwhLS1FTlRJVFkgRGlhY3JpdGljYWxBY3V0ZSAiJiN4QjQ7Ii0t
PgotPCEtLUVOVElUWSBtaWNybyAiJiN4QjU7Ii0tPgotPCEtLUVOVElUWSBwYXJhICImI3hCNjsi
LS0+Ci08IS0tRU5USVRZIG1pZGRvdCAiJiN4Qjc7Ii0tPgotPCEtLUVOVElUWSBjZW50ZXJkb3Qg
IiYjeEI3OyItLT4KLTwhLS1FTlRJVFkgQ2VudGVyRG90ICImI3hCNzsiLS0+Ci08IS0tRU5USVRZ
IGNlZGlsICImI3hCODsiLS0+Ci08IS0tRU5USVRZIENlZGlsbGEgIiYjeEI4OyItLT4KLTwhLS1F
TlRJVFkgc3VwMSAiJiN4Qjk7Ii0tPgotPCEtLUVOVElUWSBvcmRtICImI3hCQTsiLS0+Ci08IS0t
RU5USVRZIHJhcXVvICImI3hCQjsiLS0+Ci08IS0tRU5USVRZIGZyYWMxNCAiJiN4QkM7Ii0tPgot
PCEtLUVOVElUWSBmcmFjMTIgIiYjeEJEOyItLT4KLTwhLS1FTlRJVFkgaGFsZiAiJiN4QkQ7Ii0t
PgotPCEtLUVOVElUWSBmcmFjMzQgIiYjeEJFOyItLT4KLTwhLS1FTlRJVFkgaXF1ZXN0ICImI3hC
RjsiLS0+Ci08IS0tRU5USVRZIEFncmF2ZSAiJiN4QzA7Ii0tPgotPCEtLUVOVElUWSBBYWN1dGUg
IiYjeEMxOyItLT4KLTwhLS1FTlRJVFkgQWNpcmMgIiYjeEMyOyItLT4KLTwhLS1FTlRJVFkgQXRp
bGRlICImI3hDMzsiLS0+Ci08IS0tRU5USVRZIEF1bWwgIiYjeEM0OyItLT4KLTwhLS1FTlRJVFkg
QXJpbmcgIiYjeEM1OyItLT4KLTwhLS1FTlRJVFkgYW5nc3QgIiYjeEM1OyItLT4KLTwhLS1FTlRJ
VFkgQUVsaWcgIiYjeEM2OyItLT4KLTwhLS1FTlRJVFkgQ2NlZGlsICImI3hDNzsiLS0+Ci08IS0t
RU5USVRZIEVncmF2ZSAiJiN4Qzg7Ii0tPgotPCEtLUVOVElUWSBFYWN1dGUgIiYjeEM5OyItLT4K
LTwhLS1FTlRJVFkgRWNpcmMgIiYjeENBOyItLT4KLTwhLS1FTlRJVFkgRXVtbCAiJiN4Q0I7Ii0t
PgotPCEtLUVOVElUWSBJZ3JhdmUgIiYjeENDOyItLT4KLTwhLS1FTlRJVFkgSWFjdXRlICImI3hD
RDsiLS0+Ci08IS0tRU5USVRZIEljaXJjICImI3hDRTsiLS0+Ci08IS0tRU5USVRZIEl1bWwgIiYj
eENGOyItLT4KLTwhLS1FTlRJVFkgRVRIICImI3hEMDsiLS0+Ci08IS0tRU5USVRZIE50aWxkZSAi
JiN4RDE7Ii0tPgotPCEtLUVOVElUWSBPZ3JhdmUgIiYjeEQyOyItLT4KLTwhLS1FTlRJVFkgT2Fj
dXRlICImI3hEMzsiLS0+Ci08IS0tRU5USVRZIE9jaXJjICImI3hENDsiLS0+Ci08IS0tRU5USVRZ
IE90aWxkZSAiJiN4RDU7Ii0tPgotPCEtLUVOVElUWSBPdW1sICImI3hENjsiLS0+Ci08IS0tRU5U
SVRZIHRpbWVzICImI3hENzsiLS0+Ci08IS0tRU5USVRZIE9zbGFzaCAiJiN4RDg7Ii0tPgotPCEt
LUVOVElUWSBVZ3JhdmUgIiYjeEQ5OyItLT4KLTwhLS1FTlRJVFkgVWFjdXRlICImI3hEQTsiLS0+
Ci08IS0tRU5USVRZIFVjaXJjICImI3hEQjsiLS0+Ci08IS0tRU5USVRZIFV1bWwgIiYjeERDOyIt
LT4KLTwhLS1FTlRJVFkgWWFjdXRlICImI3hERDsiLS0+Ci08IS0tRU5USVRZIFRIT1JOICImI3hE
RTsiLS0+Ci08IS0tRU5USVRZIHN6bGlnICImI3hERjsiLS0+Ci08IS0tRU5USVRZIGFncmF2ZSAi
JiN4RTA7Ii0tPgotPCEtLUVOVElUWSBhYWN1dGUgIiYjeEUxOyItLT4KLTwhLS1FTlRJVFkgYWNp
cmMgIiYjeEUyOyItLT4KLTwhLS1FTlRJVFkgYXRpbGRlICImI3hFMzsiLS0+Ci08IS0tRU5USVRZ
IGF1bWwgIiYjeEU0OyItLT4KLTwhLS1FTlRJVFkgYXJpbmcgIiYjeEU1OyItLT4KLTwhLS1FTlRJ
VFkgYWVsaWcgIiYjeEU2OyItLT4KLTwhLS1FTlRJVFkgY2NlZGlsICImI3hFNzsiLS0+Ci08IS0t
RU5USVRZIGVncmF2ZSAiJiN4RTg7Ii0tPgotPCEtLUVOVElUWSBlYWN1dGUgIiYjeEU5OyItLT4K
LTwhLS1FTlRJVFkgZWNpcmMgIiYjeEVBOyItLT4KLTwhLS1FTlRJVFkgZXVtbCAiJiN4RUI7Ii0t
PgotPCEtLUVOVElUWSBpZ3JhdmUgIiYjeEVDOyItLT4KLTwhLS1FTlRJVFkgaWFjdXRlICImI3hF
RDsiLS0+Ci08IS0tRU5USVRZIGljaXJjICImI3hFRTsiLS0+Ci08IS0tRU5USVRZIGl1bWwgIiYj
eEVGOyItLT4KLTwhLS1FTlRJVFkgZXRoICImI3hGMDsiLS0+Ci08IS0tRU5USVRZIG50aWxkZSAi
JiN4RjE7Ii0tPgotPCEtLUVOVElUWSBvZ3JhdmUgIiYjeEYyOyItLT4KLTwhLS1FTlRJVFkgb2Fj
dXRlICImI3hGMzsiLS0+Ci08IS0tRU5USVRZIG9jaXJjICImI3hGNDsiLS0+Ci08IS0tRU5USVRZ
IG90aWxkZSAiJiN4RjU7Ii0tPgotPCEtLUVOVElUWSBvdW1sICImI3hGNjsiLS0+Ci08IS0tRU5U
SVRZIGRpdmlkZSAiJiN4Rjc7Ii0tPgotPCEtLUVOVElUWSBkaXYgIiYjeEY3OyItLT4KLTwhLS1F
TlRJVFkgb3NsYXNoICImI3hGODsiLS0+Ci08IS0tRU5USVRZIHVncmF2ZSAiJiN4Rjk7Ii0tPgot
PCEtLUVOVElUWSB1YWN1dGUgIiYjeEZBOyItLT4KLTwhLS1FTlRJVFkgdWNpcmMgIiYjeEZCOyIt
LT4KLTwhLS1FTlRJVFkgdXVtbCAiJiN4RkM7Ii0tPgotPCEtLUVOVElUWSB5YWN1dGUgIiYjeEZE
OyItLT4KLTwhLS1FTlRJVFkgdGhvcm4gIiYjeEZFOyItLT4KLTwhLS1FTlRJVFkgeXVtbCAiJiN4
RkY7Ii0tPgotPCEtLUVOVElUWSBBbWFjciAiJiN4MTAwOyItLT4KLTwhLS1FTlRJVFkgYW1hY3Ig
IiYjeDEwMTsiLS0+Ci08IS0tRU5USVRZIEFicmV2ZSAiJiN4MTAyOyItLT4KLTwhLS1FTlRJVFkg
YWJyZXZlICImI3gxMDM7Ii0tPgotPCEtLUVOVElUWSBBb2dvbiAiJiN4MTA0OyItLT4KLTwhLS1F
TlRJVFkgYW9nb24gIiYjeDEwNTsiLS0+Ci08IS0tRU5USVRZIENhY3V0ZSAiJiN4MTA2OyItLT4K
LTwhLS1FTlRJVFkgY2FjdXRlICImI3gxMDc7Ii0tPgotPCEtLUVOVElUWSBDY2lyYyAiJiN4MTA4
OyItLT4KLTwhLS1FTlRJVFkgY2NpcmMgIiYjeDEwOTsiLS0+Ci08IS0tRU5USVRZIENkb3QgIiYj
eDEwQTsiLS0+Ci08IS0tRU5USVRZIGNkb3QgIiYjeDEwQjsiLS0+Ci08IS0tRU5USVRZIENjYXJv
biAiJiN4MTBDOyItLT4KLTwhLS1FTlRJVFkgY2Nhcm9uICImI3gxMEQ7Ii0tPgotPCEtLUVOVElU
WSBEY2Fyb24gIiYjeDEwRTsiLS0+Ci08IS0tRU5USVRZIGRjYXJvbiAiJiN4MTBGOyItLT4KLTwh
LS1FTlRJVFkgRHN0cm9rICImI3gxMTA7Ii0tPgotPCEtLUVOVElUWSBkc3Ryb2sgIiYjeDExMTsi
LS0+Ci08IS0tRU5USVRZIEVtYWNyICImI3gxMTI7Ii0tPgotPCEtLUVOVElUWSBlbWFjciAiJiN4
MTEzOyItLT4KLTwhLS1FTlRJVFkgRWRvdCAiJiN4MTE2OyItLT4KLTwhLS1FTlRJVFkgZWRvdCAi
JiN4MTE3OyItLT4KLTwhLS1FTlRJVFkgRW9nb24gIiYjeDExODsiLS0+Ci08IS0tRU5USVRZIGVv
Z29uICImI3gxMTk7Ii0tPgotPCEtLUVOVElUWSBFY2Fyb24gIiYjeDExQTsiLS0+Ci08IS0tRU5U
SVRZIGVjYXJvbiAiJiN4MTFCOyItLT4KLTwhLS1FTlRJVFkgR2NpcmMgIiYjeDExQzsiLS0+Ci08
IS0tRU5USVRZIGdjaXJjICImI3gxMUQ7Ii0tPgotPCEtLUVOVElUWSBHYnJldmUgIiYjeDExRTsi
LS0+Ci08IS0tRU5USVRZIGdicmV2ZSAiJiN4MTFGOyItLT4KLTwhLS1FTlRJVFkgR2RvdCAiJiN4
MTIwOyItLT4KLTwhLS1FTlRJVFkgZ2RvdCAiJiN4MTIxOyItLT4KLTwhLS1FTlRJVFkgR2NlZGls
ICImI3gxMjI7Ii0tPgotPCEtLUVOVElUWSBIY2lyYyAiJiN4MTI0OyItLT4KLTwhLS1FTlRJVFkg
aGNpcmMgIiYjeDEyNTsiLS0+Ci08IS0tRU5USVRZIEhzdHJvayAiJiN4MTI2OyItLT4KLTwhLS1F
TlRJVFkgaHN0cm9rICImI3gxMjc7Ii0tPgotPCEtLUVOVElUWSBJdGlsZGUgIiYjeDEyODsiLS0+
Ci08IS0tRU5USVRZIGl0aWxkZSAiJiN4MTI5OyItLT4KLTwhLS1FTlRJVFkgSW1hY3IgIiYjeDEy
QTsiLS0+Ci08IS0tRU5USVRZIGltYWNyICImI3gxMkI7Ii0tPgotPCEtLUVOVElUWSBJb2dvbiAi
JiN4MTJFOyItLT4KLTwhLS1FTlRJVFkgaW9nb24gIiYjeDEyRjsiLS0+Ci08IS0tRU5USVRZIElk
b3QgIiYjeDEzMDsiLS0+Ci08IS0tRU5USVRZIGltYXRoICImI3gxMzE7Ii0tPgotPCEtLUVOVElU
WSBpbm9kb3QgIiYjeDEzMTsiLS0+Ci08IS0tRU5USVRZIElKbGlnICImI3gxMzI7Ii0tPgotPCEt
LUVOVElUWSBpamxpZyAiJiN4MTMzOyItLT4KLTwhLS1FTlRJVFkgSmNpcmMgIiYjeDEzNDsiLS0+
Ci08IS0tRU5USVRZIGpjaXJjICImI3gxMzU7Ii0tPgotPCEtLUVOVElUWSBLY2VkaWwgIiYjeDEz
NjsiLS0+Ci08IS0tRU5USVRZIGtjZWRpbCAiJiN4MTM3OyItLT4KLTwhLS1FTlRJVFkga2dyZWVu
ICImI3gxMzg7Ii0tPgotPCEtLUVOVElUWSBMYWN1dGUgIiYjeDEzOTsiLS0+Ci08IS0tRU5USVRZ
IGxhY3V0ZSAiJiN4MTNBOyItLT4KLTwhLS1FTlRJVFkgTGNlZGlsICImI3gxM0I7Ii0tPgotPCEt
LUVOVElUWSBsY2VkaWwgIiYjeDEzQzsiLS0+Ci08IS0tRU5USVRZIExjYXJvbiAiJiN4MTNEOyIt
LT4KLTwhLS1FTlRJVFkgbGNhcm9uICImI3gxM0U7Ii0tPgotPCEtLUVOVElUWSBMbWlkb3QgIiYj
eDEzRjsiLS0+Ci08IS0tRU5USVRZIGxtaWRvdCAiJiN4MTQwOyItLT4KLTwhLS1FTlRJVFkgTHN0
cm9rICImI3gxNDE7Ii0tPgotPCEtLUVOVElUWSBsc3Ryb2sgIiYjeDE0MjsiLS0+Ci08IS0tRU5U
SVRZIE5hY3V0ZSAiJiN4MTQzOyItLT4KLTwhLS1FTlRJVFkgbmFjdXRlICImI3gxNDQ7Ii0tPgot
PCEtLUVOVElUWSBOY2VkaWwgIiYjeDE0NTsiLS0+Ci08IS0tRU5USVRZIG5jZWRpbCAiJiN4MTQ2
OyItLT4KLTwhLS1FTlRJVFkgTmNhcm9uICImI3gxNDc7Ii0tPgotPCEtLUVOVElUWSBuY2Fyb24g
IiYjeDE0ODsiLS0+Ci08IS0tRU5USVRZIG5hcG9zICImI3gxNDk7Ii0tPgotPCEtLUVOVElUWSBF
TkcgIiYjeDE0QTsiLS0+Ci08IS0tRU5USVRZIGVuZyAiJiN4MTRCOyItLT4KLTwhLS1FTlRJVFkg
T21hY3IgIiYjeDE0QzsiLS0+Ci08IS0tRU5USVRZIG9tYWNyICImI3gxNEQ7Ii0tPgotPCEtLUVO
VElUWSBPZGJsYWMgIiYjeDE1MDsiLS0+Ci08IS0tRU5USVRZIG9kYmxhYyAiJiN4MTUxOyItLT4K
LTwhLS1FTlRJVFkgT0VsaWcgIiYjeDE1MjsiLS0+Ci08IS0tRU5USVRZIG9lbGlnICImI3gxNTM7
Ii0tPgotPCEtLUVOVElUWSBSYWN1dGUgIiYjeDE1NDsiLS0+Ci08IS0tRU5USVRZIHJhY3V0ZSAi
JiN4MTU1OyItLT4KLTwhLS1FTlRJVFkgUmNlZGlsICImI3gxNTY7Ii0tPgotPCEtLUVOVElUWSBy
Y2VkaWwgIiYjeDE1NzsiLS0+Ci08IS0tRU5USVRZIFJjYXJvbiAiJiN4MTU4OyItLT4KLTwhLS1F
TlRJVFkgcmNhcm9uICImI3gxNTk7Ii0tPgotPCEtLUVOVElUWSBTYWN1dGUgIiYjeDE1QTsiLS0+
Ci08IS0tRU5USVRZIHNhY3V0ZSAiJiN4MTVCOyItLT4KLTwhLS1FTlRJVFkgU2NpcmMgIiYjeDE1
QzsiLS0+Ci08IS0tRU5USVRZIHNjaXJjICImI3gxNUQ7Ii0tPgotPCEtLUVOVElUWSBTY2VkaWwg
IiYjeDE1RTsiLS0+Ci08IS0tRU5USVRZIHNjZWRpbCAiJiN4MTVGOyItLT4KLTwhLS1FTlRJVFkg
U2Nhcm9uICImI3gxNjA7Ii0tPgotPCEtLUVOVElUWSBzY2Fyb24gIiYjeDE2MTsiLS0+Ci08IS0t
RU5USVRZIFRjZWRpbCAiJiN4MTYyOyItLT4KLTwhLS1FTlRJVFkgdGNlZGlsICImI3gxNjM7Ii0t
PgotPCEtLUVOVElUWSBUY2Fyb24gIiYjeDE2NDsiLS0+Ci08IS0tRU5USVRZIHRjYXJvbiAiJiN4
MTY1OyItLT4KLTwhLS1FTlRJVFkgVHN0cm9rICImI3gxNjY7Ii0tPgotPCEtLUVOVElUWSB0c3Ry
b2sgIiYjeDE2NzsiLS0+Ci08IS0tRU5USVRZIFV0aWxkZSAiJiN4MTY4OyItLT4KLTwhLS1FTlRJ
VFkgdXRpbGRlICImI3gxNjk7Ii0tPgotPCEtLUVOVElUWSBVbWFjciAiJiN4MTZBOyItLT4KLTwh
LS1FTlRJVFkgdW1hY3IgIiYjeDE2QjsiLS0+Ci08IS0tRU5USVRZIFVicmV2ZSAiJiN4MTZDOyIt
LT4KLTwhLS1FTlRJVFkgdWJyZXZlICImI3gxNkQ7Ii0tPgotPCEtLUVOVElUWSBVcmluZyAiJiN4
MTZFOyItLT4KLTwhLS1FTlRJVFkgdXJpbmcgIiYjeDE2RjsiLS0+Ci08IS0tRU5USVRZIFVkYmxh
YyAiJiN4MTcwOyItLT4KLTwhLS1FTlRJVFkgdWRibGFjICImI3gxNzE7Ii0tPgotPCEtLUVOVElU
WSBVb2dvbiAiJiN4MTcyOyItLT4KLTwhLS1FTlRJVFkgdW9nb24gIiYjeDE3MzsiLS0+Ci08IS0t
RU5USVRZIFdjaXJjICImI3gxNzQ7Ii0tPgotPCEtLUVOVElUWSB3Y2lyYyAiJiN4MTc1OyItLT4K
LTwhLS1FTlRJVFkgWWNpcmMgIiYjeDE3NjsiLS0+Ci08IS0tRU5USVRZIHljaXJjICImI3gxNzc7
Ii0tPgotPCEtLUVOVElUWSBZdW1sICImI3gxNzg7Ii0tPgotPCEtLUVOVElUWSBaYWN1dGUgIiYj
eDE3OTsiLS0+Ci08IS0tRU5USVRZIHphY3V0ZSAiJiN4MTdBOyItLT4KLTwhLS1FTlRJVFkgWmRv
dCAiJiN4MTdCOyItLT4KLTwhLS1FTlRJVFkgemRvdCAiJiN4MTdDOyItLT4KLTwhLS1FTlRJVFkg
WmNhcm9uICImI3gxN0Q7Ii0tPgotPCEtLUVOVElUWSB6Y2Fyb24gIiYjeDE3RTsiLS0+Ci08IS0t
RU5USVRZIGZub2YgIiYjeDE5MjsiLS0+Ci08IS0tRU5USVRZIGltcGVkICImI3gxQjU7Ii0tPgot
PCEtLUVOVElUWSBnYWN1dGUgIiYjeDFGNTsiLS0+Ci08IS0tRU5USVRZIGptYXRoICImI3gyMzc7
Ii0tPgotPCEtLUVOVElUWSBjaXJjICImI3gyQzY7Ii0tPgotPCEtLUVOVElUWSBjYXJvbiAiJiN4
MkM3OyItLT4KLTwhLS1FTlRJVFkgSGFjZWsgIiYjeDJDNzsiLS0+Ci08IS0tRU5USVRZIGJyZXZl
ICImI3gyRDg7Ii0tPgotPCEtLUVOVElUWSBCcmV2ZSAiJiN4MkQ4OyItLT4KLTwhLS1FTlRJVFkg
ZG90ICImI3gyRDk7Ii0tPgotPCEtLUVOVElUWSBEaWFjcml0aWNhbERvdCAiJiN4MkQ5OyItLT4K
LTwhLS1FTlRJVFkgcmluZyAiJiN4MkRBOyItLT4KLTwhLS1FTlRJVFkgb2dvbiAiJiN4MkRCOyIt
LT4KLTwhLS1FTlRJVFkgdGlsZGUgIiYjeDJEQzsiLS0+Ci08IS0tRU5USVRZIERpYWNyaXRpY2Fs
VGlsZGUgIiYjeDJEQzsiLS0+Ci08IS0tRU5USVRZIGRibGFjICImI3gyREQ7Ii0tPgotPCEtLUVO
VElUWSBEaWFjcml0aWNhbERvdWJsZUFjdXRlICImI3gyREQ7Ii0tPgotPCEtLUVOVElUWSBEb3du
QnJldmUgIiYjeDMxMTsiLS0+Ci08IS0tRU5USVRZIEFscGhhICImI3gzOTE7Ii0tPgotPCEtLUVO
VElUWSBCZXRhICImI3gzOTI7Ii0tPgotPCEtLUVOVElUWSBHYW1tYSAiJiN4MzkzOyItLT4KLTwh
LS1FTlRJVFkgRGVsdGEgIiYjeDM5NDsiLS0+Ci08IS0tRU5USVRZIEVwc2lsb24gIiYjeDM5NTsi
LS0+Ci08IS0tRU5USVRZIFpldGEgIiYjeDM5NjsiLS0+Ci08IS0tRU5USVRZIEV0YSAiJiN4Mzk3
OyItLT4KLTwhLS1FTlRJVFkgVGhldGEgIiYjeDM5ODsiLS0+Ci08IS0tRU5USVRZIElvdGEgIiYj
eDM5OTsiLS0+Ci08IS0tRU5USVRZIEthcHBhICImI3gzOUE7Ii0tPgotPCEtLUVOVElUWSBMYW1i
ZGEgIiYjeDM5QjsiLS0+Ci08IS0tRU5USVRZIE11ICImI3gzOUM7Ii0tPgotPCEtLUVOVElUWSBO
dSAiJiN4MzlEOyItLT4KLTwhLS1FTlRJVFkgWGkgIiYjeDM5RTsiLS0+Ci08IS0tRU5USVRZIE9t
aWNyb24gIiYjeDM5RjsiLS0+Ci08IS0tRU5USVRZIFBpICImI3gzQTA7Ii0tPgotPCEtLUVOVElU
WSBSaG8gIiYjeDNBMTsiLS0+Ci08IS0tRU5USVRZIFNpZ21hICImI3gzQTM7Ii0tPgotPCEtLUVO
VElUWSBUYXUgIiYjeDNBNDsiLS0+Ci08IS0tRU5USVRZIFVwc2lsb24gIiYjeDNBNTsiLS0+Ci08
IS0tRU5USVRZIFBoaSAiJiN4M0E2OyItLT4KLTwhLS1FTlRJVFkgQ2hpICImI3gzQTc7Ii0tPgot
PCEtLUVOVElUWSBQc2kgIiYjeDNBODsiLS0+Ci08IS0tRU5USVRZIE9tZWdhICImI3gzQTk7Ii0t
PgotPCEtLUVOVElUWSBvaG0gIiYjeDNBOTsiLS0+Ci08IS0tRU5USVRZIGFscGhhICImI3gzQjE7
Ii0tPgotPCEtLUVOVElUWSBiZXRhICImI3gzQjI7Ii0tPgotPCEtLUVOVElUWSBnYW1tYSAiJiN4
M0IzOyItLT4KLTwhLS1FTlRJVFkgZGVsdGEgIiYjeDNCNDsiLS0+Ci08IS0tRU5USVRZIGVwc2kg
IiYjeDNCNTsiLS0+Ci08IS0tRU5USVRZIGVwc2lsb24gIiYjeDNCNTsiLS0+Ci08IS0tRU5USVRZ
IHpldGEgIiYjeDNCNjsiLS0+Ci08IS0tRU5USVRZIGV0YSAiJiN4M0I3OyItLT4KLTwhLS1FTlRJ
VFkgdGhldGEgIiYjeDNCODsiLS0+Ci08IS0tRU5USVRZIGlvdGEgIiYjeDNCOTsiLS0+Ci08IS0t
RU5USVRZIGthcHBhICImI3gzQkE7Ii0tPgotPCEtLUVOVElUWSBsYW1iZGEgIiYjeDNCQjsiLS0+
Ci08IS0tRU5USVRZIG11ICImI3gzQkM7Ii0tPgotPCEtLUVOVElUWSBudSAiJiN4M0JEOyItLT4K
LTwhLS1FTlRJVFkgeGkgIiYjeDNCRTsiLS0+Ci08IS0tRU5USVRZIG9taWNyb24gIiYjeDNCRjsi
LS0+Ci08IS0tRU5USVRZIHBpICImI3gzQzA7Ii0tPgotPCEtLUVOVElUWSByaG8gIiYjeDNDMTsi
LS0+Ci08IS0tRU5USVRZIHNpZ21hdiAiJiN4M0MyOyItLT4KLTwhLS1FTlRJVFkgdmFyc2lnbWEg
IiYjeDNDMjsiLS0+Ci08IS0tRU5USVRZIHNpZ21hZiAiJiN4M0MyOyItLT4KLTwhLS1FTlRJVFkg
c2lnbWEgIiYjeDNDMzsiLS0+Ci08IS0tRU5USVRZIHRhdSAiJiN4M0M0OyItLT4KLTwhLS1FTlRJ
VFkgdXBzaSAiJiN4M0M1OyItLT4KLTwhLS1FTlRJVFkgdXBzaWxvbiAiJiN4M0M1OyItLT4KLTwh
LS1FTlRJVFkgcGhpICImI3gzQzY7Ii0tPgotPCEtLUVOVElUWSBjaGkgIiYjeDNDNzsiLS0+Ci08
IS0tRU5USVRZIHBzaSAiJiN4M0M4OyItLT4KLTwhLS1FTlRJVFkgb21lZ2EgIiYjeDNDOTsiLS0+
Ci08IS0tRU5USVRZIHRoZXRhdiAiJiN4M0QxOyItLT4KLTwhLS1FTlRJVFkgdmFydGhldGEgIiYj
eDNEMTsiLS0+Ci08IS0tRU5USVRZIHRoZXRhc3ltICImI3gzRDE7Ii0tPgotPCEtLUVOVElUWSBV
cHNpICImI3gzRDI7Ii0tPgotPCEtLUVOVElUWSB1cHNpaCAiJiN4M0QyOyItLT4KLTwhLS1FTlRJ
VFkgc3RyYWlnaHRwaGkgIiYjeDNENTsiLS0+Ci08IS0tRU5USVRZIHBoaXYgIiYjeDNENTsiLS0+
Ci08IS0tRU5USVRZIHZhcnBoaSAiJiN4M0Q1OyItLT4KLTwhLS1FTlRJVFkgcGl2ICImI3gzRDY7
Ii0tPgotPCEtLUVOVElUWSB2YXJwaSAiJiN4M0Q2OyItLT4KLTwhLS1FTlRJVFkgR2FtbWFkICIm
I3gzREM7Ii0tPgotPCEtLUVOVElUWSBnYW1tYWQgIiYjeDNERDsiLS0+Ci08IS0tRU5USVRZIGRp
Z2FtbWEgIiYjeDNERDsiLS0+Ci08IS0tRU5USVRZIGthcHBhdiAiJiN4M0YwOyItLT4KLTwhLS1F
TlRJVFkgdmFya2FwcGEgIiYjeDNGMDsiLS0+Ci08IS0tRU5USVRZIHJob3YgIiYjeDNGMTsiLS0+
Ci08IS0tRU5USVRZIHZhcnJobyAiJiN4M0YxOyItLT4KLTwhLS1FTlRJVFkgZXBzaXYgIiYjeDNG
NTsiLS0+Ci08IS0tRU5USVRZIHN0cmFpZ2h0ZXBzaWxvbiAiJiN4M0Y1OyItLT4KLTwhLS1FTlRJ
VFkgdmFyZXBzaWxvbiAiJiN4M0Y1OyItLT4KLTwhLS1FTlRJVFkgYmVwc2kgIiYjeDNGNjsiLS0+
Ci08IS0tRU5USVRZIGJhY2tlcHNpbG9uICImI3gzRjY7Ii0tPgotPCEtLUVOVElUWSBJT2N5ICIm
I3g0MDE7Ii0tPgotPCEtLUVOVElUWSBESmN5ICImI3g0MDI7Ii0tPgotPCEtLUVOVElUWSBHSmN5
ICImI3g0MDM7Ii0tPgotPCEtLUVOVElUWSBKdWtjeSAiJiN4NDA0OyItLT4KLTwhLS1FTlRJVFkg
RFNjeSAiJiN4NDA1OyItLT4KLTwhLS1FTlRJVFkgSXVrY3kgIiYjeDQwNjsiLS0+Ci08IS0tRU5U
SVRZIFlJY3kgIiYjeDQwNzsiLS0+Ci08IS0tRU5USVRZIEpzZXJjeSAiJiN4NDA4OyItLT4KLTwh
LS1FTlRJVFkgTEpjeSAiJiN4NDA5OyItLT4KLTwhLS1FTlRJVFkgTkpjeSAiJiN4NDBBOyItLT4K
LTwhLS1FTlRJVFkgVFNIY3kgIiYjeDQwQjsiLS0+Ci08IS0tRU5USVRZIEtKY3kgIiYjeDQwQzsi
LS0+Ci08IS0tRU5USVRZIFVicmN5ICImI3g0MEU7Ii0tPgotPCEtLUVOVElUWSBEWmN5ICImI3g0
MEY7Ii0tPgotPCEtLUVOVElUWSBBY3kgIiYjeDQxMDsiLS0+Ci08IS0tRU5USVRZIEJjeSAiJiN4
NDExOyItLT4KLTwhLS1FTlRJVFkgVmN5ICImI3g0MTI7Ii0tPgotPCEtLUVOVElUWSBHY3kgIiYj
eDQxMzsiLS0+Ci08IS0tRU5USVRZIERjeSAiJiN4NDE0OyItLT4KLTwhLS1FTlRJVFkgSUVjeSAi
JiN4NDE1OyItLT4KLTwhLS1FTlRJVFkgWkhjeSAiJiN4NDE2OyItLT4KLTwhLS1FTlRJVFkgWmN5
ICImI3g0MTc7Ii0tPgotPCEtLUVOVElUWSBJY3kgIiYjeDQxODsiLS0+Ci08IS0tRU5USVRZIEpj
eSAiJiN4NDE5OyItLT4KLTwhLS1FTlRJVFkgS2N5ICImI3g0MUE7Ii0tPgotPCEtLUVOVElUWSBM
Y3kgIiYjeDQxQjsiLS0+Ci08IS0tRU5USVRZIE1jeSAiJiN4NDFDOyItLT4KLTwhLS1FTlRJVFkg
TmN5ICImI3g0MUQ7Ii0tPgotPCEtLUVOVElUWSBPY3kgIiYjeDQxRTsiLS0+Ci08IS0tRU5USVRZ
IFBjeSAiJiN4NDFGOyItLT4KLTwhLS1FTlRJVFkgUmN5ICImI3g0MjA7Ii0tPgotPCEtLUVOVElU
WSBTY3kgIiYjeDQyMTsiLS0+Ci08IS0tRU5USVRZIFRjeSAiJiN4NDIyOyItLT4KLTwhLS1FTlRJ
VFkgVWN5ICImI3g0MjM7Ii0tPgotPCEtLUVOVElUWSBGY3kgIiYjeDQyNDsiLS0+Ci08IS0tRU5U
SVRZIEtIY3kgIiYjeDQyNTsiLS0+Ci08IS0tRU5USVRZIFRTY3kgIiYjeDQyNjsiLS0+Ci08IS0t
RU5USVRZIENIY3kgIiYjeDQyNzsiLS0+Ci08IS0tRU5USVRZIFNIY3kgIiYjeDQyODsiLS0+Ci08
IS0tRU5USVRZIFNIQ0hjeSAiJiN4NDI5OyItLT4KLTwhLS1FTlRJVFkgSEFSRGN5ICImI3g0MkE7
Ii0tPgotPCEtLUVOVElUWSBZY3kgIiYjeDQyQjsiLS0+Ci08IS0tRU5USVRZIFNPRlRjeSAiJiN4
NDJDOyItLT4KLTwhLS1FTlRJVFkgRWN5ICImI3g0MkQ7Ii0tPgotPCEtLUVOVElUWSBZVWN5ICIm
I3g0MkU7Ii0tPgotPCEtLUVOVElUWSBZQWN5ICImI3g0MkY7Ii0tPgotPCEtLUVOVElUWSBhY3kg
IiYjeDQzMDsiLS0+Ci08IS0tRU5USVRZIGJjeSAiJiN4NDMxOyItLT4KLTwhLS1FTlRJVFkgdmN5
ICImI3g0MzI7Ii0tPgotPCEtLUVOVElUWSBnY3kgIiYjeDQzMzsiLS0+Ci08IS0tRU5USVRZIGRj
eSAiJiN4NDM0OyItLT4KLTwhLS1FTlRJVFkgaWVjeSAiJiN4NDM1OyItLT4KLTwhLS1FTlRJVFkg
emhjeSAiJiN4NDM2OyItLT4KLTwhLS1FTlRJVFkgemN5ICImI3g0Mzc7Ii0tPgotPCEtLUVOVElU
WSBpY3kgIiYjeDQzODsiLS0+Ci08IS0tRU5USVRZIGpjeSAiJiN4NDM5OyItLT4KLTwhLS1FTlRJ
VFkga2N5ICImI3g0M0E7Ii0tPgotPCEtLUVOVElUWSBsY3kgIiYjeDQzQjsiLS0+Ci08IS0tRU5U
SVRZIG1jeSAiJiN4NDNDOyItLT4KLTwhLS1FTlRJVFkgbmN5ICImI3g0M0Q7Ii0tPgotPCEtLUVO
VElUWSBvY3kgIiYjeDQzRTsiLS0+Ci08IS0tRU5USVRZIHBjeSAiJiN4NDNGOyItLT4KLTwhLS1F
TlRJVFkgcmN5ICImI3g0NDA7Ii0tPgotPCEtLUVOVElUWSBzY3kgIiYjeDQ0MTsiLS0+Ci08IS0t
RU5USVRZIHRjeSAiJiN4NDQyOyItLT4KLTwhLS1FTlRJVFkgdWN5ICImI3g0NDM7Ii0tPgotPCEt
LUVOVElUWSBmY3kgIiYjeDQ0NDsiLS0+Ci08IS0tRU5USVRZIGtoY3kgIiYjeDQ0NTsiLS0+Ci08
IS0tRU5USVRZIHRzY3kgIiYjeDQ0NjsiLS0+Ci08IS0tRU5USVRZIGNoY3kgIiYjeDQ0NzsiLS0+
Ci08IS0tRU5USVRZIHNoY3kgIiYjeDQ0ODsiLS0+Ci08IS0tRU5USVRZIHNoY2hjeSAiJiN4NDQ5
OyItLT4KLTwhLS1FTlRJVFkgaGFyZGN5ICImI3g0NEE7Ii0tPgotPCEtLUVOVElUWSB5Y3kgIiYj
eDQ0QjsiLS0+Ci08IS0tRU5USVRZIHNvZnRjeSAiJiN4NDRDOyItLT4KLTwhLS1FTlRJVFkgZWN5
ICImI3g0NEQ7Ii0tPgotPCEtLUVOVElUWSB5dWN5ICImI3g0NEU7Ii0tPgotPCEtLUVOVElUWSB5
YWN5ICImI3g0NEY7Ii0tPgotPCEtLUVOVElUWSBpb2N5ICImI3g0NTE7Ii0tPgotPCEtLUVOVElU
WSBkamN5ICImI3g0NTI7Ii0tPgotPCEtLUVOVElUWSBnamN5ICImI3g0NTM7Ii0tPgotPCEtLUVO
VElUWSBqdWtjeSAiJiN4NDU0OyItLT4KLTwhLS1FTlRJVFkgZHNjeSAiJiN4NDU1OyItLT4KLTwh
LS1FTlRJVFkgaXVrY3kgIiYjeDQ1NjsiLS0+Ci08IS0tRU5USVRZIHlpY3kgIiYjeDQ1NzsiLS0+
Ci08IS0tRU5USVRZIGpzZXJjeSAiJiN4NDU4OyItLT4KLTwhLS1FTlRJVFkgbGpjeSAiJiN4NDU5
OyItLT4KLTwhLS1FTlRJVFkgbmpjeSAiJiN4NDVBOyItLT4KLTwhLS1FTlRJVFkgdHNoY3kgIiYj
eDQ1QjsiLS0+Ci08IS0tRU5USVRZIGtqY3kgIiYjeDQ1QzsiLS0+Ci08IS0tRU5USVRZIHVicmN5
ICImI3g0NUU7Ii0tPgotPCEtLUVOVElUWSBkemN5ICImI3g0NUY7Ii0tPgotPCEtLUVOVElUWSBl
bnNwICImI3gyMDAyOyItLT4KLTwhLS1FTlRJVFkgZW1zcCAiJiN4MjAwMzsiLS0+Ci08IS0tRU5U
SVRZIGVtc3AxMyAiJiN4MjAwNDsiLS0+Ci08IS0tRU5USVRZIGVtc3AxNCAiJiN4MjAwNTsiLS0+
Ci08IS0tRU5USVRZIG51bXNwICImI3gyMDA3OyItLT4KLTwhLS1FTlRJVFkgcHVuY3NwICImI3gy
MDA4OyItLT4KLTwhLS1FTlRJVFkgdGhpbnNwICImI3gyMDA5OyItLT4KLTwhLS1FTlRJVFkgVGhp
blNwYWNlICImI3gyMDA5OyItLT4KLTwhLS1FTlRJVFkgaGFpcnNwICImI3gyMDBBOyItLT4KLTwh
LS1FTlRJVFkgVmVyeVRoaW5TcGFjZSAiJiN4MjAwQTsiLS0+Ci08IS0tRU5USVRZIFplcm9XaWR0
aFNwYWNlICImI3gyMDBCOyItLT4KLTwhLS1FTlRJVFkgTmVnYXRpdmVWZXJ5VGhpblNwYWNlICIm
I3gyMDBCOyItLT4KLTwhLS1FTlRJVFkgTmVnYXRpdmVUaGluU3BhY2UgIiYjeDIwMEI7Ii0tPgot
PCEtLUVOVElUWSBOZWdhdGl2ZU1lZGl1bVNwYWNlICImI3gyMDBCOyItLT4KLTwhLS1FTlRJVFkg
TmVnYXRpdmVUaGlja1NwYWNlICImI3gyMDBCOyItLT4KLTwhLS1FTlRJVFkgenduaiAiJiN4MjAw
QzsiLS0+Ci08IS0tRU5USVRZIHp3aiAiJiN4MjAwRDsiLS0+Ci08IS0tRU5USVRZIGxybSAiJiN4
MjAwRTsiLS0+Ci08IS0tRU5USVRZIHJsbSAiJiN4MjAwRjsiLS0+Ci08IS0tRU5USVRZIGh5cGhl
biAiJiN4MjAxMDsiLS0+Ci08IS0tRU5USVRZIGRhc2ggIiYjeDIwMTA7Ii0tPgotPCEtLUVOVElU
WSBuZGFzaCAiJiN4MjAxMzsiLS0+Ci08IS0tRU5USVRZIG1kYXNoICImI3gyMDE0OyItLT4KLTwh
LS1FTlRJVFkgaG9yYmFyICImI3gyMDE1OyItLT4KLTwhLS1FTlRJVFkgVmVyYmFyICImI3gyMDE2
OyItLT4KLTwhLS1FTlRJVFkgVmVydCAiJiN4MjAxNjsiLS0+Ci08IS0tRU5USVRZIGxzcXVvICIm
I3gyMDE4OyItLT4KLTwhLS1FTlRJVFkgT3BlbkN1cmx5UXVvdGUgIiYjeDIwMTg7Ii0tPgotPCEt
LUVOVElUWSByc3F1byAiJiN4MjAxOTsiLS0+Ci08IS0tRU5USVRZIHJzcXVvciAiJiN4MjAxOTsi
LS0+Ci08IS0tRU5USVRZIENsb3NlQ3VybHlRdW90ZSAiJiN4MjAxOTsiLS0+Ci08IS0tRU5USVRZ
IGxzcXVvciAiJiN4MjAxQTsiLS0+Ci08IS0tRU5USVRZIHNicXVvICImI3gyMDFBOyItLT4KLTwh
LS1FTlRJVFkgbGRxdW8gIiYjeDIwMUM7Ii0tPgotPCEtLUVOVElUWSBPcGVuQ3VybHlEb3VibGVR
dW90ZSAiJiN4MjAxQzsiLS0+Ci08IS0tRU5USVRZIHJkcXVvICImI3gyMDFEOyItLT4KLTwhLS1F
TlRJVFkgcmRxdW9yICImI3gyMDFEOyItLT4KLTwhLS1FTlRJVFkgQ2xvc2VDdXJseURvdWJsZVF1
b3RlICImI3gyMDFEOyItLT4KLTwhLS1FTlRJVFkgbGRxdW9yICImI3gyMDFFOyItLT4KLTwhLS1F
TlRJVFkgYmRxdW8gIiYjeDIwMUU7Ii0tPgotPCEtLUVOVElUWSBkYWdnZXIgIiYjeDIwMjA7Ii0t
PgotPCEtLUVOVElUWSBEYWdnZXIgIiYjeDIwMjE7Ii0tPgotPCEtLUVOVElUWSBkZGFnZ2VyICIm
I3gyMDIxOyItLT4KLTwhLS1FTlRJVFkgYnVsbCAiJiN4MjAyMjsiLS0+Ci08IS0tRU5USVRZIGJ1
bGxldCAiJiN4MjAyMjsiLS0+Ci08IS0tRU5USVRZIG5sZHIgIiYjeDIwMjU7Ii0tPgotPCEtLUVO
VElUWSBoZWxsaXAgIiYjeDIwMjY7Ii0tPgotPCEtLUVOVElUWSBtbGRyICImI3gyMDI2OyItLT4K
LTwhLS1FTlRJVFkgcGVybWlsICImI3gyMDMwOyItLT4KLTwhLS1FTlRJVFkgcGVydGVuayAiJiN4
MjAzMTsiLS0+Ci08IS0tRU5USVRZIHByaW1lICImI3gyMDMyOyItLT4KLTwhLS1FTlRJVFkgUHJp
bWUgIiYjeDIwMzM7Ii0tPgotPCEtLUVOVElUWSB0cHJpbWUgIiYjeDIwMzQ7Ii0tPgotPCEtLUVO
VElUWSBicHJpbWUgIiYjeDIwMzU7Ii0tPgotPCEtLUVOVElUWSBiYWNrcHJpbWUgIiYjeDIwMzU7
Ii0tPgotPCEtLUVOVElUWSBsc2FxdW8gIiYjeDIwMzk7Ii0tPgotPCEtLUVOVElUWSByc2FxdW8g
IiYjeDIwM0E7Ii0tPgotPCEtLUVOVElUWSBvbGluZSAiJiN4MjAzRTsiLS0+Ci08IS0tRU5USVRZ
IE92ZXJCYXIgIiYjeDIwM0U7Ii0tPgotPCEtLUVOVElUWSBjYXJldCAiJiN4MjA0MTsiLS0+Ci08
IS0tRU5USVRZIGh5YnVsbCAiJiN4MjA0MzsiLS0+Ci08IS0tRU5USVRZIGZyYXNsICImI3gyMDQ0
OyItLT4KLTwhLS1FTlRJVFkgYnNlbWkgIiYjeDIwNEY7Ii0tPgotPCEtLUVOVElUWSBxcHJpbWUg
IiYjeDIwNTc7Ii0tPgotPCEtLUVOVElUWSBNZWRpdW1TcGFjZSAiJiN4MjA1RjsiLS0+Ci08IS0t
RU5USVRZIFRoaWNrU3BhY2UgIiYjeDIwNUY7JiN4MjAwQTsiLS0+Ci08IS0tRU5USVRZIE5vQnJl
YWsgIiYjeDIwNjA7Ii0tPgotPCEtLUVOVElUWSBBcHBseUZ1bmN0aW9uICImI3gyMDYxOyItLT4K
LTwhLS1FTlRJVFkgYWYgIiYjeDIwNjE7Ii0tPgotPCEtLUVOVElUWSBJbnZpc2libGVUaW1lcyAi
JiN4MjA2MjsiLS0+Ci08IS0tRU5USVRZIGl0ICImI3gyMDYyOyItLT4KLTwhLS1FTlRJVFkgSW52
aXNpYmxlQ29tbWEgIiYjeDIwNjM7Ii0tPgotPCEtLUVOVElUWSBpYyAiJiN4MjA2MzsiLS0+Ci08
IS0tRU5USVRZIGV1cm8gIiYjeDIwQUM7Ii0tPgotPCEtLUVOVElUWSB0ZG90ICImI3gyMERCOyIt
LT4KLTwhLS1FTlRJVFkgVHJpcGxlRG90ICImI3gyMERCOyItLT4KLTwhLS1FTlRJVFkgRG90RG90
ICImI3gyMERDOyItLT4KLTwhLS1FTlRJVFkgQ29wZiAiJiN4MjEwMjsiLS0+Ci08IS0tRU5USVRZ
IGNvbXBsZXhlcyAiJiN4MjEwMjsiLS0+Ci08IS0tRU5USVRZIGluY2FyZSAiJiN4MjEwNTsiLS0+
Ci08IS0tRU5USVRZIGdzY3IgIiYjeDIxMEE7Ii0tPgotPCEtLUVOVElUWSBoYW1pbHQgIiYjeDIx
MEI7Ii0tPgotPCEtLUVOVElUWSBIaWxiZXJ0U3BhY2UgIiYjeDIxMEI7Ii0tPgotPCEtLUVOVElU
WSBIc2NyICImI3gyMTBCOyItLT4KLTwhLS1FTlRJVFkgSGZyICImI3gyMTBDOyItLT4KLTwhLS1F
TlRJVFkgUG9pbmNhcmVwbGFuZSAiJiN4MjEwQzsiLS0+Ci08IS0tRU5USVRZIHF1YXRlcm5pb25z
ICImI3gyMTBEOyItLT4KLTwhLS1FTlRJVFkgSG9wZiAiJiN4MjEwRDsiLS0+Ci08IS0tRU5USVRZ
IHBsYW5ja2ggIiYjeDIxMEU7Ii0tPgotPCEtLUVOVElUWSBwbGFuY2sgIiYjeDIxMEY7Ii0tPgot
PCEtLUVOVElUWSBoYmFyICImI3gyMTBGOyItLT4KLTwhLS1FTlRJVFkgcGxhbmt2ICImI3gyMTBG
OyItLT4KLTwhLS1FTlRJVFkgaHNsYXNoICImI3gyMTBGOyItLT4KLTwhLS1FTlRJVFkgSXNjciAi
JiN4MjExMDsiLS0+Ci08IS0tRU5USVRZIGltYWdsaW5lICImI3gyMTEwOyItLT4KLTwhLS1FTlRJ
VFkgaW1hZ2UgIiYjeDIxMTE7Ii0tPgotPCEtLUVOVElUWSBJbSAiJiN4MjExMTsiLS0+Ci08IS0t
RU5USVRZIGltYWdwYXJ0ICImI3gyMTExOyItLT4KLTwhLS1FTlRJVFkgSWZyICImI3gyMTExOyIt
LT4KLTwhLS1FTlRJVFkgTHNjciAiJiN4MjExMjsiLS0+Ci08IS0tRU5USVRZIGxhZ3JhbiAiJiN4
MjExMjsiLS0+Ci08IS0tRU5USVRZIExhcGxhY2V0cmYgIiYjeDIxMTI7Ii0tPgotPCEtLUVOVElU
WSBlbGwgIiYjeDIxMTM7Ii0tPgotPCEtLUVOVElUWSBOb3BmICImI3gyMTE1OyItLT4KLTwhLS1F
TlRJVFkgbmF0dXJhbHMgIiYjeDIxMTU7Ii0tPgotPCEtLUVOVElUWSBudW1lcm8gIiYjeDIxMTY7
Ii0tPgotPCEtLUVOVElUWSBjb3B5c3IgIiYjeDIxMTc7Ii0tPgotPCEtLUVOVElUWSB3ZWllcnAg
IiYjeDIxMTg7Ii0tPgotPCEtLUVOVElUWSB3cCAiJiN4MjExODsiLS0+Ci08IS0tRU5USVRZIFBv
cGYgIiYjeDIxMTk7Ii0tPgotPCEtLUVOVElUWSBwcmltZXMgIiYjeDIxMTk7Ii0tPgotPCEtLUVO
VElUWSByYXRpb25hbHMgIiYjeDIxMUE7Ii0tPgotPCEtLUVOVElUWSBRb3BmICImI3gyMTFBOyIt
LT4KLTwhLS1FTlRJVFkgUnNjciAiJiN4MjExQjsiLS0+Ci08IS0tRU5USVRZIHJlYWxpbmUgIiYj
eDIxMUI7Ii0tPgotPCEtLUVOVElUWSByZWFsICImI3gyMTFDOyItLT4KLTwhLS1FTlRJVFkgUmUg
IiYjeDIxMUM7Ii0tPgotPCEtLUVOVElUWSByZWFscGFydCAiJiN4MjExQzsiLS0+Ci08IS0tRU5U
SVRZIFJmciAiJiN4MjExQzsiLS0+Ci08IS0tRU5USVRZIHJlYWxzICImI3gyMTFEOyItLT4KLTwh
LS1FTlRJVFkgUm9wZiAiJiN4MjExRDsiLS0+Ci08IS0tRU5USVRZIHJ4ICImI3gyMTFFOyItLT4K
LTwhLS1FTlRJVFkgdHJhZGUgIiYjeDIxMjI7Ii0tPgotPCEtLUVOVElUWSBUUkFERSAiJiN4MjEy
MjsiLS0+Ci08IS0tRU5USVRZIGludGVnZXJzICImI3gyMTI0OyItLT4KLTwhLS1FTlRJVFkgWm9w
ZiAiJiN4MjEyNDsiLS0+Ci08IS0tRU5USVRZIG1obyAiJiN4MjEyNzsiLS0+Ci08IS0tRU5USVRZ
IFpmciAiJiN4MjEyODsiLS0+Ci08IS0tRU5USVRZIHplZXRyZiAiJiN4MjEyODsiLS0+Ci08IS0t
RU5USVRZIGlpb3RhICImI3gyMTI5OyItLT4KLTwhLS1FTlRJVFkgYmVybm91ICImI3gyMTJDOyIt
LT4KLTwhLS1FTlRJVFkgQmVybm91bGxpcyAiJiN4MjEyQzsiLS0+Ci08IS0tRU5USVRZIEJzY3Ig
IiYjeDIxMkM7Ii0tPgotPCEtLUVOVElUWSBDZnIgIiYjeDIxMkQ7Ii0tPgotPCEtLUVOVElUWSBD
YXlsZXlzICImI3gyMTJEOyItLT4KLTwhLS1FTlRJVFkgZXNjciAiJiN4MjEyRjsiLS0+Ci08IS0t
RU5USVRZIEVzY3IgIiYjeDIxMzA7Ii0tPgotPCEtLUVOVElUWSBleHBlY3RhdGlvbiAiJiN4MjEz
MDsiLS0+Ci08IS0tRU5USVRZIEZzY3IgIiYjeDIxMzE7Ii0tPgotPCEtLUVOVElUWSBGb3VyaWVy
dHJmICImI3gyMTMxOyItLT4KLTwhLS1FTlRJVFkgcGhtbWF0ICImI3gyMTMzOyItLT4KLTwhLS1F
TlRJVFkgTWVsbGludHJmICImI3gyMTMzOyItLT4KLTwhLS1FTlRJVFkgTXNjciAiJiN4MjEzMzsi
LS0+Ci08IS0tRU5USVRZIG9yZGVyICImI3gyMTM0OyItLT4KLTwhLS1FTlRJVFkgb3JkZXJvZiAi
JiN4MjEzNDsiLS0+Ci08IS0tRU5USVRZIG9zY3IgIiYjeDIxMzQ7Ii0tPgotPCEtLUVOVElUWSBh
bGVmc3ltICImI3gyMTM1OyItLT4KLTwhLS1FTlRJVFkgYWxlcGggIiYjeDIxMzU7Ii0tPgotPCEt
LUVOVElUWSBiZXRoICImI3gyMTM2OyItLT4KLTwhLS1FTlRJVFkgZ2ltZWwgIiYjeDIxMzc7Ii0t
PgotPCEtLUVOVElUWSBkYWxldGggIiYjeDIxMzg7Ii0tPgotPCEtLUVOVElUWSBDYXBpdGFsRGlm
ZmVyZW50aWFsRCAiJiN4MjE0NTsiLS0+Ci08IS0tRU5USVRZIEREICImI3gyMTQ1OyItLT4KLTwh
LS1FTlRJVFkgRGlmZmVyZW50aWFsRCAiJiN4MjE0NjsiLS0+Ci08IS0tRU5USVRZIGRkICImI3gy
MTQ2OyItLT4KLTwhLS1FTlRJVFkgRXhwb25lbnRpYWxFICImI3gyMTQ3OyItLT4KLTwhLS1FTlRJ
VFkgZXhwb25lbnRpYWxlICImI3gyMTQ3OyItLT4KLTwhLS1FTlRJVFkgZWUgIiYjeDIxNDc7Ii0t
PgotPCEtLUVOVElUWSBJbWFnaW5hcnlJICImI3gyMTQ4OyItLT4KLTwhLS1FTlRJVFkgaWkgIiYj
eDIxNDg7Ii0tPgotPCEtLUVOVElUWSBmcmFjMTMgIiYjeDIxNTM7Ii0tPgotPCEtLUVOVElUWSBm
cmFjMjMgIiYjeDIxNTQ7Ii0tPgotPCEtLUVOVElUWSBmcmFjMTUgIiYjeDIxNTU7Ii0tPgotPCEt
LUVOVElUWSBmcmFjMjUgIiYjeDIxNTY7Ii0tPgotPCEtLUVOVElUWSBmcmFjMzUgIiYjeDIxNTc7
Ii0tPgotPCEtLUVOVElUWSBmcmFjNDUgIiYjeDIxNTg7Ii0tPgotPCEtLUVOVElUWSBmcmFjMTYg
IiYjeDIxNTk7Ii0tPgotPCEtLUVOVElUWSBmcmFjNTYgIiYjeDIxNUE7Ii0tPgotPCEtLUVOVElU
WSBmcmFjMTggIiYjeDIxNUI7Ii0tPgotPCEtLUVOVElUWSBmcmFjMzggIiYjeDIxNUM7Ii0tPgot
PCEtLUVOVElUWSBmcmFjNTggIiYjeDIxNUQ7Ii0tPgotPCEtLUVOVElUWSBmcmFjNzggIiYjeDIx
NUU7Ii0tPgotPCEtLUVOVElUWSBsYXJyICImI3gyMTkwOyItLT4KLTwhLS1FTlRJVFkgbGVmdGFy
cm93ICImI3gyMTkwOyItLT4KLTwhLS1FTlRJVFkgTGVmdEFycm93ICImI3gyMTkwOyItLT4KLTwh
LS1FTlRJVFkgc2xhcnIgIiYjeDIxOTA7Ii0tPgotPCEtLUVOVElUWSBTaG9ydExlZnRBcnJvdyAi
JiN4MjE5MDsiLS0+Ci08IS0tRU5USVRZIHVhcnIgIiYjeDIxOTE7Ii0tPgotPCEtLUVOVElUWSB1
cGFycm93ICImI3gyMTkxOyItLT4KLTwhLS1FTlRJVFkgVXBBcnJvdyAiJiN4MjE5MTsiLS0+Ci08
IS0tRU5USVRZIFNob3J0VXBBcnJvdyAiJiN4MjE5MTsiLS0+Ci08IS0tRU5USVRZIHJhcnIgIiYj
eDIxOTI7Ii0tPgotPCEtLUVOVElUWSByaWdodGFycm93ICImI3gyMTkyOyItLT4KLTwhLS1FTlRJ
VFkgUmlnaHRBcnJvdyAiJiN4MjE5MjsiLS0+Ci08IS0tRU5USVRZIHNyYXJyICImI3gyMTkyOyIt
LT4KLTwhLS1FTlRJVFkgU2hvcnRSaWdodEFycm93ICImI3gyMTkyOyItLT4KLTwhLS1FTlRJVFkg
ZGFyciAiJiN4MjE5MzsiLS0+Ci08IS0tRU5USVRZIGRvd25hcnJvdyAiJiN4MjE5MzsiLS0+Ci08
IS0tRU5USVRZIERvd25BcnJvdyAiJiN4MjE5MzsiLS0+Ci08IS0tRU5USVRZIFNob3J0RG93bkFy
cm93ICImI3gyMTkzOyItLT4KLTwhLS1FTlRJVFkgaGFyciAiJiN4MjE5NDsiLS0+Ci08IS0tRU5U
SVRZIGxlZnRyaWdodGFycm93ICImI3gyMTk0OyItLT4KLTwhLS1FTlRJVFkgTGVmdFJpZ2h0QXJy
b3cgIiYjeDIxOTQ7Ii0tPgotPCEtLUVOVElUWSB2YXJyICImI3gyMTk1OyItLT4KLTwhLS1FTlRJ
VFkgdXBkb3duYXJyb3cgIiYjeDIxOTU7Ii0tPgotPCEtLUVOVElUWSBVcERvd25BcnJvdyAiJiN4
MjE5NTsiLS0+Ci08IS0tRU5USVRZIG53YXJyICImI3gyMTk2OyItLT4KLTwhLS1FTlRJVFkgVXBw
ZXJMZWZ0QXJyb3cgIiYjeDIxOTY7Ii0tPgotPCEtLUVOVElUWSBud2Fycm93ICImI3gyMTk2OyIt
LT4KLTwhLS1FTlRJVFkgbmVhcnIgIiYjeDIxOTc7Ii0tPgotPCEtLUVOVElUWSBVcHBlclJpZ2h0
QXJyb3cgIiYjeDIxOTc7Ii0tPgotPCEtLUVOVElUWSBuZWFycm93ICImI3gyMTk3OyItLT4KLTwh
LS1FTlRJVFkgc2VhcnIgIiYjeDIxOTg7Ii0tPgotPCEtLUVOVElUWSBzZWFycm93ICImI3gyMTk4
OyItLT4KLTwhLS1FTlRJVFkgTG93ZXJSaWdodEFycm93ICImI3gyMTk4OyItLT4KLTwhLS1FTlRJ
VFkgc3dhcnIgIiYjeDIxOTk7Ii0tPgotPCEtLUVOVElUWSBzd2Fycm93ICImI3gyMTk5OyItLT4K
LTwhLS1FTlRJVFkgTG93ZXJMZWZ0QXJyb3cgIiYjeDIxOTk7Ii0tPgotPCEtLUVOVElUWSBubGFy
ciAiJiN4MjE5QTsiLS0+Ci08IS0tRU5USVRZIG5sZWZ0YXJyb3cgIiYjeDIxOUE7Ii0tPgotPCEt
LUVOVElUWSBucmFyciAiJiN4MjE5QjsiLS0+Ci08IS0tRU5USVRZIG5yaWdodGFycm93ICImI3gy
MTlCOyItLT4KLTwhLS1FTlRJVFkgcmFycncgIiYjeDIxOUQ7Ii0tPgotPCEtLUVOVElUWSByaWdo
dHNxdWlnYXJyb3cgIiYjeDIxOUQ7Ii0tPgotPCEtLUVOVElUWSBucmFycncgIiYjeDIxOUQ7JiN4
MzM4OyItLT4KLTwhLS1FTlRJVFkgTGFyciAiJiN4MjE5RTsiLS0+Ci08IS0tRU5USVRZIHR3b2hl
YWRsZWZ0YXJyb3cgIiYjeDIxOUU7Ii0tPgotPCEtLUVOVElUWSBVYXJyICImI3gyMTlGOyItLT4K
LTwhLS1FTlRJVFkgUmFyciAiJiN4MjFBMDsiLS0+Ci08IS0tRU5USVRZIHR3b2hlYWRyaWdodGFy
cm93ICImI3gyMUEwOyItLT4KLTwhLS1FTlRJVFkgRGFyciAiJiN4MjFBMTsiLS0+Ci08IS0tRU5U
SVRZIGxhcnJ0bCAiJiN4MjFBMjsiLS0+Ci08IS0tRU5USVRZIGxlZnRhcnJvd3RhaWwgIiYjeDIx
QTI7Ii0tPgotPCEtLUVOVElUWSByYXJydGwgIiYjeDIxQTM7Ii0tPgotPCEtLUVOVElUWSByaWdo
dGFycm93dGFpbCAiJiN4MjFBMzsiLS0+Ci08IS0tRU5USVRZIExlZnRUZWVBcnJvdyAiJiN4MjFB
NDsiLS0+Ci08IS0tRU5USVRZIG1hcHN0b2xlZnQgIiYjeDIxQTQ7Ii0tPgotPCEtLUVOVElUWSBV
cFRlZUFycm93ICImI3gyMUE1OyItLT4KLTwhLS1FTlRJVFkgbWFwc3RvdXAgIiYjeDIxQTU7Ii0t
PgotPCEtLUVOVElUWSBtYXAgIiYjeDIxQTY7Ii0tPgotPCEtLUVOVElUWSBSaWdodFRlZUFycm93
ICImI3gyMUE2OyItLT4KLTwhLS1FTlRJVFkgbWFwc3RvICImI3gyMUE2OyItLT4KLTwhLS1FTlRJ
VFkgRG93blRlZUFycm93ICImI3gyMUE3OyItLT4KLTwhLS1FTlRJVFkgbWFwc3RvZG93biAiJiN4
MjFBNzsiLS0+Ci08IS0tRU5USVRZIGxhcnJoayAiJiN4MjFBOTsiLS0+Ci08IS0tRU5USVRZIGhv
b2tsZWZ0YXJyb3cgIiYjeDIxQTk7Ii0tPgotPCEtLUVOVElUWSByYXJyaGsgIiYjeDIxQUE7Ii0t
PgotPCEtLUVOVElUWSBob29rcmlnaHRhcnJvdyAiJiN4MjFBQTsiLS0+Ci08IS0tRU5USVRZIGxh
cnJscCAiJiN4MjFBQjsiLS0+Ci08IS0tRU5USVRZIGxvb3BhcnJvd2xlZnQgIiYjeDIxQUI7Ii0t
PgotPCEtLUVOVElUWSByYXJybHAgIiYjeDIxQUM7Ii0tPgotPCEtLUVOVElUWSBsb29wYXJyb3dy
aWdodCAiJiN4MjFBQzsiLS0+Ci08IS0tRU5USVRZIGhhcnJ3ICImI3gyMUFEOyItLT4KLTwhLS1F
TlRJVFkgbGVmdHJpZ2h0c3F1aWdhcnJvdyAiJiN4MjFBRDsiLS0+Ci08IS0tRU5USVRZIG5oYXJy
ICImI3gyMUFFOyItLT4KLTwhLS1FTlRJVFkgbmxlZnRyaWdodGFycm93ICImI3gyMUFFOyItLT4K
LTwhLS1FTlRJVFkgbHNoICImI3gyMUIwOyItLT4KLTwhLS1FTlRJVFkgTHNoICImI3gyMUIwOyIt
LT4KLTwhLS1FTlRJVFkgcnNoICImI3gyMUIxOyItLT4KLTwhLS1FTlRJVFkgUnNoICImI3gyMUIx
OyItLT4KLTwhLS1FTlRJVFkgbGRzaCAiJiN4MjFCMjsiLS0+Ci08IS0tRU5USVRZIHJkc2ggIiYj
eDIxQjM7Ii0tPgotPCEtLUVOVElUWSBjcmFyciAiJiN4MjFCNTsiLS0+Ci08IS0tRU5USVRZIGN1
bGFyciAiJiN4MjFCNjsiLS0+Ci08IS0tRU5USVRZIGN1cnZlYXJyb3dsZWZ0ICImI3gyMUI2OyIt
LT4KLTwhLS1FTlRJVFkgY3VyYXJyICImI3gyMUI3OyItLT4KLTwhLS1FTlRJVFkgY3VydmVhcnJv
d3JpZ2h0ICImI3gyMUI3OyItLT4KLTwhLS1FTlRJVFkgb2xhcnIgIiYjeDIxQkE7Ii0tPgotPCEt
LUVOVElUWSBjaXJjbGVhcnJvd2xlZnQgIiYjeDIxQkE7Ii0tPgotPCEtLUVOVElUWSBvcmFyciAi
JiN4MjFCQjsiLS0+Ci08IS0tRU5USVRZIGNpcmNsZWFycm93cmlnaHQgIiYjeDIxQkI7Ii0tPgot
PCEtLUVOVElUWSBsaGFydSAiJiN4MjFCQzsiLS0+Ci08IS0tRU5USVRZIExlZnRWZWN0b3IgIiYj
eDIxQkM7Ii0tPgotPCEtLUVOVElUWSBsZWZ0aGFycG9vbnVwICImI3gyMUJDOyItLT4KLTwhLS1F
TlRJVFkgbGhhcmQgIiYjeDIxQkQ7Ii0tPgotPCEtLUVOVElUWSBsZWZ0aGFycG9vbmRvd24gIiYj
eDIxQkQ7Ii0tPgotPCEtLUVOVElUWSBEb3duTGVmdFZlY3RvciAiJiN4MjFCRDsiLS0+Ci08IS0t
RU5USVRZIHVoYXJyICImI3gyMUJFOyItLT4KLTwhLS1FTlRJVFkgdXBoYXJwb29ucmlnaHQgIiYj
eDIxQkU7Ii0tPgotPCEtLUVOVElUWSBSaWdodFVwVmVjdG9yICImI3gyMUJFOyItLT4KLTwhLS1F
TlRJVFkgdWhhcmwgIiYjeDIxQkY7Ii0tPgotPCEtLUVOVElUWSB1cGhhcnBvb25sZWZ0ICImI3gy
MUJGOyItLT4KLTwhLS1FTlRJVFkgTGVmdFVwVmVjdG9yICImI3gyMUJGOyItLT4KLTwhLS1FTlRJ
VFkgcmhhcnUgIiYjeDIxQzA7Ii0tPgotPCEtLUVOVElUWSBSaWdodFZlY3RvciAiJiN4MjFDMDsi
LS0+Ci08IS0tRU5USVRZIHJpZ2h0aGFycG9vbnVwICImI3gyMUMwOyItLT4KLTwhLS1FTlRJVFkg
cmhhcmQgIiYjeDIxQzE7Ii0tPgotPCEtLUVOVElUWSByaWdodGhhcnBvb25kb3duICImI3gyMUMx
OyItLT4KLTwhLS1FTlRJVFkgRG93blJpZ2h0VmVjdG9yICImI3gyMUMxOyItLT4KLTwhLS1FTlRJ
VFkgZGhhcnIgIiYjeDIxQzI7Ii0tPgotPCEtLUVOVElUWSBSaWdodERvd25WZWN0b3IgIiYjeDIx
QzI7Ii0tPgotPCEtLUVOVElUWSBkb3duaGFycG9vbnJpZ2h0ICImI3gyMUMyOyItLT4KLTwhLS1F
TlRJVFkgZGhhcmwgIiYjeDIxQzM7Ii0tPgotPCEtLUVOVElUWSBMZWZ0RG93blZlY3RvciAiJiN4
MjFDMzsiLS0+Ci08IS0tRU5USVRZIGRvd25oYXJwb29ubGVmdCAiJiN4MjFDMzsiLS0+Ci08IS0t
RU5USVRZIHJsYXJyICImI3gyMUM0OyItLT4KLTwhLS1FTlRJVFkgcmlnaHRsZWZ0YXJyb3dzICIm
I3gyMUM0OyItLT4KLTwhLS1FTlRJVFkgUmlnaHRBcnJvd0xlZnRBcnJvdyAiJiN4MjFDNDsiLS0+
Ci08IS0tRU5USVRZIHVkYXJyICImI3gyMUM1OyItLT4KLTwhLS1FTlRJVFkgVXBBcnJvd0Rvd25B
cnJvdyAiJiN4MjFDNTsiLS0+Ci08IS0tRU5USVRZIGxyYXJyICImI3gyMUM2OyItLT4KLTwhLS1F
TlRJVFkgbGVmdHJpZ2h0YXJyb3dzICImI3gyMUM2OyItLT4KLTwhLS1FTlRJVFkgTGVmdEFycm93
UmlnaHRBcnJvdyAiJiN4MjFDNjsiLS0+Ci08IS0tRU5USVRZIGxsYXJyICImI3gyMUM3OyItLT4K
LTwhLS1FTlRJVFkgbGVmdGxlZnRhcnJvd3MgIiYjeDIxQzc7Ii0tPgotPCEtLUVOVElUWSB1dWFy
ciAiJiN4MjFDODsiLS0+Ci08IS0tRU5USVRZIHVwdXBhcnJvd3MgIiYjeDIxQzg7Ii0tPgotPCEt
LUVOVElUWSBycmFyciAiJiN4MjFDOTsiLS0+Ci08IS0tRU5USVRZIHJpZ2h0cmlnaHRhcnJvd3Mg
IiYjeDIxQzk7Ii0tPgotPCEtLUVOVElUWSBkZGFyciAiJiN4MjFDQTsiLS0+Ci08IS0tRU5USVRZ
IGRvd25kb3duYXJyb3dzICImI3gyMUNBOyItLT4KLTwhLS1FTlRJVFkgbHJoYXIgIiYjeDIxQ0I7
Ii0tPgotPCEtLUVOVElUWSBSZXZlcnNlRXF1aWxpYnJpdW0gIiYjeDIxQ0I7Ii0tPgotPCEtLUVO
VElUWSBsZWZ0cmlnaHRoYXJwb29ucyAiJiN4MjFDQjsiLS0+Ci08IS0tRU5USVRZIHJsaGFyICIm
I3gyMUNDOyItLT4KLTwhLS1FTlRJVFkgcmlnaHRsZWZ0aGFycG9vbnMgIiYjeDIxQ0M7Ii0tPgot
PCEtLUVOVElUWSBFcXVpbGlicml1bSAiJiN4MjFDQzsiLS0+Ci08IS0tRU5USVRZIG5sQXJyICIm
I3gyMUNEOyItLT4KLTwhLS1FTlRJVFkgbkxlZnRhcnJvdyAiJiN4MjFDRDsiLS0+Ci08IS0tRU5U
SVRZIG5oQXJyICImI3gyMUNFOyItLT4KLTwhLS1FTlRJVFkgbkxlZnRyaWdodGFycm93ICImI3gy
MUNFOyItLT4KLTwhLS1FTlRJVFkgbnJBcnIgIiYjeDIxQ0Y7Ii0tPgotPCEtLUVOVElUWSBuUmln
aHRhcnJvdyAiJiN4MjFDRjsiLS0+Ci08IS0tRU5USVRZIGxBcnIgIiYjeDIxRDA7Ii0tPgotPCEt
LUVOVElUWSBMZWZ0YXJyb3cgIiYjeDIxRDA7Ii0tPgotPCEtLUVOVElUWSBEb3VibGVMZWZ0QXJy
b3cgIiYjeDIxRDA7Ii0tPgotPCEtLUVOVElUWSB1QXJyICImI3gyMUQxOyItLT4KLTwhLS1FTlRJ
VFkgVXBhcnJvdyAiJiN4MjFEMTsiLS0+Ci08IS0tRU5USVRZIERvdWJsZVVwQXJyb3cgIiYjeDIx
RDE7Ii0tPgotPCEtLUVOVElUWSByQXJyICImI3gyMUQyOyItLT4KLTwhLS1FTlRJVFkgUmlnaHRh
cnJvdyAiJiN4MjFEMjsiLS0+Ci08IS0tRU5USVRZIEltcGxpZXMgIiYjeDIxRDI7Ii0tPgotPCEt
LUVOVElUWSBEb3VibGVSaWdodEFycm93ICImI3gyMUQyOyItLT4KLTwhLS1FTlRJVFkgZEFyciAi
JiN4MjFEMzsiLS0+Ci08IS0tRU5USVRZIERvd25hcnJvdyAiJiN4MjFEMzsiLS0+Ci08IS0tRU5U
SVRZIERvdWJsZURvd25BcnJvdyAiJiN4MjFEMzsiLS0+Ci08IS0tRU5USVRZIGhBcnIgIiYjeDIx
RDQ7Ii0tPgotPCEtLUVOVElUWSBMZWZ0cmlnaHRhcnJvdyAiJiN4MjFENDsiLS0+Ci08IS0tRU5U
SVRZIERvdWJsZUxlZnRSaWdodEFycm93ICImI3gyMUQ0OyItLT4KLTwhLS1FTlRJVFkgaWZmICIm
I3gyMUQ0OyItLT4KLTwhLS1FTlRJVFkgdkFyciAiJiN4MjFENTsiLS0+Ci08IS0tRU5USVRZIFVw
ZG93bmFycm93ICImI3gyMUQ1OyItLT4KLTwhLS1FTlRJVFkgRG91YmxlVXBEb3duQXJyb3cgIiYj
eDIxRDU7Ii0tPgotPCEtLUVOVElUWSBud0FyciAiJiN4MjFENjsiLS0+Ci08IS0tRU5USVRZIG5l
QXJyICImI3gyMUQ3OyItLT4KLTwhLS1FTlRJVFkgc2VBcnIgIiYjeDIxRDg7Ii0tPgotPCEtLUVO
VElUWSBzd0FyciAiJiN4MjFEOTsiLS0+Ci08IS0tRU5USVRZIGxBYXJyICImI3gyMURBOyItLT4K
LTwhLS1FTlRJVFkgTGxlZnRhcnJvdyAiJiN4MjFEQTsiLS0+Ci08IS0tRU5USVRZIHJBYXJyICIm
I3gyMURCOyItLT4KLTwhLS1FTlRJVFkgUnJpZ2h0YXJyb3cgIiYjeDIxREI7Ii0tPgotPCEtLUVO
VElUWSB6aWdyYXJyICImI3gyMUREOyItLT4KLTwhLS1FTlRJVFkgbGFycmIgIiYjeDIxRTQ7Ii0t
PgotPCEtLUVOVElUWSBMZWZ0QXJyb3dCYXIgIiYjeDIxRTQ7Ii0tPgotPCEtLUVOVElUWSByYXJy
YiAiJiN4MjFFNTsiLS0+Ci08IS0tRU5USVRZIFJpZ2h0QXJyb3dCYXIgIiYjeDIxRTU7Ii0tPgot
PCEtLUVOVElUWSBkdWFyciAiJiN4MjFGNTsiLS0+Ci08IS0tRU5USVRZIERvd25BcnJvd1VwQXJy
b3cgIiYjeDIxRjU7Ii0tPgotPCEtLUVOVElUWSBsb2FyciAiJiN4MjFGRDsiLS0+Ci08IS0tRU5U
SVRZIHJvYXJyICImI3gyMUZFOyItLT4KLTwhLS1FTlRJVFkgaG9hcnIgIiYjeDIxRkY7Ii0tPgot
PCEtLUVOVElUWSBmb3JhbGwgIiYjeDIyMDA7Ii0tPgotPCEtLUVOVElUWSBGb3JBbGwgIiYjeDIy
MDA7Ii0tPgotPCEtLUVOVElUWSBjb21wICImI3gyMjAxOyItLT4KLTwhLS1FTlRJVFkgY29tcGxl
bWVudCAiJiN4MjIwMTsiLS0+Ci08IS0tRU5USVRZIHBhcnQgIiYjeDIyMDI7Ii0tPgotPCEtLUVO
VElUWSBQYXJ0aWFsRCAiJiN4MjIwMjsiLS0+Ci08IS0tRU5USVRZIG5wYXJ0ICImI3gyMjAyOyYj
eDMzODsiLS0+Ci08IS0tRU5USVRZIGV4aXN0ICImI3gyMjAzOyItLT4KLTwhLS1FTlRJVFkgRXhp
c3RzICImI3gyMjAzOyItLT4KLTwhLS1FTlRJVFkgbmV4aXN0ICImI3gyMjA0OyItLT4KLTwhLS1F
TlRJVFkgTm90RXhpc3RzICImI3gyMjA0OyItLT4KLTwhLS1FTlRJVFkgbmV4aXN0cyAiJiN4MjIw
NDsiLS0+Ci08IS0tRU5USVRZIGVtcHR5ICImI3gyMjA1OyItLT4KLTwhLS1FTlRJVFkgZW1wdHlz
ZXQgIiYjeDIyMDU7Ii0tPgotPCEtLUVOVElUWSBlbXB0eXYgIiYjeDIyMDU7Ii0tPgotPCEtLUVO
VElUWSB2YXJub3RoaW5nICImI3gyMjA1OyItLT4KLTwhLS1FTlRJVFkgbmFibGEgIiYjeDIyMDc7
Ii0tPgotPCEtLUVOVElUWSBEZWwgIiYjeDIyMDc7Ii0tPgotPCEtLUVOVElUWSBpc2luICImI3gy
MjA4OyItLT4KLTwhLS1FTlRJVFkgaXNpbnYgIiYjeDIyMDg7Ii0tPgotPCEtLUVOVElUWSBFbGVt
ZW50ICImI3gyMjA4OyItLT4KLTwhLS1FTlRJVFkgaW4gIiYjeDIyMDg7Ii0tPgotPCEtLUVOVElU
WSBub3RpbiAiJiN4MjIwOTsiLS0+Ci08IS0tRU5USVRZIE5vdEVsZW1lbnQgIiYjeDIyMDk7Ii0t
PgotPCEtLUVOVElUWSBub3RpbnZhICImI3gyMjA5OyItLT4KLTwhLS1FTlRJVFkgbml2ICImI3gy
MjBCOyItLT4KLTwhLS1FTlRJVFkgUmV2ZXJzZUVsZW1lbnQgIiYjeDIyMEI7Ii0tPgotPCEtLUVO
VElUWSBuaSAiJiN4MjIwQjsiLS0+Ci08IS0tRU5USVRZIFN1Y2hUaGF0ICImI3gyMjBCOyItLT4K
LTwhLS1FTlRJVFkgbm90bmkgIiYjeDIyMEM7Ii0tPgotPCEtLUVOVElUWSBub3RuaXZhICImI3gy
MjBDOyItLT4KLTwhLS1FTlRJVFkgTm90UmV2ZXJzZUVsZW1lbnQgIiYjeDIyMEM7Ii0tPgotPCEt
LUVOVElUWSBwcm9kICImI3gyMjBGOyItLT4KLTwhLS1FTlRJVFkgUHJvZHVjdCAiJiN4MjIwRjsi
LS0+Ci08IS0tRU5USVRZIGNvcHJvZCAiJiN4MjIxMDsiLS0+Ci08IS0tRU5USVRZIENvcHJvZHVj
dCAiJiN4MjIxMDsiLS0+Ci08IS0tRU5USVRZIHN1bSAiJiN4MjIxMTsiLS0+Ci08IS0tRU5USVRZ
IFN1bSAiJiN4MjIxMTsiLS0+Ci08IS0tRU5USVRZIG1pbnVzICImI3gyMjEyOyItLT4KLTwhLS1F
TlRJVFkgbW5wbHVzICImI3gyMjEzOyItLT4KLTwhLS1FTlRJVFkgbXAgIiYjeDIyMTM7Ii0tPgot
PCEtLUVOVElUWSBNaW51c1BsdXMgIiYjeDIyMTM7Ii0tPgotPCEtLUVOVElUWSBwbHVzZG8gIiYj
eDIyMTQ7Ii0tPgotPCEtLUVOVElUWSBkb3RwbHVzICImI3gyMjE0OyItLT4KLTwhLS1FTlRJVFkg
c2V0bW4gIiYjeDIyMTY7Ii0tPgotPCEtLUVOVElUWSBzZXRtaW51cyAiJiN4MjIxNjsiLS0+Ci08
IS0tRU5USVRZIEJhY2tzbGFzaCAiJiN4MjIxNjsiLS0+Ci08IS0tRU5USVRZIHNzZXRtbiAiJiN4
MjIxNjsiLS0+Ci08IS0tRU5USVRZIHNtYWxsc2V0bWludXMgIiYjeDIyMTY7Ii0tPgotPCEtLUVO
VElUWSBsb3dhc3QgIiYjeDIyMTc7Ii0tPgotPCEtLUVOVElUWSBjb21wZm4gIiYjeDIyMTg7Ii0t
PgotPCEtLUVOVElUWSBTbWFsbENpcmNsZSAiJiN4MjIxODsiLS0+Ci08IS0tRU5USVRZIHJhZGlj
ICImI3gyMjFBOyItLT4KLTwhLS1FTlRJVFkgU3FydCAiJiN4MjIxQTsiLS0+Ci08IS0tRU5USVRZ
IHByb3AgIiYjeDIyMUQ7Ii0tPgotPCEtLUVOVElUWSBwcm9wdG8gIiYjeDIyMUQ7Ii0tPgotPCEt
LUVOVElUWSBQcm9wb3J0aW9uYWwgIiYjeDIyMUQ7Ii0tPgotPCEtLUVOVElUWSB2cHJvcCAiJiN4
MjIxRDsiLS0+Ci08IS0tRU5USVRZIHZhcnByb3B0byAiJiN4MjIxRDsiLS0+Ci08IS0tRU5USVRZ
IGluZmluICImI3gyMjFFOyItLT4KLTwhLS1FTlRJVFkgYW5ncnQgIiYjeDIyMUY7Ii0tPgotPCEt
LUVOVElUWSBhbmcgIiYjeDIyMjA7Ii0tPgotPCEtLUVOVElUWSBhbmdsZSAiJiN4MjIyMDsiLS0+
Ci08IS0tRU5USVRZIG5hbmcgIiYjeDIyMjA7JiN4MjBEMjsiLS0+Ci08IS0tRU5USVRZIGFuZ21z
ZCAiJiN4MjIyMTsiLS0+Ci08IS0tRU5USVRZIG1lYXN1cmVkYW5nbGUgIiYjeDIyMjE7Ii0tPgot
PCEtLUVOVElUWSBhbmdzcGggIiYjeDIyMjI7Ii0tPgotPCEtLUVOVElUWSBtaWQgIiYjeDIyMjM7
Ii0tPgotPCEtLUVOVElUWSBWZXJ0aWNhbEJhciAiJiN4MjIyMzsiLS0+Ci08IS0tRU5USVRZIHNt
aWQgIiYjeDIyMjM7Ii0tPgotPCEtLUVOVElUWSBzaG9ydG1pZCAiJiN4MjIyMzsiLS0+Ci08IS0t
RU5USVRZIG5taWQgIiYjeDIyMjQ7Ii0tPgotPCEtLUVOVElUWSBOb3RWZXJ0aWNhbEJhciAiJiN4
MjIyNDsiLS0+Ci08IS0tRU5USVRZIG5zbWlkICImI3gyMjI0OyItLT4KLTwhLS1FTlRJVFkgbnNo
b3J0bWlkICImI3gyMjI0OyItLT4KLTwhLS1FTlRJVFkgcGFyICImI3gyMjI1OyItLT4KLTwhLS1F
TlRJVFkgcGFyYWxsZWwgIiYjeDIyMjU7Ii0tPgotPCEtLUVOVElUWSBEb3VibGVWZXJ0aWNhbEJh
ciAiJiN4MjIyNTsiLS0+Ci08IS0tRU5USVRZIHNwYXIgIiYjeDIyMjU7Ii0tPgotPCEtLUVOVElU
WSBzaG9ydHBhcmFsbGVsICImI3gyMjI1OyItLT4KLTwhLS1FTlRJVFkgbnBhciAiJiN4MjIyNjsi
LS0+Ci08IS0tRU5USVRZIG5wYXJhbGxlbCAiJiN4MjIyNjsiLS0+Ci08IS0tRU5USVRZIE5vdERv
dWJsZVZlcnRpY2FsQmFyICImI3gyMjI2OyItLT4KLTwhLS1FTlRJVFkgbnNwYXIgIiYjeDIyMjY7
Ii0tPgotPCEtLUVOVElUWSBuc2hvcnRwYXJhbGxlbCAiJiN4MjIyNjsiLS0+Ci08IS0tRU5USVRZ
IGFuZCAiJiN4MjIyNzsiLS0+Ci08IS0tRU5USVRZIHdlZGdlICImI3gyMjI3OyItLT4KLTwhLS1F
TlRJVFkgb3IgIiYjeDIyMjg7Ii0tPgotPCEtLUVOVElUWSB2ZWUgIiYjeDIyMjg7Ii0tPgotPCEt
LUVOVElUWSBjYXAgIiYjeDIyMjk7Ii0tPgotPCEtLUVOVElUWSBjYXBzICImI3gyMjI5OyYjeEZF
MDA7Ii0tPgotPCEtLUVOVElUWSBjdXAgIiYjeDIyMkE7Ii0tPgotPCEtLUVOVElUWSBjdXBzICIm
I3gyMjJBOyYjeEZFMDA7Ii0tPgotPCEtLUVOVElUWSBpbnQgIiYjeDIyMkI7Ii0tPgotPCEtLUVO
VElUWSBJbnRlZ3JhbCAiJiN4MjIyQjsiLS0+Ci08IS0tRU5USVRZIEludCAiJiN4MjIyQzsiLS0+
Ci08IS0tRU5USVRZIHRpbnQgIiYjeDIyMkQ7Ii0tPgotPCEtLUVOVElUWSBpaWludCAiJiN4MjIy
RDsiLS0+Ci08IS0tRU5USVRZIGNvbmludCAiJiN4MjIyRTsiLS0+Ci08IS0tRU5USVRZIG9pbnQg
IiYjeDIyMkU7Ii0tPgotPCEtLUVOVElUWSBDb250b3VySW50ZWdyYWwgIiYjeDIyMkU7Ii0tPgot
PCEtLUVOVElUWSBDb25pbnQgIiYjeDIyMkY7Ii0tPgotPCEtLUVOVElUWSBEb3VibGVDb250b3Vy
SW50ZWdyYWwgIiYjeDIyMkY7Ii0tPgotPCEtLUVOVElUWSBDY29uaW50ICImI3gyMjMwOyItLT4K
LTwhLS1FTlRJVFkgY3dpbnQgIiYjeDIyMzE7Ii0tPgotPCEtLUVOVElUWSBjd2NvbmludCAiJiN4
MjIzMjsiLS0+Ci08IS0tRU5USVRZIENsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbCAiJiN4MjIzMjsi
LS0+Ci08IS0tRU5USVRZIGF3Y29uaW50ICImI3gyMjMzOyItLT4KLTwhLS1FTlRJVFkgQ291bnRl
ckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbCAiJiN4MjIzMzsiLS0+Ci08IS0tRU5USVRZIHRoZXJl
NCAiJiN4MjIzNDsiLS0+Ci08IS0tRU5USVRZIHRoZXJlZm9yZSAiJiN4MjIzNDsiLS0+Ci08IS0t
RU5USVRZIFRoZXJlZm9yZSAiJiN4MjIzNDsiLS0+Ci08IS0tRU5USVRZIGJlY2F1cyAiJiN4MjIz
NTsiLS0+Ci08IS0tRU5USVRZIGJlY2F1c2UgIiYjeDIyMzU7Ii0tPgotPCEtLUVOVElUWSBCZWNh
dXNlICImI3gyMjM1OyItLT4KLTwhLS1FTlRJVFkgcmF0aW8gIiYjeDIyMzY7Ii0tPgotPCEtLUVO
VElUWSBDb2xvbiAiJiN4MjIzNzsiLS0+Ci08IS0tRU5USVRZIFByb3BvcnRpb24gIiYjeDIyMzc7
Ii0tPgotPCEtLUVOVElUWSBtaW51c2QgIiYjeDIyMzg7Ii0tPgotPCEtLUVOVElUWSBkb3RtaW51
cyAiJiN4MjIzODsiLS0+Ci08IS0tRU5USVRZIG1ERG90ICImI3gyMjNBOyItLT4KLTwhLS1FTlRJ
VFkgaG9tdGh0ICImI3gyMjNCOyItLT4KLTwhLS1FTlRJVFkgc2ltICImI3gyMjNDOyItLT4KLTwh
LS1FTlRJVFkgVGlsZGUgIiYjeDIyM0M7Ii0tPgotPCEtLUVOVElUWSB0aGtzaW0gIiYjeDIyM0M7
Ii0tPgotPCEtLUVOVElUWSB0aGlja3NpbSAiJiN4MjIzQzsiLS0+Ci08IS0tRU5USVRZIG52c2lt
ICImI3gyMjNDOyYjeDIwRDI7Ii0tPgotPCEtLUVOVElUWSBic2ltICImI3gyMjNEOyItLT4KLTwh
LS1FTlRJVFkgYmFja3NpbSAiJiN4MjIzRDsiLS0+Ci08IS0tRU5USVRZIHJhY2UgIiYjeDIyM0Q7
JiN4MzMxOyItLT4KLTwhLS1FTlRJVFkgYWMgIiYjeDIyM0U7Ii0tPgotPCEtLUVOVElUWSBtc3Rw
b3MgIiYjeDIyM0U7Ii0tPgotPCEtLUVOVElUWSBhY0UgIiYjeDIyM0U7JiN4MzMzOyItLT4KLTwh
LS1FTlRJVFkgYWNkICImI3gyMjNGOyItLT4KLTwhLS1FTlRJVFkgd3JlYXRoICImI3gyMjQwOyIt
LT4KLTwhLS1FTlRJVFkgVmVydGljYWxUaWxkZSAiJiN4MjI0MDsiLS0+Ci08IS0tRU5USVRZIHdy
ICImI3gyMjQwOyItLT4KLTwhLS1FTlRJVFkgbnNpbSAiJiN4MjI0MTsiLS0+Ci08IS0tRU5USVRZ
IE5vdFRpbGRlICImI3gyMjQxOyItLT4KLTwhLS1FTlRJVFkgZXNpbSAiJiN4MjI0MjsiLS0+Ci08
IS0tRU5USVRZIEVxdWFsVGlsZGUgIiYjeDIyNDI7Ii0tPgotPCEtLUVOVElUWSBlcXNpbSAiJiN4
MjI0MjsiLS0+Ci08IS0tRU5USVRZIE5vdEVxdWFsVGlsZGUgIiYjeDIyNDI7JiN4MzM4OyItLT4K
LTwhLS1FTlRJVFkgbmVzaW0gIiYjeDIyNDI7JiN4MzM4OyItLT4KLTwhLS1FTlRJVFkgc2ltZSAi
JiN4MjI0MzsiLS0+Ci08IS0tRU5USVRZIFRpbGRlRXF1YWwgIiYjeDIyNDM7Ii0tPgotPCEtLUVO
VElUWSBzaW1lcSAiJiN4MjI0MzsiLS0+Ci08IS0tRU5USVRZIG5zaW1lICImI3gyMjQ0OyItLT4K
LTwhLS1FTlRJVFkgbnNpbWVxICImI3gyMjQ0OyItLT4KLTwhLS1FTlRJVFkgTm90VGlsZGVFcXVh
bCAiJiN4MjI0NDsiLS0+Ci08IS0tRU5USVRZIGNvbmcgIiYjeDIyNDU7Ii0tPgotPCEtLUVOVElU
WSBUaWxkZUZ1bGxFcXVhbCAiJiN4MjI0NTsiLS0+Ci08IS0tRU5USVRZIHNpbW5lICImI3gyMjQ2
OyItLT4KLTwhLS1FTlRJVFkgbmNvbmcgIiYjeDIyNDc7Ii0tPgotPCEtLUVOVElUWSBOb3RUaWxk
ZUZ1bGxFcXVhbCAiJiN4MjI0NzsiLS0+Ci08IS0tRU5USVRZIGFzeW1wICImI3gyMjQ4OyItLT4K
LTwhLS1FTlRJVFkgYXAgIiYjeDIyNDg7Ii0tPgotPCEtLUVOVElUWSBUaWxkZVRpbGRlICImI3gy
MjQ4OyItLT4KLTwhLS1FTlRJVFkgYXBwcm94ICImI3gyMjQ4OyItLT4KLTwhLS1FTlRJVFkgdGhr
YXAgIiYjeDIyNDg7Ii0tPgotPCEtLUVOVElUWSB0aGlja2FwcHJveCAiJiN4MjI0ODsiLS0+Ci08
IS0tRU5USVRZIG5hcCAiJiN4MjI0OTsiLS0+Ci08IS0tRU5USVRZIE5vdFRpbGRlVGlsZGUgIiYj
eDIyNDk7Ii0tPgotPCEtLUVOVElUWSBuYXBwcm94ICImI3gyMjQ5OyItLT4KLTwhLS1FTlRJVFkg
YXBlICImI3gyMjRBOyItLT4KLTwhLS1FTlRJVFkgYXBwcm94ZXEgIiYjeDIyNEE7Ii0tPgotPCEt
LUVOVElUWSBhcGlkICImI3gyMjRCOyItLT4KLTwhLS1FTlRJVFkgbmFwaWQgIiYjeDIyNEI7JiN4
MzM4OyItLT4KLTwhLS1FTlRJVFkgYmNvbmcgIiYjeDIyNEM7Ii0tPgotPCEtLUVOVElUWSBiYWNr
Y29uZyAiJiN4MjI0QzsiLS0+Ci08IS0tRU5USVRZIGFzeW1wZXEgIiYjeDIyNEQ7Ii0tPgotPCEt
LUVOVElUWSBDdXBDYXAgIiYjeDIyNEQ7Ii0tPgotPCEtLUVOVElUWSBudmFwICImI3gyMjREOyYj
eDIwRDI7Ii0tPgotPCEtLUVOVElUWSBidW1wICImI3gyMjRFOyItLT4KLTwhLS1FTlRJVFkgSHVt
cERvd25IdW1wICImI3gyMjRFOyItLT4KLTwhLS1FTlRJVFkgQnVtcGVxICImI3gyMjRFOyItLT4K
LTwhLS1FTlRJVFkgTm90SHVtcERvd25IdW1wICImI3gyMjRFOyYjeDMzODsiLS0+Ci08IS0tRU5U
SVRZIG5idW1wICImI3gyMjRFOyYjeDMzODsiLS0+Ci08IS0tRU5USVRZIGJ1bXBlICImI3gyMjRG
OyItLT4KLTwhLS1FTlRJVFkgSHVtcEVxdWFsICImI3gyMjRGOyItLT4KLTwhLS1FTlRJVFkgYnVt
cGVxICImI3gyMjRGOyItLT4KLTwhLS1FTlRJVFkgbmJ1bXBlICImI3gyMjRGOyYjeDMzODsiLS0+
Ci08IS0tRU5USVRZIE5vdEh1bXBFcXVhbCAiJiN4MjI0RjsmI3gzMzg7Ii0tPgotPCEtLUVOVElU
WSBlc2RvdCAiJiN4MjI1MDsiLS0+Ci08IS0tRU5USVRZIERvdEVxdWFsICImI3gyMjUwOyItLT4K
LTwhLS1FTlRJVFkgZG90ZXEgIiYjeDIyNTA7Ii0tPgotPCEtLUVOVElUWSBuZWRvdCAiJiN4MjI1
MDsmI3gzMzg7Ii0tPgotPCEtLUVOVElUWSBlRG90ICImI3gyMjUxOyItLT4KLTwhLS1FTlRJVFkg
ZG90ZXFkb3QgIiYjeDIyNTE7Ii0tPgotPCEtLUVOVElUWSBlZkRvdCAiJiN4MjI1MjsiLS0+Ci08
IS0tRU5USVRZIGZhbGxpbmdkb3RzZXEgIiYjeDIyNTI7Ii0tPgotPCEtLUVOVElUWSBlckRvdCAi
JiN4MjI1MzsiLS0+Ci08IS0tRU5USVRZIHJpc2luZ2RvdHNlcSAiJiN4MjI1MzsiLS0+Ci08IS0t
RU5USVRZIGNvbG9uZSAiJiN4MjI1NDsiLS0+Ci08IS0tRU5USVRZIGNvbG9uZXEgIiYjeDIyNTQ7
Ii0tPgotPCEtLUVOVElUWSBBc3NpZ24gIiYjeDIyNTQ7Ii0tPgotPCEtLUVOVElUWSBlY29sb24g
IiYjeDIyNTU7Ii0tPgotPCEtLUVOVElUWSBlcWNvbG9uICImI3gyMjU1OyItLT4KLTwhLS1FTlRJ
VFkgZWNpciAiJiN4MjI1NjsiLS0+Ci08IS0tRU5USVRZIGVxY2lyYyAiJiN4MjI1NjsiLS0+Ci08
IS0tRU5USVRZIGNpcmUgIiYjeDIyNTc7Ii0tPgotPCEtLUVOVElUWSBjaXJjZXEgIiYjeDIyNTc7
Ii0tPgotPCEtLUVOVElUWSB3ZWRnZXEgIiYjeDIyNTk7Ii0tPgotPCEtLUVOVElUWSB2ZWVlcSAi
JiN4MjI1QTsiLS0+Ci08IS0tRU5USVRZIHRyaWUgIiYjeDIyNUM7Ii0tPgotPCEtLUVOVElUWSB0
cmlhbmdsZXEgIiYjeDIyNUM7Ii0tPgotPCEtLUVOVElUWSBlcXVlc3QgIiYjeDIyNUY7Ii0tPgot
PCEtLUVOVElUWSBxdWVzdGVxICImI3gyMjVGOyItLT4KLTwhLS1FTlRJVFkgbmUgIiYjeDIyNjA7
Ii0tPgotPCEtLUVOVElUWSBOb3RFcXVhbCAiJiN4MjI2MDsiLS0+Ci08IS0tRU5USVRZIGVxdWl2
ICImI3gyMjYxOyItLT4KLTwhLS1FTlRJVFkgQ29uZ3J1ZW50ICImI3gyMjYxOyItLT4KLTwhLS1F
TlRJVFkgYm5lcXVpdiAiJiN4MjI2MTsmI3gyMEU1OyItLT4KLTwhLS1FTlRJVFkgbmVxdWl2ICIm
I3gyMjYyOyItLT4KLTwhLS1FTlRJVFkgTm90Q29uZ3J1ZW50ICImI3gyMjYyOyItLT4KLTwhLS1F
TlRJVFkgbGUgIiYjeDIyNjQ7Ii0tPgotPCEtLUVOVElUWSBsZXEgIiYjeDIyNjQ7Ii0tPgotPCEt
LUVOVElUWSBudmxlICImI3gyMjY0OyYjeDIwRDI7Ii0tPgotPCEtLUVOVElUWSBnZSAiJiN4MjI2
NTsiLS0+Ci08IS0tRU5USVRZIEdyZWF0ZXJFcXVhbCAiJiN4MjI2NTsiLS0+Ci08IS0tRU5USVRZ
IGdlcSAiJiN4MjI2NTsiLS0+Ci08IS0tRU5USVRZIG52Z2UgIiYjeDIyNjU7JiN4MjBEMjsiLS0+
Ci08IS0tRU5USVRZIGxFICImI3gyMjY2OyItLT4KLTwhLS1FTlRJVFkgTGVzc0Z1bGxFcXVhbCAi
JiN4MjI2NjsiLS0+Ci08IS0tRU5USVRZIGxlcXEgIiYjeDIyNjY7Ii0tPgotPCEtLUVOVElUWSBu
bEUgIiYjeDIyNjY7JiN4MzM4OyItLT4KLTwhLS1FTlRJVFkgbmxlcXEgIiYjeDIyNjY7JiN4MzM4
OyItLT4KLTwhLS1FTlRJVFkgZ0UgIiYjeDIyNjc7Ii0tPgotPCEtLUVOVElUWSBHcmVhdGVyRnVs
bEVxdWFsICImI3gyMjY3OyItLT4KLTwhLS1FTlRJVFkgZ2VxcSAiJiN4MjI2NzsiLS0+Ci08IS0t
RU5USVRZIG5nRSAiJiN4MjI2NzsmI3gzMzg7Ii0tPgotPCEtLUVOVElUWSBuZ2VxcSAiJiN4MjI2
NzsmI3gzMzg7Ii0tPgotPCEtLUVOVElUWSBOb3RHcmVhdGVyRnVsbEVxdWFsICImI3gyMjY3OyYj
eDMzODsiLS0+Ci08IS0tRU5USVRZIGxuRSAiJiN4MjI2ODsiLS0+Ci08IS0tRU5USVRZIGxuZXFx
ICImI3gyMjY4OyItLT4KLTwhLS1FTlRJVFkgbHZuRSAiJiN4MjI2ODsmI3hGRTAwOyItLT4KLTwh
LS1FTlRJVFkgbHZlcnRuZXFxICImI3gyMjY4OyYjeEZFMDA7Ii0tPgotPCEtLUVOVElUWSBnbkUg
IiYjeDIyNjk7Ii0tPgotPCEtLUVOVElUWSBnbmVxcSAiJiN4MjI2OTsiLS0+Ci08IS0tRU5USVRZ
IGd2bkUgIiYjeDIyNjk7JiN4RkUwMDsiLS0+Ci08IS0tRU5USVRZIGd2ZXJ0bmVxcSAiJiN4MjI2
OTsmI3hGRTAwOyItLT4KLTwhLS1FTlRJVFkgTHQgIiYjeDIyNkE7Ii0tPgotPCEtLUVOVElUWSBO
ZXN0ZWRMZXNzTGVzcyAiJiN4MjI2QTsiLS0+Ci08IS0tRU5USVRZIGxsICImI3gyMjZBOyItLT4K
LTwhLS1FTlRJVFkgbkx0diAiJiN4MjI2QTsmI3gzMzg7Ii0tPgotPCEtLUVOVElUWSBOb3RMZXNz
TGVzcyAiJiN4MjI2QTsmI3gzMzg7Ii0tPgotPCEtLUVOVElUWSBuTHQgIiYjeDIyNkE7JiN4MjBE
MjsiLS0+Ci08IS0tRU5USVRZIEd0ICImI3gyMjZCOyItLT4KLTwhLS1FTlRJVFkgTmVzdGVkR3Jl
YXRlckdyZWF0ZXIgIiYjeDIyNkI7Ii0tPgotPCEtLUVOVElUWSBnZyAiJiN4MjI2QjsiLS0+Ci08
IS0tRU5USVRZIG5HdHYgIiYjeDIyNkI7JiN4MzM4OyItLT4KLTwhLS1FTlRJVFkgTm90R3JlYXRl
ckdyZWF0ZXIgIiYjeDIyNkI7JiN4MzM4OyItLT4KLTwhLS1FTlRJVFkgbkd0ICImI3gyMjZCOyYj
eDIwRDI7Ii0tPgotPCEtLUVOVElUWSB0d2l4dCAiJiN4MjI2QzsiLS0+Ci08IS0tRU5USVRZIGJl
dHdlZW4gIiYjeDIyNkM7Ii0tPgotPCEtLUVOVElUWSBOb3RDdXBDYXAgIiYjeDIyNkQ7Ii0tPgot
PCEtLUVOVElUWSBubHQgIiYjeDIyNkU7Ii0tPgotPCEtLUVOVElUWSBOb3RMZXNzICImI3gyMjZF
OyItLT4KLTwhLS1FTlRJVFkgbmxlc3MgIiYjeDIyNkU7Ii0tPgotPCEtLUVOVElUWSBuZ3QgIiYj
eDIyNkY7Ii0tPgotPCEtLUVOVElUWSBOb3RHcmVhdGVyICImI3gyMjZGOyItLT4KLTwhLS1FTlRJ
VFkgbmd0ciAiJiN4MjI2RjsiLS0+Ci08IS0tRU5USVRZIG5sZSAiJiN4MjI3MDsiLS0+Ci08IS0t
RU5USVRZIE5vdExlc3NFcXVhbCAiJiN4MjI3MDsiLS0+Ci08IS0tRU5USVRZIG5sZXEgIiYjeDIy
NzA7Ii0tPgotPCEtLUVOVElUWSBuZ2UgIiYjeDIyNzE7Ii0tPgotPCEtLUVOVElUWSBOb3RHcmVh
dGVyRXF1YWwgIiYjeDIyNzE7Ii0tPgotPCEtLUVOVElUWSBuZ2VxICImI3gyMjcxOyItLT4KLTwh
LS1FTlRJVFkgbHNpbSAiJiN4MjI3MjsiLS0+Ci08IS0tRU5USVRZIExlc3NUaWxkZSAiJiN4MjI3
MjsiLS0+Ci08IS0tRU5USVRZIGxlc3NzaW0gIiYjeDIyNzI7Ii0tPgotPCEtLUVOVElUWSBnc2lt
ICImI3gyMjczOyItLT4KLTwhLS1FTlRJVFkgZ3Ryc2ltICImI3gyMjczOyItLT4KLTwhLS1FTlRJ
VFkgR3JlYXRlclRpbGRlICImI3gyMjczOyItLT4KLTwhLS1FTlRJVFkgbmxzaW0gIiYjeDIyNzQ7
Ii0tPgotPCEtLUVOVElUWSBOb3RMZXNzVGlsZGUgIiYjeDIyNzQ7Ii0tPgotPCEtLUVOVElUWSBu
Z3NpbSAiJiN4MjI3NTsiLS0+Ci08IS0tRU5USVRZIE5vdEdyZWF0ZXJUaWxkZSAiJiN4MjI3NTsi
LS0+Ci08IS0tRU5USVRZIGxnICImI3gyMjc2OyItLT4KLTwhLS1FTlRJVFkgbGVzc2d0ciAiJiN4
MjI3NjsiLS0+Ci08IS0tRU5USVRZIExlc3NHcmVhdGVyICImI3gyMjc2OyItLT4KLTwhLS1FTlRJ
VFkgZ2wgIiYjeDIyNzc7Ii0tPgotPCEtLUVOVElUWSBndHJsZXNzICImI3gyMjc3OyItLT4KLTwh
LS1FTlRJVFkgR3JlYXRlckxlc3MgIiYjeDIyNzc7Ii0tPgotPCEtLUVOVElUWSBudGxnICImI3gy
Mjc4OyItLT4KLTwhLS1FTlRJVFkgTm90TGVzc0dyZWF0ZXIgIiYjeDIyNzg7Ii0tPgotPCEtLUVO
VElUWSBudGdsICImI3gyMjc5OyItLT4KLTwhLS1FTlRJVFkgTm90R3JlYXRlckxlc3MgIiYjeDIy
Nzk7Ii0tPgotPCEtLUVOVElUWSBwciAiJiN4MjI3QTsiLS0+Ci08IS0tRU5USVRZIFByZWNlZGVz
ICImI3gyMjdBOyItLT4KLTwhLS1FTlRJVFkgcHJlYyAiJiN4MjI3QTsiLS0+Ci08IS0tRU5USVRZ
IHNjICImI3gyMjdCOyItLT4KLTwhLS1FTlRJVFkgU3VjY2VlZHMgIiYjeDIyN0I7Ii0tPgotPCEt
LUVOVElUWSBzdWNjICImI3gyMjdCOyItLT4KLTwhLS1FTlRJVFkgcHJjdWUgIiYjeDIyN0M7Ii0t
PgotPCEtLUVOVElUWSBQcmVjZWRlc1NsYW50RXF1YWwgIiYjeDIyN0M7Ii0tPgotPCEtLUVOVElU
WSBwcmVjY3VybHllcSAiJiN4MjI3QzsiLS0+Ci08IS0tRU5USVRZIHNjY3VlICImI3gyMjdEOyIt
LT4KLTwhLS1FTlRJVFkgU3VjY2VlZHNTbGFudEVxdWFsICImI3gyMjdEOyItLT4KLTwhLS1FTlRJ
VFkgc3VjY2N1cmx5ZXEgIiYjeDIyN0Q7Ii0tPgotPCEtLUVOVElUWSBwcnNpbSAiJiN4MjI3RTsi
LS0+Ci08IS0tRU5USVRZIHByZWNzaW0gIiYjeDIyN0U7Ii0tPgotPCEtLUVOVElUWSBQcmVjZWRl
c1RpbGRlICImI3gyMjdFOyItLT4KLTwhLS1FTlRJVFkgc2NzaW0gIiYjeDIyN0Y7Ii0tPgotPCEt
LUVOVElUWSBzdWNjc2ltICImI3gyMjdGOyItLT4KLTwhLS1FTlRJVFkgU3VjY2VlZHNUaWxkZSAi
JiN4MjI3RjsiLS0+Ci08IS0tRU5USVRZIE5vdFN1Y2NlZWRzVGlsZGUgIiYjeDIyN0Y7JiN4MzM4
OyItLT4KLTwhLS1FTlRJVFkgbnByICImI3gyMjgwOyItLT4KLTwhLS1FTlRJVFkgbnByZWMgIiYj
eDIyODA7Ii0tPgotPCEtLUVOVElUWSBOb3RQcmVjZWRlcyAiJiN4MjI4MDsiLS0+Ci08IS0tRU5U
SVRZIG5zYyAiJiN4MjI4MTsiLS0+Ci08IS0tRU5USVRZIG5zdWNjICImI3gyMjgxOyItLT4KLTwh
LS1FTlRJVFkgTm90U3VjY2VlZHMgIiYjeDIyODE7Ii0tPgotPCEtLUVOVElUWSBzdWIgIiYjeDIy
ODI7Ii0tPgotPCEtLUVOVElUWSBzdWJzZXQgIiYjeDIyODI7Ii0tPgotPCEtLUVOVElUWSB2bnN1
YiAiJiN4MjI4MjsmI3gyMEQyOyItLT4KLTwhLS1FTlRJVFkgbnN1YnNldCAiJiN4MjI4MjsmI3gy
MEQyOyItLT4KLTwhLS1FTlRJVFkgTm90U3Vic2V0ICImI3gyMjgyOyYjeDIwRDI7Ii0tPgotPCEt
LUVOVElUWSBzdXAgIiYjeDIyODM7Ii0tPgotPCEtLUVOVElUWSBzdXBzZXQgIiYjeDIyODM7Ii0t
PgotPCEtLUVOVElUWSBTdXBlcnNldCAiJiN4MjI4MzsiLS0+Ci08IS0tRU5USVRZIHZuc3VwICIm
I3gyMjgzOyYjeDIwRDI7Ii0tPgotPCEtLUVOVElUWSBuc3Vwc2V0ICImI3gyMjgzOyYjeDIwRDI7
Ii0tPgotPCEtLUVOVElUWSBOb3RTdXBlcnNldCAiJiN4MjI4MzsmI3gyMEQyOyItLT4KLTwhLS1F
TlRJVFkgbnN1YiAiJiN4MjI4NDsiLS0+Ci08IS0tRU5USVRZIG5zdXAgIiYjeDIyODU7Ii0tPgot
PCEtLUVOVElUWSBzdWJlICImI3gyMjg2OyItLT4KLTwhLS1FTlRJVFkgU3Vic2V0RXF1YWwgIiYj
eDIyODY7Ii0tPgotPCEtLUVOVElUWSBzdWJzZXRlcSAiJiN4MjI4NjsiLS0+Ci08IS0tRU5USVRZ
IHN1cGUgIiYjeDIyODc7Ii0tPgotPCEtLUVOVElUWSBzdXBzZXRlcSAiJiN4MjI4NzsiLS0+Ci08
IS0tRU5USVRZIFN1cGVyc2V0RXF1YWwgIiYjeDIyODc7Ii0tPgotPCEtLUVOVElUWSBuc3ViZSAi
JiN4MjI4ODsiLS0+Ci08IS0tRU5USVRZIG5zdWJzZXRlcSAiJiN4MjI4ODsiLS0+Ci08IS0tRU5U
SVRZIE5vdFN1YnNldEVxdWFsICImI3gyMjg4OyItLT4KLTwhLS1FTlRJVFkgbnN1cGUgIiYjeDIy
ODk7Ii0tPgotPCEtLUVOVElUWSBuc3Vwc2V0ZXEgIiYjeDIyODk7Ii0tPgotPCEtLUVOVElUWSBO
b3RTdXBlcnNldEVxdWFsICImI3gyMjg5OyItLT4KLTwhLS1FTlRJVFkgc3VibmUgIiYjeDIyOEE7
Ii0tPgotPCEtLUVOVElUWSBzdWJzZXRuZXEgIiYjeDIyOEE7Ii0tPgotPCEtLUVOVElUWSB2c3Vi
bmUgIiYjeDIyOEE7JiN4RkUwMDsiLS0+Ci08IS0tRU5USVRZIHZhcnN1YnNldG5lcSAiJiN4MjI4
QTsmI3hGRTAwOyItLT4KLTwhLS1FTlRJVFkgc3VwbmUgIiYjeDIyOEI7Ii0tPgotPCEtLUVOVElU
WSBzdXBzZXRuZXEgIiYjeDIyOEI7Ii0tPgotPCEtLUVOVElUWSB2c3VwbmUgIiYjeDIyOEI7JiN4
RkUwMDsiLS0+Ci08IS0tRU5USVRZIHZhcnN1cHNldG5lcSAiJiN4MjI4QjsmI3hGRTAwOyItLT4K
LTwhLS1FTlRJVFkgY3VwZG90ICImI3gyMjhEOyItLT4KLTwhLS1FTlRJVFkgdXBsdXMgIiYjeDIy
OEU7Ii0tPgotPCEtLUVOVElUWSBVbmlvblBsdXMgIiYjeDIyOEU7Ii0tPgotPCEtLUVOVElUWSBz
cXN1YiAiJiN4MjI4RjsiLS0+Ci08IS0tRU5USVRZIFNxdWFyZVN1YnNldCAiJiN4MjI4RjsiLS0+
Ci08IS0tRU5USVRZIHNxc3Vic2V0ICImI3gyMjhGOyItLT4KLTwhLS1FTlRJVFkgTm90U3F1YXJl
U3Vic2V0ICImI3gyMjhGOyYjeDMzODsiLS0+Ci08IS0tRU5USVRZIHNxc3VwICImI3gyMjkwOyIt
LT4KLTwhLS1FTlRJVFkgU3F1YXJlU3VwZXJzZXQgIiYjeDIyOTA7Ii0tPgotPCEtLUVOVElUWSBz
cXN1cHNldCAiJiN4MjI5MDsiLS0+Ci08IS0tRU5USVRZIE5vdFNxdWFyZVN1cGVyc2V0ICImI3gy
MjkwOyYjeDMzODsiLS0+Ci08IS0tRU5USVRZIHNxc3ViZSAiJiN4MjI5MTsiLS0+Ci08IS0tRU5U
SVRZIFNxdWFyZVN1YnNldEVxdWFsICImI3gyMjkxOyItLT4KLTwhLS1FTlRJVFkgc3FzdWJzZXRl
cSAiJiN4MjI5MTsiLS0+Ci08IS0tRU5USVRZIHNxc3VwZSAiJiN4MjI5MjsiLS0+Ci08IS0tRU5U
SVRZIFNxdWFyZVN1cGVyc2V0RXF1YWwgIiYjeDIyOTI7Ii0tPgotPCEtLUVOVElUWSBzcXN1cHNl
dGVxICImI3gyMjkyOyItLT4KLTwhLS1FTlRJVFkgc3FjYXAgIiYjeDIyOTM7Ii0tPgotPCEtLUVO
VElUWSBTcXVhcmVJbnRlcnNlY3Rpb24gIiYjeDIyOTM7Ii0tPgotPCEtLUVOVElUWSBzcWNhcHMg
IiYjeDIyOTM7JiN4RkUwMDsiLS0+Ci08IS0tRU5USVRZIHNxY3VwICImI3gyMjk0OyItLT4KLTwh
LS1FTlRJVFkgU3F1YXJlVW5pb24gIiYjeDIyOTQ7Ii0tPgotPCEtLUVOVElUWSBzcWN1cHMgIiYj
eDIyOTQ7JiN4RkUwMDsiLS0+Ci08IS0tRU5USVRZIG9wbHVzICImI3gyMjk1OyItLT4KLTwhLS1F
TlRJVFkgQ2lyY2xlUGx1cyAiJiN4MjI5NTsiLS0+Ci08IS0tRU5USVRZIG9taW51cyAiJiN4MjI5
NjsiLS0+Ci08IS0tRU5USVRZIENpcmNsZU1pbnVzICImI3gyMjk2OyItLT4KLTwhLS1FTlRJVFkg
b3RpbWVzICImI3gyMjk3OyItLT4KLTwhLS1FTlRJVFkgQ2lyY2xlVGltZXMgIiYjeDIyOTc7Ii0t
PgotPCEtLUVOVElUWSBvc29sICImI3gyMjk4OyItLT4KLTwhLS1FTlRJVFkgb2RvdCAiJiN4MjI5
OTsiLS0+Ci08IS0tRU5USVRZIENpcmNsZURvdCAiJiN4MjI5OTsiLS0+Ci08IS0tRU5USVRZIG9j
aXIgIiYjeDIyOUE7Ii0tPgotPCEtLUVOVElUWSBjaXJjbGVkY2lyYyAiJiN4MjI5QTsiLS0+Ci08
IS0tRU5USVRZIG9hc3QgIiYjeDIyOUI7Ii0tPgotPCEtLUVOVElUWSBjaXJjbGVkYXN0ICImI3gy
MjlCOyItLT4KLTwhLS1FTlRJVFkgb2Rhc2ggIiYjeDIyOUQ7Ii0tPgotPCEtLUVOVElUWSBjaXJj
bGVkZGFzaCAiJiN4MjI5RDsiLS0+Ci08IS0tRU5USVRZIHBsdXNiICImI3gyMjlFOyItLT4KLTwh
LS1FTlRJVFkgYm94cGx1cyAiJiN4MjI5RTsiLS0+Ci08IS0tRU5USVRZIG1pbnVzYiAiJiN4MjI5
RjsiLS0+Ci08IS0tRU5USVRZIGJveG1pbnVzICImI3gyMjlGOyItLT4KLTwhLS1FTlRJVFkgdGlt
ZXNiICImI3gyMkEwOyItLT4KLTwhLS1FTlRJVFkgYm94dGltZXMgIiYjeDIyQTA7Ii0tPgotPCEt
LUVOVElUWSBzZG90YiAiJiN4MjJBMTsiLS0+Ci08IS0tRU5USVRZIGRvdHNxdWFyZSAiJiN4MjJB
MTsiLS0+Ci08IS0tRU5USVRZIHZkYXNoICImI3gyMkEyOyItLT4KLTwhLS1FTlRJVFkgUmlnaHRU
ZWUgIiYjeDIyQTI7Ii0tPgotPCEtLUVOVElUWSBkYXNodiAiJiN4MjJBMzsiLS0+Ci08IS0tRU5U
SVRZIExlZnRUZWUgIiYjeDIyQTM7Ii0tPgotPCEtLUVOVElUWSB0b3AgIiYjeDIyQTQ7Ii0tPgot
PCEtLUVOVElUWSBEb3duVGVlICImI3gyMkE0OyItLT4KLTwhLS1FTlRJVFkgYm90dG9tICImI3gy
MkE1OyItLT4KLTwhLS1FTlRJVFkgYm90ICImI3gyMkE1OyItLT4KLTwhLS1FTlRJVFkgcGVycCAi
JiN4MjJBNTsiLS0+Ci08IS0tRU5USVRZIFVwVGVlICImI3gyMkE1OyItLT4KLTwhLS1FTlRJVFkg
bW9kZWxzICImI3gyMkE3OyItLT4KLTwhLS1FTlRJVFkgdkRhc2ggIiYjeDIyQTg7Ii0tPgotPCEt
LUVOVElUWSBEb3VibGVSaWdodFRlZSAiJiN4MjJBODsiLS0+Ci08IS0tRU5USVRZIFZkYXNoICIm
I3gyMkE5OyItLT4KLTwhLS1FTlRJVFkgVnZkYXNoICImI3gyMkFBOyItLT4KLTwhLS1FTlRJVFkg
VkRhc2ggIiYjeDIyQUI7Ii0tPgotPCEtLUVOVElUWSBudmRhc2ggIiYjeDIyQUM7Ii0tPgotPCEt
LUVOVElUWSBudkRhc2ggIiYjeDIyQUQ7Ii0tPgotPCEtLUVOVElUWSBuVmRhc2ggIiYjeDIyQUU7
Ii0tPgotPCEtLUVOVElUWSBuVkRhc2ggIiYjeDIyQUY7Ii0tPgotPCEtLUVOVElUWSBwcnVyZWwg
IiYjeDIyQjA7Ii0tPgotPCEtLUVOVElUWSB2bHRyaSAiJiN4MjJCMjsiLS0+Ci08IS0tRU5USVRZ
IHZhcnRyaWFuZ2xlbGVmdCAiJiN4MjJCMjsiLS0+Ci08IS0tRU5USVRZIExlZnRUcmlhbmdsZSAi
JiN4MjJCMjsiLS0+Ci08IS0tRU5USVRZIHZydHJpICImI3gyMkIzOyItLT4KLTwhLS1FTlRJVFkg
dmFydHJpYW5nbGVyaWdodCAiJiN4MjJCMzsiLS0+Ci08IS0tRU5USVRZIFJpZ2h0VHJpYW5nbGUg
IiYjeDIyQjM7Ii0tPgotPCEtLUVOVElUWSBsdHJpZSAiJiN4MjJCNDsiLS0+Ci08IS0tRU5USVRZ
IHRyaWFuZ2xlbGVmdGVxICImI3gyMkI0OyItLT4KLTwhLS1FTlRJVFkgTGVmdFRyaWFuZ2xlRXF1
YWwgIiYjeDIyQjQ7Ii0tPgotPCEtLUVOVElUWSBudmx0cmllICImI3gyMkI0OyYjeDIwRDI7Ii0t
PgotPCEtLUVOVElUWSBydHJpZSAiJiN4MjJCNTsiLS0+Ci08IS0tRU5USVRZIHRyaWFuZ2xlcmln
aHRlcSAiJiN4MjJCNTsiLS0+Ci08IS0tRU5USVRZIFJpZ2h0VHJpYW5nbGVFcXVhbCAiJiN4MjJC
NTsiLS0+Ci08IS0tRU5USVRZIG52cnRyaWUgIiYjeDIyQjU7JiN4MjBEMjsiLS0+Ci08IS0tRU5U
SVRZIG9yaWdvZiAiJiN4MjJCNjsiLS0+Ci08IS0tRU5USVRZIGltb2YgIiYjeDIyQjc7Ii0tPgot
PCEtLUVOVElUWSBtdW1hcCAiJiN4MjJCODsiLS0+Ci08IS0tRU5USVRZIG11bHRpbWFwICImI3gy
MkI4OyItLT4KLTwhLS1FTlRJVFkgaGVyY29uICImI3gyMkI5OyItLT4KLTwhLS1FTlRJVFkgaW50
Y2FsICImI3gyMkJBOyItLT4KLTwhLS1FTlRJVFkgaW50ZXJjYWwgIiYjeDIyQkE7Ii0tPgotPCEt
LUVOVElUWSB2ZWViYXIgIiYjeDIyQkI7Ii0tPgotPCEtLUVOVElUWSBiYXJ2ZWUgIiYjeDIyQkQ7
Ii0tPgotPCEtLUVOVElUWSBhbmdydHZiICImI3gyMkJFOyItLT4KLTwhLS1FTlRJVFkgbHJ0cmkg
IiYjeDIyQkY7Ii0tPgotPCEtLUVOVElUWSB4d2VkZ2UgIiYjeDIyQzA7Ii0tPgotPCEtLUVOVElU
WSBXZWRnZSAiJiN4MjJDMDsiLS0+Ci08IS0tRU5USVRZIGJpZ3dlZGdlICImI3gyMkMwOyItLT4K
LTwhLS1FTlRJVFkgeHZlZSAiJiN4MjJDMTsiLS0+Ci08IS0tRU5USVRZIFZlZSAiJiN4MjJDMTsi
LS0+Ci08IS0tRU5USVRZIGJpZ3ZlZSAiJiN4MjJDMTsiLS0+Ci08IS0tRU5USVRZIHhjYXAgIiYj
eDIyQzI7Ii0tPgotPCEtLUVOVElUWSBJbnRlcnNlY3Rpb24gIiYjeDIyQzI7Ii0tPgotPCEtLUVO
VElUWSBiaWdjYXAgIiYjeDIyQzI7Ii0tPgotPCEtLUVOVElUWSB4Y3VwICImI3gyMkMzOyItLT4K
LTwhLS1FTlRJVFkgVW5pb24gIiYjeDIyQzM7Ii0tPgotPCEtLUVOVElUWSBiaWdjdXAgIiYjeDIy
QzM7Ii0tPgotPCEtLUVOVElUWSBkaWFtICImI3gyMkM0OyItLT4KLTwhLS1FTlRJVFkgZGlhbW9u
ZCAiJiN4MjJDNDsiLS0+Ci08IS0tRU5USVRZIERpYW1vbmQgIiYjeDIyQzQ7Ii0tPgotPCEtLUVO
VElUWSBzZG90ICImI3gyMkM1OyItLT4KLTwhLS1FTlRJVFkgc3N0YXJmICImI3gyMkM2OyItLT4K
LTwhLS1FTlRJVFkgU3RhciAiJiN4MjJDNjsiLS0+Ci08IS0tRU5USVRZIGRpdm9ueCAiJiN4MjJD
NzsiLS0+Ci08IS0tRU5USVRZIGRpdmlkZW9udGltZXMgIiYjeDIyQzc7Ii0tPgotPCEtLUVOVElU
WSBib3d0aWUgIiYjeDIyQzg7Ii0tPgotPCEtLUVOVElUWSBsdGltZXMgIiYjeDIyQzk7Ii0tPgot
PCEtLUVOVElUWSBydGltZXMgIiYjeDIyQ0E7Ii0tPgotPCEtLUVOVElUWSBsdGhyZWUgIiYjeDIy
Q0I7Ii0tPgotPCEtLUVOVElUWSBsZWZ0dGhyZWV0aW1lcyAiJiN4MjJDQjsiLS0+Ci08IS0tRU5U
SVRZIHJ0aHJlZSAiJiN4MjJDQzsiLS0+Ci08IS0tRU5USVRZIHJpZ2h0dGhyZWV0aW1lcyAiJiN4
MjJDQzsiLS0+Ci08IS0tRU5USVRZIGJzaW1lICImI3gyMkNEOyItLT4KLTwhLS1FTlRJVFkgYmFj
a3NpbWVxICImI3gyMkNEOyItLT4KLTwhLS1FTlRJVFkgY3V2ZWUgIiYjeDIyQ0U7Ii0tPgotPCEt
LUVOVElUWSBjdXJseXZlZSAiJiN4MjJDRTsiLS0+Ci08IS0tRU5USVRZIGN1d2VkICImI3gyMkNG
OyItLT4KLTwhLS1FTlRJVFkgY3VybHl3ZWRnZSAiJiN4MjJDRjsiLS0+Ci08IS0tRU5USVRZIFN1
YiAiJiN4MjJEMDsiLS0+Ci08IS0tRU5USVRZIFN1YnNldCAiJiN4MjJEMDsiLS0+Ci08IS0tRU5U
SVRZIFN1cCAiJiN4MjJEMTsiLS0+Ci08IS0tRU5USVRZIFN1cHNldCAiJiN4MjJEMTsiLS0+Ci08
IS0tRU5USVRZIENhcCAiJiN4MjJEMjsiLS0+Ci08IS0tRU5USVRZIEN1cCAiJiN4MjJEMzsiLS0+
Ci08IS0tRU5USVRZIGZvcmsgIiYjeDIyRDQ7Ii0tPgotPCEtLUVOVElUWSBwaXRjaGZvcmsgIiYj
eDIyRDQ7Ii0tPgotPCEtLUVOVElUWSBlcGFyICImI3gyMkQ1OyItLT4KLTwhLS1FTlRJVFkgbHRk
b3QgIiYjeDIyRDY7Ii0tPgotPCEtLUVOVElUWSBsZXNzZG90ICImI3gyMkQ2OyItLT4KLTwhLS1F
TlRJVFkgZ3Rkb3QgIiYjeDIyRDc7Ii0tPgotPCEtLUVOVElUWSBndHJkb3QgIiYjeDIyRDc7Ii0t
PgotPCEtLUVOVElUWSBMbCAiJiN4MjJEODsiLS0+Ci08IS0tRU5USVRZIG5MbCAiJiN4MjJEODsm
I3gzMzg7Ii0tPgotPCEtLUVOVElUWSBHZyAiJiN4MjJEOTsiLS0+Ci08IS0tRU5USVRZIGdnZyAi
JiN4MjJEOTsiLS0+Ci08IS0tRU5USVRZIG5HZyAiJiN4MjJEOTsmI3gzMzg7Ii0tPgotPCEtLUVO
VElUWSBsZWcgIiYjeDIyREE7Ii0tPgotPCEtLUVOVElUWSBMZXNzRXF1YWxHcmVhdGVyICImI3gy
MkRBOyItLT4KLTwhLS1FTlRJVFkgbGVzc2VxZ3RyICImI3gyMkRBOyItLT4KLTwhLS1FTlRJVFkg
bGVzZyAiJiN4MjJEQTsmI3hGRTAwOyItLT4KLTwhLS1FTlRJVFkgZ2VsICImI3gyMkRCOyItLT4K
LTwhLS1FTlRJVFkgZ3RyZXFsZXNzICImI3gyMkRCOyItLT4KLTwhLS1FTlRJVFkgR3JlYXRlckVx
dWFsTGVzcyAiJiN4MjJEQjsiLS0+Ci08IS0tRU5USVRZIGdlc2wgIiYjeDIyREI7JiN4RkUwMDsi
LS0+Ci08IS0tRU5USVRZIGN1ZXByICImI3gyMkRFOyItLT4KLTwhLS1FTlRJVFkgY3VybHllcXBy
ZWMgIiYjeDIyREU7Ii0tPgotPCEtLUVOVElUWSBjdWVzYyAiJiN4MjJERjsiLS0+Ci08IS0tRU5U
SVRZIGN1cmx5ZXFzdWNjICImI3gyMkRGOyItLT4KLTwhLS1FTlRJVFkgbnByY3VlICImI3gyMkUw
OyItLT4KLTwhLS1FTlRJVFkgTm90UHJlY2VkZXNTbGFudEVxdWFsICImI3gyMkUwOyItLT4KLTwh
LS1FTlRJVFkgbnNjY3VlICImI3gyMkUxOyItLT4KLTwhLS1FTlRJVFkgTm90U3VjY2VlZHNTbGFu
dEVxdWFsICImI3gyMkUxOyItLT4KLTwhLS1FTlRJVFkgbnNxc3ViZSAiJiN4MjJFMjsiLS0+Ci08
IS0tRU5USVRZIE5vdFNxdWFyZVN1YnNldEVxdWFsICImI3gyMkUyOyItLT4KLTwhLS1FTlRJVFkg
bnNxc3VwZSAiJiN4MjJFMzsiLS0+Ci08IS0tRU5USVRZIE5vdFNxdWFyZVN1cGVyc2V0RXF1YWwg
IiYjeDIyRTM7Ii0tPgotPCEtLUVOVElUWSBsbnNpbSAiJiN4MjJFNjsiLS0+Ci08IS0tRU5USVRZ
IGduc2ltICImI3gyMkU3OyItLT4KLTwhLS1FTlRJVFkgcHJuc2ltICImI3gyMkU4OyItLT4KLTwh
LS1FTlRJVFkgcHJlY25zaW0gIiYjeDIyRTg7Ii0tPgotPCEtLUVOVElUWSBzY25zaW0gIiYjeDIy
RTk7Ii0tPgotPCEtLUVOVElUWSBzdWNjbnNpbSAiJiN4MjJFOTsiLS0+Ci08IS0tRU5USVRZIG5s
dHJpICImI3gyMkVBOyItLT4KLTwhLS1FTlRJVFkgbnRyaWFuZ2xlbGVmdCAiJiN4MjJFQTsiLS0+
Ci08IS0tRU5USVRZIE5vdExlZnRUcmlhbmdsZSAiJiN4MjJFQTsiLS0+Ci08IS0tRU5USVRZIG5y
dHJpICImI3gyMkVCOyItLT4KLTwhLS1FTlRJVFkgbnRyaWFuZ2xlcmlnaHQgIiYjeDIyRUI7Ii0t
PgotPCEtLUVOVElUWSBOb3RSaWdodFRyaWFuZ2xlICImI3gyMkVCOyItLT4KLTwhLS1FTlRJVFkg
bmx0cmllICImI3gyMkVDOyItLT4KLTwhLS1FTlRJVFkgbnRyaWFuZ2xlbGVmdGVxICImI3gyMkVD
OyItLT4KLTwhLS1FTlRJVFkgTm90TGVmdFRyaWFuZ2xlRXF1YWwgIiYjeDIyRUM7Ii0tPgotPCEt
LUVOVElUWSBucnRyaWUgIiYjeDIyRUQ7Ii0tPgotPCEtLUVOVElUWSBudHJpYW5nbGVyaWdodGVx
ICImI3gyMkVEOyItLT4KLTwhLS1FTlRJVFkgTm90UmlnaHRUcmlhbmdsZUVxdWFsICImI3gyMkVE
OyItLT4KLTwhLS1FTlRJVFkgdmVsbGlwICImI3gyMkVFOyItLT4KLTwhLS1FTlRJVFkgY3Rkb3Qg
IiYjeDIyRUY7Ii0tPgotPCEtLUVOVElUWSB1dGRvdCAiJiN4MjJGMDsiLS0+Ci08IS0tRU5USVRZ
IGR0ZG90ICImI3gyMkYxOyItLT4KLTwhLS1FTlRJVFkgZGlzaW4gIiYjeDIyRjI7Ii0tPgotPCEt
LUVOVElUWSBpc2luc3YgIiYjeDIyRjM7Ii0tPgotPCEtLUVOVElUWSBpc2lucyAiJiN4MjJGNDsi
LS0+Ci08IS0tRU5USVRZIGlzaW5kb3QgIiYjeDIyRjU7Ii0tPgotPCEtLUVOVElUWSBub3RpbmRv
dCAiJiN4MjJGNTsmI3gzMzg7Ii0tPgotPCEtLUVOVElUWSBub3RpbnZjICImI3gyMkY2OyItLT4K
LTwhLS1FTlRJVFkgbm90aW52YiAiJiN4MjJGNzsiLS0+Ci08IS0tRU5USVRZIGlzaW5FICImI3gy
MkY5OyItLT4KLTwhLS1FTlRJVFkgbm90aW5FICImI3gyMkY5OyYjeDMzODsiLS0+Ci08IS0tRU5U
SVRZIG5pc2QgIiYjeDIyRkE7Ii0tPgotPCEtLUVOVElUWSB4bmlzICImI3gyMkZCOyItLT4KLTwh
LS1FTlRJVFkgbmlzICImI3gyMkZDOyItLT4KLTwhLS1FTlRJVFkgbm90bml2YyAiJiN4MjJGRDsi
LS0+Ci08IS0tRU5USVRZIG5vdG5pdmIgIiYjeDIyRkU7Ii0tPgotPCEtLUVOVElUWSBiYXJ3ZWQg
IiYjeDIzMDU7Ii0tPgotPCEtLUVOVElUWSBiYXJ3ZWRnZSAiJiN4MjMwNTsiLS0+Ci08IS0tRU5U
SVRZIEJhcndlZCAiJiN4MjMwNjsiLS0+Ci08IS0tRU5USVRZIGRvdWJsZWJhcndlZGdlICImI3gy
MzA2OyItLT4KLTwhLS1FTlRJVFkgbGNlaWwgIiYjeDIzMDg7Ii0tPgotPCEtLUVOVElUWSBMZWZ0
Q2VpbGluZyAiJiN4MjMwODsiLS0+Ci08IS0tRU5USVRZIHJjZWlsICImI3gyMzA5OyItLT4KLTwh
LS1FTlRJVFkgUmlnaHRDZWlsaW5nICImI3gyMzA5OyItLT4KLTwhLS1FTlRJVFkgbGZsb29yICIm
I3gyMzBBOyItLT4KLTwhLS1FTlRJVFkgTGVmdEZsb29yICImI3gyMzBBOyItLT4KLTwhLS1FTlRJ
VFkgcmZsb29yICImI3gyMzBCOyItLT4KLTwhLS1FTlRJVFkgUmlnaHRGbG9vciAiJiN4MjMwQjsi
LS0+Ci08IS0tRU5USVRZIGRyY3JvcCAiJiN4MjMwQzsiLS0+Ci08IS0tRU5USVRZIGRsY3JvcCAi
JiN4MjMwRDsiLS0+Ci08IS0tRU5USVRZIHVyY3JvcCAiJiN4MjMwRTsiLS0+Ci08IS0tRU5USVRZ
IHVsY3JvcCAiJiN4MjMwRjsiLS0+Ci08IS0tRU5USVRZIGJub3QgIiYjeDIzMTA7Ii0tPgotPCEt
LUVOVElUWSBwcm9mbGluZSAiJiN4MjMxMjsiLS0+Ci08IS0tRU5USVRZIHByb2ZzdXJmICImI3gy
MzEzOyItLT4KLTwhLS1FTlRJVFkgdGVscmVjICImI3gyMzE1OyItLT4KLTwhLS1FTlRJVFkgdGFy
Z2V0ICImI3gyMzE2OyItLT4KLTwhLS1FTlRJVFkgdWxjb3JuICImI3gyMzFDOyItLT4KLTwhLS1F
TlRJVFkgdWxjb3JuZXIgIiYjeDIzMUM7Ii0tPgotPCEtLUVOVElUWSB1cmNvcm4gIiYjeDIzMUQ7
Ii0tPgotPCEtLUVOVElUWSB1cmNvcm5lciAiJiN4MjMxRDsiLS0+Ci08IS0tRU5USVRZIGRsY29y
biAiJiN4MjMxRTsiLS0+Ci08IS0tRU5USVRZIGxsY29ybmVyICImI3gyMzFFOyItLT4KLTwhLS1F
TlRJVFkgZHJjb3JuICImI3gyMzFGOyItLT4KLTwhLS1FTlRJVFkgbHJjb3JuZXIgIiYjeDIzMUY7
Ii0tPgotPCEtLUVOVElUWSBmcm93biAiJiN4MjMyMjsiLS0+Ci08IS0tRU5USVRZIHNmcm93biAi
JiN4MjMyMjsiLS0+Ci08IS0tRU5USVRZIHNtaWxlICImI3gyMzIzOyItLT4KLTwhLS1FTlRJVFkg
c3NtaWxlICImI3gyMzIzOyItLT4KLTwhLS1FTlRJVFkgY3lsY3R5ICImI3gyMzJEOyItLT4KLTwh
LS1FTlRJVFkgcHJvZmFsYXIgIiYjeDIzMkU7Ii0tPgotPCEtLUVOVElUWSB0b3Bib3QgIiYjeDIz
MzY7Ii0tPgotPCEtLUVOVElUWSBvdmJhciAiJiN4MjMzRDsiLS0+Ci08IS0tRU5USVRZIHNvbGJh
ciAiJiN4MjMzRjsiLS0+Ci08IS0tRU5USVRZIGFuZ3phcnIgIiYjeDIzN0M7Ii0tPgotPCEtLUVO
VElUWSBsbW91c3QgIiYjeDIzQjA7Ii0tPgotPCEtLUVOVElUWSBsbW91c3RhY2hlICImI3gyM0Iw
OyItLT4KLTwhLS1FTlRJVFkgcm1vdXN0ICImI3gyM0IxOyItLT4KLTwhLS1FTlRJVFkgcm1vdXN0
YWNoZSAiJiN4MjNCMTsiLS0+Ci08IS0tRU5USVRZIHRicmsgIiYjeDIzQjQ7Ii0tPgotPCEtLUVO
VElUWSBPdmVyQnJhY2tldCAiJiN4MjNCNDsiLS0+Ci08IS0tRU5USVRZIGJicmsgIiYjeDIzQjU7
Ii0tPgotPCEtLUVOVElUWSBVbmRlckJyYWNrZXQgIiYjeDIzQjU7Ii0tPgotPCEtLUVOVElUWSBi
YnJrdGJyayAiJiN4MjNCNjsiLS0+Ci08IS0tRU5USVRZIE92ZXJQYXJlbnRoZXNpcyAiJiN4MjNE
QzsiLS0+Ci08IS0tRU5USVRZIFVuZGVyUGFyZW50aGVzaXMgIiYjeDIzREQ7Ii0tPgotPCEtLUVO
VElUWSBPdmVyQnJhY2UgIiYjeDIzREU7Ii0tPgotPCEtLUVOVElUWSBVbmRlckJyYWNlICImI3gy
M0RGOyItLT4KLTwhLS1FTlRJVFkgdHJwZXppdW0gIiYjeDIzRTI7Ii0tPgotPCEtLUVOVElUWSBl
bGludGVycyAiJiN4MjNFNzsiLS0+Ci08IS0tRU5USVRZIGJsYW5rICImI3gyNDIzOyItLT4KLTwh
LS1FTlRJVFkgb1MgIiYjeDI0Qzg7Ii0tPgotPCEtLUVOVElUWSBjaXJjbGVkUyAiJiN4MjRDODsi
LS0+Ci08IS0tRU5USVRZIGJveGggIiYjeDI1MDA7Ii0tPgotPCEtLUVOVElUWSBIb3Jpem9udGFs
TGluZSAiJiN4MjUwMDsiLS0+Ci08IS0tRU5USVRZIGJveHYgIiYjeDI1MDI7Ii0tPgotPCEtLUVO
VElUWSBib3hkciAiJiN4MjUwQzsiLS0+Ci08IS0tRU5USVRZIGJveGRsICImI3gyNTEwOyItLT4K
LTwhLS1FTlRJVFkgYm94dXIgIiYjeDI1MTQ7Ii0tPgotPCEtLUVOVElUWSBib3h1bCAiJiN4MjUx
ODsiLS0+Ci08IS0tRU5USVRZIGJveHZyICImI3gyNTFDOyItLT4KLTwhLS1FTlRJVFkgYm94dmwg
IiYjeDI1MjQ7Ii0tPgotPCEtLUVOVElUWSBib3hoZCAiJiN4MjUyQzsiLS0+Ci08IS0tRU5USVRZ
IGJveGh1ICImI3gyNTM0OyItLT4KLTwhLS1FTlRJVFkgYm94dmggIiYjeDI1M0M7Ii0tPgotPCEt
LUVOVElUWSBib3hIICImI3gyNTUwOyItLT4KLTwhLS1FTlRJVFkgYm94ViAiJiN4MjU1MTsiLS0+
Ci08IS0tRU5USVRZIGJveGRSICImI3gyNTUyOyItLT4KLTwhLS1FTlRJVFkgYm94RHIgIiYjeDI1
NTM7Ii0tPgotPCEtLUVOVElUWSBib3hEUiAiJiN4MjU1NDsiLS0+Ci08IS0tRU5USVRZIGJveGRM
ICImI3gyNTU1OyItLT4KLTwhLS1FTlRJVFkgYm94RGwgIiYjeDI1NTY7Ii0tPgotPCEtLUVOVElU
WSBib3hETCAiJiN4MjU1NzsiLS0+Ci08IS0tRU5USVRZIGJveHVSICImI3gyNTU4OyItLT4KLTwh
LS1FTlRJVFkgYm94VXIgIiYjeDI1NTk7Ii0tPgotPCEtLUVOVElUWSBib3hVUiAiJiN4MjU1QTsi
LS0+Ci08IS0tRU5USVRZIGJveHVMICImI3gyNTVCOyItLT4KLTwhLS1FTlRJVFkgYm94VWwgIiYj
eDI1NUM7Ii0tPgotPCEtLUVOVElUWSBib3hVTCAiJiN4MjU1RDsiLS0+Ci08IS0tRU5USVRZIGJv
eHZSICImI3gyNTVFOyItLT4KLTwhLS1FTlRJVFkgYm94VnIgIiYjeDI1NUY7Ii0tPgotPCEtLUVO
VElUWSBib3hWUiAiJiN4MjU2MDsiLS0+Ci08IS0tRU5USVRZIGJveHZMICImI3gyNTYxOyItLT4K
LTwhLS1FTlRJVFkgYm94VmwgIiYjeDI1NjI7Ii0tPgotPCEtLUVOVElUWSBib3hWTCAiJiN4MjU2
MzsiLS0+Ci08IS0tRU5USVRZIGJveEhkICImI3gyNTY0OyItLT4KLTwhLS1FTlRJVFkgYm94aEQg
IiYjeDI1NjU7Ii0tPgotPCEtLUVOVElUWSBib3hIRCAiJiN4MjU2NjsiLS0+Ci08IS0tRU5USVRZ
IGJveEh1ICImI3gyNTY3OyItLT4KLTwhLS1FTlRJVFkgYm94aFUgIiYjeDI1Njg7Ii0tPgotPCEt
LUVOVElUWSBib3hIVSAiJiN4MjU2OTsiLS0+Ci08IS0tRU5USVRZIGJveHZIICImI3gyNTZBOyIt
LT4KLTwhLS1FTlRJVFkgYm94VmggIiYjeDI1NkI7Ii0tPgotPCEtLUVOVElUWSBib3hWSCAiJiN4
MjU2QzsiLS0+Ci08IS0tRU5USVRZIHVoYmxrICImI3gyNTgwOyItLT4KLTwhLS1FTlRJVFkgbGhi
bGsgIiYjeDI1ODQ7Ii0tPgotPCEtLUVOVElUWSBibG9jayAiJiN4MjU4ODsiLS0+Ci08IS0tRU5U
SVRZIGJsazE0ICImI3gyNTkxOyItLT4KLTwhLS1FTlRJVFkgYmxrMTIgIiYjeDI1OTI7Ii0tPgot
PCEtLUVOVElUWSBibGszNCAiJiN4MjU5MzsiLS0+Ci08IS0tRU5USVRZIHNxdSAiJiN4MjVBMTsi
LS0+Ci08IS0tRU5USVRZIHNxdWFyZSAiJiN4MjVBMTsiLS0+Ci08IS0tRU5USVRZIFNxdWFyZSAi
JiN4MjVBMTsiLS0+Ci08IS0tRU5USVRZIHNxdWYgIiYjeDI1QUE7Ii0tPgotPCEtLUVOVElUWSBz
cXVhcmYgIiYjeDI1QUE7Ii0tPgotPCEtLUVOVElUWSBibGFja3NxdWFyZSAiJiN4MjVBQTsiLS0+
Ci08IS0tRU5USVRZIEZpbGxlZFZlcnlTbWFsbFNxdWFyZSAiJiN4MjVBQTsiLS0+Ci08IS0tRU5U
SVRZIEVtcHR5VmVyeVNtYWxsU3F1YXJlICImI3gyNUFCOyItLT4KLTwhLS1FTlRJVFkgcmVjdCAi
JiN4MjVBRDsiLS0+Ci08IS0tRU5USVRZIG1hcmtlciAiJiN4MjVBRTsiLS0+Ci08IS0tRU5USVRZ
IGZsdG5zICImI3gyNUIxOyItLT4KLTwhLS1FTlRJVFkgeHV0cmkgIiYjeDI1QjM7Ii0tPgotPCEt
LUVOVElUWSBiaWd0cmlhbmdsZXVwICImI3gyNUIzOyItLT4KLTwhLS1FTlRJVFkgdXRyaWYgIiYj
eDI1QjQ7Ii0tPgotPCEtLUVOVElUWSBibGFja3RyaWFuZ2xlICImI3gyNUI0OyItLT4KLTwhLS1F
TlRJVFkgdXRyaSAiJiN4MjVCNTsiLS0+Ci08IS0tRU5USVRZIHRyaWFuZ2xlICImI3gyNUI1OyIt
LT4KLTwhLS1FTlRJVFkgcnRyaWYgIiYjeDI1Qjg7Ii0tPgotPCEtLUVOVElUWSBibGFja3RyaWFu
Z2xlcmlnaHQgIiYjeDI1Qjg7Ii0tPgotPCEtLUVOVElUWSBydHJpICImI3gyNUI5OyItLT4KLTwh
LS1FTlRJVFkgdHJpYW5nbGVyaWdodCAiJiN4MjVCOTsiLS0+Ci08IS0tRU5USVRZIHhkdHJpICIm
I3gyNUJEOyItLT4KLTwhLS1FTlRJVFkgYmlndHJpYW5nbGVkb3duICImI3gyNUJEOyItLT4KLTwh
LS1FTlRJVFkgZHRyaWYgIiYjeDI1QkU7Ii0tPgotPCEtLUVOVElUWSBibGFja3RyaWFuZ2xlZG93
biAiJiN4MjVCRTsiLS0+Ci08IS0tRU5USVRZIGR0cmkgIiYjeDI1QkY7Ii0tPgotPCEtLUVOVElU
WSB0cmlhbmdsZWRvd24gIiYjeDI1QkY7Ii0tPgotPCEtLUVOVElUWSBsdHJpZiAiJiN4MjVDMjsi
LS0+Ci08IS0tRU5USVRZIGJsYWNrdHJpYW5nbGVsZWZ0ICImI3gyNUMyOyItLT4KLTwhLS1FTlRJ
VFkgbHRyaSAiJiN4MjVDMzsiLS0+Ci08IS0tRU5USVRZIHRyaWFuZ2xlbGVmdCAiJiN4MjVDMzsi
LS0+Ci08IS0tRU5USVRZIGxveiAiJiN4MjVDQTsiLS0+Ci08IS0tRU5USVRZIGxvemVuZ2UgIiYj
eDI1Q0E7Ii0tPgotPCEtLUVOVElUWSBjaXIgIiYjeDI1Q0I7Ii0tPgotPCEtLUVOVElUWSB0cmlk
b3QgIiYjeDI1RUM7Ii0tPgotPCEtLUVOVElUWSB4Y2lyYyAiJiN4MjVFRjsiLS0+Ci08IS0tRU5U
SVRZIGJpZ2NpcmMgIiYjeDI1RUY7Ii0tPgotPCEtLUVOVElUWSB1bHRyaSAiJiN4MjVGODsiLS0+
Ci08IS0tRU5USVRZIHVydHJpICImI3gyNUY5OyItLT4KLTwhLS1FTlRJVFkgbGx0cmkgIiYjeDI1
RkE7Ii0tPgotPCEtLUVOVElUWSBFbXB0eVNtYWxsU3F1YXJlICImI3gyNUZCOyItLT4KLTwhLS1F
TlRJVFkgRmlsbGVkU21hbGxTcXVhcmUgIiYjeDI1RkM7Ii0tPgotPCEtLUVOVElUWSBzdGFyZiAi
JiN4MjYwNTsiLS0+Ci08IS0tRU5USVRZIGJpZ3N0YXIgIiYjeDI2MDU7Ii0tPgotPCEtLUVOVElU
WSBzdGFyICImI3gyNjA2OyItLT4KLTwhLS1FTlRJVFkgcGhvbmUgIiYjeDI2MEU7Ii0tPgotPCEt
LUVOVElUWSBmZW1hbGUgIiYjeDI2NDA7Ii0tPgotPCEtLUVOVElUWSBtYWxlICImI3gyNjQyOyIt
LT4KLTwhLS1FTlRJVFkgc3BhZGVzICImI3gyNjYwOyItLT4KLTwhLS1FTlRJVFkgc3BhZGVzdWl0
ICImI3gyNjYwOyItLT4KLTwhLS1FTlRJVFkgY2x1YnMgIiYjeDI2NjM7Ii0tPgotPCEtLUVOVElU
WSBjbHVic3VpdCAiJiN4MjY2MzsiLS0+Ci08IS0tRU5USVRZIGhlYXJ0cyAiJiN4MjY2NTsiLS0+
Ci08IS0tRU5USVRZIGhlYXJ0c3VpdCAiJiN4MjY2NTsiLS0+Ci08IS0tRU5USVRZIGRpYW1zICIm
I3gyNjY2OyItLT4KLTwhLS1FTlRJVFkgZGlhbW9uZHN1aXQgIiYjeDI2NjY7Ii0tPgotPCEtLUVO
VElUWSBzdW5nICImI3gyNjZBOyItLT4KLTwhLS1FTlRJVFkgZmxhdCAiJiN4MjY2RDsiLS0+Ci08
IS0tRU5USVRZIG5hdHVyICImI3gyNjZFOyItLT4KLTwhLS1FTlRJVFkgbmF0dXJhbCAiJiN4MjY2
RTsiLS0+Ci08IS0tRU5USVRZIHNoYXJwICImI3gyNjZGOyItLT4KLTwhLS1FTlRJVFkgY2hlY2sg
IiYjeDI3MTM7Ii0tPgotPCEtLUVOVElUWSBjaGVja21hcmsgIiYjeDI3MTM7Ii0tPgotPCEtLUVO
VElUWSBjcm9zcyAiJiN4MjcxNzsiLS0+Ci08IS0tRU5USVRZIG1hbHQgIiYjeDI3MjA7Ii0tPgot
PCEtLUVOVElUWSBtYWx0ZXNlICImI3gyNzIwOyItLT4KLTwhLS1FTlRJVFkgc2V4dCAiJiN4Mjcz
NjsiLS0+Ci08IS0tRU5USVRZIFZlcnRpY2FsU2VwYXJhdG9yICImI3gyNzU4OyItLT4KLTwhLS1F
TlRJVFkgbGJicmsgIiYjeDI3NzI7Ii0tPgotPCEtLUVOVElUWSByYmJyayAiJiN4Mjc3MzsiLS0+
Ci08IS0tRU5USVRZIGJzb2xoc3ViICImI3gyN0M4OyItLT4KLTwhLS1FTlRJVFkgc3VwaHNvbCAi
JiN4MjdDOTsiLS0+Ci08IS0tRU5USVRZIGxvYnJrICImI3gyN0U2OyItLT4KLTwhLS1FTlRJVFkg
TGVmdERvdWJsZUJyYWNrZXQgIiYjeDI3RTY7Ii0tPgotPCEtLUVOVElUWSByb2JyayAiJiN4MjdF
NzsiLS0+Ci08IS0tRU5USVRZIFJpZ2h0RG91YmxlQnJhY2tldCAiJiN4MjdFNzsiLS0+Ci08IS0t
RU5USVRZIGxhbmcgIiYjeDI3RTg7Ii0tPgotPCEtLUVOVElUWSBMZWZ0QW5nbGVCcmFja2V0ICIm
I3gyN0U4OyItLT4KLTwhLS1FTlRJVFkgbGFuZ2xlICImI3gyN0U4OyItLT4KLTwhLS1FTlRJVFkg
cmFuZyAiJiN4MjdFOTsiLS0+Ci08IS0tRU5USVRZIFJpZ2h0QW5nbGVCcmFja2V0ICImI3gyN0U5
OyItLT4KLTwhLS1FTlRJVFkgcmFuZ2xlICImI3gyN0U5OyItLT4KLTwhLS1FTlRJVFkgTGFuZyAi
JiN4MjdFQTsiLS0+Ci08IS0tRU5USVRZIFJhbmcgIiYjeDI3RUI7Ii0tPgotPCEtLUVOVElUWSBs
b2FuZyAiJiN4MjdFQzsiLS0+Ci08IS0tRU5USVRZIHJvYW5nICImI3gyN0VEOyItLT4KLTwhLS1F
TlRJVFkgeGxhcnIgIiYjeDI3RjU7Ii0tPgotPCEtLUVOVElUWSBsb25nbGVmdGFycm93ICImI3gy
N0Y1OyItLT4KLTwhLS1FTlRJVFkgTG9uZ0xlZnRBcnJvdyAiJiN4MjdGNTsiLS0+Ci08IS0tRU5U
SVRZIHhyYXJyICImI3gyN0Y2OyItLT4KLTwhLS1FTlRJVFkgbG9uZ3JpZ2h0YXJyb3cgIiYjeDI3
RjY7Ii0tPgotPCEtLUVOVElUWSBMb25nUmlnaHRBcnJvdyAiJiN4MjdGNjsiLS0+Ci08IS0tRU5U
SVRZIHhoYXJyICImI3gyN0Y3OyItLT4KLTwhLS1FTlRJVFkgbG9uZ2xlZnRyaWdodGFycm93ICIm
I3gyN0Y3OyItLT4KLTwhLS1FTlRJVFkgTG9uZ0xlZnRSaWdodEFycm93ICImI3gyN0Y3OyItLT4K
LTwhLS1FTlRJVFkgeGxBcnIgIiYjeDI3Rjg7Ii0tPgotPCEtLUVOVElUWSBMb25nbGVmdGFycm93
ICImI3gyN0Y4OyItLT4KLTwhLS1FTlRJVFkgRG91YmxlTG9uZ0xlZnRBcnJvdyAiJiN4MjdGODsi
LS0+Ci08IS0tRU5USVRZIHhyQXJyICImI3gyN0Y5OyItLT4KLTwhLS1FTlRJVFkgTG9uZ3JpZ2h0
YXJyb3cgIiYjeDI3Rjk7Ii0tPgotPCEtLUVOVElUWSBEb3VibGVMb25nUmlnaHRBcnJvdyAiJiN4
MjdGOTsiLS0+Ci08IS0tRU5USVRZIHhoQXJyICImI3gyN0ZBOyItLT4KLTwhLS1FTlRJVFkgTG9u
Z2xlZnRyaWdodGFycm93ICImI3gyN0ZBOyItLT4KLTwhLS1FTlRJVFkgRG91YmxlTG9uZ0xlZnRS
aWdodEFycm93ICImI3gyN0ZBOyItLT4KLTwhLS1FTlRJVFkgeG1hcCAiJiN4MjdGQzsiLS0+Ci08
IS0tRU5USVRZIGxvbmdtYXBzdG8gIiYjeDI3RkM7Ii0tPgotPCEtLUVOVElUWSBkemlncmFyciAi
JiN4MjdGRjsiLS0+Ci08IS0tRU5USVRZIG52bEFyciAiJiN4MjkwMjsiLS0+Ci08IS0tRU5USVRZ
IG52ckFyciAiJiN4MjkwMzsiLS0+Ci08IS0tRU5USVRZIG52SGFyciAiJiN4MjkwNDsiLS0+Ci08
IS0tRU5USVRZIE1hcCAiJiN4MjkwNTsiLS0+Ci08IS0tRU5USVRZIGxiYXJyICImI3gyOTBDOyIt
LT4KLTwhLS1FTlRJVFkgcmJhcnIgIiYjeDI5MEQ7Ii0tPgotPCEtLUVOVElUWSBia2Fyb3cgIiYj
eDI5MEQ7Ii0tPgotPCEtLUVOVElUWSBsQmFyciAiJiN4MjkwRTsiLS0+Ci08IS0tRU5USVRZIHJC
YXJyICImI3gyOTBGOyItLT4KLTwhLS1FTlRJVFkgZGJrYXJvdyAiJiN4MjkwRjsiLS0+Ci08IS0t
RU5USVRZIFJCYXJyICImI3gyOTEwOyItLT4KLTwhLS1FTlRJVFkgZHJia2Fyb3cgIiYjeDI5MTA7
Ii0tPgotPCEtLUVOVElUWSBERG90cmFoZCAiJiN4MjkxMTsiLS0+Ci08IS0tRU5USVRZIFVwQXJy
b3dCYXIgIiYjeDI5MTI7Ii0tPgotPCEtLUVOVElUWSBEb3duQXJyb3dCYXIgIiYjeDI5MTM7Ii0t
PgotPCEtLUVOVElUWSBSYXJydGwgIiYjeDI5MTY7Ii0tPgotPCEtLUVOVElUWSBsYXRhaWwgIiYj
eDI5MTk7Ii0tPgotPCEtLUVOVElUWSByYXRhaWwgIiYjeDI5MUE7Ii0tPgotPCEtLUVOVElUWSBs
QXRhaWwgIiYjeDI5MUI7Ii0tPgotPCEtLUVOVElUWSByQXRhaWwgIiYjeDI5MUM7Ii0tPgotPCEt
LUVOVElUWSBsYXJyZnMgIiYjeDI5MUQ7Ii0tPgotPCEtLUVOVElUWSByYXJyZnMgIiYjeDI5MUU7
Ii0tPgotPCEtLUVOVElUWSBsYXJyYmZzICImI3gyOTFGOyItLT4KLTwhLS1FTlRJVFkgcmFycmJm
cyAiJiN4MjkyMDsiLS0+Ci08IS0tRU5USVRZIG53YXJoayAiJiN4MjkyMzsiLS0+Ci08IS0tRU5U
SVRZIG5lYXJoayAiJiN4MjkyNDsiLS0+Ci08IS0tRU5USVRZIHNlYXJoayAiJiN4MjkyNTsiLS0+
Ci08IS0tRU5USVRZIGhrc2Vhcm93ICImI3gyOTI1OyItLT4KLTwhLS1FTlRJVFkgc3dhcmhrICIm
I3gyOTI2OyItLT4KLTwhLS1FTlRJVFkgaGtzd2Fyb3cgIiYjeDI5MjY7Ii0tPgotPCEtLUVOVElU
WSBud25lYXIgIiYjeDI5Mjc7Ii0tPgotPCEtLUVOVElUWSBuZXNlYXIgIiYjeDI5Mjg7Ii0tPgot
PCEtLUVOVElUWSB0b2VhICImI3gyOTI4OyItLT4KLTwhLS1FTlRJVFkgc2Vzd2FyICImI3gyOTI5
OyItLT4KLTwhLS1FTlRJVFkgdG9zYSAiJiN4MjkyOTsiLS0+Ci08IS0tRU5USVRZIHN3bndhciAi
JiN4MjkyQTsiLS0+Ci08IS0tRU5USVRZIHJhcnJjICImI3gyOTMzOyItLT4KLTwhLS1FTlRJVFkg
bnJhcnJjICImI3gyOTMzOyYjeDMzODsiLS0+Ci08IS0tRU5USVRZIGN1ZGFycnIgIiYjeDI5MzU7
Ii0tPgotPCEtLUVOVElUWSBsZGNhICImI3gyOTM2OyItLT4KLTwhLS1FTlRJVFkgcmRjYSAiJiN4
MjkzNzsiLS0+Ci08IS0tRU5USVRZIGN1ZGFycmwgIiYjeDI5Mzg7Ii0tPgotPCEtLUVOVElUWSBs
YXJycGwgIiYjeDI5Mzk7Ii0tPgotPCEtLUVOVElUWSBjdXJhcnJtICImI3gyOTNDOyItLT4KLTwh
LS1FTlRJVFkgY3VsYXJycCAiJiN4MjkzRDsiLS0+Ci08IS0tRU5USVRZIHJhcnJwbCAiJiN4Mjk0
NTsiLS0+Ci08IS0tRU5USVRZIGhhcnJjaXIgIiYjeDI5NDg7Ii0tPgotPCEtLUVOVElUWSBVYXJy
b2NpciAiJiN4Mjk0OTsiLS0+Ci08IS0tRU5USVRZIGx1cmRzaGFyICImI3gyOTRBOyItLT4KLTwh
LS1FTlRJVFkgbGRydXNoYXIgIiYjeDI5NEI7Ii0tPgotPCEtLUVOVElUWSBMZWZ0UmlnaHRWZWN0
b3IgIiYjeDI5NEU7Ii0tPgotPCEtLUVOVElUWSBSaWdodFVwRG93blZlY3RvciAiJiN4Mjk0Rjsi
LS0+Ci08IS0tRU5USVRZIERvd25MZWZ0UmlnaHRWZWN0b3IgIiYjeDI5NTA7Ii0tPgotPCEtLUVO
VElUWSBMZWZ0VXBEb3duVmVjdG9yICImI3gyOTUxOyItLT4KLTwhLS1FTlRJVFkgTGVmdFZlY3Rv
ckJhciAiJiN4Mjk1MjsiLS0+Ci08IS0tRU5USVRZIFJpZ2h0VmVjdG9yQmFyICImI3gyOTUzOyIt
LT4KLTwhLS1FTlRJVFkgUmlnaHRVcFZlY3RvckJhciAiJiN4Mjk1NDsiLS0+Ci08IS0tRU5USVRZ
IFJpZ2h0RG93blZlY3RvckJhciAiJiN4Mjk1NTsiLS0+Ci08IS0tRU5USVRZIERvd25MZWZ0VmVj
dG9yQmFyICImI3gyOTU2OyItLT4KLTwhLS1FTlRJVFkgRG93blJpZ2h0VmVjdG9yQmFyICImI3gy
OTU3OyItLT4KLTwhLS1FTlRJVFkgTGVmdFVwVmVjdG9yQmFyICImI3gyOTU4OyItLT4KLTwhLS1F
TlRJVFkgTGVmdERvd25WZWN0b3JCYXIgIiYjeDI5NTk7Ii0tPgotPCEtLUVOVElUWSBMZWZ0VGVl
VmVjdG9yICImI3gyOTVBOyItLT4KLTwhLS1FTlRJVFkgUmlnaHRUZWVWZWN0b3IgIiYjeDI5NUI7
Ii0tPgotPCEtLUVOVElUWSBSaWdodFVwVGVlVmVjdG9yICImI3gyOTVDOyItLT4KLTwhLS1FTlRJ
VFkgUmlnaHREb3duVGVlVmVjdG9yICImI3gyOTVEOyItLT4KLTwhLS1FTlRJVFkgRG93bkxlZnRU
ZWVWZWN0b3IgIiYjeDI5NUU7Ii0tPgotPCEtLUVOVElUWSBEb3duUmlnaHRUZWVWZWN0b3IgIiYj
eDI5NUY7Ii0tPgotPCEtLUVOVElUWSBMZWZ0VXBUZWVWZWN0b3IgIiYjeDI5NjA7Ii0tPgotPCEt
LUVOVElUWSBMZWZ0RG93blRlZVZlY3RvciAiJiN4Mjk2MTsiLS0+Ci08IS0tRU5USVRZIGxIYXIg
IiYjeDI5NjI7Ii0tPgotPCEtLUVOVElUWSB1SGFyICImI3gyOTYzOyItLT4KLTwhLS1FTlRJVFkg
ckhhciAiJiN4Mjk2NDsiLS0+Ci08IS0tRU5USVRZIGRIYXIgIiYjeDI5NjU7Ii0tPgotPCEtLUVO
VElUWSBsdXJ1aGFyICImI3gyOTY2OyItLT4KLTwhLS1FTlRJVFkgbGRyZGhhciAiJiN4Mjk2Nzsi
LS0+Ci08IS0tRU5USVRZIHJ1bHVoYXIgIiYjeDI5Njg7Ii0tPgotPCEtLUVOVElUWSByZGxkaGFy
ICImI3gyOTY5OyItLT4KLTwhLS1FTlRJVFkgbGhhcnVsICImI3gyOTZBOyItLT4KLTwhLS1FTlRJ
VFkgbGxoYXJkICImI3gyOTZCOyItLT4KLTwhLS1FTlRJVFkgcmhhcnVsICImI3gyOTZDOyItLT4K
LTwhLS1FTlRJVFkgbHJoYXJkICImI3gyOTZEOyItLT4KLTwhLS1FTlRJVFkgdWRoYXIgIiYjeDI5
NkU7Ii0tPgotPCEtLUVOVElUWSBVcEVxdWlsaWJyaXVtICImI3gyOTZFOyItLT4KLTwhLS1FTlRJ
VFkgZHVoYXIgIiYjeDI5NkY7Ii0tPgotPCEtLUVOVElUWSBSZXZlcnNlVXBFcXVpbGlicml1bSAi
JiN4Mjk2RjsiLS0+Ci08IS0tRU5USVRZIFJvdW5kSW1wbGllcyAiJiN4Mjk3MDsiLS0+Ci08IS0t
RU5USVRZIGVyYXJyICImI3gyOTcxOyItLT4KLTwhLS1FTlRJVFkgc2ltcmFyciAiJiN4Mjk3Mjsi
LS0+Ci08IS0tRU5USVRZIGxhcnJzaW0gIiYjeDI5NzM7Ii0tPgotPCEtLUVOVElUWSByYXJyc2lt
ICImI3gyOTc0OyItLT4KLTwhLS1FTlRJVFkgcmFycmFwICImI3gyOTc1OyItLT4KLTwhLS1FTlRJ
VFkgbHRsYXJyICImI3gyOTc2OyItLT4KLTwhLS1FTlRJVFkgZ3RyYXJyICImI3gyOTc4OyItLT4K
LTwhLS1FTlRJVFkgc3VicmFyciAiJiN4Mjk3OTsiLS0+Ci08IS0tRU5USVRZIHN1cGxhcnIgIiYj
eDI5N0I7Ii0tPgotPCEtLUVOVElUWSBsZmlzaHQgIiYjeDI5N0M7Ii0tPgotPCEtLUVOVElUWSBy
ZmlzaHQgIiYjeDI5N0Q7Ii0tPgotPCEtLUVOVElUWSB1ZmlzaHQgIiYjeDI5N0U7Ii0tPgotPCEt
LUVOVElUWSBkZmlzaHQgIiYjeDI5N0Y7Ii0tPgotPCEtLUVOVElUWSBsb3BhciAiJiN4Mjk4NTsi
LS0+Ci08IS0tRU5USVRZIHJvcGFyICImI3gyOTg2OyItLT4KLTwhLS1FTlRJVFkgbGJya2UgIiYj
eDI5OEI7Ii0tPgotPCEtLUVOVElUWSByYnJrZSAiJiN4Mjk4QzsiLS0+Ci08IS0tRU5USVRZIGxi
cmtzbHUgIiYjeDI5OEQ7Ii0tPgotPCEtLUVOVElUWSByYnJrc2xkICImI3gyOThFOyItLT4KLTwh
LS1FTlRJVFkgbGJya3NsZCAiJiN4Mjk4RjsiLS0+Ci08IS0tRU5USVRZIHJicmtzbHUgIiYjeDI5
OTA7Ii0tPgotPCEtLUVOVElUWSBsYW5nZCAiJiN4Mjk5MTsiLS0+Ci08IS0tRU5USVRZIHJhbmdk
ICImI3gyOTkyOyItLT4KLTwhLS1FTlRJVFkgbHBhcmx0ICImI3gyOTkzOyItLT4KLTwhLS1FTlRJ
VFkgcnBhcmd0ICImI3gyOTk0OyItLT4KLTwhLS1FTlRJVFkgZ3RsUGFyICImI3gyOTk1OyItLT4K
LTwhLS1FTlRJVFkgbHRyUGFyICImI3gyOTk2OyItLT4KLTwhLS1FTlRJVFkgdnppZ3phZyAiJiN4
Mjk5QTsiLS0+Ci08IS0tRU5USVRZIHZhbmdydCAiJiN4Mjk5QzsiLS0+Ci08IS0tRU5USVRZIGFu
Z3J0dmJkICImI3gyOTlEOyItLT4KLTwhLS1FTlRJVFkgYW5nZSAiJiN4MjlBNDsiLS0+Ci08IS0t
RU5USVRZIHJhbmdlICImI3gyOUE1OyItLT4KLTwhLS1FTlRJVFkgZHdhbmdsZSAiJiN4MjlBNjsi
LS0+Ci08IS0tRU5USVRZIHV3YW5nbGUgIiYjeDI5QTc7Ii0tPgotPCEtLUVOVElUWSBhbmdtc2Rh
YSAiJiN4MjlBODsiLS0+Ci08IS0tRU5USVRZIGFuZ21zZGFiICImI3gyOUE5OyItLT4KLTwhLS1F
TlRJVFkgYW5nbXNkYWMgIiYjeDI5QUE7Ii0tPgotPCEtLUVOVElUWSBhbmdtc2RhZCAiJiN4MjlB
QjsiLS0+Ci08IS0tRU5USVRZIGFuZ21zZGFlICImI3gyOUFDOyItLT4KLTwhLS1FTlRJVFkgYW5n
bXNkYWYgIiYjeDI5QUQ7Ii0tPgotPCEtLUVOVElUWSBhbmdtc2RhZyAiJiN4MjlBRTsiLS0+Ci08
IS0tRU5USVRZIGFuZ21zZGFoICImI3gyOUFGOyItLT4KLTwhLS1FTlRJVFkgYmVtcHR5diAiJiN4
MjlCMDsiLS0+Ci08IS0tRU5USVRZIGRlbXB0eXYgIiYjeDI5QjE7Ii0tPgotPCEtLUVOVElUWSBj
ZW1wdHl2ICImI3gyOUIyOyItLT4KLTwhLS1FTlRJVFkgcmFlbXB0eXYgIiYjeDI5QjM7Ii0tPgot
PCEtLUVOVElUWSBsYWVtcHR5diAiJiN4MjlCNDsiLS0+Ci08IS0tRU5USVRZIG9oYmFyICImI3gy
OUI1OyItLT4KLTwhLS1FTlRJVFkgb21pZCAiJiN4MjlCNjsiLS0+Ci08IS0tRU5USVRZIG9wYXIg
IiYjeDI5Qjc7Ii0tPgotPCEtLUVOVElUWSBvcGVycCAiJiN4MjlCOTsiLS0+Ci08IS0tRU5USVRZ
IG9sY3Jvc3MgIiYjeDI5QkI7Ii0tPgotPCEtLUVOVElUWSBvZHNvbGQgIiYjeDI5QkM7Ii0tPgot
PCEtLUVOVElUWSBvbGNpciAiJiN4MjlCRTsiLS0+Ci08IS0tRU5USVRZIG9mY2lyICImI3gyOUJG
OyItLT4KLTwhLS1FTlRJVFkgb2x0ICImI3gyOUMwOyItLT4KLTwhLS1FTlRJVFkgb2d0ICImI3gy
OUMxOyItLT4KLTwhLS1FTlRJVFkgY2lyc2NpciAiJiN4MjlDMjsiLS0+Ci08IS0tRU5USVRZIGNp
ckUgIiYjeDI5QzM7Ii0tPgotPCEtLUVOVElUWSBzb2xiICImI3gyOUM0OyItLT4KLTwhLS1FTlRJ
VFkgYnNvbGIgIiYjeDI5QzU7Ii0tPgotPCEtLUVOVElUWSBib3hib3ggIiYjeDI5Qzk7Ii0tPgot
PCEtLUVOVElUWSB0cmlzYiAiJiN4MjlDRDsiLS0+Ci08IS0tRU5USVRZIHJ0cmlsdHJpICImI3gy
OUNFOyItLT4KLTwhLS1FTlRJVFkgTGVmdFRyaWFuZ2xlQmFyICImI3gyOUNGOyItLT4KLTwhLS1F
TlRJVFkgTm90TGVmdFRyaWFuZ2xlQmFyICImI3gyOUNGOyYjeDMzODsiLS0+Ci08IS0tRU5USVRZ
IFJpZ2h0VHJpYW5nbGVCYXIgIiYjeDI5RDA7Ii0tPgotPCEtLUVOVElUWSBOb3RSaWdodFRyaWFu
Z2xlQmFyICImI3gyOUQwOyYjeDMzODsiLS0+Ci08IS0tRU5USVRZIGlpbmZpbiAiJiN4MjlEQzsi
LS0+Ci08IS0tRU5USVRZIGluZmludGllICImI3gyOUREOyItLT4KLTwhLS1FTlRJVFkgbnZpbmZp
biAiJiN4MjlERTsiLS0+Ci08IS0tRU5USVRZIGVwYXJzbCAiJiN4MjlFMzsiLS0+Ci08IS0tRU5U
SVRZIHNtZXBhcnNsICImI3gyOUU0OyItLT4KLTwhLS1FTlRJVFkgZXF2cGFyc2wgIiYjeDI5RTU7
Ii0tPgotPCEtLUVOVElUWSBsb3pmICImI3gyOUVCOyItLT4KLTwhLS1FTlRJVFkgYmxhY2tsb3pl
bmdlICImI3gyOUVCOyItLT4KLTwhLS1FTlRJVFkgUnVsZURlbGF5ZWQgIiYjeDI5RjQ7Ii0tPgot
PCEtLUVOVElUWSBkc29sICImI3gyOUY2OyItLT4KLTwhLS1FTlRJVFkgeG9kb3QgIiYjeDJBMDA7
Ii0tPgotPCEtLUVOVElUWSBiaWdvZG90ICImI3gyQTAwOyItLT4KLTwhLS1FTlRJVFkgeG9wbHVz
ICImI3gyQTAxOyItLT4KLTwhLS1FTlRJVFkgYmlnb3BsdXMgIiYjeDJBMDE7Ii0tPgotPCEtLUVO
VElUWSB4b3RpbWUgIiYjeDJBMDI7Ii0tPgotPCEtLUVOVElUWSBiaWdvdGltZXMgIiYjeDJBMDI7
Ii0tPgotPCEtLUVOVElUWSB4dXBsdXMgIiYjeDJBMDQ7Ii0tPgotPCEtLUVOVElUWSBiaWd1cGx1
cyAiJiN4MkEwNDsiLS0+Ci08IS0tRU5USVRZIHhzcWN1cCAiJiN4MkEwNjsiLS0+Ci08IS0tRU5U
SVRZIGJpZ3NxY3VwICImI3gyQTA2OyItLT4KLTwhLS1FTlRJVFkgcWludCAiJiN4MkEwQzsiLS0+
Ci08IS0tRU5USVRZIGlpaWludCAiJiN4MkEwQzsiLS0+Ci08IS0tRU5USVRZIGZwYXJ0aW50ICIm
I3gyQTBEOyItLT4KLTwhLS1FTlRJVFkgY2lyZm5pbnQgIiYjeDJBMTA7Ii0tPgotPCEtLUVOVElU
WSBhd2ludCAiJiN4MkExMTsiLS0+Ci08IS0tRU5USVRZIHJwcG9saW50ICImI3gyQTEyOyItLT4K
LTwhLS1FTlRJVFkgc2Nwb2xpbnQgIiYjeDJBMTM7Ii0tPgotPCEtLUVOVElUWSBucG9saW50ICIm
I3gyQTE0OyItLT4KLTwhLS1FTlRJVFkgcG9pbnRpbnQgIiYjeDJBMTU7Ii0tPgotPCEtLUVOVElU
WSBxdWF0aW50ICImI3gyQTE2OyItLT4KLTwhLS1FTlRJVFkgaW50bGFyaGsgIiYjeDJBMTc7Ii0t
PgotPCEtLUVOVElUWSBwbHVzY2lyICImI3gyQTIyOyItLT4KLTwhLS1FTlRJVFkgcGx1c2FjaXIg
IiYjeDJBMjM7Ii0tPgotPCEtLUVOVElUWSBzaW1wbHVzICImI3gyQTI0OyItLT4KLTwhLS1FTlRJ
VFkgcGx1c2R1ICImI3gyQTI1OyItLT4KLTwhLS1FTlRJVFkgcGx1c3NpbSAiJiN4MkEyNjsiLS0+
Ci08IS0tRU5USVRZIHBsdXN0d28gIiYjeDJBMjc7Ii0tPgotPCEtLUVOVElUWSBtY29tbWEgIiYj
eDJBMjk7Ii0tPgotPCEtLUVOVElUWSBtaW51c2R1ICImI3gyQTJBOyItLT4KLTwhLS1FTlRJVFkg
bG9wbHVzICImI3gyQTJEOyItLT4KLTwhLS1FTlRJVFkgcm9wbHVzICImI3gyQTJFOyItLT4KLTwh
LS1FTlRJVFkgQ3Jvc3MgIiYjeDJBMkY7Ii0tPgotPCEtLUVOVElUWSB0aW1lc2QgIiYjeDJBMzA7
Ii0tPgotPCEtLUVOVElUWSB0aW1lc2JhciAiJiN4MkEzMTsiLS0+Ci08IS0tRU5USVRZIHNtYXNo
cCAiJiN4MkEzMzsiLS0+Ci08IS0tRU5USVRZIGxvdGltZXMgIiYjeDJBMzQ7Ii0tPgotPCEtLUVO
VElUWSByb3RpbWVzICImI3gyQTM1OyItLT4KLTwhLS1FTlRJVFkgb3RpbWVzYXMgIiYjeDJBMzY7
Ii0tPgotPCEtLUVOVElUWSBPdGltZXMgIiYjeDJBMzc7Ii0tPgotPCEtLUVOVElUWSBvZGl2ICIm
I3gyQTM4OyItLT4KLTwhLS1FTlRJVFkgdHJpcGx1cyAiJiN4MkEzOTsiLS0+Ci08IS0tRU5USVRZ
IHRyaW1pbnVzICImI3gyQTNBOyItLT4KLTwhLS1FTlRJVFkgdHJpdGltZSAiJiN4MkEzQjsiLS0+
Ci08IS0tRU5USVRZIGlwcm9kICImI3gyQTNDOyItLT4KLTwhLS1FTlRJVFkgaW50cHJvZCAiJiN4
MkEzQzsiLS0+Ci08IS0tRU5USVRZIGFtYWxnICImI3gyQTNGOyItLT4KLTwhLS1FTlRJVFkgY2Fw
ZG90ICImI3gyQTQwOyItLT4KLTwhLS1FTlRJVFkgbmN1cCAiJiN4MkE0MjsiLS0+Ci08IS0tRU5U
SVRZIG5jYXAgIiYjeDJBNDM7Ii0tPgotPCEtLUVOVElUWSBjYXBhbmQgIiYjeDJBNDQ7Ii0tPgot
PCEtLUVOVElUWSBjdXBvciAiJiN4MkE0NTsiLS0+Ci08IS0tRU5USVRZIGN1cGNhcCAiJiN4MkE0
NjsiLS0+Ci08IS0tRU5USVRZIGNhcGN1cCAiJiN4MkE0NzsiLS0+Ci08IS0tRU5USVRZIGN1cGJy
Y2FwICImI3gyQTQ4OyItLT4KLTwhLS1FTlRJVFkgY2FwYnJjdXAgIiYjeDJBNDk7Ii0tPgotPCEt
LUVOVElUWSBjdXBjdXAgIiYjeDJBNEE7Ii0tPgotPCEtLUVOVElUWSBjYXBjYXAgIiYjeDJBNEI7
Ii0tPgotPCEtLUVOVElUWSBjY3VwcyAiJiN4MkE0QzsiLS0+Ci08IS0tRU5USVRZIGNjYXBzICIm
I3gyQTREOyItLT4KLTwhLS1FTlRJVFkgY2N1cHNzbSAiJiN4MkE1MDsiLS0+Ci08IS0tRU5USVRZ
IEFuZCAiJiN4MkE1MzsiLS0+Ci08IS0tRU5USVRZIE9yICImI3gyQTU0OyItLT4KLTwhLS1FTlRJ
VFkgYW5kYW5kICImI3gyQTU1OyItLT4KLTwhLS1FTlRJVFkgb3JvciAiJiN4MkE1NjsiLS0+Ci08
IS0tRU5USVRZIG9yc2xvcGUgIiYjeDJBNTc7Ii0tPgotPCEtLUVOVElUWSBhbmRzbG9wZSAiJiN4
MkE1ODsiLS0+Ci08IS0tRU5USVRZIGFuZHYgIiYjeDJBNUE7Ii0tPgotPCEtLUVOVElUWSBvcnYg
IiYjeDJBNUI7Ii0tPgotPCEtLUVOVElUWSBhbmRkICImI3gyQTVDOyItLT4KLTwhLS1FTlRJVFkg
b3JkICImI3gyQTVEOyItLT4KLTwhLS1FTlRJVFkgd2VkYmFyICImI3gyQTVGOyItLT4KLTwhLS1F
TlRJVFkgc2RvdGUgIiYjeDJBNjY7Ii0tPgotPCEtLUVOVElUWSBzaW1kb3QgIiYjeDJBNkE7Ii0t
PgotPCEtLUVOVElUWSBjb25nZG90ICImI3gyQTZEOyItLT4KLTwhLS1FTlRJVFkgbmNvbmdkb3Qg
IiYjeDJBNkQ7JiN4MzM4OyItLT4KLTwhLS1FTlRJVFkgZWFzdGVyICImI3gyQTZFOyItLT4KLTwh
LS1FTlRJVFkgYXBhY2lyICImI3gyQTZGOyItLT4KLTwhLS1FTlRJVFkgYXBFICImI3gyQTcwOyIt
LT4KLTwhLS1FTlRJVFkgbmFwRSAiJiN4MkE3MDsmI3gzMzg7Ii0tPgotPCEtLUVOVElUWSBlcGx1
cyAiJiN4MkE3MTsiLS0+Ci08IS0tRU5USVRZIHBsdXNlICImI3gyQTcyOyItLT4KLTwhLS1FTlRJ
VFkgRXNpbSAiJiN4MkE3MzsiLS0+Ci08IS0tRU5USVRZIENvbG9uZSAiJiN4MkE3NDsiLS0+Ci08
IS0tRU5USVRZIEVxdWFsICImI3gyQTc1OyItLT4KLTwhLS1FTlRJVFkgZUREb3QgIiYjeDJBNzc7
Ii0tPgotPCEtLUVOVElUWSBkZG90c2VxICImI3gyQTc3OyItLT4KLTwhLS1FTlRJVFkgZXF1aXZE
RCAiJiN4MkE3ODsiLS0+Ci08IS0tRU5USVRZIGx0Y2lyICImI3gyQTc5OyItLT4KLTwhLS1FTlRJ
VFkgZ3RjaXIgIiYjeDJBN0E7Ii0tPgotPCEtLUVOVElUWSBsdHF1ZXN0ICImI3gyQTdCOyItLT4K
LTwhLS1FTlRJVFkgZ3RxdWVzdCAiJiN4MkE3QzsiLS0+Ci08IS0tRU5USVRZIGxlcyAiJiN4MkE3
RDsiLS0+Ci08IS0tRU5USVRZIExlc3NTbGFudEVxdWFsICImI3gyQTdEOyItLT4KLTwhLS1FTlRJ
VFkgbGVxc2xhbnQgIiYjeDJBN0Q7Ii0tPgotPCEtLUVOVElUWSBubGVzICImI3gyQTdEOyYjeDMz
ODsiLS0+Ci08IS0tRU5USVRZIE5vdExlc3NTbGFudEVxdWFsICImI3gyQTdEOyYjeDMzODsiLS0+
Ci08IS0tRU5USVRZIG5sZXFzbGFudCAiJiN4MkE3RDsmI3gzMzg7Ii0tPgotPCEtLUVOVElUWSBn
ZXMgIiYjeDJBN0U7Ii0tPgotPCEtLUVOVElUWSBHcmVhdGVyU2xhbnRFcXVhbCAiJiN4MkE3RTsi
LS0+Ci08IS0tRU5USVRZIGdlcXNsYW50ICImI3gyQTdFOyItLT4KLTwhLS1FTlRJVFkgbmdlcyAi
JiN4MkE3RTsmI3gzMzg7Ii0tPgotPCEtLUVOVElUWSBOb3RHcmVhdGVyU2xhbnRFcXVhbCAiJiN4
MkE3RTsmI3gzMzg7Ii0tPgotPCEtLUVOVElUWSBuZ2Vxc2xhbnQgIiYjeDJBN0U7JiN4MzM4OyIt
LT4KLTwhLS1FTlRJVFkgbGVzZG90ICImI3gyQTdGOyItLT4KLTwhLS1FTlRJVFkgZ2VzZG90ICIm
I3gyQTgwOyItLT4KLTwhLS1FTlRJVFkgbGVzZG90byAiJiN4MkE4MTsiLS0+Ci08IS0tRU5USVRZ
IGdlc2RvdG8gIiYjeDJBODI7Ii0tPgotPCEtLUVOVElUWSBsZXNkb3RvciAiJiN4MkE4MzsiLS0+
Ci08IS0tRU5USVRZIGdlc2RvdG9sICImI3gyQTg0OyItLT4KLTwhLS1FTlRJVFkgbGFwICImI3gy
QTg1OyItLT4KLTwhLS1FTlRJVFkgbGVzc2FwcHJveCAiJiN4MkE4NTsiLS0+Ci08IS0tRU5USVRZ
IGdhcCAiJiN4MkE4NjsiLS0+Ci08IS0tRU5USVRZIGd0cmFwcHJveCAiJiN4MkE4NjsiLS0+Ci08
IS0tRU5USVRZIGxuZSAiJiN4MkE4NzsiLS0+Ci08IS0tRU5USVRZIGxuZXEgIiYjeDJBODc7Ii0t
PgotPCEtLUVOVElUWSBnbmUgIiYjeDJBODg7Ii0tPgotPCEtLUVOVElUWSBnbmVxICImI3gyQTg4
OyItLT4KLTwhLS1FTlRJVFkgbG5hcCAiJiN4MkE4OTsiLS0+Ci08IS0tRU5USVRZIGxuYXBwcm94
ICImI3gyQTg5OyItLT4KLTwhLS1FTlRJVFkgZ25hcCAiJiN4MkE4QTsiLS0+Ci08IS0tRU5USVRZ
IGduYXBwcm94ICImI3gyQThBOyItLT4KLTwhLS1FTlRJVFkgbEVnICImI3gyQThCOyItLT4KLTwh
LS1FTlRJVFkgbGVzc2VxcWd0ciAiJiN4MkE4QjsiLS0+Ci08IS0tRU5USVRZIGdFbCAiJiN4MkE4
QzsiLS0+Ci08IS0tRU5USVRZIGd0cmVxcWxlc3MgIiYjeDJBOEM7Ii0tPgotPCEtLUVOVElUWSBs
c2ltZSAiJiN4MkE4RDsiLS0+Ci08IS0tRU5USVRZIGdzaW1lICImI3gyQThFOyItLT4KLTwhLS1F
TlRJVFkgbHNpbWcgIiYjeDJBOEY7Ii0tPgotPCEtLUVOVElUWSBnc2ltbCAiJiN4MkE5MDsiLS0+
Ci08IS0tRU5USVRZIGxnRSAiJiN4MkE5MTsiLS0+Ci08IS0tRU5USVRZIGdsRSAiJiN4MkE5Mjsi
LS0+Ci08IS0tRU5USVRZIGxlc2dlcyAiJiN4MkE5MzsiLS0+Ci08IS0tRU5USVRZIGdlc2xlcyAi
JiN4MkE5NDsiLS0+Ci08IS0tRU5USVRZIGVscyAiJiN4MkE5NTsiLS0+Ci08IS0tRU5USVRZIGVx
c2xhbnRsZXNzICImI3gyQTk1OyItLT4KLTwhLS1FTlRJVFkgZWdzICImI3gyQTk2OyItLT4KLTwh
LS1FTlRJVFkgZXFzbGFudGd0ciAiJiN4MkE5NjsiLS0+Ci08IS0tRU5USVRZIGVsc2RvdCAiJiN4
MkE5NzsiLS0+Ci08IS0tRU5USVRZIGVnc2RvdCAiJiN4MkE5ODsiLS0+Ci08IS0tRU5USVRZIGVs
ICImI3gyQTk5OyItLT4KLTwhLS1FTlRJVFkgZWcgIiYjeDJBOUE7Ii0tPgotPCEtLUVOVElUWSBz
aW1sICImI3gyQTlEOyItLT4KLTwhLS1FTlRJVFkgc2ltZyAiJiN4MkE5RTsiLS0+Ci08IS0tRU5U
SVRZIHNpbWxFICImI3gyQTlGOyItLT4KLTwhLS1FTlRJVFkgc2ltZ0UgIiYjeDJBQTA7Ii0tPgot
PCEtLUVOVElUWSBMZXNzTGVzcyAiJiN4MkFBMTsiLS0+Ci08IS0tRU5USVRZIE5vdE5lc3RlZExl
c3NMZXNzICImI3gyQUExOyYjeDMzODsiLS0+Ci08IS0tRU5USVRZIEdyZWF0ZXJHcmVhdGVyICIm
I3gyQUEyOyItLT4KLTwhLS1FTlRJVFkgTm90TmVzdGVkR3JlYXRlckdyZWF0ZXIgIiYjeDJBQTI7
JiN4MzM4OyItLT4KLTwhLS1FTlRJVFkgZ2xqICImI3gyQUE0OyItLT4KLTwhLS1FTlRJVFkgZ2xh
ICImI3gyQUE1OyItLT4KLTwhLS1FTlRJVFkgbHRjYyAiJiN4MkFBNjsiLS0+Ci08IS0tRU5USVRZ
IGd0Y2MgIiYjeDJBQTc7Ii0tPgotPCEtLUVOVElUWSBsZXNjYyAiJiN4MkFBODsiLS0+Ci08IS0t
RU5USVRZIGdlc2NjICImI3gyQUE5OyItLT4KLTwhLS1FTlRJVFkgc210ICImI3gyQUFBOyItLT4K
LTwhLS1FTlRJVFkgbGF0ICImI3gyQUFCOyItLT4KLTwhLS1FTlRJVFkgc210ZSAiJiN4MkFBQzsi
LS0+Ci08IS0tRU5USVRZIHNtdGVzICImI3gyQUFDOyYjeEZFMDA7Ii0tPgotPCEtLUVOVElUWSBs
YXRlICImI3gyQUFEOyItLT4KLTwhLS1FTlRJVFkgbGF0ZXMgIiYjeDJBQUQ7JiN4RkUwMDsiLS0+
Ci08IS0tRU5USVRZIGJ1bXBFICImI3gyQUFFOyItLT4KLTwhLS1FTlRJVFkgcHJlICImI3gyQUFG
OyItLT4KLTwhLS1FTlRJVFkgcHJlY2VxICImI3gyQUFGOyItLT4KLTwhLS1FTlRJVFkgUHJlY2Vk
ZXNFcXVhbCAiJiN4MkFBRjsiLS0+Ci08IS0tRU5USVRZIG5wcmUgIiYjeDJBQUY7JiN4MzM4OyIt
LT4KLTwhLS1FTlRJVFkgbnByZWNlcSAiJiN4MkFBRjsmI3gzMzg7Ii0tPgotPCEtLUVOVElUWSBO
b3RQcmVjZWRlc0VxdWFsICImI3gyQUFGOyYjeDMzODsiLS0+Ci08IS0tRU5USVRZIHNjZSAiJiN4
MkFCMDsiLS0+Ci08IS0tRU5USVRZIHN1Y2NlcSAiJiN4MkFCMDsiLS0+Ci08IS0tRU5USVRZIFN1
Y2NlZWRzRXF1YWwgIiYjeDJBQjA7Ii0tPgotPCEtLUVOVElUWSBuc2NlICImI3gyQUIwOyYjeDMz
ODsiLS0+Ci08IS0tRU5USVRZIG5zdWNjZXEgIiYjeDJBQjA7JiN4MzM4OyItLT4KLTwhLS1FTlRJ
VFkgTm90U3VjY2VlZHNFcXVhbCAiJiN4MkFCMDsmI3gzMzg7Ii0tPgotPCEtLUVOVElUWSBwckUg
IiYjeDJBQjM7Ii0tPgotPCEtLUVOVElUWSBzY0UgIiYjeDJBQjQ7Ii0tPgotPCEtLUVOVElUWSBw
cm5FICImI3gyQUI1OyItLT4KLTwhLS1FTlRJVFkgcHJlY25lcXEgIiYjeDJBQjU7Ii0tPgotPCEt
LUVOVElUWSBzY25FICImI3gyQUI2OyItLT4KLTwhLS1FTlRJVFkgc3VjY25lcXEgIiYjeDJBQjY7
Ii0tPgotPCEtLUVOVElUWSBwcmFwICImI3gyQUI3OyItLT4KLTwhLS1FTlRJVFkgcHJlY2FwcHJv
eCAiJiN4MkFCNzsiLS0+Ci08IS0tRU5USVRZIHNjYXAgIiYjeDJBQjg7Ii0tPgotPCEtLUVOVElU
WSBzdWNjYXBwcm94ICImI3gyQUI4OyItLT4KLTwhLS1FTlRJVFkgcHJuYXAgIiYjeDJBQjk7Ii0t
PgotPCEtLUVOVElUWSBwcmVjbmFwcHJveCAiJiN4MkFCOTsiLS0+Ci08IS0tRU5USVRZIHNjbmFw
ICImI3gyQUJBOyItLT4KLTwhLS1FTlRJVFkgc3VjY25hcHByb3ggIiYjeDJBQkE7Ii0tPgotPCEt
LUVOVElUWSBQciAiJiN4MkFCQjsiLS0+Ci08IS0tRU5USVRZIFNjICImI3gyQUJDOyItLT4KLTwh
LS1FTlRJVFkgc3ViZG90ICImI3gyQUJEOyItLT4KLTwhLS1FTlRJVFkgc3VwZG90ICImI3gyQUJF
OyItLT4KLTwhLS1FTlRJVFkgc3VicGx1cyAiJiN4MkFCRjsiLS0+Ci08IS0tRU5USVRZIHN1cHBs
dXMgIiYjeDJBQzA7Ii0tPgotPCEtLUVOVElUWSBzdWJtdWx0ICImI3gyQUMxOyItLT4KLTwhLS1F
TlRJVFkgc3VwbXVsdCAiJiN4MkFDMjsiLS0+Ci08IS0tRU5USVRZIHN1YmVkb3QgIiYjeDJBQzM7
Ii0tPgotPCEtLUVOVElUWSBzdXBlZG90ICImI3gyQUM0OyItLT4KLTwhLS1FTlRJVFkgc3ViRSAi
JiN4MkFDNTsiLS0+Ci08IS0tRU5USVRZIHN1YnNldGVxcSAiJiN4MkFDNTsiLS0+Ci08IS0tRU5U
SVRZIG5zdWJFICImI3gyQUM1OyYjeDMzODsiLS0+Ci08IS0tRU5USVRZIG5zdWJzZXRlcXEgIiYj
eDJBQzU7JiN4MzM4OyItLT4KLTwhLS1FTlRJVFkgc3VwRSAiJiN4MkFDNjsiLS0+Ci08IS0tRU5U
SVRZIHN1cHNldGVxcSAiJiN4MkFDNjsiLS0+Ci08IS0tRU5USVRZIG5zdXBFICImI3gyQUM2OyYj
eDMzODsiLS0+Ci08IS0tRU5USVRZIG5zdXBzZXRlcXEgIiYjeDJBQzY7JiN4MzM4OyItLT4KLTwh
LS1FTlRJVFkgc3Vic2ltICImI3gyQUM3OyItLT4KLTwhLS1FTlRJVFkgc3Vwc2ltICImI3gyQUM4
OyItLT4KLTwhLS1FTlRJVFkgc3VibkUgIiYjeDJBQ0I7Ii0tPgotPCEtLUVOVElUWSBzdWJzZXRu
ZXFxICImI3gyQUNCOyItLT4KLTwhLS1FTlRJVFkgdnN1Ym5FICImI3gyQUNCOyYjeEZFMDA7Ii0t
PgotPCEtLUVOVElUWSB2YXJzdWJzZXRuZXFxICImI3gyQUNCOyYjeEZFMDA7Ii0tPgotPCEtLUVO
VElUWSBzdXBuRSAiJiN4MkFDQzsiLS0+Ci08IS0tRU5USVRZIHN1cHNldG5lcXEgIiYjeDJBQ0M7
Ii0tPgotPCEtLUVOVElUWSB2c3VwbkUgIiYjeDJBQ0M7JiN4RkUwMDsiLS0+Ci08IS0tRU5USVRZ
IHZhcnN1cHNldG5lcXEgIiYjeDJBQ0M7JiN4RkUwMDsiLS0+Ci08IS0tRU5USVRZIGNzdWIgIiYj
eDJBQ0Y7Ii0tPgotPCEtLUVOVElUWSBjc3VwICImI3gyQUQwOyItLT4KLTwhLS1FTlRJVFkgY3N1
YmUgIiYjeDJBRDE7Ii0tPgotPCEtLUVOVElUWSBjc3VwZSAiJiN4MkFEMjsiLS0+Ci08IS0tRU5U
SVRZIHN1YnN1cCAiJiN4MkFEMzsiLS0+Ci08IS0tRU5USVRZIHN1cHN1YiAiJiN4MkFENDsiLS0+
Ci08IS0tRU5USVRZIHN1YnN1YiAiJiN4MkFENTsiLS0+Ci08IS0tRU5USVRZIHN1cHN1cCAiJiN4
MkFENjsiLS0+Ci08IS0tRU5USVRZIHN1cGhzdWIgIiYjeDJBRDc7Ii0tPgotPCEtLUVOVElUWSBz
dXBkc3ViICImI3gyQUQ4OyItLT4KLTwhLS1FTlRJVFkgZm9ya3YgIiYjeDJBRDk7Ii0tPgotPCEt
LUVOVElUWSB0b3Bmb3JrICImI3gyQURBOyItLT4KLTwhLS1FTlRJVFkgbWxjcCAiJiN4MkFEQjsi
LS0+Ci08IS0tRU5USVRZIERhc2h2ICImI3gyQUU0OyItLT4KLTwhLS1FTlRJVFkgRG91YmxlTGVm
dFRlZSAiJiN4MkFFNDsiLS0+Ci08IS0tRU5USVRZIFZkYXNobCAiJiN4MkFFNjsiLS0+Ci08IS0t
RU5USVRZIEJhcnYgIiYjeDJBRTc7Ii0tPgotPCEtLUVOVElUWSB2QmFyICImI3gyQUU4OyItLT4K
LTwhLS1FTlRJVFkgdkJhcnYgIiYjeDJBRTk7Ii0tPgotPCEtLUVOVElUWSBWYmFyICImI3gyQUVC
OyItLT4KLTwhLS1FTlRJVFkgTm90ICImI3gyQUVDOyItLT4KLTwhLS1FTlRJVFkgYk5vdCAiJiN4
MkFFRDsiLS0+Ci08IS0tRU5USVRZIHJubWlkICImI3gyQUVFOyItLT4KLTwhLS1FTlRJVFkgY2ly
bWlkICImI3gyQUVGOyItLT4KLTwhLS1FTlRJVFkgbWlkY2lyICImI3gyQUYwOyItLT4KLTwhLS1F
TlRJVFkgdG9wY2lyICImI3gyQUYxOyItLT4KLTwhLS1FTlRJVFkgbmhwYXIgIiYjeDJBRjI7Ii0t
PgotPCEtLUVOVElUWSBwYXJzaW0gIiYjeDJBRjM7Ii0tPgotPCEtLUVOVElUWSBwYXJzbCAiJiN4
MkFGRDsiLS0+Ci08IS0tRU5USVRZIG5wYXJzbCAiJiN4MkFGRDsmI3gyMEU1OyItLT4KLTwhLS1F
TlRJVFkgZmZsaWcgIiYjeEZCMDA7Ii0tPgotPCEtLUVOVElUWSBmaWxpZyAiJiN4RkIwMTsiLS0+
Ci08IS0tRU5USVRZIGZsbGlnICImI3hGQjAyOyItLT4KLTwhLS1FTlRJVFkgZmZpbGlnICImI3hG
QjAzOyItLT4KLTwhLS1FTlRJVFkgZmZsbGlnICImI3hGQjA0OyItLT4KLTwhLS1FTlRJVFkgQXNj
ciAiJiN4MUQ0OUM7Ii0tPgotPCEtLUVOVElUWSBDc2NyICImI3gxRDQ5RTsiLS0+Ci08IS0tRU5U
SVRZIERzY3IgIiYjeDFENDlGOyItLT4KLTwhLS1FTlRJVFkgR3NjciAiJiN4MUQ0QTI7Ii0tPgot
PCEtLUVOVElUWSBKc2NyICImI3gxRDRBNTsiLS0+Ci08IS0tRU5USVRZIEtzY3IgIiYjeDFENEE2
OyItLT4KLTwhLS1FTlRJVFkgTnNjciAiJiN4MUQ0QTk7Ii0tPgotPCEtLUVOVElUWSBPc2NyICIm
I3gxRDRBQTsiLS0+Ci08IS0tRU5USVRZIFBzY3IgIiYjeDFENEFCOyItLT4KLTwhLS1FTlRJVFkg
UXNjciAiJiN4MUQ0QUM7Ii0tPgotPCEtLUVOVElUWSBTc2NyICImI3gxRDRBRTsiLS0+Ci08IS0t
RU5USVRZIFRzY3IgIiYjeDFENEFGOyItLT4KLTwhLS1FTlRJVFkgVXNjciAiJiN4MUQ0QjA7Ii0t
PgotPCEtLUVOVElUWSBWc2NyICImI3gxRDRCMTsiLS0+Ci08IS0tRU5USVRZIFdzY3IgIiYjeDFE
NEIyOyItLT4KLTwhLS1FTlRJVFkgWHNjciAiJiN4MUQ0QjM7Ii0tPgotPCEtLUVOVElUWSBZc2Ny
ICImI3gxRDRCNDsiLS0+Ci08IS0tRU5USVRZIFpzY3IgIiYjeDFENEI1OyItLT4KLTwhLS1FTlRJ
VFkgYXNjciAiJiN4MUQ0QjY7Ii0tPgotPCEtLUVOVElUWSBic2NyICImI3gxRDRCNzsiLS0+Ci08
IS0tRU5USVRZIGNzY3IgIiYjeDFENEI4OyItLT4KLTwhLS1FTlRJVFkgZHNjciAiJiN4MUQ0Qjk7
Ii0tPgotPCEtLUVOVElUWSBmc2NyICImI3gxRDRCQjsiLS0+Ci08IS0tRU5USVRZIGhzY3IgIiYj
eDFENEJEOyItLT4KLTwhLS1FTlRJVFkgaXNjciAiJiN4MUQ0QkU7Ii0tPgotPCEtLUVOVElUWSBq
c2NyICImI3gxRDRCRjsiLS0+Ci08IS0tRU5USVRZIGtzY3IgIiYjeDFENEMwOyItLT4KLTwhLS1F
TlRJVFkgbHNjciAiJiN4MUQ0QzE7Ii0tPgotPCEtLUVOVElUWSBtc2NyICImI3gxRDRDMjsiLS0+
Ci08IS0tRU5USVRZIG5zY3IgIiYjeDFENEMzOyItLT4KLTwhLS1FTlRJVFkgcHNjciAiJiN4MUQ0
QzU7Ii0tPgotPCEtLUVOVElUWSBxc2NyICImI3gxRDRDNjsiLS0+Ci08IS0tRU5USVRZIHJzY3Ig
IiYjeDFENEM3OyItLT4KLTwhLS1FTlRJVFkgc3NjciAiJiN4MUQ0Qzg7Ii0tPgotPCEtLUVOVElU
WSB0c2NyICImI3gxRDRDOTsiLS0+Ci08IS0tRU5USVRZIHVzY3IgIiYjeDFENENBOyItLT4KLTwh
LS1FTlRJVFkgdnNjciAiJiN4MUQ0Q0I7Ii0tPgotPCEtLUVOVElUWSB3c2NyICImI3gxRDRDQzsi
LS0+Ci08IS0tRU5USVRZIHhzY3IgIiYjeDFENENEOyItLT4KLTwhLS1FTlRJVFkgeXNjciAiJiN4
MUQ0Q0U7Ii0tPgotPCEtLUVOVElUWSB6c2NyICImI3gxRDRDRjsiLS0+Ci08IS0tRU5USVRZIEFm
ciAiJiN4MUQ1MDQ7Ii0tPgotPCEtLUVOVElUWSBCZnIgIiYjeDFENTA1OyItLT4KLTwhLS1FTlRJ
VFkgRGZyICImI3gxRDUwNzsiLS0+Ci08IS0tRU5USVRZIEVmciAiJiN4MUQ1MDg7Ii0tPgotPCEt
LUVOVElUWSBGZnIgIiYjeDFENTA5OyItLT4KLTwhLS1FTlRJVFkgR2ZyICImI3gxRDUwQTsiLS0+
Ci08IS0tRU5USVRZIEpmciAiJiN4MUQ1MEQ7Ii0tPgotPCEtLUVOVElUWSBLZnIgIiYjeDFENTBF
OyItLT4KLTwhLS1FTlRJVFkgTGZyICImI3gxRDUwRjsiLS0+Ci08IS0tRU5USVRZIE1mciAiJiN4
MUQ1MTA7Ii0tPgotPCEtLUVOVElUWSBOZnIgIiYjeDFENTExOyItLT4KLTwhLS1FTlRJVFkgT2Zy
ICImI3gxRDUxMjsiLS0+Ci08IS0tRU5USVRZIFBmciAiJiN4MUQ1MTM7Ii0tPgotPCEtLUVOVElU
WSBRZnIgIiYjeDFENTE0OyItLT4KLTwhLS1FTlRJVFkgU2ZyICImI3gxRDUxNjsiLS0+Ci08IS0t
RU5USVRZIFRmciAiJiN4MUQ1MTc7Ii0tPgotPCEtLUVOVElUWSBVZnIgIiYjeDFENTE4OyItLT4K
LTwhLS1FTlRJVFkgVmZyICImI3gxRDUxOTsiLS0+Ci08IS0tRU5USVRZIFdmciAiJiN4MUQ1MUE7
Ii0tPgotPCEtLUVOVElUWSBYZnIgIiYjeDFENTFCOyItLT4KLTwhLS1FTlRJVFkgWWZyICImI3gx
RDUxQzsiLS0+Ci08IS0tRU5USVRZIGFmciAiJiN4MUQ1MUU7Ii0tPgotPCEtLUVOVElUWSBiZnIg
IiYjeDFENTFGOyItLT4KLTwhLS1FTlRJVFkgY2ZyICImI3gxRDUyMDsiLS0+Ci08IS0tRU5USVRZ
IGRmciAiJiN4MUQ1MjE7Ii0tPgotPCEtLUVOVElUWSBlZnIgIiYjeDFENTIyOyItLT4KLTwhLS1F
TlRJVFkgZmZyICImI3gxRDUyMzsiLS0+Ci08IS0tRU5USVRZIGdmciAiJiN4MUQ1MjQ7Ii0tPgot
PCEtLUVOVElUWSBoZnIgIiYjeDFENTI1OyItLT4KLTwhLS1FTlRJVFkgaWZyICImI3gxRDUyNjsi
LS0+Ci08IS0tRU5USVRZIGpmciAiJiN4MUQ1Mjc7Ii0tPgotPCEtLUVOVElUWSBrZnIgIiYjeDFE
NTI4OyItLT4KLTwhLS1FTlRJVFkgbGZyICImI3gxRDUyOTsiLS0+Ci08IS0tRU5USVRZIG1mciAi
JiN4MUQ1MkE7Ii0tPgotPCEtLUVOVElUWSBuZnIgIiYjeDFENTJCOyItLT4KLTwhLS1FTlRJVFkg
b2ZyICImI3gxRDUyQzsiLS0+Ci08IS0tRU5USVRZIHBmciAiJiN4MUQ1MkQ7Ii0tPgotPCEtLUVO
VElUWSBxZnIgIiYjeDFENTJFOyItLT4KLTwhLS1FTlRJVFkgcmZyICImI3gxRDUyRjsiLS0+Ci08
IS0tRU5USVRZIHNmciAiJiN4MUQ1MzA7Ii0tPgotPCEtLUVOVElUWSB0ZnIgIiYjeDFENTMxOyIt
LT4KLTwhLS1FTlRJVFkgdWZyICImI3gxRDUzMjsiLS0+Ci08IS0tRU5USVRZIHZmciAiJiN4MUQ1
MzM7Ii0tPgotPCEtLUVOVElUWSB3ZnIgIiYjeDFENTM0OyItLT4KLTwhLS1FTlRJVFkgeGZyICIm
I3gxRDUzNTsiLS0+Ci08IS0tRU5USVRZIHlmciAiJiN4MUQ1MzY7Ii0tPgotPCEtLUVOVElUWSB6
ZnIgIiYjeDFENTM3OyItLT4KLTwhLS1FTlRJVFkgQW9wZiAiJiN4MUQ1Mzg7Ii0tPgotPCEtLUVO
VElUWSBCb3BmICImI3gxRDUzOTsiLS0+Ci08IS0tRU5USVRZIERvcGYgIiYjeDFENTNCOyItLT4K
LTwhLS1FTlRJVFkgRW9wZiAiJiN4MUQ1M0M7Ii0tPgotPCEtLUVOVElUWSBGb3BmICImI3gxRDUz
RDsiLS0+Ci08IS0tRU5USVRZIEdvcGYgIiYjeDFENTNFOyItLT4KLTwhLS1FTlRJVFkgSW9wZiAi
JiN4MUQ1NDA7Ii0tPgotPCEtLUVOVElUWSBKb3BmICImI3gxRDU0MTsiLS0+Ci08IS0tRU5USVRZ
IEtvcGYgIiYjeDFENTQyOyItLT4KLTwhLS1FTlRJVFkgTG9wZiAiJiN4MUQ1NDM7Ii0tPgotPCEt
LUVOVElUWSBNb3BmICImI3gxRDU0NDsiLS0+Ci08IS0tRU5USVRZIE9vcGYgIiYjeDFENTQ2OyIt
LT4KLTwhLS1FTlRJVFkgU29wZiAiJiN4MUQ1NEE7Ii0tPgotPCEtLUVOVElUWSBUb3BmICImI3gx
RDU0QjsiLS0+Ci08IS0tRU5USVRZIFVvcGYgIiYjeDFENTRDOyItLT4KLTwhLS1FTlRJVFkgVm9w
ZiAiJiN4MUQ1NEQ7Ii0tPgotPCEtLUVOVElUWSBXb3BmICImI3gxRDU0RTsiLS0+Ci08IS0tRU5U
SVRZIFhvcGYgIiYjeDFENTRGOyItLT4KLTwhLS1FTlRJVFkgWW9wZiAiJiN4MUQ1NTA7Ii0tPgot
PCEtLUVOVElUWSBhb3BmICImI3gxRDU1MjsiLS0+Ci08IS0tRU5USVRZIGJvcGYgIiYjeDFENTUz
OyItLT4KLTwhLS1FTlRJVFkgY29wZiAiJiN4MUQ1NTQ7Ii0tPgotPCEtLUVOVElUWSBkb3BmICIm
I3gxRDU1NTsiLS0+Ci08IS0tRU5USVRZIGVvcGYgIiYjeDFENTU2OyItLT4KLTwhLS1FTlRJVFkg
Zm9wZiAiJiN4MUQ1NTc7Ii0tPgotPCEtLUVOVElUWSBnb3BmICImI3gxRDU1ODsiLS0+Ci08IS0t
RU5USVRZIGhvcGYgIiYjeDFENTU5OyItLT4KLTwhLS1FTlRJVFkgaW9wZiAiJiN4MUQ1NUE7Ii0t
PgotPCEtLUVOVElUWSBqb3BmICImI3gxRDU1QjsiLS0+Ci08IS0tRU5USVRZIGtvcGYgIiYjeDFE
NTVDOyItLT4KLTwhLS1FTlRJVFkgbG9wZiAiJiN4MUQ1NUQ7Ii0tPgotPCEtLUVOVElUWSBtb3Bm
ICImI3gxRDU1RTsiLS0+Ci08IS0tRU5USVRZIG5vcGYgIiYjeDFENTVGOyItLT4KLTwhLS1FTlRJ
VFkgb29wZiAiJiN4MUQ1NjA7Ii0tPgotPCEtLUVOVElUWSBwb3BmICImI3gxRDU2MTsiLS0+Ci08
IS0tRU5USVRZIHFvcGYgIiYjeDFENTYyOyItLT4KLTwhLS1FTlRJVFkgcm9wZiAiJiN4MUQ1NjM7
Ii0tPgotPCEtLUVOVElUWSBzb3BmICImI3gxRDU2NDsiLS0+Ci08IS0tRU5USVRZIHRvcGYgIiYj
eDFENTY1OyItLT4KLTwhLS1FTlRJVFkgdW9wZiAiJiN4MUQ1NjY7Ii0tPgotPCEtLUVOVElUWSB2
b3BmICImI3gxRDU2NzsiLS0+Ci08IS0tRU5USVRZIHdvcGYgIiYjeDFENTY4OyItLT4KLTwhLS1F
TlRJVFkgeG9wZiAiJiN4MUQ1Njk7Ii0tPgotPCEtLUVOVElUWSB5b3BmICImI3gxRDU2QTsiLS0+
Ci08IS0tRU5USVRZIHpvcGYgIiYjeDFENTZCOyItLT4KKzwhRU5USVRZIFRhYiAiJiN4OTsiPgor
PCFFTlRJVFkgTmV3TGluZSAiJiN4QTsiPgorPCFFTlRJVFkgZXhjbCAiJiN4MjE7Ij4KKzwhRU5U
SVRZIHF1b3QgIiYjeDIyOyI+Cis8IUVOVElUWSBRVU9UICImI3gyMjsiPgorPCFFTlRJVFkgbnVt
ICImI3gyMzsiPgorPCFFTlRJVFkgZG9sbGFyICImI3gyNDsiPgorPCFFTlRJVFkgcGVyY250ICIm
I3gyNTsiPgorPCFFTlRJVFkgYW1wICImI3gyNjsjeDI2OyI+Cis8IUVOVElUWSBBTVAgIiYjeDI2
OyN4MjY7Ij4KKzwhRU5USVRZIGFwb3MgIiYjeDI3OyI+Cis8IUVOVElUWSBscGFyICImI3gyODsi
PgorPCFFTlRJVFkgcnBhciAiJiN4Mjk7Ij4KKzwhRU5USVRZIGFzdCAiJiN4MkE7Ij4KKzwhRU5U
SVRZIG1pZGFzdCAiJiN4MkE7Ij4KKzwhRU5USVRZIHBsdXMgIiYjeDJCOyI+Cis8IUVOVElUWSBj
b21tYSAiJiN4MkM7Ij4KKzwhRU5USVRZIHBlcmlvZCAiJiN4MkU7Ij4KKzwhRU5USVRZIHNvbCAi
JiN4MkY7Ij4KKzwhRU5USVRZIGNvbG9uICImI3gzQTsiPgorPCFFTlRJVFkgc2VtaSAiJiN4M0I7
Ij4KKzwhRU5USVRZIGx0ICImI3gyNjsjeDNDOyI+Cis8IUVOVElUWSBMVCAiJiN4MjY7I3gzQzsi
PgorPCFFTlRJVFkgbnZsdCAiJiN4MjY7I3gzQzsmI3gyMEQyOyI+Cis8IUVOVElUWSBlcXVhbHMg
IiYjeDNEOyI+Cis8IUVOVElUWSBibmUgIiYjeDNEOyYjeDIwRTU7Ij4KKzwhRU5USVRZIGd0ICIm
I3gzRTsiPgorPCFFTlRJVFkgR1QgIiYjeDNFOyI+Cis8IUVOVElUWSBudmd0ICImI3gzRTsmI3gy
MEQyOyI+Cis8IUVOVElUWSBxdWVzdCAiJiN4M0Y7Ij4KKzwhRU5USVRZIGNvbW1hdCAiJiN4NDA7
Ij4KKzwhRU5USVRZIGxzcWIgIiYjeDVCOyI+Cis8IUVOVElUWSBsYnJhY2sgIiYjeDVCOyI+Cis8
IUVOVElUWSBic29sICImI3g1QzsiPgorPCFFTlRJVFkgcnNxYiAiJiN4NUQ7Ij4KKzwhRU5USVRZ
IHJicmFjayAiJiN4NUQ7Ij4KKzwhRU5USVRZIEhhdCAiJiN4NUU7Ij4KKzwhRU5USVRZIGxvd2Jh
ciAiJiN4NUY7Ij4KKzwhRU5USVRZIFVuZGVyQmFyICImI3g1RjsiPgorPCFFTlRJVFkgZ3JhdmUg
IiYjeDYwOyI+Cis8IUVOVElUWSBEaWFjcml0aWNhbEdyYXZlICImI3g2MDsiPgorPCFFTlRJVFkg
ZmpsaWcgIiYjeDY2OyYjeDZBOyI+Cis8IUVOVElUWSBsY3ViICImI3g3QjsiPgorPCFFTlRJVFkg
bGJyYWNlICImI3g3QjsiPgorPCFFTlRJVFkgdmVyYmFyICImI3g3QzsiPgorPCFFTlRJVFkgdmVy
dCAiJiN4N0M7Ij4KKzwhRU5USVRZIFZlcnRpY2FsTGluZSAiJiN4N0M7Ij4KKzwhRU5USVRZIHJj
dWIgIiYjeDdEOyI+Cis8IUVOVElUWSByYnJhY2UgIiYjeDdEOyI+Cis8IUVOVElUWSBuYnNwICIm
I3hBMDsiPgorPCFFTlRJVFkgTm9uQnJlYWtpbmdTcGFjZSAiJiN4QTA7Ij4KKzwhRU5USVRZIGll
eGNsICImI3hBMTsiPgorPCFFTlRJVFkgY2VudCAiJiN4QTI7Ij4KKzwhRU5USVRZIHBvdW5kICIm
I3hBMzsiPgorPCFFTlRJVFkgY3VycmVuICImI3hBNDsiPgorPCFFTlRJVFkgeWVuICImI3hBNTsi
PgorPCFFTlRJVFkgYnJ2YmFyICImI3hBNjsiPgorPCFFTlRJVFkgc2VjdCAiJiN4QTc7Ij4KKzwh
RU5USVRZIERvdCAiJiN4QTg7Ij4KKzwhRU5USVRZIGRpZSAiJiN4QTg7Ij4KKzwhRU5USVRZIERv
dWJsZURvdCAiJiN4QTg7Ij4KKzwhRU5USVRZIHVtbCAiJiN4QTg7Ij4KKzwhRU5USVRZIGNvcHkg
IiYjeEE5OyI+Cis8IUVOVElUWSBDT1BZICImI3hBOTsiPgorPCFFTlRJVFkgb3JkZiAiJiN4QUE7
Ij4KKzwhRU5USVRZIGxhcXVvICImI3hBQjsiPgorPCFFTlRJVFkgbm90ICImI3hBQzsiPgorPCFF
TlRJVFkgc2h5ICImI3hBRDsiPgorPCFFTlRJVFkgcmVnICImI3hBRTsiPgorPCFFTlRJVFkgY2ly
Y2xlZFIgIiYjeEFFOyI+Cis8IUVOVElUWSBSRUcgIiYjeEFFOyI+Cis8IUVOVElUWSBtYWNyICIm
I3hBRjsiPgorPCFFTlRJVFkgc3RybnMgIiYjeEFGOyI+Cis8IUVOVElUWSBkZWcgIiYjeEIwOyI+
Cis8IUVOVElUWSBwbHVzbW4gIiYjeEIxOyI+Cis8IUVOVElUWSBwbSAiJiN4QjE7Ij4KKzwhRU5U
SVRZIFBsdXNNaW51cyAiJiN4QjE7Ij4KKzwhRU5USVRZIHN1cDIgIiYjeEIyOyI+Cis8IUVOVElU
WSBzdXAzICImI3hCMzsiPgorPCFFTlRJVFkgYWN1dGUgIiYjeEI0OyI+Cis8IUVOVElUWSBEaWFj
cml0aWNhbEFjdXRlICImI3hCNDsiPgorPCFFTlRJVFkgbWljcm8gIiYjeEI1OyI+Cis8IUVOVElU
WSBwYXJhICImI3hCNjsiPgorPCFFTlRJVFkgbWlkZG90ICImI3hCNzsiPgorPCFFTlRJVFkgY2Vu
dGVyZG90ICImI3hCNzsiPgorPCFFTlRJVFkgQ2VudGVyRG90ICImI3hCNzsiPgorPCFFTlRJVFkg
Y2VkaWwgIiYjeEI4OyI+Cis8IUVOVElUWSBDZWRpbGxhICImI3hCODsiPgorPCFFTlRJVFkgc3Vw
MSAiJiN4Qjk7Ij4KKzwhRU5USVRZIG9yZG0gIiYjeEJBOyI+Cis8IUVOVElUWSByYXF1byAiJiN4
QkI7Ij4KKzwhRU5USVRZIGZyYWMxNCAiJiN4QkM7Ij4KKzwhRU5USVRZIGZyYWMxMiAiJiN4QkQ7
Ij4KKzwhRU5USVRZIGhhbGYgIiYjeEJEOyI+Cis8IUVOVElUWSBmcmFjMzQgIiYjeEJFOyI+Cis8
IUVOVElUWSBpcXVlc3QgIiYjeEJGOyI+Cis8IUVOVElUWSBBZ3JhdmUgIiYjeEMwOyI+Cis8IUVO
VElUWSBBYWN1dGUgIiYjeEMxOyI+Cis8IUVOVElUWSBBY2lyYyAiJiN4QzI7Ij4KKzwhRU5USVRZ
IEF0aWxkZSAiJiN4QzM7Ij4KKzwhRU5USVRZIEF1bWwgIiYjeEM0OyI+Cis8IUVOVElUWSBBcmlu
ZyAiJiN4QzU7Ij4KKzwhRU5USVRZIGFuZ3N0ICImI3hDNTsiPgorPCFFTlRJVFkgQUVsaWcgIiYj
eEM2OyI+Cis8IUVOVElUWSBDY2VkaWwgIiYjeEM3OyI+Cis8IUVOVElUWSBFZ3JhdmUgIiYjeEM4
OyI+Cis8IUVOVElUWSBFYWN1dGUgIiYjeEM5OyI+Cis8IUVOVElUWSBFY2lyYyAiJiN4Q0E7Ij4K
KzwhRU5USVRZIEV1bWwgIiYjeENCOyI+Cis8IUVOVElUWSBJZ3JhdmUgIiYjeENDOyI+Cis8IUVO
VElUWSBJYWN1dGUgIiYjeENEOyI+Cis8IUVOVElUWSBJY2lyYyAiJiN4Q0U7Ij4KKzwhRU5USVRZ
IEl1bWwgIiYjeENGOyI+Cis8IUVOVElUWSBFVEggIiYjeEQwOyI+Cis8IUVOVElUWSBOdGlsZGUg
IiYjeEQxOyI+Cis8IUVOVElUWSBPZ3JhdmUgIiYjeEQyOyI+Cis8IUVOVElUWSBPYWN1dGUgIiYj
eEQzOyI+Cis8IUVOVElUWSBPY2lyYyAiJiN4RDQ7Ij4KKzwhRU5USVRZIE90aWxkZSAiJiN4RDU7
Ij4KKzwhRU5USVRZIE91bWwgIiYjeEQ2OyI+Cis8IUVOVElUWSB0aW1lcyAiJiN4RDc7Ij4KKzwh
RU5USVRZIE9zbGFzaCAiJiN4RDg7Ij4KKzwhRU5USVRZIFVncmF2ZSAiJiN4RDk7Ij4KKzwhRU5U
SVRZIFVhY3V0ZSAiJiN4REE7Ij4KKzwhRU5USVRZIFVjaXJjICImI3hEQjsiPgorPCFFTlRJVFkg
VXVtbCAiJiN4REM7Ij4KKzwhRU5USVRZIFlhY3V0ZSAiJiN4REQ7Ij4KKzwhRU5USVRZIFRIT1JO
ICImI3hERTsiPgorPCFFTlRJVFkgc3psaWcgIiYjeERGOyI+Cis8IUVOVElUWSBhZ3JhdmUgIiYj
eEUwOyI+Cis8IUVOVElUWSBhYWN1dGUgIiYjeEUxOyI+Cis8IUVOVElUWSBhY2lyYyAiJiN4RTI7
Ij4KKzwhRU5USVRZIGF0aWxkZSAiJiN4RTM7Ij4KKzwhRU5USVRZIGF1bWwgIiYjeEU0OyI+Cis8
IUVOVElUWSBhcmluZyAiJiN4RTU7Ij4KKzwhRU5USVRZIGFlbGlnICImI3hFNjsiPgorPCFFTlRJ
VFkgY2NlZGlsICImI3hFNzsiPgorPCFFTlRJVFkgZWdyYXZlICImI3hFODsiPgorPCFFTlRJVFkg
ZWFjdXRlICImI3hFOTsiPgorPCFFTlRJVFkgZWNpcmMgIiYjeEVBOyI+Cis8IUVOVElUWSBldW1s
ICImI3hFQjsiPgorPCFFTlRJVFkgaWdyYXZlICImI3hFQzsiPgorPCFFTlRJVFkgaWFjdXRlICIm
I3hFRDsiPgorPCFFTlRJVFkgaWNpcmMgIiYjeEVFOyI+Cis8IUVOVElUWSBpdW1sICImI3hFRjsi
PgorPCFFTlRJVFkgZXRoICImI3hGMDsiPgorPCFFTlRJVFkgbnRpbGRlICImI3hGMTsiPgorPCFF
TlRJVFkgb2dyYXZlICImI3hGMjsiPgorPCFFTlRJVFkgb2FjdXRlICImI3hGMzsiPgorPCFFTlRJ
VFkgb2NpcmMgIiYjeEY0OyI+Cis8IUVOVElUWSBvdGlsZGUgIiYjeEY1OyI+Cis8IUVOVElUWSBv
dW1sICImI3hGNjsiPgorPCFFTlRJVFkgZGl2aWRlICImI3hGNzsiPgorPCFFTlRJVFkgZGl2ICIm
I3hGNzsiPgorPCFFTlRJVFkgb3NsYXNoICImI3hGODsiPgorPCFFTlRJVFkgdWdyYXZlICImI3hG
OTsiPgorPCFFTlRJVFkgdWFjdXRlICImI3hGQTsiPgorPCFFTlRJVFkgdWNpcmMgIiYjeEZCOyI+
Cis8IUVOVElUWSB1dW1sICImI3hGQzsiPgorPCFFTlRJVFkgeWFjdXRlICImI3hGRDsiPgorPCFF
TlRJVFkgdGhvcm4gIiYjeEZFOyI+Cis8IUVOVElUWSB5dW1sICImI3hGRjsiPgorPCFFTlRJVFkg
QW1hY3IgIiYjeDEwMDsiPgorPCFFTlRJVFkgYW1hY3IgIiYjeDEwMTsiPgorPCFFTlRJVFkgQWJy
ZXZlICImI3gxMDI7Ij4KKzwhRU5USVRZIGFicmV2ZSAiJiN4MTAzOyI+Cis8IUVOVElUWSBBb2dv
biAiJiN4MTA0OyI+Cis8IUVOVElUWSBhb2dvbiAiJiN4MTA1OyI+Cis8IUVOVElUWSBDYWN1dGUg
IiYjeDEwNjsiPgorPCFFTlRJVFkgY2FjdXRlICImI3gxMDc7Ij4KKzwhRU5USVRZIENjaXJjICIm
I3gxMDg7Ij4KKzwhRU5USVRZIGNjaXJjICImI3gxMDk7Ij4KKzwhRU5USVRZIENkb3QgIiYjeDEw
QTsiPgorPCFFTlRJVFkgY2RvdCAiJiN4MTBCOyI+Cis8IUVOVElUWSBDY2Fyb24gIiYjeDEwQzsi
PgorPCFFTlRJVFkgY2Nhcm9uICImI3gxMEQ7Ij4KKzwhRU5USVRZIERjYXJvbiAiJiN4MTBFOyI+
Cis8IUVOVElUWSBkY2Fyb24gIiYjeDEwRjsiPgorPCFFTlRJVFkgRHN0cm9rICImI3gxMTA7Ij4K
KzwhRU5USVRZIGRzdHJvayAiJiN4MTExOyI+Cis8IUVOVElUWSBFbWFjciAiJiN4MTEyOyI+Cis8
IUVOVElUWSBlbWFjciAiJiN4MTEzOyI+Cis8IUVOVElUWSBFZG90ICImI3gxMTY7Ij4KKzwhRU5U
SVRZIGVkb3QgIiYjeDExNzsiPgorPCFFTlRJVFkgRW9nb24gIiYjeDExODsiPgorPCFFTlRJVFkg
ZW9nb24gIiYjeDExOTsiPgorPCFFTlRJVFkgRWNhcm9uICImI3gxMUE7Ij4KKzwhRU5USVRZIGVj
YXJvbiAiJiN4MTFCOyI+Cis8IUVOVElUWSBHY2lyYyAiJiN4MTFDOyI+Cis8IUVOVElUWSBnY2ly
YyAiJiN4MTFEOyI+Cis8IUVOVElUWSBHYnJldmUgIiYjeDExRTsiPgorPCFFTlRJVFkgZ2JyZXZl
ICImI3gxMUY7Ij4KKzwhRU5USVRZIEdkb3QgIiYjeDEyMDsiPgorPCFFTlRJVFkgZ2RvdCAiJiN4
MTIxOyI+Cis8IUVOVElUWSBHY2VkaWwgIiYjeDEyMjsiPgorPCFFTlRJVFkgSGNpcmMgIiYjeDEy
NDsiPgorPCFFTlRJVFkgaGNpcmMgIiYjeDEyNTsiPgorPCFFTlRJVFkgSHN0cm9rICImI3gxMjY7
Ij4KKzwhRU5USVRZIGhzdHJvayAiJiN4MTI3OyI+Cis8IUVOVElUWSBJdGlsZGUgIiYjeDEyODsi
PgorPCFFTlRJVFkgaXRpbGRlICImI3gxMjk7Ij4KKzwhRU5USVRZIEltYWNyICImI3gxMkE7Ij4K
KzwhRU5USVRZIGltYWNyICImI3gxMkI7Ij4KKzwhRU5USVRZIElvZ29uICImI3gxMkU7Ij4KKzwh
RU5USVRZIGlvZ29uICImI3gxMkY7Ij4KKzwhRU5USVRZIElkb3QgIiYjeDEzMDsiPgorPCFFTlRJ
VFkgaW1hdGggIiYjeDEzMTsiPgorPCFFTlRJVFkgaW5vZG90ICImI3gxMzE7Ij4KKzwhRU5USVRZ
IElKbGlnICImI3gxMzI7Ij4KKzwhRU5USVRZIGlqbGlnICImI3gxMzM7Ij4KKzwhRU5USVRZIEpj
aXJjICImI3gxMzQ7Ij4KKzwhRU5USVRZIGpjaXJjICImI3gxMzU7Ij4KKzwhRU5USVRZIEtjZWRp
bCAiJiN4MTM2OyI+Cis8IUVOVElUWSBrY2VkaWwgIiYjeDEzNzsiPgorPCFFTlRJVFkga2dyZWVu
ICImI3gxMzg7Ij4KKzwhRU5USVRZIExhY3V0ZSAiJiN4MTM5OyI+Cis8IUVOVElUWSBsYWN1dGUg
IiYjeDEzQTsiPgorPCFFTlRJVFkgTGNlZGlsICImI3gxM0I7Ij4KKzwhRU5USVRZIGxjZWRpbCAi
JiN4MTNDOyI+Cis8IUVOVElUWSBMY2Fyb24gIiYjeDEzRDsiPgorPCFFTlRJVFkgbGNhcm9uICIm
I3gxM0U7Ij4KKzwhRU5USVRZIExtaWRvdCAiJiN4MTNGOyI+Cis8IUVOVElUWSBsbWlkb3QgIiYj
eDE0MDsiPgorPCFFTlRJVFkgTHN0cm9rICImI3gxNDE7Ij4KKzwhRU5USVRZIGxzdHJvayAiJiN4
MTQyOyI+Cis8IUVOVElUWSBOYWN1dGUgIiYjeDE0MzsiPgorPCFFTlRJVFkgbmFjdXRlICImI3gx
NDQ7Ij4KKzwhRU5USVRZIE5jZWRpbCAiJiN4MTQ1OyI+Cis8IUVOVElUWSBuY2VkaWwgIiYjeDE0
NjsiPgorPCFFTlRJVFkgTmNhcm9uICImI3gxNDc7Ij4KKzwhRU5USVRZIG5jYXJvbiAiJiN4MTQ4
OyI+Cis8IUVOVElUWSBuYXBvcyAiJiN4MTQ5OyI+Cis8IUVOVElUWSBFTkcgIiYjeDE0QTsiPgor
PCFFTlRJVFkgZW5nICImI3gxNEI7Ij4KKzwhRU5USVRZIE9tYWNyICImI3gxNEM7Ij4KKzwhRU5U
SVRZIG9tYWNyICImI3gxNEQ7Ij4KKzwhRU5USVRZIE9kYmxhYyAiJiN4MTUwOyI+Cis8IUVOVElU
WSBvZGJsYWMgIiYjeDE1MTsiPgorPCFFTlRJVFkgT0VsaWcgIiYjeDE1MjsiPgorPCFFTlRJVFkg
b2VsaWcgIiYjeDE1MzsiPgorPCFFTlRJVFkgUmFjdXRlICImI3gxNTQ7Ij4KKzwhRU5USVRZIHJh
Y3V0ZSAiJiN4MTU1OyI+Cis8IUVOVElUWSBSY2VkaWwgIiYjeDE1NjsiPgorPCFFTlRJVFkgcmNl
ZGlsICImI3gxNTc7Ij4KKzwhRU5USVRZIFJjYXJvbiAiJiN4MTU4OyI+Cis8IUVOVElUWSByY2Fy
b24gIiYjeDE1OTsiPgorPCFFTlRJVFkgU2FjdXRlICImI3gxNUE7Ij4KKzwhRU5USVRZIHNhY3V0
ZSAiJiN4MTVCOyI+Cis8IUVOVElUWSBTY2lyYyAiJiN4MTVDOyI+Cis8IUVOVElUWSBzY2lyYyAi
JiN4MTVEOyI+Cis8IUVOVElUWSBTY2VkaWwgIiYjeDE1RTsiPgorPCFFTlRJVFkgc2NlZGlsICIm
I3gxNUY7Ij4KKzwhRU5USVRZIFNjYXJvbiAiJiN4MTYwOyI+Cis8IUVOVElUWSBzY2Fyb24gIiYj
eDE2MTsiPgorPCFFTlRJVFkgVGNlZGlsICImI3gxNjI7Ij4KKzwhRU5USVRZIHRjZWRpbCAiJiN4
MTYzOyI+Cis8IUVOVElUWSBUY2Fyb24gIiYjeDE2NDsiPgorPCFFTlRJVFkgdGNhcm9uICImI3gx
NjU7Ij4KKzwhRU5USVRZIFRzdHJvayAiJiN4MTY2OyI+Cis8IUVOVElUWSB0c3Ryb2sgIiYjeDE2
NzsiPgorPCFFTlRJVFkgVXRpbGRlICImI3gxNjg7Ij4KKzwhRU5USVRZIHV0aWxkZSAiJiN4MTY5
OyI+Cis8IUVOVElUWSBVbWFjciAiJiN4MTZBOyI+Cis8IUVOVElUWSB1bWFjciAiJiN4MTZCOyI+
Cis8IUVOVElUWSBVYnJldmUgIiYjeDE2QzsiPgorPCFFTlRJVFkgdWJyZXZlICImI3gxNkQ7Ij4K
KzwhRU5USVRZIFVyaW5nICImI3gxNkU7Ij4KKzwhRU5USVRZIHVyaW5nICImI3gxNkY7Ij4KKzwh
RU5USVRZIFVkYmxhYyAiJiN4MTcwOyI+Cis8IUVOVElUWSB1ZGJsYWMgIiYjeDE3MTsiPgorPCFF
TlRJVFkgVW9nb24gIiYjeDE3MjsiPgorPCFFTlRJVFkgdW9nb24gIiYjeDE3MzsiPgorPCFFTlRJ
VFkgV2NpcmMgIiYjeDE3NDsiPgorPCFFTlRJVFkgd2NpcmMgIiYjeDE3NTsiPgorPCFFTlRJVFkg
WWNpcmMgIiYjeDE3NjsiPgorPCFFTlRJVFkgeWNpcmMgIiYjeDE3NzsiPgorPCFFTlRJVFkgWXVt
bCAiJiN4MTc4OyI+Cis8IUVOVElUWSBaYWN1dGUgIiYjeDE3OTsiPgorPCFFTlRJVFkgemFjdXRl
ICImI3gxN0E7Ij4KKzwhRU5USVRZIFpkb3QgIiYjeDE3QjsiPgorPCFFTlRJVFkgemRvdCAiJiN4
MTdDOyI+Cis8IUVOVElUWSBaY2Fyb24gIiYjeDE3RDsiPgorPCFFTlRJVFkgemNhcm9uICImI3gx
N0U7Ij4KKzwhRU5USVRZIGZub2YgIiYjeDE5MjsiPgorPCFFTlRJVFkgaW1wZWQgIiYjeDFCNTsi
PgorPCFFTlRJVFkgZ2FjdXRlICImI3gxRjU7Ij4KKzwhRU5USVRZIGptYXRoICImI3gyMzc7Ij4K
KzwhRU5USVRZIGNpcmMgIiYjeDJDNjsiPgorPCFFTlRJVFkgY2Fyb24gIiYjeDJDNzsiPgorPCFF
TlRJVFkgSGFjZWsgIiYjeDJDNzsiPgorPCFFTlRJVFkgYnJldmUgIiYjeDJEODsiPgorPCFFTlRJ
VFkgQnJldmUgIiYjeDJEODsiPgorPCFFTlRJVFkgZG90ICImI3gyRDk7Ij4KKzwhRU5USVRZIERp
YWNyaXRpY2FsRG90ICImI3gyRDk7Ij4KKzwhRU5USVRZIHJpbmcgIiYjeDJEQTsiPgorPCFFTlRJ
VFkgb2dvbiAiJiN4MkRCOyI+Cis8IUVOVElUWSB0aWxkZSAiJiN4MkRDOyI+Cis8IUVOVElUWSBE
aWFjcml0aWNhbFRpbGRlICImI3gyREM7Ij4KKzwhRU5USVRZIGRibGFjICImI3gyREQ7Ij4KKzwh
RU5USVRZIERpYWNyaXRpY2FsRG91YmxlQWN1dGUgIiYjeDJERDsiPgorPCFFTlRJVFkgRG93bkJy
ZXZlICImI3gzMTE7Ij4KKzwhRU5USVRZIEFscGhhICImI3gzOTE7Ij4KKzwhRU5USVRZIEJldGEg
IiYjeDM5MjsiPgorPCFFTlRJVFkgR2FtbWEgIiYjeDM5MzsiPgorPCFFTlRJVFkgRGVsdGEgIiYj
eDM5NDsiPgorPCFFTlRJVFkgRXBzaWxvbiAiJiN4Mzk1OyI+Cis8IUVOVElUWSBaZXRhICImI3gz
OTY7Ij4KKzwhRU5USVRZIEV0YSAiJiN4Mzk3OyI+Cis8IUVOVElUWSBUaGV0YSAiJiN4Mzk4OyI+
Cis8IUVOVElUWSBJb3RhICImI3gzOTk7Ij4KKzwhRU5USVRZIEthcHBhICImI3gzOUE7Ij4KKzwh
RU5USVRZIExhbWJkYSAiJiN4MzlCOyI+Cis8IUVOVElUWSBNdSAiJiN4MzlDOyI+Cis8IUVOVElU
WSBOdSAiJiN4MzlEOyI+Cis8IUVOVElUWSBYaSAiJiN4MzlFOyI+Cis8IUVOVElUWSBPbWljcm9u
ICImI3gzOUY7Ij4KKzwhRU5USVRZIFBpICImI3gzQTA7Ij4KKzwhRU5USVRZIFJobyAiJiN4M0Ex
OyI+Cis8IUVOVElUWSBTaWdtYSAiJiN4M0EzOyI+Cis8IUVOVElUWSBUYXUgIiYjeDNBNDsiPgor
PCFFTlRJVFkgVXBzaWxvbiAiJiN4M0E1OyI+Cis8IUVOVElUWSBQaGkgIiYjeDNBNjsiPgorPCFF
TlRJVFkgQ2hpICImI3gzQTc7Ij4KKzwhRU5USVRZIFBzaSAiJiN4M0E4OyI+Cis8IUVOVElUWSBP
bWVnYSAiJiN4M0E5OyI+Cis8IUVOVElUWSBvaG0gIiYjeDNBOTsiPgorPCFFTlRJVFkgYWxwaGEg
IiYjeDNCMTsiPgorPCFFTlRJVFkgYmV0YSAiJiN4M0IyOyI+Cis8IUVOVElUWSBnYW1tYSAiJiN4
M0IzOyI+Cis8IUVOVElUWSBkZWx0YSAiJiN4M0I0OyI+Cis8IUVOVElUWSBlcHNpICImI3gzQjU7
Ij4KKzwhRU5USVRZIGVwc2lsb24gIiYjeDNCNTsiPgorPCFFTlRJVFkgemV0YSAiJiN4M0I2OyI+
Cis8IUVOVElUWSBldGEgIiYjeDNCNzsiPgorPCFFTlRJVFkgdGhldGEgIiYjeDNCODsiPgorPCFF
TlRJVFkgaW90YSAiJiN4M0I5OyI+Cis8IUVOVElUWSBrYXBwYSAiJiN4M0JBOyI+Cis8IUVOVElU
WSBsYW1iZGEgIiYjeDNCQjsiPgorPCFFTlRJVFkgbXUgIiYjeDNCQzsiPgorPCFFTlRJVFkgbnUg
IiYjeDNCRDsiPgorPCFFTlRJVFkgeGkgIiYjeDNCRTsiPgorPCFFTlRJVFkgb21pY3JvbiAiJiN4
M0JGOyI+Cis8IUVOVElUWSBwaSAiJiN4M0MwOyI+Cis8IUVOVElUWSByaG8gIiYjeDNDMTsiPgor
PCFFTlRJVFkgc2lnbWF2ICImI3gzQzI7Ij4KKzwhRU5USVRZIHZhcnNpZ21hICImI3gzQzI7Ij4K
KzwhRU5USVRZIHNpZ21hZiAiJiN4M0MyOyI+Cis8IUVOVElUWSBzaWdtYSAiJiN4M0MzOyI+Cis8
IUVOVElUWSB0YXUgIiYjeDNDNDsiPgorPCFFTlRJVFkgdXBzaSAiJiN4M0M1OyI+Cis8IUVOVElU
WSB1cHNpbG9uICImI3gzQzU7Ij4KKzwhRU5USVRZIHBoaSAiJiN4M0M2OyI+Cis8IUVOVElUWSBj
aGkgIiYjeDNDNzsiPgorPCFFTlRJVFkgcHNpICImI3gzQzg7Ij4KKzwhRU5USVRZIG9tZWdhICIm
I3gzQzk7Ij4KKzwhRU5USVRZIHRoZXRhdiAiJiN4M0QxOyI+Cis8IUVOVElUWSB2YXJ0aGV0YSAi
JiN4M0QxOyI+Cis8IUVOVElUWSB0aGV0YXN5bSAiJiN4M0QxOyI+Cis8IUVOVElUWSBVcHNpICIm
I3gzRDI7Ij4KKzwhRU5USVRZIHVwc2loICImI3gzRDI7Ij4KKzwhRU5USVRZIHN0cmFpZ2h0cGhp
ICImI3gzRDU7Ij4KKzwhRU5USVRZIHBoaXYgIiYjeDNENTsiPgorPCFFTlRJVFkgdmFycGhpICIm
I3gzRDU7Ij4KKzwhRU5USVRZIHBpdiAiJiN4M0Q2OyI+Cis8IUVOVElUWSB2YXJwaSAiJiN4M0Q2
OyI+Cis8IUVOVElUWSBHYW1tYWQgIiYjeDNEQzsiPgorPCFFTlRJVFkgZ2FtbWFkICImI3gzREQ7
Ij4KKzwhRU5USVRZIGRpZ2FtbWEgIiYjeDNERDsiPgorPCFFTlRJVFkga2FwcGF2ICImI3gzRjA7
Ij4KKzwhRU5USVRZIHZhcmthcHBhICImI3gzRjA7Ij4KKzwhRU5USVRZIHJob3YgIiYjeDNGMTsi
PgorPCFFTlRJVFkgdmFycmhvICImI3gzRjE7Ij4KKzwhRU5USVRZIGVwc2l2ICImI3gzRjU7Ij4K
KzwhRU5USVRZIHN0cmFpZ2h0ZXBzaWxvbiAiJiN4M0Y1OyI+Cis8IUVOVElUWSB2YXJlcHNpbG9u
ICImI3gzRjU7Ij4KKzwhRU5USVRZIGJlcHNpICImI3gzRjY7Ij4KKzwhRU5USVRZIGJhY2tlcHNp
bG9uICImI3gzRjY7Ij4KKzwhRU5USVRZIElPY3kgIiYjeDQwMTsiPgorPCFFTlRJVFkgREpjeSAi
JiN4NDAyOyI+Cis8IUVOVElUWSBHSmN5ICImI3g0MDM7Ij4KKzwhRU5USVRZIEp1a2N5ICImI3g0
MDQ7Ij4KKzwhRU5USVRZIERTY3kgIiYjeDQwNTsiPgorPCFFTlRJVFkgSXVrY3kgIiYjeDQwNjsi
PgorPCFFTlRJVFkgWUljeSAiJiN4NDA3OyI+Cis8IUVOVElUWSBKc2VyY3kgIiYjeDQwODsiPgor
PCFFTlRJVFkgTEpjeSAiJiN4NDA5OyI+Cis8IUVOVElUWSBOSmN5ICImI3g0MEE7Ij4KKzwhRU5U
SVRZIFRTSGN5ICImI3g0MEI7Ij4KKzwhRU5USVRZIEtKY3kgIiYjeDQwQzsiPgorPCFFTlRJVFkg
VWJyY3kgIiYjeDQwRTsiPgorPCFFTlRJVFkgRFpjeSAiJiN4NDBGOyI+Cis8IUVOVElUWSBBY3kg
IiYjeDQxMDsiPgorPCFFTlRJVFkgQmN5ICImI3g0MTE7Ij4KKzwhRU5USVRZIFZjeSAiJiN4NDEy
OyI+Cis8IUVOVElUWSBHY3kgIiYjeDQxMzsiPgorPCFFTlRJVFkgRGN5ICImI3g0MTQ7Ij4KKzwh
RU5USVRZIElFY3kgIiYjeDQxNTsiPgorPCFFTlRJVFkgWkhjeSAiJiN4NDE2OyI+Cis8IUVOVElU
WSBaY3kgIiYjeDQxNzsiPgorPCFFTlRJVFkgSWN5ICImI3g0MTg7Ij4KKzwhRU5USVRZIEpjeSAi
JiN4NDE5OyI+Cis8IUVOVElUWSBLY3kgIiYjeDQxQTsiPgorPCFFTlRJVFkgTGN5ICImI3g0MUI7
Ij4KKzwhRU5USVRZIE1jeSAiJiN4NDFDOyI+Cis8IUVOVElUWSBOY3kgIiYjeDQxRDsiPgorPCFF
TlRJVFkgT2N5ICImI3g0MUU7Ij4KKzwhRU5USVRZIFBjeSAiJiN4NDFGOyI+Cis8IUVOVElUWSBS
Y3kgIiYjeDQyMDsiPgorPCFFTlRJVFkgU2N5ICImI3g0MjE7Ij4KKzwhRU5USVRZIFRjeSAiJiN4
NDIyOyI+Cis8IUVOVElUWSBVY3kgIiYjeDQyMzsiPgorPCFFTlRJVFkgRmN5ICImI3g0MjQ7Ij4K
KzwhRU5USVRZIEtIY3kgIiYjeDQyNTsiPgorPCFFTlRJVFkgVFNjeSAiJiN4NDI2OyI+Cis8IUVO
VElUWSBDSGN5ICImI3g0Mjc7Ij4KKzwhRU5USVRZIFNIY3kgIiYjeDQyODsiPgorPCFFTlRJVFkg
U0hDSGN5ICImI3g0Mjk7Ij4KKzwhRU5USVRZIEhBUkRjeSAiJiN4NDJBOyI+Cis8IUVOVElUWSBZ
Y3kgIiYjeDQyQjsiPgorPCFFTlRJVFkgU09GVGN5ICImI3g0MkM7Ij4KKzwhRU5USVRZIEVjeSAi
JiN4NDJEOyI+Cis8IUVOVElUWSBZVWN5ICImI3g0MkU7Ij4KKzwhRU5USVRZIFlBY3kgIiYjeDQy
RjsiPgorPCFFTlRJVFkgYWN5ICImI3g0MzA7Ij4KKzwhRU5USVRZIGJjeSAiJiN4NDMxOyI+Cis8
IUVOVElUWSB2Y3kgIiYjeDQzMjsiPgorPCFFTlRJVFkgZ2N5ICImI3g0MzM7Ij4KKzwhRU5USVRZ
IGRjeSAiJiN4NDM0OyI+Cis8IUVOVElUWSBpZWN5ICImI3g0MzU7Ij4KKzwhRU5USVRZIHpoY3kg
IiYjeDQzNjsiPgorPCFFTlRJVFkgemN5ICImI3g0Mzc7Ij4KKzwhRU5USVRZIGljeSAiJiN4NDM4
OyI+Cis8IUVOVElUWSBqY3kgIiYjeDQzOTsiPgorPCFFTlRJVFkga2N5ICImI3g0M0E7Ij4KKzwh
RU5USVRZIGxjeSAiJiN4NDNCOyI+Cis8IUVOVElUWSBtY3kgIiYjeDQzQzsiPgorPCFFTlRJVFkg
bmN5ICImI3g0M0Q7Ij4KKzwhRU5USVRZIG9jeSAiJiN4NDNFOyI+Cis8IUVOVElUWSBwY3kgIiYj
eDQzRjsiPgorPCFFTlRJVFkgcmN5ICImI3g0NDA7Ij4KKzwhRU5USVRZIHNjeSAiJiN4NDQxOyI+
Cis8IUVOVElUWSB0Y3kgIiYjeDQ0MjsiPgorPCFFTlRJVFkgdWN5ICImI3g0NDM7Ij4KKzwhRU5U
SVRZIGZjeSAiJiN4NDQ0OyI+Cis8IUVOVElUWSBraGN5ICImI3g0NDU7Ij4KKzwhRU5USVRZIHRz
Y3kgIiYjeDQ0NjsiPgorPCFFTlRJVFkgY2hjeSAiJiN4NDQ3OyI+Cis8IUVOVElUWSBzaGN5ICIm
I3g0NDg7Ij4KKzwhRU5USVRZIHNoY2hjeSAiJiN4NDQ5OyI+Cis8IUVOVElUWSBoYXJkY3kgIiYj
eDQ0QTsiPgorPCFFTlRJVFkgeWN5ICImI3g0NEI7Ij4KKzwhRU5USVRZIHNvZnRjeSAiJiN4NDRD
OyI+Cis8IUVOVElUWSBlY3kgIiYjeDQ0RDsiPgorPCFFTlRJVFkgeXVjeSAiJiN4NDRFOyI+Cis8
IUVOVElUWSB5YWN5ICImI3g0NEY7Ij4KKzwhRU5USVRZIGlvY3kgIiYjeDQ1MTsiPgorPCFFTlRJ
VFkgZGpjeSAiJiN4NDUyOyI+Cis8IUVOVElUWSBnamN5ICImI3g0NTM7Ij4KKzwhRU5USVRZIGp1
a2N5ICImI3g0NTQ7Ij4KKzwhRU5USVRZIGRzY3kgIiYjeDQ1NTsiPgorPCFFTlRJVFkgaXVrY3kg
IiYjeDQ1NjsiPgorPCFFTlRJVFkgeWljeSAiJiN4NDU3OyI+Cis8IUVOVElUWSBqc2VyY3kgIiYj
eDQ1ODsiPgorPCFFTlRJVFkgbGpjeSAiJiN4NDU5OyI+Cis8IUVOVElUWSBuamN5ICImI3g0NUE7
Ij4KKzwhRU5USVRZIHRzaGN5ICImI3g0NUI7Ij4KKzwhRU5USVRZIGtqY3kgIiYjeDQ1QzsiPgor
PCFFTlRJVFkgdWJyY3kgIiYjeDQ1RTsiPgorPCFFTlRJVFkgZHpjeSAiJiN4NDVGOyI+Cis8IUVO
VElUWSBlbnNwICImI3gyMDAyOyI+Cis8IUVOVElUWSBlbXNwICImI3gyMDAzOyI+Cis8IUVOVElU
WSBlbXNwMTMgIiYjeDIwMDQ7Ij4KKzwhRU5USVRZIGVtc3AxNCAiJiN4MjAwNTsiPgorPCFFTlRJ
VFkgbnVtc3AgIiYjeDIwMDc7Ij4KKzwhRU5USVRZIHB1bmNzcCAiJiN4MjAwODsiPgorPCFFTlRJ
VFkgdGhpbnNwICImI3gyMDA5OyI+Cis8IUVOVElUWSBUaGluU3BhY2UgIiYjeDIwMDk7Ij4KKzwh
RU5USVRZIGhhaXJzcCAiJiN4MjAwQTsiPgorPCFFTlRJVFkgVmVyeVRoaW5TcGFjZSAiJiN4MjAw
QTsiPgorPCFFTlRJVFkgWmVyb1dpZHRoU3BhY2UgIiYjeDIwMEI7Ij4KKzwhRU5USVRZIE5lZ2F0
aXZlVmVyeVRoaW5TcGFjZSAiJiN4MjAwQjsiPgorPCFFTlRJVFkgTmVnYXRpdmVUaGluU3BhY2Ug
IiYjeDIwMEI7Ij4KKzwhRU5USVRZIE5lZ2F0aXZlTWVkaXVtU3BhY2UgIiYjeDIwMEI7Ij4KKzwh
RU5USVRZIE5lZ2F0aXZlVGhpY2tTcGFjZSAiJiN4MjAwQjsiPgorPCFFTlRJVFkgenduaiAiJiN4
MjAwQzsiPgorPCFFTlRJVFkgendqICImI3gyMDBEOyI+Cis8IUVOVElUWSBscm0gIiYjeDIwMEU7
Ij4KKzwhRU5USVRZIHJsbSAiJiN4MjAwRjsiPgorPCFFTlRJVFkgaHlwaGVuICImI3gyMDEwOyI+
Cis8IUVOVElUWSBkYXNoICImI3gyMDEwOyI+Cis8IUVOVElUWSBuZGFzaCAiJiN4MjAxMzsiPgor
PCFFTlRJVFkgbWRhc2ggIiYjeDIwMTQ7Ij4KKzwhRU5USVRZIGhvcmJhciAiJiN4MjAxNTsiPgor
PCFFTlRJVFkgVmVyYmFyICImI3gyMDE2OyI+Cis8IUVOVElUWSBWZXJ0ICImI3gyMDE2OyI+Cis8
IUVOVElUWSBsc3F1byAiJiN4MjAxODsiPgorPCFFTlRJVFkgT3BlbkN1cmx5UXVvdGUgIiYjeDIw
MTg7Ij4KKzwhRU5USVRZIHJzcXVvICImI3gyMDE5OyI+Cis8IUVOVElUWSByc3F1b3IgIiYjeDIw
MTk7Ij4KKzwhRU5USVRZIENsb3NlQ3VybHlRdW90ZSAiJiN4MjAxOTsiPgorPCFFTlRJVFkgbHNx
dW9yICImI3gyMDFBOyI+Cis8IUVOVElUWSBzYnF1byAiJiN4MjAxQTsiPgorPCFFTlRJVFkgbGRx
dW8gIiYjeDIwMUM7Ij4KKzwhRU5USVRZIE9wZW5DdXJseURvdWJsZVF1b3RlICImI3gyMDFDOyI+
Cis8IUVOVElUWSByZHF1byAiJiN4MjAxRDsiPgorPCFFTlRJVFkgcmRxdW9yICImI3gyMDFEOyI+
Cis8IUVOVElUWSBDbG9zZUN1cmx5RG91YmxlUXVvdGUgIiYjeDIwMUQ7Ij4KKzwhRU5USVRZIGxk
cXVvciAiJiN4MjAxRTsiPgorPCFFTlRJVFkgYmRxdW8gIiYjeDIwMUU7Ij4KKzwhRU5USVRZIGRh
Z2dlciAiJiN4MjAyMDsiPgorPCFFTlRJVFkgRGFnZ2VyICImI3gyMDIxOyI+Cis8IUVOVElUWSBk
ZGFnZ2VyICImI3gyMDIxOyI+Cis8IUVOVElUWSBidWxsICImI3gyMDIyOyI+Cis8IUVOVElUWSBi
dWxsZXQgIiYjeDIwMjI7Ij4KKzwhRU5USVRZIG5sZHIgIiYjeDIwMjU7Ij4KKzwhRU5USVRZIGhl
bGxpcCAiJiN4MjAyNjsiPgorPCFFTlRJVFkgbWxkciAiJiN4MjAyNjsiPgorPCFFTlRJVFkgcGVy
bWlsICImI3gyMDMwOyI+Cis8IUVOVElUWSBwZXJ0ZW5rICImI3gyMDMxOyI+Cis8IUVOVElUWSBw
cmltZSAiJiN4MjAzMjsiPgorPCFFTlRJVFkgUHJpbWUgIiYjeDIwMzM7Ij4KKzwhRU5USVRZIHRw
cmltZSAiJiN4MjAzNDsiPgorPCFFTlRJVFkgYnByaW1lICImI3gyMDM1OyI+Cis8IUVOVElUWSBi
YWNrcHJpbWUgIiYjeDIwMzU7Ij4KKzwhRU5USVRZIGxzYXF1byAiJiN4MjAzOTsiPgorPCFFTlRJ
VFkgcnNhcXVvICImI3gyMDNBOyI+Cis8IUVOVElUWSBvbGluZSAiJiN4MjAzRTsiPgorPCFFTlRJ
VFkgT3ZlckJhciAiJiN4MjAzRTsiPgorPCFFTlRJVFkgY2FyZXQgIiYjeDIwNDE7Ij4KKzwhRU5U
SVRZIGh5YnVsbCAiJiN4MjA0MzsiPgorPCFFTlRJVFkgZnJhc2wgIiYjeDIwNDQ7Ij4KKzwhRU5U
SVRZIGJzZW1pICImI3gyMDRGOyI+Cis8IUVOVElUWSBxcHJpbWUgIiYjeDIwNTc7Ij4KKzwhRU5U
SVRZIE1lZGl1bVNwYWNlICImI3gyMDVGOyI+Cis8IUVOVElUWSBUaGlja1NwYWNlICImI3gyMDVG
OyYjeDIwMEE7Ij4KKzwhRU5USVRZIE5vQnJlYWsgIiYjeDIwNjA7Ij4KKzwhRU5USVRZIEFwcGx5
RnVuY3Rpb24gIiYjeDIwNjE7Ij4KKzwhRU5USVRZIGFmICImI3gyMDYxOyI+Cis8IUVOVElUWSBJ
bnZpc2libGVUaW1lcyAiJiN4MjA2MjsiPgorPCFFTlRJVFkgaXQgIiYjeDIwNjI7Ij4KKzwhRU5U
SVRZIEludmlzaWJsZUNvbW1hICImI3gyMDYzOyI+Cis8IUVOVElUWSBpYyAiJiN4MjA2MzsiPgor
PCFFTlRJVFkgZXVybyAiJiN4MjBBQzsiPgorPCFFTlRJVFkgdGRvdCAiJiN4MjBEQjsiPgorPCFF
TlRJVFkgVHJpcGxlRG90ICImI3gyMERCOyI+Cis8IUVOVElUWSBEb3REb3QgIiYjeDIwREM7Ij4K
KzwhRU5USVRZIENvcGYgIiYjeDIxMDI7Ij4KKzwhRU5USVRZIGNvbXBsZXhlcyAiJiN4MjEwMjsi
PgorPCFFTlRJVFkgaW5jYXJlICImI3gyMTA1OyI+Cis8IUVOVElUWSBnc2NyICImI3gyMTBBOyI+
Cis8IUVOVElUWSBoYW1pbHQgIiYjeDIxMEI7Ij4KKzwhRU5USVRZIEhpbGJlcnRTcGFjZSAiJiN4
MjEwQjsiPgorPCFFTlRJVFkgSHNjciAiJiN4MjEwQjsiPgorPCFFTlRJVFkgSGZyICImI3gyMTBD
OyI+Cis8IUVOVElUWSBQb2luY2FyZXBsYW5lICImI3gyMTBDOyI+Cis8IUVOVElUWSBxdWF0ZXJu
aW9ucyAiJiN4MjEwRDsiPgorPCFFTlRJVFkgSG9wZiAiJiN4MjEwRDsiPgorPCFFTlRJVFkgcGxh
bmNraCAiJiN4MjEwRTsiPgorPCFFTlRJVFkgcGxhbmNrICImI3gyMTBGOyI+Cis8IUVOVElUWSBo
YmFyICImI3gyMTBGOyI+Cis8IUVOVElUWSBwbGFua3YgIiYjeDIxMEY7Ij4KKzwhRU5USVRZIGhz
bGFzaCAiJiN4MjEwRjsiPgorPCFFTlRJVFkgSXNjciAiJiN4MjExMDsiPgorPCFFTlRJVFkgaW1h
Z2xpbmUgIiYjeDIxMTA7Ij4KKzwhRU5USVRZIGltYWdlICImI3gyMTExOyI+Cis8IUVOVElUWSBJ
bSAiJiN4MjExMTsiPgorPCFFTlRJVFkgaW1hZ3BhcnQgIiYjeDIxMTE7Ij4KKzwhRU5USVRZIElm
ciAiJiN4MjExMTsiPgorPCFFTlRJVFkgTHNjciAiJiN4MjExMjsiPgorPCFFTlRJVFkgbGFncmFu
ICImI3gyMTEyOyI+Cis8IUVOVElUWSBMYXBsYWNldHJmICImI3gyMTEyOyI+Cis8IUVOVElUWSBl
bGwgIiYjeDIxMTM7Ij4KKzwhRU5USVRZIE5vcGYgIiYjeDIxMTU7Ij4KKzwhRU5USVRZIG5hdHVy
YWxzICImI3gyMTE1OyI+Cis8IUVOVElUWSBudW1lcm8gIiYjeDIxMTY7Ij4KKzwhRU5USVRZIGNv
cHlzciAiJiN4MjExNzsiPgorPCFFTlRJVFkgd2VpZXJwICImI3gyMTE4OyI+Cis8IUVOVElUWSB3
cCAiJiN4MjExODsiPgorPCFFTlRJVFkgUG9wZiAiJiN4MjExOTsiPgorPCFFTlRJVFkgcHJpbWVz
ICImI3gyMTE5OyI+Cis8IUVOVElUWSByYXRpb25hbHMgIiYjeDIxMUE7Ij4KKzwhRU5USVRZIFFv
cGYgIiYjeDIxMUE7Ij4KKzwhRU5USVRZIFJzY3IgIiYjeDIxMUI7Ij4KKzwhRU5USVRZIHJlYWxp
bmUgIiYjeDIxMUI7Ij4KKzwhRU5USVRZIHJlYWwgIiYjeDIxMUM7Ij4KKzwhRU5USVRZIFJlICIm
I3gyMTFDOyI+Cis8IUVOVElUWSByZWFscGFydCAiJiN4MjExQzsiPgorPCFFTlRJVFkgUmZyICIm
I3gyMTFDOyI+Cis8IUVOVElUWSByZWFscyAiJiN4MjExRDsiPgorPCFFTlRJVFkgUm9wZiAiJiN4
MjExRDsiPgorPCFFTlRJVFkgcnggIiYjeDIxMUU7Ij4KKzwhRU5USVRZIHRyYWRlICImI3gyMTIy
OyI+Cis8IUVOVElUWSBUUkFERSAiJiN4MjEyMjsiPgorPCFFTlRJVFkgaW50ZWdlcnMgIiYjeDIx
MjQ7Ij4KKzwhRU5USVRZIFpvcGYgIiYjeDIxMjQ7Ij4KKzwhRU5USVRZIG1obyAiJiN4MjEyNzsi
PgorPCFFTlRJVFkgWmZyICImI3gyMTI4OyI+Cis8IUVOVElUWSB6ZWV0cmYgIiYjeDIxMjg7Ij4K
KzwhRU5USVRZIGlpb3RhICImI3gyMTI5OyI+Cis8IUVOVElUWSBiZXJub3UgIiYjeDIxMkM7Ij4K
KzwhRU5USVRZIEJlcm5vdWxsaXMgIiYjeDIxMkM7Ij4KKzwhRU5USVRZIEJzY3IgIiYjeDIxMkM7
Ij4KKzwhRU5USVRZIENmciAiJiN4MjEyRDsiPgorPCFFTlRJVFkgQ2F5bGV5cyAiJiN4MjEyRDsi
PgorPCFFTlRJVFkgZXNjciAiJiN4MjEyRjsiPgorPCFFTlRJVFkgRXNjciAiJiN4MjEzMDsiPgor
PCFFTlRJVFkgZXhwZWN0YXRpb24gIiYjeDIxMzA7Ij4KKzwhRU5USVRZIEZzY3IgIiYjeDIxMzE7
Ij4KKzwhRU5USVRZIEZvdXJpZXJ0cmYgIiYjeDIxMzE7Ij4KKzwhRU5USVRZIHBobW1hdCAiJiN4
MjEzMzsiPgorPCFFTlRJVFkgTWVsbGludHJmICImI3gyMTMzOyI+Cis8IUVOVElUWSBNc2NyICIm
I3gyMTMzOyI+Cis8IUVOVElUWSBvcmRlciAiJiN4MjEzNDsiPgorPCFFTlRJVFkgb3JkZXJvZiAi
JiN4MjEzNDsiPgorPCFFTlRJVFkgb3NjciAiJiN4MjEzNDsiPgorPCFFTlRJVFkgYWxlZnN5bSAi
JiN4MjEzNTsiPgorPCFFTlRJVFkgYWxlcGggIiYjeDIxMzU7Ij4KKzwhRU5USVRZIGJldGggIiYj
eDIxMzY7Ij4KKzwhRU5USVRZIGdpbWVsICImI3gyMTM3OyI+Cis8IUVOVElUWSBkYWxldGggIiYj
eDIxMzg7Ij4KKzwhRU5USVRZIENhcGl0YWxEaWZmZXJlbnRpYWxEICImI3gyMTQ1OyI+Cis8IUVO
VElUWSBERCAiJiN4MjE0NTsiPgorPCFFTlRJVFkgRGlmZmVyZW50aWFsRCAiJiN4MjE0NjsiPgor
PCFFTlRJVFkgZGQgIiYjeDIxNDY7Ij4KKzwhRU5USVRZIEV4cG9uZW50aWFsRSAiJiN4MjE0Nzsi
PgorPCFFTlRJVFkgZXhwb25lbnRpYWxlICImI3gyMTQ3OyI+Cis8IUVOVElUWSBlZSAiJiN4MjE0
NzsiPgorPCFFTlRJVFkgSW1hZ2luYXJ5SSAiJiN4MjE0ODsiPgorPCFFTlRJVFkgaWkgIiYjeDIx
NDg7Ij4KKzwhRU5USVRZIGZyYWMxMyAiJiN4MjE1MzsiPgorPCFFTlRJVFkgZnJhYzIzICImI3gy
MTU0OyI+Cis8IUVOVElUWSBmcmFjMTUgIiYjeDIxNTU7Ij4KKzwhRU5USVRZIGZyYWMyNSAiJiN4
MjE1NjsiPgorPCFFTlRJVFkgZnJhYzM1ICImI3gyMTU3OyI+Cis8IUVOVElUWSBmcmFjNDUgIiYj
eDIxNTg7Ij4KKzwhRU5USVRZIGZyYWMxNiAiJiN4MjE1OTsiPgorPCFFTlRJVFkgZnJhYzU2ICIm
I3gyMTVBOyI+Cis8IUVOVElUWSBmcmFjMTggIiYjeDIxNUI7Ij4KKzwhRU5USVRZIGZyYWMzOCAi
JiN4MjE1QzsiPgorPCFFTlRJVFkgZnJhYzU4ICImI3gyMTVEOyI+Cis8IUVOVElUWSBmcmFjNzgg
IiYjeDIxNUU7Ij4KKzwhRU5USVRZIGxhcnIgIiYjeDIxOTA7Ij4KKzwhRU5USVRZIGxlZnRhcnJv
dyAiJiN4MjE5MDsiPgorPCFFTlRJVFkgTGVmdEFycm93ICImI3gyMTkwOyI+Cis8IUVOVElUWSBz
bGFyciAiJiN4MjE5MDsiPgorPCFFTlRJVFkgU2hvcnRMZWZ0QXJyb3cgIiYjeDIxOTA7Ij4KKzwh
RU5USVRZIHVhcnIgIiYjeDIxOTE7Ij4KKzwhRU5USVRZIHVwYXJyb3cgIiYjeDIxOTE7Ij4KKzwh
RU5USVRZIFVwQXJyb3cgIiYjeDIxOTE7Ij4KKzwhRU5USVRZIFNob3J0VXBBcnJvdyAiJiN4MjE5
MTsiPgorPCFFTlRJVFkgcmFyciAiJiN4MjE5MjsiPgorPCFFTlRJVFkgcmlnaHRhcnJvdyAiJiN4
MjE5MjsiPgorPCFFTlRJVFkgUmlnaHRBcnJvdyAiJiN4MjE5MjsiPgorPCFFTlRJVFkgc3JhcnIg
IiYjeDIxOTI7Ij4KKzwhRU5USVRZIFNob3J0UmlnaHRBcnJvdyAiJiN4MjE5MjsiPgorPCFFTlRJ
VFkgZGFyciAiJiN4MjE5MzsiPgorPCFFTlRJVFkgZG93bmFycm93ICImI3gyMTkzOyI+Cis8IUVO
VElUWSBEb3duQXJyb3cgIiYjeDIxOTM7Ij4KKzwhRU5USVRZIFNob3J0RG93bkFycm93ICImI3gy
MTkzOyI+Cis8IUVOVElUWSBoYXJyICImI3gyMTk0OyI+Cis8IUVOVElUWSBsZWZ0cmlnaHRhcnJv
dyAiJiN4MjE5NDsiPgorPCFFTlRJVFkgTGVmdFJpZ2h0QXJyb3cgIiYjeDIxOTQ7Ij4KKzwhRU5U
SVRZIHZhcnIgIiYjeDIxOTU7Ij4KKzwhRU5USVRZIHVwZG93bmFycm93ICImI3gyMTk1OyI+Cis8
IUVOVElUWSBVcERvd25BcnJvdyAiJiN4MjE5NTsiPgorPCFFTlRJVFkgbndhcnIgIiYjeDIxOTY7
Ij4KKzwhRU5USVRZIFVwcGVyTGVmdEFycm93ICImI3gyMTk2OyI+Cis8IUVOVElUWSBud2Fycm93
ICImI3gyMTk2OyI+Cis8IUVOVElUWSBuZWFyciAiJiN4MjE5NzsiPgorPCFFTlRJVFkgVXBwZXJS
aWdodEFycm93ICImI3gyMTk3OyI+Cis8IUVOVElUWSBuZWFycm93ICImI3gyMTk3OyI+Cis8IUVO
VElUWSBzZWFyciAiJiN4MjE5ODsiPgorPCFFTlRJVFkgc2VhcnJvdyAiJiN4MjE5ODsiPgorPCFF
TlRJVFkgTG93ZXJSaWdodEFycm93ICImI3gyMTk4OyI+Cis8IUVOVElUWSBzd2FyciAiJiN4MjE5
OTsiPgorPCFFTlRJVFkgc3dhcnJvdyAiJiN4MjE5OTsiPgorPCFFTlRJVFkgTG93ZXJMZWZ0QXJy
b3cgIiYjeDIxOTk7Ij4KKzwhRU5USVRZIG5sYXJyICImI3gyMTlBOyI+Cis8IUVOVElUWSBubGVm
dGFycm93ICImI3gyMTlBOyI+Cis8IUVOVElUWSBucmFyciAiJiN4MjE5QjsiPgorPCFFTlRJVFkg
bnJpZ2h0YXJyb3cgIiYjeDIxOUI7Ij4KKzwhRU5USVRZIHJhcnJ3ICImI3gyMTlEOyI+Cis8IUVO
VElUWSByaWdodHNxdWlnYXJyb3cgIiYjeDIxOUQ7Ij4KKzwhRU5USVRZIG5yYXJydyAiJiN4MjE5
RDsmI3gzMzg7Ij4KKzwhRU5USVRZIExhcnIgIiYjeDIxOUU7Ij4KKzwhRU5USVRZIHR3b2hlYWRs
ZWZ0YXJyb3cgIiYjeDIxOUU7Ij4KKzwhRU5USVRZIFVhcnIgIiYjeDIxOUY7Ij4KKzwhRU5USVRZ
IFJhcnIgIiYjeDIxQTA7Ij4KKzwhRU5USVRZIHR3b2hlYWRyaWdodGFycm93ICImI3gyMUEwOyI+
Cis8IUVOVElUWSBEYXJyICImI3gyMUExOyI+Cis8IUVOVElUWSBsYXJydGwgIiYjeDIxQTI7Ij4K
KzwhRU5USVRZIGxlZnRhcnJvd3RhaWwgIiYjeDIxQTI7Ij4KKzwhRU5USVRZIHJhcnJ0bCAiJiN4
MjFBMzsiPgorPCFFTlRJVFkgcmlnaHRhcnJvd3RhaWwgIiYjeDIxQTM7Ij4KKzwhRU5USVRZIExl
ZnRUZWVBcnJvdyAiJiN4MjFBNDsiPgorPCFFTlRJVFkgbWFwc3RvbGVmdCAiJiN4MjFBNDsiPgor
PCFFTlRJVFkgVXBUZWVBcnJvdyAiJiN4MjFBNTsiPgorPCFFTlRJVFkgbWFwc3RvdXAgIiYjeDIx
QTU7Ij4KKzwhRU5USVRZIG1hcCAiJiN4MjFBNjsiPgorPCFFTlRJVFkgUmlnaHRUZWVBcnJvdyAi
JiN4MjFBNjsiPgorPCFFTlRJVFkgbWFwc3RvICImI3gyMUE2OyI+Cis8IUVOVElUWSBEb3duVGVl
QXJyb3cgIiYjeDIxQTc7Ij4KKzwhRU5USVRZIG1hcHN0b2Rvd24gIiYjeDIxQTc7Ij4KKzwhRU5U
SVRZIGxhcnJoayAiJiN4MjFBOTsiPgorPCFFTlRJVFkgaG9va2xlZnRhcnJvdyAiJiN4MjFBOTsi
PgorPCFFTlRJVFkgcmFycmhrICImI3gyMUFBOyI+Cis8IUVOVElUWSBob29rcmlnaHRhcnJvdyAi
JiN4MjFBQTsiPgorPCFFTlRJVFkgbGFycmxwICImI3gyMUFCOyI+Cis8IUVOVElUWSBsb29wYXJy
b3dsZWZ0ICImI3gyMUFCOyI+Cis8IUVOVElUWSByYXJybHAgIiYjeDIxQUM7Ij4KKzwhRU5USVRZ
IGxvb3BhcnJvd3JpZ2h0ICImI3gyMUFDOyI+Cis8IUVOVElUWSBoYXJydyAiJiN4MjFBRDsiPgor
PCFFTlRJVFkgbGVmdHJpZ2h0c3F1aWdhcnJvdyAiJiN4MjFBRDsiPgorPCFFTlRJVFkgbmhhcnIg
IiYjeDIxQUU7Ij4KKzwhRU5USVRZIG5sZWZ0cmlnaHRhcnJvdyAiJiN4MjFBRTsiPgorPCFFTlRJ
VFkgbHNoICImI3gyMUIwOyI+Cis8IUVOVElUWSBMc2ggIiYjeDIxQjA7Ij4KKzwhRU5USVRZIHJz
aCAiJiN4MjFCMTsiPgorPCFFTlRJVFkgUnNoICImI3gyMUIxOyI+Cis8IUVOVElUWSBsZHNoICIm
I3gyMUIyOyI+Cis8IUVOVElUWSByZHNoICImI3gyMUIzOyI+Cis8IUVOVElUWSBjcmFyciAiJiN4
MjFCNTsiPgorPCFFTlRJVFkgY3VsYXJyICImI3gyMUI2OyI+Cis8IUVOVElUWSBjdXJ2ZWFycm93
bGVmdCAiJiN4MjFCNjsiPgorPCFFTlRJVFkgY3VyYXJyICImI3gyMUI3OyI+Cis8IUVOVElUWSBj
dXJ2ZWFycm93cmlnaHQgIiYjeDIxQjc7Ij4KKzwhRU5USVRZIG9sYXJyICImI3gyMUJBOyI+Cis8
IUVOVElUWSBjaXJjbGVhcnJvd2xlZnQgIiYjeDIxQkE7Ij4KKzwhRU5USVRZIG9yYXJyICImI3gy
MUJCOyI+Cis8IUVOVElUWSBjaXJjbGVhcnJvd3JpZ2h0ICImI3gyMUJCOyI+Cis8IUVOVElUWSBs
aGFydSAiJiN4MjFCQzsiPgorPCFFTlRJVFkgTGVmdFZlY3RvciAiJiN4MjFCQzsiPgorPCFFTlRJ
VFkgbGVmdGhhcnBvb251cCAiJiN4MjFCQzsiPgorPCFFTlRJVFkgbGhhcmQgIiYjeDIxQkQ7Ij4K
KzwhRU5USVRZIGxlZnRoYXJwb29uZG93biAiJiN4MjFCRDsiPgorPCFFTlRJVFkgRG93bkxlZnRW
ZWN0b3IgIiYjeDIxQkQ7Ij4KKzwhRU5USVRZIHVoYXJyICImI3gyMUJFOyI+Cis8IUVOVElUWSB1
cGhhcnBvb25yaWdodCAiJiN4MjFCRTsiPgorPCFFTlRJVFkgUmlnaHRVcFZlY3RvciAiJiN4MjFC
RTsiPgorPCFFTlRJVFkgdWhhcmwgIiYjeDIxQkY7Ij4KKzwhRU5USVRZIHVwaGFycG9vbmxlZnQg
IiYjeDIxQkY7Ij4KKzwhRU5USVRZIExlZnRVcFZlY3RvciAiJiN4MjFCRjsiPgorPCFFTlRJVFkg
cmhhcnUgIiYjeDIxQzA7Ij4KKzwhRU5USVRZIFJpZ2h0VmVjdG9yICImI3gyMUMwOyI+Cis8IUVO
VElUWSByaWdodGhhcnBvb251cCAiJiN4MjFDMDsiPgorPCFFTlRJVFkgcmhhcmQgIiYjeDIxQzE7
Ij4KKzwhRU5USVRZIHJpZ2h0aGFycG9vbmRvd24gIiYjeDIxQzE7Ij4KKzwhRU5USVRZIERvd25S
aWdodFZlY3RvciAiJiN4MjFDMTsiPgorPCFFTlRJVFkgZGhhcnIgIiYjeDIxQzI7Ij4KKzwhRU5U
SVRZIFJpZ2h0RG93blZlY3RvciAiJiN4MjFDMjsiPgorPCFFTlRJVFkgZG93bmhhcnBvb25yaWdo
dCAiJiN4MjFDMjsiPgorPCFFTlRJVFkgZGhhcmwgIiYjeDIxQzM7Ij4KKzwhRU5USVRZIExlZnRE
b3duVmVjdG9yICImI3gyMUMzOyI+Cis8IUVOVElUWSBkb3duaGFycG9vbmxlZnQgIiYjeDIxQzM7
Ij4KKzwhRU5USVRZIHJsYXJyICImI3gyMUM0OyI+Cis8IUVOVElUWSByaWdodGxlZnRhcnJvd3Mg
IiYjeDIxQzQ7Ij4KKzwhRU5USVRZIFJpZ2h0QXJyb3dMZWZ0QXJyb3cgIiYjeDIxQzQ7Ij4KKzwh
RU5USVRZIHVkYXJyICImI3gyMUM1OyI+Cis8IUVOVElUWSBVcEFycm93RG93bkFycm93ICImI3gy
MUM1OyI+Cis8IUVOVElUWSBscmFyciAiJiN4MjFDNjsiPgorPCFFTlRJVFkgbGVmdHJpZ2h0YXJy
b3dzICImI3gyMUM2OyI+Cis8IUVOVElUWSBMZWZ0QXJyb3dSaWdodEFycm93ICImI3gyMUM2OyI+
Cis8IUVOVElUWSBsbGFyciAiJiN4MjFDNzsiPgorPCFFTlRJVFkgbGVmdGxlZnRhcnJvd3MgIiYj
eDIxQzc7Ij4KKzwhRU5USVRZIHV1YXJyICImI3gyMUM4OyI+Cis8IUVOVElUWSB1cHVwYXJyb3dz
ICImI3gyMUM4OyI+Cis8IUVOVElUWSBycmFyciAiJiN4MjFDOTsiPgorPCFFTlRJVFkgcmlnaHRy
aWdodGFycm93cyAiJiN4MjFDOTsiPgorPCFFTlRJVFkgZGRhcnIgIiYjeDIxQ0E7Ij4KKzwhRU5U
SVRZIGRvd25kb3duYXJyb3dzICImI3gyMUNBOyI+Cis8IUVOVElUWSBscmhhciAiJiN4MjFDQjsi
PgorPCFFTlRJVFkgUmV2ZXJzZUVxdWlsaWJyaXVtICImI3gyMUNCOyI+Cis8IUVOVElUWSBsZWZ0
cmlnaHRoYXJwb29ucyAiJiN4MjFDQjsiPgorPCFFTlRJVFkgcmxoYXIgIiYjeDIxQ0M7Ij4KKzwh
RU5USVRZIHJpZ2h0bGVmdGhhcnBvb25zICImI3gyMUNDOyI+Cis8IUVOVElUWSBFcXVpbGlicml1
bSAiJiN4MjFDQzsiPgorPCFFTlRJVFkgbmxBcnIgIiYjeDIxQ0Q7Ij4KKzwhRU5USVRZIG5MZWZ0
YXJyb3cgIiYjeDIxQ0Q7Ij4KKzwhRU5USVRZIG5oQXJyICImI3gyMUNFOyI+Cis8IUVOVElUWSBu
TGVmdHJpZ2h0YXJyb3cgIiYjeDIxQ0U7Ij4KKzwhRU5USVRZIG5yQXJyICImI3gyMUNGOyI+Cis8
IUVOVElUWSBuUmlnaHRhcnJvdyAiJiN4MjFDRjsiPgorPCFFTlRJVFkgbEFyciAiJiN4MjFEMDsi
PgorPCFFTlRJVFkgTGVmdGFycm93ICImI3gyMUQwOyI+Cis8IUVOVElUWSBEb3VibGVMZWZ0QXJy
b3cgIiYjeDIxRDA7Ij4KKzwhRU5USVRZIHVBcnIgIiYjeDIxRDE7Ij4KKzwhRU5USVRZIFVwYXJy
b3cgIiYjeDIxRDE7Ij4KKzwhRU5USVRZIERvdWJsZVVwQXJyb3cgIiYjeDIxRDE7Ij4KKzwhRU5U
SVRZIHJBcnIgIiYjeDIxRDI7Ij4KKzwhRU5USVRZIFJpZ2h0YXJyb3cgIiYjeDIxRDI7Ij4KKzwh
RU5USVRZIEltcGxpZXMgIiYjeDIxRDI7Ij4KKzwhRU5USVRZIERvdWJsZVJpZ2h0QXJyb3cgIiYj
eDIxRDI7Ij4KKzwhRU5USVRZIGRBcnIgIiYjeDIxRDM7Ij4KKzwhRU5USVRZIERvd25hcnJvdyAi
JiN4MjFEMzsiPgorPCFFTlRJVFkgRG91YmxlRG93bkFycm93ICImI3gyMUQzOyI+Cis8IUVOVElU
WSBoQXJyICImI3gyMUQ0OyI+Cis8IUVOVElUWSBMZWZ0cmlnaHRhcnJvdyAiJiN4MjFENDsiPgor
PCFFTlRJVFkgRG91YmxlTGVmdFJpZ2h0QXJyb3cgIiYjeDIxRDQ7Ij4KKzwhRU5USVRZIGlmZiAi
JiN4MjFENDsiPgorPCFFTlRJVFkgdkFyciAiJiN4MjFENTsiPgorPCFFTlRJVFkgVXBkb3duYXJy
b3cgIiYjeDIxRDU7Ij4KKzwhRU5USVRZIERvdWJsZVVwRG93bkFycm93ICImI3gyMUQ1OyI+Cis8
IUVOVElUWSBud0FyciAiJiN4MjFENjsiPgorPCFFTlRJVFkgbmVBcnIgIiYjeDIxRDc7Ij4KKzwh
RU5USVRZIHNlQXJyICImI3gyMUQ4OyI+Cis8IUVOVElUWSBzd0FyciAiJiN4MjFEOTsiPgorPCFF
TlRJVFkgbEFhcnIgIiYjeDIxREE7Ij4KKzwhRU5USVRZIExsZWZ0YXJyb3cgIiYjeDIxREE7Ij4K
KzwhRU5USVRZIHJBYXJyICImI3gyMURCOyI+Cis8IUVOVElUWSBScmlnaHRhcnJvdyAiJiN4MjFE
QjsiPgorPCFFTlRJVFkgemlncmFyciAiJiN4MjFERDsiPgorPCFFTlRJVFkgbGFycmIgIiYjeDIx
RTQ7Ij4KKzwhRU5USVRZIExlZnRBcnJvd0JhciAiJiN4MjFFNDsiPgorPCFFTlRJVFkgcmFycmIg
IiYjeDIxRTU7Ij4KKzwhRU5USVRZIFJpZ2h0QXJyb3dCYXIgIiYjeDIxRTU7Ij4KKzwhRU5USVRZ
IGR1YXJyICImI3gyMUY1OyI+Cis8IUVOVElUWSBEb3duQXJyb3dVcEFycm93ICImI3gyMUY1OyI+
Cis8IUVOVElUWSBsb2FyciAiJiN4MjFGRDsiPgorPCFFTlRJVFkgcm9hcnIgIiYjeDIxRkU7Ij4K
KzwhRU5USVRZIGhvYXJyICImI3gyMUZGOyI+Cis8IUVOVElUWSBmb3JhbGwgIiYjeDIyMDA7Ij4K
KzwhRU5USVRZIEZvckFsbCAiJiN4MjIwMDsiPgorPCFFTlRJVFkgY29tcCAiJiN4MjIwMTsiPgor
PCFFTlRJVFkgY29tcGxlbWVudCAiJiN4MjIwMTsiPgorPCFFTlRJVFkgcGFydCAiJiN4MjIwMjsi
PgorPCFFTlRJVFkgUGFydGlhbEQgIiYjeDIyMDI7Ij4KKzwhRU5USVRZIG5wYXJ0ICImI3gyMjAy
OyYjeDMzODsiPgorPCFFTlRJVFkgZXhpc3QgIiYjeDIyMDM7Ij4KKzwhRU5USVRZIEV4aXN0cyAi
JiN4MjIwMzsiPgorPCFFTlRJVFkgbmV4aXN0ICImI3gyMjA0OyI+Cis8IUVOVElUWSBOb3RFeGlz
dHMgIiYjeDIyMDQ7Ij4KKzwhRU5USVRZIG5leGlzdHMgIiYjeDIyMDQ7Ij4KKzwhRU5USVRZIGVt
cHR5ICImI3gyMjA1OyI+Cis8IUVOVElUWSBlbXB0eXNldCAiJiN4MjIwNTsiPgorPCFFTlRJVFkg
ZW1wdHl2ICImI3gyMjA1OyI+Cis8IUVOVElUWSB2YXJub3RoaW5nICImI3gyMjA1OyI+Cis8IUVO
VElUWSBuYWJsYSAiJiN4MjIwNzsiPgorPCFFTlRJVFkgRGVsICImI3gyMjA3OyI+Cis8IUVOVElU
WSBpc2luICImI3gyMjA4OyI+Cis8IUVOVElUWSBpc2ludiAiJiN4MjIwODsiPgorPCFFTlRJVFkg
RWxlbWVudCAiJiN4MjIwODsiPgorPCFFTlRJVFkgaW4gIiYjeDIyMDg7Ij4KKzwhRU5USVRZIG5v
dGluICImI3gyMjA5OyI+Cis8IUVOVElUWSBOb3RFbGVtZW50ICImI3gyMjA5OyI+Cis8IUVOVElU
WSBub3RpbnZhICImI3gyMjA5OyI+Cis8IUVOVElUWSBuaXYgIiYjeDIyMEI7Ij4KKzwhRU5USVRZ
IFJldmVyc2VFbGVtZW50ICImI3gyMjBCOyI+Cis8IUVOVElUWSBuaSAiJiN4MjIwQjsiPgorPCFF
TlRJVFkgU3VjaFRoYXQgIiYjeDIyMEI7Ij4KKzwhRU5USVRZIG5vdG5pICImI3gyMjBDOyI+Cis8
IUVOVElUWSBub3RuaXZhICImI3gyMjBDOyI+Cis8IUVOVElUWSBOb3RSZXZlcnNlRWxlbWVudCAi
JiN4MjIwQzsiPgorPCFFTlRJVFkgcHJvZCAiJiN4MjIwRjsiPgorPCFFTlRJVFkgUHJvZHVjdCAi
JiN4MjIwRjsiPgorPCFFTlRJVFkgY29wcm9kICImI3gyMjEwOyI+Cis8IUVOVElUWSBDb3Byb2R1
Y3QgIiYjeDIyMTA7Ij4KKzwhRU5USVRZIHN1bSAiJiN4MjIxMTsiPgorPCFFTlRJVFkgU3VtICIm
I3gyMjExOyI+Cis8IUVOVElUWSBtaW51cyAiJiN4MjIxMjsiPgorPCFFTlRJVFkgbW5wbHVzICIm
I3gyMjEzOyI+Cis8IUVOVElUWSBtcCAiJiN4MjIxMzsiPgorPCFFTlRJVFkgTWludXNQbHVzICIm
I3gyMjEzOyI+Cis8IUVOVElUWSBwbHVzZG8gIiYjeDIyMTQ7Ij4KKzwhRU5USVRZIGRvdHBsdXMg
IiYjeDIyMTQ7Ij4KKzwhRU5USVRZIHNldG1uICImI3gyMjE2OyI+Cis8IUVOVElUWSBzZXRtaW51
cyAiJiN4MjIxNjsiPgorPCFFTlRJVFkgQmFja3NsYXNoICImI3gyMjE2OyI+Cis8IUVOVElUWSBz
c2V0bW4gIiYjeDIyMTY7Ij4KKzwhRU5USVRZIHNtYWxsc2V0bWludXMgIiYjeDIyMTY7Ij4KKzwh
RU5USVRZIGxvd2FzdCAiJiN4MjIxNzsiPgorPCFFTlRJVFkgY29tcGZuICImI3gyMjE4OyI+Cis8
IUVOVElUWSBTbWFsbENpcmNsZSAiJiN4MjIxODsiPgorPCFFTlRJVFkgcmFkaWMgIiYjeDIyMUE7
Ij4KKzwhRU5USVRZIFNxcnQgIiYjeDIyMUE7Ij4KKzwhRU5USVRZIHByb3AgIiYjeDIyMUQ7Ij4K
KzwhRU5USVRZIHByb3B0byAiJiN4MjIxRDsiPgorPCFFTlRJVFkgUHJvcG9ydGlvbmFsICImI3gy
MjFEOyI+Cis8IUVOVElUWSB2cHJvcCAiJiN4MjIxRDsiPgorPCFFTlRJVFkgdmFycHJvcHRvICIm
I3gyMjFEOyI+Cis8IUVOVElUWSBpbmZpbiAiJiN4MjIxRTsiPgorPCFFTlRJVFkgYW5ncnQgIiYj
eDIyMUY7Ij4KKzwhRU5USVRZIGFuZyAiJiN4MjIyMDsiPgorPCFFTlRJVFkgYW5nbGUgIiYjeDIy
MjA7Ij4KKzwhRU5USVRZIG5hbmcgIiYjeDIyMjA7JiN4MjBEMjsiPgorPCFFTlRJVFkgYW5nbXNk
ICImI3gyMjIxOyI+Cis8IUVOVElUWSBtZWFzdXJlZGFuZ2xlICImI3gyMjIxOyI+Cis8IUVOVElU
WSBhbmdzcGggIiYjeDIyMjI7Ij4KKzwhRU5USVRZIG1pZCAiJiN4MjIyMzsiPgorPCFFTlRJVFkg
VmVydGljYWxCYXIgIiYjeDIyMjM7Ij4KKzwhRU5USVRZIHNtaWQgIiYjeDIyMjM7Ij4KKzwhRU5U
SVRZIHNob3J0bWlkICImI3gyMjIzOyI+Cis8IUVOVElUWSBubWlkICImI3gyMjI0OyI+Cis8IUVO
VElUWSBOb3RWZXJ0aWNhbEJhciAiJiN4MjIyNDsiPgorPCFFTlRJVFkgbnNtaWQgIiYjeDIyMjQ7
Ij4KKzwhRU5USVRZIG5zaG9ydG1pZCAiJiN4MjIyNDsiPgorPCFFTlRJVFkgcGFyICImI3gyMjI1
OyI+Cis8IUVOVElUWSBwYXJhbGxlbCAiJiN4MjIyNTsiPgorPCFFTlRJVFkgRG91YmxlVmVydGlj
YWxCYXIgIiYjeDIyMjU7Ij4KKzwhRU5USVRZIHNwYXIgIiYjeDIyMjU7Ij4KKzwhRU5USVRZIHNo
b3J0cGFyYWxsZWwgIiYjeDIyMjU7Ij4KKzwhRU5USVRZIG5wYXIgIiYjeDIyMjY7Ij4KKzwhRU5U
SVRZIG5wYXJhbGxlbCAiJiN4MjIyNjsiPgorPCFFTlRJVFkgTm90RG91YmxlVmVydGljYWxCYXIg
IiYjeDIyMjY7Ij4KKzwhRU5USVRZIG5zcGFyICImI3gyMjI2OyI+Cis8IUVOVElUWSBuc2hvcnRw
YXJhbGxlbCAiJiN4MjIyNjsiPgorPCFFTlRJVFkgYW5kICImI3gyMjI3OyI+Cis8IUVOVElUWSB3
ZWRnZSAiJiN4MjIyNzsiPgorPCFFTlRJVFkgb3IgIiYjeDIyMjg7Ij4KKzwhRU5USVRZIHZlZSAi
JiN4MjIyODsiPgorPCFFTlRJVFkgY2FwICImI3gyMjI5OyI+Cis8IUVOVElUWSBjYXBzICImI3gy
MjI5OyYjeEZFMDA7Ij4KKzwhRU5USVRZIGN1cCAiJiN4MjIyQTsiPgorPCFFTlRJVFkgY3VwcyAi
JiN4MjIyQTsmI3hGRTAwOyI+Cis8IUVOVElUWSBpbnQgIiYjeDIyMkI7Ij4KKzwhRU5USVRZIElu
dGVncmFsICImI3gyMjJCOyI+Cis8IUVOVElUWSBJbnQgIiYjeDIyMkM7Ij4KKzwhRU5USVRZIHRp
bnQgIiYjeDIyMkQ7Ij4KKzwhRU5USVRZIGlpaW50ICImI3gyMjJEOyI+Cis8IUVOVElUWSBjb25p
bnQgIiYjeDIyMkU7Ij4KKzwhRU5USVRZIG9pbnQgIiYjeDIyMkU7Ij4KKzwhRU5USVRZIENvbnRv
dXJJbnRlZ3JhbCAiJiN4MjIyRTsiPgorPCFFTlRJVFkgQ29uaW50ICImI3gyMjJGOyI+Cis8IUVO
VElUWSBEb3VibGVDb250b3VySW50ZWdyYWwgIiYjeDIyMkY7Ij4KKzwhRU5USVRZIENjb25pbnQg
IiYjeDIyMzA7Ij4KKzwhRU5USVRZIGN3aW50ICImI3gyMjMxOyI+Cis8IUVOVElUWSBjd2Nvbmlu
dCAiJiN4MjIzMjsiPgorPCFFTlRJVFkgQ2xvY2t3aXNlQ29udG91ckludGVncmFsICImI3gyMjMy
OyI+Cis8IUVOVElUWSBhd2NvbmludCAiJiN4MjIzMzsiPgorPCFFTlRJVFkgQ291bnRlckNsb2Nr
d2lzZUNvbnRvdXJJbnRlZ3JhbCAiJiN4MjIzMzsiPgorPCFFTlRJVFkgdGhlcmU0ICImI3gyMjM0
OyI+Cis8IUVOVElUWSB0aGVyZWZvcmUgIiYjeDIyMzQ7Ij4KKzwhRU5USVRZIFRoZXJlZm9yZSAi
JiN4MjIzNDsiPgorPCFFTlRJVFkgYmVjYXVzICImI3gyMjM1OyI+Cis8IUVOVElUWSBiZWNhdXNl
ICImI3gyMjM1OyI+Cis8IUVOVElUWSBCZWNhdXNlICImI3gyMjM1OyI+Cis8IUVOVElUWSByYXRp
byAiJiN4MjIzNjsiPgorPCFFTlRJVFkgQ29sb24gIiYjeDIyMzc7Ij4KKzwhRU5USVRZIFByb3Bv
cnRpb24gIiYjeDIyMzc7Ij4KKzwhRU5USVRZIG1pbnVzZCAiJiN4MjIzODsiPgorPCFFTlRJVFkg
ZG90bWludXMgIiYjeDIyMzg7Ij4KKzwhRU5USVRZIG1ERG90ICImI3gyMjNBOyI+Cis8IUVOVElU
WSBob210aHQgIiYjeDIyM0I7Ij4KKzwhRU5USVRZIHNpbSAiJiN4MjIzQzsiPgorPCFFTlRJVFkg
VGlsZGUgIiYjeDIyM0M7Ij4KKzwhRU5USVRZIHRoa3NpbSAiJiN4MjIzQzsiPgorPCFFTlRJVFkg
dGhpY2tzaW0gIiYjeDIyM0M7Ij4KKzwhRU5USVRZIG52c2ltICImI3gyMjNDOyYjeDIwRDI7Ij4K
KzwhRU5USVRZIGJzaW0gIiYjeDIyM0Q7Ij4KKzwhRU5USVRZIGJhY2tzaW0gIiYjeDIyM0Q7Ij4K
KzwhRU5USVRZIHJhY2UgIiYjeDIyM0Q7JiN4MzMxOyI+Cis8IUVOVElUWSBhYyAiJiN4MjIzRTsi
PgorPCFFTlRJVFkgbXN0cG9zICImI3gyMjNFOyI+Cis8IUVOVElUWSBhY0UgIiYjeDIyM0U7JiN4
MzMzOyI+Cis8IUVOVElUWSBhY2QgIiYjeDIyM0Y7Ij4KKzwhRU5USVRZIHdyZWF0aCAiJiN4MjI0
MDsiPgorPCFFTlRJVFkgVmVydGljYWxUaWxkZSAiJiN4MjI0MDsiPgorPCFFTlRJVFkgd3IgIiYj
eDIyNDA7Ij4KKzwhRU5USVRZIG5zaW0gIiYjeDIyNDE7Ij4KKzwhRU5USVRZIE5vdFRpbGRlICIm
I3gyMjQxOyI+Cis8IUVOVElUWSBlc2ltICImI3gyMjQyOyI+Cis8IUVOVElUWSBFcXVhbFRpbGRl
ICImI3gyMjQyOyI+Cis8IUVOVElUWSBlcXNpbSAiJiN4MjI0MjsiPgorPCFFTlRJVFkgTm90RXF1
YWxUaWxkZSAiJiN4MjI0MjsmI3gzMzg7Ij4KKzwhRU5USVRZIG5lc2ltICImI3gyMjQyOyYjeDMz
ODsiPgorPCFFTlRJVFkgc2ltZSAiJiN4MjI0MzsiPgorPCFFTlRJVFkgVGlsZGVFcXVhbCAiJiN4
MjI0MzsiPgorPCFFTlRJVFkgc2ltZXEgIiYjeDIyNDM7Ij4KKzwhRU5USVRZIG5zaW1lICImI3gy
MjQ0OyI+Cis8IUVOVElUWSBuc2ltZXEgIiYjeDIyNDQ7Ij4KKzwhRU5USVRZIE5vdFRpbGRlRXF1
YWwgIiYjeDIyNDQ7Ij4KKzwhRU5USVRZIGNvbmcgIiYjeDIyNDU7Ij4KKzwhRU5USVRZIFRpbGRl
RnVsbEVxdWFsICImI3gyMjQ1OyI+Cis8IUVOVElUWSBzaW1uZSAiJiN4MjI0NjsiPgorPCFFTlRJ
VFkgbmNvbmcgIiYjeDIyNDc7Ij4KKzwhRU5USVRZIE5vdFRpbGRlRnVsbEVxdWFsICImI3gyMjQ3
OyI+Cis8IUVOVElUWSBhc3ltcCAiJiN4MjI0ODsiPgorPCFFTlRJVFkgYXAgIiYjeDIyNDg7Ij4K
KzwhRU5USVRZIFRpbGRlVGlsZGUgIiYjeDIyNDg7Ij4KKzwhRU5USVRZIGFwcHJveCAiJiN4MjI0
ODsiPgorPCFFTlRJVFkgdGhrYXAgIiYjeDIyNDg7Ij4KKzwhRU5USVRZIHRoaWNrYXBwcm94ICIm
I3gyMjQ4OyI+Cis8IUVOVElUWSBuYXAgIiYjeDIyNDk7Ij4KKzwhRU5USVRZIE5vdFRpbGRlVGls
ZGUgIiYjeDIyNDk7Ij4KKzwhRU5USVRZIG5hcHByb3ggIiYjeDIyNDk7Ij4KKzwhRU5USVRZIGFw
ZSAiJiN4MjI0QTsiPgorPCFFTlRJVFkgYXBwcm94ZXEgIiYjeDIyNEE7Ij4KKzwhRU5USVRZIGFw
aWQgIiYjeDIyNEI7Ij4KKzwhRU5USVRZIG5hcGlkICImI3gyMjRCOyYjeDMzODsiPgorPCFFTlRJ
VFkgYmNvbmcgIiYjeDIyNEM7Ij4KKzwhRU5USVRZIGJhY2tjb25nICImI3gyMjRDOyI+Cis8IUVO
VElUWSBhc3ltcGVxICImI3gyMjREOyI+Cis8IUVOVElUWSBDdXBDYXAgIiYjeDIyNEQ7Ij4KKzwh
RU5USVRZIG52YXAgIiYjeDIyNEQ7JiN4MjBEMjsiPgorPCFFTlRJVFkgYnVtcCAiJiN4MjI0RTsi
PgorPCFFTlRJVFkgSHVtcERvd25IdW1wICImI3gyMjRFOyI+Cis8IUVOVElUWSBCdW1wZXEgIiYj
eDIyNEU7Ij4KKzwhRU5USVRZIE5vdEh1bXBEb3duSHVtcCAiJiN4MjI0RTsmI3gzMzg7Ij4KKzwh
RU5USVRZIG5idW1wICImI3gyMjRFOyYjeDMzODsiPgorPCFFTlRJVFkgYnVtcGUgIiYjeDIyNEY7
Ij4KKzwhRU5USVRZIEh1bXBFcXVhbCAiJiN4MjI0RjsiPgorPCFFTlRJVFkgYnVtcGVxICImI3gy
MjRGOyI+Cis8IUVOVElUWSBuYnVtcGUgIiYjeDIyNEY7JiN4MzM4OyI+Cis8IUVOVElUWSBOb3RI
dW1wRXF1YWwgIiYjeDIyNEY7JiN4MzM4OyI+Cis8IUVOVElUWSBlc2RvdCAiJiN4MjI1MDsiPgor
PCFFTlRJVFkgRG90RXF1YWwgIiYjeDIyNTA7Ij4KKzwhRU5USVRZIGRvdGVxICImI3gyMjUwOyI+
Cis8IUVOVElUWSBuZWRvdCAiJiN4MjI1MDsmI3gzMzg7Ij4KKzwhRU5USVRZIGVEb3QgIiYjeDIy
NTE7Ij4KKzwhRU5USVRZIGRvdGVxZG90ICImI3gyMjUxOyI+Cis8IUVOVElUWSBlZkRvdCAiJiN4
MjI1MjsiPgorPCFFTlRJVFkgZmFsbGluZ2RvdHNlcSAiJiN4MjI1MjsiPgorPCFFTlRJVFkgZXJE
b3QgIiYjeDIyNTM7Ij4KKzwhRU5USVRZIHJpc2luZ2RvdHNlcSAiJiN4MjI1MzsiPgorPCFFTlRJ
VFkgY29sb25lICImI3gyMjU0OyI+Cis8IUVOVElUWSBjb2xvbmVxICImI3gyMjU0OyI+Cis8IUVO
VElUWSBBc3NpZ24gIiYjeDIyNTQ7Ij4KKzwhRU5USVRZIGVjb2xvbiAiJiN4MjI1NTsiPgorPCFF
TlRJVFkgZXFjb2xvbiAiJiN4MjI1NTsiPgorPCFFTlRJVFkgZWNpciAiJiN4MjI1NjsiPgorPCFF
TlRJVFkgZXFjaXJjICImI3gyMjU2OyI+Cis8IUVOVElUWSBjaXJlICImI3gyMjU3OyI+Cis8IUVO
VElUWSBjaXJjZXEgIiYjeDIyNTc7Ij4KKzwhRU5USVRZIHdlZGdlcSAiJiN4MjI1OTsiPgorPCFF
TlRJVFkgdmVlZXEgIiYjeDIyNUE7Ij4KKzwhRU5USVRZIHRyaWUgIiYjeDIyNUM7Ij4KKzwhRU5U
SVRZIHRyaWFuZ2xlcSAiJiN4MjI1QzsiPgorPCFFTlRJVFkgZXF1ZXN0ICImI3gyMjVGOyI+Cis8
IUVOVElUWSBxdWVzdGVxICImI3gyMjVGOyI+Cis8IUVOVElUWSBuZSAiJiN4MjI2MDsiPgorPCFF
TlRJVFkgTm90RXF1YWwgIiYjeDIyNjA7Ij4KKzwhRU5USVRZIGVxdWl2ICImI3gyMjYxOyI+Cis8
IUVOVElUWSBDb25ncnVlbnQgIiYjeDIyNjE7Ij4KKzwhRU5USVRZIGJuZXF1aXYgIiYjeDIyNjE7
JiN4MjBFNTsiPgorPCFFTlRJVFkgbmVxdWl2ICImI3gyMjYyOyI+Cis8IUVOVElUWSBOb3RDb25n
cnVlbnQgIiYjeDIyNjI7Ij4KKzwhRU5USVRZIGxlICImI3gyMjY0OyI+Cis8IUVOVElUWSBsZXEg
IiYjeDIyNjQ7Ij4KKzwhRU5USVRZIG52bGUgIiYjeDIyNjQ7JiN4MjBEMjsiPgorPCFFTlRJVFkg
Z2UgIiYjeDIyNjU7Ij4KKzwhRU5USVRZIEdyZWF0ZXJFcXVhbCAiJiN4MjI2NTsiPgorPCFFTlRJ
VFkgZ2VxICImI3gyMjY1OyI+Cis8IUVOVElUWSBudmdlICImI3gyMjY1OyYjeDIwRDI7Ij4KKzwh
RU5USVRZIGxFICImI3gyMjY2OyI+Cis8IUVOVElUWSBMZXNzRnVsbEVxdWFsICImI3gyMjY2OyI+
Cis8IUVOVElUWSBsZXFxICImI3gyMjY2OyI+Cis8IUVOVElUWSBubEUgIiYjeDIyNjY7JiN4MzM4
OyI+Cis8IUVOVElUWSBubGVxcSAiJiN4MjI2NjsmI3gzMzg7Ij4KKzwhRU5USVRZIGdFICImI3gy
MjY3OyI+Cis8IUVOVElUWSBHcmVhdGVyRnVsbEVxdWFsICImI3gyMjY3OyI+Cis8IUVOVElUWSBn
ZXFxICImI3gyMjY3OyI+Cis8IUVOVElUWSBuZ0UgIiYjeDIyNjc7JiN4MzM4OyI+Cis8IUVOVElU
WSBuZ2VxcSAiJiN4MjI2NzsmI3gzMzg7Ij4KKzwhRU5USVRZIE5vdEdyZWF0ZXJGdWxsRXF1YWwg
IiYjeDIyNjc7JiN4MzM4OyI+Cis8IUVOVElUWSBsbkUgIiYjeDIyNjg7Ij4KKzwhRU5USVRZIGxu
ZXFxICImI3gyMjY4OyI+Cis8IUVOVElUWSBsdm5FICImI3gyMjY4OyYjeEZFMDA7Ij4KKzwhRU5U
SVRZIGx2ZXJ0bmVxcSAiJiN4MjI2ODsmI3hGRTAwOyI+Cis8IUVOVElUWSBnbkUgIiYjeDIyNjk7
Ij4KKzwhRU5USVRZIGduZXFxICImI3gyMjY5OyI+Cis8IUVOVElUWSBndm5FICImI3gyMjY5OyYj
eEZFMDA7Ij4KKzwhRU5USVRZIGd2ZXJ0bmVxcSAiJiN4MjI2OTsmI3hGRTAwOyI+Cis8IUVOVElU
WSBMdCAiJiN4MjI2QTsiPgorPCFFTlRJVFkgTmVzdGVkTGVzc0xlc3MgIiYjeDIyNkE7Ij4KKzwh
RU5USVRZIGxsICImI3gyMjZBOyI+Cis8IUVOVElUWSBuTHR2ICImI3gyMjZBOyYjeDMzODsiPgor
PCFFTlRJVFkgTm90TGVzc0xlc3MgIiYjeDIyNkE7JiN4MzM4OyI+Cis8IUVOVElUWSBuTHQgIiYj
eDIyNkE7JiN4MjBEMjsiPgorPCFFTlRJVFkgR3QgIiYjeDIyNkI7Ij4KKzwhRU5USVRZIE5lc3Rl
ZEdyZWF0ZXJHcmVhdGVyICImI3gyMjZCOyI+Cis8IUVOVElUWSBnZyAiJiN4MjI2QjsiPgorPCFF
TlRJVFkgbkd0diAiJiN4MjI2QjsmI3gzMzg7Ij4KKzwhRU5USVRZIE5vdEdyZWF0ZXJHcmVhdGVy
ICImI3gyMjZCOyYjeDMzODsiPgorPCFFTlRJVFkgbkd0ICImI3gyMjZCOyYjeDIwRDI7Ij4KKzwh
RU5USVRZIHR3aXh0ICImI3gyMjZDOyI+Cis8IUVOVElUWSBiZXR3ZWVuICImI3gyMjZDOyI+Cis8
IUVOVElUWSBOb3RDdXBDYXAgIiYjeDIyNkQ7Ij4KKzwhRU5USVRZIG5sdCAiJiN4MjI2RTsiPgor
PCFFTlRJVFkgTm90TGVzcyAiJiN4MjI2RTsiPgorPCFFTlRJVFkgbmxlc3MgIiYjeDIyNkU7Ij4K
KzwhRU5USVRZIG5ndCAiJiN4MjI2RjsiPgorPCFFTlRJVFkgTm90R3JlYXRlciAiJiN4MjI2Rjsi
PgorPCFFTlRJVFkgbmd0ciAiJiN4MjI2RjsiPgorPCFFTlRJVFkgbmxlICImI3gyMjcwOyI+Cis8
IUVOVElUWSBOb3RMZXNzRXF1YWwgIiYjeDIyNzA7Ij4KKzwhRU5USVRZIG5sZXEgIiYjeDIyNzA7
Ij4KKzwhRU5USVRZIG5nZSAiJiN4MjI3MTsiPgorPCFFTlRJVFkgTm90R3JlYXRlckVxdWFsICIm
I3gyMjcxOyI+Cis8IUVOVElUWSBuZ2VxICImI3gyMjcxOyI+Cis8IUVOVElUWSBsc2ltICImI3gy
MjcyOyI+Cis8IUVOVElUWSBMZXNzVGlsZGUgIiYjeDIyNzI7Ij4KKzwhRU5USVRZIGxlc3NzaW0g
IiYjeDIyNzI7Ij4KKzwhRU5USVRZIGdzaW0gIiYjeDIyNzM7Ij4KKzwhRU5USVRZIGd0cnNpbSAi
JiN4MjI3MzsiPgorPCFFTlRJVFkgR3JlYXRlclRpbGRlICImI3gyMjczOyI+Cis8IUVOVElUWSBu
bHNpbSAiJiN4MjI3NDsiPgorPCFFTlRJVFkgTm90TGVzc1RpbGRlICImI3gyMjc0OyI+Cis8IUVO
VElUWSBuZ3NpbSAiJiN4MjI3NTsiPgorPCFFTlRJVFkgTm90R3JlYXRlclRpbGRlICImI3gyMjc1
OyI+Cis8IUVOVElUWSBsZyAiJiN4MjI3NjsiPgorPCFFTlRJVFkgbGVzc2d0ciAiJiN4MjI3Njsi
PgorPCFFTlRJVFkgTGVzc0dyZWF0ZXIgIiYjeDIyNzY7Ij4KKzwhRU5USVRZIGdsICImI3gyMjc3
OyI+Cis8IUVOVElUWSBndHJsZXNzICImI3gyMjc3OyI+Cis8IUVOVElUWSBHcmVhdGVyTGVzcyAi
JiN4MjI3NzsiPgorPCFFTlRJVFkgbnRsZyAiJiN4MjI3ODsiPgorPCFFTlRJVFkgTm90TGVzc0dy
ZWF0ZXIgIiYjeDIyNzg7Ij4KKzwhRU5USVRZIG50Z2wgIiYjeDIyNzk7Ij4KKzwhRU5USVRZIE5v
dEdyZWF0ZXJMZXNzICImI3gyMjc5OyI+Cis8IUVOVElUWSBwciAiJiN4MjI3QTsiPgorPCFFTlRJ
VFkgUHJlY2VkZXMgIiYjeDIyN0E7Ij4KKzwhRU5USVRZIHByZWMgIiYjeDIyN0E7Ij4KKzwhRU5U
SVRZIHNjICImI3gyMjdCOyI+Cis8IUVOVElUWSBTdWNjZWVkcyAiJiN4MjI3QjsiPgorPCFFTlRJ
VFkgc3VjYyAiJiN4MjI3QjsiPgorPCFFTlRJVFkgcHJjdWUgIiYjeDIyN0M7Ij4KKzwhRU5USVRZ
IFByZWNlZGVzU2xhbnRFcXVhbCAiJiN4MjI3QzsiPgorPCFFTlRJVFkgcHJlY2N1cmx5ZXEgIiYj
eDIyN0M7Ij4KKzwhRU5USVRZIHNjY3VlICImI3gyMjdEOyI+Cis8IUVOVElUWSBTdWNjZWVkc1Ns
YW50RXF1YWwgIiYjeDIyN0Q7Ij4KKzwhRU5USVRZIHN1Y2NjdXJseWVxICImI3gyMjdEOyI+Cis8
IUVOVElUWSBwcnNpbSAiJiN4MjI3RTsiPgorPCFFTlRJVFkgcHJlY3NpbSAiJiN4MjI3RTsiPgor
PCFFTlRJVFkgUHJlY2VkZXNUaWxkZSAiJiN4MjI3RTsiPgorPCFFTlRJVFkgc2NzaW0gIiYjeDIy
N0Y7Ij4KKzwhRU5USVRZIHN1Y2NzaW0gIiYjeDIyN0Y7Ij4KKzwhRU5USVRZIFN1Y2NlZWRzVGls
ZGUgIiYjeDIyN0Y7Ij4KKzwhRU5USVRZIE5vdFN1Y2NlZWRzVGlsZGUgIiYjeDIyN0Y7JiN4MzM4
OyI+Cis8IUVOVElUWSBucHIgIiYjeDIyODA7Ij4KKzwhRU5USVRZIG5wcmVjICImI3gyMjgwOyI+
Cis8IUVOVElUWSBOb3RQcmVjZWRlcyAiJiN4MjI4MDsiPgorPCFFTlRJVFkgbnNjICImI3gyMjgx
OyI+Cis8IUVOVElUWSBuc3VjYyAiJiN4MjI4MTsiPgorPCFFTlRJVFkgTm90U3VjY2VlZHMgIiYj
eDIyODE7Ij4KKzwhRU5USVRZIHN1YiAiJiN4MjI4MjsiPgorPCFFTlRJVFkgc3Vic2V0ICImI3gy
MjgyOyI+Cis8IUVOVElUWSB2bnN1YiAiJiN4MjI4MjsmI3gyMEQyOyI+Cis8IUVOVElUWSBuc3Vi
c2V0ICImI3gyMjgyOyYjeDIwRDI7Ij4KKzwhRU5USVRZIE5vdFN1YnNldCAiJiN4MjI4MjsmI3gy
MEQyOyI+Cis8IUVOVElUWSBzdXAgIiYjeDIyODM7Ij4KKzwhRU5USVRZIHN1cHNldCAiJiN4MjI4
MzsiPgorPCFFTlRJVFkgU3VwZXJzZXQgIiYjeDIyODM7Ij4KKzwhRU5USVRZIHZuc3VwICImI3gy
MjgzOyYjeDIwRDI7Ij4KKzwhRU5USVRZIG5zdXBzZXQgIiYjeDIyODM7JiN4MjBEMjsiPgorPCFF
TlRJVFkgTm90U3VwZXJzZXQgIiYjeDIyODM7JiN4MjBEMjsiPgorPCFFTlRJVFkgbnN1YiAiJiN4
MjI4NDsiPgorPCFFTlRJVFkgbnN1cCAiJiN4MjI4NTsiPgorPCFFTlRJVFkgc3ViZSAiJiN4MjI4
NjsiPgorPCFFTlRJVFkgU3Vic2V0RXF1YWwgIiYjeDIyODY7Ij4KKzwhRU5USVRZIHN1YnNldGVx
ICImI3gyMjg2OyI+Cis8IUVOVElUWSBzdXBlICImI3gyMjg3OyI+Cis8IUVOVElUWSBzdXBzZXRl
cSAiJiN4MjI4NzsiPgorPCFFTlRJVFkgU3VwZXJzZXRFcXVhbCAiJiN4MjI4NzsiPgorPCFFTlRJ
VFkgbnN1YmUgIiYjeDIyODg7Ij4KKzwhRU5USVRZIG5zdWJzZXRlcSAiJiN4MjI4ODsiPgorPCFF
TlRJVFkgTm90U3Vic2V0RXF1YWwgIiYjeDIyODg7Ij4KKzwhRU5USVRZIG5zdXBlICImI3gyMjg5
OyI+Cis8IUVOVElUWSBuc3Vwc2V0ZXEgIiYjeDIyODk7Ij4KKzwhRU5USVRZIE5vdFN1cGVyc2V0
RXF1YWwgIiYjeDIyODk7Ij4KKzwhRU5USVRZIHN1Ym5lICImI3gyMjhBOyI+Cis8IUVOVElUWSBz
dWJzZXRuZXEgIiYjeDIyOEE7Ij4KKzwhRU5USVRZIHZzdWJuZSAiJiN4MjI4QTsmI3hGRTAwOyI+
Cis8IUVOVElUWSB2YXJzdWJzZXRuZXEgIiYjeDIyOEE7JiN4RkUwMDsiPgorPCFFTlRJVFkgc3Vw
bmUgIiYjeDIyOEI7Ij4KKzwhRU5USVRZIHN1cHNldG5lcSAiJiN4MjI4QjsiPgorPCFFTlRJVFkg
dnN1cG5lICImI3gyMjhCOyYjeEZFMDA7Ij4KKzwhRU5USVRZIHZhcnN1cHNldG5lcSAiJiN4MjI4
QjsmI3hGRTAwOyI+Cis8IUVOVElUWSBjdXBkb3QgIiYjeDIyOEQ7Ij4KKzwhRU5USVRZIHVwbHVz
ICImI3gyMjhFOyI+Cis8IUVOVElUWSBVbmlvblBsdXMgIiYjeDIyOEU7Ij4KKzwhRU5USVRZIHNx
c3ViICImI3gyMjhGOyI+Cis8IUVOVElUWSBTcXVhcmVTdWJzZXQgIiYjeDIyOEY7Ij4KKzwhRU5U
SVRZIHNxc3Vic2V0ICImI3gyMjhGOyI+Cis8IUVOVElUWSBOb3RTcXVhcmVTdWJzZXQgIiYjeDIy
OEY7JiN4MzM4OyI+Cis8IUVOVElUWSBzcXN1cCAiJiN4MjI5MDsiPgorPCFFTlRJVFkgU3F1YXJl
U3VwZXJzZXQgIiYjeDIyOTA7Ij4KKzwhRU5USVRZIHNxc3Vwc2V0ICImI3gyMjkwOyI+Cis8IUVO
VElUWSBOb3RTcXVhcmVTdXBlcnNldCAiJiN4MjI5MDsmI3gzMzg7Ij4KKzwhRU5USVRZIHNxc3Vi
ZSAiJiN4MjI5MTsiPgorPCFFTlRJVFkgU3F1YXJlU3Vic2V0RXF1YWwgIiYjeDIyOTE7Ij4KKzwh
RU5USVRZIHNxc3Vic2V0ZXEgIiYjeDIyOTE7Ij4KKzwhRU5USVRZIHNxc3VwZSAiJiN4MjI5Mjsi
PgorPCFFTlRJVFkgU3F1YXJlU3VwZXJzZXRFcXVhbCAiJiN4MjI5MjsiPgorPCFFTlRJVFkgc3Fz
dXBzZXRlcSAiJiN4MjI5MjsiPgorPCFFTlRJVFkgc3FjYXAgIiYjeDIyOTM7Ij4KKzwhRU5USVRZ
IFNxdWFyZUludGVyc2VjdGlvbiAiJiN4MjI5MzsiPgorPCFFTlRJVFkgc3FjYXBzICImI3gyMjkz
OyYjeEZFMDA7Ij4KKzwhRU5USVRZIHNxY3VwICImI3gyMjk0OyI+Cis8IUVOVElUWSBTcXVhcmVV
bmlvbiAiJiN4MjI5NDsiPgorPCFFTlRJVFkgc3FjdXBzICImI3gyMjk0OyYjeEZFMDA7Ij4KKzwh
RU5USVRZIG9wbHVzICImI3gyMjk1OyI+Cis8IUVOVElUWSBDaXJjbGVQbHVzICImI3gyMjk1OyI+
Cis8IUVOVElUWSBvbWludXMgIiYjeDIyOTY7Ij4KKzwhRU5USVRZIENpcmNsZU1pbnVzICImI3gy
Mjk2OyI+Cis8IUVOVElUWSBvdGltZXMgIiYjeDIyOTc7Ij4KKzwhRU5USVRZIENpcmNsZVRpbWVz
ICImI3gyMjk3OyI+Cis8IUVOVElUWSBvc29sICImI3gyMjk4OyI+Cis8IUVOVElUWSBvZG90ICIm
I3gyMjk5OyI+Cis8IUVOVElUWSBDaXJjbGVEb3QgIiYjeDIyOTk7Ij4KKzwhRU5USVRZIG9jaXIg
IiYjeDIyOUE7Ij4KKzwhRU5USVRZIGNpcmNsZWRjaXJjICImI3gyMjlBOyI+Cis8IUVOVElUWSBv
YXN0ICImI3gyMjlCOyI+Cis8IUVOVElUWSBjaXJjbGVkYXN0ICImI3gyMjlCOyI+Cis8IUVOVElU
WSBvZGFzaCAiJiN4MjI5RDsiPgorPCFFTlRJVFkgY2lyY2xlZGRhc2ggIiYjeDIyOUQ7Ij4KKzwh
RU5USVRZIHBsdXNiICImI3gyMjlFOyI+Cis8IUVOVElUWSBib3hwbHVzICImI3gyMjlFOyI+Cis8
IUVOVElUWSBtaW51c2IgIiYjeDIyOUY7Ij4KKzwhRU5USVRZIGJveG1pbnVzICImI3gyMjlGOyI+
Cis8IUVOVElUWSB0aW1lc2IgIiYjeDIyQTA7Ij4KKzwhRU5USVRZIGJveHRpbWVzICImI3gyMkEw
OyI+Cis8IUVOVElUWSBzZG90YiAiJiN4MjJBMTsiPgorPCFFTlRJVFkgZG90c3F1YXJlICImI3gy
MkExOyI+Cis8IUVOVElUWSB2ZGFzaCAiJiN4MjJBMjsiPgorPCFFTlRJVFkgUmlnaHRUZWUgIiYj
eDIyQTI7Ij4KKzwhRU5USVRZIGRhc2h2ICImI3gyMkEzOyI+Cis8IUVOVElUWSBMZWZ0VGVlICIm
I3gyMkEzOyI+Cis8IUVOVElUWSB0b3AgIiYjeDIyQTQ7Ij4KKzwhRU5USVRZIERvd25UZWUgIiYj
eDIyQTQ7Ij4KKzwhRU5USVRZIGJvdHRvbSAiJiN4MjJBNTsiPgorPCFFTlRJVFkgYm90ICImI3gy
MkE1OyI+Cis8IUVOVElUWSBwZXJwICImI3gyMkE1OyI+Cis8IUVOVElUWSBVcFRlZSAiJiN4MjJB
NTsiPgorPCFFTlRJVFkgbW9kZWxzICImI3gyMkE3OyI+Cis8IUVOVElUWSB2RGFzaCAiJiN4MjJB
ODsiPgorPCFFTlRJVFkgRG91YmxlUmlnaHRUZWUgIiYjeDIyQTg7Ij4KKzwhRU5USVRZIFZkYXNo
ICImI3gyMkE5OyI+Cis8IUVOVElUWSBWdmRhc2ggIiYjeDIyQUE7Ij4KKzwhRU5USVRZIFZEYXNo
ICImI3gyMkFCOyI+Cis8IUVOVElUWSBudmRhc2ggIiYjeDIyQUM7Ij4KKzwhRU5USVRZIG52RGFz
aCAiJiN4MjJBRDsiPgorPCFFTlRJVFkgblZkYXNoICImI3gyMkFFOyI+Cis8IUVOVElUWSBuVkRh
c2ggIiYjeDIyQUY7Ij4KKzwhRU5USVRZIHBydXJlbCAiJiN4MjJCMDsiPgorPCFFTlRJVFkgdmx0
cmkgIiYjeDIyQjI7Ij4KKzwhRU5USVRZIHZhcnRyaWFuZ2xlbGVmdCAiJiN4MjJCMjsiPgorPCFF
TlRJVFkgTGVmdFRyaWFuZ2xlICImI3gyMkIyOyI+Cis8IUVOVElUWSB2cnRyaSAiJiN4MjJCMzsi
PgorPCFFTlRJVFkgdmFydHJpYW5nbGVyaWdodCAiJiN4MjJCMzsiPgorPCFFTlRJVFkgUmlnaHRU
cmlhbmdsZSAiJiN4MjJCMzsiPgorPCFFTlRJVFkgbHRyaWUgIiYjeDIyQjQ7Ij4KKzwhRU5USVRZ
IHRyaWFuZ2xlbGVmdGVxICImI3gyMkI0OyI+Cis8IUVOVElUWSBMZWZ0VHJpYW5nbGVFcXVhbCAi
JiN4MjJCNDsiPgorPCFFTlRJVFkgbnZsdHJpZSAiJiN4MjJCNDsmI3gyMEQyOyI+Cis8IUVOVElU
WSBydHJpZSAiJiN4MjJCNTsiPgorPCFFTlRJVFkgdHJpYW5nbGVyaWdodGVxICImI3gyMkI1OyI+
Cis8IUVOVElUWSBSaWdodFRyaWFuZ2xlRXF1YWwgIiYjeDIyQjU7Ij4KKzwhRU5USVRZIG52cnRy
aWUgIiYjeDIyQjU7JiN4MjBEMjsiPgorPCFFTlRJVFkgb3JpZ29mICImI3gyMkI2OyI+Cis8IUVO
VElUWSBpbW9mICImI3gyMkI3OyI+Cis8IUVOVElUWSBtdW1hcCAiJiN4MjJCODsiPgorPCFFTlRJ
VFkgbXVsdGltYXAgIiYjeDIyQjg7Ij4KKzwhRU5USVRZIGhlcmNvbiAiJiN4MjJCOTsiPgorPCFF
TlRJVFkgaW50Y2FsICImI3gyMkJBOyI+Cis8IUVOVElUWSBpbnRlcmNhbCAiJiN4MjJCQTsiPgor
PCFFTlRJVFkgdmVlYmFyICImI3gyMkJCOyI+Cis8IUVOVElUWSBiYXJ2ZWUgIiYjeDIyQkQ7Ij4K
KzwhRU5USVRZIGFuZ3J0dmIgIiYjeDIyQkU7Ij4KKzwhRU5USVRZIGxydHJpICImI3gyMkJGOyI+
Cis8IUVOVElUWSB4d2VkZ2UgIiYjeDIyQzA7Ij4KKzwhRU5USVRZIFdlZGdlICImI3gyMkMwOyI+
Cis8IUVOVElUWSBiaWd3ZWRnZSAiJiN4MjJDMDsiPgorPCFFTlRJVFkgeHZlZSAiJiN4MjJDMTsi
PgorPCFFTlRJVFkgVmVlICImI3gyMkMxOyI+Cis8IUVOVElUWSBiaWd2ZWUgIiYjeDIyQzE7Ij4K
KzwhRU5USVRZIHhjYXAgIiYjeDIyQzI7Ij4KKzwhRU5USVRZIEludGVyc2VjdGlvbiAiJiN4MjJD
MjsiPgorPCFFTlRJVFkgYmlnY2FwICImI3gyMkMyOyI+Cis8IUVOVElUWSB4Y3VwICImI3gyMkMz
OyI+Cis8IUVOVElUWSBVbmlvbiAiJiN4MjJDMzsiPgorPCFFTlRJVFkgYmlnY3VwICImI3gyMkMz
OyI+Cis8IUVOVElUWSBkaWFtICImI3gyMkM0OyI+Cis8IUVOVElUWSBkaWFtb25kICImI3gyMkM0
OyI+Cis8IUVOVElUWSBEaWFtb25kICImI3gyMkM0OyI+Cis8IUVOVElUWSBzZG90ICImI3gyMkM1
OyI+Cis8IUVOVElUWSBzc3RhcmYgIiYjeDIyQzY7Ij4KKzwhRU5USVRZIFN0YXIgIiYjeDIyQzY7
Ij4KKzwhRU5USVRZIGRpdm9ueCAiJiN4MjJDNzsiPgorPCFFTlRJVFkgZGl2aWRlb250aW1lcyAi
JiN4MjJDNzsiPgorPCFFTlRJVFkgYm93dGllICImI3gyMkM4OyI+Cis8IUVOVElUWSBsdGltZXMg
IiYjeDIyQzk7Ij4KKzwhRU5USVRZIHJ0aW1lcyAiJiN4MjJDQTsiPgorPCFFTlRJVFkgbHRocmVl
ICImI3gyMkNCOyI+Cis8IUVOVElUWSBsZWZ0dGhyZWV0aW1lcyAiJiN4MjJDQjsiPgorPCFFTlRJ
VFkgcnRocmVlICImI3gyMkNDOyI+Cis8IUVOVElUWSByaWdodHRocmVldGltZXMgIiYjeDIyQ0M7
Ij4KKzwhRU5USVRZIGJzaW1lICImI3gyMkNEOyI+Cis8IUVOVElUWSBiYWNrc2ltZXEgIiYjeDIy
Q0Q7Ij4KKzwhRU5USVRZIGN1dmVlICImI3gyMkNFOyI+Cis8IUVOVElUWSBjdXJseXZlZSAiJiN4
MjJDRTsiPgorPCFFTlRJVFkgY3V3ZWQgIiYjeDIyQ0Y7Ij4KKzwhRU5USVRZIGN1cmx5d2VkZ2Ug
IiYjeDIyQ0Y7Ij4KKzwhRU5USVRZIFN1YiAiJiN4MjJEMDsiPgorPCFFTlRJVFkgU3Vic2V0ICIm
I3gyMkQwOyI+Cis8IUVOVElUWSBTdXAgIiYjeDIyRDE7Ij4KKzwhRU5USVRZIFN1cHNldCAiJiN4
MjJEMTsiPgorPCFFTlRJVFkgQ2FwICImI3gyMkQyOyI+Cis8IUVOVElUWSBDdXAgIiYjeDIyRDM7
Ij4KKzwhRU5USVRZIGZvcmsgIiYjeDIyRDQ7Ij4KKzwhRU5USVRZIHBpdGNoZm9yayAiJiN4MjJE
NDsiPgorPCFFTlRJVFkgZXBhciAiJiN4MjJENTsiPgorPCFFTlRJVFkgbHRkb3QgIiYjeDIyRDY7
Ij4KKzwhRU5USVRZIGxlc3Nkb3QgIiYjeDIyRDY7Ij4KKzwhRU5USVRZIGd0ZG90ICImI3gyMkQ3
OyI+Cis8IUVOVElUWSBndHJkb3QgIiYjeDIyRDc7Ij4KKzwhRU5USVRZIExsICImI3gyMkQ4OyI+
Cis8IUVOVElUWSBuTGwgIiYjeDIyRDg7JiN4MzM4OyI+Cis8IUVOVElUWSBHZyAiJiN4MjJEOTsi
PgorPCFFTlRJVFkgZ2dnICImI3gyMkQ5OyI+Cis8IUVOVElUWSBuR2cgIiYjeDIyRDk7JiN4MzM4
OyI+Cis8IUVOVElUWSBsZWcgIiYjeDIyREE7Ij4KKzwhRU5USVRZIExlc3NFcXVhbEdyZWF0ZXIg
IiYjeDIyREE7Ij4KKzwhRU5USVRZIGxlc3NlcWd0ciAiJiN4MjJEQTsiPgorPCFFTlRJVFkgbGVz
ZyAiJiN4MjJEQTsmI3hGRTAwOyI+Cis8IUVOVElUWSBnZWwgIiYjeDIyREI7Ij4KKzwhRU5USVRZ
IGd0cmVxbGVzcyAiJiN4MjJEQjsiPgorPCFFTlRJVFkgR3JlYXRlckVxdWFsTGVzcyAiJiN4MjJE
QjsiPgorPCFFTlRJVFkgZ2VzbCAiJiN4MjJEQjsmI3hGRTAwOyI+Cis8IUVOVElUWSBjdWVwciAi
JiN4MjJERTsiPgorPCFFTlRJVFkgY3VybHllcXByZWMgIiYjeDIyREU7Ij4KKzwhRU5USVRZIGN1
ZXNjICImI3gyMkRGOyI+Cis8IUVOVElUWSBjdXJseWVxc3VjYyAiJiN4MjJERjsiPgorPCFFTlRJ
VFkgbnByY3VlICImI3gyMkUwOyI+Cis8IUVOVElUWSBOb3RQcmVjZWRlc1NsYW50RXF1YWwgIiYj
eDIyRTA7Ij4KKzwhRU5USVRZIG5zY2N1ZSAiJiN4MjJFMTsiPgorPCFFTlRJVFkgTm90U3VjY2Vl
ZHNTbGFudEVxdWFsICImI3gyMkUxOyI+Cis8IUVOVElUWSBuc3FzdWJlICImI3gyMkUyOyI+Cis8
IUVOVElUWSBOb3RTcXVhcmVTdWJzZXRFcXVhbCAiJiN4MjJFMjsiPgorPCFFTlRJVFkgbnNxc3Vw
ZSAiJiN4MjJFMzsiPgorPCFFTlRJVFkgTm90U3F1YXJlU3VwZXJzZXRFcXVhbCAiJiN4MjJFMzsi
PgorPCFFTlRJVFkgbG5zaW0gIiYjeDIyRTY7Ij4KKzwhRU5USVRZIGduc2ltICImI3gyMkU3OyI+
Cis8IUVOVElUWSBwcm5zaW0gIiYjeDIyRTg7Ij4KKzwhRU5USVRZIHByZWNuc2ltICImI3gyMkU4
OyI+Cis8IUVOVElUWSBzY25zaW0gIiYjeDIyRTk7Ij4KKzwhRU5USVRZIHN1Y2Nuc2ltICImI3gy
MkU5OyI+Cis8IUVOVElUWSBubHRyaSAiJiN4MjJFQTsiPgorPCFFTlRJVFkgbnRyaWFuZ2xlbGVm
dCAiJiN4MjJFQTsiPgorPCFFTlRJVFkgTm90TGVmdFRyaWFuZ2xlICImI3gyMkVBOyI+Cis8IUVO
VElUWSBucnRyaSAiJiN4MjJFQjsiPgorPCFFTlRJVFkgbnRyaWFuZ2xlcmlnaHQgIiYjeDIyRUI7
Ij4KKzwhRU5USVRZIE5vdFJpZ2h0VHJpYW5nbGUgIiYjeDIyRUI7Ij4KKzwhRU5USVRZIG5sdHJp
ZSAiJiN4MjJFQzsiPgorPCFFTlRJVFkgbnRyaWFuZ2xlbGVmdGVxICImI3gyMkVDOyI+Cis8IUVO
VElUWSBOb3RMZWZ0VHJpYW5nbGVFcXVhbCAiJiN4MjJFQzsiPgorPCFFTlRJVFkgbnJ0cmllICIm
I3gyMkVEOyI+Cis8IUVOVElUWSBudHJpYW5nbGVyaWdodGVxICImI3gyMkVEOyI+Cis8IUVOVElU
WSBOb3RSaWdodFRyaWFuZ2xlRXF1YWwgIiYjeDIyRUQ7Ij4KKzwhRU5USVRZIHZlbGxpcCAiJiN4
MjJFRTsiPgorPCFFTlRJVFkgY3Rkb3QgIiYjeDIyRUY7Ij4KKzwhRU5USVRZIHV0ZG90ICImI3gy
MkYwOyI+Cis8IUVOVElUWSBkdGRvdCAiJiN4MjJGMTsiPgorPCFFTlRJVFkgZGlzaW4gIiYjeDIy
RjI7Ij4KKzwhRU5USVRZIGlzaW5zdiAiJiN4MjJGMzsiPgorPCFFTlRJVFkgaXNpbnMgIiYjeDIy
RjQ7Ij4KKzwhRU5USVRZIGlzaW5kb3QgIiYjeDIyRjU7Ij4KKzwhRU5USVRZIG5vdGluZG90ICIm
I3gyMkY1OyYjeDMzODsiPgorPCFFTlRJVFkgbm90aW52YyAiJiN4MjJGNjsiPgorPCFFTlRJVFkg
bm90aW52YiAiJiN4MjJGNzsiPgorPCFFTlRJVFkgaXNpbkUgIiYjeDIyRjk7Ij4KKzwhRU5USVRZ
IG5vdGluRSAiJiN4MjJGOTsmI3gzMzg7Ij4KKzwhRU5USVRZIG5pc2QgIiYjeDIyRkE7Ij4KKzwh
RU5USVRZIHhuaXMgIiYjeDIyRkI7Ij4KKzwhRU5USVRZIG5pcyAiJiN4MjJGQzsiPgorPCFFTlRJ
VFkgbm90bml2YyAiJiN4MjJGRDsiPgorPCFFTlRJVFkgbm90bml2YiAiJiN4MjJGRTsiPgorPCFF
TlRJVFkgYmFyd2VkICImI3gyMzA1OyI+Cis8IUVOVElUWSBiYXJ3ZWRnZSAiJiN4MjMwNTsiPgor
PCFFTlRJVFkgQmFyd2VkICImI3gyMzA2OyI+Cis8IUVOVElUWSBkb3VibGViYXJ3ZWRnZSAiJiN4
MjMwNjsiPgorPCFFTlRJVFkgbGNlaWwgIiYjeDIzMDg7Ij4KKzwhRU5USVRZIExlZnRDZWlsaW5n
ICImI3gyMzA4OyI+Cis8IUVOVElUWSByY2VpbCAiJiN4MjMwOTsiPgorPCFFTlRJVFkgUmlnaHRD
ZWlsaW5nICImI3gyMzA5OyI+Cis8IUVOVElUWSBsZmxvb3IgIiYjeDIzMEE7Ij4KKzwhRU5USVRZ
IExlZnRGbG9vciAiJiN4MjMwQTsiPgorPCFFTlRJVFkgcmZsb29yICImI3gyMzBCOyI+Cis8IUVO
VElUWSBSaWdodEZsb29yICImI3gyMzBCOyI+Cis8IUVOVElUWSBkcmNyb3AgIiYjeDIzMEM7Ij4K
KzwhRU5USVRZIGRsY3JvcCAiJiN4MjMwRDsiPgorPCFFTlRJVFkgdXJjcm9wICImI3gyMzBFOyI+
Cis8IUVOVElUWSB1bGNyb3AgIiYjeDIzMEY7Ij4KKzwhRU5USVRZIGJub3QgIiYjeDIzMTA7Ij4K
KzwhRU5USVRZIHByb2ZsaW5lICImI3gyMzEyOyI+Cis8IUVOVElUWSBwcm9mc3VyZiAiJiN4MjMx
MzsiPgorPCFFTlRJVFkgdGVscmVjICImI3gyMzE1OyI+Cis8IUVOVElUWSB0YXJnZXQgIiYjeDIz
MTY7Ij4KKzwhRU5USVRZIHVsY29ybiAiJiN4MjMxQzsiPgorPCFFTlRJVFkgdWxjb3JuZXIgIiYj
eDIzMUM7Ij4KKzwhRU5USVRZIHVyY29ybiAiJiN4MjMxRDsiPgorPCFFTlRJVFkgdXJjb3JuZXIg
IiYjeDIzMUQ7Ij4KKzwhRU5USVRZIGRsY29ybiAiJiN4MjMxRTsiPgorPCFFTlRJVFkgbGxjb3Ju
ZXIgIiYjeDIzMUU7Ij4KKzwhRU5USVRZIGRyY29ybiAiJiN4MjMxRjsiPgorPCFFTlRJVFkgbHJj
b3JuZXIgIiYjeDIzMUY7Ij4KKzwhRU5USVRZIGZyb3duICImI3gyMzIyOyI+Cis8IUVOVElUWSBz
ZnJvd24gIiYjeDIzMjI7Ij4KKzwhRU5USVRZIHNtaWxlICImI3gyMzIzOyI+Cis8IUVOVElUWSBz
c21pbGUgIiYjeDIzMjM7Ij4KKzwhRU5USVRZIGN5bGN0eSAiJiN4MjMyRDsiPgorPCFFTlRJVFkg
cHJvZmFsYXIgIiYjeDIzMkU7Ij4KKzwhRU5USVRZIHRvcGJvdCAiJiN4MjMzNjsiPgorPCFFTlRJ
VFkgb3ZiYXIgIiYjeDIzM0Q7Ij4KKzwhRU5USVRZIHNvbGJhciAiJiN4MjMzRjsiPgorPCFFTlRJ
VFkgYW5nemFyciAiJiN4MjM3QzsiPgorPCFFTlRJVFkgbG1vdXN0ICImI3gyM0IwOyI+Cis8IUVO
VElUWSBsbW91c3RhY2hlICImI3gyM0IwOyI+Cis8IUVOVElUWSBybW91c3QgIiYjeDIzQjE7Ij4K
KzwhRU5USVRZIHJtb3VzdGFjaGUgIiYjeDIzQjE7Ij4KKzwhRU5USVRZIHRicmsgIiYjeDIzQjQ7
Ij4KKzwhRU5USVRZIE92ZXJCcmFja2V0ICImI3gyM0I0OyI+Cis8IUVOVElUWSBiYnJrICImI3gy
M0I1OyI+Cis8IUVOVElUWSBVbmRlckJyYWNrZXQgIiYjeDIzQjU7Ij4KKzwhRU5USVRZIGJicmt0
YnJrICImI3gyM0I2OyI+Cis8IUVOVElUWSBPdmVyUGFyZW50aGVzaXMgIiYjeDIzREM7Ij4KKzwh
RU5USVRZIFVuZGVyUGFyZW50aGVzaXMgIiYjeDIzREQ7Ij4KKzwhRU5USVRZIE92ZXJCcmFjZSAi
JiN4MjNERTsiPgorPCFFTlRJVFkgVW5kZXJCcmFjZSAiJiN4MjNERjsiPgorPCFFTlRJVFkgdHJw
ZXppdW0gIiYjeDIzRTI7Ij4KKzwhRU5USVRZIGVsaW50ZXJzICImI3gyM0U3OyI+Cis8IUVOVElU
WSBibGFuayAiJiN4MjQyMzsiPgorPCFFTlRJVFkgb1MgIiYjeDI0Qzg7Ij4KKzwhRU5USVRZIGNp
cmNsZWRTICImI3gyNEM4OyI+Cis8IUVOVElUWSBib3hoICImI3gyNTAwOyI+Cis8IUVOVElUWSBI
b3Jpem9udGFsTGluZSAiJiN4MjUwMDsiPgorPCFFTlRJVFkgYm94diAiJiN4MjUwMjsiPgorPCFF
TlRJVFkgYm94ZHIgIiYjeDI1MEM7Ij4KKzwhRU5USVRZIGJveGRsICImI3gyNTEwOyI+Cis8IUVO
VElUWSBib3h1ciAiJiN4MjUxNDsiPgorPCFFTlRJVFkgYm94dWwgIiYjeDI1MTg7Ij4KKzwhRU5U
SVRZIGJveHZyICImI3gyNTFDOyI+Cis8IUVOVElUWSBib3h2bCAiJiN4MjUyNDsiPgorPCFFTlRJ
VFkgYm94aGQgIiYjeDI1MkM7Ij4KKzwhRU5USVRZIGJveGh1ICImI3gyNTM0OyI+Cis8IUVOVElU
WSBib3h2aCAiJiN4MjUzQzsiPgorPCFFTlRJVFkgYm94SCAiJiN4MjU1MDsiPgorPCFFTlRJVFkg
Ym94ViAiJiN4MjU1MTsiPgorPCFFTlRJVFkgYm94ZFIgIiYjeDI1NTI7Ij4KKzwhRU5USVRZIGJv
eERyICImI3gyNTUzOyI+Cis8IUVOVElUWSBib3hEUiAiJiN4MjU1NDsiPgorPCFFTlRJVFkgYm94
ZEwgIiYjeDI1NTU7Ij4KKzwhRU5USVRZIGJveERsICImI3gyNTU2OyI+Cis8IUVOVElUWSBib3hE
TCAiJiN4MjU1NzsiPgorPCFFTlRJVFkgYm94dVIgIiYjeDI1NTg7Ij4KKzwhRU5USVRZIGJveFVy
ICImI3gyNTU5OyI+Cis8IUVOVElUWSBib3hVUiAiJiN4MjU1QTsiPgorPCFFTlRJVFkgYm94dUwg
IiYjeDI1NUI7Ij4KKzwhRU5USVRZIGJveFVsICImI3gyNTVDOyI+Cis8IUVOVElUWSBib3hVTCAi
JiN4MjU1RDsiPgorPCFFTlRJVFkgYm94dlIgIiYjeDI1NUU7Ij4KKzwhRU5USVRZIGJveFZyICIm
I3gyNTVGOyI+Cis8IUVOVElUWSBib3hWUiAiJiN4MjU2MDsiPgorPCFFTlRJVFkgYm94dkwgIiYj
eDI1NjE7Ij4KKzwhRU5USVRZIGJveFZsICImI3gyNTYyOyI+Cis8IUVOVElUWSBib3hWTCAiJiN4
MjU2MzsiPgorPCFFTlRJVFkgYm94SGQgIiYjeDI1NjQ7Ij4KKzwhRU5USVRZIGJveGhEICImI3gy
NTY1OyI+Cis8IUVOVElUWSBib3hIRCAiJiN4MjU2NjsiPgorPCFFTlRJVFkgYm94SHUgIiYjeDI1
Njc7Ij4KKzwhRU5USVRZIGJveGhVICImI3gyNTY4OyI+Cis8IUVOVElUWSBib3hIVSAiJiN4MjU2
OTsiPgorPCFFTlRJVFkgYm94dkggIiYjeDI1NkE7Ij4KKzwhRU5USVRZIGJveFZoICImI3gyNTZC
OyI+Cis8IUVOVElUWSBib3hWSCAiJiN4MjU2QzsiPgorPCFFTlRJVFkgdWhibGsgIiYjeDI1ODA7
Ij4KKzwhRU5USVRZIGxoYmxrICImI3gyNTg0OyI+Cis8IUVOVElUWSBibG9jayAiJiN4MjU4ODsi
PgorPCFFTlRJVFkgYmxrMTQgIiYjeDI1OTE7Ij4KKzwhRU5USVRZIGJsazEyICImI3gyNTkyOyI+
Cis8IUVOVElUWSBibGszNCAiJiN4MjU5MzsiPgorPCFFTlRJVFkgc3F1ICImI3gyNUExOyI+Cis8
IUVOVElUWSBzcXVhcmUgIiYjeDI1QTE7Ij4KKzwhRU5USVRZIFNxdWFyZSAiJiN4MjVBMTsiPgor
PCFFTlRJVFkgc3F1ZiAiJiN4MjVBQTsiPgorPCFFTlRJVFkgc3F1YXJmICImI3gyNUFBOyI+Cis8
IUVOVElUWSBibGFja3NxdWFyZSAiJiN4MjVBQTsiPgorPCFFTlRJVFkgRmlsbGVkVmVyeVNtYWxs
U3F1YXJlICImI3gyNUFBOyI+Cis8IUVOVElUWSBFbXB0eVZlcnlTbWFsbFNxdWFyZSAiJiN4MjVB
QjsiPgorPCFFTlRJVFkgcmVjdCAiJiN4MjVBRDsiPgorPCFFTlRJVFkgbWFya2VyICImI3gyNUFF
OyI+Cis8IUVOVElUWSBmbHRucyAiJiN4MjVCMTsiPgorPCFFTlRJVFkgeHV0cmkgIiYjeDI1QjM7
Ij4KKzwhRU5USVRZIGJpZ3RyaWFuZ2xldXAgIiYjeDI1QjM7Ij4KKzwhRU5USVRZIHV0cmlmICIm
I3gyNUI0OyI+Cis8IUVOVElUWSBibGFja3RyaWFuZ2xlICImI3gyNUI0OyI+Cis8IUVOVElUWSB1
dHJpICImI3gyNUI1OyI+Cis8IUVOVElUWSB0cmlhbmdsZSAiJiN4MjVCNTsiPgorPCFFTlRJVFkg
cnRyaWYgIiYjeDI1Qjg7Ij4KKzwhRU5USVRZIGJsYWNrdHJpYW5nbGVyaWdodCAiJiN4MjVCODsi
PgorPCFFTlRJVFkgcnRyaSAiJiN4MjVCOTsiPgorPCFFTlRJVFkgdHJpYW5nbGVyaWdodCAiJiN4
MjVCOTsiPgorPCFFTlRJVFkgeGR0cmkgIiYjeDI1QkQ7Ij4KKzwhRU5USVRZIGJpZ3RyaWFuZ2xl
ZG93biAiJiN4MjVCRDsiPgorPCFFTlRJVFkgZHRyaWYgIiYjeDI1QkU7Ij4KKzwhRU5USVRZIGJs
YWNrdHJpYW5nbGVkb3duICImI3gyNUJFOyI+Cis8IUVOVElUWSBkdHJpICImI3gyNUJGOyI+Cis8
IUVOVElUWSB0cmlhbmdsZWRvd24gIiYjeDI1QkY7Ij4KKzwhRU5USVRZIGx0cmlmICImI3gyNUMy
OyI+Cis8IUVOVElUWSBibGFja3RyaWFuZ2xlbGVmdCAiJiN4MjVDMjsiPgorPCFFTlRJVFkgbHRy
aSAiJiN4MjVDMzsiPgorPCFFTlRJVFkgdHJpYW5nbGVsZWZ0ICImI3gyNUMzOyI+Cis8IUVOVElU
WSBsb3ogIiYjeDI1Q0E7Ij4KKzwhRU5USVRZIGxvemVuZ2UgIiYjeDI1Q0E7Ij4KKzwhRU5USVRZ
IGNpciAiJiN4MjVDQjsiPgorPCFFTlRJVFkgdHJpZG90ICImI3gyNUVDOyI+Cis8IUVOVElUWSB4
Y2lyYyAiJiN4MjVFRjsiPgorPCFFTlRJVFkgYmlnY2lyYyAiJiN4MjVFRjsiPgorPCFFTlRJVFkg
dWx0cmkgIiYjeDI1Rjg7Ij4KKzwhRU5USVRZIHVydHJpICImI3gyNUY5OyI+Cis8IUVOVElUWSBs
bHRyaSAiJiN4MjVGQTsiPgorPCFFTlRJVFkgRW1wdHlTbWFsbFNxdWFyZSAiJiN4MjVGQjsiPgor
PCFFTlRJVFkgRmlsbGVkU21hbGxTcXVhcmUgIiYjeDI1RkM7Ij4KKzwhRU5USVRZIHN0YXJmICIm
I3gyNjA1OyI+Cis8IUVOVElUWSBiaWdzdGFyICImI3gyNjA1OyI+Cis8IUVOVElUWSBzdGFyICIm
I3gyNjA2OyI+Cis8IUVOVElUWSBwaG9uZSAiJiN4MjYwRTsiPgorPCFFTlRJVFkgZmVtYWxlICIm
I3gyNjQwOyI+Cis8IUVOVElUWSBtYWxlICImI3gyNjQyOyI+Cis8IUVOVElUWSBzcGFkZXMgIiYj
eDI2NjA7Ij4KKzwhRU5USVRZIHNwYWRlc3VpdCAiJiN4MjY2MDsiPgorPCFFTlRJVFkgY2x1YnMg
IiYjeDI2NjM7Ij4KKzwhRU5USVRZIGNsdWJzdWl0ICImI3gyNjYzOyI+Cis8IUVOVElUWSBoZWFy
dHMgIiYjeDI2NjU7Ij4KKzwhRU5USVRZIGhlYXJ0c3VpdCAiJiN4MjY2NTsiPgorPCFFTlRJVFkg
ZGlhbXMgIiYjeDI2NjY7Ij4KKzwhRU5USVRZIGRpYW1vbmRzdWl0ICImI3gyNjY2OyI+Cis8IUVO
VElUWSBzdW5nICImI3gyNjZBOyI+Cis8IUVOVElUWSBmbGF0ICImI3gyNjZEOyI+Cis8IUVOVElU
WSBuYXR1ciAiJiN4MjY2RTsiPgorPCFFTlRJVFkgbmF0dXJhbCAiJiN4MjY2RTsiPgorPCFFTlRJ
VFkgc2hhcnAgIiYjeDI2NkY7Ij4KKzwhRU5USVRZIGNoZWNrICImI3gyNzEzOyI+Cis8IUVOVElU
WSBjaGVja21hcmsgIiYjeDI3MTM7Ij4KKzwhRU5USVRZIGNyb3NzICImI3gyNzE3OyI+Cis8IUVO
VElUWSBtYWx0ICImI3gyNzIwOyI+Cis8IUVOVElUWSBtYWx0ZXNlICImI3gyNzIwOyI+Cis8IUVO
VElUWSBzZXh0ICImI3gyNzM2OyI+Cis8IUVOVElUWSBWZXJ0aWNhbFNlcGFyYXRvciAiJiN4Mjc1
ODsiPgorPCFFTlRJVFkgbGJicmsgIiYjeDI3NzI7Ij4KKzwhRU5USVRZIHJiYnJrICImI3gyNzcz
OyI+Cis8IUVOVElUWSBic29saHN1YiAiJiN4MjdDODsiPgorPCFFTlRJVFkgc3VwaHNvbCAiJiN4
MjdDOTsiPgorPCFFTlRJVFkgbG9icmsgIiYjeDI3RTY7Ij4KKzwhRU5USVRZIExlZnREb3VibGVC
cmFja2V0ICImI3gyN0U2OyI+Cis8IUVOVElUWSByb2JyayAiJiN4MjdFNzsiPgorPCFFTlRJVFkg
UmlnaHREb3VibGVCcmFja2V0ICImI3gyN0U3OyI+Cis8IUVOVElUWSBsYW5nICImI3gyN0U4OyI+
Cis8IUVOVElUWSBMZWZ0QW5nbGVCcmFja2V0ICImI3gyN0U4OyI+Cis8IUVOVElUWSBsYW5nbGUg
IiYjeDI3RTg7Ij4KKzwhRU5USVRZIHJhbmcgIiYjeDI3RTk7Ij4KKzwhRU5USVRZIFJpZ2h0QW5n
bGVCcmFja2V0ICImI3gyN0U5OyI+Cis8IUVOVElUWSByYW5nbGUgIiYjeDI3RTk7Ij4KKzwhRU5U
SVRZIExhbmcgIiYjeDI3RUE7Ij4KKzwhRU5USVRZIFJhbmcgIiYjeDI3RUI7Ij4KKzwhRU5USVRZ
IGxvYW5nICImI3gyN0VDOyI+Cis8IUVOVElUWSByb2FuZyAiJiN4MjdFRDsiPgorPCFFTlRJVFkg
eGxhcnIgIiYjeDI3RjU7Ij4KKzwhRU5USVRZIGxvbmdsZWZ0YXJyb3cgIiYjeDI3RjU7Ij4KKzwh
RU5USVRZIExvbmdMZWZ0QXJyb3cgIiYjeDI3RjU7Ij4KKzwhRU5USVRZIHhyYXJyICImI3gyN0Y2
OyI+Cis8IUVOVElUWSBsb25ncmlnaHRhcnJvdyAiJiN4MjdGNjsiPgorPCFFTlRJVFkgTG9uZ1Jp
Z2h0QXJyb3cgIiYjeDI3RjY7Ij4KKzwhRU5USVRZIHhoYXJyICImI3gyN0Y3OyI+Cis8IUVOVElU
WSBsb25nbGVmdHJpZ2h0YXJyb3cgIiYjeDI3Rjc7Ij4KKzwhRU5USVRZIExvbmdMZWZ0UmlnaHRB
cnJvdyAiJiN4MjdGNzsiPgorPCFFTlRJVFkgeGxBcnIgIiYjeDI3Rjg7Ij4KKzwhRU5USVRZIExv
bmdsZWZ0YXJyb3cgIiYjeDI3Rjg7Ij4KKzwhRU5USVRZIERvdWJsZUxvbmdMZWZ0QXJyb3cgIiYj
eDI3Rjg7Ij4KKzwhRU5USVRZIHhyQXJyICImI3gyN0Y5OyI+Cis8IUVOVElUWSBMb25ncmlnaHRh
cnJvdyAiJiN4MjdGOTsiPgorPCFFTlRJVFkgRG91YmxlTG9uZ1JpZ2h0QXJyb3cgIiYjeDI3Rjk7
Ij4KKzwhRU5USVRZIHhoQXJyICImI3gyN0ZBOyI+Cis8IUVOVElUWSBMb25nbGVmdHJpZ2h0YXJy
b3cgIiYjeDI3RkE7Ij4KKzwhRU5USVRZIERvdWJsZUxvbmdMZWZ0UmlnaHRBcnJvdyAiJiN4MjdG
QTsiPgorPCFFTlRJVFkgeG1hcCAiJiN4MjdGQzsiPgorPCFFTlRJVFkgbG9uZ21hcHN0byAiJiN4
MjdGQzsiPgorPCFFTlRJVFkgZHppZ3JhcnIgIiYjeDI3RkY7Ij4KKzwhRU5USVRZIG52bEFyciAi
JiN4MjkwMjsiPgorPCFFTlRJVFkgbnZyQXJyICImI3gyOTAzOyI+Cis8IUVOVElUWSBudkhhcnIg
IiYjeDI5MDQ7Ij4KKzwhRU5USVRZIE1hcCAiJiN4MjkwNTsiPgorPCFFTlRJVFkgbGJhcnIgIiYj
eDI5MEM7Ij4KKzwhRU5USVRZIHJiYXJyICImI3gyOTBEOyI+Cis8IUVOVElUWSBia2Fyb3cgIiYj
eDI5MEQ7Ij4KKzwhRU5USVRZIGxCYXJyICImI3gyOTBFOyI+Cis8IUVOVElUWSByQmFyciAiJiN4
MjkwRjsiPgorPCFFTlRJVFkgZGJrYXJvdyAiJiN4MjkwRjsiPgorPCFFTlRJVFkgUkJhcnIgIiYj
eDI5MTA7Ij4KKzwhRU5USVRZIGRyYmthcm93ICImI3gyOTEwOyI+Cis8IUVOVElUWSBERG90cmFo
ZCAiJiN4MjkxMTsiPgorPCFFTlRJVFkgVXBBcnJvd0JhciAiJiN4MjkxMjsiPgorPCFFTlRJVFkg
RG93bkFycm93QmFyICImI3gyOTEzOyI+Cis8IUVOVElUWSBSYXJydGwgIiYjeDI5MTY7Ij4KKzwh
RU5USVRZIGxhdGFpbCAiJiN4MjkxOTsiPgorPCFFTlRJVFkgcmF0YWlsICImI3gyOTFBOyI+Cis8
IUVOVElUWSBsQXRhaWwgIiYjeDI5MUI7Ij4KKzwhRU5USVRZIHJBdGFpbCAiJiN4MjkxQzsiPgor
PCFFTlRJVFkgbGFycmZzICImI3gyOTFEOyI+Cis8IUVOVElUWSByYXJyZnMgIiYjeDI5MUU7Ij4K
KzwhRU5USVRZIGxhcnJiZnMgIiYjeDI5MUY7Ij4KKzwhRU5USVRZIHJhcnJiZnMgIiYjeDI5MjA7
Ij4KKzwhRU5USVRZIG53YXJoayAiJiN4MjkyMzsiPgorPCFFTlRJVFkgbmVhcmhrICImI3gyOTI0
OyI+Cis8IUVOVElUWSBzZWFyaGsgIiYjeDI5MjU7Ij4KKzwhRU5USVRZIGhrc2Vhcm93ICImI3gy
OTI1OyI+Cis8IUVOVElUWSBzd2FyaGsgIiYjeDI5MjY7Ij4KKzwhRU5USVRZIGhrc3dhcm93ICIm
I3gyOTI2OyI+Cis8IUVOVElUWSBud25lYXIgIiYjeDI5Mjc7Ij4KKzwhRU5USVRZIG5lc2VhciAi
JiN4MjkyODsiPgorPCFFTlRJVFkgdG9lYSAiJiN4MjkyODsiPgorPCFFTlRJVFkgc2Vzd2FyICIm
I3gyOTI5OyI+Cis8IUVOVElUWSB0b3NhICImI3gyOTI5OyI+Cis8IUVOVElUWSBzd253YXIgIiYj
eDI5MkE7Ij4KKzwhRU5USVRZIHJhcnJjICImI3gyOTMzOyI+Cis8IUVOVElUWSBucmFycmMgIiYj
eDI5MzM7JiN4MzM4OyI+Cis8IUVOVElUWSBjdWRhcnJyICImI3gyOTM1OyI+Cis8IUVOVElUWSBs
ZGNhICImI3gyOTM2OyI+Cis8IUVOVElUWSByZGNhICImI3gyOTM3OyI+Cis8IUVOVElUWSBjdWRh
cnJsICImI3gyOTM4OyI+Cis8IUVOVElUWSBsYXJycGwgIiYjeDI5Mzk7Ij4KKzwhRU5USVRZIGN1
cmFycm0gIiYjeDI5M0M7Ij4KKzwhRU5USVRZIGN1bGFycnAgIiYjeDI5M0Q7Ij4KKzwhRU5USVRZ
IHJhcnJwbCAiJiN4Mjk0NTsiPgorPCFFTlRJVFkgaGFycmNpciAiJiN4Mjk0ODsiPgorPCFFTlRJ
VFkgVWFycm9jaXIgIiYjeDI5NDk7Ij4KKzwhRU5USVRZIGx1cmRzaGFyICImI3gyOTRBOyI+Cis8
IUVOVElUWSBsZHJ1c2hhciAiJiN4Mjk0QjsiPgorPCFFTlRJVFkgTGVmdFJpZ2h0VmVjdG9yICIm
I3gyOTRFOyI+Cis8IUVOVElUWSBSaWdodFVwRG93blZlY3RvciAiJiN4Mjk0RjsiPgorPCFFTlRJ
VFkgRG93bkxlZnRSaWdodFZlY3RvciAiJiN4Mjk1MDsiPgorPCFFTlRJVFkgTGVmdFVwRG93blZl
Y3RvciAiJiN4Mjk1MTsiPgorPCFFTlRJVFkgTGVmdFZlY3RvckJhciAiJiN4Mjk1MjsiPgorPCFF
TlRJVFkgUmlnaHRWZWN0b3JCYXIgIiYjeDI5NTM7Ij4KKzwhRU5USVRZIFJpZ2h0VXBWZWN0b3JC
YXIgIiYjeDI5NTQ7Ij4KKzwhRU5USVRZIFJpZ2h0RG93blZlY3RvckJhciAiJiN4Mjk1NTsiPgor
PCFFTlRJVFkgRG93bkxlZnRWZWN0b3JCYXIgIiYjeDI5NTY7Ij4KKzwhRU5USVRZIERvd25SaWdo
dFZlY3RvckJhciAiJiN4Mjk1NzsiPgorPCFFTlRJVFkgTGVmdFVwVmVjdG9yQmFyICImI3gyOTU4
OyI+Cis8IUVOVElUWSBMZWZ0RG93blZlY3RvckJhciAiJiN4Mjk1OTsiPgorPCFFTlRJVFkgTGVm
dFRlZVZlY3RvciAiJiN4Mjk1QTsiPgorPCFFTlRJVFkgUmlnaHRUZWVWZWN0b3IgIiYjeDI5NUI7
Ij4KKzwhRU5USVRZIFJpZ2h0VXBUZWVWZWN0b3IgIiYjeDI5NUM7Ij4KKzwhRU5USVRZIFJpZ2h0
RG93blRlZVZlY3RvciAiJiN4Mjk1RDsiPgorPCFFTlRJVFkgRG93bkxlZnRUZWVWZWN0b3IgIiYj
eDI5NUU7Ij4KKzwhRU5USVRZIERvd25SaWdodFRlZVZlY3RvciAiJiN4Mjk1RjsiPgorPCFFTlRJ
VFkgTGVmdFVwVGVlVmVjdG9yICImI3gyOTYwOyI+Cis8IUVOVElUWSBMZWZ0RG93blRlZVZlY3Rv
ciAiJiN4Mjk2MTsiPgorPCFFTlRJVFkgbEhhciAiJiN4Mjk2MjsiPgorPCFFTlRJVFkgdUhhciAi
JiN4Mjk2MzsiPgorPCFFTlRJVFkgckhhciAiJiN4Mjk2NDsiPgorPCFFTlRJVFkgZEhhciAiJiN4
Mjk2NTsiPgorPCFFTlRJVFkgbHVydWhhciAiJiN4Mjk2NjsiPgorPCFFTlRJVFkgbGRyZGhhciAi
JiN4Mjk2NzsiPgorPCFFTlRJVFkgcnVsdWhhciAiJiN4Mjk2ODsiPgorPCFFTlRJVFkgcmRsZGhh
ciAiJiN4Mjk2OTsiPgorPCFFTlRJVFkgbGhhcnVsICImI3gyOTZBOyI+Cis8IUVOVElUWSBsbGhh
cmQgIiYjeDI5NkI7Ij4KKzwhRU5USVRZIHJoYXJ1bCAiJiN4Mjk2QzsiPgorPCFFTlRJVFkgbHJo
YXJkICImI3gyOTZEOyI+Cis8IUVOVElUWSB1ZGhhciAiJiN4Mjk2RTsiPgorPCFFTlRJVFkgVXBF
cXVpbGlicml1bSAiJiN4Mjk2RTsiPgorPCFFTlRJVFkgZHVoYXIgIiYjeDI5NkY7Ij4KKzwhRU5U
SVRZIFJldmVyc2VVcEVxdWlsaWJyaXVtICImI3gyOTZGOyI+Cis8IUVOVElUWSBSb3VuZEltcGxp
ZXMgIiYjeDI5NzA7Ij4KKzwhRU5USVRZIGVyYXJyICImI3gyOTcxOyI+Cis8IUVOVElUWSBzaW1y
YXJyICImI3gyOTcyOyI+Cis8IUVOVElUWSBsYXJyc2ltICImI3gyOTczOyI+Cis8IUVOVElUWSBy
YXJyc2ltICImI3gyOTc0OyI+Cis8IUVOVElUWSByYXJyYXAgIiYjeDI5NzU7Ij4KKzwhRU5USVRZ
IGx0bGFyciAiJiN4Mjk3NjsiPgorPCFFTlRJVFkgZ3RyYXJyICImI3gyOTc4OyI+Cis8IUVOVElU
WSBzdWJyYXJyICImI3gyOTc5OyI+Cis8IUVOVElUWSBzdXBsYXJyICImI3gyOTdCOyI+Cis8IUVO
VElUWSBsZmlzaHQgIiYjeDI5N0M7Ij4KKzwhRU5USVRZIHJmaXNodCAiJiN4Mjk3RDsiPgorPCFF
TlRJVFkgdWZpc2h0ICImI3gyOTdFOyI+Cis8IUVOVElUWSBkZmlzaHQgIiYjeDI5N0Y7Ij4KKzwh
RU5USVRZIGxvcGFyICImI3gyOTg1OyI+Cis8IUVOVElUWSByb3BhciAiJiN4Mjk4NjsiPgorPCFF
TlRJVFkgbGJya2UgIiYjeDI5OEI7Ij4KKzwhRU5USVRZIHJicmtlICImI3gyOThDOyI+Cis8IUVO
VElUWSBsYnJrc2x1ICImI3gyOThEOyI+Cis8IUVOVElUWSByYnJrc2xkICImI3gyOThFOyI+Cis8
IUVOVElUWSBsYnJrc2xkICImI3gyOThGOyI+Cis8IUVOVElUWSByYnJrc2x1ICImI3gyOTkwOyI+
Cis8IUVOVElUWSBsYW5nZCAiJiN4Mjk5MTsiPgorPCFFTlRJVFkgcmFuZ2QgIiYjeDI5OTI7Ij4K
KzwhRU5USVRZIGxwYXJsdCAiJiN4Mjk5MzsiPgorPCFFTlRJVFkgcnBhcmd0ICImI3gyOTk0OyI+
Cis8IUVOVElUWSBndGxQYXIgIiYjeDI5OTU7Ij4KKzwhRU5USVRZIGx0clBhciAiJiN4Mjk5Njsi
PgorPCFFTlRJVFkgdnppZ3phZyAiJiN4Mjk5QTsiPgorPCFFTlRJVFkgdmFuZ3J0ICImI3gyOTlD
OyI+Cis8IUVOVElUWSBhbmdydHZiZCAiJiN4Mjk5RDsiPgorPCFFTlRJVFkgYW5nZSAiJiN4MjlB
NDsiPgorPCFFTlRJVFkgcmFuZ2UgIiYjeDI5QTU7Ij4KKzwhRU5USVRZIGR3YW5nbGUgIiYjeDI5
QTY7Ij4KKzwhRU5USVRZIHV3YW5nbGUgIiYjeDI5QTc7Ij4KKzwhRU5USVRZIGFuZ21zZGFhICIm
I3gyOUE4OyI+Cis8IUVOVElUWSBhbmdtc2RhYiAiJiN4MjlBOTsiPgorPCFFTlRJVFkgYW5nbXNk
YWMgIiYjeDI5QUE7Ij4KKzwhRU5USVRZIGFuZ21zZGFkICImI3gyOUFCOyI+Cis8IUVOVElUWSBh
bmdtc2RhZSAiJiN4MjlBQzsiPgorPCFFTlRJVFkgYW5nbXNkYWYgIiYjeDI5QUQ7Ij4KKzwhRU5U
SVRZIGFuZ21zZGFnICImI3gyOUFFOyI+Cis8IUVOVElUWSBhbmdtc2RhaCAiJiN4MjlBRjsiPgor
PCFFTlRJVFkgYmVtcHR5diAiJiN4MjlCMDsiPgorPCFFTlRJVFkgZGVtcHR5diAiJiN4MjlCMTsi
PgorPCFFTlRJVFkgY2VtcHR5diAiJiN4MjlCMjsiPgorPCFFTlRJVFkgcmFlbXB0eXYgIiYjeDI5
QjM7Ij4KKzwhRU5USVRZIGxhZW1wdHl2ICImI3gyOUI0OyI+Cis8IUVOVElUWSBvaGJhciAiJiN4
MjlCNTsiPgorPCFFTlRJVFkgb21pZCAiJiN4MjlCNjsiPgorPCFFTlRJVFkgb3BhciAiJiN4MjlC
NzsiPgorPCFFTlRJVFkgb3BlcnAgIiYjeDI5Qjk7Ij4KKzwhRU5USVRZIG9sY3Jvc3MgIiYjeDI5
QkI7Ij4KKzwhRU5USVRZIG9kc29sZCAiJiN4MjlCQzsiPgorPCFFTlRJVFkgb2xjaXIgIiYjeDI5
QkU7Ij4KKzwhRU5USVRZIG9mY2lyICImI3gyOUJGOyI+Cis8IUVOVElUWSBvbHQgIiYjeDI5QzA7
Ij4KKzwhRU5USVRZIG9ndCAiJiN4MjlDMTsiPgorPCFFTlRJVFkgY2lyc2NpciAiJiN4MjlDMjsi
PgorPCFFTlRJVFkgY2lyRSAiJiN4MjlDMzsiPgorPCFFTlRJVFkgc29sYiAiJiN4MjlDNDsiPgor
PCFFTlRJVFkgYnNvbGIgIiYjeDI5QzU7Ij4KKzwhRU5USVRZIGJveGJveCAiJiN4MjlDOTsiPgor
PCFFTlRJVFkgdHJpc2IgIiYjeDI5Q0Q7Ij4KKzwhRU5USVRZIHJ0cmlsdHJpICImI3gyOUNFOyI+
Cis8IUVOVElUWSBMZWZ0VHJpYW5nbGVCYXIgIiYjeDI5Q0Y7Ij4KKzwhRU5USVRZIE5vdExlZnRU
cmlhbmdsZUJhciAiJiN4MjlDRjsmI3gzMzg7Ij4KKzwhRU5USVRZIFJpZ2h0VHJpYW5nbGVCYXIg
IiYjeDI5RDA7Ij4KKzwhRU5USVRZIE5vdFJpZ2h0VHJpYW5nbGVCYXIgIiYjeDI5RDA7JiN4MzM4
OyI+Cis8IUVOVElUWSBpaW5maW4gIiYjeDI5REM7Ij4KKzwhRU5USVRZIGluZmludGllICImI3gy
OUREOyI+Cis8IUVOVElUWSBudmluZmluICImI3gyOURFOyI+Cis8IUVOVElUWSBlcGFyc2wgIiYj
eDI5RTM7Ij4KKzwhRU5USVRZIHNtZXBhcnNsICImI3gyOUU0OyI+Cis8IUVOVElUWSBlcXZwYXJz
bCAiJiN4MjlFNTsiPgorPCFFTlRJVFkgbG96ZiAiJiN4MjlFQjsiPgorPCFFTlRJVFkgYmxhY2ts
b3plbmdlICImI3gyOUVCOyI+Cis8IUVOVElUWSBSdWxlRGVsYXllZCAiJiN4MjlGNDsiPgorPCFF
TlRJVFkgZHNvbCAiJiN4MjlGNjsiPgorPCFFTlRJVFkgeG9kb3QgIiYjeDJBMDA7Ij4KKzwhRU5U
SVRZIGJpZ29kb3QgIiYjeDJBMDA7Ij4KKzwhRU5USVRZIHhvcGx1cyAiJiN4MkEwMTsiPgorPCFF
TlRJVFkgYmlnb3BsdXMgIiYjeDJBMDE7Ij4KKzwhRU5USVRZIHhvdGltZSAiJiN4MkEwMjsiPgor
PCFFTlRJVFkgYmlnb3RpbWVzICImI3gyQTAyOyI+Cis8IUVOVElUWSB4dXBsdXMgIiYjeDJBMDQ7
Ij4KKzwhRU5USVRZIGJpZ3VwbHVzICImI3gyQTA0OyI+Cis8IUVOVElUWSB4c3FjdXAgIiYjeDJB
MDY7Ij4KKzwhRU5USVRZIGJpZ3NxY3VwICImI3gyQTA2OyI+Cis8IUVOVElUWSBxaW50ICImI3gy
QTBDOyI+Cis8IUVOVElUWSBpaWlpbnQgIiYjeDJBMEM7Ij4KKzwhRU5USVRZIGZwYXJ0aW50ICIm
I3gyQTBEOyI+Cis8IUVOVElUWSBjaXJmbmludCAiJiN4MkExMDsiPgorPCFFTlRJVFkgYXdpbnQg
IiYjeDJBMTE7Ij4KKzwhRU5USVRZIHJwcG9saW50ICImI3gyQTEyOyI+Cis8IUVOVElUWSBzY3Bv
bGludCAiJiN4MkExMzsiPgorPCFFTlRJVFkgbnBvbGludCAiJiN4MkExNDsiPgorPCFFTlRJVFkg
cG9pbnRpbnQgIiYjeDJBMTU7Ij4KKzwhRU5USVRZIHF1YXRpbnQgIiYjeDJBMTY7Ij4KKzwhRU5U
SVRZIGludGxhcmhrICImI3gyQTE3OyI+Cis8IUVOVElUWSBwbHVzY2lyICImI3gyQTIyOyI+Cis8
IUVOVElUWSBwbHVzYWNpciAiJiN4MkEyMzsiPgorPCFFTlRJVFkgc2ltcGx1cyAiJiN4MkEyNDsi
PgorPCFFTlRJVFkgcGx1c2R1ICImI3gyQTI1OyI+Cis8IUVOVElUWSBwbHVzc2ltICImI3gyQTI2
OyI+Cis8IUVOVElUWSBwbHVzdHdvICImI3gyQTI3OyI+Cis8IUVOVElUWSBtY29tbWEgIiYjeDJB
Mjk7Ij4KKzwhRU5USVRZIG1pbnVzZHUgIiYjeDJBMkE7Ij4KKzwhRU5USVRZIGxvcGx1cyAiJiN4
MkEyRDsiPgorPCFFTlRJVFkgcm9wbHVzICImI3gyQTJFOyI+Cis8IUVOVElUWSBDcm9zcyAiJiN4
MkEyRjsiPgorPCFFTlRJVFkgdGltZXNkICImI3gyQTMwOyI+Cis8IUVOVElUWSB0aW1lc2JhciAi
JiN4MkEzMTsiPgorPCFFTlRJVFkgc21hc2hwICImI3gyQTMzOyI+Cis8IUVOVElUWSBsb3RpbWVz
ICImI3gyQTM0OyI+Cis8IUVOVElUWSByb3RpbWVzICImI3gyQTM1OyI+Cis8IUVOVElUWSBvdGlt
ZXNhcyAiJiN4MkEzNjsiPgorPCFFTlRJVFkgT3RpbWVzICImI3gyQTM3OyI+Cis8IUVOVElUWSBv
ZGl2ICImI3gyQTM4OyI+Cis8IUVOVElUWSB0cmlwbHVzICImI3gyQTM5OyI+Cis8IUVOVElUWSB0
cmltaW51cyAiJiN4MkEzQTsiPgorPCFFTlRJVFkgdHJpdGltZSAiJiN4MkEzQjsiPgorPCFFTlRJ
VFkgaXByb2QgIiYjeDJBM0M7Ij4KKzwhRU5USVRZIGludHByb2QgIiYjeDJBM0M7Ij4KKzwhRU5U
SVRZIGFtYWxnICImI3gyQTNGOyI+Cis8IUVOVElUWSBjYXBkb3QgIiYjeDJBNDA7Ij4KKzwhRU5U
SVRZIG5jdXAgIiYjeDJBNDI7Ij4KKzwhRU5USVRZIG5jYXAgIiYjeDJBNDM7Ij4KKzwhRU5USVRZ
IGNhcGFuZCAiJiN4MkE0NDsiPgorPCFFTlRJVFkgY3Vwb3IgIiYjeDJBNDU7Ij4KKzwhRU5USVRZ
IGN1cGNhcCAiJiN4MkE0NjsiPgorPCFFTlRJVFkgY2FwY3VwICImI3gyQTQ3OyI+Cis8IUVOVElU
WSBjdXBicmNhcCAiJiN4MkE0ODsiPgorPCFFTlRJVFkgY2FwYnJjdXAgIiYjeDJBNDk7Ij4KKzwh
RU5USVRZIGN1cGN1cCAiJiN4MkE0QTsiPgorPCFFTlRJVFkgY2FwY2FwICImI3gyQTRCOyI+Cis8
IUVOVElUWSBjY3VwcyAiJiN4MkE0QzsiPgorPCFFTlRJVFkgY2NhcHMgIiYjeDJBNEQ7Ij4KKzwh
RU5USVRZIGNjdXBzc20gIiYjeDJBNTA7Ij4KKzwhRU5USVRZIEFuZCAiJiN4MkE1MzsiPgorPCFF
TlRJVFkgT3IgIiYjeDJBNTQ7Ij4KKzwhRU5USVRZIGFuZGFuZCAiJiN4MkE1NTsiPgorPCFFTlRJ
VFkgb3JvciAiJiN4MkE1NjsiPgorPCFFTlRJVFkgb3JzbG9wZSAiJiN4MkE1NzsiPgorPCFFTlRJ
VFkgYW5kc2xvcGUgIiYjeDJBNTg7Ij4KKzwhRU5USVRZIGFuZHYgIiYjeDJBNUE7Ij4KKzwhRU5U
SVRZIG9ydiAiJiN4MkE1QjsiPgorPCFFTlRJVFkgYW5kZCAiJiN4MkE1QzsiPgorPCFFTlRJVFkg
b3JkICImI3gyQTVEOyI+Cis8IUVOVElUWSB3ZWRiYXIgIiYjeDJBNUY7Ij4KKzwhRU5USVRZIHNk
b3RlICImI3gyQTY2OyI+Cis8IUVOVElUWSBzaW1kb3QgIiYjeDJBNkE7Ij4KKzwhRU5USVRZIGNv
bmdkb3QgIiYjeDJBNkQ7Ij4KKzwhRU5USVRZIG5jb25nZG90ICImI3gyQTZEOyYjeDMzODsiPgor
PCFFTlRJVFkgZWFzdGVyICImI3gyQTZFOyI+Cis8IUVOVElUWSBhcGFjaXIgIiYjeDJBNkY7Ij4K
KzwhRU5USVRZIGFwRSAiJiN4MkE3MDsiPgorPCFFTlRJVFkgbmFwRSAiJiN4MkE3MDsmI3gzMzg7
Ij4KKzwhRU5USVRZIGVwbHVzICImI3gyQTcxOyI+Cis8IUVOVElUWSBwbHVzZSAiJiN4MkE3Mjsi
PgorPCFFTlRJVFkgRXNpbSAiJiN4MkE3MzsiPgorPCFFTlRJVFkgQ29sb25lICImI3gyQTc0OyI+
Cis8IUVOVElUWSBFcXVhbCAiJiN4MkE3NTsiPgorPCFFTlRJVFkgZUREb3QgIiYjeDJBNzc7Ij4K
KzwhRU5USVRZIGRkb3RzZXEgIiYjeDJBNzc7Ij4KKzwhRU5USVRZIGVxdWl2REQgIiYjeDJBNzg7
Ij4KKzwhRU5USVRZIGx0Y2lyICImI3gyQTc5OyI+Cis8IUVOVElUWSBndGNpciAiJiN4MkE3QTsi
PgorPCFFTlRJVFkgbHRxdWVzdCAiJiN4MkE3QjsiPgorPCFFTlRJVFkgZ3RxdWVzdCAiJiN4MkE3
QzsiPgorPCFFTlRJVFkgbGVzICImI3gyQTdEOyI+Cis8IUVOVElUWSBMZXNzU2xhbnRFcXVhbCAi
JiN4MkE3RDsiPgorPCFFTlRJVFkgbGVxc2xhbnQgIiYjeDJBN0Q7Ij4KKzwhRU5USVRZIG5sZXMg
IiYjeDJBN0Q7JiN4MzM4OyI+Cis8IUVOVElUWSBOb3RMZXNzU2xhbnRFcXVhbCAiJiN4MkE3RDsm
I3gzMzg7Ij4KKzwhRU5USVRZIG5sZXFzbGFudCAiJiN4MkE3RDsmI3gzMzg7Ij4KKzwhRU5USVRZ
IGdlcyAiJiN4MkE3RTsiPgorPCFFTlRJVFkgR3JlYXRlclNsYW50RXF1YWwgIiYjeDJBN0U7Ij4K
KzwhRU5USVRZIGdlcXNsYW50ICImI3gyQTdFOyI+Cis8IUVOVElUWSBuZ2VzICImI3gyQTdFOyYj
eDMzODsiPgorPCFFTlRJVFkgTm90R3JlYXRlclNsYW50RXF1YWwgIiYjeDJBN0U7JiN4MzM4OyI+
Cis8IUVOVElUWSBuZ2Vxc2xhbnQgIiYjeDJBN0U7JiN4MzM4OyI+Cis8IUVOVElUWSBsZXNkb3Qg
IiYjeDJBN0Y7Ij4KKzwhRU5USVRZIGdlc2RvdCAiJiN4MkE4MDsiPgorPCFFTlRJVFkgbGVzZG90
byAiJiN4MkE4MTsiPgorPCFFTlRJVFkgZ2VzZG90byAiJiN4MkE4MjsiPgorPCFFTlRJVFkgbGVz
ZG90b3IgIiYjeDJBODM7Ij4KKzwhRU5USVRZIGdlc2RvdG9sICImI3gyQTg0OyI+Cis8IUVOVElU
WSBsYXAgIiYjeDJBODU7Ij4KKzwhRU5USVRZIGxlc3NhcHByb3ggIiYjeDJBODU7Ij4KKzwhRU5U
SVRZIGdhcCAiJiN4MkE4NjsiPgorPCFFTlRJVFkgZ3RyYXBwcm94ICImI3gyQTg2OyI+Cis8IUVO
VElUWSBsbmUgIiYjeDJBODc7Ij4KKzwhRU5USVRZIGxuZXEgIiYjeDJBODc7Ij4KKzwhRU5USVRZ
IGduZSAiJiN4MkE4ODsiPgorPCFFTlRJVFkgZ25lcSAiJiN4MkE4ODsiPgorPCFFTlRJVFkgbG5h
cCAiJiN4MkE4OTsiPgorPCFFTlRJVFkgbG5hcHByb3ggIiYjeDJBODk7Ij4KKzwhRU5USVRZIGdu
YXAgIiYjeDJBOEE7Ij4KKzwhRU5USVRZIGduYXBwcm94ICImI3gyQThBOyI+Cis8IUVOVElUWSBs
RWcgIiYjeDJBOEI7Ij4KKzwhRU5USVRZIGxlc3NlcXFndHIgIiYjeDJBOEI7Ij4KKzwhRU5USVRZ
IGdFbCAiJiN4MkE4QzsiPgorPCFFTlRJVFkgZ3RyZXFxbGVzcyAiJiN4MkE4QzsiPgorPCFFTlRJ
VFkgbHNpbWUgIiYjeDJBOEQ7Ij4KKzwhRU5USVRZIGdzaW1lICImI3gyQThFOyI+Cis8IUVOVElU
WSBsc2ltZyAiJiN4MkE4RjsiPgorPCFFTlRJVFkgZ3NpbWwgIiYjeDJBOTA7Ij4KKzwhRU5USVRZ
IGxnRSAiJiN4MkE5MTsiPgorPCFFTlRJVFkgZ2xFICImI3gyQTkyOyI+Cis8IUVOVElUWSBsZXNn
ZXMgIiYjeDJBOTM7Ij4KKzwhRU5USVRZIGdlc2xlcyAiJiN4MkE5NDsiPgorPCFFTlRJVFkgZWxz
ICImI3gyQTk1OyI+Cis8IUVOVElUWSBlcXNsYW50bGVzcyAiJiN4MkE5NTsiPgorPCFFTlRJVFkg
ZWdzICImI3gyQTk2OyI+Cis8IUVOVElUWSBlcXNsYW50Z3RyICImI3gyQTk2OyI+Cis8IUVOVElU
WSBlbHNkb3QgIiYjeDJBOTc7Ij4KKzwhRU5USVRZIGVnc2RvdCAiJiN4MkE5ODsiPgorPCFFTlRJ
VFkgZWwgIiYjeDJBOTk7Ij4KKzwhRU5USVRZIGVnICImI3gyQTlBOyI+Cis8IUVOVElUWSBzaW1s
ICImI3gyQTlEOyI+Cis8IUVOVElUWSBzaW1nICImI3gyQTlFOyI+Cis8IUVOVElUWSBzaW1sRSAi
JiN4MkE5RjsiPgorPCFFTlRJVFkgc2ltZ0UgIiYjeDJBQTA7Ij4KKzwhRU5USVRZIExlc3NMZXNz
ICImI3gyQUExOyI+Cis8IUVOVElUWSBOb3ROZXN0ZWRMZXNzTGVzcyAiJiN4MkFBMTsmI3gzMzg7
Ij4KKzwhRU5USVRZIEdyZWF0ZXJHcmVhdGVyICImI3gyQUEyOyI+Cis8IUVOVElUWSBOb3ROZXN0
ZWRHcmVhdGVyR3JlYXRlciAiJiN4MkFBMjsmI3gzMzg7Ij4KKzwhRU5USVRZIGdsaiAiJiN4MkFB
NDsiPgorPCFFTlRJVFkgZ2xhICImI3gyQUE1OyI+Cis8IUVOVElUWSBsdGNjICImI3gyQUE2OyI+
Cis8IUVOVElUWSBndGNjICImI3gyQUE3OyI+Cis8IUVOVElUWSBsZXNjYyAiJiN4MkFBODsiPgor
PCFFTlRJVFkgZ2VzY2MgIiYjeDJBQTk7Ij4KKzwhRU5USVRZIHNtdCAiJiN4MkFBQTsiPgorPCFF
TlRJVFkgbGF0ICImI3gyQUFCOyI+Cis8IUVOVElUWSBzbXRlICImI3gyQUFDOyI+Cis8IUVOVElU
WSBzbXRlcyAiJiN4MkFBQzsmI3hGRTAwOyI+Cis8IUVOVElUWSBsYXRlICImI3gyQUFEOyI+Cis8
IUVOVElUWSBsYXRlcyAiJiN4MkFBRDsmI3hGRTAwOyI+Cis8IUVOVElUWSBidW1wRSAiJiN4MkFB
RTsiPgorPCFFTlRJVFkgcHJlICImI3gyQUFGOyI+Cis8IUVOVElUWSBwcmVjZXEgIiYjeDJBQUY7
Ij4KKzwhRU5USVRZIFByZWNlZGVzRXF1YWwgIiYjeDJBQUY7Ij4KKzwhRU5USVRZIG5wcmUgIiYj
eDJBQUY7JiN4MzM4OyI+Cis8IUVOVElUWSBucHJlY2VxICImI3gyQUFGOyYjeDMzODsiPgorPCFF
TlRJVFkgTm90UHJlY2VkZXNFcXVhbCAiJiN4MkFBRjsmI3gzMzg7Ij4KKzwhRU5USVRZIHNjZSAi
JiN4MkFCMDsiPgorPCFFTlRJVFkgc3VjY2VxICImI3gyQUIwOyI+Cis8IUVOVElUWSBTdWNjZWVk
c0VxdWFsICImI3gyQUIwOyI+Cis8IUVOVElUWSBuc2NlICImI3gyQUIwOyYjeDMzODsiPgorPCFF
TlRJVFkgbnN1Y2NlcSAiJiN4MkFCMDsmI3gzMzg7Ij4KKzwhRU5USVRZIE5vdFN1Y2NlZWRzRXF1
YWwgIiYjeDJBQjA7JiN4MzM4OyI+Cis8IUVOVElUWSBwckUgIiYjeDJBQjM7Ij4KKzwhRU5USVRZ
IHNjRSAiJiN4MkFCNDsiPgorPCFFTlRJVFkgcHJuRSAiJiN4MkFCNTsiPgorPCFFTlRJVFkgcHJl
Y25lcXEgIiYjeDJBQjU7Ij4KKzwhRU5USVRZIHNjbkUgIiYjeDJBQjY7Ij4KKzwhRU5USVRZIHN1
Y2NuZXFxICImI3gyQUI2OyI+Cis8IUVOVElUWSBwcmFwICImI3gyQUI3OyI+Cis8IUVOVElUWSBw
cmVjYXBwcm94ICImI3gyQUI3OyI+Cis8IUVOVElUWSBzY2FwICImI3gyQUI4OyI+Cis8IUVOVElU
WSBzdWNjYXBwcm94ICImI3gyQUI4OyI+Cis8IUVOVElUWSBwcm5hcCAiJiN4MkFCOTsiPgorPCFF
TlRJVFkgcHJlY25hcHByb3ggIiYjeDJBQjk7Ij4KKzwhRU5USVRZIHNjbmFwICImI3gyQUJBOyI+
Cis8IUVOVElUWSBzdWNjbmFwcHJveCAiJiN4MkFCQTsiPgorPCFFTlRJVFkgUHIgIiYjeDJBQkI7
Ij4KKzwhRU5USVRZIFNjICImI3gyQUJDOyI+Cis8IUVOVElUWSBzdWJkb3QgIiYjeDJBQkQ7Ij4K
KzwhRU5USVRZIHN1cGRvdCAiJiN4MkFCRTsiPgorPCFFTlRJVFkgc3VicGx1cyAiJiN4MkFCRjsi
PgorPCFFTlRJVFkgc3VwcGx1cyAiJiN4MkFDMDsiPgorPCFFTlRJVFkgc3VibXVsdCAiJiN4MkFD
MTsiPgorPCFFTlRJVFkgc3VwbXVsdCAiJiN4MkFDMjsiPgorPCFFTlRJVFkgc3ViZWRvdCAiJiN4
MkFDMzsiPgorPCFFTlRJVFkgc3VwZWRvdCAiJiN4MkFDNDsiPgorPCFFTlRJVFkgc3ViRSAiJiN4
MkFDNTsiPgorPCFFTlRJVFkgc3Vic2V0ZXFxICImI3gyQUM1OyI+Cis8IUVOVElUWSBuc3ViRSAi
JiN4MkFDNTsmI3gzMzg7Ij4KKzwhRU5USVRZIG5zdWJzZXRlcXEgIiYjeDJBQzU7JiN4MzM4OyI+
Cis8IUVOVElUWSBzdXBFICImI3gyQUM2OyI+Cis8IUVOVElUWSBzdXBzZXRlcXEgIiYjeDJBQzY7
Ij4KKzwhRU5USVRZIG5zdXBFICImI3gyQUM2OyYjeDMzODsiPgorPCFFTlRJVFkgbnN1cHNldGVx
cSAiJiN4MkFDNjsmI3gzMzg7Ij4KKzwhRU5USVRZIHN1YnNpbSAiJiN4MkFDNzsiPgorPCFFTlRJ
VFkgc3Vwc2ltICImI3gyQUM4OyI+Cis8IUVOVElUWSBzdWJuRSAiJiN4MkFDQjsiPgorPCFFTlRJ
VFkgc3Vic2V0bmVxcSAiJiN4MkFDQjsiPgorPCFFTlRJVFkgdnN1Ym5FICImI3gyQUNCOyYjeEZF
MDA7Ij4KKzwhRU5USVRZIHZhcnN1YnNldG5lcXEgIiYjeDJBQ0I7JiN4RkUwMDsiPgorPCFFTlRJ
VFkgc3VwbkUgIiYjeDJBQ0M7Ij4KKzwhRU5USVRZIHN1cHNldG5lcXEgIiYjeDJBQ0M7Ij4KKzwh
RU5USVRZIHZzdXBuRSAiJiN4MkFDQzsmI3hGRTAwOyI+Cis8IUVOVElUWSB2YXJzdXBzZXRuZXFx
ICImI3gyQUNDOyYjeEZFMDA7Ij4KKzwhRU5USVRZIGNzdWIgIiYjeDJBQ0Y7Ij4KKzwhRU5USVRZ
IGNzdXAgIiYjeDJBRDA7Ij4KKzwhRU5USVRZIGNzdWJlICImI3gyQUQxOyI+Cis8IUVOVElUWSBj
c3VwZSAiJiN4MkFEMjsiPgorPCFFTlRJVFkgc3Vic3VwICImI3gyQUQzOyI+Cis8IUVOVElUWSBz
dXBzdWIgIiYjeDJBRDQ7Ij4KKzwhRU5USVRZIHN1YnN1YiAiJiN4MkFENTsiPgorPCFFTlRJVFkg
c3Vwc3VwICImI3gyQUQ2OyI+Cis8IUVOVElUWSBzdXBoc3ViICImI3gyQUQ3OyI+Cis8IUVOVElU
WSBzdXBkc3ViICImI3gyQUQ4OyI+Cis8IUVOVElUWSBmb3JrdiAiJiN4MkFEOTsiPgorPCFFTlRJ
VFkgdG9wZm9yayAiJiN4MkFEQTsiPgorPCFFTlRJVFkgbWxjcCAiJiN4MkFEQjsiPgorPCFFTlRJ
VFkgRGFzaHYgIiYjeDJBRTQ7Ij4KKzwhRU5USVRZIERvdWJsZUxlZnRUZWUgIiYjeDJBRTQ7Ij4K
KzwhRU5USVRZIFZkYXNobCAiJiN4MkFFNjsiPgorPCFFTlRJVFkgQmFydiAiJiN4MkFFNzsiPgor
PCFFTlRJVFkgdkJhciAiJiN4MkFFODsiPgorPCFFTlRJVFkgdkJhcnYgIiYjeDJBRTk7Ij4KKzwh
RU5USVRZIFZiYXIgIiYjeDJBRUI7Ij4KKzwhRU5USVRZIE5vdCAiJiN4MkFFQzsiPgorPCFFTlRJ
VFkgYk5vdCAiJiN4MkFFRDsiPgorPCFFTlRJVFkgcm5taWQgIiYjeDJBRUU7Ij4KKzwhRU5USVRZ
IGNpcm1pZCAiJiN4MkFFRjsiPgorPCFFTlRJVFkgbWlkY2lyICImI3gyQUYwOyI+Cis8IUVOVElU
WSB0b3BjaXIgIiYjeDJBRjE7Ij4KKzwhRU5USVRZIG5ocGFyICImI3gyQUYyOyI+Cis8IUVOVElU
WSBwYXJzaW0gIiYjeDJBRjM7Ij4KKzwhRU5USVRZIHBhcnNsICImI3gyQUZEOyI+Cis8IUVOVElU
WSBucGFyc2wgIiYjeDJBRkQ7JiN4MjBFNTsiPgorPCFFTlRJVFkgZmZsaWcgIiYjeEZCMDA7Ij4K
KzwhRU5USVRZIGZpbGlnICImI3hGQjAxOyI+Cis8IUVOVElUWSBmbGxpZyAiJiN4RkIwMjsiPgor
PCFFTlRJVFkgZmZpbGlnICImI3hGQjAzOyI+Cis8IUVOVElUWSBmZmxsaWcgIiYjeEZCMDQ7Ij4K
KzwhRU5USVRZIEFzY3IgIiYjeDFENDlDOyI+Cis8IUVOVElUWSBDc2NyICImI3gxRDQ5RTsiPgor
PCFFTlRJVFkgRHNjciAiJiN4MUQ0OUY7Ij4KKzwhRU5USVRZIEdzY3IgIiYjeDFENEEyOyI+Cis8
IUVOVElUWSBKc2NyICImI3gxRDRBNTsiPgorPCFFTlRJVFkgS3NjciAiJiN4MUQ0QTY7Ij4KKzwh
RU5USVRZIE5zY3IgIiYjeDFENEE5OyI+Cis8IUVOVElUWSBPc2NyICImI3gxRDRBQTsiPgorPCFF
TlRJVFkgUHNjciAiJiN4MUQ0QUI7Ij4KKzwhRU5USVRZIFFzY3IgIiYjeDFENEFDOyI+Cis8IUVO
VElUWSBTc2NyICImI3gxRDRBRTsiPgorPCFFTlRJVFkgVHNjciAiJiN4MUQ0QUY7Ij4KKzwhRU5U
SVRZIFVzY3IgIiYjeDFENEIwOyI+Cis8IUVOVElUWSBWc2NyICImI3gxRDRCMTsiPgorPCFFTlRJ
VFkgV3NjciAiJiN4MUQ0QjI7Ij4KKzwhRU5USVRZIFhzY3IgIiYjeDFENEIzOyI+Cis8IUVOVElU
WSBZc2NyICImI3gxRDRCNDsiPgorPCFFTlRJVFkgWnNjciAiJiN4MUQ0QjU7Ij4KKzwhRU5USVRZ
IGFzY3IgIiYjeDFENEI2OyI+Cis8IUVOVElUWSBic2NyICImI3gxRDRCNzsiPgorPCFFTlRJVFkg
Y3NjciAiJiN4MUQ0Qjg7Ij4KKzwhRU5USVRZIGRzY3IgIiYjeDFENEI5OyI+Cis8IUVOVElUWSBm
c2NyICImI3gxRDRCQjsiPgorPCFFTlRJVFkgaHNjciAiJiN4MUQ0QkQ7Ij4KKzwhRU5USVRZIGlz
Y3IgIiYjeDFENEJFOyI+Cis8IUVOVElUWSBqc2NyICImI3gxRDRCRjsiPgorPCFFTlRJVFkga3Nj
ciAiJiN4MUQ0QzA7Ij4KKzwhRU5USVRZIGxzY3IgIiYjeDFENEMxOyI+Cis8IUVOVElUWSBtc2Ny
ICImI3gxRDRDMjsiPgorPCFFTlRJVFkgbnNjciAiJiN4MUQ0QzM7Ij4KKzwhRU5USVRZIHBzY3Ig
IiYjeDFENEM1OyI+Cis8IUVOVElUWSBxc2NyICImI3gxRDRDNjsiPgorPCFFTlRJVFkgcnNjciAi
JiN4MUQ0Qzc7Ij4KKzwhRU5USVRZIHNzY3IgIiYjeDFENEM4OyI+Cis8IUVOVElUWSB0c2NyICIm
I3gxRDRDOTsiPgorPCFFTlRJVFkgdXNjciAiJiN4MUQ0Q0E7Ij4KKzwhRU5USVRZIHZzY3IgIiYj
eDFENENCOyI+Cis8IUVOVElUWSB3c2NyICImI3gxRDRDQzsiPgorPCFFTlRJVFkgeHNjciAiJiN4
MUQ0Q0Q7Ij4KKzwhRU5USVRZIHlzY3IgIiYjeDFENENFOyI+Cis8IUVOVElUWSB6c2NyICImI3gx
RDRDRjsiPgorPCFFTlRJVFkgQWZyICImI3gxRDUwNDsiPgorPCFFTlRJVFkgQmZyICImI3gxRDUw
NTsiPgorPCFFTlRJVFkgRGZyICImI3gxRDUwNzsiPgorPCFFTlRJVFkgRWZyICImI3gxRDUwODsi
PgorPCFFTlRJVFkgRmZyICImI3gxRDUwOTsiPgorPCFFTlRJVFkgR2ZyICImI3gxRDUwQTsiPgor
PCFFTlRJVFkgSmZyICImI3gxRDUwRDsiPgorPCFFTlRJVFkgS2ZyICImI3gxRDUwRTsiPgorPCFF
TlRJVFkgTGZyICImI3gxRDUwRjsiPgorPCFFTlRJVFkgTWZyICImI3gxRDUxMDsiPgorPCFFTlRJ
VFkgTmZyICImI3gxRDUxMTsiPgorPCFFTlRJVFkgT2ZyICImI3gxRDUxMjsiPgorPCFFTlRJVFkg
UGZyICImI3gxRDUxMzsiPgorPCFFTlRJVFkgUWZyICImI3gxRDUxNDsiPgorPCFFTlRJVFkgU2Zy
ICImI3gxRDUxNjsiPgorPCFFTlRJVFkgVGZyICImI3gxRDUxNzsiPgorPCFFTlRJVFkgVWZyICIm
I3gxRDUxODsiPgorPCFFTlRJVFkgVmZyICImI3gxRDUxOTsiPgorPCFFTlRJVFkgV2ZyICImI3gx
RDUxQTsiPgorPCFFTlRJVFkgWGZyICImI3gxRDUxQjsiPgorPCFFTlRJVFkgWWZyICImI3gxRDUx
QzsiPgorPCFFTlRJVFkgYWZyICImI3gxRDUxRTsiPgorPCFFTlRJVFkgYmZyICImI3gxRDUxRjsi
PgorPCFFTlRJVFkgY2ZyICImI3gxRDUyMDsiPgorPCFFTlRJVFkgZGZyICImI3gxRDUyMTsiPgor
PCFFTlRJVFkgZWZyICImI3gxRDUyMjsiPgorPCFFTlRJVFkgZmZyICImI3gxRDUyMzsiPgorPCFF
TlRJVFkgZ2ZyICImI3gxRDUyNDsiPgorPCFFTlRJVFkgaGZyICImI3gxRDUyNTsiPgorPCFFTlRJ
VFkgaWZyICImI3gxRDUyNjsiPgorPCFFTlRJVFkgamZyICImI3gxRDUyNzsiPgorPCFFTlRJVFkg
a2ZyICImI3gxRDUyODsiPgorPCFFTlRJVFkgbGZyICImI3gxRDUyOTsiPgorPCFFTlRJVFkgbWZy
ICImI3gxRDUyQTsiPgorPCFFTlRJVFkgbmZyICImI3gxRDUyQjsiPgorPCFFTlRJVFkgb2ZyICIm
I3gxRDUyQzsiPgorPCFFTlRJVFkgcGZyICImI3gxRDUyRDsiPgorPCFFTlRJVFkgcWZyICImI3gx
RDUyRTsiPgorPCFFTlRJVFkgcmZyICImI3gxRDUyRjsiPgorPCFFTlRJVFkgc2ZyICImI3gxRDUz
MDsiPgorPCFFTlRJVFkgdGZyICImI3gxRDUzMTsiPgorPCFFTlRJVFkgdWZyICImI3gxRDUzMjsi
PgorPCFFTlRJVFkgdmZyICImI3gxRDUzMzsiPgorPCFFTlRJVFkgd2ZyICImI3gxRDUzNDsiPgor
PCFFTlRJVFkgeGZyICImI3gxRDUzNTsiPgorPCFFTlRJVFkgeWZyICImI3gxRDUzNjsiPgorPCFF
TlRJVFkgemZyICImI3gxRDUzNzsiPgorPCFFTlRJVFkgQW9wZiAiJiN4MUQ1Mzg7Ij4KKzwhRU5U
SVRZIEJvcGYgIiYjeDFENTM5OyI+Cis8IUVOVElUWSBEb3BmICImI3gxRDUzQjsiPgorPCFFTlRJ
VFkgRW9wZiAiJiN4MUQ1M0M7Ij4KKzwhRU5USVRZIEZvcGYgIiYjeDFENTNEOyI+Cis8IUVOVElU
WSBHb3BmICImI3gxRDUzRTsiPgorPCFFTlRJVFkgSW9wZiAiJiN4MUQ1NDA7Ij4KKzwhRU5USVRZ
IEpvcGYgIiYjeDFENTQxOyI+Cis8IUVOVElUWSBLb3BmICImI3gxRDU0MjsiPgorPCFFTlRJVFkg
TG9wZiAiJiN4MUQ1NDM7Ij4KKzwhRU5USVRZIE1vcGYgIiYjeDFENTQ0OyI+Cis8IUVOVElUWSBP
b3BmICImI3gxRDU0NjsiPgorPCFFTlRJVFkgU29wZiAiJiN4MUQ1NEE7Ij4KKzwhRU5USVRZIFRv
cGYgIiYjeDFENTRCOyI+Cis8IUVOVElUWSBVb3BmICImI3gxRDU0QzsiPgorPCFFTlRJVFkgVm9w
ZiAiJiN4MUQ1NEQ7Ij4KKzwhRU5USVRZIFdvcGYgIiYjeDFENTRFOyI+Cis8IUVOVElUWSBYb3Bm
ICImI3gxRDU0RjsiPgorPCFFTlRJVFkgWW9wZiAiJiN4MUQ1NTA7Ij4KKzwhRU5USVRZIGFvcGYg
IiYjeDFENTUyOyI+Cis8IUVOVElUWSBib3BmICImI3gxRDU1MzsiPgorPCFFTlRJVFkgY29wZiAi
JiN4MUQ1NTQ7Ij4KKzwhRU5USVRZIGRvcGYgIiYjeDFENTU1OyI+Cis8IUVOVElUWSBlb3BmICIm
I3gxRDU1NjsiPgorPCFFTlRJVFkgZm9wZiAiJiN4MUQ1NTc7Ij4KKzwhRU5USVRZIGdvcGYgIiYj
eDFENTU4OyI+Cis8IUVOVElUWSBob3BmICImI3gxRDU1OTsiPgorPCFFTlRJVFkgaW9wZiAiJiN4
MUQ1NUE7Ij4KKzwhRU5USVRZIGpvcGYgIiYjeDFENTVCOyI+Cis8IUVOVElUWSBrb3BmICImI3gx
RDU1QzsiPgorPCFFTlRJVFkgbG9wZiAiJiN4MUQ1NUQ7Ij4KKzwhRU5USVRZIG1vcGYgIiYjeDFE
NTVFOyI+Cis8IUVOVElUWSBub3BmICImI3gxRDU1RjsiPgorPCFFTlRJVFkgb29wZiAiJiN4MUQ1
NjA7Ij4KKzwhRU5USVRZIHBvcGYgIiYjeDFENTYxOyI+Cis8IUVOVElUWSBxb3BmICImI3gxRDU2
MjsiPgorPCFFTlRJVFkgcm9wZiAiJiN4MUQ1NjM7Ij4KKzwhRU5USVRZIHNvcGYgIiYjeDFENTY0
OyI+Cis8IUVOVElUWSB0b3BmICImI3gxRDU2NTsiPgorPCFFTlRJVFkgdW9wZiAiJiN4MUQ1NjY7
Ij4KKzwhRU5USVRZIHZvcGYgIiYjeDFENTY3OyI+Cis8IUVOVElUWSB3b3BmICImI3gxRDU2ODsi
PgorPCFFTlRJVFkgeG9wZiAiJiN4MUQ1Njk7Ij4KKzwhRU5USVRZIHlvcGYgIiYjeDFENTZBOyI+
Cis8IUVOVElUWSB6b3BmICImI3gxRDU2QjsiPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC90ZXN0cy9fX2luaXRf
Xy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
bWFuaWZlc3QvdGVzdHMvX19pbml0X18ucHkKaW5kZXggYTY4MzRiODI4NWE1NmJlZjBlMTU0M2Zk
OTAxYzdlNmYyZjhiYzIwMi4uZTY5ZGUyOWJiMmQxZDY0MzRiOGIyOWFlNzc1YWQ4YzJlNDhjNTM5
MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9tYW5pZmVzdC90ZXN0cy9fX2luaXRfXy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3RzL19faW5pdF9f
LnB5CkBAIC0xICswLDAgQEAKLSMgVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBQeXRob24gdG8g
c2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZvciBtb2R1bGVzLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvbWFuaWZlc3QvdGVzdHMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3RzL3czYy1p
bXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOWU1Mzk5ZjQ4MmI5ZjY0
ODg2MjNmMDcyODA2ODJiY2I3OTljYmFkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbWFuaWZlc3QvdGVzdHMvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAt
MSwyMiArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBm
cm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0
bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQg
Z2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRo
ZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJl
aW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9w
ZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3RzL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC90ZXN0cy90ZXN0
X1hNTFBhcnNlci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbWFuaWZlc3QvdGVzdHMvdGVzdF9pdGVtLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC90ZXN0cy90ZXN0X21hbmlm
ZXN0LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9tYW5pZmVzdC90ZXN0cy90ZXN0X3NvdXJjZWZpbGUucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3RzL3Rlc3RfdXRpbHMu
cHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbWFuaWZlc3QvdXBkYXRlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC91cGRhdGUucHkKb2xkIG1vZGUgMTAwNjQ0
Cm5ldyBtb2RlIDEwMDc1NQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdzNjLWlt
cG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmNzU5ZmVmOTAzNWIwMDZk
YjRjNzA5NzY1NjU3YzJlNDYyNmFmODMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9tYW5pZmVzdC93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDMwICsw
LDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhl
IFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBX
ZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6
Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4g
dGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQK
LQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZh
bHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1M
aXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbWFuaWZlc3QvWE1MUGFyc2VyLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9fX2luaXRfXy5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvY29tbWFu
ZHMuanNvbgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvbWFuaWZlc3QvZG93bmxvYWQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L2l0ZW0ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L2pzb25saWIucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L2xv
Zy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
bWFuaWZlc3QvbWFuaWZlc3QucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3NvdXJjZWZpbGUucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3RwYXRocy5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZl
c3QvdHlwZWRhdGEucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL21hbmlmZXN0L3VwZGF0ZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdXRpbHMucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Zjcy5weQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC9DT05UUklCVVRJTkcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L0NPTlRSSUJVVElORwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNjQxNWY1ZDAxMWYzZTIyYmU1NTRmZjc1NWMwNzgwNTIyMTNh
ZmE5MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0
L0NPTlRSSUJVVElORworKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLUZvciBpbnN0cnVj
dGlvbnMgZm9yIGNvbnRyaWJ1dGluZyBjb2RlLCBwbGVhc2UgcmVhZDoKLWh0dHBzOi8vZ2l0aHVi
LmNvbS9nb29nbGUvcHl3ZWJzb2NrZXQvd2lraS9Db2RlUmV2aWV3SW5zdHJ1Y3Rpb24KLQotWW91
IG11c3QgY29tcGxldGUgdGhlIEluZGl2aWR1YWwgQ29udHJpYnV0b3IgTGljZW5zZSBBZ3JlZW1l
bnQuCi1odHRwczovL2NsYS5kZXZlbG9wZXJzLmdvb2dsZS5jb20vYWJvdXQvZ29vZ2xlLWluZGl2
aWR1YWwKLVlvdSBjYW4gZG8gdGhpcyBvbmxpbmUsIGFuZCBpdCBvbmx5IHRha2VzIGEgbWludXRl
LgotCi1JZiB5b3UgYXJlIGNvbnRyaWJ1dGluZyBvbiBiZWhhbGYgb2YgYSBjb3Jwb3JhdGlvbiwg
eW91IG11c3QgZmlsbCBvdXQgdGhlCi1Db3Jwb3JhdGUgQ29udHJpYnV0b3IgTGljZW5zZSBBZ3Jl
ZW1lbnQKLWh0dHBzOi8vY2xhLmRldmVsb3BlcnMuZ29vZ2xlLmNvbS9hYm91dC9nb29nbGUtY29y
cG9yYXRlCi1hbmQgc2VuZCBpdCB0byB1cyBhcyBkZXNjcmliZWQgb24gdGhhdCBwYWdlLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC9MSUNFTlNFIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9MSUNFTlNFCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA5ODlkMDJlNGNkMDkyMzc4MDZmN2RmOGJlYWVjYzY5MTUyNzM0MjhlLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvTElDRU5TRQor
KysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUNvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5j
LgotQWxsIHJpZ2h0cyByZXNlcnZlZC4KLQotUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci1tb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi1tZXQ6
Ci0KLSAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci1ub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi1jb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi1pbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi1kaXN0cmli
dXRpb24uCi0gICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCi1jb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLQotVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLUxJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLU9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi1E
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLVRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLShJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvTUFOSUZFU1QuaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L01BTklGRVNULmluCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAxOTI1Njg4MmM1NmZlYjcyODEyYzk5YzhhODM3OTk3OWU2M2U0YTBj
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvTUFO
SUZFU1QuaW4KKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLWluY2x1ZGUgQ09QWUlORwot
aW5jbHVkZSBNQU5JRkVTVC5pbgotaW5jbHVkZSBSRUFETUUKLXJlY3Vyc2l2ZS1pbmNsdWRlIGV4
YW1wbGUgKi5weQotcmVjdXJzaXZlLWluY2x1ZGUgbW9kX3B5d2Vic29ja2V0ICoucHkKLXJlY3Vy
c2l2ZS1pbmNsdWRlIHRlc3QgKi5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9SRUFETUUgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L1JF
QURNRQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzhjNzU4ZjVlZWY0YzczMTg5MjY0
MWRlMzMzZTVkNzVkMTBhM2U1Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3B5d2Vic29ja2V0L1JFQURNRQorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLUlO
U1RBTEwKLQotVG8gaW5zdGFsbCB0aGlzIHBhY2thZ2UgdG8gdGhlIHN5c3RlbSwgcnVuIHRoaXM6
Ci0kIHB5dGhvbiBzZXR1cC5weSBidWlsZAotJCBzdWRvIHB5dGhvbiBzZXR1cC5weSBpbnN0YWxs
Ci0KLVRvIGluc3RhbGwgdGhpcyBwYWNrYWdlIGFzIGEgbm9ybWFsIHVzZXIsIHJ1biB0aGlzIGlu
c3RlYWQ6Ci0kIHB5dGhvbiBzZXR1cC5weSBidWlsZAotJCBweXRob24gc2V0dXAucHkgaW5zdGFs
bCAtLXVzZXIKLQotTEFVTkNICi0KLVRvIHVzZSBweXdlYnNvY2tldCBhcyBBcGFjaGUgbW9kdWxl
LCBydW4gdGhpcyB0byByZWFkIHRoZSBkb2N1bWVudDoKLSQgcHlkb2MgbW9kX3B5d2Vic29ja2V0
Ci0KLVRvIHVzZSBweXdlYnNvY2tldCBhcyBzdGFuZGFsb25lIHNlcnZlciwgcnVuIHRoaXMgdG8g
cmVhZCB0aGUgZG9jdW1lbnQ6Ci0kIHB5ZG9jIG1vZF9weXdlYnNvY2tldC5zdGFuZGFsb25lCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3B5d2Vic29ja2V0L1JFQURNRS5tZCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvUkVBRE1FLm1kCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBhZThlOTEwYTg0ZWY5OTU2NjllYTA3MjNmMWJjN2YyOTkzNDY2NTg5
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvUkVB
RE1FLm1kCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi0KLSMgcHl3ZWJzb2NrZXQgIwot
Ci1UaGUgcHl3ZWJzb2NrZXQgcHJvamVjdCBhaW1zIHRvIHByb3ZpZGUgYSBbV2ViU29ja2V0XSho
dHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjQ1NSkgc3RhbmRhbG9uZSBzZXJ2ZXIgYW5k
IGEgV2ViU29ja2V0IGV4dGVuc2lvbiBmb3IgW0FwYWNoZSBIVFRQIFNlcnZlcl0oaHR0cHM6Ly9o
dHRwZC5hcGFjaGUub3JnLyksIG1vZFxfcHl3ZWJzb2NrZXQuCi0KLXB5d2Vic29ja2V0IGlzIGlu
dGVuZGVkIGZvciAqKnRlc3RpbmcqKiBvciAqKmV4cGVyaW1lbnRhbCoqIHB1cnBvc2VzLgotCi1Q
bGVhc2Ugc2VlIFtXaWtpXSguLi8uLi93aWtpKSBmb3IgbW9yZSBkZXRhaWxzLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC9leGFtcGxlL2Fib3J0X2hhbmRzaGFrZV93c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvYWJv
cnRfaGFuZHNoYWtlX3dzaC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDA4MDIz
YTFmZTkxZTJmMjk3N2IxNjNmOTc3ZGFlNjg1MDAwOWFhNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvYWJvcnRfaGFuZHNoYWtlX3dz
aC5weQorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMTIsIEdv
b2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0K
LWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBoYW5kc2hha2UKLQotCi1kZWYgd2ViX3NvY2tl
dF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6Ci0gICAgcmFpc2UgaGFuZHNoYWtlLkFib3J0
ZWRCeVVzZXJFeGNlcHRpb24oCi0gICAgICAgICJBYm9ydGVkIGluIHdlYl9zb2NrZXRfZG9fZXh0
cmFfaGFuZHNoYWtlIikKLQotCi1kZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3Qp
OgotICAgIHBhc3MKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhh
bXBsZS9hYm9ydF93c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvYWJvcnRfd3NoLnB5CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAyYmJmMDA1ZjZhMzdjNjA5ZTE2YWJkZTRkZjk0MDI0MjY4ZDBk
YWVlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
ZXhhbXBsZS9hYm9ydF93c2gucHkKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0jIENv
cHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
Ci0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLQotCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgaGFuZHNoYWtlCi0K
LQotZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgotICAgIHBhc3MK
LQotCi1kZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgotICAgIHJhaXNlIGhh
bmRzaGFrZS5BYm9ydGVkQnlVc2VyRXhjZXB0aW9uKAotICAgICAgICAiQWJvcnRlZCBpbiB3ZWJf
c29ja2V0X3RyYW5zZmVyX2RhdGEiKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC9leGFtcGxlL2FycmF5YnVmZmVyX2JlbmNobWFyay5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxl
L2FycmF5YnVmZmVyX2JlbmNobWFyay5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA4NjljZDdlMWVlNjUzZDU5ZjA0YjgwMmZmMzRjOGQwODEzMTdjYTg5Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS9hcnJheWJ1ZmZl
cl9iZW5jaG1hcmsuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzNCArMCwwIEBACi08IS0tCi1D
b3B5cmlnaHQgMjAxMywgR29vZ2xlIEluYy4KLUFsbCByaWdodHMgcmVzZXJ2ZWQuCi0KLVJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotbWV0OgotCi0gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotZGlzdHJpYnV0aW9uLgotICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLXRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0KLVRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKLSJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCi1MSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLUEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi1PV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LVNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLUxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi1USEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0oSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLU9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0tLT4KLQotPGh0bWw+Ci08aGVhZD4KLTx0aXRsZT5BcnJheUJ1
ZmZlciBiZW5jaG1hcms8L3RpdGxlPgotPHNjcmlwdCBzcmM9InV0aWwuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdD4KLXZhciBQUklOVF9TSVpFID0gdHJ1ZTsKLQotLy8gSW5pdGlhbCBzaXplIG9mIGFy
cmF5cy4KLXZhciBTVEFSVF9TSVpFID0gMTAgKiAxMDI0OwotLy8gU3RvcHMgYmVuY2htYXJrIHdo
ZW4gdGhlIHNpemUgb2YgYW4gYXJyYXkgZXhjZWVkcyB0aGlzIHRocmVzaG9sZC4KLXZhciBTVE9Q
X1RIUkVTSE9MRCA9IDEwMDAwMCAqIDEwMjQ7Ci0vLyBJZiB0aGUgc2l6ZSBvZiBlYWNoIGFycmF5
IGlzIHNtYWxsLCB3cml0ZS9yZWFkIHRoZSBhcnJheSBtdWx0aXBsZSB0aW1lcwotLy8gdW50aWwg
dGhlIHN1bSBvZiBzaXplcyByZWFjaGVzIHRoaXMgdGhyZXNob2xkLgotdmFyIE1JTl9UT1RBTCA9
IDEwMDAwMCAqIDEwMjQ7Ci12YXIgTVVMVElQTElFUlMgPSBbNSwgMl07Ci0KLS8vIFJlcGVhdCBi
ZW5jaG1hcmsgZm9yIHNldmVyYWwgdGltZXMgdG8gbWVhc3VyZSBwZXJmb3JtYW5jZSBvZiBvcHRp
bWl6ZWQKLS8vIChzdWNoIGFzIEpJVCkgcnVuLgotdmFyIFJFUEVBVF9GT1JfV0FSTVVQID0gMzsK
LQotZnVuY3Rpb24gd3JpdGVCZW5jaG1hcmsoc2l6ZSwgbWluVG90YWwpIHsKLSAgdmFyIHRvdGFs
U2l6ZSA9IDA7Ci0gIHdoaWxlICh0b3RhbFNpemUgPCBtaW5Ub3RhbCkgewotICAgIHZhciBhcnJh
eUJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihzaXplKTsKLQotICAgIC8vIFdyaXRlICdhJ3MuCi0g
ICAgZmlsbEFycmF5QnVmZmVyKGFycmF5QnVmZmVyLCAweDYxKTsKLQotICAgIHRvdGFsU2l6ZSAr
PSBzaXplOwotICB9Ci0gIHJldHVybiB0b3RhbFNpemU7Ci19Ci0KLWZ1bmN0aW9uIHJlYWRCZW5j
aG1hcmsoc2l6ZSwgbWluVG90YWwpIHsKLSAgdmFyIHRvdGFsU2l6ZSA9IDA7Ci0gIHdoaWxlICh0
b3RhbFNpemUgPCBtaW5Ub3RhbCkgewotICAgIHZhciBhcnJheUJ1ZmZlciA9IG5ldyBBcnJheUJ1
ZmZlcihzaXplKTsKLQotICAgIGlmICghdmVyaWZ5QXJyYXlCdWZmZXIoYXJyYXlCdWZmZXIsIDB4
MDApKSB7Ci0gICAgICBxdWV1ZUxvZygnVmVyaWZpY2F0aW9uIGZhaWxlZCcpOwotICAgICAgcmV0
dXJuIC0xOwotICAgIH0KLQotICAgIHRvdGFsU2l6ZSArPSBzaXplOwotICB9Ci0gIHJldHVybiB0
b3RhbFNpemU7Ci19Ci0KLWZ1bmN0aW9uIHJ1bkJlbmNobWFyayhiZW5jaG1hcmtGdW5jdGlvbiwK
LSAgICAgICAgICAgICAgICAgICAgICBzaXplLAotICAgICAgICAgICAgICAgICAgICAgIHN0b3BU
aHJlc2hvbGQsCi0gICAgICAgICAgICAgICAgICAgICAgbWluVG90YWwsCi0gICAgICAgICAgICAg
ICAgICAgICAgbXVsdGlwbGllcnMsCi0gICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGllcklu
ZGV4KSB7Ci0gIHdoaWxlIChzaXplIDw9IHN0b3BUaHJlc2hvbGQpIHsKLSAgICB2YXIgbWF4U3Bl
ZWQgPSAwOwotCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBSRVBFQVRfRk9SX1dBUk1VUDsgKytp
KSB7Ci0gICAgICB2YXIgc3RhcnRUaW1lSW5NcyA9IGdldFRpbWVTdGFtcCgpOwotCi0gICAgICB2
YXIgdG90YWxTaXplID0gYmVuY2htYXJrRnVuY3Rpb24oc2l6ZSwgbWluVG90YWwpOwotCi0gICAg
ICBtYXhTcGVlZCA9IE1hdGgubWF4KG1heFNwZWVkLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICBjYWxjdWxhdGVTcGVlZEluS0IodG90YWxTaXplLCBzdGFydFRpbWVJbk1zKSk7Ci0gICAgfQot
ICAgIHF1ZXVlTG9nKGZvcm1hdFJlc3VsdEluS2lCKHNpemUsIG1heFNwZWVkLCBQUklOVF9TSVpF
KSk7Ci0KLSAgICBzaXplICo9IG11bHRpcGxpZXJzW211bHRpcGxpZXJJbmRleF07Ci0gICAgbXVs
dGlwbGllckluZGV4ID0gKG11bHRpcGxpZXJJbmRleCArIDEpICUgbXVsdGlwbGllcnMubGVuZ3Ro
OwotICB9Ci19Ci0KLWZ1bmN0aW9uIHJ1bkJlbmNobWFya3MoKSB7Ci0gIHF1ZXVlTG9nKCdNZXNz
YWdlIHNpemUgaW4gS2lCLCBTcGVlZCBpbiBrQi9zJyk7Ci0KLSAgcXVldWVMb2coJ1dyaXRlIGJl
bmNobWFyaycpOwotICBydW5CZW5jaG1hcmsoCi0gICAgICB3cml0ZUJlbmNobWFyaywgU1RBUlRf
U0laRSwgU1RPUF9USFJFU0hPTEQsIE1JTl9UT1RBTCwgTVVMVElQTElFUlMsIDApOwotICBxdWV1
ZUxvZygnRmluaXNoZWQnKTsKLQotICBxdWV1ZUxvZygnUmVhZCBiZW5jaG1hcmsnKTsKLSAgcnVu
QmVuY2htYXJrKAotICAgICAgcmVhZEJlbmNobWFyaywgU1RBUlRfU0laRSwgU1RPUF9USFJFU0hP
TEQsIE1JTl9UT1RBTCwgTVVMVElQTElFUlMsIDApOwotICBhZGRUb0xvZygnRmluaXNoZWQnKTsK
LX0KLQotZnVuY3Rpb24gaW5pdCgpIHsKLSAgbG9nQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2xvZycpOwotCi0gIHF1ZXVlTG9nKHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93
ZXJDYXNlKCkpOwotCi0gIGFkZFRvTG9nKCdTdGFydGVkLi4uJyk7Ci0KLSAgc2V0VGltZW91dChy
dW5CZW5jaG1hcmtzLCAwKTsKLX0KLQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9
ImluaXQoKSI+Ci08dGV4dGFyZWEKLSAgICBpZD0ibG9nIiByb3dzPSI1MCIgc3R5bGU9IndpZHRo
OiAxMDAlIiByZWFkb25seT48L3RleHRhcmVhPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC9leGFtcGxlL2JlbmNoX3dzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS9iZW5jaF93c2gucHkK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwNjdjYTdkODk1NWZjMTYzZDUwMDFjZDg4
MTJlNmFlMjBjMTYyOTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC9leGFtcGxlL2JlbmNoX3dzaC5weQorKysgL2Rldi9udWxsCkBAIC0xLDYwICsw
LDAgQEAKLSMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmli
dXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIkEgc2ltcGxlIGxvYWQgdGVzdGVyIGZvciBX
ZWJTb2NrZXQgY2xpZW50cy4KLQotQSBjbGllbnQgcHJvZ3JhbSBzZW5kcyBhIG1lc3NhZ2UgZm9y
bWF0dGVkIGFzICI8dGltZT4gPGNvdW50PiA8bWVzc2FnZT4iIHRvCi10aGlzIGhhbmRsZXIuIFRo
aXMgaGFuZGxlciBzdGFydHMgc2VuZGluZyB0b3RhbCA8Y291bnQ+IFdlYlNvY2tldCBtZXNzYWdl
cwotY29udGFpbmluZyA8bWVzc2FnZT4gZXZlcnkgPHRpbWU+IHNlY29uZHMuIDx0aW1lPiBjYW4g
YmUgYSBmbG9hdGluZyBwb2ludAotdmFsdWUuIDxjb3VudD4gbXVzdCBiZSBhbiBpbnRlZ2VyIHZh
bHVlLgotIiIiCi0KLQotaW1wb3J0IHRpbWUKLQotCi1kZWYgd2ViX3NvY2tldF9kb19leHRyYV9o
YW5kc2hha2UocmVxdWVzdCk6Ci0gICAgcGFzcyAgIyBBbHdheXMgYWNjZXB0LgotCi0KLWRlZiB3
ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6Ci0gICAgbGluZSA9IHJlcXVlc3Qud3Nf
c3RyZWFtLnJlY2VpdmVfbWVzc2FnZSgpCi0gICAgcGFydHMgPSBsaW5lLnNwbGl0KCcgJykKLSAg
ICBpZiBsZW4ocGFydHMpICE9IDM6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0JhZCBwYXJh
bWV0ZXIgZm9ybWF0JykKLSAgICB3YWl0ID0gZmxvYXQocGFydHNbMF0pCi0gICAgY291bnQgPSBp
bnQocGFydHNbMV0pCi0gICAgbWVzc2FnZSA9IHBhcnRzWzJdCi0gICAgZm9yIGkgaW4geHJhbmdl
KGNvdW50KToKLSAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKG1lc3NhZ2Up
Ci0gICAgICAgIHRpbWUuc2xlZXAod2FpdCkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvZXhhbXBsZS9iZW5jaG1hcmsuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS9iZW5jaG1h
cmsuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTkyMzg2M2E5OTU2OTc2M2Fi
Nzk3NmE3ZGU3ODIwNWNhNjE5MmEyYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvYmVuY2htYXJrLmh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSwxNzUgKzAsMCBAQAotPCEtLQotQ29weXJpZ2h0IDIwMTMsIEdvb2dsZSBJbmMuCi1BbGwg
cmlnaHRzIHJlc2VydmVkLgotCi1SZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLW1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLW1ldDoKLQotICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLW5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLWNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLWluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLWRpc3RyaWJ1dGlvbi4K
LSAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLWNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi10aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotCi1USElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0iQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi1B
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi1TUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi1MSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLURBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi1PRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLS0+Ci0KLTxodG1s
PgotPGhlYWQ+Ci08dGl0bGU+V2ViU29ja2V0IGJlbmNobWFyazwvdGl0bGU+Ci08c2NyaXB0IHNy
Yz0idXRpbF9tYWluLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJ1dGlsLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSJiZW5jaG1hcmsuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLXZhciBh
ZGRyZXNzQm94ID0gbnVsbDsKLQotZnVuY3Rpb24gZ2V0Q29uZmlnKCkgewotICByZXR1cm4gewot
ICAgIHByZWZpeFVybDogYWRkcmVzc0JveC52YWx1ZSwKLSAgICBwcmludFNpemU6IGdldEJvb2xG
cm9tQ2hlY2tCb3goJ3ByaW50c2l6ZScpLAotICAgIG51bVNvY2tldHM6IGdldEludEZyb21JbnB1
dCgnbnVtc29ja2V0cycpLAotICAgIC8vIEluaXRpYWwgc2l6ZSBvZiBtZXNzYWdlcy4KLSAgICBu
dW1JdGVyYXRpb25zOiBnZXRJbnRGcm9tSW5wdXQoJ251bWl0ZXJhdGlvbnMnKSwKLSAgICBudW1X
YXJtVXBJdGVyYXRpb25zOiBnZXRJbnRGcm9tSW5wdXQoJ251bXdhcm11cGl0ZXJhdGlvbnMnKSwK
LSAgICBzdGFydFNpemU6IGdldEludEZyb21JbnB1dCgnc3RhcnRzaXplJyksCi0gICAgLy8gU3Rv
cHMgYmVuY2htYXJrIHdoZW4gdGhlIHNpemUgb2YgbWVzc2FnZSBleGNlZWRzIHRoaXMgdGhyZXNo
b2xkLgotICAgIHN0b3BUaHJlc2hvbGQ6IGdldEludEZyb21JbnB1dCgnc3RvcHRocmVzaG9sZCcp
LAotICAgIC8vIElmIHRoZSBzaXplIG9mIGVhY2ggbWVzc2FnZSBpcyBzbWFsbCwgc2VuZC9yZWNl
aXZlIG11bHRpcGxlIG1lc3NhZ2VzCi0gICAgLy8gdW50aWwgdGhlIHN1bSBvZiBzaXplcyByZWFj
aGVzIHRoaXMgdGhyZXNob2xkLgotICAgIG1pblRvdGFsOiBnZXRJbnRGcm9tSW5wdXQoJ21pbnRv
dGFsJyksCi0gICAgbXVsdGlwbGllcnM6IGdldEZsb2F0QXJyYXlGcm9tSW5wdXQoJ211bHRpcGxp
ZXJzJyksCi0gICAgdmVyaWZ5RGF0YTogZ2V0Qm9vbEZyb21DaGVja0JveCgndmVyaWZ5ZGF0YScp
LAotICAgIGFkZFRvTG9nOiBhZGRUb0xvZywKLSAgICBhZGRUb1N1bW1hcnk6IGFkZFRvU3VtbWFy
eSwKLSAgICBtZWFzdXJlVmFsdWU6IG1lYXN1cmVWYWx1ZSwKLSAgICBub3RpZnlBYm9ydDogbm90
aWZ5QWJvcnQKLSAgfTsKLX0KLQotZnVuY3Rpb24gb25TZW5kQmVuY2htYXJrKCkgewotICB2YXIg
Y29uZmlnID0gZ2V0Q29uZmlnKCk7Ci0gIGRvQWN0aW9uKGNvbmZpZywgZ2V0Qm9vbEZyb21DaGVj
a0JveCgnd29ya2VyJyksICdzZW5kQmVuY2htYXJrJyk7Ci19Ci0KLWZ1bmN0aW9uIG9uUmVjZWl2
ZUJlbmNobWFyaygpIHsKLSAgdmFyIGNvbmZpZyA9IGdldENvbmZpZygpOwotICBkb0FjdGlvbihj
b25maWcsIGdldEJvb2xGcm9tQ2hlY2tCb3goJ3dvcmtlcicpLCAncmVjZWl2ZUJlbmNobWFyaycp
OwotfQotCi1mdW5jdGlvbiBvbkJhdGNoQmVuY2htYXJrKCkgewotICB2YXIgY29uZmlnID0gZ2V0
Q29uZmlnKCk7Ci0gIGRvQWN0aW9uKGNvbmZpZywgZ2V0Qm9vbEZyb21DaGVja0JveCgnd29ya2Vy
JyksICdiYXRjaEJlbmNobWFyaycpOwotfQotCi1mdW5jdGlvbiBvblN0b3AoKSB7Ci0gIHZhciBj
b25maWcgPSBnZXRDb25maWcoKTsKLSAgZG9BY3Rpb24oY29uZmlnLCBnZXRCb29sRnJvbUNoZWNr
Qm94KCd3b3JrZXInKSwgJ3N0b3AnKTsKLX0KLQotZnVuY3Rpb24gaW5pdCgpIHsKLSAgYWRkcmVz
c0JveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhZGRyZXNzJyk7Ci0gIGxvZ0JveCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2cnKTsKLQotICBzdW1tYXJ5Qm94ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3N1bW1hcnknKTsKLQotICB2YXIgc2NoZW1lID0gd2luZG93LmxvY2F0
aW9uLnByb3RvY29sID09ICdodHRwczonID8gJ3dzczovLycgOiAnd3M6Ly8nOwotICB2YXIgZGVm
YXVsdEFkZHJlc3MgPSBzY2hlbWUgKyB3aW5kb3cubG9jYXRpb24uaG9zdCArICcvYmVuY2htYXJr
X2hlbHBlcic7Ci0KLSAgYWRkcmVzc0JveC52YWx1ZSA9IGRlZmF1bHRBZGRyZXNzOwotCi0gIGFk
ZFRvTG9nKHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkpOwotICBhZGRU
b1N1bW1hcnkod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSk7Ci0KLSAg
aWYgKCEoJ1dlYlNvY2tldCcgaW4gd2luZG93KSkgewotICAgIGFkZFRvTG9nKCdXZWJTb2NrZXQg
aXMgbm90IGF2YWlsYWJsZScpOwotICB9Ci0KLSAgaW5pdFdvcmtlcignV2ViU29ja2V0JywgJycp
OwotfQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9ImluaXQoKSI+Ci0KLTxkaXYg
aWQ9ImJlbmNobWFya19kaXYiPgotICB1cmwgPGlucHV0IHR5cGU9InRleHQiIGlkPSJhZGRyZXNz
IiBzaXplPSI0MCI+Ci0gIDxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSJzZW5kIiBvbmNsaWNr
PSJvblNlbmRCZW5jaG1hcmsoKSI+Ci0gIDxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSJyZWNl
aXZlIiBvbmNsaWNrPSJvblJlY2VpdmVCZW5jaG1hcmsoKSI+Ci0gIDxpbnB1dCB0eXBlPSJidXR0
b24iIHZhbHVlPSJiYXRjaCIgb25jbGljaz0ib25CYXRjaEJlbmNobWFyaygpIj4KLSAgPGlucHV0
IHR5cGU9ImJ1dHRvbiIgdmFsdWU9InN0b3AiIG9uY2xpY2s9Im9uU3RvcCgpIj4KLQotICA8YnIv
PgotCi0gIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9InByaW50c2l6ZSIgY2hlY2tlZD4KLSAg
PGxhYmVsIGZvcj0icHJpbnRzaXplIj5QcmludCBzaXplIGFuZCB0aW1lIHBlciBtZXNzYWdlPC9s
YWJlbD4KLSAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0idmVyaWZ5ZGF0YSIgY2hlY2tlZD4K
LSAgPGxhYmVsIGZvcj0idmVyaWZ5ZGF0YSI+VmVyaWZ5IGRhdGE8L2xhYmVsPgotICA8aW5wdXQg
dHlwZT0iY2hlY2tib3giIGlkPSJ3b3JrZXIiPgotICA8bGFiZWwgZm9yPSJ3b3JrZXIiPlJ1biBv
biB3b3JrZXI8L2xhYmVsPgotCi0gIDxici8+Ci0KLSAgUGFyYW1ldGVyczoKLQotICA8YnIvPgot
Ci0gIDx0YWJsZT4KLSAgICA8dHI+Ci0gICAgICA8dGQ+TnVtIHNvY2tldHM8L3RkPgotICAgICAg
PHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ibnVtc29ja2V0cyIgdmFsdWU9IjEiPjwvdGQ+Ci0g
ICAgPC90cj4KLSAgICA8dHI+Ci0gICAgICA8dGQ+TnVtYmVyIG9mIGl0ZXJhdGlvbnM8L3RkPgot
ICAgICAgPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ibnVtaXRlcmF0aW9ucyIgdmFsdWU9IjEi
PjwvdGQ+Ci0gICAgPC90cj4KLSAgICA8dHI+Ci0gICAgICA8dGQ+TnVtYmVyIG9mIHdhcm0tdXAg
aXRlcmF0aW9uczwvdGQ+Ci0gICAgICA8dGQ+PGlucHV0IHR5cGU9InRleHQiIGlkPSJudW13YXJt
dXBpdGVyYXRpb25zIiB2YWx1ZT0iMCI+PC90ZD4KLSAgICA8L3RyPgotICAgIDx0cj4KLSAgICAg
IDx0ZD5TdGFydCBzaXplPC90ZD4KLSAgICAgIDx0ZD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9InN0
YXJ0c2l6ZSIgdmFsdWU9IjEwMjQwIj48L3RkPgotICAgIDwvdHI+Ci0gICAgPHRyPgotICAgICAg
PHRkPlN0b3AgdGhyZXNob2xkPC90ZD4KLSAgICAgIDx0ZD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9
InN0b3B0aHJlc2hvbGQiIHZhbHVlPSIxMDI0MDAwMDAiPjwvdGQ+Ci0gICAgPC90cj4KLSAgICA8
dHI+Ci0gICAgICA8dGQ+TWluaW11bSB0b3RhbDwvdGQ+Ci0gICAgICA8dGQ+PGlucHV0IHR5cGU9
InRleHQiIGlkPSJtaW50b3RhbCIgdmFsdWU9IjEwMjQwMDAwMCI+PC90ZD4KLSAgICA8L3RyPgot
ICAgIDx0cj4KLSAgICAgIDx0ZD5NdWx0aXBsaWVyczwvdGQ+Ci0gICAgICA8dGQ+PGlucHV0IHR5
cGU9InRleHQiIGlkPSJtdWx0aXBsaWVycyIgdmFsdWU9IjUsIDIiPjwvdGQ+Ci0gICAgPC90cj4K
LSAgPC90YWJsZT4KLTwvZGl2PgotCi08ZGl2IGlkPSJsb2dfZGl2Ij4KLSAgPHRleHRhcmVhCi0g
ICAgICBpZD0ibG9nIiByb3dzPSIyMCIgc3R5bGU9IndpZHRoOiAxMDAlIiByZWFkb25seT48L3Rl
eHRhcmVhPgotPC9kaXY+Ci08ZGl2IGlkPSJzdW1tYXJ5X2RpdiI+Ci0gIFN1bW1hcnkKLSAgPHRl
eHRhcmVhCi0gICAgICBpZD0ic3VtbWFyeSIgcm93cz0iMjAiIHN0eWxlPSJ3aWR0aDogMTAwJSIg
cmVhZG9ubHk+PC90ZXh0YXJlYT4KLTwvZGl2PgotCi1Ob3RlOiBFZmZlY3Qgb2YgUlRUIGlzIG5v
dCBlbGltaW5hdGVkLgotCi08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1w
bGUvYmVuY2htYXJrLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2JlbmNobWFyay5qcwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggODU2NDM1ZDFkMGRkNzhkOTc5NGFhODRjMDI5YzhhYjRmNzMzOWVj
MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4
YW1wbGUvYmVuY2htYXJrLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMjE0ICswLDAgQEAKLS8vIENv
cHlyaWdodCAyMDE0IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUKLS8vIGxpY2Vu
c2UgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIENPUFlJTkcgZmlsZSBvciBhdAotLy8gaHR0cHM6
Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vb3Blbi1zb3VyY2UvbGljZW5zZXMvYnNkCi0KLWlmICh0
eXBlb2YgaW1wb3J0U2NyaXB0cyAhPT0gInVuZGVmaW5lZCIpIHsKLSAgLy8gUnVubmluZyBvbiBh
IHdvcmtlcgotICBpbXBvcnRTY3JpcHRzKCd1dGlsLmpzJywgJ3V0aWxfd29ya2VyLmpzJyk7Ci19
Ci0KLS8vIE5hbWVzcGFjZSBmb3IgaG9sZGluZyBnbG9iYWxzLgotdmFyIGJlbmNobWFyayA9IHtz
dGFydFRpbWVJbk1zOiAwfTsKLQotdmFyIHNvY2tldHMgPSBbXTsKLXZhciBudW1Fc3RhYmxpc2hl
ZFNvY2tldHMgPSAwOwotCi12YXIgdGltZXJJRCA9IG51bGw7Ci0KLWZ1bmN0aW9uIGRlc3Ryb3lT
b2NrZXQoc29ja2V0KSB7Ci0gIHNvY2tldC5vbm9wZW4gPSBudWxsOwotICBzb2NrZXQub25tZXNz
YWdlID0gbnVsbDsKLSAgc29ja2V0Lm9uZXJyb3IgPSBudWxsOwotICBzb2NrZXQub25jbG9zZSA9
IG51bGw7Ci0gIHNvY2tldC5jbG9zZSgpOwotfQotCi1mdW5jdGlvbiBkZXN0cm95QWxsU29ja2V0
cygpIHsKLSAgZm9yICh2YXIgaSA9IDA7IGkgPCBzb2NrZXRzLmxlbmd0aDsgKytpKSB7Ci0gICAg
ZGVzdHJveVNvY2tldChzb2NrZXRzW2ldKTsKLSAgfQotICBzb2NrZXRzID0gW107Ci19Ci0KLWZ1
bmN0aW9uIHNlbmRCZW5jaG1hcmtTdGVwKHNpemUsIGNvbmZpZywgaXNXYXJtVXApIHsKLSAgdGlt
ZXJJRCA9IG51bGw7Ci0KLSAgdmFyIHRvdGFsU2l6ZSA9IDA7Ci0gIHZhciB0b3RhbFJlcGxpZWQg
PSAwOwotCi0gIHZhciBvbk1lc3NhZ2VIYW5kbGVyID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICBp
ZiAoIXZlcmlmeUFja25vd2xlZGdlbWVudChjb25maWcsIGV2ZW50LmRhdGEsIHNpemUpKSB7Ci0g
ICAgICBkZXN0cm95QWxsU29ja2V0cygpOwotICAgICAgY29uZmlnLm5vdGlmeUFib3J0KCk7Ci0g
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgdG90YWxSZXBsaWVkICs9IHNpemU7Ci0KLSAgICBp
ZiAodG90YWxSZXBsaWVkIDwgdG90YWxTaXplKSB7Ci0gICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgY2FsY3VsYXRlQW5kTG9nUmVzdWx0KGNvbmZpZywgc2l6ZSwgYmVuY2htYXJrLnN0YXJ0VGlt
ZUluTXMsIHRvdGFsU2l6ZSwKLSAgICAgICAgaXNXYXJtVXApOwotCi0gICAgcnVuTmV4dFRhc2so
Y29uZmlnKTsKLSAgfTsKLQotICBmb3IgKHZhciBpID0gMDsgaSA8IHNvY2tldHMubGVuZ3RoOyAr
K2kpIHsKLSAgICB2YXIgc29ja2V0ID0gc29ja2V0c1tpXTsKLSAgICBzb2NrZXQub25tZXNzYWdl
ID0gb25NZXNzYWdlSGFuZGxlcjsKLSAgfQotCi0gIHZhciBkYXRhQXJyYXkgPSBbXTsKLQotICB3
aGlsZSAodG90YWxTaXplIDwgY29uZmlnLm1pblRvdGFsKSB7Ci0gICAgdmFyIGJ1ZmZlciA9IG5l
dyBBcnJheUJ1ZmZlcihzaXplKTsKLQotICAgIGZpbGxBcnJheUJ1ZmZlcihidWZmZXIsIDB4NjEp
OwotCi0gICAgZGF0YUFycmF5LnB1c2goYnVmZmVyKTsKLSAgICB0b3RhbFNpemUgKz0gc2l6ZTsK
LSAgfQotCi0gIGJlbmNobWFyay5zdGFydFRpbWVJbk1zID0gZ2V0VGltZVN0YW1wKCk7Ci0KLSAg
dG90YWxTaXplID0gMDsKLQotICB2YXIgc29ja2V0SW5kZXggPSAwOwotICB2YXIgZGF0YUluZGV4
ID0gMDsKLSAgd2hpbGUgKHRvdGFsU2l6ZSA8IGNvbmZpZy5taW5Ub3RhbCkgewotICAgIHZhciBj
b21tYW5kID0gWydzZW5kJ107Ci0gICAgY29tbWFuZC5wdXNoKGNvbmZpZy52ZXJpZnlEYXRhID8g
JzEnIDogJzAnKTsKLSAgICBzb2NrZXRzW3NvY2tldEluZGV4XS5zZW5kKGNvbW1hbmQuam9pbign
ICcpKTsKLSAgICBzb2NrZXRzW3NvY2tldEluZGV4XS5zZW5kKGRhdGFBcnJheVtkYXRhSW5kZXhd
KTsKLSAgICBzb2NrZXRJbmRleCA9IChzb2NrZXRJbmRleCArIDEpICUgc29ja2V0cy5sZW5ndGg7
Ci0KLSAgICB0b3RhbFNpemUgKz0gc2l6ZTsKLSAgICArK2RhdGFJbmRleDsKLSAgfQotfQotCi1m
dW5jdGlvbiByZWNlaXZlQmVuY2htYXJrU3RlcChzaXplLCBjb25maWcsIGlzV2FybVVwKSB7Ci0g
IHRpbWVySUQgPSBudWxsOwotCi0gIHZhciB0b3RhbFNpemUgPSAwOwotICB2YXIgdG90YWxSZXBs
aWVkID0gMDsKLQotICB2YXIgb25NZXNzYWdlSGFuZGxlciA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0g
ICAgdmFyIGJ5dGVzUmVjZWl2ZWQgPSBldmVudC5kYXRhLmJ5dGVMZW5ndGg7Ci0gICAgaWYgKGJ5
dGVzUmVjZWl2ZWQgIT0gc2l6ZSkgewotICAgICAgY29uZmlnLmFkZFRvTG9nKCdFeHBlY3RlZCAn
ICsgc2l6ZSArICdCIGJ1dCByZWNlaXZlZCAnICsKLSAgICAgICAgICBieXRlc1JlY2VpdmVkICsg
J0InKTsKLSAgICAgIGRlc3Ryb3lBbGxTb2NrZXRzKCk7Ci0gICAgICBjb25maWcubm90aWZ5QWJv
cnQoKTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoY29uZmlnLnZlcmlmeURhdGEg
JiYgIXZlcmlmeUFycmF5QnVmZmVyKGV2ZW50LmRhdGEsIDB4NjEpKSB7Ci0gICAgICBjb25maWcu
YWRkVG9Mb2coJ1Jlc3BvbnNlIHZlcmlmaWNhdGlvbiBmYWlsZWQnKTsKLSAgICAgIGRlc3Ryb3lB
bGxTb2NrZXRzKCk7Ci0gICAgICBjb25maWcubm90aWZ5QWJvcnQoKTsKLSAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICB0b3RhbFJlcGxpZWQgKz0gYnl0ZXNSZWNlaXZlZDsKLQotICAgIGlmICh0
b3RhbFJlcGxpZWQgPCB0b3RhbFNpemUpIHsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBj
YWxjdWxhdGVBbmRMb2dSZXN1bHQoY29uZmlnLCBzaXplLCBiZW5jaG1hcmsuc3RhcnRUaW1lSW5N
cywgdG90YWxTaXplLAotICAgICAgICBpc1dhcm1VcCk7Ci0KLSAgICBydW5OZXh0VGFzayhjb25m
aWcpOwotICB9OwotCi0gIGZvciAodmFyIGkgPSAwOyBpIDwgc29ja2V0cy5sZW5ndGg7ICsraSkg
ewotICAgIHZhciBzb2NrZXQgPSBzb2NrZXRzW2ldOwotICAgIHNvY2tldC5iaW5hcnlUeXBlID0g
J2FycmF5YnVmZmVyJzsKLSAgICBzb2NrZXQub25tZXNzYWdlID0gb25NZXNzYWdlSGFuZGxlcjsK
LSAgfQotCi0gIGJlbmNobWFyay5zdGFydFRpbWVJbk1zID0gZ2V0VGltZVN0YW1wKCk7Ci0KLSAg
dmFyIHNvY2tldEluZGV4ID0gMDsKLSAgd2hpbGUgKHRvdGFsU2l6ZSA8IGNvbmZpZy5taW5Ub3Rh
bCkgewotICAgIHNvY2tldHNbc29ja2V0SW5kZXhdLnNlbmQoJ3JlY2VpdmUgJyArIHNpemUpOwot
ICAgIHNvY2tldEluZGV4ID0gKHNvY2tldEluZGV4ICsgMSkgJSBzb2NrZXRzLmxlbmd0aDsKLQot
ICAgIHRvdGFsU2l6ZSArPSBzaXplOwotICB9Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZVNvY2tldChj
b25maWcpIHsKLSAgLy8gVE9ETyh0eW9zaGlubyk6IEFkZCBUQ1Agd2FybSB1cC4KLSAgdmFyIHVy
bCA9IGNvbmZpZy5wcmVmaXhVcmw7Ci0KLSAgY29uZmlnLmFkZFRvTG9nKCdDb25uZWN0ICcgKyB1
cmwpOwotCi0gIHZhciBzb2NrZXQgPSBuZXcgV2ViU29ja2V0KHVybCk7Ci0gIHNvY2tldC5vbm1l
c3NhZ2UgPSBmdW5jdGlvbihldmVudCkgewotICAgIGNvbmZpZy5hZGRUb0xvZygnVW5leHBlY3Rl
ZCBtZXNzYWdlIHJlY2VpdmVkLiBBYm9ydGluZy4nKTsKLSAgfTsKLSAgc29ja2V0Lm9uZXJyb3Ig
PSBmdW5jdGlvbigpIHsKLSAgICBjb25maWcuYWRkVG9Mb2coJ0Vycm9yJyk7Ci0gIH07Ci0gIHNv
Y2tldC5vbmNsb3NlID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICBjb25maWcuYWRkVG9Mb2coJ0Ns
b3NlZCcpOwotICAgIGNvbmZpZy5ub3RpZnlBYm9ydCgpOwotICB9OwotICByZXR1cm4gc29ja2V0
OwotfQotCi1mdW5jdGlvbiBzdGFydEJlbmNobWFyayhjb25maWcpIHsKLSAgY2xlYXJUaW1lb3V0
KHRpbWVySUQpOwotICBkZXN0cm95QWxsU29ja2V0cygpOwotCi0gIG51bUVzdGFibGlzaGVkU29j
a2V0cyA9IDA7Ci0KLSAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb25maWcubnVtU29ja2V0czsgKytp
KSB7Ci0gICAgdmFyIHNvY2tldCA9IGNyZWF0ZVNvY2tldChjb25maWcpOwotICAgIHNvY2tldC5v
bm9wZW4gPSBmdW5jdGlvbigpIHsKLSAgICAgIGNvbmZpZy5hZGRUb0xvZygnT3BlbmVkJyk7Ci0K
LSAgICAgICsrbnVtRXN0YWJsaXNoZWRTb2NrZXRzOwotCi0gICAgICBpZiAobnVtRXN0YWJsaXNo
ZWRTb2NrZXRzID09IHNvY2tldHMubGVuZ3RoKSB7Ci0gICAgICAgIHJ1bk5leHRUYXNrKGNvbmZp
Zyk7Ci0gICAgICB9Ci0gICAgfTsKLSAgICBzb2NrZXRzLnB1c2goc29ja2V0KTsKLSAgfQotfQot
Ci1mdW5jdGlvbiBnZXRDb25maWdTdHJpbmcoY29uZmlnKSB7Ci0gIHJldHVybiAnKFdlYlNvY2tl
dCcgKwotICAgICcsICcgKyAodHlwZW9mIGltcG9ydFNjcmlwdHMgIT09ICJ1bmRlZmluZWQiID8g
J1dvcmtlcicgOiAnTWFpbicpICsKLSAgICAnLCBudW1Tb2NrZXRzPScgKyBjb25maWcubnVtU29j
a2V0cyArCi0gICAgJywgbnVtSXRlcmF0aW9ucz0nICsgY29uZmlnLm51bUl0ZXJhdGlvbnMgKwot
ICAgICcsIHZlcmlmeURhdGE9JyArIGNvbmZpZy52ZXJpZnlEYXRhICsKLSAgICAnLCBtaW5Ub3Rh
bD0nICsgY29uZmlnLm1pblRvdGFsICsKLSAgICAnLCBudW1XYXJtVXBJdGVyYXRpb25zPScgKyBj
b25maWcubnVtV2FybVVwSXRlcmF0aW9ucyArCi0gICAgJyknOwotfQotCi1mdW5jdGlvbiBiYXRj
aEJlbmNobWFyayhjb25maWcpIHsKLSAgY29uZmlnLmFkZFRvTG9nKCdCYXRjaCBiZW5jaG1hcmsn
KTsKLSAgY29uZmlnLmFkZFRvTG9nKGJ1aWxkTGVnZW5kU3RyaW5nKGNvbmZpZykpOwotCi0gIHRh
c2tzID0gW107Ci0gIGNsZWFyQXZlcmFnZURhdGEoKTsKLSAgYWRkVGFza3MoY29uZmlnLCBzZW5k
QmVuY2htYXJrU3RlcCk7Ci0gIGFkZFJlc3VsdFJlcG9ydGluZ1Rhc2soY29uZmlnLCAnU2VuZCBC
ZW5jaG1hcmsgJyArIGdldENvbmZpZ1N0cmluZyhjb25maWcpKTsKLSAgYWRkVGFza3MoY29uZmln
LCByZWNlaXZlQmVuY2htYXJrU3RlcCk7Ci0gIGFkZFJlc3VsdFJlcG9ydGluZ1Rhc2soY29uZmln
LCAnUmVjZWl2ZSBCZW5jaG1hcmsgJyArCi0gICAgICBnZXRDb25maWdTdHJpbmcoY29uZmlnKSk7
Ci0gIHN0YXJ0QmVuY2htYXJrKGNvbmZpZyk7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFudXAoKSB7Ci0g
IGRlc3Ryb3lBbGxTb2NrZXRzKCk7Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvYmVuY2ht
YXJrX2hlbHBlcl93c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvYmVuY2htYXJrX2hlbHBlcl93c2gucHkK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0YWQwYmZlZWZjNmY0NDMwNTcxYjdiNTMy
MzNmYjc5NTA2MTRjZjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC9leGFtcGxlL2JlbmNobWFya19oZWxwZXJfd3NoLnB5CisrKyAvZGV2L251bGwK
QEAgLTEsODUgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAxMywgR29vZ2xlIEluYy4KLSMgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0Ogot
IwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiSGFuZGxlciBmb3IgYmVu
Y2htYXJrLmh0bWwuIiIiCi0KLQotZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJl
cXVlc3QpOgotICAgICMgVHVybiBvZmYgY29tcHJlc3Npb24uCi0gICAgcmVxdWVzdC53c19leHRl
bnNpb25fcHJvY2Vzc29ycyA9IFtdCi0KLQotZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShy
ZXF1ZXN0KToKLSAgICBkYXRhID0gJycKLQotICAgIHdoaWxlIFRydWU6Ci0gICAgICAgIGNvbW1h
bmQgPSByZXF1ZXN0LndzX3N0cmVhbS5yZWNlaXZlX21lc3NhZ2UoKQotICAgICAgICBpZiBjb21t
YW5kIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBpZiBub3QgaXNpbnN0
YW5jZShjb21tYW5kLCB1bmljb2RlKToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0lu
dmFsaWQgY29tbWFuZCBkYXRhOicgKyBjb21tYW5kKQotICAgICAgICBjb21tYW5kcyA9IGNvbW1h
bmQuc3BsaXQoJyAnKQotICAgICAgICBpZiBsZW4oY29tbWFuZHMpID09IDA6Ci0gICAgICAgICAg
ICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIGNvbW1hbmQgZGF0YTogJyArIGNvbW1hbmQpCi0K
LSAgICAgICAgaWYgY29tbWFuZHNbMF0gPT0gJ3JlY2VpdmUnOgotICAgICAgICAgICAgaWYgbGVu
KGNvbW1hbmRzKSAhPSAyOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0gICAg
ICAgICAgICAgICAgICAgICAgICAnSWxsZWdhbCBudW1iZXIgb2YgYXJndW1lbnRzIGZvciBzZW5k
IGNvbW1hbmQnICsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQpCi0gICAgICAgICAg
ICBzaXplID0gaW50KGNvbW1hbmRzWzFdKQotCi0gICAgICAgICAgICAjIFJldXNlIGRhdGEgaWYg
cG9zc2libGUuCi0gICAgICAgICAgICBpZiBsZW4oZGF0YSkgIT0gc2l6ZToKLSAgICAgICAgICAg
ICAgICBkYXRhID0gJ2EnICogc2l6ZQotICAgICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2Vu
ZF9tZXNzYWdlKGRhdGEsIGJpbmFyeT1UcnVlKQotICAgICAgICBlbGlmIGNvbW1hbmRzWzBdID09
ICdzZW5kJzoKLSAgICAgICAgICAgIGlmIGxlbihjb21tYW5kcykgIT0gMjoKLSAgICAgICAgICAg
ICAgICByYWlzZSBWYWx1ZUVycm9yKAotICAgICAgICAgICAgICAgICAgICAgICAgJ0lsbGVnYWwg
bnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgcmVjZWl2ZSBjb21tYW5kJyArCi0gICAgICAgICAgICAg
ICAgICAgICAgICBjb21tYW5kKQotICAgICAgICAgICAgdmVyaWZ5X2RhdGEgPSBjb21tYW5kc1sx
XSA9PSAnMScKLQotICAgICAgICAgICAgZGF0YSA9IHJlcXVlc3Qud3Nfc3RyZWFtLnJlY2VpdmVf
bWVzc2FnZSgpCi0gICAgICAgICAgICBpZiBkYXRhIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAg
cmFpc2UgVmFsdWVFcnJvcignUGF5bG9hZCBub3QgcmVjZWl2ZWQnKQotICAgICAgICAgICAgc2l6
ZSA9IGxlbihkYXRhKQotCi0gICAgICAgICAgICBpZiB2ZXJpZnlfZGF0YToKLSAgICAgICAgICAg
ICAgICBpZiBkYXRhICE9ICdhJyAqIHNpemU6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIFZh
bHVlRXJyb3IoJ1BheWxvYWQgdmVyaWZpY2F0aW9uIGZhaWxlZCcpCi0KLSAgICAgICAgICAgIHJl
cXVlc3Qud3Nfc3RyZWFtLnNlbmRfbWVzc2FnZShzdHIoc2l6ZSkpCi0gICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIGNvbW1hbmQ6ICcgKyBjb21tYW5k
c1swXSkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS9j
bG9zZV93c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvY2xvc2Vfd3NoLnB5CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAyNmIwODM4NDA4MTI0NTM5Nzk3NjU3ZDQwZDY0Mjc4ZjFhNjQ4MWMwLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBs
ZS9jbG9zZV93c2gucHkKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0jIENvcHlyaWdo
dCAyMDEyLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMg
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLQotaW1wb3J0IHN0cnVjdAotCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29t
bW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgc3RyZWFtCi0KLQotZGVmIHdlYl9zb2Nr
ZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgotICAgIHBhc3MKLQotCi1kZWYgd2ViX3Nv
Y2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgotICAgIHdoaWxlIFRydWU6Ci0gICAgICAgIGxp
bmUgPSByZXF1ZXN0LndzX3N0cmVhbS5yZWNlaXZlX21lc3NhZ2UoKQotICAgICAgICBpZiBsaW5l
IGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgY29kZSwgcmVhc29uID0gbGlu
ZS5zcGxpdCgnICcsIDEpCi0gICAgICAgIGlmIGNvZGUgaXMgTm9uZSBvciByZWFzb24gaXMgTm9u
ZToKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5jbG9zZV9j
b25uZWN0aW9uKGludChjb2RlKSwgcmVhc29uKQotICAgICAgICAjIGNsb3NlX2Nvbm5lY3Rpb24o
KSBpbml0aWF0ZXMgY2xvc2luZyBoYW5kc2hha2UuIEl0IHZhbGlkYXRlcyBjb2RlCi0gICAgICAg
ICMgYW5kIHJlYXNvbi4gSWYgeW91IHdhbnQgdG8gc2VuZCBhIGJyb2tlbiBjbG9zZSBmcmFtZSBm
b3IgYSB0ZXN0LAotICAgICAgICAjIGZvbGxvd2luZyBjb2RlIHdpbGwgYmUgdXNlZnVsLgotICAg
ICAgICAjID4gZGF0YSA9IHN0cnVjdC5wYWNrKCchSCcsIGludChjb2RlKSkgKyByZWFzb24uZW5j
b2RlKCdVVEYtOCcpCi0gICAgICAgICMgPiByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoc3RyZWFt
LmNyZWF0ZV9jbG9zZV9mcmFtZShkYXRhKSkKLSAgICAgICAgIyA+ICMgU3VwcHJlc3MgdG8gcmUt
cmVzcG9uZCBjbGllbnQgcmVzcG9uZGluZyBjbG9zZSBmcmFtZS4KLSAgICAgICAgIyA+IHJhaXNl
IEV4Y2VwdGlvbigiY3VzdG9taXplZCBzZXJ2ZXIgaW5pdGlhdGVkIGNsb3NpbmcgaGFuZHNoYWtl
IikKLQotCi1kZWYgd2ViX3NvY2tldF9wYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlKHJlcXVlc3Qp
OgotICAgICMgU2ltcGx5IGVjaG8gYSBjbG9zZSBzdGF0dXMgY29kZQotICAgIGNvZGUsIHJlYXNv
biA9IHJlcXVlc3Qud3NfY2xvc2VfY29kZSwgcmVxdWVzdC53c19jbG9zZV9yZWFzb24KLQotICAg
ICMgcHl3ZWJzb2NrZXQgc2V0cyBwc2V1ZG8gY29kZSBmb3IgcmVjZWl2aW5nIGFuIGVtcHR5IGJv
ZHkgY2xvc2UgZnJhbWUuCi0gICAgaWYgY29kZSA9PSBjb21tb24uU1RBVFVTX05PX1NUQVRVU19S
RUNFSVZFRDoKLSAgICAgICAgY29kZSA9IE5vbmUKLSAgICAgICAgcmVhc29uID0gJycKLSAgICBy
ZXR1cm4gY29kZSwgcmVhc29uCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29j
a2V0L2V4YW1wbGUvY29uc29sZS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2NvbnNvbGUuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2NkNmQ4ZjgwNjc2Yjk5OTFlMjJkZmM3ZWM4NTA4
MzQxMWRkZDBiMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L2V4YW1wbGUvY29uc29sZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzE3ICswLDAg
QEAKLTwhLS0KLUNvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgotQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLQotUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci1tb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi1tZXQ6Ci0KLSAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci1ub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCi1jb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCi1pbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi1kaXN0cmlidXRpb24uCi0gICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi1jb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQotdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLQotVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLUxJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLU9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi1EQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLVRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLShJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS0tPgotCi08IS0tCi1BIHNpbXBsZSBjb25z
b2xlIGZvciB0ZXN0aW5nIFdlYlNvY2tldCBzZXJ2ZXIuCi0KLVR5cGUgYW4gYWRkcmVzcyBpbnRv
IHRoZSB0b3AgdGV4dCBpbnB1dCBhbmQgY2xpY2sgY29ubmVjdCB0byBlc3RhYmxpc2gKLVdlYlNv
Y2tldC4gVGhlbiwgdHlwZSBzb21lIG1lc3NhZ2UgaW50byB0aGUgYm90dG9tIHRleHQgaW5wdXQg
YW5kIGNsaWNrIHNlbmQKLXRvIHNlbmQgdGhlIG1lc3NhZ2UuIFJlY2VpdmVkL3NlbnQgbWVzc2Fn
ZXMgYW5kIGNvbm5lY3Rpb24gc3RhdGUgd2lsbCBiZSBzaG93bgotb24gdGhlIG1pZGRsZSB0ZXh0
YXJlYS4KLS0tPgotCi08aHRtbD4KLTxoZWFkPgotPHRpdGxlPldlYlNvY2tldCBjb25zb2xlPC90
aXRsZT4KLTxzY3JpcHQ+Ci12YXIgc29ja2V0ID0gbnVsbDsKLQotdmFyIHNob3dUaW1lU3RhbXAg
PSBmYWxzZTsKLQotdmFyIGFkZHJlc3NCb3ggPSBudWxsOwotdmFyIHByb3RvY29sc0JveCA9IG51
bGw7Ci12YXIgbG9nQm94ID0gbnVsbDsKLXZhciBtZXNzYWdlQm94ID0gbnVsbDsKLXZhciBmaWxl
Qm94ID0gbnVsbDsKLXZhciBjb2RlQm94ID0gbnVsbDsKLXZhciByZWFzb25Cb3ggPSBudWxsOwot
Ci1mdW5jdGlvbiBnZXRUaW1lU3RhbXAoKSB7Ci0gIHJldHVybiBuZXcgRGF0ZSgpLmdldFRpbWUo
KTsKLX0KLQotZnVuY3Rpb24gYWRkVG9Mb2cobG9nKSB7Ci0gIGlmIChzaG93VGltZVN0YW1wKSB7
Ci0gICAgbG9nQm94LnZhbHVlICs9ICdbJyArIGdldFRpbWVTdGFtcCgpICsgJ10gJzsKLSAgfQot
ICBsb2dCb3gudmFsdWUgKz0gbG9nICsgJ1xuJwotICAvLyBMYXJnZSBlbm91Z2ggdG8ga2VlcCBz
aG93aW5nIHRoZSBsYXRlc3QgbWVzc2FnZS4KLSAgbG9nQm94LnNjcm9sbFRvcCA9IDEwMDAwMDA7
Ci19Ci0KLWZ1bmN0aW9uIHNldGJpbmFyeXR5cGUoYmluYXJ5VHlwZSkgewotICBpZiAoIXNvY2tl
dCkgewotICAgIGFkZFRvTG9nKCdOb3QgY29ubmVjdGVkJyk7Ci0gICAgcmV0dXJuOwotICB9Ci0K
LSAgc29ja2V0LmJpbmFyeVR5cGUgPSBiaW5hcnlUeXBlOwotICBhZGRUb0xvZygnU2V0IGJpbmFy
eVR5cGUgdG8gJyArIGJpbmFyeVR5cGUpOwotfQotCi1mdW5jdGlvbiBzZW5kKCkgewotICBpZiAo
IXNvY2tldCkgewotICAgIGFkZFRvTG9nKCdOb3QgY29ubmVjdGVkJyk7Ci0gICAgcmV0dXJuOwot
ICB9Ci0KLSAgc29ja2V0LnNlbmQobWVzc2FnZUJveC52YWx1ZSk7Ci0gIGFkZFRvTG9nKCc+ICcg
KyBtZXNzYWdlQm94LnZhbHVlKTsKLSAgbWVzc2FnZUJveC52YWx1ZSA9ICcnOwotfQotCi1mdW5j
dGlvbiBzZW5kZmlsZSgpIHsKLSAgaWYgKCFzb2NrZXQpIHsKLSAgICBhZGRUb0xvZygnTm90IGNv
bm5lY3RlZCcpOwotICAgIHJldHVybjsKLSAgfQotCi0gIHZhciBmaWxlcyA9IGZpbGVCb3guZmls
ZXM7Ci0KLSAgaWYgKGZpbGVzLmxlbmd0aCA9PSAwKSB7Ci0gICAgYWRkVG9Mb2coJ0ZpbGUgbm90
IHNlbGVjdGVkJyk7Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAgc29ja2V0LnNlbmQoZmlsZXNbMF0p
OwotICBhZGRUb0xvZygnPiBTZW5kICcgKyBmaWxlc1swXS5uYW1lKTsKLX0KLQotZnVuY3Rpb24g
cGFyc2VQcm90b2NvbHMocHJvdG9jb2xzVGV4dCkgewotICB2YXIgcHJvdG9jb2xzID0gcHJvdG9j
b2xzVGV4dC5zcGxpdCgnLCcpOwotICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3RvY29scy5sZW5n
dGg7ICsraSkgewotICAgIHByb3RvY29sc1tpXSA9IHByb3RvY29sc1tpXS50cmltKCk7Ci0gIH0K
LQotICBpZiAocHJvdG9jb2xzLmxlbmd0aCA9PSAwKSB7Ci0gICAgLy8gRG9uJ3QgcGFzcy4KLSAg
ICBwcm90b2NvbHMgPSBudWxsOwotICB9IGVsc2UgaWYgKHByb3RvY29scy5sZW5ndGggPT0gMSkg
ewotICAgIGlmIChwcm90b2NvbHNbMF0ubGVuZ3RoID09IDApIHsKLSAgICAgIC8vIERvbid0IHBh
c3MuCi0gICAgICBwcm90b2NvbHMgPSBudWxsOwotICAgIH0gZWxzZSB7Ci0gICAgICAvLyBQYXNz
IGFzIGEgc3RyaW5nLgotICAgICAgcHJvdG9jb2xzID0gcHJvdG9jb2xzWzBdOwotICAgIH0KLSAg
fQotCi0gIHJldHVybiBwcm90b2NvbHM7Ci19Ci0KLWZ1bmN0aW9uIGNvbm5lY3QoKSB7Ci0gIHZh
ciB1cmwgPSBhZGRyZXNzQm94LnZhbHVlOwotICB2YXIgcHJvdG9jb2xzID0gcGFyc2VQcm90b2Nv
bHMocHJvdG9jb2xzQm94LnZhbHVlKTsKLQotICBpZiAoJ1dlYlNvY2tldCcgaW4gd2luZG93KSB7
Ci0gICAgaWYgKHByb3RvY29scykgewotICAgICAgc29ja2V0ID0gbmV3IFdlYlNvY2tldCh1cmws
IHByb3RvY29scyk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHNvY2tldCA9IG5ldyBXZWJTb2NrZXQo
dXJsKTsKLSAgICB9Ci0gIH0gZWxzZSB7Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAgc29ja2V0Lm9u
b3BlbiA9IGZ1bmN0aW9uICgpIHsKLSAgICB2YXIgZXh0cmFJbmZvID0gW107Ci0gICAgaWYgKCgn
cHJvdG9jb2wnIGluIHNvY2tldCkgJiYgc29ja2V0LnByb3RvY29sKSB7Ci0gICAgICBleHRyYUlu
Zm8ucHVzaCgncHJvdG9jb2wgPSAnICsgc29ja2V0LnByb3RvY29sKTsKLSAgICB9Ci0gICAgaWYg
KCgnZXh0ZW5zaW9ucycgaW4gc29ja2V0KSAmJiBzb2NrZXQuZXh0ZW5zaW9ucykgewotICAgICAg
ZXh0cmFJbmZvLnB1c2goJ2V4dGVuc2lvbnMgPSAnICsgc29ja2V0LmV4dGVuc2lvbnMpOwotICAg
IH0KLQotICAgIHZhciBsb2dNZXNzYWdlID0gJ09wZW5lZCc7Ci0gICAgaWYgKGV4dHJhSW5mby5s
ZW5ndGggPiAwKSB7Ci0gICAgICBsb2dNZXNzYWdlICs9ICcgKCcgKyBleHRyYUluZm8uam9pbign
LCAnKSArICcpJzsKLSAgICB9Ci0gICAgYWRkVG9Mb2cobG9nTWVzc2FnZSk7Ci0gIH07Ci0gIHNv
Y2tldC5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICBpZiAoKCdBcnJheUJ1ZmZl
cicgaW4gd2luZG93KSAmJiAoZXZlbnQuZGF0YSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSkgewot
ICAgICAgYWRkVG9Mb2coJzwgUmVjZWl2ZWQgYW4gQXJyYXlCdWZmZXIgb2YgJyArIGV2ZW50LmRh
dGEuYnl0ZUxlbmd0aCArCi0gICAgICAgICAgICAgICAnIGJ5dGVzJykKLSAgICB9IGVsc2UgaWYg
KCgnQmxvYicgaW4gd2luZG93KSAmJiAoZXZlbnQuZGF0YSBpbnN0YW5jZW9mIEJsb2IpKSB7Ci0g
ICAgICBhZGRUb0xvZygnPCBSZWNlaXZlZCBhIEJsb2Igb2YgJyArIGV2ZW50LmRhdGEuc2l6ZSAr
ICcgYnl0ZXMnKQotICAgIH0gZWxzZSB7Ci0gICAgICBhZGRUb0xvZygnPCAnICsgZXZlbnQuZGF0
YSk7Ci0gICAgfQotICB9OwotICBzb2NrZXQub25lcnJvciA9IGZ1bmN0aW9uICgpIHsKLSAgICBh
ZGRUb0xvZygnRXJyb3InKTsKLSAgfTsKLSAgc29ja2V0Lm9uY2xvc2UgPSBmdW5jdGlvbiAoZXZl
bnQpIHsKLSAgICB2YXIgbG9nTWVzc2FnZSA9ICdDbG9zZWQgKCc7Ci0gICAgaWYgKChhcmd1bWVu
dHMubGVuZ3RoID09IDEpICYmICgnQ2xvc2VFdmVudCcgaW4gd2luZG93KSAmJgotICAgICAgICAo
ZXZlbnQgaW5zdGFuY2VvZiBDbG9zZUV2ZW50KSkgewotICAgICAgbG9nTWVzc2FnZSArPSAnd2Fz
Q2xlYW4gPSAnICsgZXZlbnQud2FzQ2xlYW47Ci0gICAgICAvLyBjb2RlIGFuZCByZWFzb24gYXJl
IHByZXNlbnQgb25seSBmb3IKLSAgICAgIC8vIGRyYWZ0LWlldGYtaHliaS10aGV3ZWJzb2NrZXRw
cm90b2NvbC0wNiBhbmQgbGF0ZXIKLSAgICAgIGlmICgnY29kZScgaW4gZXZlbnQpIHsKLSAgICAg
ICAgbG9nTWVzc2FnZSArPSAnLCBjb2RlID0gJyArIGV2ZW50LmNvZGU7Ci0gICAgICB9Ci0gICAg
ICBpZiAoJ3JlYXNvbicgaW4gZXZlbnQpIHsKLSAgICAgICAgbG9nTWVzc2FnZSArPSAnLCByZWFz
b24gPSAnICsgZXZlbnQucmVhc29uOwotICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICBsb2dN
ZXNzYWdlICs9ICdDbG9zZUV2ZW50IGlzIG5vdCBhdmFpbGFibGUnOwotICAgIH0KLSAgICBhZGRU
b0xvZyhsb2dNZXNzYWdlICsgJyknKTsKLSAgfTsKLQotICBpZiAocHJvdG9jb2xzKSB7Ci0gICAg
YWRkVG9Mb2coJ0Nvbm5lY3QgJyArIHVybCArICcgKHByb3RvY29scyA9ICcgKyBwcm90b2NvbHMg
KyAnKScpOwotICB9IGVsc2UgewotICAgIGFkZFRvTG9nKCdDb25uZWN0ICcgKyB1cmwpOwotICB9
Ci19Ci0KLWZ1bmN0aW9uIGNsb3NlU29ja2V0KCkgewotICBpZiAoIXNvY2tldCkgewotICAgIGFk
ZFRvTG9nKCdOb3QgY29ubmVjdGVkJyk7Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAgaWYgKGNvZGVC
b3gudmFsdWUgfHwgcmVhc29uQm94LnZhbHVlKSB7Ci0gICAgc29ja2V0LmNsb3NlKGNvZGVCb3gu
dmFsdWUsIHJlYXNvbkJveC52YWx1ZSk7Ci0gIH0gZWxzZSB7Ci0gICAgc29ja2V0LmNsb3NlKCk7
Ci0gIH0KLX0KLQotZnVuY3Rpb24gcHJpbnRTdGF0ZSgpIHsKLSAgaWYgKCFzb2NrZXQpIHsKLSAg
ICBhZGRUb0xvZygnTm90IGNvbm5lY3RlZCcpOwotICAgIHJldHVybjsKLSAgfQotCi0gIGFkZFRv
TG9nKAotICAgICAgJ3VybCA9ICcgKyBzb2NrZXQudXJsICsKLSAgICAgICcsIHJlYWR5U3RhdGUg
PSAnICsgc29ja2V0LnJlYWR5U3RhdGUgKwotICAgICAgJywgYnVmZmVyZWRBbW91bnQgPSAnICsg
c29ja2V0LmJ1ZmZlcmVkQW1vdW50KTsKLX0KLQotZnVuY3Rpb24gaW5pdCgpIHsKLSAgdmFyIHNj
aGVtZSA9IHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCA9PSAnaHR0cHM6JyA/ICd3c3M6Ly8nIDog
J3dzOi8vJzsKLSAgdmFyIGRlZmF1bHRBZGRyZXNzID0gc2NoZW1lICsgd2luZG93LmxvY2F0aW9u
Lmhvc3QgKyAnL2VjaG8nOwotCi0gIGFkZHJlc3NCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnYWRkcmVzcycpOwotICBwcm90b2NvbHNCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
cHJvdG9jb2xzJyk7Ci0gIGxvZ0JveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2cnKTsK
LSAgbWVzc2FnZUJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtZXNzYWdlJyk7Ci0gIGZp
bGVCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmlsZScpOwotICBjb2RlQm94ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvZGUnKTsKLSAgcmVhc29uQm94ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3JlYXNvbicpOwotCi0gIGFkZHJlc3NCb3gudmFsdWUgPSBkZWZhdWx0QWRk
cmVzczsKLQotICBpZiAoISgnV2ViU29ja2V0JyBpbiB3aW5kb3cpKSB7Ci0gICAgYWRkVG9Mb2co
J1dlYlNvY2tldCBpcyBub3QgYXZhaWxhYmxlJyk7Ci0gIH0KLX0KLTwvc2NyaXB0PgotPHN0eWxl
IHR5cGU9InRleHQvY3NzIj4KLWZvcm0gewotICBtYXJnaW46IDBweDsKLX0KLQotI2Nvbm5lY3Rf
ZGl2LCAjbG9nX2RpdiwgI3NlbmRfZGl2LCAjc2VuZGZpbGVfZGl2LCAjY2xvc2VfZGl2LCAjcHJp
bnRzdGF0ZV9kaXYgewotICBwYWRkaW5nOiA1cHg7Ci0gIG1hcmdpbjogNXB4OwotICBib3JkZXIt
d2lkdGg6IDBweCAwcHggMHB4IDEwcHg7Ci0gIGJvcmRlci1zdHlsZTogc29saWQ7Ci0gIGJvcmRl
ci1jb2xvcjogc2lsdmVyOwotfQotPC9zdHlsZT4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0iaW5p
dCgpIj4KLQotPGRpdj4KLQotPGRpdiBpZD0iY29ubmVjdF9kaXYiPgotICA8Zm9ybSBhY3Rpb249
IiMiIG9uc3VibWl0PSJjb25uZWN0KCk7IHJldHVybiBmYWxzZTsiPgotICAgIHVybCA8aW5wdXQg
dHlwZT0idGV4dCIgaWQ9ImFkZHJlc3MiIHNpemU9IjQwIj4KLSAgICA8aW5wdXQgdHlwZT0ic3Vi
bWl0IiB2YWx1ZT0iY29ubmVjdCI+Ci0gICAgPGJyLz4KLSAgICBwcm90b2NvbHMgPGlucHV0IHR5
cGU9InRleHQiIGlkPSJwcm90b2NvbHMiIHNpemU9IjIwIj4KLSAgPC9mb3JtPgotPC9kaXY+Ci0K
LTxkaXYgaWQ9ImxvZ19kaXYiPgotICA8dGV4dGFyZWEgaWQ9ImxvZyIgcm93cz0iMTAiIGNvbHM9
IjQwIiByZWFkb25seT48L3RleHRhcmVhPgotICA8YnIvPgotICA8aW5wdXQgdHlwZT0iY2hlY2ti
b3giCi0gICAgICAgICBuYW1lPSJzaG93dGltZXN0YW1wIgotICAgICAgICAgdmFsdWU9InNob3d0
aW1lc3RhbXAiCi0gICAgICAgICBvbmNsaWNrPSJzaG93VGltZVN0YW1wID0gdGhpcy5jaGVja2Vk
Ij5TaG93IHRpbWUgc3RhbXAKLTwvZGl2PgotCi08ZGl2IGlkPSJzZW5kX2RpdiI+Ci0gIDxmb3Jt
IGFjdGlvbj0iIyIgb25zdWJtaXQ9InNlbmQoKTsgcmV0dXJuIGZhbHNlOyI+Ci0gICAgZGF0YSA8
aW5wdXQgdHlwZT0idGV4dCIgaWQ9Im1lc3NhZ2UiIHNpemU9IjQwIj4KLSAgICA8aW5wdXQgdHlw
ZT0ic3VibWl0IiB2YWx1ZT0ic2VuZCI+Ci0gIDwvZm9ybT4KLTwvZGl2PgotCi08ZGl2IGlkPSJz
ZW5kZmlsZV9kaXYiPgotICA8Zm9ybSBhY3Rpb249IiMiIG9uc3VibWl0PSJzZW5kZmlsZSgpOyBy
ZXR1cm4gZmFsc2U7Ij4KLSAgICA8aW5wdXQgdHlwZT0iZmlsZSIgaWQ9ImZpbGUiIHNpemU9IjQw
Ij4KLSAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0ic2VuZCBmaWxlIj4KLSAgPC9mb3Jt
PgotCi0gIFNldCBiaW5hcnlUeXBlCi0gIDxpbnB1dCB0eXBlPSJyYWRpbyIKLSAgICAgICAgIG5h
bWU9ImJpbmFyeXR5cGUiCi0gICAgICAgICB2YWx1ZT0iYmxvYiIKLSAgICAgICAgIG9uY2xpY2s9
InNldGJpbmFyeXR5cGUoJ2Jsb2InKSIgY2hlY2tlZD5ibG9iCi0gIDxpbnB1dCB0eXBlPSJyYWRp
byIKLSAgICAgICAgIG5hbWU9ImJpbmFyeXR5cGUiCi0gICAgICAgICB2YWx1ZT0iYXJyYXlidWZm
ZXIiCi0gICAgICAgICBvbmNsaWNrPSJzZXRiaW5hcnl0eXBlKCdhcnJheWJ1ZmZlcicpIj5hcnJh
eWJ1ZmZlcgotPC9kaXY+Ci0KLTxkaXYgaWQ9ImNsb3NlX2RpdiI+Ci0gIDxmb3JtIGFjdGlvbj0i
IyIgb25zdWJtaXQ9ImNsb3NlU29ja2V0KCk7IHJldHVybiBmYWxzZTsiPgotICAgIGNvZGUgPGlu
cHV0IHR5cGU9InRleHQiIGlkPSJjb2RlIiBzaXplPSIxMCI+Ci0gICAgcmVhc29uIDxpbnB1dCB0
eXBlPSJ0ZXh0IiBpZD0icmVhc29uIiBzaXplPSIyMCI+Ci0gICAgPGlucHV0IHR5cGU9InN1Ym1p
dCIgdmFsdWU9ImNsb3NlIj4KLSAgPC9mb3JtPgotPC9kaXY+Ci0KLTxkaXYgaWQ9InByaW50c3Rh
dGVfZGl2Ij4KLSAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9InByaW50IHN0YXRlIiBvbmNs
aWNrPSJwcmludFN0YXRlKCk7Ij4KLTwvZGl2PgotCi08L2Rpdj4KLQotPC9ib2R5PgotPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2Nvb2tpZV93c2gucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUv
Y29va2llX3dzaC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGIzMjcxNTJlNzAx
ZjdkMjAzMWQ3YzljZTA0NjI0Y2ZhODRhYzE2ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvY29va2llX3dzaC5weQorKysgL2Rldi9u
dWxsCkBAIC0xLDMyICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMTQgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSMKLSMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUKLSMgbGljZW5zZSB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgQ09QWUlO
RyBmaWxlIG9yIGF0Ci0jIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL29wZW4tc291cmNl
L2xpY2Vuc2VzL2JzZAotCi0KLWltcG9ydCB1cmxwYXJzZQotCi0KLWRlZiBfYWRkX3NldF9jb29r
aWUocmVxdWVzdCwgdmFsdWUpOgotICAgIHJlcXVlc3QuZXh0cmFfaGVhZGVycy5hcHBlbmQoKCdT
ZXQtQ29va2llJywgdmFsdWUpKQotCi0KLWRlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFr
ZShyZXF1ZXN0KToKLSAgICBjb21wb25lbnRzID0gdXJscGFyc2UudXJscGFyc2UocmVxdWVzdC51
cmkpCi0gICAgY29tbWFuZCA9IGNvbXBvbmVudHNbNF0KLQotICAgIE9ORV9EQVlfTElGRSA9ICdN
YXgtQWdlPTg2NDAwJwotCi0gICAgaWYgY29tbWFuZCA9PSAnc2V0JzoKLSAgICAgICAgX2FkZF9z
ZXRfY29va2llKHJlcXVlc3QsICc7ICcuam9pbihbJ2Zvbz1iYXInLCBPTkVfREFZX0xJRkVdKSkK
LSAgICBlbGlmIGNvbW1hbmQgPT0gJ3NldF9odHRwb25seSc6Ci0gICAgICAgIF9hZGRfc2V0X2Nv
b2tpZShyZXF1ZXN0LAotICAgICAgICAgICAgJzsgJy5qb2luKFsnaHR0cE9ubHlGb289YmFyJywg
T05FX0RBWV9MSUZFLCAnaHR0cE9ubHknXSkpCi0gICAgZWxpZiBjb21tYW5kID09ICdjbGVhcic6
Ci0gICAgICAgIF9hZGRfc2V0X2Nvb2tpZShyZXF1ZXN0LCAnZm9vPTA7IE1heC1BZ2U9MCcpCi0g
ICAgICAgIF9hZGRfc2V0X2Nvb2tpZShyZXF1ZXN0LCAnaHR0cE9ubHlGb289MDsgTWF4LUFnZT0w
JykKLQotCi1kZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgotICAgIHBhc3MK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS9lY2hvX2NsaWVudC5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS9l
Y2hvX2NsaWVudC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGFjNzQwZTcwNThi
ZDMxYTc4YmNmMWIxYjg5N2QzYmRmM2ZjN2Q0Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvZWNob19jbGllbnQucHkKKysrIC9kZXYv
bnVsbApAQCAtMSwxMTI5ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5
cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
IyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0KLQotIiIiU2ltcGxlIFdlYlNvY2tldCBjbGllbnQgbmFtZWQgZWNob19jbGll
bnQganVzdCBiZWNhdXNlIG9mIGhpc3RvcmljYWwgcmVhc29uLgotCi1tb2RfcHl3ZWJzb2NrZXQg
ZGlyZWN0b3J5IG11c3QgYmUgaW4gUFlUSE9OUEFUSC4KLQotRXhhbXBsZSBVc2FnZToKLQotIyBz
ZXJ2ZXIgc2V0dXAKLSAlIGNkICRweXdlYnNvY2tldAotICUgUFlUSE9OUEFUSD0kY3dkL3NyYyBw
eXRob24gLi9tb2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5weSAtcCA4ODgwIFwKLSAgICAtZCAk
Y3dkL3NyYy9leGFtcGxlCi0KLSMgcnVuIGNsaWVudAotICUgUFlUSE9OUEFUSD0kY3dkL3NyYyBw
eXRob24gLi9zcmMvZXhhbXBsZS9lY2hvX2NsaWVudC5weSAtcCA4ODgwIFwKLSAgICAgLXMgbG9j
YWxob3N0IFwKLSAgICAgLW8gaHR0cDovL2xvY2FsaG9zdCAtciAvZWNobyAtbSB0ZXN0Ci0KLW9y
Ci0KLSMgcnVuIGVjaG8gY2xpZW50IHRvIHRlc3QgSUVURiBIeUJpIDAwIHByb3RvY29sCi0gcnVu
IHdpdGggLS1wcm90b2NvbC12ZXJzaW9uPWh5YmkwMAotIiIiCi1mcm9tIF9fZnV0dXJlX18gaW1w
b3J0IHByaW50X2Z1bmN0aW9uCi0KLQotaW1wb3J0IGJhc2U2NAotaW1wb3J0IGNvZGVjcwotaW1w
b3J0IGxvZ2dpbmcKLWZyb20gb3B0cGFyc2UgaW1wb3J0IE9wdGlvblBhcnNlcgotaW1wb3J0IG9z
Ci1pbXBvcnQgcmFuZG9tCi1pbXBvcnQgcmUKLWltcG9ydCBzb2NrZXQKLWltcG9ydCBzdHJ1Y3QK
LWltcG9ydCBzeXMKLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgotZnJvbSBt
b2RfcHl3ZWJzb2NrZXQuZXh0ZW5zaW9ucyBpbXBvcnQgRGVmbGF0ZUZyYW1lRXh0ZW5zaW9uUHJv
Y2Vzc29yCi1mcm9tIG1vZF9weXdlYnNvY2tldC5leHRlbnNpb25zIGltcG9ydCBQZXJNZXNzYWdl
RGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuZXh0ZW5zaW9u
cyBpbXBvcnQgX1Blck1lc3NhZ2VEZWZsYXRlRnJhbWVyCi1mcm9tIG1vZF9weXdlYnNvY2tldC5l
eHRlbnNpb25zIGltcG9ydCBfcGFyc2Vfd2luZG93X2JpdHMKLWZyb20gbW9kX3B5d2Vic29ja2V0
LnN0cmVhbSBpbXBvcnQgU3RyZWFtCi1mcm9tIG1vZF9weXdlYnNvY2tldC5zdHJlYW0gaW1wb3J0
IFN0cmVhbUhpeGllNzUKLWZyb20gbW9kX3B5d2Vic29ja2V0LnN0cmVhbSBpbXBvcnQgU3RyZWFt
T3B0aW9ucwotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHV0aWwKLQotCi1fVElNRU9VVF9T
RUMgPSAxMAotX1VOREVGSU5FRF9QT1JUID0gLTEKLQotX1VQR1JBREVfSEVBREVSID0gJ1VwZ3Jh
ZGU6IHdlYnNvY2tldFxyXG4nCi1fVVBHUkFERV9IRUFERVJfSElYSUU3NSA9ICdVcGdyYWRlOiBX
ZWJTb2NrZXRcclxuJwotX0NPTk5FQ1RJT05fSEVBREVSID0gJ0Nvbm5lY3Rpb246IFVwZ3JhZGVc
clxuJwotCi0jIFNwZWNpYWwgbWVzc2FnZSB0aGF0IHRlbGxzIHRoZSBlY2hvIHNlcnZlciB0byBz
dGFydCBjbG9zaW5nIGhhbmRzaGFrZQotX0dPT0RCWUVfTUVTU0FHRSA9ICdHb29kYnllJwotCi1f
UFJPVE9DT0xfVkVSU0lPTl9IWUJJMTMgPSAnaHliaTEzJwotX1BST1RPQ09MX1ZFUlNJT05fSFlC
STA4ID0gJ2h5YmkwOCcKLV9QUk9UT0NPTF9WRVJTSU9OX0hZQkkwMCA9ICdoeWJpMDAnCi1fUFJP
VE9DT0xfVkVSU0lPTl9ISVhJRTc1ID0gJ2hpeGllNzUnCi0KLSMgQ29uc3RhbnRzIGZvciB0aGUg
LS10bHNfbW9kdWxlIGZsYWcuCi1fVExTX0JZX1NUQU5EQVJEX01PRFVMRSA9ICdzc2wnCi1fVExT
X0JZX1BZT1BFTlNTTCA9ICdweW9wZW5zc2wnCi0KLSMgVmFsdWVzIHVzZWQgYnkgdGhlIC0tdGxz
LXZlcnNpb24gZmxhZy4KLV9UTFNfVkVSU0lPTl9TU0wyMyA9ICdzc2wyMycKLV9UTFNfVkVSU0lP
Tl9TU0wzID0gJ3NzbDMnCi1fVExTX1ZFUlNJT05fVExTMSA9ICd0bHMxJwotCi0KLWNsYXNzIENs
aWVudEhhbmRzaGFrZUVycm9yKEV4Y2VwdGlvbik6Ci0gICAgcGFzcwotCi0KLWRlZiBfYnVpbGRf
bWV0aG9kX2xpbmUocmVzb3VyY2UpOgotICAgIHJldHVybiAnR0VUICVzIEhUVFAvMS4xXHJcbicg
JSByZXNvdXJjZQotCi0KLWRlZiBfb3JpZ2luX2hlYWRlcihoZWFkZXIsIG9yaWdpbik6Ci0gICAg
IyA0LjEgMTMuIGNvbmNhdGVuYXRpb24gb2YgdGhlIHN0cmluZyAiT3JpZ2luOiIsIGEgVSswMDIw
IFNQQUNFIGNoYXJhY3RlciwKLSAgICAjIGFuZCB0aGUgL29yaWdpbi8gdmFsdWUsIGNvbnZlcnRl
ZCB0byBBU0NJSSBsb3dlcmNhc2UsIHRvIC9maWVsZHMvLgotICAgIHJldHVybiAnJXM6ICVzXHJc
bicgJSAoaGVhZGVyLCBvcmlnaW4ubG93ZXIoKSkKLQotCi1kZWYgX2Zvcm1hdF9ob3N0X2hlYWRl
cihob3N0LCBwb3J0LCBzZWN1cmUpOgotICAgICMgNC4xIDkuIExldCAvaG9zdHBvcnQvIGJlIGFu
IGVtcHR5IHN0cmluZy4KLSAgICAjIDQuMSAxMC4gQXBwZW5kIHRoZSAvaG9zdC8gdmFsdWUsIGNv
bnZlcnRlZCB0byBBU0NJSSBsb3dlcmNhc2UsIHRvCi0gICAgIyAvaG9zdHBvcnQvCi0gICAgaG9z
dHBvcnQgPSBob3N0Lmxvd2VyKCkKLSAgICAjIDQuMSAxMS4gSWYgL3NlY3VyZS8gaXMgZmFsc2Us
IGFuZCAvcG9ydC8gaXMgbm90IDgwLCBvciBpZiAvc2VjdXJlLwotICAgICMgaXMgdHJ1ZSwgYW5k
IC9wb3J0LyBpcyBub3QgNDQzLCB0aGVuIGFwcGVuZCBhIFUrMDAzQSBDT0xPTiBjaGFyYWN0ZXIK
LSAgICAjICg6KSBmb2xsb3dlZCBieSB0aGUgdmFsdWUgb2YgL3BvcnQvLCBleHByZXNzZWQgYXMg
YSBiYXNlLXRlbiBpbnRlZ2VyLAotICAgICMgdG8gL2hvc3Rwb3J0LwotICAgIGlmICgobm90IHNl
Y3VyZSBhbmQgcG9ydCAhPSBjb21tb24uREVGQVVMVF9XRUJfU09DS0VUX1BPUlQpIG9yCi0gICAg
ICAgIChzZWN1cmUgYW5kIHBvcnQgIT0gY29tbW9uLkRFRkFVTFRfV0VCX1NPQ0tFVF9TRUNVUkVf
UE9SVCkpOgotICAgICAgICBob3N0cG9ydCArPSAnOicgKyBzdHIocG9ydCkKLSAgICAjIDQuMSAx
Mi4gY29uY2F0ZW5hdGlvbiBvZiB0aGUgc3RyaW5nICJIb3N0OiIsIGEgVSswMDIwIFNQQUNFCi0g
ICAgIyBjaGFyYWN0ZXIsIGFuZCAvaG9zdHBvcnQvLCB0byAvZmllbGRzLy4KLSAgICByZXR1cm4g
JyVzOiAlc1xyXG4nICUgKGNvbW1vbi5IT1NUX0hFQURFUiwgaG9zdHBvcnQpCi0KLQotZGVmIF9y
ZWNlaXZlX2J5dGVzKHNvY2tldCwgbGVuZ3RoKToKLSAgICBieXRlcyA9IFtdCi0gICAgcmVtYWlu
aW5nID0gbGVuZ3RoCi0gICAgd2hpbGUgcmVtYWluaW5nID4gMDoKLSAgICAgICAgcmVjZWl2ZWRf
Ynl0ZXMgPSBzb2NrZXQucmVjdihyZW1haW5pbmcpCi0gICAgICAgIGlmIG5vdCByZWNlaXZlZF9i
eXRlczoKLSAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoCi0gICAgICAgICAgICAgICAgJ0Nvbm5l
Y3Rpb24gY2xvc2VkIGJlZm9yZSByZWNlaXZpbmcgcmVxdWVzdGVkIGxlbmd0aCAnCi0gICAgICAg
ICAgICAgICAgJyhyZXF1ZXN0ZWQgJWQgYnl0ZXMgYnV0IHJlY2VpdmVkIG9ubHkgJWQgYnl0ZXMp
JyAlCi0gICAgICAgICAgICAgICAgKGxlbmd0aCwgbGVuZ3RoIC0gcmVtYWluaW5nKSkKLSAgICAg
ICAgYnl0ZXMuYXBwZW5kKHJlY2VpdmVkX2J5dGVzKQotICAgICAgICByZW1haW5pbmcgLT0gbGVu
KHJlY2VpdmVkX2J5dGVzKQotICAgIHJldHVybiAnJy5qb2luKGJ5dGVzKQotCi0KLWRlZiBfZ2V0
X21hbmRhdG9yeV9oZWFkZXIoZmllbGRzLCBuYW1lKToKLSAgICAiIiJHZXRzIHRoZSB2YWx1ZSBv
ZiB0aGUgaGVhZGVyIHNwZWNpZmllZCBieSBuYW1lIGZyb20gZmllbGRzLgotCi0gICAgVGhpcyBm
dW5jdGlvbiBleHBlY3RzIHRoYXQgdGhlcmUncyBvbmx5IG9uZSBoZWFkZXIgd2l0aCB0aGUgc3Bl
Y2lmaWVkIG5hbWUKLSAgICBpbiBmaWVsZHMuIE90aGVyd2lzZSwgcmFpc2VzIGFuIENsaWVudEhh
bmRzaGFrZUVycm9yLgotICAgICIiIgotCi0gICAgdmFsdWVzID0gZmllbGRzLmdldChuYW1lLmxv
d2VyKCkpCi0gICAgaWYgdmFsdWVzIGlzIE5vbmUgb3IgbGVuKHZhbHVlcykgPT0gMDoKLSAgICAg
ICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCi0gICAgICAgICAgICAnJXMgaGVhZGVyIG5v
dCBmb3VuZDogJXInICUgKG5hbWUsIHZhbHVlcykpCi0gICAgaWYgbGVuKHZhbHVlcykgPiAxOgot
ICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcigKLSAgICAgICAgICAgICdNdWx0aXBs
ZSAlcyBoZWFkZXJzIGZvdW5kOiAlcicgJSAobmFtZSwgdmFsdWVzKSkKLSAgICByZXR1cm4gdmFs
dWVzWzBdCi0KLQotZGVmIF92YWxpZGF0ZV9tYW5kYXRvcnlfaGVhZGVyKGZpZWxkcywgbmFtZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF92YWx1ZSwgY2FzZV9zZW5z
aXRpdmU9RmFsc2UpOgotICAgICIiIkdldHMgYW5kIHZhbGlkYXRlcyB0aGUgdmFsdWUgb2YgdGhl
IGhlYWRlciBzcGVjaWZpZWQgYnkgbmFtZSBmcm9tCi0gICAgZmllbGRzLgotCi0gICAgSWYgZXhw
ZWN0ZWRfdmFsdWUgaXMgc3BlY2lmaWVkLCBjb21wYXJlcyBleHBlY3RlZCB2YWx1ZSBhbmQgYWN0
dWFsIHZhbHVlCi0gICAgYW5kIHJhaXNlcyBhbiBDbGllbnRIYW5kc2hha2VFcnJvciBvbiBmYWls
dXJlLiBZb3UgY2FuIHNwZWNpZnkgY2FzZQotICAgIHNlbnNpdGl2ZW5lc3MgaW4gdGhpcyBjb21w
YXJpc29uIGJ5IGNhc2Vfc2Vuc2l0aXZlIHBhcmFtZXRlci4gVGhpcyBmdW5jdGlvbgotICAgIGV4
cGVjdHMgdGhhdCB0aGVyZSdzIG9ubHkgb25lIGhlYWRlciB3aXRoIHRoZSBzcGVjaWZpZWQgbmFt
ZSBpbiBmaWVsZHMuCi0gICAgT3RoZXJ3aXNlLCByYWlzZXMgYW4gQ2xpZW50SGFuZHNoYWtlRXJy
b3IuCi0gICAgIiIiCi0KLSAgICB2YWx1ZSA9IF9nZXRfbWFuZGF0b3J5X2hlYWRlcihmaWVsZHMs
IG5hbWUpCi0KLSAgICBpZiAoKGNhc2Vfc2Vuc2l0aXZlIGFuZCB2YWx1ZSAhPSBleHBlY3RlZF92
YWx1ZSkgb3IKLSAgICAgICAgKG5vdCBjYXNlX3NlbnNpdGl2ZSBhbmQgdmFsdWUubG93ZXIoKSAh
PSBleHBlY3RlZF92YWx1ZS5sb3dlcigpKSk6Ci0gICAgICAgIHJhaXNlIENsaWVudEhhbmRzaGFr
ZUVycm9yKAotICAgICAgICAgICAgJ0lsbGVnYWwgdmFsdWUgZm9yIGhlYWRlciAlczogJXIgKGV4
cGVjdGVkKSB2cyAlciAoYWN0dWFsKScgJQotICAgICAgICAgICAgKG5hbWUsIGV4cGVjdGVkX3Zh
bHVlLCB2YWx1ZSkpCi0KLQotY2xhc3MgX1RMU1NvY2tldChvYmplY3QpOgotICAgICIiIldyYXBw
ZXIgZm9yIGEgVExTIGNvbm5lY3Rpb24uIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwKLSAg
ICAgICAgICAgICAgICAgcmF3X3NvY2tldCwgdGxzX21vZHVsZSwgdGxzX3ZlcnNpb24sIGRpc2Fi
bGVfdGxzX2NvbXByZXNzaW9uKToKLSAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xh
c3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgaWYgdGxzX21vZHVsZSA9PSBfVExTX0JZX1NUQU5E
QVJEX01PRFVMRToKLSAgICAgICAgICAgIGlmIHRsc192ZXJzaW9uID09IF9UTFNfVkVSU0lPTl9T
U0wyMzoKLSAgICAgICAgICAgICAgICB2ZXJzaW9uID0gc3NsLlBST1RPQ09MX1NTTHYyMwotICAg
ICAgICAgICAgZWxpZiB0bHNfdmVyc2lvbiA9PSBfVExTX1ZFUlNJT05fU1NMMzoKLSAgICAgICAg
ICAgICAgICB2ZXJzaW9uID0gc3NsLlBST1RPQ09MX1NTTHYzCi0gICAgICAgICAgICBlbGlmIHRs
c192ZXJzaW9uID09IF9UTFNfVkVSU0lPTl9UTFMxOgotICAgICAgICAgICAgICAgIHZlcnNpb24g
PSBzc2wuUFJPVE9DT0xfVExTdjEKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAg
cmFpc2UgVmFsdWVFcnJvcigKLSAgICAgICAgICAgICAgICAgICAgJ0ludmFsaWQgLS10bHMtdmVy
c2lvbiBmbGFnOiAlcicgJSB0bHNfdmVyc2lvbikKLQotICAgICAgICAgICAgaWYgZGlzYWJsZV90
bHNfY29tcHJlc3Npb246Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKLSAgICAg
ICAgICAgICAgICAgICAgJy0tZGlzYWJsZS10bHMtY29tcHJlc3Npb24gaXMgbm90IGF2YWlsYWJs
ZSBmb3Igc3NsICcKLSAgICAgICAgICAgICAgICAgICAgJ21vZHVsZScpCi0KLSAgICAgICAgICAg
IHNlbGYuX3Rsc19zb2NrZXQgPSBzc2wud3JhcF9zb2NrZXQocmF3X3NvY2tldCwgc3NsX3ZlcnNp
b249dmVyc2lvbikKLQotICAgICAgICAgICAgIyBQcmludCBjaXBoZXIgaW4gdXNlLiBIYW5kc2hh
a2UgaXMgZG9uZSBvbiB3cmFwX3NvY2tldCBjYWxsLgotICAgICAgICAgICAgc2VsZi5fbG9nZ2Vy
LmluZm8oIkNpcGhlcjogJXMiLCBzZWxmLl90bHNfc29ja2V0LmNpcGhlcigpKQotICAgICAgICBl
bGlmIHRsc19tb2R1bGUgPT0gX1RMU19CWV9QWU9QRU5TU0w6Ci0gICAgICAgICAgICBpZiB0bHNf
dmVyc2lvbiA9PSBfVExTX1ZFUlNJT05fU1NMMjM6Ci0gICAgICAgICAgICAgICAgdmVyc2lvbiA9
IE9wZW5TU0wuU1NMLlNTTHYyM19NRVRIT0QKLSAgICAgICAgICAgIGVsaWYgdGxzX3ZlcnNpb24g
PT0gX1RMU19WRVJTSU9OX1NTTDM6Ci0gICAgICAgICAgICAgICAgdmVyc2lvbiA9IE9wZW5TU0wu
U1NMLlNTTHYzX01FVEhPRAotICAgICAgICAgICAgZWxpZiB0bHNfdmVyc2lvbiA9PSBfVExTX1ZF
UlNJT05fVExTMToKLSAgICAgICAgICAgICAgICB2ZXJzaW9uID0gT3BlblNTTC5TU0wuVExTdjFf
TUVUSE9ECi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJy
b3IoCi0gICAgICAgICAgICAgICAgICAgICdJbnZhbGlkIC0tdGxzLXZlcnNpb24gZmxhZzogJXIn
ICUgdGxzX3ZlcnNpb24pCi0KLSAgICAgICAgICAgIGNvbnRleHQgPSBPcGVuU1NMLlNTTC5Db250
ZXh0KHZlcnNpb24pCi0KLSAgICAgICAgICAgIGlmIGRpc2FibGVfdGxzX2NvbXByZXNzaW9uOgot
ICAgICAgICAgICAgICAgICMgT1BfTk9fQ09NUFJFU1NJT04gaXMgbm90IGRlZmluZWQgaW4gT3Bl
blNTTCBtb2R1bGUuCi0gICAgICAgICAgICAgICAgY29udGV4dC5zZXRfb3B0aW9ucygweDAwMDIw
MDAwKQotCi0gICAgICAgICAgICBzZWxmLl90bHNfc29ja2V0ID0gT3BlblNTTC5TU0wuQ29ubmVj
dGlvbihjb250ZXh0LCByYXdfc29ja2V0KQotICAgICAgICAgICAgIyBDbGllbnQgbW9kZS4KLSAg
ICAgICAgICAgIHNlbGYuX3Rsc19zb2NrZXQuc2V0X2Nvbm5lY3Rfc3RhdGUoKQotICAgICAgICAg
ICAgc2VsZi5fdGxzX3NvY2tldC5zZXRibG9ja2luZyhUcnVlKQotCi0gICAgICAgICAgICAjIERv
IGhhbmRzaGFrZSBub3cgKG5vdCBuZWNlc3NhcnkpLgotICAgICAgICAgICAgc2VsZi5fdGxzX3Nv
Y2tldC5kb19oYW5kc2hha2UoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgVmFs
dWVFcnJvcignTm8gVExTIHN1cHBvcnQgbW9kdWxlIGlzIGF2YWlsYWJsZScpCi0KLSAgICBkZWYg
c2VuZChzZWxmLCBkYXRhKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3Rsc19zb2NrZXQud3JpdGUo
ZGF0YSkKLQotICAgIGRlZiBzZW5kYWxsKHNlbGYsIGRhdGEpOgotICAgICAgICByZXR1cm4gc2Vs
Zi5fdGxzX3NvY2tldC5zZW5kYWxsKGRhdGEpCi0KLSAgICBkZWYgcmVjdihzZWxmLCBzaXplPS0x
KToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3Rsc19zb2NrZXQucmVhZChzaXplKQotCi0gICAgZGVm
IGNsb3NlKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fdGxzX3NvY2tldC5jbG9zZSgpCi0K
LSAgICBkZWYgZ2V0cGVlcm5hbWUoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl90bHNfc29j
a2V0LmdldHBlZXJuYW1lKCkKLQotCi1jbGFzcyBDbGllbnRIYW5kc2hha2VCYXNlKG9iamVjdCk6
Ci0gICAgIiIiQSBiYXNlIGNsYXNzIGZvciBXZWJTb2NrZXQgb3BlbmluZyBoYW5kc2hha2UgcHJv
Y2Vzc29ycyBmb3IgZWFjaAotICAgIHByb3RvY29sIHZlcnNpb24uCi0gICAgIiIiCi0KLSAgICBk
ZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNz
X2xvZ2dlcihzZWxmKQotCi0gICAgZGVmIF9yZWFkX2ZpZWxkcyhzZWxmKToKLSAgICAgICAgIyA0
LjEgMzIuIGxldCAvZmllbGRzLyBiZSBhIGxpc3Qgb2YgbmFtZS12YWx1ZSBwYWlycywgaW5pdGlh
bGx5IGVtcHR5LgotICAgICAgICBmaWVsZHMgPSB7fQotICAgICAgICB3aGlsZSBUcnVlOiAgIyAi
RmllbGQiCi0gICAgICAgICAgICAjIDQuMSAzMy4gbGV0IC9uYW1lLyBhbmQgL3ZhbHVlLyBiZSBl
bXB0eSBieXRlIGFycmF5cwotICAgICAgICAgICAgbmFtZSA9ICcnCi0gICAgICAgICAgICB2YWx1
ZSA9ICcnCi0gICAgICAgICAgICAjIDQuMSAzNC4gcmVhZCAvbmFtZS8KLSAgICAgICAgICAgIG5h
bWUgPSBzZWxmLl9yZWFkX25hbWUoKQotICAgICAgICAgICAgaWYgbmFtZSBpcyBOb25lOgotICAg
ICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAjIDQuMSAzNS4gcmVhZCBzcGFjZXMKLSAg
ICAgICAgICAgICMgVE9ETyh0eW9zaGlubyk6IFNraXAgb25seSBvbmUgc3BhY2UgYXMgZGVzY3Jp
YmVkIGluIHRoZSBzcGVjLgotICAgICAgICAgICAgY2ggPSBzZWxmLl9za2lwX3NwYWNlcygpCi0g
ICAgICAgICAgICAjIDQuMSAzNi4gcmVhZCAvdmFsdWUvCi0gICAgICAgICAgICB2YWx1ZSA9IHNl
bGYuX3JlYWRfdmFsdWUoY2gpCi0gICAgICAgICAgICAjIDQuMSAzNy4gcmVhZCBhIGJ5dGUgZnJv
bSB0aGUgc2VydmVyCi0gICAgICAgICAgICBjaCA9IF9yZWNlaXZlX2J5dGVzKHNlbGYuX3NvY2tl
dCwgMSkKLSAgICAgICAgICAgIGlmIGNoICE9ICdcbic6ICAjIDB4MEEKLSAgICAgICAgICAgICAg
ICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcigKLSAgICAgICAgICAgICAgICAgICAgJ0V4cGVj
dGVkIExGIGJ1dCBmb3VuZCAlciB3aGlsZSByZWFkaW5nIHZhbHVlICVyIGZvciAnCi0gICAgICAg
ICAgICAgICAgICAgICdoZWFkZXIgJXInICUgKGNoLCB2YWx1ZSwgbmFtZSkpCi0gICAgICAgICAg
ICBzZWxmLl9sb2dnZXIuZGVidWcoJ1JlY2VpdmVkICVyIGhlYWRlcicsIG5hbWUpCi0gICAgICAg
ICAgICAjIDQuMSAzOC4gYXBwZW5kIGFuIGVudHJ5IHRvIHRoZSAvZmllbGRzLyBsaXN0IHRoYXQg
aGFzIHRoZSBuYW1lCi0gICAgICAgICAgICAjIGdpdmVuIGJ5IHRoZSBzdHJpbmcgb2J0YWluZWQg
YnkgaW50ZXJwcmV0aW5nIHRoZSAvbmFtZS8gYnl0ZQotICAgICAgICAgICAgIyBhcnJheSBhcyBh
IFVURi04IHN0cmVhbSBhbmQgdGhlIHZhbHVlIGdpdmVuIGJ5IHRoZSBzdHJpbmcKLSAgICAgICAg
ICAgICMgb2J0YWluZWQgYnkgaW50ZXJwcmV0aW5nIHRoZSAvdmFsdWUvIGJ5dGUgYXJyYXkgYXMg
YSBVVEYtOCBieXRlCi0gICAgICAgICAgICAjIHN0cmVhbS4KLSAgICAgICAgICAgIGZpZWxkcy5z
ZXRkZWZhdWx0KG5hbWUsIFtdKS5hcHBlbmQodmFsdWUpCi0gICAgICAgICAgICAjIDQuMSAzOS4g
cmV0dXJuIHRvIHRoZSAiRmllbGQiIHN0ZXAgYWJvdmUKLSAgICAgICAgcmV0dXJuIGZpZWxkcwot
Ci0gICAgZGVmIF9yZWFkX25hbWUoc2VsZik6Ci0gICAgICAgICMgNC4xIDMzLiBsZXQgL25hbWUv
IGJlIGVtcHR5IGJ5dGUgYXJyYXlzCi0gICAgICAgIG5hbWUgPSAnJwotICAgICAgICB3aGlsZSBU
cnVlOgotICAgICAgICAgICAgIyA0LjEgMzQuIHJlYWQgYSBieXRlIGZyb20gdGhlIHNlcnZlcgot
ICAgICAgICAgICAgY2ggPSBfcmVjZWl2ZV9ieXRlcyhzZWxmLl9zb2NrZXQsIDEpCi0gICAgICAg
ICAgICBpZiBjaCA9PSAnXHInOiAgIyAweDBECi0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUK
LSAgICAgICAgICAgIGVsaWYgY2ggPT0gJ1xuJzogICMgMHgwQQotICAgICAgICAgICAgICAgIHJh
aXNlIENsaWVudEhhbmRzaGFrZUVycm9yKAotICAgICAgICAgICAgICAgICAgICAnVW5leHBlY3Rl
ZCBMRiB3aGVuIHJlYWRpbmcgaGVhZGVyIG5hbWUgJXInICUgbmFtZSkKLSAgICAgICAgICAgIGVs
aWYgY2ggPT0gJzonOiAgIyAweDNBCi0gICAgICAgICAgICAgICAgcmV0dXJuIG5hbWUKLSAgICAg
ICAgICAgIGVsaWYgY2ggPj0gJ0EnIGFuZCBjaCA8PSAnWic6ICAjIFJhbmdlIDB4MzEgdG8gMHg1
QQotICAgICAgICAgICAgICAgIGNoID0gY2hyKG9yZChjaCkgKyAweDIwKQotICAgICAgICAgICAg
ICAgIG5hbWUgKz0gY2gKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbmFtZSAr
PSBjaAotCi0gICAgZGVmIF9za2lwX3NwYWNlcyhzZWxmKToKLSAgICAgICAgIyA0LjEgMzUuIHJl
YWQgYSBieXRlIGZyb20gdGhlIHNlcnZlcgotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAg
ICAgY2ggPSBfcmVjZWl2ZV9ieXRlcyhzZWxmLl9zb2NrZXQsIDEpCi0gICAgICAgICAgICBpZiBj
aCA9PSAnICc6ICAjIDB4MjAKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAg
cmV0dXJuIGNoCi0KLSAgICBkZWYgX3JlYWRfdmFsdWUoc2VsZiwgY2gpOgotICAgICAgICAjIDQu
MSAzMy4gbGV0IC92YWx1ZS8gYmUgZW1wdHkgYnl0ZSBhcnJheXMKLSAgICAgICAgdmFsdWUgPSAn
JwotICAgICAgICAjIDQuMSAzNi4gcmVhZCBhIGJ5dGUgZnJvbSBzZXJ2ZXIuCi0gICAgICAgIHdo
aWxlIFRydWU6Ci0gICAgICAgICAgICBpZiBjaCA9PSAnXHInOiAgIyAweDBECi0gICAgICAgICAg
ICAgICAgcmV0dXJuIHZhbHVlCi0gICAgICAgICAgICBlbGlmIGNoID09ICdcbic6ICAjIDB4MEEK
LSAgICAgICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcigKLSAgICAgICAgICAg
ICAgICAgICAgJ1VuZXhwZWN0ZWQgTEYgd2hlbiByZWFkaW5nIGhlYWRlciB2YWx1ZSAlcicgJSB2
YWx1ZSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdmFsdWUgKz0gY2gKLSAg
ICAgICAgICAgIGNoID0gX3JlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCAxKQotCi0KLWRlZiBf
Z2V0X3Blcm1lc3NhZ2VfZGVmbGF0ZV9mcmFtZXIoZXh0ZW5zaW9uX3Jlc3BvbnNlKToKLSAgICAi
IiJWYWxpZGF0ZSB0aGUgcmVzcG9uc2UgYW5kIHJldHVybiBhIGZyYW1lciBvYmplY3QgdXNpbmcg
dGhlIHBhcmFtZXRlcnMgaW4KLSAgICB0aGUgcmVzcG9uc2UuIFRoaXMgbWV0aG9kIGRvZXNuJ3Qg
YWNjZXB0IHRoZSBzZXJ2ZXJfLiogcGFyYW1ldGVycy4KLSAgICAiIiIKLQotICAgIGNsaWVudF9t
YXhfd2luZG93X2JpdHMgPSBOb25lCi0gICAgY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIgPSBO
b25lCi0KLSAgICBjbGllbnRfbWF4X3dpbmRvd19iaXRzX25hbWUgPSAoCi0gICAgICAgICAgICBQ
ZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3Nvci4KLSAgICAgICAgICAgICAgICAgICAg
X0NMSUVOVF9NQVhfV0lORE9XX0JJVFNfUEFSQU0pCi0gICAgY2xpZW50X25vX2NvbnRleHRfdGFr
ZW92ZXJfbmFtZSA9ICgKLSAgICAgICAgICAgIFBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJv
Y2Vzc29yLgotICAgICAgICAgICAgICAgICAgICBfQ0xJRU5UX05PX0NPTlRFWFRfVEFLRU9WRVJf
UEFSQU0pCi0KLSAgICAjIFdlIGRpZG4ndCBzZW5kIGFueSBzZXJ2ZXJfLiogcGFyYW1ldGVyLgot
ICAgICMgSGFuZGxlIHRob3NlIHBhcmFtZXRlcnMgYXMgaW52YWxpZCBpZiBmb3VuZCBpbiB0aGUg
cmVzcG9uc2UuCi0KLSAgICBmb3IgcGFyYW1fbmFtZSwgcGFyYW1fdmFsdWUgaW4gZXh0ZW5zaW9u
X3Jlc3BvbnNlLmdldF9wYXJhbWV0ZXJzKCk6Ci0gICAgICAgIGlmIHBhcmFtX25hbWUgPT0gY2xp
ZW50X21heF93aW5kb3dfYml0c19uYW1lOgotICAgICAgICAgICAgaWYgY2xpZW50X21heF93aW5k
b3dfYml0cyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hh
a2VFcnJvcigKLSAgICAgICAgICAgICAgICAgICAgICAgICdNdWx0aXBsZSAlcyBmb3VuZCcgJSBj
bGllbnRfbWF4X3dpbmRvd19iaXRzX25hbWUpCi0KLSAgICAgICAgICAgIHBhcnNlZF92YWx1ZSA9
IF9wYXJzZV93aW5kb3dfYml0cyhwYXJhbV92YWx1ZSkKLSAgICAgICAgICAgIGlmIHBhcnNlZF92
YWx1ZSBpcyBOb25lOgotICAgICAgICAgICAgICAgIHJhaXNlIENsaWVudEhhbmRzaGFrZUVycm9y
KAotICAgICAgICAgICAgICAgICAgICAgICAgJ0JhZCAlczogJXInICUKLSAgICAgICAgICAgICAg
ICAgICAgICAgIChjbGllbnRfbWF4X3dpbmRvd19iaXRzX25hbWUsIHBhcmFtX3ZhbHVlKSkKLSAg
ICAgICAgICAgIGNsaWVudF9tYXhfd2luZG93X2JpdHMgPSBwYXJzZWRfdmFsdWUKLSAgICAgICAg
ZWxpZiBwYXJhbV9uYW1lID09IGNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyX25hbWU6Ci0gICAg
ICAgICAgICBpZiBjbGllbnRfbm9fY29udGV4dF90YWtlb3ZlciBpcyBub3QgTm9uZToKLSAgICAg
ICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcigKLSAgICAgICAgICAgICAgICAg
ICAgICAgICdNdWx0aXBsZSAlcyBmb3VuZCcgJSBjbGllbnRfbm9fY29udGV4dF90YWtlb3Zlcl9u
YW1lKQotCi0gICAgICAgICAgICBpZiBwYXJhbV92YWx1ZSBpcyBub3QgTm9uZToKLSAgICAgICAg
ICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcigKLSAgICAgICAgICAgICAgICAgICAg
ICAgICdCYWQgJXM6IEhhcyB2YWx1ZSAlcicgJQotICAgICAgICAgICAgICAgICAgICAgICAgKGNs
aWVudF9ub19jb250ZXh0X3Rha2VvdmVyX25hbWUsIHBhcmFtX3ZhbHVlKSkKLSAgICAgICAgICAg
IGNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyID0gVHJ1ZQotCi0gICAgaWYgY2xpZW50X25vX2Nv
bnRleHRfdGFrZW92ZXIgaXMgTm9uZToKLSAgICAgICAgY2xpZW50X25vX2NvbnRleHRfdGFrZW92
ZXIgPSBGYWxzZQotCi0gICAgcmV0dXJuIF9QZXJNZXNzYWdlRGVmbGF0ZUZyYW1lcihjbGllbnRf
bWF4X3dpbmRvd19iaXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xp
ZW50X25vX2NvbnRleHRfdGFrZW92ZXIpCi0KLQotY2xhc3MgQ2xpZW50SGFuZHNoYWtlUHJvY2Vz
c29yKENsaWVudEhhbmRzaGFrZUJhc2UpOgotICAgICIiIldlYlNvY2tldCBvcGVuaW5nIGhhbmRz
aGFrZSBwcm9jZXNzb3IgZm9yCi0gICAgZHJhZnQtaWV0Zi1oeWJpLXRoZXdlYnNvY2tldHByb3Rv
Y29sLTA2IGFuZCBsYXRlci4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb2Nr
ZXQsIG9wdGlvbnMpOgotICAgICAgICBzdXBlcihDbGllbnRIYW5kc2hha2VQcm9jZXNzb3IsIHNl
bGYpLl9faW5pdF9fKCkKLQotICAgICAgICBzZWxmLl9zb2NrZXQgPSBzb2NrZXQKLSAgICAgICAg
c2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKLQotICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdl
dF9jbGFzc19sb2dnZXIoc2VsZikKLQotICAgIGRlZiBoYW5kc2hha2Uoc2VsZik6Ci0gICAgICAg
ICIiIlBlcmZvcm1zIG9wZW5pbmcgaGFuZHNoYWtlIG9uIHRoZSBzcGVjaWZpZWQgc29ja2V0Lgot
Ci0gICAgICAgIFJhaXNlczoKLSAgICAgICAgICAgIENsaWVudEhhbmRzaGFrZUVycm9yOiBoYW5k
c2hha2UgZmFpbGVkLgotICAgICAgICAiIiIKLQotICAgICAgICByZXF1ZXN0X2xpbmUgPSBfYnVp
bGRfbWV0aG9kX2xpbmUoc2VsZi5fb3B0aW9ucy5yZXNvdXJjZSkKLSAgICAgICAgc2VsZi5fbG9n
Z2VyLmRlYnVnKCdDbGllbnRcJ3Mgb3BlbmluZyBoYW5kc2hha2UgUmVxdWVzdC1MaW5lOiAlcics
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0X2xpbmUpCi0gICAgICAgIHNlbGYu
X3NvY2tldC5zZW5kYWxsKHJlcXVlc3RfbGluZSkKLQotICAgICAgICBmaWVsZHMgPSBbXQotICAg
ICAgICBmaWVsZHMuYXBwZW5kKF9mb3JtYXRfaG9zdF9oZWFkZXIoCi0gICAgICAgICAgICBzZWxm
Ll9vcHRpb25zLnNlcnZlcl9ob3N0LAotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5zZXJ2ZXJf
cG9ydCwKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMudXNlX3RscykpCi0gICAgICAgIGZpZWxk
cy5hcHBlbmQoX1VQR1JBREVfSEVBREVSKQotICAgICAgICBmaWVsZHMuYXBwZW5kKF9DT05ORUNU
SU9OX0hFQURFUikKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5vcmlnaW4gaXMgbm90IE5vbmU6
Ci0gICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnByb3RvY29sX3ZlcnNpb24gPT0gX1BST1RP
Q09MX1ZFUlNJT05fSFlCSTA4OgotICAgICAgICAgICAgICAgIGZpZWxkcy5hcHBlbmQoX29yaWdp
bl9oZWFkZXIoCi0gICAgICAgICAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VCU09DS0VUX09SSUdJ
Tl9IRUFERVIsCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMub3JpZ2luKSkKLSAg
ICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZmllbGRzLmFwcGVuZChfb3JpZ2luX2hl
YWRlcihjb21tb24uT1JJR0lOX0hFQURFUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMub3JpZ2luKSkKLQotICAgICAgICBvcmlnaW5h
bF9rZXkgPSBvcy51cmFuZG9tKDE2KQotICAgICAgICBzZWxmLl9rZXkgPSBiYXNlNjQuYjY0ZW5j
b2RlKG9yaWdpbmFsX2tleSkKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAg
ICAgJyVzOiAlciAoJXMpJywKLSAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VCU09DS0VUX0tFWV9I
RUFERVIsCi0gICAgICAgICAgICBzZWxmLl9rZXksCi0gICAgICAgICAgICB1dGlsLmhleGlmeShv
cmlnaW5hbF9rZXkpKQotICAgICAgICBmaWVsZHMuYXBwZW5kKAotICAgICAgICAgICAgJyVzOiAl
c1xyXG4nICUgKGNvbW1vbi5TRUNfV0VCU09DS0VUX0tFWV9IRUFERVIsIHNlbGYuX2tleSkpCi0K
LSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy52ZXJzaW9uX2hlYWRlciA+IDA6Ci0gICAgICAgICAg
ICBmaWVsZHMuYXBwZW5kKCclczogJWRcclxuJyAlIChjb21tb24uU0VDX1dFQlNPQ0tFVF9WRVJT
SU9OX0hFQURFUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYuX29wdGlvbnMudmVyc2lvbl9oZWFkZXIpKQotICAgICAgICBlbGlmIHNlbGYuX29wdGlvbnMu
cHJvdG9jb2xfdmVyc2lvbiA9PSBfUFJPVE9DT0xfVkVSU0lPTl9IWUJJMDg6Ci0gICAgICAgICAg
ICBmaWVsZHMuYXBwZW5kKCclczogJWRcclxuJyAlIChjb21tb24uU0VDX1dFQlNPQ0tFVF9WRVJT
SU9OX0hFQURFUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bW1vbi5WRVJTSU9OX0hZQkkwOCkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmaWVsZHMu
YXBwZW5kKCclczogJWRcclxuJyAlIChjb21tb24uU0VDX1dFQlNPQ0tFVF9WRVJTSU9OX0hFQURF
UiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbi5WRVJT
SU9OX0hZQklfTEFURVNUKSkKLQotICAgICAgICBleHRlbnNpb25zX3RvX3JlcXVlc3QgPSBbXQot
Ci0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMuZGVmbGF0ZV9mcmFtZToKLSAgICAgICAgICAgIGV4
dGVuc2lvbnNfdG9fcmVxdWVzdC5hcHBlbmQoCi0gICAgICAgICAgICAgICAgY29tbW9uLkV4dGVu
c2lvblBhcmFtZXRlcihjb21tb24uREVGTEFURV9GUkFNRV9FWFRFTlNJT04pKQotCi0gICAgICAg
IGlmIHNlbGYuX29wdGlvbnMudXNlX3Blcm1lc3NhZ2VfZGVmbGF0ZToKLSAgICAgICAgICAgIGV4
dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCi0gICAgICAgICAgICAgICAgICAg
IGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQotICAgICAgICAgICAgIyBBY2Nl
cHQgdGhlIGNsaWVudF9tYXhfd2luZG93X2JpdHMgZXh0ZW5zaW9uIHBhcmFtZXRlciBieSBkZWZh
dWx0LgotICAgICAgICAgICAgZXh0ZW5zaW9uLmFkZF9wYXJhbWV0ZXIoCi0gICAgICAgICAgICAg
ICAgICAgIFBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yLgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9DTElFTlRfTUFYX1dJTkRPV19CSVRTX1BBUkFNLAotICAgICAgICAg
ICAgICAgICAgICBOb25lKQotICAgICAgICAgICAgZXh0ZW5zaW9uc190b19yZXF1ZXN0LmFwcGVu
ZChleHRlbnNpb24pCi0KLSAgICAgICAgaWYgbGVuKGV4dGVuc2lvbnNfdG9fcmVxdWVzdCkgIT0g
MDoKLSAgICAgICAgICAgIGZpZWxkcy5hcHBlbmQoCi0gICAgICAgICAgICAgICAgJyVzOiAlc1xy
XG4nICUKLSAgICAgICAgICAgICAgICAoY29tbW9uLlNFQ19XRUJTT0NLRVRfRVhURU5TSU9OU19I
RUFERVIsCi0gICAgICAgICAgICAgICAgIGNvbW1vbi5mb3JtYXRfZXh0ZW5zaW9ucyhleHRlbnNp
b25zX3RvX3JlcXVlc3QpKSkKLQotICAgICAgICBmb3IgZmllbGQgaW4gZmllbGRzOgotICAgICAg
ICAgICAgc2VsZi5fc29ja2V0LnNlbmRhbGwoZmllbGQpCi0KLSAgICAgICAgc2VsZi5fc29ja2V0
LnNlbmRhbGwoJ1xyXG4nKQotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnU2VudCBjbGll
bnRcJ3Mgb3BlbmluZyBoYW5kc2hha2UgaGVhZGVyczogJXInLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmllbGRzKQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1N0YXJ0IHJlYWRp
bmcgU3RhdHVzLUxpbmUnKQotCi0gICAgICAgIHN0YXR1c19saW5lID0gJycKLSAgICAgICAgd2hp
bGUgVHJ1ZToKLSAgICAgICAgICAgIGNoID0gX3JlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCAx
KQotICAgICAgICAgICAgc3RhdHVzX2xpbmUgKz0gY2gKLSAgICAgICAgICAgIGlmIGNoID09ICdc
bic6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICBtID0gcmUubWF0Y2goJ0hUVFAv
XFxkK1xcLlxcZCsgKFxcZFxcZFxcZCkgLipcclxuJywgc3RhdHVzX2xpbmUpCi0gICAgICAgIGlm
IG0gaXMgTm9uZToKLSAgICAgICAgICAgIHJhaXNlIENsaWVudEhhbmRzaGFrZUVycm9yKAotICAg
ICAgICAgICAgICAgICdXcm9uZyBzdGF0dXMgbGluZSBmb3JtYXQ6ICVyJyAlIHN0YXR1c19saW5l
KQotICAgICAgICBzdGF0dXNfY29kZSA9IG0uZ3JvdXAoMSkKLSAgICAgICAgaWYgc3RhdHVzX2Nv
ZGUgIT0gJzEwMSc6Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1VuZXhwZWN0ZWQg
c3RhdHVzIGNvZGUgJXMgd2l0aCBmb2xsb3dpbmcgJwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdoZWFkZXJzOiAlcicsIHN0YXR1c19jb2RlLCBzZWxmLl9yZWFkX2ZpZWxkcygpKQot
ICAgICAgICAgICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCi0gICAgICAgICAgICAgICAg
J0V4cGVjdGVkIEhUVFAgc3RhdHVzIGNvZGUgMTAxIGJ1dCBmb3VuZCAlcicgJSBzdGF0dXNfY29k
ZSkKLQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1JlY2VpdmVkIHZhbGlkIFN0YXR1cy1M
aW5lJykKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdTdGFydCByZWFkaW5nIGhlYWRlcnMg
dW50aWwgd2Ugc2VlIGFuIGVtcHR5IGxpbmUnKQotCi0gICAgICAgIGZpZWxkcyA9IHNlbGYuX3Jl
YWRfZmllbGRzKCkKLQotICAgICAgICBjaCA9IF9yZWNlaXZlX2J5dGVzKHNlbGYuX3NvY2tldCwg
MSkKLSAgICAgICAgaWYgY2ggIT0gJ1xuJzogICMgMHgwQQotICAgICAgICAgICAgcmFpc2UgQ2xp
ZW50SGFuZHNoYWtlRXJyb3IoCi0gICAgICAgICAgICAgICAgJ0V4cGVjdGVkIExGIGJ1dCBmb3Vu
ZCAlciB3aGlsZSByZWFkaW5nIHZhbHVlICVyIGZvciBoZWFkZXIgJwotICAgICAgICAgICAgICAg
ICduYW1lICVyJyAlIChjaCwgdmFsdWUsIG5hbWUpKQotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5k
ZWJ1ZygnUmVjZWl2ZWQgYW4gZW1wdHkgbGluZScpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1
ZygnU2VydmVyXCdzIG9wZW5pbmcgaGFuZHNoYWtlIGhlYWRlcnM6ICVyJywgZmllbGRzKQotCi0g
ICAgICAgIF92YWxpZGF0ZV9tYW5kYXRvcnlfaGVhZGVyKAotICAgICAgICAgICAgZmllbGRzLAot
ICAgICAgICAgICAgY29tbW9uLlVQR1JBREVfSEVBREVSLAotICAgICAgICAgICAgY29tbW9uLldF
QlNPQ0tFVF9VUEdSQURFX1RZUEUsCi0gICAgICAgICAgICBGYWxzZSkKLQotICAgICAgICBfdmFs
aWRhdGVfbWFuZGF0b3J5X2hlYWRlcigKLSAgICAgICAgICAgIGZpZWxkcywKLSAgICAgICAgICAg
IGNvbW1vbi5DT05ORUNUSU9OX0hFQURFUiwKLSAgICAgICAgICAgIGNvbW1vbi5VUEdSQURFX0NP
Tk5FQ1RJT05fVFlQRSwKLSAgICAgICAgICAgIEZhbHNlKQotCi0gICAgICAgIGFjY2VwdCA9IF9n
ZXRfbWFuZGF0b3J5X2hlYWRlcigKLSAgICAgICAgICAgIGZpZWxkcywgY29tbW9uLlNFQ19XRUJT
T0NLRVRfQUNDRVBUX0hFQURFUikKLQotICAgICAgICAjIFZhbGlkYXRlCi0gICAgICAgIHRyeToK
LSAgICAgICAgICAgIGJpbmFyeV9hY2NlcHQgPSBiYXNlNjQuYjY0ZGVjb2RlKGFjY2VwdCkKLSAg
ICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKLSAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUVycm9y
KAotICAgICAgICAgICAgICAgICdJbGxlZ2FsIHZhbHVlIGZvciBoZWFkZXIgJXM6ICVyJyAlCi0g
ICAgICAgICAgICAgICAgKGNvbW1vbi5TRUNfV0VCU09DS0VUX0FDQ0VQVF9IRUFERVIsIGFjY2Vw
dCkpCi0KLSAgICAgICAgaWYgbGVuKGJpbmFyeV9hY2NlcHQpICE9IDIwOgotICAgICAgICAgICAg
cmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCi0gICAgICAgICAgICAgICAgJ0RlY29kZWQgdmFs
dWUgb2YgJXMgaXMgbm90IDIwLWJ5dGUgbG9uZycgJQotICAgICAgICAgICAgICAgIGNvbW1vbi5T
RUNfV0VCU09DS0VUX0FDQ0VQVF9IRUFERVIpCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVn
KAotICAgICAgICAgICAgJ1Jlc3BvbnNlIGZvciBjaGFsbGVuZ2UgOiAlciAoJXMpJywKLSAgICAg
ICAgICAgIGFjY2VwdCwgdXRpbC5oZXhpZnkoYmluYXJ5X2FjY2VwdCkpCi0KLSAgICAgICAgYmlu
YXJ5X2V4cGVjdGVkX2FjY2VwdCA9IHV0aWwuc2hhMV9oYXNoKAotICAgICAgICAgICAgc2VsZi5f
a2V5ICsgY29tbW9uLldFQlNPQ0tFVF9BQ0NFUFRfVVVJRCkuZGlnZXN0KCkKLSAgICAgICAgZXhw
ZWN0ZWRfYWNjZXB0ID0gYmFzZTY0LmI2NGVuY29kZShiaW5hcnlfZXhwZWN0ZWRfYWNjZXB0KQot
Ci0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICdFeHBlY3RlZCByZXNw
b25zZSBmb3IgY2hhbGxlbmdlOiAlciAoJXMpJywKLSAgICAgICAgICAgIGV4cGVjdGVkX2FjY2Vw
dCwgdXRpbC5oZXhpZnkoYmluYXJ5X2V4cGVjdGVkX2FjY2VwdCkpCi0KLSAgICAgICAgaWYgYWNj
ZXB0ICE9IGV4cGVjdGVkX2FjY2VwdDoKLSAgICAgICAgICAgIHJhaXNlIENsaWVudEhhbmRzaGFr
ZUVycm9yKAotICAgICAgICAgICAgICAgICdJbnZhbGlkICVzIGhlYWRlcjogJXIgKGV4cGVjdGVk
OiAlcyknICUKLSAgICAgICAgICAgICAgICAoY29tbW9uLlNFQ19XRUJTT0NLRVRfQUNDRVBUX0hF
QURFUiwgYWNjZXB0LCBleHBlY3RlZF9hY2NlcHQpKQotCi0gICAgICAgIGRlZmxhdGVfZnJhbWVf
YWNjZXB0ZWQgPSBGYWxzZQotICAgICAgICBwZXJtZXNzYWdlX2RlZmxhdGVfYWNjZXB0ZWQgPSBG
YWxzZQotCi0gICAgICAgIGV4dGVuc2lvbnNfaGVhZGVyID0gZmllbGRzLmdldCgKLSAgICAgICAg
ICAgIGNvbW1vbi5TRUNfV0VCU09DS0VUX0VYVEVOU0lPTlNfSEVBREVSLmxvd2VyKCkpCi0gICAg
ICAgIGFjY2VwdGVkX2V4dGVuc2lvbnMgPSBbXQotICAgICAgICBpZiBleHRlbnNpb25zX2hlYWRl
ciBpcyBub3QgTm9uZSBhbmQgbGVuKGV4dGVuc2lvbnNfaGVhZGVyKSAhPSAwOgotICAgICAgICAg
ICAgYWNjZXB0ZWRfZXh0ZW5zaW9ucyA9IGNvbW1vbi5wYXJzZV9leHRlbnNpb25zKGV4dGVuc2lv
bnNfaGVhZGVyWzBdKQotCi0gICAgICAgICMgVE9ETyhiYXNoaSk6IFN1cHBvcnQgdGhlIG5ldyBz
dHlsZSBwZXJmcmFtZSBjb21wcmVzc2lvbiBleHRlbnNpb24uCi0gICAgICAgIGZvciBleHRlbnNp
b24gaW4gYWNjZXB0ZWRfZXh0ZW5zaW9uczoKLSAgICAgICAgICAgIGV4dGVuc2lvbl9uYW1lID0g
ZXh0ZW5zaW9uLm5hbWUoKQotICAgICAgICAgICAgaWYgKGV4dGVuc2lvbl9uYW1lID09IGNvbW1v
bi5ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTiBhbmQKLSAgICAgICAgICAgICAgICBzZWxmLl9vcHRp
b25zLmRlZmxhdGVfZnJhbWUpOgotICAgICAgICAgICAgICAgIGRlZmxhdGVfZnJhbWVfYWNjZXB0
ZWQgPSBUcnVlCi0gICAgICAgICAgICAgICAgcHJvY2Vzc29yID0gRGVmbGF0ZUZyYW1lRXh0ZW5z
aW9uUHJvY2Vzc29yKGV4dGVuc2lvbikKLSAgICAgICAgICAgICAgICB1bnVzZWRfZXh0ZW5zaW9u
X3Jlc3BvbnNlID0gcHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoKQotICAgICAgICAg
ICAgICAgIHNlbGYuX29wdGlvbnMuZGVmbGF0ZV9mcmFtZSA9IHByb2Nlc3NvcgotICAgICAgICAg
ICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBlbGlmIChleHRlbnNpb25fbmFtZSA9PSBjb21t
b24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTiBhbmQKLSAgICAgICAgICAgICAgICAgIHNl
bGYuX29wdGlvbnMudXNlX3Blcm1lc3NhZ2VfZGVmbGF0ZSk6Ci0gICAgICAgICAgICAgICAgcGVy
bWVzc2FnZV9kZWZsYXRlX2FjY2VwdGVkID0gVHJ1ZQotCi0gICAgICAgICAgICAgICAgZnJhbWVy
ID0gX2dldF9wZXJtZXNzYWdlX2RlZmxhdGVfZnJhbWVyKGV4dGVuc2lvbikKLSAgICAgICAgICAg
ICAgICBmcmFtZXIuc2V0X2NvbXByZXNzX291dGdvaW5nX2VuYWJsZWQoVHJ1ZSkKLSAgICAgICAg
ICAgICAgICBzZWxmLl9vcHRpb25zLnVzZV9wZXJtZXNzYWdlX2RlZmxhdGUgPSBmcmFtZXIKLSAg
ICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hh
a2VFcnJvcigKLSAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBleHRlbnNpb24gJXInICUgZXh0
ZW5zaW9uX25hbWUpCi0KLSAgICAgICAgaWYgKHNlbGYuX29wdGlvbnMuZGVmbGF0ZV9mcmFtZSBh
bmQgbm90IGRlZmxhdGVfZnJhbWVfYWNjZXB0ZWQpOgotICAgICAgICAgICAgcmFpc2UgQ2xpZW50
SGFuZHNoYWtlRXJyb3IoCi0gICAgICAgICAgICAgICAgJ1JlcXVlc3RlZCAlcywgYnV0IHRoZSBz
ZXJ2ZXIgcmVqZWN0ZWQgaXQnICUKLSAgICAgICAgICAgICAgICBjb21tb24uREVGTEFURV9GUkFN
RV9FWFRFTlNJT04pCi0KLSAgICAgICAgaWYgKHNlbGYuX29wdGlvbnMudXNlX3Blcm1lc3NhZ2Vf
ZGVmbGF0ZSBhbmQKLSAgICAgICAgICAgIG5vdCBwZXJtZXNzYWdlX2RlZmxhdGVfYWNjZXB0ZWQp
OgotICAgICAgICAgICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCi0gICAgICAgICAgICAg
ICAgICAgICdSZXF1ZXN0ZWQgJXMsIGJ1dCB0aGUgc2VydmVyIHJlamVjdGVkIGl0JyAlCi0gICAg
ICAgICAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQotCi0g
ICAgICAgICMgVE9ETyh0eW9zaGlubyk6IEhhbmRsZSBTZWMtV2ViU29ja2V0LVByb3RvY29sCi0g
ICAgICAgICMgVE9ETyh0eW9zaGlubyk6IEhhbmRsZSBDb29raWUsIGV0Yy4KLQotCi1jbGFzcyBD
bGllbnRIYW5kc2hha2VQcm9jZXNzb3JIeWJpMDAoQ2xpZW50SGFuZHNoYWtlQmFzZSk6Ci0gICAg
IiIiV2ViU29ja2V0IG9wZW5pbmcgaGFuZHNoYWtlIHByb2Nlc3NvciBmb3IKLSAgICBkcmFmdC1p
ZXRmLWh5YmktdGhld2Vic29ja2V0cHJvdG9jb2wtMDAgKGVxdWl2YWxlbnQgdG8KLSAgICBkcmFm
dC1oaXhpZS10aGV3ZWJzb2NrZXRwcm90b2NvbC03NikuCi0gICAgIiIiCi0KLSAgICBkZWYgX19p
bml0X18oc2VsZiwgc29ja2V0LCBvcHRpb25zKToKLSAgICAgICAgc3VwZXIoQ2xpZW50SGFuZHNo
YWtlUHJvY2Vzc29ySHliaTAwLCBzZWxmKS5fX2luaXRfXygpCi0KLSAgICAgICAgc2VsZi5fc29j
a2V0ID0gc29ja2V0Ci0gICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCi0KLSAgICAgICAg
c2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgaWYg
KHNlbGYuX29wdGlvbnMuZGVmbGF0ZV9mcmFtZSBvcgotICAgICAgICAgICAgc2VsZi5fb3B0aW9u
cy51c2VfcGVybWVzc2FnZV9kZWZsYXRlKToKLSAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwo
J0h5QmkgMDAgZG9lc25cJ3Qgc3VwcG9ydCBleHRlbnNpb25zLicpCi0gICAgICAgICAgICBzeXMu
ZXhpdCgxKQotCi0gICAgZGVmIGhhbmRzaGFrZShzZWxmKToKLSAgICAgICAgIiIiUGVyZm9ybXMg
b3BlbmluZyBoYW5kc2hha2Ugb24gdGhlIHNwZWNpZmllZCBzb2NrZXQuCi0KLSAgICAgICAgUmFp
c2VzOgotICAgICAgICAgICAgQ2xpZW50SGFuZHNoYWtlRXJyb3I6IGhhbmRzaGFrZSBmYWlsZWQu
Ci0gICAgICAgICIiIgotCi0gICAgICAgICMgNC4xIDUuIHNlbmQgcmVxdWVzdCBsaW5lLgotICAg
ICAgICBzZWxmLl9zb2NrZXQuc2VuZGFsbChfYnVpbGRfbWV0aG9kX2xpbmUoc2VsZi5fb3B0aW9u
cy5yZXNvdXJjZSkpCi0gICAgICAgICMgNC4xIDYuIExldCAvZmllbGRzLyBiZSBhbiBlbXB0eSBs
aXN0IG9mIHN0cmluZ3MuCi0gICAgICAgIGZpZWxkcyA9IFtdCi0gICAgICAgICMgNC4xIDcuIEFk
ZCB0aGUgc3RyaW5nICJVcGdyYWRlOiBXZWJTb2NrZXQiIHRvIC9maWVsZHMvLgotICAgICAgICBm
aWVsZHMuYXBwZW5kKF9VUEdSQURFX0hFQURFUl9ISVhJRTc1KQotICAgICAgICAjIDQuMSA4LiBB
ZGQgdGhlIHN0cmluZyAiQ29ubmVjdGlvbjogVXBncmFkZSIgdG8gL2ZpZWxkcy8uCi0gICAgICAg
IGZpZWxkcy5hcHBlbmQoX0NPTk5FQ1RJT05fSEVBREVSKQotICAgICAgICAjIDQuMSA5LTEyLiBB
ZGQgSG9zdDogZmllbGQgdG8gL2ZpZWxkcy8uCi0gICAgICAgIGZpZWxkcy5hcHBlbmQoX2Zvcm1h
dF9ob3N0X2hlYWRlcigKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuc2VydmVyX2hvc3QsCi0g
ICAgICAgICAgICBzZWxmLl9vcHRpb25zLnNlcnZlcl9wb3J0LAotICAgICAgICAgICAgc2VsZi5f
b3B0aW9ucy51c2VfdGxzKSkKLSAgICAgICAgIyA0LjEgMTMuIEFkZCBPcmlnaW46IGZpZWxkIHRv
IC9maWVsZHMvLgotICAgICAgICBpZiBub3Qgc2VsZi5fb3B0aW9ucy5vcmlnaW46Ci0gICAgICAg
ICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcigKLSAgICAgICAgICAgICAgICAnU3BlY2lm
eSB0aGUgb3JpZ2luIG9mIHRoZSBjb25uZWN0aW9uIGJ5IC0tb3JpZ2luIGZsYWcnKQotICAgICAg
ICBmaWVsZHMuYXBwZW5kKF9vcmlnaW5faGVhZGVyKGNvbW1vbi5PUklHSU5fSEVBREVSLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMub3JpZ2luKSkK
LSAgICAgICAgIyBUT0RPOiA0LjEgMTQgQWRkIFNlYy1XZWJTb2NrZXQtUHJvdG9jb2w6IGZpZWxk
IHRvIC9maWVsZHMvLgotICAgICAgICAjIFRPRE86IDQuMSAxNSBBZGQgY29va2llIGhlYWRlcnMg
dG8gL2ZpZWxkcy8uCi0KLSAgICAgICAgIyA0LjEgMTYtMjMuIEFkZCBTZWMtV2ViU29ja2V0LUtl
eTxuPiB0byAvZmllbGRzLy4KLSAgICAgICAgc2VsZi5fbnVtYmVyMSwga2V5MSA9IHNlbGYuX2dl
bmVyYXRlX3NlY193ZWJzb2NrZXRfa2V5KCkKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdO
dW1iZXIxOiAlZCcsIHNlbGYuX251bWJlcjEpCi0gICAgICAgIGZpZWxkcy5hcHBlbmQoJyVzOiAl
c1xyXG4nICUgKGNvbW1vbi5TRUNfV0VCU09DS0VUX0tFWTFfSEVBREVSLCBrZXkxKSkKLSAgICAg
ICAgc2VsZi5fbnVtYmVyMiwga2V5MiA9IHNlbGYuX2dlbmVyYXRlX3NlY193ZWJzb2NrZXRfa2V5
KCkKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdOdW1iZXIyOiAlZCcsIHNlbGYuX251bWJl
cjIpCi0gICAgICAgIGZpZWxkcy5hcHBlbmQoJyVzOiAlc1xyXG4nICUgKGNvbW1vbi5TRUNfV0VC
U09DS0VUX0tFWTJfSEVBREVSLCBrZXkyKSkKLQotICAgICAgICBmaWVsZHMuYXBwZW5kKCclczog
MFxyXG4nICUgY29tbW9uLlNFQ19XRUJTT0NLRVRfRFJBRlRfSEVBREVSKQotCi0gICAgICAgICMg
NC4xIDI0LiBGb3IgZWFjaCBzdHJpbmcgaW4gL2ZpZWxkcy8sIGluIGEgcmFuZG9tIG9yZGVyOiBz
ZW5kIHRoZQotICAgICAgICAjIHN0cmluZywgZW5jb2RlZCBhcyBVVEYtOCwgZm9sbG93ZWQgYnkg
YSBVVEYtOCBlbmNvZGVkIFUrMDAwRCBDQVJSSUFHRQotICAgICAgICAjIFJFVFVSTiBVKzAwMEEg
TElORSBGRUVEIGNoYXJhY3RlciBwYWlyIChDUkxGKS4KLSAgICAgICAgcmFuZG9tLnNodWZmbGUo
ZmllbGRzKQotICAgICAgICBmb3IgZmllbGQgaW4gZmllbGRzOgotICAgICAgICAgICAgc2VsZi5f
c29ja2V0LnNlbmRhbGwoZmllbGQpCi0gICAgICAgICMgNC4xIDI1LiBzZW5kIGEgVVRGLTgtZW5j
b2RlZCBVKzAwMEQgQ0FSUklBR0UgUkVUVVJOIFUrMDAwQSBMSU5FIEZFRUQKLSAgICAgICAgIyBj
aGFyYWN0ZXIgcGFpciAoQ1JMRikuCi0gICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKCdcclxu
JykKLSAgICAgICAgIyA0LjEgMjYuIGxldCAva2V5My8gYmUgYSBzdHJpbmcgY29uc2lzdGluZyBv
ZiBlaWdodCByYW5kb20gYnl0ZXMgKG9yCi0gICAgICAgICMgZXF1aXZhbGVudGx5LCBhIHJhbmRv
bSA2NCBiaXQgaW50ZWdlciBlbmNvZGVkIGluIGEgYmlnLWVuZGlhbiBvcmRlcikuCi0gICAgICAg
IHNlbGYuX2tleTMgPSBzZWxmLl9nZW5lcmF0ZV9rZXkzKCkKLSAgICAgICAgIyA0LjEgMjcuIHNl
bmQgL2tleTMvIHRvIHRoZSBzZXJ2ZXIuCi0gICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKHNl
bGYuX2tleTMpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICdLZXkz
OiAlciAoJXMpJywgc2VsZi5fa2V5MywgdXRpbC5oZXhpZnkoc2VsZi5fa2V5MykpCi0KLSAgICAg
ICAgc2VsZi5fbG9nZ2VyLmluZm8oJ1NlbnQgaGFuZHNoYWtlJykKLQotICAgICAgICAjIDQuMSAy
OC4gUmVhZCBieXRlcyBmcm9tIHRoZSBzZXJ2ZXIgdW50aWwgZWl0aGVyIHRoZSBjb25uZWN0aW9u
Ci0gICAgICAgICMgY2xvc2VzLCBvciBhIDB4MEEgYnl0ZSBpcyByZWFkLiBsZXQgL2ZpZWxkLyBi
ZSB0aGVzZSBieXRlcywgaW5jbHVkaW5nCi0gICAgICAgICMgdGhlIDB4MEEgYnl0ZXMuCi0gICAg
ICAgIGZpZWxkID0gJycKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIGNoID0gX3Jl
Y2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCAxKQotICAgICAgICAgICAgZmllbGQgKz0gY2gKLSAg
ICAgICAgICAgIGlmIGNoID09ICdcbic6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAg
IyBpZiAvZmllbGQvIGlzIG5vdCBhdCBsZWFzdCBzZXZlbiBieXRlcyBsb25nLCBvciBpZiB0aGUg
bGFzdAotICAgICAgICAjIHR3byBieXRlcyBhcmVuJ3QgMHgwRCBhbmQgMHgwQSByZXNwZWN0aXZl
bHksIG9yIGlmIGl0IGRvZXMgbm90Ci0gICAgICAgICMgY29udGFpbiBhdCBsZWFzdCB0d28gMHgy
MCBieXRlcywgdGhlbiBmYWlsIHRoZSBXZWJTb2NrZXQgY29ubmVjdGlvbgotICAgICAgICAjIGFu
ZCBhYm9ydCB0aGVzZSBzdGVwcy4KLSAgICAgICAgaWYgbGVuKGZpZWxkKSA8IDcgb3Igbm90IGZp
ZWxkLmVuZHN3aXRoKCdcclxuJyk6Ci0gICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VF
cnJvcignV3Jvbmcgc3RhdHVzIGxpbmU6ICVyJyAlIGZpZWxkKQotICAgICAgICBtID0gcmUubWF0
Y2goJ1teIF0qIChbXiBdKikgLionLCBmaWVsZCkKLSAgICAgICAgaWYgbSBpcyBOb25lOgotICAg
ICAgICAgICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCi0gICAgICAgICAgICAgICAgJ05v
IEhUVFAgc3RhdHVzIGNvZGUgZm91bmQgaW4gc3RhdHVzIGxpbmU6ICVyJyAlIGZpZWxkKQotICAg
ICAgICAjIDQuMSAyOS4gbGV0IC9jb2RlLyBiZSB0aGUgc3Vic3RyaW5nIG9mIC9maWVsZC8gdGhh
dCBzdGFydHMgZnJvbSB0aGUKLSAgICAgICAgIyBieXRlIGFmdGVyIHRoZSBmaXJzdCAweDIwIGJ5
dGUsIGFuZCBlbmRzIHdpdGggdGhlIGJ5dGUgYmVmb3JlIHRoZQotICAgICAgICAjIHNlY29uZCAw
eDIwIGJ5dGUuCi0gICAgICAgIGNvZGUgPSBtLmdyb3VwKDEpCi0gICAgICAgICMgNC4xIDMwLiBp
ZiAvY29kZS8gaXMgbm90IHRocmVlIGJ5dGVzIGxvbmcsIG9yIGlmIGFueSBvZiB0aGUgYnl0ZXMg
aW4KLSAgICAgICAgIyAvY29kZS8gYXJlIG5vdCBpbiB0aGUgcmFuZ2UgMHgzMCB0byAweDkwLCB0
aGVuIGZhaWwgdGhlIFdlYlNvY2tldAotICAgICAgICAjIGNvbm5lY3Rpb24gYW5kIGFib3J0IHRo
ZXNlIHN0ZXBzLgotICAgICAgICBpZiBub3QgcmUubWF0Y2goJ1swLTldWzAtOV1bMC05XScsIGNv
ZGUpOgotICAgICAgICAgICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCi0gICAgICAgICAg
ICAgICAgJ0hUVFAgc3RhdHVzIGNvZGUgJXIgaXMgbm90IHRocmVlIGRpZ2l0IGluIHN0YXR1cyBs
aW5lOiAlcicgJQotICAgICAgICAgICAgICAgIChjb2RlLCBmaWVsZCkpCi0gICAgICAgICMgNC4x
IDMxLiBpZiAvY29kZS8sIGludGVycHJldGVkIGFzIFVURi04LCBpcyAiMTAxIiwgdGhlbiBtb3Zl
IHRvIHRoZQotICAgICAgICAjIG5leHQgc3RlcC4KLSAgICAgICAgaWYgY29kZSAhPSAnMTAxJzoK
LSAgICAgICAgICAgIHJhaXNlIENsaWVudEhhbmRzaGFrZUVycm9yKAotICAgICAgICAgICAgICAg
ICdFeHBlY3RlZCBIVFRQIHN0YXR1cyBjb2RlIDEwMSBidXQgZm91bmQgJXIgaW4gc3RhdHVzIGxp
bmU6ICcKLSAgICAgICAgICAgICAgICAnJXInICUgKGNvZGUsIGZpZWxkKSkKLSAgICAgICAgIyA0
LjEgMzItMzkuIHJlYWQgZmllbGRzIGludG8gL2ZpZWxkcy8KLSAgICAgICAgZmllbGRzID0gc2Vs
Zi5fcmVhZF9maWVsZHMoKQotICAgICAgICAjIDQuMSA0MC4gX0ZpZWxkcyBwcm9jZXNzaW5nXwot
ICAgICAgICAjIHJlYWQgYSBieXRlIGZyb20gc2VydmVyCi0gICAgICAgIGNoID0gX3JlY2VpdmVf
Ynl0ZXMoc2VsZi5fc29ja2V0LCAxKQotICAgICAgICBpZiBjaCAhPSAnXG4nOiAgIyAweDBBCi0g
ICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcignRXhwZWN0ZWQgTEYgYnV0IGZv
dW5kICVyJyAlIGNoKQotICAgICAgICAjIDQuMSA0MS4gY2hlY2sgL2ZpZWxkcy8KLSAgICAgICAg
IyBUT0RPKHVrYWkpOiBwcm90b2NvbAotICAgICAgICAjIGlmIHRoZSBlbnRyeSdzIG5hbWUgaXMg
InVwZ3JhZGUiCi0gICAgICAgICMgIGlmIHRoZSB2YWx1ZSBpcyBub3QgZXhhY3RseSBlcXVhbCB0
byB0aGUgc3RyaW5nICJXZWJTb2NrZXQiLAotICAgICAgICAjICB0aGVuIGZhaWwgdGhlIFdlYlNv
Y2tldCBjb25uZWN0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KLSAgICAgICAgX3ZhbGlkYXRl
X21hbmRhdG9yeV9oZWFkZXIoCi0gICAgICAgICAgICBmaWVsZHMsCi0gICAgICAgICAgICBjb21t
b24uVVBHUkFERV9IRUFERVIsCi0gICAgICAgICAgICBjb21tb24uV0VCU09DS0VUX1VQR1JBREVf
VFlQRV9ISVhJRTc1LAotICAgICAgICAgICAgVHJ1ZSkKLSAgICAgICAgIyBpZiB0aGUgZW50cnkn
cyBuYW1lIGlzICJjb25uZWN0aW9uIgotICAgICAgICAjICBpZiB0aGUgdmFsdWUsIGNvbnZlcnRl
ZCB0byBBU0NJSSBsb3dlcmNhc2UsIGlzIG5vdCBleGFjdGx5IGVxdWFsCi0gICAgICAgICMgIHRv
IHRoZSBzdHJpbmcgInVwZ3JhZGUiLCB0aGVuIGZhaWwgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9u
IGFuZAotICAgICAgICAjICBhYm9ydCB0aGVzZSBzdGVwcy4KLSAgICAgICAgX3ZhbGlkYXRlX21h
bmRhdG9yeV9oZWFkZXIoCi0gICAgICAgICAgICBmaWVsZHMsCi0gICAgICAgICAgICBjb21tb24u
Q09OTkVDVElPTl9IRUFERVIsCi0gICAgICAgICAgICBjb21tb24uVVBHUkFERV9DT05ORUNUSU9O
X1RZUEUsCi0gICAgICAgICAgICBGYWxzZSkKLQotICAgICAgICBvcmlnaW4gPSBfZ2V0X21hbmRh
dG9yeV9oZWFkZXIoCi0gICAgICAgICAgICBmaWVsZHMsIGNvbW1vbi5TRUNfV0VCU09DS0VUX09S
SUdJTl9IRUFERVIpCi0KLSAgICAgICAgbG9jYXRpb24gPSBfZ2V0X21hbmRhdG9yeV9oZWFkZXIo
Ci0gICAgICAgICAgICBmaWVsZHMsIGNvbW1vbi5TRUNfV0VCU09DS0VUX0xPQ0FUSU9OX0hFQURF
UikKLQotICAgICAgICAjIFRPRE8odWthaSk6IGNoZWNrIG9yaWdpbiwgbG9jYXRpb24sIGNvb2tp
ZSwgLi4KLQotICAgICAgICAjIDQuMSA0Mi4gbGV0IC9jaGFsbGVuZ2UvIGJlIHRoZSBjb25jYXRl
bmF0aW9uIG9mIC9udW1iZXJfMS8sCi0gICAgICAgICMgZXhwcmVzc2VkIGFzIGEgYmlnIGVuZGlh
biAzMiBiaXQgaW50ZWdlciwgL251bWJlcl8yLywgZXhwcmVzc2VkCi0gICAgICAgICMgYXMgYmln
IGVuZGlhbiAzMiBiaXQgaW50ZWdlciwgYW5kIHRoZSBlaWdodCBieXRlcyBvZiAva2V5XzMvIGlu
IHRoZQotICAgICAgICAjIG9yZGVyIHRoZXkgd2VyZSBzZW50IG9uIHRoZSB3aXJlLgotICAgICAg
ICBjaGFsbGVuZ2UgPSBzdHJ1Y3QucGFjaygnIUknLCBzZWxmLl9udW1iZXIxKQotICAgICAgICBj
aGFsbGVuZ2UgKz0gc3RydWN0LnBhY2soJyFJJywgc2VsZi5fbnVtYmVyMikKLSAgICAgICAgY2hh
bGxlbmdlICs9IHNlbGYuX2tleTMKLQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAg
ICAgICAgICAnQ2hhbGxlbmdlOiAlciAoJXMpJywgY2hhbGxlbmdlLCB1dGlsLmhleGlmeShjaGFs
bGVuZ2UpKQotCi0gICAgICAgICMgNC4xIDQzLiBsZXQgL2V4cGVjdGVkLyBiZSB0aGUgTUQ1IGZp
bmdlcnByaW50IG9mIC9jaGFsbGVuZ2UvIGFzIGEKLSAgICAgICAgIyBiaWctZW5kaWFuIDEyOCBi
aXQgc3RyaW5nLgotICAgICAgICBleHBlY3RlZCA9IHV0aWwubWQ1X2hhc2goY2hhbGxlbmdlKS5k
aWdlc3QoKQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAnRXhwZWN0
ZWQgY2hhbGxlbmdlIHJlc3BvbnNlOiAlciAoJXMpJywKLSAgICAgICAgICAgIGV4cGVjdGVkLCB1
dGlsLmhleGlmeShleHBlY3RlZCkpCi0KLSAgICAgICAgIyA0LjEgNDQuIHJlYWQgc2l4dGVlbiBi
eXRlcyBmcm9tIHRoZSBzZXJ2ZXIuCi0gICAgICAgICMgbGV0IC9yZXBseS8gYmUgdGhvc2UgYnl0
ZXMuCi0gICAgICAgIHJlcGx5ID0gX3JlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCAxNikKLSAg
ICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAgICAgJ0FjdHVhbCBjaGFsbGVuZ2Ug
cmVzcG9uc2U6ICVyICglcyknLCByZXBseSwgdXRpbC5oZXhpZnkocmVwbHkpKQotCi0gICAgICAg
ICMgNC4xIDQ1LiBpZiAvcmVwbHkvIGRvZXMgbm90IGV4YWN0bHkgZXF1YWwgL2V4cGVjdGVkLywg
dGhlbiBmYWlsCi0gICAgICAgICMgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uIGFuZCBhYm9ydCB0
aGVzZSBzdGVwcy4KLSAgICAgICAgaWYgZXhwZWN0ZWQgIT0gcmVwbHk6Ci0gICAgICAgICAgICBy
YWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcigKLSAgICAgICAgICAgICAgICAnQmFkIGNoYWxsZW5n
ZSByZXNwb25zZTogJXIgKGV4cGVjdGVkKSAhPSAlciAoYWN0dWFsKScgJQotICAgICAgICAgICAg
ICAgIChleHBlY3RlZCwgcmVwbHkpKQotICAgICAgICAjIDQuMSA0Ni4gVGhlICpXZWJTb2NrZXQg
Y29ubmVjdGlvbiBpcyBlc3RhYmxpc2hlZCouCi0KLSAgICBkZWYgX2dlbmVyYXRlX3NlY193ZWJz
b2NrZXRfa2V5KHNlbGYpOgotICAgICAgICAjIDQuMSAxNi4gbGV0IC9zcGFjZXNfbi8gYmUgYSBy
YW5kb20gaW50ZWdlciBmcm9tIDEgdG8gMTIgaW5jbHVzaXZlLgotICAgICAgICBzcGFjZXMgPSBy
YW5kb20ucmFuZGludCgxLCAxMikKLSAgICAgICAgIyA0LjEgMTcuIGxldCAvbWF4X24vIGJlIHRo
ZSBsYXJnZXN0IGludGVnZXIgbm90IGdyZWF0ZXIgdGhhbgotICAgICAgICAjICA0LDI5NCw5Njcs
Mjk1IGRpdmlkZWQgYnkgL3NwYWNlc19uLy4KLSAgICAgICAgbWF4bnVtID0gNDI5NDk2NzI5NSAv
IHNwYWNlcwotICAgICAgICAjIDQuMSAxOC4gbGV0IC9udW1iZXJfbi8gYmUgYSByYW5kb20gaW50
ZWdlciBmcm9tIDAgdG8gL21heF9uLwotICAgICAgICAjIGluY2x1c2l2ZS4KLSAgICAgICAgbnVt
YmVyID0gcmFuZG9tLnJhbmRpbnQoMCwgbWF4bnVtKQotICAgICAgICAjIDQuMSAxOS4gbGV0IC9w
cm9kdWN0X24vIGJlIHRoZSByZXN1bHQgb2YgbXVsdGlwbHlpbmcgL251bWJlcl9uLyBhbmQKLSAg
ICAgICAgIyAvc3BhY2VzX24vIHRvZ2V0aGVyLgotICAgICAgICBwcm9kdWN0ID0gbnVtYmVyICog
c3BhY2VzCi0gICAgICAgICMgNC4xIDIwLiBsZXQgL2tleV9uLyBiZSBhIHN0cmluZyBjb25zaXN0
aW5nIG9mIC9wcm9kdWN0X24vLCBleHByZXNzZWQKLSAgICAgICAgIyBpbiBiYXNlIHRlbiB1c2lu
ZyB0aGUgbnVtZXJhbHMgaW4gdGhlIHJhbmdlIFUrMDAzMCBESUdJVCBaRVJPICgwKSB0bwotICAg
ICAgICAjIFUrMDAzOSBESUdJVCBOSU5FICg5KS4KLSAgICAgICAga2V5ID0gc3RyKHByb2R1Y3Qp
Ci0gICAgICAgICMgNC4xIDIxLiBpbnNlcnQgYmV0d2VlbiBvbmUgYW5kIHR3ZWx2ZSByYW5kb20g
Y2hhcmFjdGVycyBmcm9tIHRoZQotICAgICAgICAjIHJhbmdlIFUrMDAyMSB0byBVKzAwMkYgYW5k
IFUrMDAzQSB0byBVKzAwN0UgaW50byAva2V5X24vIGF0IHJhbmRvbQotICAgICAgICAjIHBvc2l0
aW9ucy4KLSAgICAgICAgYXZhaWxhYmxlX2NoYXJzID0gcmFuZ2UoMHgyMSwgMHgyZiArIDEpICsg
cmFuZ2UoMHgzYSwgMHg3ZSArIDEpCi0gICAgICAgIG4gPSByYW5kb20ucmFuZGludCgxLCAxMikK
LSAgICAgICAgZm9yIF8gaW4geHJhbmdlKG4pOgotICAgICAgICAgICAgY2ggPSByYW5kb20uY2hv
aWNlKGF2YWlsYWJsZV9jaGFycykKLSAgICAgICAgICAgIHBvcyA9IHJhbmRvbS5yYW5kaW50KDAs
IGxlbihrZXkpKQotICAgICAgICAgICAga2V5ID0ga2V5WzA6cG9zXSArIGNocihjaCkgKyBrZXlb
cG9zOl0KLSAgICAgICAgIyA0LjEgMjIuIGluc2VydCAvc3BhY2VzX24vIFUrMDAyMCBTUEFDRSBj
aGFyYWN0ZXJzIGludG8gL2tleV9uLyBhdAotICAgICAgICAjIHJhbmRvbSBwb3NpdGlvbnMgb3Ro
ZXIgdGhhbiBzdGFydCBvciBlbmQgb2YgdGhlIHN0cmluZy4KLSAgICAgICAgZm9yIF8gaW4geHJh
bmdlKHNwYWNlcyk6Ci0gICAgICAgICAgICBwb3MgPSByYW5kb20ucmFuZGludCgxLCBsZW4oa2V5
KSAtIDEpCi0gICAgICAgICAgICBrZXkgPSBrZXlbMDpwb3NdICsgJyAnICsga2V5W3BvczpdCi0g
ICAgICAgIHJldHVybiBudW1iZXIsIGtleQotCi0gICAgZGVmIF9nZW5lcmF0ZV9rZXkzKHNlbGYp
OgotICAgICAgICAjIDQuMSAyNi4gbGV0IC9rZXkzLyBiZSBhIHN0cmluZyBjb25zaXN0aW5nIG9m
IGVpZ2h0IHJhbmRvbSBieXRlcyAob3IKLSAgICAgICAgIyBlcXVpdmFsZW50bHksIGEgcmFuZG9t
IDY0IGJpdCBpbnRlZ2VyIGVuY29kZWQgaW4gYSBiaWctZW5kaWFuIG9yZGVyKS4KLSAgICAgICAg
cmV0dXJuICcnLmpvaW4oW2NocihyYW5kb20ucmFuZGludCgwLCAyNTUpKSBmb3IgXyBpbiB4cmFu
Z2UoOCldKQotCi0KLWNsYXNzIENsaWVudENvbm5lY3Rpb24ob2JqZWN0KToKLSAgICAiIiJBIHdy
YXBwZXIgZm9yIHNvY2tldCBvYmplY3QgdG8gcHJvdmlkZSB0aGUgbXBfY29ubiBpbnRlcmZhY2Uu
Ci0gICAgbW9kX3B5d2Vic29ja2V0IGxpYnJhcnkgaXMgZGVzaWduZWQgdG8gYmUgd29ya2luZyBv
biBBcGFjaGUgbW9kX3B5dGhvbidzCi0gICAgbXBfY29ubiBvYmplY3QuCi0gICAgIiIiCi0KLSAg
ICBkZWYgX19pbml0X18oc2VsZiwgc29ja2V0KToKLSAgICAgICAgc2VsZi5fc29ja2V0ID0gc29j
a2V0Ci0KLSAgICBkZWYgd3JpdGUoc2VsZiwgZGF0YSk6Ci0gICAgICAgIHNlbGYuX3NvY2tldC5z
ZW5kYWxsKGRhdGEpCi0KLSAgICBkZWYgcmVhZChzZWxmLCBuKToKLSAgICAgICAgcmV0dXJuIHNl
bGYuX3NvY2tldC5yZWN2KG4pCi0KLSAgICBkZWYgZ2V0X3JlbW90ZV9hZGRyKHNlbGYpOgotICAg
ICAgICByZXR1cm4gc2VsZi5fc29ja2V0LmdldHBlZXJuYW1lKCkKLSAgICByZW1vdGVfYWRkciA9
IHByb3BlcnR5KGdldF9yZW1vdGVfYWRkcikKLQotCi1jbGFzcyBDbGllbnRSZXF1ZXN0KG9iamVj
dCk6Ci0gICAgIiIiQSB3cmFwcGVyIGNsYXNzIGp1c3QgdG8gbWFrZSBpdCBhYmxlIHRvIHBhc3Mg
YSBzb2NrZXQgb2JqZWN0IHRvCi0gICAgZnVuY3Rpb25zIHRoYXQgZXhwZWN0IGEgbXBfcmVxdWVz
dCBvYmplY3QuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgc29ja2V0KToKLSAg
ICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAg
ICAgc2VsZi5fc29ja2V0ID0gc29ja2V0Ci0gICAgICAgIHNlbGYuY29ubmVjdGlvbiA9IENsaWVu
dENvbm5lY3Rpb24oc29ja2V0KQotCi0KLWRlZiBfaW1wb3J0X3NzbCgpOgotICAgIGdsb2JhbCBz
c2wKLSAgICB0cnk6Ci0gICAgICAgIGltcG9ydCBzc2wKLSAgICAgICAgcmV0dXJuIFRydWUKLSAg
ICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgIHJldHVybiBGYWxzZQotCi0KLWRlZiBfaW1w
b3J0X3B5b3BlbnNzbCgpOgotICAgIGdsb2JhbCBPcGVuU1NMCi0gICAgdHJ5OgotICAgICAgICBp
bXBvcnQgT3BlblNTTC5TU0wKLSAgICAgICAgcmV0dXJuIFRydWUKLSAgICBleGNlcHQgSW1wb3J0
RXJyb3I6Ci0gICAgICAgIHJldHVybiBGYWxzZQotCi0KLWNsYXNzIEVjaG9DbGllbnQob2JqZWN0
KToKLSAgICAiIiJXZWJTb2NrZXQgZWNobyBjbGllbnQuIiIiCi0KLSAgICBkZWYgX19pbml0X18o
c2VsZiwgb3B0aW9ucyk6Ci0gICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCi0gICAgICAg
IHNlbGYuX3NvY2tldCA9IE5vbmUKLQotICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9j
bGFzc19sb2dnZXIoc2VsZikKLQotICAgIGRlZiBydW4oc2VsZik6Ci0gICAgICAgICIiIlJ1biB0
aGUgY2xpZW50LgotCi0gICAgICAgIFNoYWtlIGhhbmRzIGFuZCB0aGVuIHJlcGVhdCBzZW5kaW5n
IG1lc3NhZ2UgYW5kIHJlY2VpdmluZyBpdHMgZWNoby4KLSAgICAgICAgIiIiCi0KLSAgICAgICAg
c2VsZi5fc29ja2V0ID0gc29ja2V0LnNvY2tldCgpCi0gICAgICAgIHNlbGYuX3NvY2tldC5zZXR0
aW1lb3V0KHNlbGYuX29wdGlvbnMuc29ja2V0X3RpbWVvdXQpCi0gICAgICAgIHRyeToKLSAgICAg
ICAgICAgIHNlbGYuX3NvY2tldC5jb25uZWN0KChzZWxmLl9vcHRpb25zLnNlcnZlcl9ob3N0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuc2VydmVyX3Bv
cnQpKQotICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy51c2VfdGxzOgotICAgICAgICAgICAg
ICAgIHNlbGYuX3NvY2tldCA9IF9UTFNTb2NrZXQoCi0gICAgICAgICAgICAgICAgICAgIHNlbGYu
X3NvY2tldCwKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy50bHNfbW9kdWxlLAot
ICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLnRsc192ZXJzaW9uLAotICAgICAgICAg
ICAgICAgICAgICBzZWxmLl9vcHRpb25zLmRpc2FibGVfdGxzX2NvbXByZXNzaW9uKQotCi0gICAg
ICAgICAgICB2ZXJzaW9uID0gc2VsZi5fb3B0aW9ucy5wcm90b2NvbF92ZXJzaW9uCi0KLSAgICAg
ICAgICAgIGlmICh2ZXJzaW9uID09IF9QUk9UT0NPTF9WRVJTSU9OX0hZQkkwOCBvcgotICAgICAg
ICAgICAgICAgIHZlcnNpb24gPT0gX1BST1RPQ09MX1ZFUlNJT05fSFlCSTEzKToKLSAgICAgICAg
ICAgICAgICBzZWxmLl9oYW5kc2hha2UgPSBDbGllbnRIYW5kc2hha2VQcm9jZXNzb3IoCi0gICAg
ICAgICAgICAgICAgICAgIHNlbGYuX3NvY2tldCwgc2VsZi5fb3B0aW9ucykKLSAgICAgICAgICAg
IGVsaWYgdmVyc2lvbiA9PSBfUFJPVE9DT0xfVkVSU0lPTl9IWUJJMDA6Ci0gICAgICAgICAgICAg
ICAgc2VsZi5faGFuZHNoYWtlID0gQ2xpZW50SGFuZHNoYWtlUHJvY2Vzc29ySHliaTAwKAotICAg
ICAgICAgICAgICAgICAgICBzZWxmLl9zb2NrZXQsIHNlbGYuX29wdGlvbnMpCi0gICAgICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0gICAgICAgICAgICAg
ICAgICAgICdJbnZhbGlkIC0tcHJvdG9jb2wtdmVyc2lvbiBmbGFnOiAlcicgJSB2ZXJzaW9uKQot
Ci0gICAgICAgICAgICBzZWxmLl9oYW5kc2hha2UuaGFuZHNoYWtlKCkKLQotICAgICAgICAgICAg
c2VsZi5fbG9nZ2VyLmluZm8oJ0Nvbm5lY3Rpb24gZXN0YWJsaXNoZWQnKQotCi0gICAgICAgICAg
ICByZXF1ZXN0ID0gQ2xpZW50UmVxdWVzdChzZWxmLl9zb2NrZXQpCi0KLSAgICAgICAgICAgIHZl
cnNpb25fbWFwID0gewotICAgICAgICAgICAgICAgIF9QUk9UT0NPTF9WRVJTSU9OX0hZQkkwODog
Y29tbW9uLlZFUlNJT05fSFlCSTA4LAotICAgICAgICAgICAgICAgIF9QUk9UT0NPTF9WRVJTSU9O
X0hZQkkxMzogY29tbW9uLlZFUlNJT05fSFlCSTEzLAotICAgICAgICAgICAgICAgIF9QUk9UT0NP
TF9WRVJTSU9OX0hZQkkwMDogY29tbW9uLlZFUlNJT05fSFlCSTAwfQotICAgICAgICAgICAgcmVx
dWVzdC53c192ZXJzaW9uID0gdmVyc2lvbl9tYXBbdmVyc2lvbl0KLQotICAgICAgICAgICAgaWYg
KHZlcnNpb24gPT0gX1BST1RPQ09MX1ZFUlNJT05fSFlCSTA4IG9yCi0gICAgICAgICAgICAgICAg
dmVyc2lvbiA9PSBfUFJPVE9DT0xfVkVSU0lPTl9IWUJJMTMpOgotICAgICAgICAgICAgICAgIHN0
cmVhbV9vcHRpb24gPSBTdHJlYW1PcHRpb25zKCkKLSAgICAgICAgICAgICAgICBzdHJlYW1fb3B0
aW9uLm1hc2tfc2VuZCA9IFRydWUKLSAgICAgICAgICAgICAgICBzdHJlYW1fb3B0aW9uLnVubWFz
a19yZWNlaXZlID0gRmFsc2UKLQotICAgICAgICAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMuZGVm
bGF0ZV9mcmFtZSBpcyBub3QgRmFsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHByb2Nlc3NvciA9
IHNlbGYuX29wdGlvbnMuZGVmbGF0ZV9mcmFtZQotICAgICAgICAgICAgICAgICAgICBwcm9jZXNz
b3Iuc2V0dXBfc3RyZWFtX29wdGlvbnMoc3RyZWFtX29wdGlvbikKLQotICAgICAgICAgICAgICAg
IGlmIHNlbGYuX29wdGlvbnMudXNlX3Blcm1lc3NhZ2VfZGVmbGF0ZSBpcyBub3QgRmFsc2U6Ci0g
ICAgICAgICAgICAgICAgICAgIGZyYW1lciA9IHNlbGYuX29wdGlvbnMudXNlX3Blcm1lc3NhZ2Vf
ZGVmbGF0ZQotICAgICAgICAgICAgICAgICAgICBmcmFtZXIuc2V0dXBfc3RyZWFtX29wdGlvbnMo
c3RyZWFtX29wdGlvbikKLQotICAgICAgICAgICAgICAgIHNlbGYuX3N0cmVhbSA9IFN0cmVhbShy
ZXF1ZXN0LCBzdHJlYW1fb3B0aW9uKQotICAgICAgICAgICAgZWxpZiB2ZXJzaW9uID09IF9QUk9U
T0NPTF9WRVJTSU9OX0hZQkkwMDoKLSAgICAgICAgICAgICAgICBzZWxmLl9zdHJlYW0gPSBTdHJl
YW1IaXhpZTc1KHJlcXVlc3QsIFRydWUpCi0KLSAgICAgICAgICAgIGZvciBsaW5lIGluIHNlbGYu
X29wdGlvbnMubWVzc2FnZS5zcGxpdCgnLCcpOgotICAgICAgICAgICAgICAgIHNlbGYuX3N0cmVh
bS5zZW5kX21lc3NhZ2UobGluZSkKLSAgICAgICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnZl
cmJvc2U6Ci0gICAgICAgICAgICAgICAgICAgIHByaW50KCdTZW5kOiAlcycgJSBsaW5lKQotICAg
ICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZWQgPSBzZWxmLl9z
dHJlYW0ucmVjZWl2ZV9tZXNzYWdlKCkKLQotICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9v
cHRpb25zLnZlcmJvc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmludCgnUmVjdjogJXMn
ICUgcmVjZWl2ZWQpCi0gICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAg
ICAgICAgICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnZlcmJvc2U6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBwcmludCgnRXJyb3I6ICVzJyAlIGUpCi0gICAgICAgICAgICAgICAgICAgIHJh
aXNlCi0KLSAgICAgICAgICAgIHNlbGYuX2RvX2Nsb3NpbmdfaGFuZHNoYWtlKCkKLSAgICAgICAg
ZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX3NvY2tldC5jbG9zZSgpCi0KLSAgICBkZWYgX2Rv
X2Nsb3NpbmdfaGFuZHNoYWtlKHNlbGYpOgotICAgICAgICAiIiJQZXJmb3JtIGNsb3NpbmcgaGFu
ZHNoYWtlIHVzaW5nIHRoZSBzcGVjaWZpZWQgY2xvc2luZyBmcmFtZS4iIiIKLQotICAgICAgICBp
ZiBzZWxmLl9vcHRpb25zLm1lc3NhZ2Uuc3BsaXQoJywnKVstMV0gPT0gX0dPT0RCWUVfTUVTU0FH
RToKLSAgICAgICAgICAgICMgcmVxdWVzdGVkIHNlcnZlciBpbml0aWF0ZWQgY2xvc2luZyBoYW5k
c2hha2UsIHNvCi0gICAgICAgICAgICAjIGV4cGVjdGluZyBjbG9zaW5nIGhhbmRzaGFrZSBtZXNz
YWdlIGZyb20gc2VydmVyLgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ1dhaXQgZm9y
IHNlcnZlci1pbml0aWF0ZWQgY2xvc2luZyBoYW5kc2hha2UnKQotICAgICAgICAgICAgbWVzc2Fn
ZSA9IHNlbGYuX3N0cmVhbS5yZWNlaXZlX21lc3NhZ2UoKQotICAgICAgICAgICAgaWYgbWVzc2Fn
ZSBpcyBOb25lOgotICAgICAgICAgICAgICAgIHByaW50KCdSZWN2IGNsb3NlJykKLSAgICAgICAg
ICAgICAgICBwcmludCgnU2VuZCBhY2snKQotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5p
bmZvKAotICAgICAgICAgICAgICAgICAgICAnUmVjZWl2ZWQgY2xvc2luZyBoYW5kc2hha2UgYW5k
IHNlbnQgYWNrJykKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgcHJpbnQoJ1NlbmQg
Y2xvc2UnKQotICAgICAgICBzZWxmLl9zdHJlYW0uY2xvc2VfY29ubmVjdGlvbigpCi0gICAgICAg
IHNlbGYuX2xvZ2dlci5pbmZvKCdTZW50IGNsb3NpbmcgaGFuZHNoYWtlJykKLSAgICAgICAgcHJp
bnQoJ1JlY3YgYWNrJykKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ1JlY2VpdmVkIGFjaycp
Ci0KLQotZGVmIG1haW4oKToKLSAgICBzeXMuc3Rkb3V0ID0gY29kZWNzLmdldHdyaXRlcigndXRm
LTgnKShzeXMuc3Rkb3V0KQotCi0gICAgcGFyc2VyID0gT3B0aW9uUGFyc2VyKCkKLSAgICAjIFdl
IGFjY2VwdCAtLWNvbW1hbmRfbGluZV9mbGFnIHN0eWxlIGZsYWdzIHdoaWNoIGlzIHRoZSBzYW1l
IGFzIEdvb2dsZQotICAgICMgZ2ZsYWdzIGluIGFkZGl0aW9uIHRvIGNvbW1vbiAtLWNvbW1hbmQt
bGluZS1mbGFnIHN0eWxlIGZsYWdzLgotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctcycsICctLXNl
cnZlci1ob3N0JywgJy0tc2VydmVyX2hvc3QnLAotICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9
J3NlcnZlcl9ob3N0JywgdHlwZT0nc3RyaW5nJywKLSAgICAgICAgICAgICAgICAgICAgICBkZWZh
dWx0PSdsb2NhbGhvc3QnLCBoZWxwPSdzZXJ2ZXIgaG9zdCcpCi0gICAgcGFyc2VyLmFkZF9vcHRp
b24oJy1wJywgJy0tc2VydmVyLXBvcnQnLCAnLS1zZXJ2ZXJfcG9ydCcsCi0gICAgICAgICAgICAg
ICAgICAgICAgZGVzdD0nc2VydmVyX3BvcnQnLCB0eXBlPSdpbnQnLAotICAgICAgICAgICAgICAg
ICAgICAgIGRlZmF1bHQ9X1VOREVGSU5FRF9QT1JULCBoZWxwPSdzZXJ2ZXIgcG9ydCcpCi0gICAg
cGFyc2VyLmFkZF9vcHRpb24oJy1vJywgJy0tb3JpZ2luJywgZGVzdD0nb3JpZ2luJywgdHlwZT0n
c3RyaW5nJywKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsIGhlbHA9J29yaWdp
bicpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy1yJywgJy0tcmVzb3VyY2UnLCBkZXN0PSdyZXNv
dXJjZScsIHR5cGU9J3N0cmluZycsCi0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0nL2Vj
aG8nLCBoZWxwPSdyZXNvdXJjZSBwYXRoJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLW0nLCAn
LS1tZXNzYWdlJywgZGVzdD0nbWVzc2FnZScsIHR5cGU9J3N0cmluZycsCi0gICAgICAgICAgICAg
ICAgICAgICAgaGVscD0oJ2NvbW1hLXNlcGFyYXRlZCBtZXNzYWdlcyB0byBzZW5kLiAnCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAnJXMgd2lsbCBmb3JjZSBjbG9zZSB0aGUgY29ubmVjdGlv
biBmcm9tIHNlcnZlci4nICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBfR09PREJZRV9N
RVNTQUdFKSkKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLXEnLCAnLS1xdWlldCcsIGRlc3Q9J3Zl
cmJvc2UnLCBhY3Rpb249J3N0b3JlX2ZhbHNlJywKLSAgICAgICAgICAgICAgICAgICAgICBkZWZh
dWx0PVRydWUsIGhlbHA9J3N1cHByZXNzIG1lc3NhZ2VzJykKLSAgICBwYXJzZXIuYWRkX29wdGlv
bignLXQnLCAnLS10bHMnLCBkZXN0PSd1c2VfdGxzJywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAg
ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLCBoZWxwPSd1c2UgVExTICh3c3M6Ly8p
LiBCeSBkZWZhdWx0LCAnCi0gICAgICAgICAgICAgICAgICAgICAgJ2l0IGxvb2tzIGZvciBzc2wg
YW5kIHB5T3BlblNTTCBtb2R1bGUgYW5kIHVzZXMgZm91bmQgJwotICAgICAgICAgICAgICAgICAg
ICAgICdvbmUuIFVzZSAtLXRscy1tb2R1bGUgb3B0aW9uIHRvIHNwZWNpZnkgd2hpY2ggbW9kdWxl
ICcKLSAgICAgICAgICAgICAgICAgICAgICAndG8gdXNlJykKLSAgICBwYXJzZXIuYWRkX29wdGlv
bignLS10bHMtbW9kdWxlJywgJy0tdGxzX21vZHVsZScsIGRlc3Q9J3Rsc19tb2R1bGUnLAotICAg
ICAgICAgICAgICAgICAgICAgIHR5cGU9J2Nob2ljZScsCi0gICAgICAgICAgICAgICAgICAgICAg
Y2hvaWNlcz1bX1RMU19CWV9TVEFOREFSRF9NT0RVTEUsIF9UTFNfQllfUFlPUEVOU1NMXSwKLSAg
ICAgICAgICAgICAgICAgICAgICBoZWxwPSdVc2Ugc3NsIG1vZHVsZSBpZiAiJXMiIGlzIHNwZWNp
ZmllZC4gJwotICAgICAgICAgICAgICAgICAgICAgICdVc2UgcHlPcGVuU1NMIG1vZHVsZSBpZiAi
JXMiIGlzIHNwZWNpZmllZCcgJQotICAgICAgICAgICAgICAgICAgICAgIChfVExTX0JZX1NUQU5E
QVJEX01PRFVMRSwgX1RMU19CWV9QWU9QRU5TU0wpKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCct
LXRscy12ZXJzaW9uJywgJy0tdGxzX3ZlcnNpb24nLAotICAgICAgICAgICAgICAgICAgICAgIGRl
c3Q9J3Rsc192ZXJzaW9uJywKLSAgICAgICAgICAgICAgICAgICAgICB0eXBlPSdzdHJpbmcnLCBk
ZWZhdWx0PV9UTFNfVkVSU0lPTl9TU0wyMywKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdU
TFMvU1NMIHZlcnNpb24gdG8gdXNlLiBPbmUgb2YgXCcnICsKLSAgICAgICAgICAgICAgICAgICAg
ICBfVExTX1ZFUlNJT05fU1NMMjMgKyAnXCcgKFNTTCB2ZXJzaW9uIDIgb3IgMyksIFwnJyArCi0g
ICAgICAgICAgICAgICAgICAgICAgX1RMU19WRVJTSU9OX1NTTDMgKyAnXCcgKFNTTCB2ZXJzaW9u
IDMpLCBcJycgKwotICAgICAgICAgICAgICAgICAgICAgIF9UTFNfVkVSU0lPTl9UTFMxICsgJ1wn
IChUTFMgdmVyc2lvbiAxKScpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tZGlzYWJsZS10bHMt
Y29tcHJlc3Npb24nLCAnLS1kaXNhYmxlX3Rsc19jb21wcmVzc2lvbicsCi0gICAgICAgICAgICAg
ICAgICAgICAgZGVzdD0nZGlzYWJsZV90bHNfY29tcHJlc3Npb24nLAotICAgICAgICAgICAgICAg
ICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgICAgICAg
ICAgICAgICAgaGVscD0nRGlzYWJsZSBUTFMgY29tcHJlc3Npb24uIEF2YWlsYWJsZSBvbmx5IHdo
ZW4gJwotICAgICAgICAgICAgICAgICAgICAgICdweU9wZW5TU0wgbW9kdWxlIGlzIHVzZWQuJykK
LSAgICBwYXJzZXIuYWRkX29wdGlvbignLWsnLCAnLS1zb2NrZXQtdGltZW91dCcsICctLXNvY2tl
dF90aW1lb3V0JywKLSAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdzb2NrZXRfdGltZW91dCcs
IHR5cGU9J2ludCcsIGRlZmF1bHQ9X1RJTUVPVVRfU0VDLAotICAgICAgICAgICAgICAgICAgICAg
IGhlbHA9J1RpbWVvdXQoc2VjKSBmb3Igc29ja2V0cycpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24o
Jy0tZHJhZnQ3NScsIGRlc3Q9J2RyYWZ0NzUnLAotICAgICAgICAgICAgICAgICAgICAgIGFjdGlv
bj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgaGVs
cD0nT2Jzb2xldGUgb3B0aW9uLiBEb25cJ3QgdXNlIHRoaXMuJykKLSAgICBwYXJzZXIuYWRkX29w
dGlvbignLS1wcm90b2NvbC12ZXJzaW9uJywgJy0tcHJvdG9jb2xfdmVyc2lvbicsCi0gICAgICAg
ICAgICAgICAgICAgICAgZGVzdD0ncHJvdG9jb2xfdmVyc2lvbicsCi0gICAgICAgICAgICAgICAg
ICAgICAgdHlwZT0nc3RyaW5nJywgZGVmYXVsdD1fUFJPVE9DT0xfVkVSU0lPTl9IWUJJMTMsCi0g
ICAgICAgICAgICAgICAgICAgICAgaGVscD0nV2ViU29ja2V0IHByb3RvY29sIHZlcnNpb24gdG8g
dXNlLiBPbmUgb2YgXCcnICsKLSAgICAgICAgICAgICAgICAgICAgICBfUFJPVE9DT0xfVkVSU0lP
Tl9IWUJJMTMgKyAnXCcsIFwnJyArCi0gICAgICAgICAgICAgICAgICAgICAgX1BST1RPQ09MX1ZF
UlNJT05fSFlCSTA4ICsgJ1wnLCBcJycgKwotICAgICAgICAgICAgICAgICAgICAgIF9QUk9UT0NP
TF9WRVJTSU9OX0hZQkkwMCArICdcJycpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tdmVyc2lv
bi1oZWFkZXInLCAnLS12ZXJzaW9uX2hlYWRlcicsCi0gICAgICAgICAgICAgICAgICAgICAgZGVz
dD0ndmVyc2lvbl9oZWFkZXInLAotICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J2ludCcsIGRl
ZmF1bHQ9LTEsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0nU3BlY2lmeSBTZWMtV2ViU29j
a2V0LVZlcnNpb24gaGVhZGVyIHZhbHVlJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLS1kZWZs
YXRlLWZyYW1lJywgJy0tZGVmbGF0ZV9mcmFtZScsCi0gICAgICAgICAgICAgICAgICAgICAgZGVz
dD0nZGVmbGF0ZV9mcmFtZScsCi0gICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90
cnVlJywgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdVc2UgdGhl
IGRlZmxhdGUtZnJhbWUgZXh0ZW5zaW9uLicpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tdXNl
LXBlcm1lc3NhZ2UtZGVmbGF0ZScsICctLXVzZV9wZXJtZXNzYWdlX2RlZmxhdGUnLAotICAgICAg
ICAgICAgICAgICAgICAgIGRlc3Q9J3VzZV9wZXJtZXNzYWdlX2RlZmxhdGUnLAotICAgICAgICAg
ICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAg
ICAgICAgICAgICAgICAgaGVscD0nVXNlIHRoZSBwZXJtZXNzYWdlLWRlZmxhdGUgZXh0ZW5zaW9u
LicpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tbG9nLWxldmVsJywgJy0tbG9nX2xldmVsJywg
dHlwZT0nY2hvaWNlJywKLSAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdsb2dfbGV2ZWwnLCBk
ZWZhdWx0PSd3YXJuJywKLSAgICAgICAgICAgICAgICAgICAgICBjaG9pY2VzPVsnZGVidWcnLCAn
aW5mbycsICd3YXJuJywgJ2Vycm9yJywgJ2NyaXRpY2FsJ10sCi0gICAgICAgICAgICAgICAgICAg
ICAgaGVscD0nTG9nIGxldmVsLicpCi0KLSAgICAob3B0aW9ucywgdW51c2VkX2FyZ3MpID0gcGFy
c2VyLnBhcnNlX2FyZ3MoKQotCi0gICAgbG9nZ2luZy5iYXNpY0NvbmZpZyhsZXZlbD1sb2dnaW5n
LmdldExldmVsTmFtZShvcHRpb25zLmxvZ19sZXZlbC51cHBlcigpKSkKLQotICAgIGlmIG9wdGlv
bnMuZHJhZnQ3NToKLSAgICAgICAgbG9nZ2luZy5jcml0aWNhbCgnLS1kcmFmdDc1IG9wdGlvbiBp
cyBvYnNvbGV0ZS4nKQotICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgaWYgb3B0aW9ucy5wcm90
b2NvbF92ZXJzaW9uID09IF9QUk9UT0NPTF9WRVJTSU9OX0hJWElFNzU6Ci0gICAgICAgIGxvZ2dp
bmcuY3JpdGljYWwoCi0gICAgICAgICAgICAnVmFsdWUgJXMgaXMgb2Jzb2xldGUgZm9yIC0tcHJv
dG9jb2xfdmVyc2lvbiBvcHRpb25zJyAlCi0gICAgICAgICAgICBfUFJPVE9DT0xfVkVSU0lPTl9I
SVhJRTc1KQotICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgaWYgb3B0aW9ucy51c2VfdGxzOgot
ICAgICAgICBpZiBvcHRpb25zLnRsc19tb2R1bGUgaXMgTm9uZToKLSAgICAgICAgICAgIGlmIF9p
bXBvcnRfc3NsKCk6Ci0gICAgICAgICAgICAgICAgb3B0aW9ucy50bHNfbW9kdWxlID0gX1RMU19C
WV9TVEFOREFSRF9NT0RVTEUKLSAgICAgICAgICAgICAgICBsb2dnaW5nLmRlYnVnKCdVc2luZyBz
c2wgbW9kdWxlJykKLSAgICAgICAgICAgIGVsaWYgX2ltcG9ydF9weW9wZW5zc2woKToKLSAgICAg
ICAgICAgICAgICBvcHRpb25zLnRsc19tb2R1bGUgPSBfVExTX0JZX1BZT1BFTlNTTAotICAgICAg
ICAgICAgICAgIGxvZ2dpbmcuZGVidWcoJ1VzaW5nIHB5T3BlblNTTCBtb2R1bGUnKQotICAgICAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKAotICAgICAgICAg
ICAgICAgICAgICAgICAgJ1RMUyBzdXBwb3J0IHJlcXVpcmVzIHNzbCBvciBweU9wZW5TU0wgbW9k
dWxlLicpCi0gICAgICAgICAgICAgICAgc3lzLmV4aXQoMSkKLSAgICAgICAgZWxpZiBvcHRpb25z
LnRsc19tb2R1bGUgPT0gX1RMU19CWV9TVEFOREFSRF9NT0RVTEU6Ci0gICAgICAgICAgICBpZiBu
b3QgX2ltcG9ydF9zc2woKToKLSAgICAgICAgICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKCdzc2wg
bW9kdWxlIGlzIG5vdCBhdmFpbGFibGUnKQotICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCi0g
ICAgICAgIGVsaWYgb3B0aW9ucy50bHNfbW9kdWxlID09IF9UTFNfQllfUFlPUEVOU1NMOgotICAg
ICAgICAgICAgaWYgbm90IF9pbXBvcnRfcHlvcGVuc3NsKCk6Ci0gICAgICAgICAgICAgICAgbG9n
Z2luZy5jcml0aWNhbCgncHlPcGVuU1NMIG1vZHVsZSBpcyBub3QgYXZhaWxhYmxlJykKLSAgICAg
ICAgICAgICAgICBzeXMuZXhpdCgxKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbG9nZ2lu
Zy5jcml0aWNhbCgnSW52YWxpZCAtLXRscy1tb2R1bGUgb3B0aW9uOiAlcicsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9wdGlvbnMudGxzX21vZHVsZSkKLSAgICAgICAgICAgIHN5cy5l
eGl0KDEpCi0KLSAgICAgICAgaWYgKG9wdGlvbnMuZGlzYWJsZV90bHNfY29tcHJlc3Npb24gYW5k
Ci0gICAgICAgICAgICBvcHRpb25zLnRsc19tb2R1bGUgIT0gX1RMU19CWV9QWU9QRU5TU0wpOgot
ICAgICAgICAgICAgbG9nZ2luZy5jcml0aWNhbCgnWW91IGNhbiBkaXNhYmxlIFRMUyBjb21wcmVz
c2lvbiBvbmx5IHdoZW4gJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHlPcGVuU1NM
IG1vZHVsZSBpcyB1c2VkLicpCi0gICAgICAgICAgICBzeXMuZXhpdCgxKQotICAgIGVsc2U6Ci0g
ICAgICAgIGlmIG9wdGlvbnMudGxzX21vZHVsZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGxv
Z2dpbmcuY3JpdGljYWwoJ1VzZSAtLXRscy1tb2R1bGUgb3B0aW9uIG9ubHkgdG9nZXRoZXIgd2l0
aCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLXVzZS10bHMgb3B0aW9uLicpCi0g
ICAgICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgICAgIGlmIG9wdGlvbnMuZGlzYWJsZV90bHNf
Y29tcHJlc3Npb246Ci0gICAgICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKCdVc2UgLS1kaXNhYmxl
LXRscy1jb21wcmVzc2lvbiBvbmx5IHRvZ2V0aGVyICcKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ3dpdGggLS11c2UtdGxzIG9wdGlvbi4nKQotICAgICAgICAgICAgc3lzLmV4aXQoMSkK
LQotICAgICMgRGVmYXVsdCBwb3J0IG51bWJlciBkZXBlbmRzIG9uIHdoZXRoZXIgVExTIGlzIHVz
ZWQuCi0gICAgaWYgb3B0aW9ucy5zZXJ2ZXJfcG9ydCA9PSBfVU5ERUZJTkVEX1BPUlQ6Ci0gICAg
ICAgIGlmIG9wdGlvbnMudXNlX3RsczoKLSAgICAgICAgICAgIG9wdGlvbnMuc2VydmVyX3BvcnQg
PSBjb21tb24uREVGQVVMVF9XRUJfU09DS0VUX1NFQ1VSRV9QT1JUCi0gICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICBvcHRpb25zLnNlcnZlcl9wb3J0ID0gY29tbW9uLkRFRkFVTFRfV0VCX1NPQ0tF
VF9QT1JUCi0KLSAgICAjIG9wdHBhcnNlIGRvZXNuJ3Qgc2VlbSB0byBoYW5kbGUgbm9uLWFzY2lp
IGRlZmF1bHQgdmFsdWVzLgotICAgICMgU2V0IGRlZmF1bHQgbWVzc2FnZSBoZXJlLgotICAgIGlm
IG5vdCBvcHRpb25zLm1lc3NhZ2U6Ci0gICAgICAgIG9wdGlvbnMubWVzc2FnZSA9IHUnSGVsbG8s
XHU2NWU1XHU2NzJjJyAgICMgIkphcGFuIiBpbiBKYXBhbmVzZQotCi0gICAgRWNob0NsaWVudChv
cHRpb25zKS5ydW4oKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgbWFpbigp
Ci0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvZWNob19u
b2V4dF93c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvZWNob19ub2V4dF93c2gucHkKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDFkZjUxNTEyMjcxMTFlMTE0NDI0YzU1ODZhMTQyYTlhZGI3ZDYw
NGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9l
eGFtcGxlL2VjaG9fbm9leHRfd3NoLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAot
IyBDb3B5cmlnaHQgMjAxMywgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMK
LSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
IyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4K
LSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0KLQotX0dPT0RCWUVfTUVTU0FHRSA9IHUnR29vZGJ5ZScKLQotCi1k
ZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6Ci0gICAgIiIiUmVjZWl2
ZWQgU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhlYWRlciB2YWx1ZSBpcyBwYXJzZWQgaW50bwot
ICAgIHJlcXVlc3Qud3NfcmVxdWVzdGVkX2V4dGVuc2lvbnMuIHB5d2Vic29ja2V0IGNyZWF0ZXMg
ZXh0ZW5zaW9uCi0gICAgcHJvY2Vzc29ycyB1c2luZyBpdCBiZWZvcmUgZG9fZXh0cmFfaGFuZHNo
YWtlIGNhbGwgYW5kIG5ldmVyIGxvb2tzIGF0IGl0Ci0gICAgYWZ0ZXIgdGhlIGNhbGwuCi0KLSAg
ICBUbyByZWplY3QgcmVxdWVzdGVkIGV4dGVuc2lvbnMsIGNsZWFyIHRoZSBwcm9jZXNzb3IgbGlz
dC4KLSAgICAiIiIKLQotICAgIHJlcXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnMgPSBbXQot
Ci0KLWRlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6Ci0gICAgIiIiRWNoby4g
U2FtZSBhcyBlY2hvX3dzaC5weS4iIiIKLQotICAgIHdoaWxlIFRydWU6Ci0gICAgICAgIGxpbmUg
PSByZXF1ZXN0LndzX3N0cmVhbS5yZWNlaXZlX21lc3NhZ2UoKQotICAgICAgICBpZiBsaW5lIGlz
IE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgaWYgaXNpbnN0YW5jZShsaW5lLCB1
bmljb2RlKToKLSAgICAgICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRfbWVzc2FnZShsaW5l
LCBiaW5hcnk9RmFsc2UpCi0gICAgICAgICAgICBpZiBsaW5lID09IF9HT09EQllFX01FU1NBR0U6
Ci0gICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXF1
ZXN0LndzX3N0cmVhbS5zZW5kX21lc3NhZ2UobGluZSwgYmluYXJ5PVRydWUpCi0KLQotIyB2aTpz
dHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvZWNob193c2gucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0
L2V4YW1wbGUvZWNob193c2gucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4NjQ2
YzMyY2ViNTE1ZjE1ZGQ1NzI2MjI2ODljNzllZTYxZTU0M2YuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2VjaG9fd3NoLnB5CisrKyAv
ZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4K
LSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0j
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotX0dPT0RCWUVf
TUVTU0FHRSA9IHUnR29vZGJ5ZScKLQotCi1kZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hh
a2UocmVxdWVzdCk6Ci0gICAgIyBUaGlzIGV4YW1wbGUgaGFuZGxlciBhY2NlcHRzIGFueSByZXF1
ZXN0LiBTZWUgb3JpZ2luX2NoZWNrX3dzaC5weSBmb3IgaG93Ci0gICAgIyB0byByZWplY3QgYWNj
ZXNzIGZyb20gdW50cnVzdGVkIHNjcmlwdHMgYmFzZWQgb24gb3JpZ2luIHZhbHVlLgotCi0gICAg
cGFzcyAgIyBBbHdheXMgYWNjZXB0LgotCi0KLWRlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEo
cmVxdWVzdCk6Ci0gICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgbGluZSA9IHJlcXVlc3Qud3Nfc3Ry
ZWFtLnJlY2VpdmVfbWVzc2FnZSgpCi0gICAgICAgIGlmIGxpbmUgaXMgTm9uZToKLSAgICAgICAg
ICAgIHJldHVybgotICAgICAgICBpZiBpc2luc3RhbmNlKGxpbmUsIHVuaWNvZGUpOgotICAgICAg
ICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKGxpbmUsIGJpbmFyeT1GYWxzZSkK
LSAgICAgICAgICAgIGlmIGxpbmUgPT0gX0dPT0RCWUVfTUVTU0FHRToKLSAgICAgICAgICAgICAg
ICByZXR1cm4KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNl
bmRfbWVzc2FnZShsaW5lLCBiaW5hcnk9VHJ1ZSkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS9ldmVudHNvdXJjZS5jZ2kgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvZXZl
bnRzb3VyY2UuY2dpCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZGRkZjIzN2NmN2Q0
NzY0OTczNDdkMDk1YTEyMjk5NDE3N2UxNDA5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS9ldmVudHNvdXJjZS5jZ2kKKysrIC9kZXYv
bnVsbApAQCAtMSw1NCArMCwwIEBACi0jIS91c3IvYmluL3B5dGhvbgotCi0jIENvcHlyaWdodCAy
MDEzLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0j
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
IyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLQotCi0iIiJUaGlzIENHSSBzY3JpcHQgZ2VuZXJhdGVzIHRleHQvZXZlbnQtc3RyZWFtIHR5
cGUgZGF0YSBzdHJlYW0gZm9yIHRlc3RpbmcKLXRoZSBTZXJ2ZXItU2VudCBFdmVudHMuCi0KLUl0
IHdpbGwgb25seSB3b3JrIGNvcnJlY3RseSB3aXRoIEhUVFAgc2VydmVycyB0aGF0IGRvIG5vdCBi
dWZmZXIgdGhlIG91dHB1dCBvZgotQ0dJIHNjcmlwdHMuCi0iIiIKLQotCi1pbXBvcnQgc3lzCi1p
bXBvcnQgdGltZQotCi1zeXMuc3Rkb3V0LndyaXRlKCdDb250ZW50LXR5cGU6IHRleHQvZXZlbnQt
c3RyZWFtXHJcblxyXG4nKQotCi1pZCA9IDAKLQotd2hpbGUgVHJ1ZToKLSAgc3lzLnN0ZG91dC53
cml0ZSgnZGF0YTogSGVsbG9cclxuaWQ6ICVkXHJcblxyXG4nICUgaWQpCi0gIHN5cy5zdGRvdXQu
Zmx1c2goKQotCi0gIGlkID0gaWQgKyAxCi0KLSAgdGltZS5zbGVlcCgxKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNv
Y2tldC9leGFtcGxlL2V2ZW50c291cmNlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvZXZlbnRzb3VyY2Uu
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTU5OGE4ODA3ZDFmZmNjZWNmNTg1
ZjFiYjY1NmZkMmQ5MDJmY2QzOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvZXZlbnRzb3VyY2UuaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDc0ICswLDAgQEAKLTwhLS0KLUNvcHlyaWdodCAyMDEzLCBHb29nbGUgSW5jLgotQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLQotUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci1tb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi1tZXQ6Ci0KLSAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci1ub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCi1jb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi1pbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi1kaXN0cmlidXRpb24uCi0g
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
Ci1jb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQotdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLQotVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLUxJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLU9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi1EQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLVRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLShJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS0tPgotCi08IS0tCi1T
aW1wbGUgZXhhbXBsZSBvZiB0aGUgU2VydmVyLVNlbnQgRXZlbnRzCi1odHRwOi8vZGV2LnczLm9y
Zy9odG1sNS9ldmVudHNvdXJjZS8KLQotRm9yIGNvbXBhcmlzb24gd2l0aCB0aGUgV2ViU29ja2V0
IFByb3RvY29sICYgQVBJLgotCi1SdW4gdGhlIHB5d2Vic29ja2V0IHdpdGggdGhlIC0tY2dpX3Bh
dGggcGFyYW1ldGVyLgotLS0+Ci0KLTxodG1sPgotPGhlYWQ+Ci08dGl0bGU+U2VydmVyLVNlbnQg
RXZlbnRzIEV4YW1wbGU8L3RpdGxlPgotPHNjcmlwdD4KLXZhciBldmVudFNvdXJjZSA9IG51bGw7
Ci0KLWZ1bmN0aW9uIGFkZFRvTG9nKGRhdGEpIHsKLSAgbG9nQm94LnZhbHVlICs9IGRhdGEgKyAn
XG4nOwotICBsb2dCb3guc2Nyb2xsVG9wID0gMTAwMDAwMDsKLX0KLQotZnVuY3Rpb24gaW5pdCgp
IHsKLSAgbG9nQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZycpOwotCi0gIGV2ZW50
U291cmNlICA9IG5ldyBFdmVudFNvdXJjZSgnL2V2ZW50c291cmNlLmNnaScpOwotICBldmVudFNv
dXJjZS5vbm9wZW4gPSBmdW5jdGlvbigpIHsKLSAgICBhZGRUb0xvZygnb25vcGVuIChyZWFkeVN0
YXRlID0gJyArIGV2ZW50U291cmNlLnJlYWR5U3RhdGUgKyAnKScpOwotICB9Ci0gIGV2ZW50U291
cmNlLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgYWRkVG9Mb2coZXZlbnQuZGF0
YSk7Ci0gIH0KLSAgZXZlbnRTb3VyY2Uub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAg
YWRkVG9Mb2coJ29uZXJyb3IgKHJlYWR5U3RhdGUgPSAnICsgZXZlbnRTb3VyY2UucmVhZHlTdGF0
ZSArICcpJyk7Ci0gIH0KLX0KLTwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJpbml0
KCkiPgotPHRleHRhcmVhIGlkPSJsb2ciIHJvd3M9IjEwIiBjb2xzPSI0MCIgcmVhZG9ubHk+PC90
ZXh0YXJlYT4KLTxwIHN0eWxlPSJmb250LXNpemU6IHNtYWxsIj4KLSAgTWFrZSBzdXJlIHRoYXQg
cHl3ZWJzb2NrZXQgaXMgcnVuIHdpdGggLS1jZ2lfcGF0aCBwYXJhbWV0ZXIuCi08L3A+Ci08L2Jv
ZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvZmV0Y2hfYmVuY2htYXJrLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L2V4YW1wbGUvZmV0Y2hfYmVuY2htYXJrLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDIxMDVlYjY3YTU1MzJiNzZiYzk3YmY4MzEwOGExOWUwNDNlNTRmMzEuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxl
L2ZldGNoX2JlbmNobWFyay5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTYzICswLDAgQEAKLTwh
LS0KLUNvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0KLVVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlCi1saWNlbnNl
IHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBDT1BZSU5HIGZpbGUgb3IgYXQKLWh0dHBzOi8vZGV2
ZWxvcGVycy5nb29nbGUuY29tL29wZW4tc291cmNlL2xpY2Vuc2VzL2JzZAotLS0+Ci08aHRtbD4K
LTxoZWFkPgotPHRpdGxlPkZldGNoIEFQSSBiZW5jaG1hcms8L3RpdGxlPgotPHNjcmlwdCBzcmM9
InV0aWxfbWFpbi5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0idXRpbC5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iZmV0Y2hfYmVuY2htYXJrLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci12
YXIgYWRkcmVzc0JveCA9IG51bGw7Ci0KLWZ1bmN0aW9uIGdldENvbmZpZygpIHsKLSAgcmV0dXJu
IHsKLSAgICBwcmVmaXhVcmw6IGFkZHJlc3NCb3gudmFsdWUsCi0gICAgcHJpbnRTaXplOiBnZXRC
b29sRnJvbUNoZWNrQm94KCdwcmludHNpemUnKSwKLSAgICBudW1GZXRjaGVzOiBnZXRJbnRGcm9t
SW5wdXQoJ251bUZldGNoZXMnKSwKLSAgICAvLyBJbml0aWFsIHNpemUgb2YgbWVzc2FnZXMuCi0g
ICAgbnVtSXRlcmF0aW9uczogZ2V0SW50RnJvbUlucHV0KCdudW1pdGVyYXRpb25zJyksCi0gICAg
bnVtV2FybVVwSXRlcmF0aW9uczogZ2V0SW50RnJvbUlucHV0KCdudW13YXJtdXBpdGVyYXRpb25z
JyksCi0gICAgc3RhcnRTaXplOiBnZXRJbnRGcm9tSW5wdXQoJ3N0YXJ0c2l6ZScpLAotICAgIC8v
IFN0b3BzIGJlbmNobWFyayB3aGVuIHRoZSBzaXplIG9mIG1lc3NhZ2UgZXhjZWVkcyB0aGlzIHRo
cmVzaG9sZC4KLSAgICBzdG9wVGhyZXNob2xkOiBnZXRJbnRGcm9tSW5wdXQoJ3N0b3B0aHJlc2hv
bGQnKSwKLSAgICBtdWx0aXBsaWVyczogZ2V0RmxvYXRBcnJheUZyb21JbnB1dCgnbXVsdGlwbGll
cnMnKSwKLSAgICB2ZXJpZnlEYXRhOiBnZXRCb29sRnJvbUNoZWNrQm94KCd2ZXJpZnlkYXRhJyks
Ci0gICAgYWRkVG9Mb2c6IGFkZFRvTG9nLAotICAgIGFkZFRvU3VtbWFyeTogYWRkVG9TdW1tYXJ5
LAotICAgIG1lYXN1cmVWYWx1ZTogbWVhc3VyZVZhbHVlLAotICAgIG5vdGlmeUFib3J0OiBub3Rp
ZnlBYm9ydAotICB9OwotfQotCi1mdW5jdGlvbiBvblNlbmRCZW5jaG1hcmsoKSB7Ci0gIHZhciBj
b25maWcgPSBnZXRDb25maWcoKTsKLSAgY29uZmlnLmRhdGFUeXBlID0gZ2V0U3RyaW5nRnJvbVJh
ZGlvQm94KCdkYXRhdHlwZXJhZGlvJyk7Ci0gIGRvQWN0aW9uKGNvbmZpZywgZ2V0Qm9vbEZyb21D
aGVja0JveCgnd29ya2VyJyksICdzZW5kQmVuY2htYXJrJyk7Ci19Ci0KLWZ1bmN0aW9uIG9uUmVj
ZWl2ZUJlbmNobWFyaygpIHsKLSAgdmFyIGNvbmZpZyA9IGdldENvbmZpZygpOwotICBjb25maWcu
ZGF0YVR5cGUgPSBnZXRTdHJpbmdGcm9tUmFkaW9Cb3goJ2RhdGF0eXBlcmFkaW8nKTsKLSAgZG9B
Y3Rpb24oY29uZmlnLCBnZXRCb29sRnJvbUNoZWNrQm94KCd3b3JrZXInKSwgJ3JlY2VpdmVCZW5j
aG1hcmsnKTsKLX0KLQotZnVuY3Rpb24gb25CYXRjaEJlbmNobWFyaygpIHsKLSAgdmFyIGNvbmZp
ZyA9IGdldENvbmZpZygpOwotICBkb0FjdGlvbihjb25maWcsIGdldEJvb2xGcm9tQ2hlY2tCb3go
J3dvcmtlcicpLCAnYmF0Y2hCZW5jaG1hcmsnKTsKLX0KLQotZnVuY3Rpb24gb25TdG9wKCkgewot
ICB2YXIgY29uZmlnID0gZ2V0Q29uZmlnKCk7Ci0gIGRvQWN0aW9uKGNvbmZpZywgZ2V0Qm9vbEZy
b21DaGVja0JveCgnd29ya2VyJyksICdzdG9wJyk7Ci19Ci0KLWZ1bmN0aW9uIGluaXQoKSB7Ci0g
IGFkZHJlc3NCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWRkcmVzcycpOwotICBsb2dC
b3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nJyk7Ci0KLSAgc3VtbWFyeUJveCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdW1tYXJ5Jyk7Ci0KLSAgLy8gU3BlY2lhbCBhZGRyZXNz
IG9mIHB5d2Vic29ja2V0IGZvciBYSFIvRmV0Y2ggQVBJIGJlbmNobWFyay4KLSAgYWRkcmVzc0Jv
eC52YWx1ZSA9ICcvMDczYmUwMDFlMTA5NTA2OTJjY2JmM2EyYWQyMWMyNDUnOwotCi0gIGFkZFRv
TG9nKHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkpOwotICBhZGRUb1N1
bW1hcnkod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSk7Ci0KLSAgaW5p
dFdvcmtlcignZmV0Y2gnLCAnJyk7Ci19Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9h
ZD0iaW5pdCgpIj4KLQotPGZvcm0gaWQ9ImJlbmNobWFya19mb3JtIj4KLSAgdXJsIHByZWZpeCA8
aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImFkZHJlc3MiIHNpemU9IjQwIj4KLSAgPGlucHV0IHR5cGU9
ImJ1dHRvbiIgdmFsdWU9InNlbmQiIG9uY2xpY2s9Im9uU2VuZEJlbmNobWFyaygpIj4KLSAgPGlu
cHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9InJlY2VpdmUiIG9uY2xpY2s9Im9uUmVjZWl2ZUJlbmNo
bWFyaygpIj4KLSAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9ImJhdGNoIiBvbmNsaWNrPSJv
bkJhdGNoQmVuY2htYXJrKCkiPgotICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0ic3RvcCIg
b25jbGljaz0ib25TdG9wKCkiPgotCi0gIDxici8+Ci0KLSAgPGlucHV0IHR5cGU9ImNoZWNrYm94
IiBpZD0icHJpbnRzaXplIiBjaGVja2VkPgotICA8bGFiZWwgZm9yPSJwcmludHNpemUiPlByaW50
IHNpemUgYW5kIHRpbWUgcGVyIG1lc3NhZ2U8L2xhYmVsPgotICA8aW5wdXQgdHlwZT0iY2hlY2ti
b3giIGlkPSJ2ZXJpZnlkYXRhIiBjaGVja2VkPgotICA8bGFiZWwgZm9yPSJ2ZXJpZnlkYXRhIj5W
ZXJpZnkgZGF0YTwvbGFiZWw+Ci0gIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9IndvcmtlciI+
Ci0gIDxsYWJlbCBmb3I9IndvcmtlciI+UnVuIG9uIHdvcmtlcjwvbGFiZWw+Ci0KLSAgPGJyLz4K
LQotICBQYXJhbWV0ZXJzOgotCi0gIDxici8+Ci0KLSAgPHRhYmxlPgotICAgIDx0cj4KLSAgICAg
IDx0ZD5OdW1iZXIgb2YgZmV0Y2goKSByZXF1ZXN0czwvdGQ+Ci0gICAgICA8dGQ+PGlucHV0IHR5
cGU9InRleHQiIGlkPSJudW1GZXRjaGVzIiB2YWx1ZT0iMSI+PC90ZD4KLSAgICA8L3RyPgotICAg
IDx0cj4KLSAgICAgIDx0ZD5OdW1iZXIgb2YgaXRlcmF0aW9uczwvdGQ+Ci0gICAgICA8dGQ+PGlu
cHV0IHR5cGU9InRleHQiIGlkPSJudW1pdGVyYXRpb25zIiB2YWx1ZT0iMSI+PC90ZD4KLSAgICA8
L3RyPgotICAgIDx0cj4KLSAgICAgIDx0ZD5OdW1iZXIgb2Ygd2FybS11cCBpdGVyYXRpb25zPC90
ZD4KLSAgICAgIDx0ZD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9Im51bXdhcm11cGl0ZXJhdGlvbnMi
IHZhbHVlPSIwIj48L3RkPgotICAgIDwvdHI+Ci0gICAgPHRyPgotICAgICAgPHRkPlN0YXJ0IHNp
emU8L3RkPgotICAgICAgPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ic3RhcnRzaXplIiB2YWx1
ZT0iMTAyNDAiPjwvdGQ+Ci0gICAgPC90cj4KLSAgICA8dHI+Ci0gICAgICA8dGQ+U3RvcCB0aHJl
c2hvbGQ8L3RkPgotICAgICAgPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ic3RvcHRocmVzaG9s
ZCIgdmFsdWU9IjEwMjQwMDAwMCI+PC90ZD4KLSAgICA8L3RyPgotICAgIDx0cj4KLSAgICAgIDx0
ZD5NdWx0aXBsaWVyczwvdGQ+Ci0gICAgICA8dGQ+PGlucHV0IHR5cGU9InRleHQiIGlkPSJtdWx0
aXBsaWVycyIgdmFsdWU9IjUsIDIiPjwvdGQ+Ci0gICAgPC90cj4KLSAgPC90YWJsZT4KLQotICBT
ZXQgZGF0YSB0eXBlCi0gIDxpbnB1dCB0eXBlPSJyYWRpbyIKLSAgICAgICAgIG5hbWU9ImRhdGF0
eXBlcmFkaW8iCi0gICAgICAgICBpZD0iZGF0YXR5cGVyYWRpb3RleHQiCi0gICAgICAgICB2YWx1
ZT0idGV4dCIKLSAgICAgICAgIGNoZWNrZWQ+PGxhYmVsIGZvcj0iZGF0YXR5cGVyYWRpb3RleHQi
PnRleHQ8L2xhYmVsPgotICA8aW5wdXQgdHlwZT0icmFkaW8iCi0gICAgICAgICBuYW1lPSJkYXRh
dHlwZXJhZGlvIgotICAgICAgICAgaWQ9ImRhdGF0eXBlcmFkaW9ibG9iIgotICAgICAgICAgdmFs
dWU9ImJsb2IiCi0gICAgICAgICA+PGxhYmVsIGZvcj0iZGF0YXR5cGVyYWRpb2Jsb2IiPmJsb2I8
L2xhYmVsPgotICA8aW5wdXQgdHlwZT0icmFkaW8iCi0gICAgICAgICBuYW1lPSJkYXRhdHlwZXJh
ZGlvIgotICAgICAgICAgaWQ9ImRhdGF0eXBlcmFkaW9hcnJheWJ1ZmZlciIKLSAgICAgICAgIHZh
bHVlPSJhcnJheWJ1ZmZlciIKLSAgICAgICAgID48bGFiZWwgZm9yPSJkYXRhdHlwZXJhZGlvYXJy
YXlidWZmZXIiPmFycmF5YnVmZmVyPC9sYWJlbD4KLTwvZm9ybT4KLQotPGRpdiBpZD0ibG9nX2Rp
diI+Ci0gIDx0ZXh0YXJlYQotICAgICAgaWQ9ImxvZyIgcm93cz0iMjAiIHN0eWxlPSJ3aWR0aDog
MTAwJSIgcmVhZG9ubHk+PC90ZXh0YXJlYT4KLTwvZGl2PgotPGRpdiBpZD0ic3VtbWFyeV9kaXYi
PgotICBTdW1tYXJ5Ci0gIDx0ZXh0YXJlYQotICAgICAgaWQ9InN1bW1hcnkiIHJvd3M9IjIwIiBz
dHlsZT0id2lkdGg6IDEwMCUiIHJlYWRvbmx5PjwvdGV4dGFyZWE+Ci08L2Rpdj4KLQotPGRpdiBp
ZD0ibm90ZV9kaXYiPgotICBOb3RlOgotICA8dWw+Ci0gICAgPGxpPkVmZmVjdCBvZiBSVFQgYW5k
IHRpbWUgc3BlbnQgZm9yIEFycmF5QnVmZmVyIGNyZWF0aW9uIGluIHJlY2VpdmUgYmVuY2htYXJr
cyBhcmUgbm90IGVsaW1pbmF0ZWQuPC9saT4KLSAgICA8bGk+VGhlIFN0ZGRldiBjb2x1bW4gc2hv
d3MgTmFOIHdoZW4gdGhlIG51bWJlciBvZiBpdGVyYXRpb25zIGlzIHNldCB0byAxLjwvbGk+Ci0g
IDwvdWw+Ci08L2Rpdj4KLQotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFt
cGxlL2ZldGNoX2JlbmNobWFyay5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS9mZXRjaF9iZW5jaG1hcmsuanMK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzOTUyMTkwYThlMDczOWUzYTBmMmE0OGNi
ODNkYmU5YjMwMTUzOTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC9leGFtcGxlL2ZldGNoX2JlbmNobWFyay5qcworKysgL2Rldi9udWxsCkBAIC0x
LDIyNSArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotLy8KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlCi0vLyBsaWNlbnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBDT1BZSU5HIGZp
bGUgb3IgYXQKLS8vIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL29wZW4tc291cmNlL2xp
Y2Vuc2VzL2JzZAotCi12YXIgaXNXb3JrZXIgPSB0eXBlb2YgaW1wb3J0U2NyaXB0cyAhPT0gInVu
ZGVmaW5lZCI7Ci0KLWlmIChpc1dvcmtlcikgewotICAvLyBSdW5uaW5nIG9uIGEgd29ya2VyCi0g
IGltcG9ydFNjcmlwdHMoJ3V0aWwuanMnLCAndXRpbF93b3JrZXIuanMnKTsKLX0KLQotLy8gTmFt
ZXNwYWNlIGZvciBob2xkaW5nIGdsb2JhbHMuCi12YXIgYmVuY2htYXJrID0ge307Ci1iZW5jaG1h
cmsuc3RhcnRUaW1lSW5NcyA9IDA7Ci0KLXZhciB0aW1lcklEID0gbnVsbDsKLQotZnVuY3Rpb24g
c2VuZEJlbmNobWFya1N0ZXAoc2l6ZSwgY29uZmlnLCBpc1dhcm1VcCkgewotICB0aW1lcklEID0g
bnVsbDsKLSAgYmVuY2htYXJrLnN0YXJ0VGltZUluTXMgPSBudWxsOwotCi0gIC8vIFByZXBhcmUg
ZGF0YS4KLSAgdmFyIGRhdGFBcnJheSA9IFtdOwotICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbmZp
Zy5udW1GZXRjaGVzOyArK2kpIHsKLSAgICB2YXIgZGF0YSA9IG51bGw7Ci0gICAgaWYgKGNvbmZp
Zy5kYXRhVHlwZSA9PSAnYXJyYXlidWZmZXInIHx8Ci0gICAgICAgIGNvbmZpZy5kYXRhVHlwZSA9
PSAnYmxvYicpIHsKLSAgICAgIGRhdGEgPSBuZXcgQXJyYXlCdWZmZXIoc2l6ZSk7Ci0KLSAgICAg
IGZpbGxBcnJheUJ1ZmZlcihkYXRhLCAweDYxKTsKLQotICAgICAgaWYgKGNvbmZpZy5kYXRhVHlw
ZSA9PSAnYmxvYicpIHsKLSAgICAgICAgZGF0YSA9IG5ldyBCbG9iKFtkYXRhXSk7Ci0gICAgICB9
Ci0gICAgfSBlbHNlIHsKLSAgICAgIGRhdGEgPSByZXBlYXRTdHJpbmcoJ2EnLCBzaXplKTsKLSAg
ICB9Ci0KLSAgICBkYXRhQXJyYXkucHVzaChkYXRhKTsKLSAgfQotCi0gIC8vIFN0YXJ0IHRpbWUg
bWVhc3VyaW5nLgotICBiZW5jaG1hcmsuc3RhcnRUaW1lSW5NcyA9IGdldFRpbWVTdGFtcCgpOwot
Ci0gIC8vIFN0YXJ0IGZldGNoLgotICB2YXIgcHJvbWlzZXMgPSBbXTsKLSAgZm9yICh2YXIgaSA9
IDA7IGkgPCBjb25maWcubnVtRmV0Y2hlczsgKytpKSB7Ci0gICAgdmFyIGRhdGEgPSBkYXRhQXJy
YXlbaV07Ci0gICAgdmFyIHByb21pc2UgPSBmZXRjaChjb25maWcucHJlZml4VXJsICsgJ19zZW5k
JywKLSAgICAgICAgICAgICAgICAgICAgICAgIHttZXRob2Q6ICdQT1NUJywgYm9keTogZGF0YX0p
Ci0gICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgewotICAgICAgICAgIGlmIChyZXNw
b25zZS5zdGF0dXMgIT0gMjAwKSB7Ci0gICAgICAgICAgICBjb25maWcuYWRkVG9Mb2coJ0ZhaWxl
ZCAoc3RhdHVzPScgKyByZXNwb25zZS5zdGF0dXMgKyAnKScpOwotICAgICAgICAgICAgcmV0dXJu
IFByb21pc2UucmVqZWN0KCk7Ci0gICAgICAgICAgfQotICAgICAgICAgIC8vIENoZWNrIGFuZCB3
YXJuIGlmIHByb3h5IGlzIGVuYWJsZWQuCi0gICAgICAgICAgaWYgKHJlc3BvbnNlLmhlYWRlcnMu
Z2V0KCdWaWEnKSAhPT0gbnVsbCkgewotICAgICAgICAgICAgY29uZmlnLmFkZFRvTG9nKCdXQVJO
SU5HOiBwcm94eSBzZWVtcyBlbmFibGVkLicpOwotICAgICAgICAgIH0KLSAgICAgICAgICBpZiAo
Y29uZmlnLnZlcmlmeURhdGEpIHsKLSAgICAgICAgICAgIHJldHVybiByZXNwb25zZS50ZXh0KCkK
LSAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbih0ZXh0KSB7Ci0gICAgICAgICAgICAgICAg
ICBpZiAoIXZlcmlmeUFja25vd2xlZGdlbWVudChjb25maWcsIHRleHQsIHNpemUpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpOwotICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0gICAg
cHJvbWlzZXMucHVzaChwcm9taXNlKTsKLSAgfQotCi0gIC8vIEZpbmlzaCBhbmQgcmVwb3J0IHRp
bWUgbWVhc3VyaW5nLgotICBQcm9taXNlLmFsbChwcm9taXNlcykKLSAgICAgIC50aGVuKGZ1bmN0
aW9uKCkgewotICAgICAgICBpZiAoYmVuY2htYXJrLnN0YXJ0VGltZUluTXMgPT0gbnVsbCkgewot
ICAgICAgICAgIGNvbmZpZy5hZGRUb0xvZygnc3RhcnRUaW1lSW5NcyBub3Qgc2V0Jyk7Ci0gICAg
ICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7Ci0gICAgICAgIH0KLSAgICAgICAgY2FsY3Vs
YXRlQW5kTG9nUmVzdWx0KGNvbmZpZywgc2l6ZSwgYmVuY2htYXJrLnN0YXJ0VGltZUluTXMsCi0g
ICAgICAgICAgc2l6ZSAqIGNvbmZpZy5udW1GZXRjaGVzLCBpc1dhcm1VcCk7Ci0gICAgICAgIHJ1
bk5leHRUYXNrKGNvbmZpZyk7Ci0gICAgICB9KQotICAgICAgLmNhdGNoKGZ1bmN0aW9uKGUpIHsK
LSAgICAgICAgY29uZmlnLmFkZFRvTG9nKCJFUlJPUjogIiArIGUpOwotICAgICAgICBjb25maWcu
bm90aWZ5QWJvcnQoKTsKLSAgICAgIH0pOwotfQotCi1mdW5jdGlvbiByZWNlaXZlQmVuY2htYXJr
U3RlcChzaXplLCBjb25maWcsIGlzV2FybVVwKSB7Ci0gIHRpbWVySUQgPSBudWxsOwotICBiZW5j
aG1hcmsuc3RhcnRUaW1lSW5NcyA9IG51bGw7Ci0KLSAgLy8gU3RhcnQgdGltZSBtZWFzdXJpbmcu
Ci0gIGJlbmNobWFyay5zdGFydFRpbWVJbk1zID0gZ2V0VGltZVN0YW1wKCk7Ci0KLSAgLy8gU3Rh
cnQgZmV0Y2guCi0gIHZhciBwcm9taXNlcyA9IFtdOwotICBmb3IgKHZhciBpID0gMDsgaSA8IGNv
bmZpZy5udW1GZXRjaGVzOyArK2kpIHsKLSAgICB2YXIgcmVxdWVzdDsKLSAgICBpZiAoY29uZmln
Lm1ldGhvZEFuZENhY2hlID09PSAnR0VULU5PQ0FDSEUnKSB7Ci0gICAgICByZXF1ZXN0ID0gbmV3
IFJlcXVlc3QoY29uZmlnLnByZWZpeFVybCArICdfcmVjZWl2ZV9nZXRub2NhY2hlPycgKyBzaXpl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHttZXRob2Q6ICdHRVQnfSk7Ci0gICAgfSBl
bHNlIGlmIChjb25maWcubWV0aG9kQW5kQ2FjaGUgPT09ICdHRVQtQ0FDSEUnKSB7Ci0gICAgICBy
ZXF1ZXN0ID0gbmV3IFJlcXVlc3QoY29uZmlnLnByZWZpeFVybCArICdfcmVjZWl2ZV9nZXRjYWNo
ZT8nICsgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7bWV0aG9kOiAnR0VUJ30p
OwotICAgIH0gZWxzZSB7Ci0gICAgICByZXF1ZXN0ID0gbmV3IFJlcXVlc3QoY29uZmlnLnByZWZp
eFVybCArICdfcmVjZWl2ZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAge21ldGhvZDog
J1BPU1QnLCBib2R5OiBzaXplICsgJyBub25lJ30pOwotICAgIH0KLSAgICB2YXIgcHJvbWlzZSA9
IGZldGNoKHJlcXVlc3QpCi0gICAgICAgIC50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7Ci0gICAg
ICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyAhPSAyMDApIHsKLSAgICAgICAgICAgIGNvbmZpZy5h
ZGRUb0xvZygnRmFpbGVkIChzdGF0dXM9JyArIHRoaXMuc3RhdHVzICsgJyknKTsKLSAgICAgICAg
ICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpOwotICAgICAgICAgIH0KLSAgICAgICAgICAvLyBD
aGVjayBhbmQgd2FybiBpZiBwcm94eSBpcyBlbmFibGVkLgotICAgICAgICAgIGlmIChyZXNwb25z
ZS5oZWFkZXJzLmdldCgnVmlhJykgIT09IG51bGwpIHsKLSAgICAgICAgICAgIGNvbmZpZy5hZGRU
b0xvZygnV0FSTklORzogcHJveHkgc2VlbXMgZW5hYmxlZC4nKTsKLSAgICAgICAgICB9Ci0gICAg
ICAgICAgaWYgKGNvbmZpZy5kYXRhVHlwZSA9PT0gJ2FycmF5YnVmZmVyJykgewotICAgICAgICAg
ICAgcmV0dXJuIHJlc3BvbnNlLmFycmF5QnVmZmVyKCkKLSAgICAgICAgICAgICAgICAudGhlbihm
dW5jdGlvbihhcnJheUJ1ZmZlcikgewotICAgICAgICAgICAgICAgICAgcmV0dXJuIFthcnJheUJ1
ZmZlci5ieXRlTGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAoIWNvbmZpZy52ZXJp
ZnlEYXRhIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJpZnlBcnJheUJ1ZmZlcihh
cnJheUJ1ZmZlciwgMHg2MSkpXTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICB9IGVs
c2UgaWYgKGNvbmZpZy5kYXRhVHlwZSA9PSAnYmxvYicpIHsKLSAgICAgICAgICAgIHJldHVybiBy
ZXNwb25zZS5ibG9iKCkKLSAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbihibG9iKSB7Ci0g
ICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVq
ZWN0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZy52ZXJpZnlEYXRhKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB2ZXJpZnlCbG9iKGNvbmZpZywgYmxvYiwgMHg2MSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihyZWNlaXZlZFNpemUsIHZlcmlmaWNh
dGlvblJlc3VsdCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShbcmVj
ZWl2ZWRTaXplLCB2ZXJpZmljYXRpb25SZXN1bHRdKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9KTsKLSAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzb2x2ZShbYmxvYi5zaXplLCB0cnVlXSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLnRleHQoKQotICAgICAg
ICAgICAgICAgIC50aGVuKGZ1bmN0aW9uKHRleHQpIHsKLSAgICAgICAgICAgICAgICAgIHJldHVy
biBbdGV4dC5sZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICghY29uZmlnLnZlcmlm
eURhdGEgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQgPT0gcmVwZWF0U3RyaW5n
KCdhJywgdGV4dC5sZW5ndGgpKV07Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgfQot
ICAgICAgICB9KQotICAgICAgICAudGhlbihmdW5jdGlvbihyZWNlaXZlZFNpemVBbmRWZXJpZmlj
YXRpb25SZXN1bHQpIHsKLSAgICAgICAgICB2YXIgcmVjZWl2ZWRTaXplID0gcmVjZWl2ZWRTaXpl
QW5kVmVyaWZpY2F0aW9uUmVzdWx0WzBdOwotICAgICAgICAgIHZhciB2ZXJpZmljYXRpb25SZXN1
bHQgPSByZWNlaXZlZFNpemVBbmRWZXJpZmljYXRpb25SZXN1bHRbMV07Ci0gICAgICAgICAgaWYg
KHJlY2VpdmVkU2l6ZSAhPT0gc2l6ZSkgewotICAgICAgICAgICAgY29uZmlnLmFkZFRvTG9nKCdF
eHBlY3RlZCAnICsgc2l6ZSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0IgYnV0IHJl
Y2VpdmVkICcgKyByZWNlaXZlZFNpemUgKyAnQicpOwotICAgICAgICAgICAgcmV0dXJuIFByb21p
c2UucmVqZWN0KCk7Ci0gICAgICAgICAgfQotICAgICAgICAgIGlmICghdmVyaWZpY2F0aW9uUmVz
dWx0KSB7Ci0gICAgICAgICAgICBjb25maWcuYWRkVG9Mb2coJ1Jlc3BvbnNlIHZlcmlmaWNhdGlv
biBmYWlsZWQnKTsKLSAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpOwotICAgICAg
ICAgIH0KLSAgICAgICAgfSk7Ci0gICAgcHJvbWlzZXMucHVzaChwcm9taXNlKTsKLSAgfQotCi0g
IC8vIEZpbmlzaCBhbmQgcmVwb3J0IHRpbWUgbWVhc3VyaW5nLgotICBQcm9taXNlLmFsbChwcm9t
aXNlcykKLSAgICAgIC50aGVuKGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAoYmVuY2htYXJrLnN0
YXJ0VGltZUluTXMgPT0gbnVsbCkgewotICAgICAgICAgIGNvbmZpZy5hZGRUb0xvZygnc3RhcnRU
aW1lSW5NcyBub3Qgc2V0Jyk7Ci0gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7Ci0g
ICAgICAgIH0KLSAgICAgICAgY2FsY3VsYXRlQW5kTG9nUmVzdWx0KGNvbmZpZywgc2l6ZSwgYmVu
Y2htYXJrLnN0YXJ0VGltZUluTXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
ICogY29uZmlnLm51bUZldGNoZXMsIGlzV2FybVVwKTsKLSAgICAgICAgcnVuTmV4dFRhc2soY29u
ZmlnKTsKLSAgICAgIH0pCi0gICAgICAuY2F0Y2goZnVuY3Rpb24oZSkgewotICAgICAgICBjb25m
aWcuYWRkVG9Mb2coIkVSUk9SOiAiICsgZSk7Ci0gICAgICAgIGNvbmZpZy5ub3RpZnlBYm9ydCgp
OwotICAgICAgfSk7Ci19Ci0KLQotZnVuY3Rpb24gZ2V0Q29uZmlnU3RyaW5nKGNvbmZpZykgewot
ICByZXR1cm4gJygnICsgY29uZmlnLmRhdGFUeXBlICsKLSAgICAnLCB2ZXJpZnlEYXRhPScgKyBj
b25maWcudmVyaWZ5RGF0YSArCi0gICAgJywgJyArIChpc1dvcmtlciA/ICdXb3JrZXInIDogJ01h
aW4nKSArCi0gICAgJywgbnVtRmV0Y2hlcz0nICsgY29uZmlnLm51bUZldGNoZXMgKwotICAgICcs
IG51bUl0ZXJhdGlvbnM9JyArIGNvbmZpZy5udW1JdGVyYXRpb25zICsKLSAgICAnLCBudW1XYXJt
VXBJdGVyYXRpb25zPScgKyBjb25maWcubnVtV2FybVVwSXRlcmF0aW9ucyArCi0gICAgJyknOwot
fQotCi1mdW5jdGlvbiBzdGFydEJlbmNobWFyayhjb25maWcpIHsKLSAgY2xlYXJUaW1lb3V0KHRp
bWVySUQpOwotCi0gIHJ1bk5leHRUYXNrKGNvbmZpZyk7Ci19Ci0KLWZ1bmN0aW9uIGJhdGNoQmVu
Y2htYXJrKG9yaWdpbmFsQ29uZmlnKSB7Ci0gIG9yaWdpbmFsQ29uZmlnLmFkZFRvTG9nKCdCYXRj
aCBiZW5jaG1hcmsnKTsKLQotICB0YXNrcyA9IFtdOwotICBjbGVhckF2ZXJhZ2VEYXRhKCk7Ci0K
LSAgdmFyIGRhdGFUeXBlcyA9IFsndGV4dCcsICdibG9iJywgJ2FycmF5YnVmZmVyJ107Ci0gIHZh
ciBzdGVwRnVuY3MgPSBbc2VuZEJlbmNobWFya1N0ZXAsIHJlY2VpdmVCZW5jaG1hcmtTdGVwXTsK
LSAgdmFyIG5hbWVzID0gWydTZW5kJywgJ1JlY2VpdmUnXTsKLSAgZm9yICh2YXIgaSA9IDA7IGkg
PCBzdGVwRnVuY3MubGVuZ3RoOyArK2kpIHsKLSAgICBmb3IgKHZhciBqID0gMDsgaiA8IGRhdGFU
eXBlcy5sZW5ndGg7ICsraikgewotICAgICAgdmFyIGNvbmZpZyA9IGNsb25lQ29uZmlnKG9yaWdp
bmFsQ29uZmlnKTsKLSAgICAgIGNvbmZpZy5kYXRhVHlwZSA9IGRhdGFUeXBlc1tqXTsKLSAgICAg
IGFkZFRhc2tzKGNvbmZpZywgc3RlcEZ1bmNzW2ldKTsKLSAgICAgIGFkZFJlc3VsdFJlcG9ydGlu
Z1Rhc2soY29uZmlnLAotICAgICAgICAgIG5hbWVzW2ldICsgJyBiZW5jaG1hcmsgJyArIGdldENv
bmZpZ1N0cmluZyhjb25maWcpKTsKLSAgICB9Ci0gIH0KLQotICBzdGFydEJlbmNobWFyayhjb25m
aWcpOwotfQotCi1mdW5jdGlvbiBjbGVhbnVwKCkgewotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFt
cGxlL2ZldGNoX3BlcmZvcm1hbmNlX3Rlc3RfaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvZmV0
Y2hfcGVyZm9ybWFuY2VfdGVzdF9pZnJhbWUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZTEyZGYyZTdkZjRkM2VhNjJkYzJhMGJkNWU4MWJlOGJmNWI1ZGJjOS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvZmV0Y2hf
cGVyZm9ybWFuY2VfdGVzdF9pZnJhbWUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSJ1dGlsLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSJwZXJmb3JtYW5jZV90ZXN0X2lmcmFtZS5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iZmV0Y2hfYmVuY2htYXJrLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvZXhhbXBsZS9oYW5kbGVyX21hcC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvaGFuZGxl
cl9tYXAudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMWM0YzA5YWEwMDkxZDhi
YWYyOTA4OTU5OTA1ODY3ODQyYWViODY1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS9oYW5kbGVyX21hcC50eHQKKysrIC9kZXYvbnVs
bApAQCAtMSwxMSArMCwwIEBACi0jIHdlYnNvY2tldCBoYW5kbGVyIG1hcCBmaWxlLCB1c2VkIGJ5
IHN0YW5kYWxvbmUucHkgLW0gb3B0aW9uLgotIyBBIGxpbmUgc3RhcnRpbmcgd2l0aCAnIycgaXMg
YSBjb21tZW50IGxpbmUuCi0jIEVhY2ggbGluZSBjb25zaXN0cyBvZiAnYWxpYXNfcmVzb3VyY2Vf
cGF0aCcgYW5kICdleGlzdGluZ19yZXNvdXJjZV9wYXRoJwotIyBzZXBhcmF0ZWQgYnkgc3BhY2Vz
LgotIyBBbGlhc2luZyBpcyBwcm9jZXNzZWQgZnJvbSB0aGUgdG9wIHRvIHRoZSBib3R0b20gb2Yg
dGhlIGxpbmUsIGFuZAotIyAnZXhpc3RpbmdfcmVzb3VyY2VfcGF0aCcgbXVzdCBleGlzdCBiZWZv
cmUgaXQgaXMgYWxpYXNlZC4KLSMgRm9yIGV4YW1wbGUsCi0jICAvIC9lY2hvCi0jIG1lYW5zIHRo
YXQgYSByZXF1ZXN0IHRvICcvJyB3aWxsIGJlIGhhbmRsZWQgYnkgaGFuZGxlcnMgZm9yICcvZWNo
bycuCi0vIC9lY2hvCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS9oc3RzX3dzaC5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvZXhhbXBsZS9oc3RzX3dzaC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTg2
MTk0NjkyMWFmMDQ1OTRkNjIwMjZiNDZmMDc3NThkZGZlNDAyYS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvaHN0c193c2gucHkKKysr
IC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0jIENvcHlyaWdodCAyMDEzLCBHb29nbGUgSW5j
LgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0j
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0j
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi1kZWYgd2Vi
X3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6Ci0gICAgcmVxdWVzdC5leHRyYV9o
ZWFkZXJzLmFwcGVuZCgKLSAgICAgICAgKCdTdHJpY3QtVHJhbnNwb3J0LVNlY3VyaXR5JywgJ21h
eC1hZ2U9ODY0MDAnKSkKLQotCi1kZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3Qp
OgotICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRfbWVzc2FnZSgnSGVsbG8nLCBiaW5hcnk9RmFs
c2UpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvaW50
ZXJuYWxfZXJyb3Jfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2ludGVybmFsX2Vycm9yX3dzaC5weQpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmU1ODFiNTRhNjQ4YzA5YTIyZjI1NDUxMjdk
NzBkZjA1MTM0OTIzNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L2V4YW1wbGUvaW50ZXJuYWxfZXJyb3Jfd3NoLnB5CisrKyAvZGV2L251bGwKQEAg
LTEsNDIgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwot
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0j
IGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0j
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQg
aW1wb3J0IG1zZ3V0aWwKLQotCi1kZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVx
dWVzdCk6Ci0gICAgcGFzcwotCi0KLWRlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVz
dCk6Ci0gICAgcmFpc2UgbXNndXRpbC5CYWRPcGVyYXRpb25FeGNlcHRpb24oJ0ludGVudGlvbmFs
JykKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS9vcmln
aW5fY2hlY2tfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL29yaWdpbl9jaGVja193c2gucHkKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwNTc2N2FiOTMyZmI1ODI4MjRhYWYxYTU3ZDkyNDlj
MzA0YmQ1MWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNv
Y2tldC9leGFtcGxlL29yaWdpbl9jaGVja193c2gucHkKKysrIC9kZXYvbnVsbApAQCAtMSw0NCAr
MCwwIEBACi0jIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJp
YnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIyBUaGlzIGV4YW1wbGUgaXMgZGVyaXZlZCBmcm9t
IHRlc3QvdGVzdGRhdGEvaGFuZGxlcnMvb3JpZ2luX2NoZWNrX3dzaC5weS4KLQotCi1kZWYgd2Vi
X3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6Ci0gICAgaWYgcmVxdWVzdC53c19v
cmlnaW4gPT0gJ2h0dHA6Ly9leGFtcGxlLmNvbSc6Ci0gICAgICAgIHJldHVybgotICAgIHJhaXNl
IFZhbHVlRXJyb3IoJ1VuYWNjZXB0YWJsZSBvcmlnaW46ICVyJyAlIHJlcXVlc3Qud3Nfb3JpZ2lu
KQotCi0KLWRlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6Ci0gICAgcmVxdWVz
dC5jb25uZWN0aW9uLndyaXRlKCdvcmlnaW5fY2hlY2tfd3NoLnB5IGlzIGNhbGxlZCBmb3IgJXMs
ICVzJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXF1ZXN0LndzX3Jlc291cmNl
LCByZXF1ZXN0LndzX3Byb3RvY29sKSkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3
ZWJzb2NrZXQvZXhhbXBsZS9wZXJmb3JtYW5jZV90ZXN0X2lmcmFtZS5odG1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFt
cGxlL3BlcmZvcm1hbmNlX3Rlc3RfaWZyYW1lLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDc4YWVkZTk3YTE0MzA0Mjg1NGU1NTU3Mjg5MzcyMjhmZWFjN2JlYjAuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL3BlcmZv
cm1hbmNlX3Rlc3RfaWZyYW1lLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0idXRpbC5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0icGVyZm9ybWFuY2VfdGVzdF9pZnJhbWUuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9ImJlbmNobWFyay5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0
L2V4YW1wbGUvcGVyZm9ybWFuY2VfdGVzdF9pZnJhbWUuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvcGVyZm9y
bWFuY2VfdGVzdF9pZnJhbWUuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2NWIy
NWJkMWZmZDYzNzU5M2VmM2Y3ZjA2ZjBhNGZlNjYwYWQwZTguLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL3BlcmZvcm1hbmNlX3Rlc3Rf
aWZyYW1lLmpzCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotZnVuY3Rpb24gcGVyZlRl
c3RBZGRUb0xvZyh0ZXh0KSB7Ci0gIHBhcmVudC5wb3N0TWVzc2FnZSh7J2NvbW1hbmQnOiAnbG9n
JywgJ3ZhbHVlJzogdGV4dH0sICcqJyk7Ci19Ci0KLWZ1bmN0aW9uIHBlcmZUZXN0QWRkVG9TdW1t
YXJ5KHRleHQpIHsKLX0KLQotZnVuY3Rpb24gcGVyZlRlc3RNZWFzdXJlVmFsdWUodmFsdWUpIHsK
LSAgcGFyZW50LnBvc3RNZXNzYWdlKHsnY29tbWFuZCc6ICdtZWFzdXJlVmFsdWUnLCAndmFsdWUn
OiB2YWx1ZX0sICcqJyk7Ci19Ci0KLWZ1bmN0aW9uIHBlcmZUZXN0Tm90aWZ5QWJvcnQoKSB7Ci0g
IHBhcmVudC5wb3N0TWVzc2FnZSh7J2NvbW1hbmQnOiAnbm90aWZ5QWJvcnQnfSwgJyonKTsKLX0K
LQotZnVuY3Rpb24gZ2V0Q29uZmlnRm9yUGVyZm9ybWFuY2VUZXN0KGNvbm5lY3Rpb25UeXBlLCBk
YXRhVHlwZSwgYXN5bmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVy
aWZ5RGF0YSwgbnVtSXRlcmF0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBudW1XYXJtVXBJdGVyYXRpb25zKSB7Ci0gIHZhciBwcmVmaXhVcmw7Ci0gIGlmIChjb25u
ZWN0aW9uVHlwZSA9PT0gJ1dlYlNvY2tldCcpIHsKLSAgICBwcmVmaXhVcmwgPSAnd3M6Ly8nICsg
bG9jYXRpb24uaG9zdCArICcvYmVuY2htYXJrX2hlbHBlcic7Ci0gIH0gZWxzZSB7Ci0gICAgLy8g
WEhSIG9yIGZldGNoCi0gICAgcHJlZml4VXJsID0gJ2h0dHA6Ly8nICsgbG9jYXRpb24uaG9zdCAr
ICcvMDczYmUwMDFlMTA5NTA2OTJjY2JmM2EyYWQyMWMyNDUnOwotICB9Ci0KLSAgcmV0dXJuIHsK
LSAgICBwcmVmaXhVcmw6IHByZWZpeFVybCwKLSAgICBwcmludFNpemU6IHRydWUsCi0gICAgbnVt
WEhSczogMSwKLSAgICBudW1GZXRjaGVzOiAxLAotICAgIG51bVNvY2tldHM6IDEsCi0gICAgLy8g
KyAxIGlzIGZvciBhIHdhcm11cCBpdGVyYXRpb24gYnkgdGhlIFRlbGVtZXRyeSBmcmFtZXdvcmsu
Ci0gICAgbnVtSXRlcmF0aW9uczogbnVtSXRlcmF0aW9ucyArIG51bVdhcm1VcEl0ZXJhdGlvbnMg
KyAxLAotICAgIG51bVdhcm1VcEl0ZXJhdGlvbnM6IG51bVdhcm1VcEl0ZXJhdGlvbnMsCi0gICAg
bWluVG90YWw6IDEwMjQwMDAwLAotICAgIHN0YXJ0U2l6ZTogMTAyNDAwMDAsCi0gICAgc3RvcFRo
cmVzaG9sZDogMTAyNDAwMDAsCi0gICAgbXVsdGlwbGllcnM6IFsyXSwKLSAgICB2ZXJpZnlEYXRh
OiB2ZXJpZnlEYXRhLAotICAgIGRhdGFUeXBlOiBkYXRhVHlwZSwKLSAgICBhc3luYzogYXN5bmMs
Ci0gICAgYWRkVG9Mb2c6IHBlcmZUZXN0QWRkVG9Mb2csCi0gICAgYWRkVG9TdW1tYXJ5OiBwZXJm
VGVzdEFkZFRvU3VtbWFyeSwKLSAgICBtZWFzdXJlVmFsdWU6IHBlcmZUZXN0TWVhc3VyZVZhbHVl
LAotICAgIG5vdGlmeUFib3J0OiBwZXJmVGVzdE5vdGlmeUFib3J0Ci0gIH07Ci19Ci0KLXZhciBk
YXRhOwotb25tZXNzYWdlID0gZnVuY3Rpb24obWVzc2FnZSkgewotICB2YXIgYWN0aW9uOwotICBp
ZiAobWVzc2FnZS5kYXRhLmNvbW1hbmQgPT09ICdzdGFydCcpIHsKLSAgICBkYXRhID0gbWVzc2Fn
ZS5kYXRhOwotICAgIGluaXRXb3JrZXIoZGF0YS5jb25uZWN0aW9uVHlwZSwgJ2h0dHA6Ly8nICsg
bG9jYXRpb24uaG9zdCk7Ci0gICAgYWN0aW9uID0gZGF0YS5iZW5jaG1hcmtOYW1lOwotICB9IGVs
c2UgewotICAgIGFjdGlvbiA9ICdzdG9wJzsKLSAgfQotCi0gIHZhciBjb25maWcgPSBnZXRDb25m
aWdGb3JQZXJmb3JtYW5jZVRlc3QoZGF0YS5jb25uZWN0aW9uVHlwZSwgZGF0YS5kYXRhVHlwZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmFzeW5jLCBk
YXRhLnZlcmlmeURhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGF0YS5udW1JdGVyYXRpb25zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRhdGEubnVtV2FybVVwSXRlcmF0aW9ucyk7Ci0gIGRvQWN0aW9uKGNvbmZpZywg
ZGF0YS5pc1dvcmtlciwgYWN0aW9uKTsKLX07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvcHl3
ZWJzb2NrZXQuY29uZiBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS9weXdlYnNvY2tldC5jb25mCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAzMzVkMTMwYTVjODRmNjlkZTRmODFkMzU4ZmIyY2RiNWJkZTRh
ZjZkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
ZXhhbXBsZS9weXdlYnNvY2tldC5jb25mCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAot
IyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMK
LSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
IyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4K
LSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0KLSMKLSMgU2FtcGxlIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgYXBh
Y2hlMgotIwotTG9nTGV2ZWwgZGVidWcKLTxJZk1vZHVsZSBweXRob25fbW9kdWxlPgotICBQeXRo
b25QYXRoICJzeXMucGF0aCtbJy9tb2RfcHl3ZWJzb2NrZXQnXSIKLSAgUHl0aG9uT3B0aW9uIG1v
ZF9weXdlYnNvY2tldC5oYW5kbGVyX3Jvb3QgL3Zhci93d3cKLSAgUHl0aG9uT3B0aW9uIG1vZF9w
eXdlYnNvY2tldC5oYW5kbGVyX3NjYW4gL3Zhci93d3cvd3MKLSAgI1B5dGhvbk9wdGlvbiBtb2Rf
cHl3ZWJzb2NrZXQuYWxsb3dfZHJhZnQ3NSBPbgotICA8TG9jYXRpb24gL3dzPgotICAgIFB5dGhv
bkhlYWRlclBhcnNlckhhbmRsZXIgbW9kX3B5d2Vic29ja2V0LmhlYWRlcnBhcnNlcmhhbmRsZXIK
LSAgPC9Mb2NhdGlvbj4KLTwvSWZNb2R1bGU+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvc3Bl
Y2lhbF9oZWFkZXJzLmNnaSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS9zcGVjaWFsX2hlYWRlcnMuY2dpCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYTUwODBmMWYxYWVhM2EzN2E3ZTcyOWM2NzhkNmEx
MjMzN2JlZGI3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvZXhhbXBsZS9zcGVjaWFsX2hlYWRlcnMuY2dpCisrKyAvZGV2L251bGwKQEAgLTEsMjgg
KzAsMCBAQAotIyEvdXNyL2Jpbi9weXRob24KLQotIyBDb3B5cmlnaHQgMjAxNCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZQotIyBsaWNlbnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRo
ZSBDT1BZSU5HIGZpbGUgb3IgYXQKLSMgaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vb3Bl
bi1zb3VyY2UvbGljZW5zZXMvYnNkCi0KLSIiIkNHSSBzY3JpcHQgc2FtcGxlIGZvciB0ZXN0aW5n
IGVmZmVjdCBvZiBIVFRQIGhlYWRlcnMgb24gdGhlIG9yaWdpbiBwYWdlLgotCi1Ob3RlIHRoYXQg
Q0dJIHNjcmlwdHMgZG9uJ3Qgd29yayBvbiB0aGUgc3RhbmRhbG9uZSBweXdlYnNvY2tldCBydW5u
aW5nIGluIFRMUwotbW9kZS4KLSIiIgotCi0KLXByaW50ICIiIkNvbnRlbnQtdHlwZTogdGV4dC9o
dG1sCi1Db250ZW50LVNlY3VyaXR5LVBvbGljeTogY29ubmVjdC1zcmMgc2VsZgotCi08aHRtbD4K
LTxoZWFkPgotPHRpdGxlPjwvdGl0bGU+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci12YXIg
c29ja2V0ID0gbmV3IFdlYlNvY2tldCgid3M6Ly9leGFtcGxlLmNvbSIpOwotPC9zY3JpcHQ+Ci08
L2JvZHk+Ci08L2h0bWw+IiIiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvdXRpbC5qcyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvZXhhbXBsZS91dGlsLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZWMwMDA3
YjFlZGQ1YTBjNTcxN2EyOGRhMDU1MjE4N2E2N2RhOWE3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS91dGlsLmpzCisrKyAvZGV2L251
bGwKQEAgLTEsMzI3ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDEzLCBHb29nbGUgSW5jLgotLy8g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8g
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLQotCi0vLyBVdGlsaXRpZXMgZm9yIGV4YW1wbGUgYXBwbGljYXRpb25zIChmb3Ig
Ym90aCBtYWluIGFuZCB3b3JrZXIgdGhyZWFkKS4KLQotdmFyIHJlc3VsdHMgPSB7fTsKLQotZnVu
Y3Rpb24gZ2V0VGltZVN0YW1wKCkgewotICByZXR1cm4gRGF0ZS5ub3coKTsKLX0KLQotZnVuY3Rp
b24gZm9ybWF0UmVzdWx0SW5LaUIoc2l6ZSwgdGltZVBlck1lc3NhZ2VJbk1zLCBzdGRkZXZUaW1l
UGVyTWVzc2FnZUluTXMsCi0gICAgc3BlZWQsIHByaW50U2l6ZSkgewotICBpZiAocHJpbnRTaXpl
KSB7Ci0gICAgcmV0dXJuIChzaXplIC8gMTAyNCkgKwotICAgICAgICAnXHQnICsgdGltZVBlck1l
c3NhZ2VJbk1zLnRvRml4ZWQoMykgKwotICAgICAgICAoc3RkZGV2VGltZVBlck1lc3NhZ2VJbk1z
ID09IC0xID8KLSAgICAgICAgICAgICcnIDoKLSAgICAgICAgICAgICdcdCcgKyBzdGRkZXZUaW1l
UGVyTWVzc2FnZUluTXMudG9GaXhlZCgzKSkgKwotICAgICAgICAnXHQnICsgc3BlZWQudG9GaXhl
ZCgzKTsKLSAgfSBlbHNlIHsKLSAgICByZXR1cm4gc3BlZWQudG9TdHJpbmcoKTsKLSAgfQotfQot
Ci1mdW5jdGlvbiBjbGVhckF2ZXJhZ2VEYXRhKCkgewotICByZXN1bHRzID0ge307Ci19Ci0KLWZ1
bmN0aW9uIHJlcG9ydEF2ZXJhZ2VEYXRhKGNvbmZpZykgewotICBjb25maWcuYWRkVG9TdW1tYXJ5
KAotICAgICAgJ1NpemVbS2lCXVx0QXZlcmFnZSB0aW1lW21zXVx0U3RkZGV2IHRpbWVbbXNdXHRT
cGVlZFtLQi9zXScpOwotICBmb3IgKHZhciBzaXplIGluIHJlc3VsdHMpIHsKLSAgICB2YXIgYXZl
cmFnZVRpbWVQZXJNZXNzYWdlSW5NcyA9IHJlc3VsdHNbc2l6ZV0uc3VtX3QgLyByZXN1bHRzW3Np
emVdLm47Ci0gICAgdmFyIHNwZWVkID0gY2FsY3VsYXRlU3BlZWRJbktCKHNpemUsIGF2ZXJhZ2VU
aW1lUGVyTWVzc2FnZUluTXMpOwotICAgIC8vIENhbGN1bGF0ZSBzYW1wbGUgc3RhbmRhcmQgZGV2
aWF0aW9uCi0gICAgdmFyIHN0ZGRldlRpbWVQZXJNZXNzYWdlSW5NcyA9IE1hdGguc3FydCgKLSAg
ICAgICAgKHJlc3VsdHNbc2l6ZV0uc3VtX3QyIC8gcmVzdWx0c1tzaXplXS5uIC0KLSAgICAgICAg
ICAgIGF2ZXJhZ2VUaW1lUGVyTWVzc2FnZUluTXMgKiBhdmVyYWdlVGltZVBlck1lc3NhZ2VJbk1z
KSAqCi0gICAgICAgIHJlc3VsdHNbc2l6ZV0ubiAvCi0gICAgICAgIChyZXN1bHRzW3NpemVdLm4g
LSAxKSk7Ci0gICAgY29uZmlnLmFkZFRvU3VtbWFyeShmb3JtYXRSZXN1bHRJbktpQigKLSAgICAg
ICAgc2l6ZSwgYXZlcmFnZVRpbWVQZXJNZXNzYWdlSW5Ncywgc3RkZGV2VGltZVBlck1lc3NhZ2VJ
bk1zLCBzcGVlZCwKLSAgICAgICAgdHJ1ZSkpOwotICB9Ci19Ci0KLWZ1bmN0aW9uIGNhbGN1bGF0
ZVNwZWVkSW5LQihzaXplLCB0aW1lU3BlbnRJbk1zKSB7Ci0gIHJldHVybiBNYXRoLnJvdW5kKHNp
emUgLyB0aW1lU3BlbnRJbk1zICogMTAwMCkgLyAxMDAwOwotfQotCi1mdW5jdGlvbiBjYWxjdWxh
dGVBbmRMb2dSZXN1bHQoY29uZmlnLCBzaXplLCBzdGFydFRpbWVJbk1zLCB0b3RhbFNpemUsCi0g
ICAgaXNXYXJtVXApIHsKLSAgdmFyIHRpbWVTcGVudEluTXMgPSBnZXRUaW1lU3RhbXAoKSAtIHN0
YXJ0VGltZUluTXM7Ci0gIHZhciBzcGVlZCA9IGNhbGN1bGF0ZVNwZWVkSW5LQih0b3RhbFNpemUs
IHRpbWVTcGVudEluTXMpOwotICB2YXIgdGltZVBlck1lc3NhZ2VJbk1zID0gdGltZVNwZW50SW5N
cyAvICh0b3RhbFNpemUgLyBzaXplKTsKLSAgaWYgKCFpc1dhcm1VcCkgewotICAgIGNvbmZpZy5t
ZWFzdXJlVmFsdWUodGltZVBlck1lc3NhZ2VJbk1zKTsKLSAgICBpZiAoIXJlc3VsdHNbc2l6ZV0p
IHsKLSAgICAgIHJlc3VsdHNbc2l6ZV0gPSB7bjogMCwgc3VtX3Q6IDAsIHN1bV90MjogMH07Ci0g
ICAgfQotICAgIHJlc3VsdHNbc2l6ZV0ubiArKzsKLSAgICByZXN1bHRzW3NpemVdLnN1bV90ICs9
IHRpbWVQZXJNZXNzYWdlSW5NczsKLSAgICByZXN1bHRzW3NpemVdLnN1bV90MiArPSB0aW1lUGVy
TWVzc2FnZUluTXMgKiB0aW1lUGVyTWVzc2FnZUluTXM7Ci0gIH0KLSAgY29uZmlnLmFkZFRvTG9n
KGZvcm1hdFJlc3VsdEluS2lCKHNpemUsIHRpbWVQZXJNZXNzYWdlSW5NcywgLTEsIHNwZWVkLAot
ICAgICAgY29uZmlnLnByaW50U2l6ZSkpOwotfQotCi1mdW5jdGlvbiByZXBlYXRTdHJpbmcoc3Ry
LCBjb3VudCkgewotICB2YXIgZGF0YSA9ICcnOwotICB2YXIgZXhwQ2h1bmsgPSBzdHI7Ci0gIHZh
ciByZW1haW4gPSBjb3VudDsKLSAgd2hpbGUgKHRydWUpIHsKLSAgICBpZiAocmVtYWluICUgMikg
ewotICAgICAgZGF0YSArPSBleHBDaHVuazsKLSAgICAgIHJlbWFpbiA9IChyZW1haW4gLSAxKSAv
IDI7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHJlbWFpbiAvPSAyOwotICAgIH0KLQotICAgIGlmIChy
ZW1haW4gPT0gMCkKLSAgICAgIGJyZWFrOwotCi0gICAgZXhwQ2h1bmsgPSBleHBDaHVuayArIGV4
cENodW5rOwotICB9Ci0gIHJldHVybiBkYXRhOwotfQotCi1mdW5jdGlvbiBmaWxsQXJyYXlCdWZm
ZXIoYnVmZmVyLCBjKSB7Ci0gIHZhciBpOwotCi0gIHZhciB1MzJDb250ZW50ID0gYyAqIDB4MDEw
MTAxMDE7Ci0KLSAgdmFyIHUzMkJsb2NrcyA9IE1hdGguZmxvb3IoYnVmZmVyLmJ5dGVMZW5ndGgg
LyA0KTsKLSAgdmFyIHUzMlZpZXcgPSBuZXcgVWludDMyQXJyYXkoYnVmZmVyLCAwLCB1MzJCbG9j
a3MpOwotICAvLyBsZW5ndGggYXR0cmlidXRlIGlzIHNsb3cgb24gQ2hyb21lLiBEb24ndCB1c2Ug
aXQgZm9yIGxvb3AgY29uZGl0aW9uLgotICBmb3IgKGkgPSAwOyBpIDwgdTMyQmxvY2tzOyArK2kp
IHsKLSAgICB1MzJWaWV3W2ldID0gdTMyQ29udGVudDsKLSAgfQotCi0gIC8vIEZyYWN0aW9uCi0g
IHZhciB1OEJsb2NrcyA9IGJ1ZmZlci5ieXRlTGVuZ3RoIC0gdTMyQmxvY2tzICogNDsKLSAgdmFy
IHU4VmlldyA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlciwgdTMyQmxvY2tzICogNCwgdThCbG9ja3Mp
OwotICBmb3IgKGkgPSAwOyBpIDwgdThCbG9ja3M7ICsraSkgewotICAgIHU4Vmlld1tpXSA9IGM7
Ci0gIH0KLX0KLQotZnVuY3Rpb24gdmVyaWZ5QXJyYXlCdWZmZXIoYnVmZmVyLCBleHBlY3RlZENo
YXIpIHsKLSAgdmFyIGk7Ci0KLSAgdmFyIGV4cGVjdGVkVTMyVmFsdWUgPSBleHBlY3RlZENoYXIg
KiAweDAxMDEwMTAxOwotCi0gIHZhciB1MzJCbG9ja3MgPSBNYXRoLmZsb29yKGJ1ZmZlci5ieXRl
TGVuZ3RoIC8gNCk7Ci0gIHZhciB1MzJWaWV3ID0gbmV3IFVpbnQzMkFycmF5KGJ1ZmZlciwgMCwg
dTMyQmxvY2tzKTsKLSAgZm9yIChpID0gMDsgaSA8IHUzMkJsb2NrczsgKytpKSB7Ci0gICAgaWYg
KHUzMlZpZXdbaV0gIT0gZXhwZWN0ZWRVMzJWYWx1ZSkgewotICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLSAgfQotCi0gIHZhciB1OEJsb2NrcyA9IGJ1ZmZlci5ieXRlTGVuZ3RoIC0gdTMyQmxv
Y2tzICogNDsKLSAgdmFyIHU4VmlldyA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlciwgdTMyQmxvY2tz
ICogNCwgdThCbG9ja3MpOwotICBmb3IgKGkgPSAwOyBpIDwgdThCbG9ja3M7ICsraSkgewotICAg
IGlmICh1OFZpZXdbaV0gIT0gZXhwZWN0ZWRDaGFyKSB7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotICB9Ci0KLSAgcmV0dXJuIHRydWU7Ci19Ci0KLWZ1bmN0aW9uIHZlcmlmeUJsb2IoY29u
ZmlnLCBibG9iLCBleHBlY3RlZENoYXIsIGRvbmVDYWxsYmFjaykgewotICB2YXIgcmVhZGVyID0g
bmV3IEZpbGVSZWFkZXIoYmxvYik7Ci0gIHJlYWRlci5vbmVycm9yID0gZnVuY3Rpb24oKSB7Ci0g
ICAgY29uZmlnLmFkZFRvTG9nKCdGaWxlUmVhZGVyIEVycm9yOiAnICsgcmVhZGVyLmVycm9yLm1l
c3NhZ2UpOwotICAgIGRvbmVDYWxsYmFjayhibG9iLnNpemUsIGZhbHNlKTsKLSAgfQotICByZWFk
ZXIub25sb2FkZW5kID0gZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHJlc3VsdCA9IHZlcmlmeUFycmF5
QnVmZmVyKHJlYWRlci5yZXN1bHQsIGV4cGVjdGVkQ2hhcik7Ci0gICAgZG9uZUNhbGxiYWNrKGJs
b2Iuc2l6ZSwgcmVzdWx0KTsKLSAgfQotICByZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoYmxvYik7
Ci19Ci0KLWZ1bmN0aW9uIHZlcmlmeUFja25vd2xlZGdlbWVudChjb25maWcsIG1lc3NhZ2UsIHNp
emUpIHsKLSAgaWYgKHR5cGVvZiBtZXNzYWdlICE9ICdzdHJpbmcnKSB7Ci0gICAgY29uZmlnLmFk
ZFRvTG9nKCdJbnZhbGlkIGFjayB0eXBlOiAnICsgdHlwZW9mIG1lc3NhZ2UpOwotICAgIHJldHVy
biBmYWxzZTsKLSAgfQotICB2YXIgcGFyc2VkQWNrID0gcGFyc2VJbnQobWVzc2FnZSk7Ci0gIGlm
IChpc05hTihwYXJzZWRBY2spKSB7Ci0gICAgY29uZmlnLmFkZFRvTG9nKCdJbnZhbGlkIGFjayB2
YWx1ZTogJyArIG1lc3NhZ2UpOwotICAgIHJldHVybiBmYWxzZTsKLSAgfQotICBpZiAocGFyc2Vk
QWNrICE9IHNpemUpIHsKLSAgICBjb25maWcuYWRkVG9Mb2coCi0gICAgICAgICdFeHBlY3RlZCBh
Y2sgZm9yICcgKyBzaXplICsgJ0IgYnV0IHJlY2VpdmVkIG9uZSBmb3IgJyArIHBhcnNlZEFjayAr
Ci0gICAgICAgICdCJyk7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgcmV0dXJuIHRydWU7
Ci19Ci0KLWZ1bmN0aW9uIGNsb25lQ29uZmlnKG9iaikgewotICB2YXIgbmV3T2JqID0ge307Ci0g
IGZvciAoa2V5IGluIG9iaikgewotICAgIG5ld09ialtrZXldID0gb2JqW2tleV07Ci0gIH0KLSAg
cmV0dXJuIG5ld09iajsKLX0KLQotdmFyIHRhc2tzID0gW107Ci0KLWZ1bmN0aW9uIHJ1bk5leHRU
YXNrKGNvbmZpZykgewotICB2YXIgdGFzayA9IHRhc2tzLnNoaWZ0KCk7Ci0gIGlmICh0YXNrID09
IHVuZGVmaW5lZCkgewotICAgIGNvbmZpZy5hZGRUb0xvZygnRmluaXNoZWQnKTsKLSAgICBjbGVh
bnVwKCk7Ci0gICAgcmV0dXJuOwotICB9Ci0gIHRpbWVySUQgPSBzZXRUaW1lb3V0KHRhc2ssIDAp
OwotfQotCi1mdW5jdGlvbiBidWlsZExlZ2VuZFN0cmluZyhjb25maWcpIHsKLSAgdmFyIGxlZ2Vu
ZCA9ICcnCi0gIGlmIChjb25maWcucHJpbnRTaXplKQotICAgIGxlZ2VuZCA9ICdNZXNzYWdlIHNp
emUgaW4gS2lCLCBUaW1lL21lc3NhZ2UgaW4gbXMsICc7Ci0gIGxlZ2VuZCArPSAnU3BlZWQgaW4g
a0Ivcyc7Ci0gIHJldHVybiBsZWdlbmQ7Ci19Ci0KLWZ1bmN0aW9uIGFkZFRhc2tzKGNvbmZpZywg
c3RlcEZ1bmMpIHsKLSAgZm9yICh2YXIgaSA9IDA7Ci0gICAgICBpIDwgY29uZmlnLm51bVdhcm1V
cEl0ZXJhdGlvbnMgKyBjb25maWcubnVtSXRlcmF0aW9uczsgKytpKSB7Ci0gICAgdmFyIG11bHRp
cGxpZXJJbmRleCA9IDA7Ci0gICAgZm9yICh2YXIgc2l6ZSA9IGNvbmZpZy5zdGFydFNpemU7Ci0g
ICAgICAgICBzaXplIDw9IGNvbmZpZy5zdG9wVGhyZXNob2xkOwotICAgICAgICAgKyttdWx0aXBs
aWVySW5kZXgpIHsKLSAgICAgIHZhciB0YXNrID0gc3RlcEZ1bmMuYmluZCgKLSAgICAgICAgICBu
dWxsLAotICAgICAgICAgIHNpemUsCi0gICAgICAgICAgY29uZmlnLAotICAgICAgICAgIGkgPCBj
b25maWcubnVtV2FybVVwSXRlcmF0aW9ucyk7Ci0gICAgICB0YXNrcy5wdXNoKHRhc2spOwotICAg
ICAgdmFyIG11bHRpcGxpZXIgPSBjb25maWcubXVsdGlwbGllcnNbCi0gICAgICAgIG11bHRpcGxp
ZXJJbmRleCAlIGNvbmZpZy5tdWx0aXBsaWVycy5sZW5ndGhdOwotICAgICAgaWYgKG11bHRpcGxp
ZXIgPD0gMSkgewotICAgICAgICBjb25maWcuYWRkVG9Mb2coJ0ludmFsaWQgbXVsdGlwbGllciAn
ICsgbXVsdGlwbGllcik7Ci0gICAgICAgIGNvbmZpZy5ub3RpZnlBYm9ydCgpOwotICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgbXVsdGlwbGVyJyk7Ci0gICAgICB9Ci0gICAgICBzaXpl
ID0gTWF0aC5jZWlsKHNpemUgKiBtdWx0aXBsaWVyKTsKLSAgICB9Ci0gIH0KLX0KLQotZnVuY3Rp
b24gYWRkUmVzdWx0UmVwb3J0aW5nVGFzayhjb25maWcsIHRpdGxlKSB7Ci0gIHRhc2tzLnB1c2go
ZnVuY3Rpb24oKXsKLSAgICAgIHRpbWVySUQgPSBudWxsOwotICAgICAgY29uZmlnLmFkZFRvU3Vt
bWFyeSh0aXRsZSk7Ci0gICAgICByZXBvcnRBdmVyYWdlRGF0YShjb25maWcpOwotICAgICAgY2xl
YXJBdmVyYWdlRGF0YSgpOwotICAgICAgcnVuTmV4dFRhc2soY29uZmlnKTsKLSAgfSk7Ci19Ci0K
LWZ1bmN0aW9uIHNlbmRCZW5jaG1hcmsoY29uZmlnKSB7Ci0gIGNvbmZpZy5hZGRUb0xvZygnU2Vu
ZCBiZW5jaG1hcmsnKTsKLSAgY29uZmlnLmFkZFRvTG9nKGJ1aWxkTGVnZW5kU3RyaW5nKGNvbmZp
ZykpOwotCi0gIHRhc2tzID0gW107Ci0gIGNsZWFyQXZlcmFnZURhdGEoKTsKLSAgYWRkVGFza3Mo
Y29uZmlnLCBzZW5kQmVuY2htYXJrU3RlcCk7Ci0gIGFkZFJlc3VsdFJlcG9ydGluZ1Rhc2soY29u
ZmlnLCAnU2VuZCBCZW5jaG1hcmsgJyArIGdldENvbmZpZ1N0cmluZyhjb25maWcpKTsKLSAgc3Rh
cnRCZW5jaG1hcmsoY29uZmlnKTsKLX0KLQotZnVuY3Rpb24gcmVjZWl2ZUJlbmNobWFyayhjb25m
aWcpIHsKLSAgY29uZmlnLmFkZFRvTG9nKCdSZWNlaXZlIGJlbmNobWFyaycpOwotICBjb25maWcu
YWRkVG9Mb2coYnVpbGRMZWdlbmRTdHJpbmcoY29uZmlnKSk7Ci0KLSAgdGFza3MgPSBbXTsKLSAg
Y2xlYXJBdmVyYWdlRGF0YSgpOwotICBhZGRUYXNrcyhjb25maWcsIHJlY2VpdmVCZW5jaG1hcmtT
dGVwKTsKLSAgYWRkUmVzdWx0UmVwb3J0aW5nVGFzayhjb25maWcsCi0gICAgICAnUmVjZWl2ZSBC
ZW5jaG1hcmsgJyArIGdldENvbmZpZ1N0cmluZyhjb25maWcpKTsKLSAgc3RhcnRCZW5jaG1hcmso
Y29uZmlnKTsKLX0KLQotZnVuY3Rpb24gc3RvcChjb25maWcpIHsKLSAgY2xlYXJUaW1lb3V0KHRp
bWVySUQpOwotICB0aW1lcklEID0gbnVsbDsKLSAgdGFza3MgPSBbXTsKLSAgY29uZmlnLmFkZFRv
TG9nKCdTdG9wcGVkJyk7Ci0gIGNsZWFudXAoKTsKLX0KLQotdmFyIHdvcmtlcjsKLQotZnVuY3Rp
b24gaW5pdFdvcmtlcihjb25uZWN0aW9uVHlwZSwgb3JpZ2luKSB7Ci0gIHZhciBzY3JpcHRQYXRo
ID0KLSAgICBjb25uZWN0aW9uVHlwZSA9PT0gJ1dlYlNvY2tldCcgPyAnL2JlbmNobWFyay5qcycg
OgotICAgIGNvbm5lY3Rpb25UeXBlID09PSAnWEhSJyA/ICcveGhyX2JlbmNobWFyay5qcycgOgot
ICAgICcvZmV0Y2hfYmVuY2htYXJrLmpzJzsgLy8gY29ubmVjdGlvblR5cGUgPT09ICdmZXRjaCcK
LSAgd29ya2VyID0gbmV3IFdvcmtlcihvcmlnaW4gKyBzY3JpcHRQYXRoKTsKLX0KLQotZnVuY3Rp
b24gZG9BY3Rpb24oY29uZmlnLCBpc1dpbmRvd1RvV29ya2VyLCBhY3Rpb24pIHsKLSAgaWYgKGlz
V2luZG93VG9Xb3JrZXIpIHsKLSAgICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24oYWRkVG9M
b2csIGFkZFRvU3VtbWFyeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVhc3Vy
ZVZhbHVlLCBub3RpZnlBYm9ydCwgbWVzc2FnZSkgewotICAgICAgaWYgKG1lc3NhZ2UuZGF0YS50
eXBlID09PSAnYWRkVG9Mb2cnKQotICAgICAgICBhZGRUb0xvZyhtZXNzYWdlLmRhdGEuZGF0YSk7
Ci0gICAgICBlbHNlIGlmIChtZXNzYWdlLmRhdGEudHlwZSA9PT0gJ2FkZFRvU3VtbWFyeScpCi0g
ICAgICAgIGFkZFRvU3VtbWFyeShtZXNzYWdlLmRhdGEuZGF0YSk7Ci0gICAgICBlbHNlIGlmICht
ZXNzYWdlLmRhdGEudHlwZSA9PT0gJ21lYXN1cmVWYWx1ZScpCi0gICAgICAgIG1lYXN1cmVWYWx1
ZShtZXNzYWdlLmRhdGEuZGF0YSk7Ci0gICAgICBlbHNlIGlmIChtZXNzYWdlLmRhdGEudHlwZSA9
PT0gJ25vdGlmeUFib3J0JykKLSAgICAgICAgbm90aWZ5QWJvcnQoKTsKLSAgICB9LmJpbmQodW5k
ZWZpbmVkLCBjb25maWcuYWRkVG9Mb2csIGNvbmZpZy5hZGRUb1N1bW1hcnksCi0gICAgICAgICAg
IGNvbmZpZy5tZWFzdXJlVmFsdWUsIGNvbmZpZy5ub3RpZnlBYm9ydCk7Ci0gICAgY29uZmlnLmFk
ZFRvTG9nID0gdW5kZWZpbmVkOwotICAgIGNvbmZpZy5hZGRUb1N1bW1hcnkgPSB1bmRlZmluZWQ7
Ci0gICAgY29uZmlnLm1lYXN1cmVWYWx1ZSA9IHVuZGVmaW5lZDsKLSAgICBjb25maWcubm90aWZ5
QWJvcnQgPSB1bmRlZmluZWQ7Ci0gICAgd29ya2VyLnBvc3RNZXNzYWdlKHt0eXBlOiBhY3Rpb24s
IGNvbmZpZzogY29uZmlnfSk7Ci0gIH0gZWxzZSB7Ci0gICAgaWYgKGFjdGlvbiA9PT0gJ3NlbmRC
ZW5jaG1hcmsnKQotICAgICAgc2VuZEJlbmNobWFyayhjb25maWcpOwotICAgIGVsc2UgaWYgKGFj
dGlvbiA9PT0gJ3JlY2VpdmVCZW5jaG1hcmsnKQotICAgICAgcmVjZWl2ZUJlbmNobWFyayhjb25m
aWcpOwotICAgIGVsc2UgaWYgKGFjdGlvbiA9PT0gJ2JhdGNoQmVuY2htYXJrJykKLSAgICAgIGJh
dGNoQmVuY2htYXJrKGNvbmZpZyk7Ci0gICAgZWxzZSBpZiAoYWN0aW9uID09PSAnc3RvcCcpCi0g
ICAgICBzdG9wKGNvbmZpZyk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS91dGls
X21haW4uanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvdXRpbF9tYWluLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA0NzFlZDYzZmI1ZDc0OWQwZWQyMTgxYjVhYWJjY2UyZTkzNjViODdlLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS91
dGlsX21haW4uanMKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi0vLyBDb3B5cmlnaHQg
MjAxNCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlCi0vLyBsaWNlbnNlIHRoYXQg
Y2FuIGJlIGZvdW5kIGluIHRoZSBDT1BZSU5HIGZpbGUgb3IgYXQKLS8vIGh0dHBzOi8vZGV2ZWxv
cGVycy5nb29nbGUuY29tL29wZW4tc291cmNlL2xpY2Vuc2VzL2JzZAotCi0vLyBVdGlsaXRpZXMg
Zm9yIGV4YW1wbGUgYXBwbGljYXRpb25zIChmb3IgdGhlIG1haW4gdGhyZWFkIG9ubHkpLgotCi12
YXIgbG9nQm94ID0gbnVsbDsKLXZhciBxdWV1ZWRMb2cgPSAnJzsKLQotdmFyIHN1bW1hcnlCb3gg
PSBudWxsOwotCi1mdW5jdGlvbiBxdWV1ZUxvZyhsb2cpIHsKLSAgcXVldWVkTG9nICs9IGxvZyAr
ICdcbic7Ci19Ci0KLWZ1bmN0aW9uIGFkZFRvTG9nKGxvZykgewotICBsb2dCb3gudmFsdWUgKz0g
cXVldWVkTG9nOwotICBxdWV1ZWRMb2cgPSAnJzsKLSAgbG9nQm94LnZhbHVlICs9IGxvZyArICdc
bic7Ci0gIGxvZ0JveC5zY3JvbGxUb3AgPSAxMDAwMDAwOwotfQotCi1mdW5jdGlvbiBhZGRUb1N1
bW1hcnkobG9nKSB7Ci0gIHN1bW1hcnlCb3gudmFsdWUgKz0gbG9nICsgJ1xuJzsKLSAgc3VtbWFy
eUJveC5zY3JvbGxUb3AgPSAxMDAwMDAwOwotfQotCi0vLyB2YWx1ZTogZXhlY3V0aW9uIHRpbWUg
aW4gbWlsbGlzZWNvbmRzLgotLy8gY29uZmlnLm1lYXN1cmVWYWx1ZSBpcyBpbnRlbmRlZCB0byBi
ZSB1c2VkIGluIFBlcmZvcm1hbmNlIFRlc3RzLgotLy8gRG8gbm90aGluZyBoZXJlIGluIG5vbi1Q
ZXJmb3JtYW5jZVRlc3QuCi1mdW5jdGlvbiBtZWFzdXJlVmFsdWUodmFsdWUpIHsKLX0KLQotLy8g
Y29uZmlnLm5vdGlmeUFib3J0IGlzIGNhbGxlZCB3aGVuIHRoZSBiZW5jaG1hcmsgZmFpbGVkIGFu
ZCBhYm9ydGVkLCBhbmQKLS8vIGludGVuZGVkIHRvIGJlIHVzZWQgaW4gUGVyZm9ybWFuY2UgVGVz
dHMuCi0vLyBEbyBub3RoaW5nIGhlcmUgaW4gbm9uLVBlcmZvcm1hbmNlVGVzdC4KLWZ1bmN0aW9u
IG5vdGlmeUFib3J0KCkgewotfQotCi1mdW5jdGlvbiBnZXRJbnRGcm9tSW5wdXQoaWQpIHsKLSAg
cmV0dXJuIHBhcnNlSW50KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKS52YWx1ZSk7Ci19Ci0K
LWZ1bmN0aW9uIGdldFN0cmluZ0Zyb21SYWRpb0JveChuYW1lKSB7Ci0gIHZhciBsaXN0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JlbmNobWFya19mb3JtJylbbmFtZV07Ci0gIGZvciAodmFy
IGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7ICsraSkKLSAgICBpZiAobGlzdC5pdGVtKGkpLmNoZWNr
ZWQpCi0gICAgICByZXR1cm4gbGlzdC5pdGVtKGkpLnZhbHVlOwotICByZXR1cm4gdW5kZWZpbmVk
OwotfQotZnVuY3Rpb24gZ2V0Qm9vbEZyb21DaGVja0JveChpZCkgewotICByZXR1cm4gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoaWQpLmNoZWNrZWQ7Ci19Ci0KLWZ1bmN0aW9uIGdldEludEFycmF5
RnJvbUlucHV0KGlkKSB7Ci0gIHZhciBzdHJBcnJheSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KGlkKS52YWx1ZS5zcGxpdCgnLCcpOwotICByZXR1cm4gc3RyQXJyYXkubWFwKGZ1bmN0aW9uKHN0
cikgeyByZXR1cm4gcGFyc2VJbnQoc3RyLCAxMCk7IH0pOwotfQotCi1mdW5jdGlvbiBnZXRGbG9h
dEFycmF5RnJvbUlucHV0KGlkKSB7Ci0gIHZhciBzdHJBcnJheSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKGlkKS52YWx1ZS5zcGxpdCgnLCcpOwotICByZXR1cm4gc3RyQXJyYXkubWFwKHBhcnNl
RmxvYXQpOwotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL3V0aWxfd29ya2VyLmpzIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tl
dC9leGFtcGxlL3V0aWxfd29ya2VyLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5
OGRjZjQ0MTcyOTlmOWM5ZDYxZGVlZmNiMWE1OTVhZWFiMDVkNTZjLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS91dGlsX3dvcmtlci5q
cworKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDE0IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUKLS8vIGxpY2Vuc2UgdGhhdCBjYW4gYmUgZm91
bmQgaW4gdGhlIENPUFlJTkcgZmlsZSBvciBhdAotLy8gaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2ds
ZS5jb20vb3Blbi1zb3VyY2UvbGljZW5zZXMvYnNkCi0KLS8vIFV0aWxpdGllcyBmb3IgZXhhbXBs
ZSBhcHBsaWNhdGlvbnMgKGZvciB0aGUgd29ya2VyIHRocmVhZHMgb25seSkuCi0KLW9ubWVzc2Fn
ZSA9IGZ1bmN0aW9uIChtZXNzYWdlKSB7Ci0gIHZhciBjb25maWcgPSBtZXNzYWdlLmRhdGEuY29u
ZmlnOwotICBjb25maWcuYWRkVG9Mb2cgPSBmdW5jdGlvbih0ZXh0KSB7Ci0gICAgICBwb3N0TWVz
c2FnZSh7dHlwZTogJ2FkZFRvTG9nJywgZGF0YTogdGV4dH0pOyB9OwotICBjb25maWcuYWRkVG9T
dW1tYXJ5ID0gZnVuY3Rpb24odGV4dCkgewotICAgICAgcG9zdE1lc3NhZ2Uoe3R5cGU6ICdhZGRU
b1N1bW1hcnknLCBkYXRhOiB0ZXh0fSk7IH07Ci0gIGNvbmZpZy5tZWFzdXJlVmFsdWUgPSBmdW5j
dGlvbih2YWx1ZSkgewotICAgICAgcG9zdE1lc3NhZ2Uoe3R5cGU6ICdtZWFzdXJlVmFsdWUnLCBk
YXRhOiB2YWx1ZX0pOyB9OwotICBjb25maWcubm90aWZ5QWJvcnQgPSBmdW5jdGlvbigpIHsgcG9z
dE1lc3NhZ2Uoe3R5cGU6ICdub3RpZnlBYm9ydCd9KTsgfTsKLQotICBkb0FjdGlvbihjb25maWcs
IGZhbHNlLCBtZXNzYWdlLmRhdGEudHlwZSk7Ci19OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxl
L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwZjkzYjhiNjk1NWIwNjI1YTYxMTQ3ZDNjMzNiMjdlOWU5YjU1
ZDdlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
ZXhhbXBsZS93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLVRo
ZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBv
c2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1J
bnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6
Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xz
L1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9U
IG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRp
ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1
aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZp
bGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvZXhhbXBsZS9hYm9ydF9oYW5kc2hha2Vfd3NoLnB5Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxl
L2Fib3J0X3dzaC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS9hcnJheWJ1ZmZlcl9iZW5jaG1hcmsuaHRtbAot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvZXhhbXBsZS9iZW5jaF93c2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvYmVuY2htYXJrLmh0bWwK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L2V4YW1wbGUvYmVuY2htYXJrLmpzCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2JlbmNobWFya19oZWxw
ZXJfd3NoLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9weXdlYnNvY2tldC9leGFtcGxlL2Nsb3NlX3dzaC5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS9jb25z
b2xlLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvY29va2llX3dzaC5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS9lY2hv
X2NsaWVudC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS9lY2hvX25vZXh0X3dzaC5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBs
ZS9lY2hvX3dzaC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS9ldmVudHNvdXJjZS5jZ2kKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1w
bGUvZXZlbnRzb3VyY2UuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS9mZXRjaF9iZW5jaG1hcmsuaHRtbAot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvZXhhbXBsZS9mZXRjaF9iZW5jaG1hcmsuanMKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvZmV0Y2hfcGVy
Zm9ybWFuY2VfdGVzdF9pZnJhbWUuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS9oYW5kbGVyX21hcC50eHQK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L2V4YW1wbGUvaHN0c193c2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvaW50ZXJuYWxfZXJyb3Jf
d3NoLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC9leGFtcGxlL29yaWdpbl9jaGVja193c2gucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUv
cGVyZm9ybWFuY2VfdGVzdF9pZnJhbWUuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS9wZXJmb3JtYW5jZV90
ZXN0X2lmcmFtZS5qcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS9weXdlYnNvY2tldC5jb25mCi0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFt
cGxlL3NwZWNpYWxfaGVhZGVycy5jZ2kKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvdXRpbC5qcwotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhh
bXBsZS91dGlsX21haW4uanMKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvdXRpbF93b3JrZXIuanMKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4
YW1wbGUveGhyX2JlbmNobWFyay5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL3hocl9iZW5jaG1hcmsuanMK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L2V4YW1wbGUveGhyX2V2ZW50X2xvZ2dlci5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL3hocl9w
ZXJmb3JtYW5jZV90ZXN0X2lmcmFtZS5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUveGhy
X2JlbmNobWFyay5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL3hocl9iZW5jaG1hcmsuaHRtbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODAwZDIwYzljY2I0YWJlY2YyMzljNzViMTg1NzdiMGQx
ZmYxMWM5Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29j
a2V0L2V4YW1wbGUveGhyX2JlbmNobWFyay5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjEyICsw
LDAgQEAKLTwhLS0KLUNvcHlyaWdodCAyMDEzLCBHb29nbGUgSW5jLgotQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLQotUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci1tb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi1tZXQ6Ci0KLSAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci1u
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi1jb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi1pbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi1kaXN0cmlidXRpb24uCi0gICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi1jb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLQotVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLUxJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LU9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi1EQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLVRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLShJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS0tPgotCi08aHRtbD4KLTxoZWFkPgot
PHRpdGxlPlhNTEh0dHBSZXF1ZXN0IGJlbmNobWFyazwvdGl0bGU+Ci08c2NyaXB0IHNyYz0idXRp
bF9tYWluLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJ1dGlsLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSJ4aHJfYmVuY2htYXJrLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci12YXIgYWRk
cmVzc0JveCA9IG51bGw7Ci0KLWZ1bmN0aW9uIGdldENvbmZpZygpIHsKLSAgcmV0dXJuIHsKLSAg
ICBwcmVmaXhVcmw6IGFkZHJlc3NCb3gudmFsdWUsCi0gICAgcHJpbnRTaXplOiBnZXRCb29sRnJv
bUNoZWNrQm94KCdwcmludHNpemUnKSwKLSAgICBudW1YSFJzOiBnZXRJbnRGcm9tSW5wdXQoJ251
bVhIUnMnKSwKLSAgICBhc3luYzogZ2V0Qm9vbEZyb21DaGVja0JveCgnYXN5bmMnKSwKLSAgICAv
LyBJbml0aWFsIHNpemUgb2YgbWVzc2FnZXMuCi0gICAgbnVtSXRlcmF0aW9uczogZ2V0SW50RnJv
bUlucHV0KCdudW1pdGVyYXRpb25zJyksCi0gICAgbnVtV2FybVVwSXRlcmF0aW9uczogZ2V0SW50
RnJvbUlucHV0KCdudW13YXJtdXBpdGVyYXRpb25zJyksCi0gICAgc3RhcnRTaXplOiBnZXRJbnRG
cm9tSW5wdXQoJ3N0YXJ0c2l6ZScpLAotICAgIC8vIFN0b3BzIGJlbmNobWFyayB3aGVuIHRoZSBz
aXplIG9mIG1lc3NhZ2UgZXhjZWVkcyB0aGlzIHRocmVzaG9sZC4KLSAgICBzdG9wVGhyZXNob2xk
OiBnZXRJbnRGcm9tSW5wdXQoJ3N0b3B0aHJlc2hvbGQnKSwKLSAgICBtdWx0aXBsaWVyczogZ2V0
RmxvYXRBcnJheUZyb21JbnB1dCgnbXVsdGlwbGllcnMnKSwKLSAgICB2ZXJpZnlEYXRhOiBnZXRC
b29sRnJvbUNoZWNrQm94KCd2ZXJpZnlkYXRhJyksCi0gICAgbWV0aG9kQW5kQ2FjaGU6IGdldFN0
cmluZ0Zyb21SYWRpb0JveCgnbWV0aG9kYW5kY2FjaGUnKSwKLSAgICBhZGRUb0xvZzogYWRkVG9M
b2csCi0gICAgYWRkVG9TdW1tYXJ5OiBhZGRUb1N1bW1hcnksCi0gICAgbWVhc3VyZVZhbHVlOiBt
ZWFzdXJlVmFsdWUsCi0gICAgbm90aWZ5QWJvcnQ6IG5vdGlmeUFib3J0Ci0gIH07Ci19Ci0KLWZ1
bmN0aW9uIG9uU2VuZEJlbmNobWFyaygpIHsKLSAgdmFyIGNvbmZpZyA9IGdldENvbmZpZygpOwot
ICBjb25maWcuZGF0YVR5cGUgPSBnZXRTdHJpbmdGcm9tUmFkaW9Cb3goJ2RhdGF0eXBlcmFkaW8n
KTsKLSAgZG9BY3Rpb24oY29uZmlnLCBnZXRCb29sRnJvbUNoZWNrQm94KCd3b3JrZXInKSwgJ3Nl
bmRCZW5jaG1hcmsnKTsKLX0KLQotZnVuY3Rpb24gb25SZWNlaXZlQmVuY2htYXJrKCkgewotICB2
YXIgY29uZmlnID0gZ2V0Q29uZmlnKCk7Ci0gIGNvbmZpZy5kYXRhVHlwZSA9IGdldFN0cmluZ0Zy
b21SYWRpb0JveCgnZGF0YXR5cGVyYWRpbycpOwotICBkb0FjdGlvbihjb25maWcsIGdldEJvb2xG
cm9tQ2hlY2tCb3goJ3dvcmtlcicpLCAncmVjZWl2ZUJlbmNobWFyaycpOwotfQotCi1mdW5jdGlv
biBvbkJhdGNoQmVuY2htYXJrKCkgewotICB2YXIgY29uZmlnID0gZ2V0Q29uZmlnKCk7Ci0gIGRv
QWN0aW9uKGNvbmZpZywgZ2V0Qm9vbEZyb21DaGVja0JveCgnd29ya2VyJyksICdiYXRjaEJlbmNo
bWFyaycpOwotfQotCi1mdW5jdGlvbiBvblN0b3AoKSB7Ci0gIHZhciBjb25maWcgPSBnZXRDb25m
aWcoKTsKLSAgZG9BY3Rpb24oY29uZmlnLCBnZXRCb29sRnJvbUNoZWNrQm94KCd3b3JrZXInKSwg
J3N0b3AnKTsKLX0KLQotZnVuY3Rpb24gaW5pdCgpIHsKLSAgYWRkcmVzc0JveCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdhZGRyZXNzJyk7Ci0gIGxvZ0JveCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdsb2cnKTsKLQotICBzdW1tYXJ5Qm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3N1bW1hcnknKTsKLQotICAvLyBTcGVjaWFsIGFkZHJlc3Mgb2YgcHl3ZWJzb2NrZXQgZm9yIFhI
UiBiZW5jaG1hcmsuCi0gIGFkZHJlc3NCb3gudmFsdWUgPSAnLzA3M2JlMDAxZTEwOTUwNjkyY2Ni
ZjNhMmFkMjFjMjQ1JzsKLQotICBhZGRUb0xvZyh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC50
b0xvd2VyQ2FzZSgpKTsKLSAgYWRkVG9TdW1tYXJ5KHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50
LnRvTG93ZXJDYXNlKCkpOwotCi0gIGluaXRXb3JrZXIoJ1hIUicsICcnKTsKLX0KLTwvc2NyaXB0
PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJpbml0KCkiPgotCi08Zm9ybSBpZD0iYmVuY2htYXJr
X2Zvcm0iPgotICB1cmwgcHJlZml4IDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iYWRkcmVzcyIgc2l6
ZT0iNDAiPgotICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0ic2VuZCIgb25jbGljaz0ib25T
ZW5kQmVuY2htYXJrKCkiPgotICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0icmVjZWl2ZSIg
b25jbGljaz0ib25SZWNlaXZlQmVuY2htYXJrKCkiPgotICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2
YWx1ZT0iYmF0Y2giIG9uY2xpY2s9Im9uQmF0Y2hCZW5jaG1hcmsoKSI+Ci0gIDxpbnB1dCB0eXBl
PSJidXR0b24iIHZhbHVlPSJzdG9wIiBvbmNsaWNrPSJvblN0b3AoKSI+Ci0KLSAgPGJyLz4KLQot
ICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJwcmludHNpemUiIGNoZWNrZWQ+Ci0gIDxsYWJl
bCBmb3I9InByaW50c2l6ZSI+UHJpbnQgc2l6ZSBhbmQgdGltZSBwZXIgbWVzc2FnZTwvbGFiZWw+
Ci0gIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9InZlcmlmeWRhdGEiIGNoZWNrZWQ+Ci0gIDxs
YWJlbCBmb3I9InZlcmlmeWRhdGEiPlZlcmlmeSBkYXRhPC9sYWJlbD4KLSAgPGlucHV0IHR5cGU9
ImNoZWNrYm94IiBpZD0id29ya2VyIj4KLSAgPGxhYmVsIGZvcj0id29ya2VyIj5SdW4gb24gd29y
a2VyPC9sYWJlbD4KLSAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iYXN5bmMiIGNoZWNrZWQ+
Ci0gIDxsYWJlbCBmb3I9ImFzeW5jIj5Bc3luYzwvbGFiZWw+PGJyPgotICAoUmVjZWl2ZSAmYW1w
OyZhbXA7IE5vbi1Xb3JrZXIgJmFtcDsmYW1wOyBTeW5jIGlzIG5vdCBzdXBwb3J0ZWQgYnkgc3Bl
YykKLQotICA8YnIvPgotCi0gIFBhcmFtZXRlcnM6Ci0KLSAgPGJyLz4KLQotICA8dGFibGU+Ci0g
ICAgPHRyPgotICAgICAgPHRkPk51bSBYSFJzPC90ZD4KLSAgICAgIDx0ZD48aW5wdXQgdHlwZT0i
dGV4dCIgaWQ9Im51bVhIUnMiIHZhbHVlPSIxIj48L3RkPgotICAgIDwvdHI+Ci0gICAgPHRyPgot
ICAgICAgPHRkPk51bWJlciBvZiBpdGVyYXRpb25zPC90ZD4KLSAgICAgIDx0ZD48aW5wdXQgdHlw
ZT0idGV4dCIgaWQ9Im51bWl0ZXJhdGlvbnMiIHZhbHVlPSIxIj48L3RkPgotICAgIDwvdHI+Ci0g
ICAgPHRyPgotICAgICAgPHRkPk51bWJlciBvZiB3YXJtLXVwIGl0ZXJhdGlvbnM8L3RkPgotICAg
ICAgPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ibnVtd2FybXVwaXRlcmF0aW9ucyIgdmFsdWU9
IjAiPjwvdGQ+Ci0gICAgPC90cj4KLSAgICA8dHI+Ci0gICAgICA8dGQ+U3RhcnQgc2l6ZTwvdGQ+
Ci0gICAgICA8dGQ+PGlucHV0IHR5cGU9InRleHQiIGlkPSJzdGFydHNpemUiIHZhbHVlPSIxMDI0
MCI+PC90ZD4KLSAgICA8L3RyPgotICAgIDx0cj4KLSAgICAgIDx0ZD5TdG9wIHRocmVzaG9sZDwv
dGQ+Ci0gICAgICA8dGQ+PGlucHV0IHR5cGU9InRleHQiIGlkPSJzdG9wdGhyZXNob2xkIiB2YWx1
ZT0iMTAyNDAwMDAwIj48L3RkPgotICAgIDwvdHI+Ci0gICAgPHRyPgotICAgICAgPHRkPk11bHRp
cGxpZXJzPC90ZD4KLSAgICAgIDx0ZD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9Im11bHRpcGxpZXJz
IiB2YWx1ZT0iNSwgMiI+PC90ZD4KLSAgICA8L3RyPgotICA8L3RhYmxlPgotCi0gIFNldCBkYXRh
IHR5cGUKLSAgPGlucHV0IHR5cGU9InJhZGlvIgotICAgICAgICAgbmFtZT0iZGF0YXR5cGVyYWRp
byIKLSAgICAgICAgIGlkPSJkYXRhdHlwZXJhZGlvdGV4dCIKLSAgICAgICAgIHZhbHVlPSJ0ZXh0
IgotICAgICAgICAgY2hlY2tlZD48bGFiZWwgZm9yPSJkYXRhdHlwZXJhZGlvdGV4dCI+dGV4dDwv
bGFiZWw+Ci0gIDxpbnB1dCB0eXBlPSJyYWRpbyIKLSAgICAgICAgIG5hbWU9ImRhdGF0eXBlcmFk
aW8iCi0gICAgICAgICBpZD0iZGF0YXR5cGVyYWRpb2Jsb2IiCi0gICAgICAgICB2YWx1ZT0iYmxv
YiIKLSAgICAgICAgID48bGFiZWwgZm9yPSJkYXRhdHlwZXJhZGlvYmxvYiI+YmxvYjwvbGFiZWw+
Ci0gIDxpbnB1dCB0eXBlPSJyYWRpbyIKLSAgICAgICAgIG5hbWU9ImRhdGF0eXBlcmFkaW8iCi0g
ICAgICAgICBpZD0iZGF0YXR5cGVyYWRpb2FycmF5YnVmZmVyIgotICAgICAgICAgdmFsdWU9ImFy
cmF5YnVmZmVyIgotICAgICAgICAgPjxsYWJlbCBmb3I9ImRhdGF0eXBlcmFkaW9hcnJheWJ1ZmZl
ciI+YXJyYXlidWZmZXI8L2xhYmVsPgotCi0gIDxicj4KLSAgU2V0IEhUVFAgbWV0aG9kIGFuZCBj
YWNoZSBjb250cm9sCi0gIDxpbnB1dCB0eXBlPSJyYWRpbyIKLSAgICAgICAgIG5hbWU9Im1ldGhv
ZGFuZGNhY2hlIgotICAgICAgICAgaWQ9Im1ldGhvZGFuZGNhY2hlUE9TVCIKLSAgICAgICAgIHZh
bHVlPSJQT1NUIgotICAgICAgICAgY2hlY2tlZD48bGFiZWwgZm9yPSJtZXRob2RhbmRjYWNoZVBP
U1QiPlBPU1QgKE5vIENhY2hlKTwvbGFiZWw+Ci0gIDxpbnB1dCB0eXBlPSJyYWRpbyIKLSAgICAg
ICAgIG5hbWU9Im1ldGhvZGFuZGNhY2hlIgotICAgICAgICAgaWQ9Im1ldGhvZGFuZGNhY2hlR0VU
Tk9DQUNIRSIKLSAgICAgICAgIHZhbHVlPSJHRVQtTk9DQUNIRSIKLSAgICAgICAgID48bGFiZWwg
Zm9yPSJtZXRob2RhbmRjYWNoZUdFVE5PQ0FDSEUiPkdFVCAoTm8gQ2FjaGUpPC9sYWJlbD4KLSAg
PGlucHV0IHR5cGU9InJhZGlvIgotICAgICAgICAgbmFtZT0ibWV0aG9kYW5kY2FjaGUiCi0gICAg
ICAgICBpZD0ibWV0aG9kYW5kY2FjaGVHRVRDQUNIRSIKLSAgICAgICAgIHZhbHVlPSJHRVQtQ0FD
SEUiCi0gICAgICAgICA+PGxhYmVsIGZvcj0ibWV0aG9kYW5kY2FjaGVHRVRDQUNIRSI+R0VUIChD
YWNoZSk8L2xhYmVsPgotICA8YnI+Ci0gIDxzcGFuIHN0eWxlPSJmb250LXNpemU6IDgwJSI+KENh
Y2hlIGNvbnRyb2w6IHJlY2VpdmUgb25seS4gQ2FjaGUgaXMgdmFsaWQgZm9yIDEwIHNlY29uZHMu
IFRoaXMgY29uZmlnIGNvbnRyb2xzIENhY2hlLWNvbnRyb2wgSFRUUCByZXNwb25zZSBoZWFkZXIu
IEJyb3dzZXJzIG1pZ2h0IG5vdCBjYWNoZSBkYXRhIGUuZy4gd2hlbiBpdCBpcyBsYXJnZSk8L3Nw
YW4+Ci08L2Zvcm0+Ci0KLTxkaXYgaWQ9ImxvZ19kaXYiPgotICA8dGV4dGFyZWEKLSAgICAgIGlk
PSJsb2ciIHJvd3M9IjIwIiBzdHlsZT0id2lkdGg6IDEwMCUiIHJlYWRvbmx5PjwvdGV4dGFyZWE+
Ci08L2Rpdj4KLTxkaXYgaWQ9InN1bW1hcnlfZGl2Ij4KLSAgU3VtbWFyeQotICA8dGV4dGFyZWEK
LSAgICAgIGlkPSJzdW1tYXJ5IiByb3dzPSIyMCIgc3R5bGU9IndpZHRoOiAxMDAlIiByZWFkb25s
eT48L3RleHRhcmVhPgotPC9kaXY+Ci0KLTxkaXYgaWQ9Im5vdGVfZGl2Ij4KLSAgTm90ZToKLSAg
PHVsPgotICAgIDxsaT5FZmZlY3Qgb2YgUlRUIGFuZCB0aW1lIHNwZW50IGZvciBBcnJheUJ1ZmZl
ciBjcmVhdGlvbiBpbiByZWNlaXZlIGJlbmNobWFya3MgYXJlIG5vdCBlbGltaW5hdGVkLjwvbGk+
Ci0gICAgPGxpPlRoZSBTdGRkZXYgY29sdW1uIHNob3dzIE5hTiB3aGVuIHRoZSBudW1iZXIgb2Yg
aXRlcmF0aW9ucyBpcyBzZXQgdG8gMS48L2xpPgotICA8L3VsPgotPC9kaXY+Ci0KLTwvYm9keT4K
LTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS94aHJfYmVuY2htYXJrLmpzIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tl
dC9leGFtcGxlL3hocl9iZW5jaG1hcmsuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDE0YTk3ZThmYjgzZTk0OGM4NWY5ZjAyMTAyMWRjNzQ3OTMwNWU2YzAuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL3hocl9iZW5jaG1h
cmsuanMKKysrIC9kZXYvbnVsbApAQCAtMSwyOTIgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMTQg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZQotLy8gbGljZW5zZSB0aGF0IGNhbiBi
ZSBmb3VuZCBpbiB0aGUgQ09QWUlORyBmaWxlIG9yIGF0Ci0vLyBodHRwczovL2RldmVsb3BlcnMu
Z29vZ2xlLmNvbS9vcGVuLXNvdXJjZS9saWNlbnNlcy9ic2QKLQotdmFyIGlzV29ya2VyID0gdHlw
ZW9mIGltcG9ydFNjcmlwdHMgIT09ICJ1bmRlZmluZWQiOwotCi1pZiAoaXNXb3JrZXIpIHsKLSAg
Ly8gUnVubmluZyBvbiBhIHdvcmtlcgotICBpbXBvcnRTY3JpcHRzKCd1dGlsLmpzJywgJ3V0aWxf
d29ya2VyLmpzJyk7Ci19Ci0KLS8vIE5hbWVzcGFjZSBmb3IgaG9sZGluZyBnbG9iYWxzLgotdmFy
IGJlbmNobWFyayA9IHt9OwotYmVuY2htYXJrLnN0YXJ0VGltZUluTXMgPSAwOwotCi12YXIgeGhy
cyA9IFtdOwotCi12YXIgdGltZXJJRCA9IG51bGw7Ci0KLWZ1bmN0aW9uIGRlc3Ryb3lBbGxYSFJz
KCkgewotICBmb3IgKHZhciBpID0gMDsgaSA8IHhocnMubGVuZ3RoOyArK2kpIHsKLSAgICB4aHJz
W2ldLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IG51bGw7Ci0gICAgLy8gQWJvcnQgWEhScyBpZiB0aGV5
IGFyZSBub3QgeWV0IERPTkUgc3RhdGUuCi0gICAgLy8gQ2FsbGluZyBhYm9ydCgpIGhlcmUgKGku
ZS4gaW4gb25yZWFkeXN0YXRlY2hhbmdlIGhhbmRsZXIpIAotICAgIC8vIGNhdXNlcyAiTmV0d29y
a0Vycm9yIiBtZXNzYWdlcyBpbiBEZXZUb29scyBpbiBzeW5jIG1vZGUsCi0gICAgLy8gZXZlbiBp
ZiBpdCBpcyBhZnRlciB0cmFuc2l0aW9uIHRvIERPTkUgc3RhdGUuCi0gICAgaWYgKHhocnNbaV0u
cmVhZHlTdGF0ZSAhPSBYTUxIdHRwUmVxdWVzdC5ET05FKQotICAgICAgeGhyc1tpXS5hYm9ydCgp
OwotICB9Ci0gIHhocnMgPSBbXTsKLSAgLy8gZ2MoKSBtaWdodCBiZSBuZWVkZWQgZm9yIENocm9t
ZS9CbG9iCi19Ci0KLWZ1bmN0aW9uIHNlbmRCZW5jaG1hcmtTdGVwKHNpemUsIGNvbmZpZywgaXNX
YXJtVXApIHsKLSAgdGltZXJJRCA9IG51bGw7Ci0KLSAgYmVuY2htYXJrLnN0YXJ0VGltZUluTXMg
PSBudWxsOwotICB2YXIgdG90YWxTaXplID0gMDsKLSAgdmFyIHRvdGFsUmVwbGllZCA9IDA7Ci0K
LSAgdmFyIG9uUmVhZHlTdGF0ZUNoYW5nZUhhbmRsZXIgPSBmdW5jdGlvbiAoKSB7Ci0gICAgaWYg
KHRoaXMucmVhZHlTdGF0ZSAhPSB0aGlzLkRPTkUpIHsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpZiAodGhpcy5zdGF0dXMgIT0gMjAwKSB7Ci0gICAgICBjb25maWcuYWRkVG9Mb2coJ0Zh
aWxlZCAoc3RhdHVzPScgKyB0aGlzLnN0YXR1cyArICcpJyk7Ci0gICAgICBkZXN0cm95QWxsWEhS
cygpOwotICAgICAgY29uZmlnLm5vdGlmeUFib3J0KCk7Ci0gICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKGNvbmZpZy52ZXJpZnlEYXRhICYmCi0gICAgICAgICF2ZXJpZnlBY2tub3dsZWRn
ZW1lbnQoY29uZmlnLCB0aGlzLnJlc3BvbnNlLCBzaXplKSkgewotICAgICAgZGVzdHJveUFsbFhI
UnMoKTsKLSAgICAgIGNvbmZpZy5ub3RpZnlBYm9ydCgpOwotICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIHRvdGFsUmVwbGllZCArPSBzaXplOwotCi0gICAgaWYgKHRvdGFsUmVwbGllZCA8IHRv
dGFsU2l6ZSkgewotICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChiZW5jaG1hcmsuc3Rh
cnRUaW1lSW5NcyA9PSBudWxsKSB7Ci0gICAgICBjb25maWcuYWRkVG9Mb2coJ3N0YXJ0VGltZUlu
TXMgbm90IHNldCcpOwotICAgICAgZGVzdHJveUFsbFhIUnMoKTsKLSAgICAgIGNvbmZpZy5ub3Rp
ZnlBYm9ydCgpOwotICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIENoZWNrIGFuZCB3YXJu
IGlmIHByb3h5IGlzIGVuYWJsZWQuCi0gICAgaWYgKHRoaXMuZ2V0UmVzcG9uc2VIZWFkZXIoJ1Zp
YScpICE9PSBudWxsKSB7Ci0gICAgICBjb25maWcuYWRkVG9Mb2coJ1dBUk5JTkc6IHByb3h5IHNl
ZW1zIGVuYWJsZWQuJyk7Ci0gICAgfQotCi0gICAgY2FsY3VsYXRlQW5kTG9nUmVzdWx0KGNvbmZp
Zywgc2l6ZSwgYmVuY2htYXJrLnN0YXJ0VGltZUluTXMsIHRvdGFsU2l6ZSwKLSAgICAgICAgaXNX
YXJtVXApOwotCi0gICAgZGVzdHJveUFsbFhIUnMoKTsKLQotICAgIHJ1bk5leHRUYXNrKGNvbmZp
Zyk7Ci0gIH07Ci0KLSAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb25maWcubnVtWEhSczsgKytpKSB7
Ci0gICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwotICAgIHhoci5vbnJlYWR5c3Rh
dGVjaGFuZ2UgPSBvblJlYWR5U3RhdGVDaGFuZ2VIYW5kbGVyOwotICAgIHhocnMucHVzaCh4aHIp
OwotICB9Ci0KLSAgdmFyIGRhdGFBcnJheSA9IFtdOwotCi0gIGZvciAodmFyIGkgPSAwOyBpIDwg
eGhycy5sZW5ndGg7ICsraSkgewotICAgIHZhciBkYXRhID0gbnVsbDsKLSAgICBpZiAoY29uZmln
LmRhdGFUeXBlID09ICdhcnJheWJ1ZmZlcicgfHwKLSAgICAgICAgY29uZmlnLmRhdGFUeXBlID09
ICdibG9iJykgewotICAgICAgZGF0YSA9IG5ldyBBcnJheUJ1ZmZlcihzaXplKTsKLQotICAgICAg
ZmlsbEFycmF5QnVmZmVyKGRhdGEsIDB4NjEpOwotCi0gICAgICBpZiAoY29uZmlnLmRhdGFUeXBl
ID09ICdibG9iJykgewotICAgICAgICBkYXRhID0gbmV3IEJsb2IoW2RhdGFdKTsKLSAgICAgIH0K
LSAgICB9IGVsc2UgewotICAgICAgZGF0YSA9IHJlcGVhdFN0cmluZygnYScsIHNpemUpOwotICAg
IH0KLQotICAgIGRhdGFBcnJheS5wdXNoKGRhdGEpOwotICB9Ci0KLQotICBiZW5jaG1hcmsuc3Rh
cnRUaW1lSW5NcyA9IGdldFRpbWVTdGFtcCgpOwotICB0b3RhbFNpemUgPSBzaXplICogeGhycy5s
ZW5ndGg7Ci0KLSAgZm9yICh2YXIgaSA9IDA7IGkgPCB4aHJzLmxlbmd0aDsgKytpKSB7Ci0gICAg
dmFyIGRhdGEgPSBkYXRhQXJyYXlbaV07Ci0gICAgdmFyIHhociA9IHhocnNbaV07Ci0gICAgeGhy
Lm9wZW4oJ1BPU1QnLCBjb25maWcucHJlZml4VXJsICsgJ19zZW5kJywgY29uZmlnLmFzeW5jKTsK
LSAgICB4aHIuc2VuZChkYXRhKTsKLSAgfQotfQotCi1mdW5jdGlvbiByZWNlaXZlQmVuY2htYXJr
U3RlcChzaXplLCBjb25maWcsIGlzV2FybVVwKSB7Ci0gIHRpbWVySUQgPSBudWxsOwotCi0gIGJl
bmNobWFyay5zdGFydFRpbWVJbk1zID0gbnVsbDsKLSAgdmFyIHRvdGFsU2l6ZSA9IDA7Ci0gIHZh
ciB0b3RhbFJlcGxpZWQgPSAwOwotCi0gIHZhciBjaGVja1Jlc3VsdEFuZENvbnRpbnVlID0gZnVu
Y3Rpb24gKGJ5dGVzUmVjZWl2ZWQsIHZlcmlmaWNhdGlvblJlc3VsdCkgewotICAgIGlmICghdmVy
aWZpY2F0aW9uUmVzdWx0KSB7Ci0gICAgICBjb25maWcuYWRkVG9Mb2coJ1Jlc3BvbnNlIHZlcmlm
aWNhdGlvbiBmYWlsZWQnKTsKLSAgICAgIGRlc3Ryb3lBbGxYSFJzKCk7Ci0gICAgICBjb25maWcu
bm90aWZ5QWJvcnQoKTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB0b3RhbFJlcGxpZWQg
Kz0gYnl0ZXNSZWNlaXZlZDsKLQotICAgIGlmICh0b3RhbFJlcGxpZWQgPCB0b3RhbFNpemUpIHsK
LSAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYmVuY2htYXJrLnN0YXJ0VGltZUluTXMg
PT0gbnVsbCkgewotICAgICAgY29uZmlnLmFkZFRvTG9nKCdzdGFydFRpbWVJbk1zIG5vdCBzZXQn
KTsKLSAgICAgIGRlc3Ryb3lBbGxYSFJzKCk7Ci0gICAgICBjb25maWcubm90aWZ5QWJvcnQoKTsK
LSAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjYWxjdWxhdGVBbmRMb2dSZXN1bHQoY29uZmln
LCBzaXplLCBiZW5jaG1hcmsuc3RhcnRUaW1lSW5NcywgdG90YWxTaXplLAotICAgICAgICBpc1dh
cm1VcCk7Ci0KLSAgICBkZXN0cm95QWxsWEhScygpOwotCi0gICAgcnVuTmV4dFRhc2soY29uZmln
KTsKLSAgfQotCi0gIHZhciBvblJlYWR5U3RhdGVDaGFuZ2VIYW5kbGVyID0gZnVuY3Rpb24gKCkg
ewotICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgIT0gdGhpcy5ET05FKSB7Ci0gICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKHRoaXMuc3RhdHVzICE9IDIwMCkgewotICAgICAgY29uZmlnLmFk
ZFRvTG9nKCdGYWlsZWQgKHN0YXR1cz0nICsgdGhpcy5zdGF0dXMgKyAnKScpOwotICAgICAgZGVz
dHJveUFsbFhIUnMoKTsKLSAgICAgIGNvbmZpZy5ub3RpZnlBYm9ydCgpOwotICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIC8vIENoZWNrIGFuZCB3YXJuIGlmIHByb3h5IGlzIGVuYWJsZWQuCi0g
ICAgaWYgKHRoaXMuZ2V0UmVzcG9uc2VIZWFkZXIoJ1ZpYScpICE9PSBudWxsKSB7Ci0gICAgICBj
b25maWcuYWRkVG9Mb2coJ1dBUk5JTkc6IHByb3h5IHNlZW1zIGVuYWJsZWQuJyk7Ci0gICAgfQot
Ci0gICAgdmFyIGJ5dGVzUmVjZWl2ZWQgPSAtMTsKLSAgICBpZiAodGhpcy5yZXNwb25zZVR5cGUg
PT0gJ2FycmF5YnVmZmVyJykgewotICAgICAgYnl0ZXNSZWNlaXZlZCA9IHRoaXMucmVzcG9uc2Uu
Ynl0ZUxlbmd0aDsKLSAgICB9IGVsc2UgaWYgKHRoaXMucmVzcG9uc2VUeXBlID09ICdibG9iJykg
ewotICAgICAgYnl0ZXNSZWNlaXZlZCA9IHRoaXMucmVzcG9uc2Uuc2l6ZTsKLSAgICB9IGVsc2Ug
ewotICAgICAgYnl0ZXNSZWNlaXZlZCA9IHRoaXMucmVzcG9uc2UubGVuZ3RoOwotICAgIH0KLSAg
ICBpZiAoYnl0ZXNSZWNlaXZlZCAhPSBzaXplKSB7Ci0gICAgICBjb25maWcuYWRkVG9Mb2coJ0V4
cGVjdGVkICcgKyBzaXplICsKLSAgICAgICAgICAnQiBidXQgcmVjZWl2ZWQgJyArIGJ5dGVzUmVj
ZWl2ZWQgKyAnQicpOwotICAgICAgZGVzdHJveUFsbFhIUnMoKTsKLSAgICAgIGNvbmZpZy5ub3Rp
ZnlBYm9ydCgpOwotICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICh0aGlzLnJlc3BvbnNl
VHlwZSA9PSAnYXJyYXlidWZmZXInKSB7Ci0gICAgICBjaGVja1Jlc3VsdEFuZENvbnRpbnVlKGJ5
dGVzUmVjZWl2ZWQsCi0gICAgICAgICAgIWNvbmZpZy52ZXJpZnlEYXRhIHx8IHZlcmlmeUFycmF5
QnVmZmVyKHRoaXMucmVzcG9uc2UsIDB4NjEpKTsKLSAgICB9IGVsc2UgaWYgKHRoaXMucmVzcG9u
c2VUeXBlID09ICdibG9iJykgewotICAgICAgaWYgKGNvbmZpZy52ZXJpZnlEYXRhKQotICAgICAg
ICB2ZXJpZnlCbG9iKGNvbmZpZywgdGhpcy5yZXNwb25zZSwgMHg2MSwgY2hlY2tSZXN1bHRBbmRD
b250aW51ZSk7Ci0gICAgICBlbHNlCi0gICAgICAgIGNoZWNrUmVzdWx0QW5kQ29udGludWUoYnl0
ZXNSZWNlaXZlZCwgdHJ1ZSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIGNoZWNrUmVzdWx0QW5kQ29u
dGludWUoCi0gICAgICAgICAgYnl0ZXNSZWNlaXZlZCwKLSAgICAgICAgICAhY29uZmlnLnZlcmlm
eURhdGEgfHwKLSAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZSA9PSByZXBlYXRTdHJpbmcoJ2En
LCB0aGlzLnJlc3BvbnNlLmxlbmd0aCkpOwotICAgIH0KLSAgfTsKLQotICBmb3IgKHZhciBpID0g
MDsgaSA8IGNvbmZpZy5udW1YSFJzOyArK2kpIHsKLSAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBS
ZXF1ZXN0KCk7Ci0gICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IG9uUmVhZHlTdGF0ZUNoYW5n
ZUhhbmRsZXI7Ci0gICAgeGhycy5wdXNoKHhocik7Ci0gIH0KLQotICBiZW5jaG1hcmsuc3RhcnRU
aW1lSW5NcyA9IGdldFRpbWVTdGFtcCgpOwotICB0b3RhbFNpemUgPSBzaXplICogeGhycy5sZW5n
dGg7Ci0KLSAgZm9yICh2YXIgaSA9IDA7IGkgPCB4aHJzLmxlbmd0aDsgKytpKSB7Ci0gICAgdmFy
IHhociA9IHhocnNbaV07Ci0gICAgaWYgKGNvbmZpZy5tZXRob2RBbmRDYWNoZSA9PT0gJ0dFVC1O
T0NBQ0hFJykgewotICAgICAgeGhyLm9wZW4oJ0dFVCcsIGNvbmZpZy5wcmVmaXhVcmwgKyAnX3Jl
Y2VpdmVfZ2V0bm9jYWNoZT8nICsgc2l6ZSwKLSAgICAgICAgICBjb25maWcuYXN5bmMpOwotICAg
ICAgeGhyLnJlc3BvbnNlVHlwZSA9IGNvbmZpZy5kYXRhVHlwZTsKLSAgICAgIHhoci5zZW5kKCk7
Ci0gICAgfSBlbHNlIGlmIChjb25maWcubWV0aG9kQW5kQ2FjaGUgPT09ICdHRVQtQ0FDSEUnKSB7
Ci0gICAgICB4aHIub3BlbignR0VUJywgY29uZmlnLnByZWZpeFVybCArICdfcmVjZWl2ZV9nZXRj
YWNoZT8nICsgc2l6ZSwKLSAgICAgICAgICBjb25maWcuYXN5bmMpOwotICAgICAgeGhyLnJlc3Bv
bnNlVHlwZSA9IGNvbmZpZy5kYXRhVHlwZTsKLSAgICAgIHhoci5zZW5kKCk7Ci0gICAgfSBlbHNl
IHsKLSAgICAgIHhoci5vcGVuKCdQT1NUJywgY29uZmlnLnByZWZpeFVybCArICdfcmVjZWl2ZScs
IGNvbmZpZy5hc3luYyk7Ci0gICAgICB4aHIucmVzcG9uc2VUeXBlID0gY29uZmlnLmRhdGFUeXBl
OwotICAgICAgeGhyLnNlbmQoc2l6ZSArICcgbm9uZScpOwotICAgIH0KLSAgfQotfQotCi0KLWZ1
bmN0aW9uIGdldENvbmZpZ1N0cmluZyhjb25maWcpIHsKLSAgcmV0dXJuICcoJyArIGNvbmZpZy5k
YXRhVHlwZSArCi0gICAgJywgdmVyaWZ5RGF0YT0nICsgY29uZmlnLnZlcmlmeURhdGEgKwotICAg
ICcsICcgKyAoaXNXb3JrZXIgPyAnV29ya2VyJyA6ICdNYWluJykgKwotICAgICcsICcgKyAoY29u
ZmlnLmFzeW5jID8gJ0FzeW5jJyA6ICdTeW5jJykgKwotICAgICcsIG51bVhIUnM9JyArIGNvbmZp
Zy5udW1YSFJzICsKLSAgICAnLCBudW1JdGVyYXRpb25zPScgKyBjb25maWcubnVtSXRlcmF0aW9u
cyArCi0gICAgJywgbnVtV2FybVVwSXRlcmF0aW9ucz0nICsgY29uZmlnLm51bVdhcm1VcEl0ZXJh
dGlvbnMgKwotICAgICcpJzsKLX0KLQotZnVuY3Rpb24gc3RhcnRCZW5jaG1hcmsoY29uZmlnKSB7
Ci0gIGNsZWFyVGltZW91dCh0aW1lcklEKTsKLSAgZGVzdHJveUFsbFhIUnMoKTsKLQotICBydW5O
ZXh0VGFzayhjb25maWcpOwotfQotCi1mdW5jdGlvbiBiYXRjaEJlbmNobWFyayhvcmlnaW5hbENv
bmZpZykgewotICBvcmlnaW5hbENvbmZpZy5hZGRUb0xvZygnQmF0Y2ggYmVuY2htYXJrJyk7Ci0K
LSAgdGFza3MgPSBbXTsKLSAgY2xlYXJBdmVyYWdlRGF0YSgpOwotCi0gIHZhciBkYXRhVHlwZXMg
PSBbJ3RleHQnLCAnYmxvYicsICdhcnJheWJ1ZmZlciddOwotICB2YXIgc3RlcEZ1bmNzID0gW3Nl
bmRCZW5jaG1hcmtTdGVwLCByZWNlaXZlQmVuY2htYXJrU3RlcF07Ci0gIHZhciBuYW1lcyA9IFsn
U2VuZCcsICdSZWNlaXZlJ107Ci0gIHZhciBhc3luYyA9IFt0cnVlLCBmYWxzZV07Ci0gIGZvciAo
dmFyIGkgPSAwOyBpIDwgc3RlcEZ1bmNzLmxlbmd0aDsgKytpKSB7Ci0gICAgZm9yICh2YXIgaiA9
IDA7IGogPCBkYXRhVHlwZXMubGVuZ3RoOyArK2opIHsKLSAgICAgIGZvciAodmFyIGsgPSAwOyBr
IDwgYXN5bmMubGVuZ3RoOyArK2spIHsKLSAgICAgICAgdmFyIGNvbmZpZyA9IGNsb25lQ29uZmln
KG9yaWdpbmFsQ29uZmlnKTsKLSAgICAgICAgY29uZmlnLmRhdGFUeXBlID0gZGF0YVR5cGVzW2pd
OwotICAgICAgICBjb25maWcuYXN5bmMgPSBhc3luY1trXTsKLQotICAgICAgICAvLyBSZWNlaXZl
ICYmIE5vbi1Xb3JrZXIgJiYgU3luYyBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBzcGVjCi0gICAg
ICAgIGlmIChzdGVwRnVuY3NbaV0gPT09IHJlY2VpdmVCZW5jaG1hcmtTdGVwICYmICFpc1dvcmtl
ciAmJgotICAgICAgICAgICAgIWNvbmZpZy5hc3luYykKLSAgICAgICAgICBjb250aW51ZTsKLQot
ICAgICAgICBhZGRUYXNrcyhjb25maWcsIHN0ZXBGdW5jc1tpXSk7Ci0gICAgICAgIGFkZFJlc3Vs
dFJlcG9ydGluZ1Rhc2soY29uZmlnLAotICAgICAgICAgICAgbmFtZXNbaV0gKyAnIGJlbmNobWFy
ayAnICsgZ2V0Q29uZmlnU3RyaW5nKGNvbmZpZykpOwotICAgICAgfQotICAgIH0KLSAgfQotCi0g
IHN0YXJ0QmVuY2htYXJrKGNvbmZpZyk7Ci19Ci0KLWZ1bmN0aW9uIGNsZWFudXAoKSB7Ci19CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3B5d2Vic29ja2V0L2V4YW1wbGUveGhyX2V2ZW50X2xvZ2dlci5odG1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFt
cGxlL3hocl9ldmVudF9sb2dnZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NTBkYjBmYmVjNDk0NjUwOTEzMjliZGFmNDcxN2Q3MjE5ODg2YWQ2Zi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUveGhyX2V2ZW50X2xv
Z2dlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLTwhLS0KLUNvcHlyaWdo
dCAyMDE0IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0KLVVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlCi1saWNlbnNlIHRoYXQgY2FuIGJl
IGZvdW5kIGluIHRoZSBDT1BZSU5HIGZpbGUgb3IgYXQKLWh0dHBzOi8vZGV2ZWxvcGVycy5nb29n
bGUuY29tL29wZW4tc291cmNlL2xpY2Vuc2VzL2JzZAotLS0+Ci0KLTxodG1sPgotPGhlYWQ+Ci08
dGl0bGU+WEhSIGV2ZW50IGxvZ2dlcjwvdGl0bGU+Ci08c2NyaXB0IHNyYz0idXRpbF9tYWluLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQ+Ci12YXIgZXZlbnRzID0gW107Ci12YXIgc3RhcnRUaW1lID0g
MDsKLQotZnVuY3Rpb24gcnVuKCkgewotICBldmVudHMgPSBbXTsKLSAgc3RhcnRUaW1lID0gRGF0
ZS5ub3coKTsKLQotICBmdW5jdGlvbiBwdXNoVG9Mb2codHlwZSkgewotICAgIHZhciB0aW1lID0g
RGF0ZS5ub3coKTsKLSAgICBpZiAoZXZlbnRzLmxlbmd0aCAhPSAwICYmIHR5cGUgPT09IGV2ZW50
c1tldmVudHMubGVuZ3RoIC0gMV0udHlwZSkgewotICAgICAgZXZlbnRzW2V2ZW50cy5sZW5ndGgg
LSAxXS5jb3VudCArPSAxOwotICAgICAgZXZlbnRzW2V2ZW50cy5sZW5ndGggLSAxXS5sYXN0ID0g
dGltZTsKLSAgICB9IGVsc2UgewotICAgICAgZXZlbnRzLnB1c2goe3R5cGU6IHR5cGUsIGNvdW50
OiAxLCBmaXJzdDogdGltZSwgbGFzdDogdGltZX0pOwotICAgIH0KLSAgfQotCi0gIHZhciB4aHIg
PSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKLQotICBmdW5jdGlvbiBnZXRQcm9ncmVzc0V2ZW50RHVt
cChlKSB7Ci0gICAgcmV0dXJuICcoJyArIGUubGVuZ3RoQ29tcHV0YWJsZSArICcsICcgKyBlLmxv
YWRlZCArICcsICcgKyBlLnRvdGFsICsgJyknOwotICB9Ci0KLSAgdmFyIGR1bXBQcm9ncmVzc0V2
ZW50ID0gZ2V0Qm9vbEZyb21DaGVja0JveCgnZHVtcHByb2dyZXNzZXZlbnQnKTsKLQotICBmdW5j
dGlvbiBsb2coZSkgewotICAgIHZhciB0eXBlID0gZS50eXBlOwotICAgIGlmICh0eXBlID09PSAn
cmVhZHlzdGF0ZWNoYW5nZScpIHsKLSAgICAgIHR5cGUgKz0gZS50YXJnZXQucmVhZHlTdGF0ZTsK
LSAgICB9Ci0gICAgaWYgKGR1bXBQcm9ncmVzc0V2ZW50ICYmIChlIGluc3RhbmNlb2YgUHJvZ3Jl
c3NFdmVudCkpIHsKLSAgICAgIHR5cGUgKz0gZ2V0UHJvZ3Jlc3NFdmVudER1bXAoZSk7Ci0gICAg
fQotICAgIHB1c2hUb0xvZyh0eXBlKTsKLSAgfTsKLQotICBmdW5jdGlvbiBsb2dVcGxvYWQoZSkg
ewotICAgIHZhciB0eXBlID0gZS50eXBlOwotICAgIGlmIChkdW1wUHJvZ3Jlc3NFdmVudCAmJiAo
ZSBpbnN0YW5jZW9mIFByb2dyZXNzRXZlbnQpKSB7Ci0gICAgICB0eXBlICs9IGdldFByb2dyZXNz
RXZlbnREdW1wKGUpOwotICAgIH0KLSAgICBwdXNoVG9Mb2coJ3VwbG9hZCcgKyB0eXBlKTsKLSAg
fQotCi0gIGlmIChnZXRCb29sRnJvbUNoZWNrQm94KCd1cGxvYWQnKSkgewotICAgIHZhciB1cGxv
YWQgPSB4aHIudXBsb2FkOwotICAgIHVwbG9hZC5vbmxvYWRzdGFydCA9IGxvZ1VwbG9hZDsKLSAg
ICB1cGxvYWQub25wcm9ncmVzcyA9IGxvZ1VwbG9hZDsKLSAgICB1cGxvYWQub25hYm9ydCA9IGxv
Z1VwbG9hZDsKLSAgICB1cGxvYWQub25lcnJvciA9IGxvZ1VwbG9hZDsKLSAgICB1cGxvYWQub25s
b2FkID0gbG9nVXBsb2FkOwotICAgIHVwbG9hZC5vbnRpbWVvdXQgPSBsb2dVcGxvYWQ7Ci0gICAg
dXBsb2FkLm9ubG9hZGVuZCA9IGxvZ1VwbG9hZDsKLSAgfQotCi0gIHhoci5vbnJlYWR5c3RhdGVj
aGFuZ2UgPSBsb2c7Ci0gIHhoci5vbmxvYWRzdGFydCA9IGxvZzsKLSAgeGhyLm9ucHJvZ3Jlc3Mg
PSBsb2c7Ci0gIHhoci5vbmFib3J0ID0gbG9nOwotICB4aHIub25lcnJvciA9IGxvZzsKLSAgeGhy
Lm9ubG9hZCA9IGxvZzsKLSAgeGhyLm9udGltZW91dCA9IGxvZzsKLSAgeGhyLm9ubG9hZGVuZCA9
IGxvZzsKLQotICB4aHIub3BlbignUE9TVCcsICcvMDczYmUwMDFlMTA5NTA2OTJjY2JmM2EyYWQy
MWMyNDVfcmVjZWl2ZScsCi0gICAgICAgICAgIGdldEJvb2xGcm9tQ2hlY2tCb3goJ2FzeW5jJykp
OwotICB2YXIgc2l6ZSA9IGdldEludEZyb21JbnB1dCgnc2l6ZScpOwotICB2YXIgY2h1bmtlZE1v
ZGUgPSAnbm9uZSc7Ci0gIGlmIChnZXRCb29sRnJvbUNoZWNrQm94KCdjaHVua2VkcmVzcG9uc2Un
KSkgewotICAgIGNodW5rZWRNb2RlID0gJ2NodW5rZWQnOwotICB9Ci0gIHhoci5zZW5kKHNpemUg
KyAnICcgKyBjaHVua2VkTW9kZSk7Ci19Ci0KLWZ1bmN0aW9uIHByaW50KCkgewotICB2YXIgcmVz
dWx0ID0gJyc7Ci0gIGZvciAodmFyIGkgPSAwOyBpIDwgZXZlbnRzLmxlbmd0aDsgKytpKSB7Ci0g
ICAgdmFyIGV2ZW50ID0gZXZlbnRzW2ldOwotICAgIHZhciBsaW5lID0gJyc7Ci0gICAgbGluZSAr
PSAoZXZlbnQuZmlyc3QgLSBzdGFydFRpbWUpICsgIm1zIjsKLSAgICBpZiAoZXZlbnQuY291bnQg
PiAxKQotICAgICAgbGluZSArPSAiLSIgKyAoZXZlbnQubGFzdCAtIHN0YXJ0VGltZSkgKyAibXMi
OwotICAgIGVsc2UKLSAgICAgIGxpbmUgKz0gIiAgICAgICAgIjsKLSAgICB3aGlsZShsaW5lLmxl
bmd0aCA8IDE1KQotICAgICAgbGluZSArPSAiICI7Ci0gICAgbGluZSArPSAiOiAiICsgZXZlbnQu
dHlwZSArICcgKiAnICsgZXZlbnQuY291bnQgKyAnXG4nOwotICAgIHJlc3VsdCArPSBsaW5lOwot
ICB9Ci0gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2cnKS52YWx1ZSA9IHJlc3VsdDsKLX0K
LTwvc2NyaXB0PgotCi08Ym9keT4KLSAgPHRleHRhcmVhIGlkPSJsb2ciIHJvd3M9IjEwIiBjb2xz
PSI3MCIgcmVhZG9ubHk+PC90ZXh0YXJlYT4KLSAgPGJyLz4KLSAgU2l6ZTogPGlucHV0IHR5cGU9
InRleHQiIGlkPSJzaXplIiB2YWx1ZT0iNjU1MzYiPjxici8+Ci0gIDxpbnB1dCB0eXBlPSJjaGVj
a2JveCIgaWQ9ImNodW5rZWRyZXNwb25zZSI+Ci0gIDxsYWJlbCBmb3I9ImNodW5rZWRyZXNwb25z
ZSI+VXNlIENodW5rZWQgVC1FIGZvciByZXNwb25zZTwvbGFiZWw+PGJyLz4KLSAgPGlucHV0IHR5
cGU9ImNoZWNrYm94IiBpZD0idXBsb2FkIj4KLSAgPGxhYmVsIGZvcj0idXBsb2FkIj5VcGxvYWQg
cHJvZ3Jlc3M8L2xhYmVsPjxici8+Ci0gIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9ImR1bXBw
cm9ncmVzc2V2ZW50Ij4KLSAgPGxhYmVsIGZvcj0iZHVtcHByb2dyZXNzZXZlbnQiPgotICAgIER1
bXAgbGVuZ3RoQ29tcHV0YWJsZS9sb2FkZWQvdG90YWw8L2xhYmVsPjxici8+Ci0gIDxpbnB1dCB0
eXBlPSJjaGVja2JveCIgaWQ9ImFzeW5jIiBjaGVja2VkPgotICA8bGFiZWwgZm9yPSJhc3luYyI+
QXN5bmM8L2xhYmVsPjxici8+Ci0gIDxpbnB1dCB0eXBlPSJidXR0b24iIG9uY2xpY2s9InJ1bigp
IiB2YWx1ZT0iUnVuIFhIUiI+Ci0gIDxpbnB1dCB0eXBlPSJidXR0b24iIG9uY2xpY2s9InByaW50
KCkiIHZhbHVlPSJQcmludCBsb2ciPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tl
dC9leGFtcGxlL3hocl9wZXJmb3JtYW5jZV90ZXN0X2lmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxl
L3hocl9wZXJmb3JtYW5jZV90ZXN0X2lmcmFtZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBhYjAyYzllYTU2ZjZjMTBkMDNiZWMxMDM4ZDY3MjJkZTZlOGQzMWU1Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS94aHJf
cGVyZm9ybWFuY2VfdGVzdF9pZnJhbWUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSJ1dGlsLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSJwZXJmb3JtYW5jZV90ZXN0X2lmcmFtZS5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0ieGhyX2JlbmNobWFyay5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29j
a2V0L19faW5pdF9fLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MDkzM2EyMjA0
NTFmYWRiNmEwMWE1YzFkNDVjMjU1MTQ2OGQ3ZDg1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L19faW5pdF9fLnB5Cisr
KyAvZGV2L251bGwKQEAgLTEsMjI0ICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJ
bmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMK
LSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIldl
YlNvY2tldCBleHRlbnNpb24gZm9yIEFwYWNoZSBIVFRQIFNlcnZlci4KLQotbW9kX3B5d2Vic29j
a2V0IGlzIGEgV2ViU29ja2V0IGV4dGVuc2lvbiBmb3IgQXBhY2hlIEhUVFAgU2VydmVyCi1pbnRl
bmRlZCBmb3IgdGVzdGluZyBvciBleHBlcmltZW50YWwgcHVycG9zZXMuIG1vZF9weXRob24gaXMg
cmVxdWlyZWQuCi0KLQotSW5zdGFsbGF0aW9uCi09PT09PT09PT09PT0KLQotMC4gUHJlcGFyZSBh
biBBcGFjaGUgSFRUUCBTZXJ2ZXIgZm9yIHdoaWNoIG1vZF9weXRob24gaXMgZW5hYmxlZC4KLQot
MS4gU3BlY2lmeSB0aGUgZm9sbG93aW5nIEFwYWNoZSBIVFRQIFNlcnZlciBkaXJlY3RpdmVzIHRv
IHN1aXQgeW91cgotICAgY29uZmlndXJhdGlvbi4KLQotICAgSWYgbW9kX3B5d2Vic29ja2V0IGlz
IG5vdCBpbiB0aGUgUHl0aG9uIHBhdGgsIHNwZWNpZnkgdGhlIGZvbGxvd2luZy4KLSAgIDx3ZWJz
b2NrX2xpYj4gaXMgdGhlIGRpcmVjdG9yeSB3aGVyZSBtb2RfcHl3ZWJzb2NrZXQgaXMgaW5zdGFs
bGVkLgotCi0gICAgICAgUHl0aG9uUGF0aCAic3lzLnBhdGgrWyc8d2Vic29ja19saWI+J10iCi0K
LSAgIEFsd2F5cyBzcGVjaWZ5IHRoZSBmb2xsb3dpbmcuIDx3ZWJzb2NrX2hhbmRsZXJzPiBpcyB0
aGUgZGlyZWN0b3J5IHdoZXJlCi0gICB1c2VyLXdyaXR0ZW4gV2ViU29ja2V0IGhhbmRsZXJzIGFy
ZSBwbGFjZWQuCi0KLSAgICAgICBQeXRob25PcHRpb24gbW9kX3B5d2Vic29ja2V0LmhhbmRsZXJf
cm9vdCA8d2Vic29ja19oYW5kbGVycz4KLSAgICAgICBQeXRob25IZWFkZXJQYXJzZXJIYW5kbGVy
IG1vZF9weXdlYnNvY2tldC5oZWFkZXJwYXJzZXJoYW5kbGVyCi0KLSAgIFRvIGxpbWl0IHRoZSBz
ZWFyY2ggZm9yIFdlYlNvY2tldCBoYW5kbGVycyB0byBhIGRpcmVjdG9yeSA8c2Nhbl9kaXI+Ci0g
ICB1bmRlciA8d2Vic29ja19oYW5kbGVycz4sIGNvbmZpZ3VyZSBhcyBmb2xsb3dzOgotCi0gICAg
ICAgUHl0aG9uT3B0aW9uIG1vZF9weXdlYnNvY2tldC5oYW5kbGVyX3NjYW4gPHNjYW5fZGlyPgot
Ci0gICA8c2Nhbl9kaXI+IGlzIHVzZWZ1bCBpbiBzYXZpbmcgc2NhbiB0aW1lIHdoZW4gPHdlYnNv
Y2tfaGFuZGxlcnM+Ci0gICBjb250YWlucyBtYW55IG5vbi1XZWJTb2NrZXQgaGFuZGxlciBmaWxl
cy4KLQotICAgSWYgeW91IHdhbnQgdG8gYWxsb3cgaGFuZGxlcnMgd2hvc2UgY2Fub25pY2FsIHBh
dGggaXMgbm90IHVuZGVyIHRoZSByb290Ci0gICBkaXJlY3RvcnkgKGkuZS4gc3ltYm9saWMgbGlu
ayBpcyBpbiByb290IGRpcmVjdG9yeSBidXQgaXRzIHRhcmdldCBpcyBub3QpLAotICAgY29uZmln
dXJlIGFzIGZvbGxvd3M6Ci0KLSAgICAgICBQeXRob25PcHRpb24gbW9kX3B5d2Vic29ja2V0LmFs
bG93X2hhbmRsZXJzX291dHNpZGVfcm9vdF9kaXIgT24KLQotICAgRXhhbXBsZSBzbmlwcGV0IG9m
IGh0dHBkLmNvbmY6Ci0gICAobW9kX3B5d2Vic29ja2V0IGlzIGluIC93ZWJzb2NrX2xpYiwgV2Vi
U29ja2V0IGhhbmRsZXJzIGFyZSBpbgotICAgL3dlYnNvY2tfaGFuZGxlcnMsIHBvcnQgaXMgODAg
Zm9yIHdzLCA0NDMgZm9yIHdzcy4pCi0KLSAgICAgICA8SWZNb2R1bGUgcHl0aG9uX21vZHVsZT4K
LSAgICAgICAgIFB5dGhvblBhdGggInN5cy5wYXRoK1snL3dlYnNvY2tfbGliJ10iCi0gICAgICAg
ICBQeXRob25PcHRpb24gbW9kX3B5d2Vic29ja2V0LmhhbmRsZXJfcm9vdCAvd2Vic29ja19oYW5k
bGVycwotICAgICAgICAgUHl0aG9uSGVhZGVyUGFyc2VySGFuZGxlciBtb2RfcHl3ZWJzb2NrZXQu
aGVhZGVycGFyc2VyaGFuZGxlcgotICAgICAgIDwvSWZNb2R1bGU+Ci0KLTIuIFR1bmUgQXBhY2hl
IHBhcmFtZXRlcnMgZm9yIHNlcnZpbmcgV2ViU29ja2V0LiBXZSdkIGxpa2UgdG8gbm90ZSB0aGF0
IGF0Ci0gICBsZWFzdCBUaW1lT3V0IGRpcmVjdGl2ZSBmcm9tIGNvcmUgZmVhdHVyZXMgYW5kIFJl
cXVlc3RSZWFkVGltZW91dAotICAgZGlyZWN0aXZlIGZyb20gbW9kX3JlcXRpbWVvdXQgc2hvdWxk
IGJlIG1vZGlmaWVkIG5vdCB0byBraWxsIGNvbm5lY3Rpb25zCi0gICBpbiBvbmx5IGEgZmV3IHNl
Y29uZHMgb2YgaWRsZSB0aW1lLgotCi0zLiBWZXJpZnkgaW5zdGFsbGF0aW9uLiBZb3UgY2FuIHVz
ZSBleGFtcGxlL2NvbnNvbGUuaHRtbCB0byBwb2tlIHRoZSBzZXJ2ZXIuCi0KLQotV3JpdGluZyBX
ZWJTb2NrZXQgaGFuZGxlcnMKLT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLVdoZW4gYSBX
ZWJTb2NrZXQgcmVxdWVzdCBjb21lcyBpbiwgdGhlIHJlc291cmNlIG5hbWUKLXNwZWNpZmllZCBp
biB0aGUgaGFuZHNoYWtlIGlzIGNvbnNpZGVyZWQgYXMgaWYgaXQgaXMgYSBmaWxlIHBhdGggdW5k
ZXIKLTx3ZWJzb2NrX2hhbmRsZXJzPiBhbmQgdGhlIGhhbmRsZXIgZGVmaW5lZCBpbgotPHdlYnNv
Y2tfaGFuZGxlcnM+LzxyZXNvdXJjZV9uYW1lPl93c2gucHkgaXMgaW52b2tlZC4KLQotRm9yIGV4
YW1wbGUsIGlmIHRoZSByZXNvdXJjZSBuYW1lIGlzIC9leGFtcGxlL2NoYXQsIHRoZSBoYW5kbGVy
IGRlZmluZWQgaW4KLTx3ZWJzb2NrX2hhbmRsZXJzPi9leGFtcGxlL2NoYXRfd3NoLnB5IGlzIGlu
dm9rZWQuCi0KLUEgV2ViU29ja2V0IGhhbmRsZXIgaXMgY29tcG9zZWQgb2YgdGhlIGZvbGxvd2lu
ZyB0aHJlZSBmdW5jdGlvbnM6Ci0KLSAgICB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShy
ZXF1ZXN0KQotICAgIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KQotICAgIHdlYl9z
b2NrZXRfcGFzc2l2ZV9jbG9zaW5nX2hhbmRzaGFrZShyZXF1ZXN0KQotCi13aGVyZToKLSAgICBy
ZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3QuCi0KLXdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNo
YWtlIGlzIGNhbGxlZCBkdXJpbmcgdGhlIGhhbmRzaGFrZSBhZnRlciB0aGUKLWhlYWRlcnMgYXJl
IHN1Y2Nlc3NmdWxseSBwYXJzZWQgYW5kIFdlYlNvY2tldCBwcm9wZXJ0aWVzICh3c19sb2NhdGlv
biwKLXdzX29yaWdpbiwgYW5kIHdzX3Jlc291cmNlKSBhcmUgYWRkZWQgdG8gcmVxdWVzdC4gQSBo
YW5kbGVyCi1jYW4gcmVqZWN0IHRoZSByZXF1ZXN0IGJ5IHJhaXNpbmcgYW4gZXhjZXB0aW9uLgot
Ci1BIHJlcXVlc3Qgb2JqZWN0IGhhcyB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXMgdGhhdCB5b3Ug
Y2FuIHVzZSBkdXJpbmcgdGhlCi1leHRyYSBoYW5kc2hha2UgKHdlYl9zb2NrZXRfZG9fZXh0cmFf
aGFuZHNoYWtlKToKLS0gd3NfcmVzb3VyY2UKLS0gd3Nfb3JpZ2luCi0tIHdzX3ZlcnNpb24KLS0g
d3NfbG9jYXRpb24gKEh5QmkgMDAgb25seSkKLS0gd3NfZXh0ZW5zaW9ucyAoSHlCaSAwNiBhbmQg
bGF0ZXIpCi0tIHdzX2RlZmxhdGUgKEh5QmkgMDYgYW5kIGxhdGVyKQotLSB3c19wcm90b2NvbAot
LSB3c19yZXF1ZXN0ZWRfcHJvdG9jb2xzIChIeUJpIDA2IGFuZCBsYXRlcikKLQotVGhlIGxhc3Qg
dHdvIGFyZSBhIGJpdCB0cmlja3kuIFNlZSB0aGUgbmV4dCBzdWJzZWN0aW9uLgotCi0KLVN1YnBy
b3RvY29sIE5lZ290aWF0aW9uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1Gb3IgSHlCaSAw
NiBhbmQgbGF0ZXIsIHdzX3Byb3RvY29sIGlzIGFsd2F5cyBzZXQgdG8gTm9uZSB3aGVuCi13ZWJf
c29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZSBpcyBjYWxsZWQuIElmIHdzX3JlcXVlc3RlZF9wcm90
b2NvbHMgaXMgbm90Ci1Ob25lLCB5b3UgbXVzdCBjaG9vc2Ugb25lIHN1YnByb3RvY29sIGZyb20g
dGhpcyBsaXN0IGFuZCBzZXQgaXQgdG8KLXdzX3Byb3RvY29sLgotCi1Gb3IgSHlCaSAwMCwgd2hl
biB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZSBpcyBjYWxsZWQsCi13c19wcm90b2NvbCBp
cyBzZXQgdG8gdGhlIHZhbHVlIGdpdmVuIGJ5IHRoZSBjbGllbnQgaW4KLVNlYy1XZWJTb2NrZXQt
UHJvdG9jb2wgaGVhZGVyIG9yIE5vbmUgaWYKLXN1Y2ggaGVhZGVyIHdhcyBub3QgZm91bmQgaW4g
dGhlIG9wZW5pbmcgaGFuZHNoYWtlIHJlcXVlc3QuIEZpbmlzaCBleHRyYQotaGFuZHNoYWtlIHdp
dGggd3NfcHJvdG9jb2wgdW50b3VjaGVkIHRvIGFjY2VwdCB0aGUgcmVxdWVzdCBzdWJwcm90b2Nv
bC4KLVRoZW4sIFNlYy1XZWJTb2NrZXQtUHJvdG9jb2wgaGVhZGVyIHdpbGwgYmUgc2VudCB0bwot
dGhlIGNsaWVudCBpbiByZXNwb25zZSB3aXRoIHRoZSBzYW1lIHZhbHVlIGFzIHJlcXVlc3RlZC4g
UmFpc2UgYW4gZXhjZXB0aW9uCi1pbiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZSB0byBy
ZWplY3QgdGhlIHJlcXVlc3RlZCBzdWJwcm90b2NvbC4KLQotCi1EYXRhIFRyYW5zZmVyCi0tLS0t
LS0tLS0tLS0tCi0KLXdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YSBpcyBjYWxsZWQgYWZ0ZXIgdGhl
IGhhbmRzaGFrZSBjb21wbGV0ZWQKLXN1Y2Nlc3NmdWxseS4gQSBoYW5kbGVyIGNhbiByZWNlaXZl
L3NlbmQgbWVzc2FnZXMgZnJvbS90byB0aGUgY2xpZW50Ci11c2luZyByZXF1ZXN0LiBtb2RfcHl3
ZWJzb2NrZXQubXNndXRpbCBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0aWVzCi1mb3IgZGF0YSB0cmFu
c2Zlci4KLQotWW91IGNhbiByZWNlaXZlIGEgbWVzc2FnZSBieSB0aGUgZm9sbG93aW5nIHN0YXRl
bWVudC4KLQotICAgIG1lc3NhZ2UgPSByZXF1ZXN0LndzX3N0cmVhbS5yZWNlaXZlX21lc3NhZ2Uo
KQotCi1UaGlzIGNhbGwgYmxvY2tzIHVudGlsIGFueSBjb21wbGV0ZSB0ZXh0IGZyYW1lIGFycml2
ZXMsIGFuZCB0aGUgcGF5bG9hZCBkYXRhCi1vZiB0aGUgaW5jb21pbmcgZnJhbWUgd2lsbCBiZSBz
dG9yZWQgaW50byBtZXNzYWdlLiBXaGVuIHlvdSdyZSB1c2luZyBJRVRGCi1IeUJpIDAwIG9yIGxh
dGVyIHByb3RvY29sLCByZWNlaXZlX21lc3NhZ2UoKSB3aWxsIHJldHVybiBOb25lIG9uIHJlY2Vp
dmluZwotY2xpZW50LWluaXRpYXRlZCBjbG9zaW5nIGhhbmRzaGFrZS4gV2hlbiBhbnkgZXJyb3Ig
b2NjdXJzLCByZWNlaXZlX21lc3NhZ2UoKQotd2lsbCByYWlzZSBzb21lIGV4Y2VwdGlvbi4KLQot
WW91IGNhbiBzZW5kIGEgbWVzc2FnZSBieSB0aGUgZm9sbG93aW5nIHN0YXRlbWVudC4KLQotICAg
IHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRfbWVzc2FnZShtZXNzYWdlKQotCi0KLUNsb3NpbmcgQ29u
bmVjdGlvbgotLS0tLS0tLS0tLS0tLS0tLS0tCi0KLUV4ZWN1dGluZyB0aGUgZm9sbG93aW5nIHN0
YXRlbWVudCBvciBqdXN0IHJldHVybi1pbmcgZnJvbQotd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRh
IGNhdXNlIGNvbm5lY3Rpb24gY2xvc2UuCi0KLSAgICByZXF1ZXN0LndzX3N0cmVhbS5jbG9zZV9j
b25uZWN0aW9uKCkKLQotY2xvc2VfY29ubmVjdGlvbiB3aWxsIHdhaXQKLWZvciBjbG9zaW5nIGhh
bmRzaGFrZSBhY2tub3dsZWRnZW1lbnQgY29taW5nIGZyb20gdGhlIGNsaWVudC4gV2hlbiBpdAot
Y291bGRuJ3QgcmVjZWl2ZSBhIHZhbGlkIGFja25vd2xlZGdlbWVudCwgcmFpc2VzIGFuIGV4Y2Vw
dGlvbi4KLQotd2ViX3NvY2tldF9wYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlIGlzIGNhbGxlZCBh
ZnRlciB0aGUgc2VydmVyIHJlY2VpdmVzCi1pbmNvbWluZyBjbG9zaW5nIGZyYW1lIGZyb20gdGhl
IGNsaWVudCBwZWVyIGltbWVkaWF0ZWx5LiBZb3UgY2FuIHNwZWNpZnkKLWNvZGUgYW5kIHJlYXNv
biBieSByZXR1cm4gdmFsdWVzLiBUaGV5IGFyZSBzZW50IGFzIGEgb3V0Z29pbmcgY2xvc2luZyBm
cmFtZQotZnJvbSB0aGUgc2VydmVyLiBBIHJlcXVlc3Qgb2JqZWN0IGhhcyB0aGUgZm9sbG93aW5n
IHByb3BlcnRpZXMgdGhhdCB5b3UgY2FuCi11c2UgaW4gd2ViX3NvY2tldF9wYXNzaXZlX2Nsb3Np
bmdfaGFuZHNoYWtlLgotLSB3c19jbG9zZV9jb2RlCi0tIHdzX2Nsb3NlX3JlYXNvbgotCi0KLVRo
cmVhZGluZwotLS0tLS0tLS0tCi0KLUEgV2ViU29ja2V0IGhhbmRsZXIgbXVzdCBiZSB0aHJlYWQt
c2FmZSBpZiB0aGUgc2VydmVyIChBcGFjaGUgb3IKLXN0YW5kYWxvbmUucHkpIGlzIGNvbmZpZ3Vy
ZWQgdG8gdXNlIHRocmVhZHMuCi0KLQotQ29uZmlndXJpbmcgV2ViU29ja2V0IEV4dGVuc2lvbiBQ
cm9jZXNzb3JzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQot
U2VlIGV4dGVuc2lvbnMucHkgZm9yIHN1cHBvcnRlZCBXZWJTb2NrZXQgZXh0ZW5zaW9ucy4gTm90
ZSB0aGF0IHRoZXkgYXJlCi11bnN0YWJsZSBhbmQgdGhlaXIgQVBJcyBhcmUgc3ViamVjdCB0byBj
aGFuZ2Ugc3Vic3RhbnRpYWxseS4KLQotQSByZXF1ZXN0IG9iamVjdCBoYXMgdGhlc2UgZXh0ZW5z
aW9uIHByb2Nlc3NpbmcgcmVsYXRlZCBhdHRyaWJ1dGVzLgotCi0tIHdzX3JlcXVlc3RlZF9leHRl
bnNpb25zOgotCi0gIEEgbGlzdCBvZiBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyIGluc3RhbmNl
cyByZXByZXNlbnRpbmcgZXh0ZW5zaW9uCi0gIHBhcmFtZXRlcnMgcmVjZWl2ZWQgZnJvbSB0aGUg
Y2xpZW50IGluIHRoZSBjbGllbnQncyBvcGVuaW5nIGhhbmRzaGFrZS4KLSAgWW91IHNob3VsZG4n
dCBtb2RpZnkgaXQgbWFudWFsbHkuCi0KLS0gd3NfZXh0ZW5zaW9uczoKLQotICBBIGxpc3Qgb2Yg
Y29tbW9uLkV4dGVuc2lvblBhcmFtZXRlciBpbnN0YW5jZXMgcmVwcmVzZW50aW5nIGV4dGVuc2lv
bgotICBwYXJhbWV0ZXJzIHRvIHNlbmQgYmFjayB0byB0aGUgY2xpZW50IGluIHRoZSBzZXJ2ZXIn
cyBvcGVuaW5nIGhhbmRzaGFrZS4KLSAgWW91IHNob3VsZG4ndCB0b3VjaCBpdCBkaXJlY3RseS4g
SW5zdGVhZCwgY2FsbCBtZXRob2RzIG9uIGV4dGVuc2lvbgotICBwcm9jZXNzb3JzLgotCi0tIHdz
X2V4dGVuc2lvbl9wcm9jZXNzb3JzOgotCi0gIEEgbGlzdCBvZiBsb2FkZWQgZXh0ZW5zaW9uIHBy
b2Nlc3NvcnMuIEZpbmQgdGhlIHByb2Nlc3NvciBmb3IgdGhlCi0gIGV4dGVuc2lvbiB5b3Ugd2Fu
dCB0byBjb25maWd1cmUgZnJvbSBpdCwgYW5kIGNhbGwgaXRzIG1ldGhvZHMuCi0iIiIKLQotCi0j
IHZpOnN0cz00IHN3PTQgZXQgdHc9NzIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0
L19zdHJlYW1fYmFzZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L19zdHJlYW1fYmFzZS5weQpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjFhMTI1NGFlNmQwZTM2ZmI1ZTk3OTgxMjgz
YzU3YjE1ZGY2ZjNlYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9fc3RyZWFtX2Jhc2UucHkKKysrIC9kZXYvbnVsbApA
QCAtMSwxODEgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KLSMgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0Ogot
IwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiQmFzZSBzdHJlYW0gY2xh
c3MuCi0iIiIKLQotCi0jIE5vdGU6IHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZS9yZWFkIGFyZSB1
c2VkIGluIHRoaXMgbW9kdWxlLCBldmVuIHRob3VnaAotIyBtb2RfcHl0aG9uIGRvY3VtZW50IHNh
eXMgdGhhdCB0aGV5IHNob3VsZCBiZSB1c2VkIG9ubHkgaW4gY29ubmVjdGlvbgotIyBoYW5kbGVy
cy4gVW5mb3J0dW5hdGVseSwgd2UgaGF2ZSBubyBvdGhlciBvcHRpb25zLiBGb3IgZXhhbXBsZSwK
LSMgcmVxdWVzdC53cml0ZS9yZWFkIGFyZSBub3Qgc3VpdGFibGUgYmVjYXVzZSB0aGV5IGRvbid0
IGFsbG93IGRpcmVjdCByYXcgYnl0ZXMKLSMgd3JpdGluZy9yZWFkaW5nLgotCi0KLWltcG9ydCBz
b2NrZXQKLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHV0aWwKLQotCi0jIEV4Y2VwdGlv
bnMKLQotCi1jbGFzcyBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbihFeGNlcHRpb24pOgot
ICAgICIiIlRoaXMgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkIHdoZW4gYSBjb25uZWN0aW9uIGlz
IHRlcm1pbmF0ZWQKLSAgICB1bmV4cGVjdGVkbHkuCi0gICAgIiIiCi0KLSAgICBwYXNzCi0KLQot
Y2xhc3MgSW52YWxpZEZyYW1lRXhjZXB0aW9uKENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9u
KToKLSAgICAiIiJUaGlzIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZCB3aGVuIHdlIHJlY2VpdmVk
IGFuIGludmFsaWQgZnJhbWUgd2UKLSAgICBjYW5ub3QgcGFyc2UuCi0gICAgIiIiCi0KLSAgICBw
YXNzCi0KLQotY2xhc3MgQmFkT3BlcmF0aW9uRXhjZXB0aW9uKEV4Y2VwdGlvbik6Ci0gICAgIiIi
VGhpcyBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQgd2hlbiBzZW5kX21lc3NhZ2UoKSBpcyBjYWxs
ZWQgb24KLSAgICBzZXJ2ZXItdGVybWluYXRlZCBjb25uZWN0aW9uIG9yIHJlY2VpdmVfbWVzc2Fn
ZSgpIGlzIGNhbGxlZCBvbgotICAgIGNsaWVudC10ZXJtaW5hdGVkIGNvbm5lY3Rpb24uCi0gICAg
IiIiCi0KLSAgICBwYXNzCi0KLQotY2xhc3MgVW5zdXBwb3J0ZWRGcmFtZUV4Y2VwdGlvbihFeGNl
cHRpb24pOgotICAgICIiIlRoaXMgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkIHdoZW4gd2UgcmVj
ZWl2ZSBhIGZyYW1lIHdpdGggZmxhZywgb3Bjb2RlCi0gICAgd2UgY2Fubm90IGhhbmRsZS4gSGFu
ZGxlcnMgY2FuIGp1c3QgY2F0Y2ggYW5kIGlnbm9yZSB0aGlzIGV4Y2VwdGlvbiBhbmQKLSAgICBj
YWxsIHJlY2VpdmVfbWVzc2FnZSgpIGFnYWluIHRvIGNvbnRpbnVlIHByb2Nlc3NpbmcgdGhlIG5l
eHQgZnJhbWUuCi0gICAgIiIiCi0KLSAgICBwYXNzCi0KLQotY2xhc3MgSW52YWxpZFVURjhFeGNl
cHRpb24oRXhjZXB0aW9uKToKLSAgICAiIiJUaGlzIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZCB3
aGVuIHdlIHJlY2VpdmUgYSB0ZXh0IGZyYW1lIHdoaWNoCi0gICAgY29udGFpbnMgaW52YWxpZCBV
VEYtOCBzdHJpbmdzLgotICAgICIiIgotCi0gICAgcGFzcwotCi0KLWNsYXNzIFN0cmVhbUJhc2Uo
b2JqZWN0KToKLSAgICAiIiJCYXNlIHN0cmVhbSBjbGFzcy4iIiIKLQotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCByZXF1ZXN0KToKLSAgICAgICAgIiIiQ29uc3RydWN0IGFuIGluc3RhbmNlLgotCi0g
ICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICByZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3QuCi0g
ICAgICAgICIiIgotCi0gICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dl
cihzZWxmKQotCi0gICAgICAgIHNlbGYuX3JlcXVlc3QgPSByZXF1ZXN0Ci0KLSAgICBkZWYgX3Jl
YWQoc2VsZiwgbGVuZ3RoKToKLSAgICAgICAgIiIiUmVhZHMgbGVuZ3RoIGJ5dGVzIGZyb20gY29u
bmVjdGlvbi4gSW4gY2FzZSB3ZSBjYXRjaCBhbnkgZXhjZXB0aW9uLAotICAgICAgICBwcmVwZW5k
cyByZW1vdGUgYWRkcmVzcyB0byB0aGUgZXhjZXB0aW9uIG1lc3NhZ2UgYW5kIHJhaXNlIGFnYWlu
LgotCi0gICAgICAgIFJhaXNlczoKLSAgICAgICAgICAgIENvbm5lY3Rpb25UZXJtaW5hdGVkRXhj
ZXB0aW9uOiB3aGVuIHJlYWQgcmV0dXJucyBlbXB0eSBzdHJpbmcuCi0gICAgICAgICIiIgotCi0g
ICAgICAgIHRyeToKLSAgICAgICAgICAgIHJlYWRfYnl0ZXMgPSBzZWxmLl9yZXF1ZXN0LmNvbm5l
Y3Rpb24ucmVhZChsZW5ndGgpCi0gICAgICAgICAgICBpZiBub3QgcmVhZF9ieXRlczoKLSAgICAg
ICAgICAgICAgICByYWlzZSBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbigKLSAgICAgICAg
ICAgICAgICAgICAgJ1JlY2VpdmluZyAlZCBieXRlIGZhaWxlZC4gUGVlciAoJXIpIGNsb3NlZCBj
b25uZWN0aW9uJyAlCi0gICAgICAgICAgICAgICAgICAgIChsZW5ndGgsIChzZWxmLl9yZXF1ZXN0
LmNvbm5lY3Rpb24ucmVtb3RlX2FkZHIsKSkpCi0gICAgICAgICAgICByZXR1cm4gcmVhZF9ieXRl
cwotICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yIGFzIGU6Ci0gICAgICAgICAgICAjIENhdGNo
IGEgc29ja2V0LmVycm9yLiBCZWNhdXNlIGl0J3Mgbm90IGEgY2hpbGQgY2xhc3Mgb2YgdGhlCi0g
ICAgICAgICAgICAjIElPRXJyb3IgcHJpb3IgdG8gUHl0aG9uIDIuNiwgd2UgY2Fubm90IG9taXQg
dGhpcyBleGNlcHQgY2xhdXNlLgotICAgICAgICAgICAgIyBVc2UgJXMgcmF0aGVyIHRoYW4gJXIg
Zm9yIHRoZSBleGNlcHRpb24gdG8gdXNlIGh1bWFuIGZyaWVuZGx5Ci0gICAgICAgICAgICAjIGZv
cm1hdC4KLSAgICAgICAgICAgIHJhaXNlIENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uKAot
ICAgICAgICAgICAgICAgICdSZWNlaXZpbmcgJWQgYnl0ZSBmYWlsZWQuIHNvY2tldC5lcnJvciAo
JXMpIG9jY3VycmVkJyAlCi0gICAgICAgICAgICAgICAgKGxlbmd0aCwgZSkpCi0gICAgICAgIGV4
Y2VwdCBJT0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICAjIEFsc28gY2F0Y2ggYW4gSU9FcnJvciBi
ZWNhdXNlIG1vZF9weXRob24gdGhyb3dzIGl0LgotICAgICAgICAgICAgcmFpc2UgQ29ubmVjdGlv
blRlcm1pbmF0ZWRFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ1JlY2VpdmluZyAlZCBieXRl
IGZhaWxlZC4gSU9FcnJvciAoJXMpIG9jY3VycmVkJyAlCi0gICAgICAgICAgICAgICAgKGxlbmd0
aCwgZSkpCi0KLSAgICBkZWYgX3dyaXRlKHNlbGYsIGJ5dGVzX3RvX3dyaXRlKToKLSAgICAgICAg
IiIiV3JpdGVzIGdpdmVuIGJ5dGVzIHRvIGNvbm5lY3Rpb24uIEluIGNhc2Ugd2UgY2F0Y2ggYW55
IGV4Y2VwdGlvbiwKLSAgICAgICAgcHJlcGVuZHMgcmVtb3RlIGFkZHJlc3MgdG8gdGhlIGV4Y2Vw
dGlvbiBtZXNzYWdlIGFuZCByYWlzZSBhZ2Fpbi4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgdHJ5
OgotICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKGJ5dGVzX3RvX3dy
aXRlKQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICB1dGlsLnBy
ZXBlbmRfbWVzc2FnZV90b19leGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICAgICdGYWlsZWQg
dG8gc2VuZCBtZXNzYWdlIHRvICVyOiAnICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
c2VsZi5fcmVxdWVzdC5jb25uZWN0aW9uLnJlbW90ZV9hZGRyLCksCi0gICAgICAgICAgICAgICAg
ICAgIGUpCi0gICAgICAgICAgICByYWlzZQotCi0gICAgZGVmIHJlY2VpdmVfYnl0ZXMoc2VsZiwg
bGVuZ3RoKToKLSAgICAgICAgIiIiUmVjZWl2ZXMgbXVsdGlwbGUgYnl0ZXMuIFJldHJpZXMgcmVh
ZCB3aGVuIHdlIGNvdWxkbid0IHJlY2VpdmUgdGhlCi0gICAgICAgIHNwZWNpZmllZCBhbW91bnQu
Ci0KLSAgICAgICAgUmFpc2VzOgotICAgICAgICAgICAgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNl
cHRpb246IHdoZW4gcmVhZCByZXR1cm5zIGVtcHR5IHN0cmluZy4KLSAgICAgICAgIiIiCi0KLSAg
ICAgICAgcmVhZF9ieXRlcyA9IFtdCi0gICAgICAgIHdoaWxlIGxlbmd0aCA+IDA6Ci0gICAgICAg
ICAgICBuZXdfcmVhZF9ieXRlcyA9IHNlbGYuX3JlYWQobGVuZ3RoKQotICAgICAgICAgICAgcmVh
ZF9ieXRlcy5hcHBlbmQobmV3X3JlYWRfYnl0ZXMpCi0gICAgICAgICAgICBsZW5ndGggLT0gbGVu
KG5ld19yZWFkX2J5dGVzKQotICAgICAgICByZXR1cm4gJycuam9pbihyZWFkX2J5dGVzKQotCi0g
ICAgZGVmIF9yZWFkX3VudGlsKHNlbGYsIGRlbGltX2NoYXIpOgotICAgICAgICAiIiJSZWFkcyBi
eXRlcyB1bnRpbCB3ZSBlbmNvdW50ZXIgZGVsaW1fY2hhci4gVGhlIHJlc3VsdCB3aWxsIG5vdAot
ICAgICAgICBjb250YWluIGRlbGltX2NoYXIuCi0KLSAgICAgICAgUmFpc2VzOgotICAgICAgICAg
ICAgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb246IHdoZW4gcmVhZCByZXR1cm5zIGVtcHR5
IHN0cmluZy4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgcmVhZF9ieXRlcyA9IFtdCi0gICAgICAg
IHdoaWxlIFRydWU6Ci0gICAgICAgICAgICBjaCA9IHNlbGYuX3JlYWQoMSkKLSAgICAgICAgICAg
IGlmIGNoID09IGRlbGltX2NoYXI6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAg
IHJlYWRfYnl0ZXMuYXBwZW5kKGNoKQotICAgICAgICByZXR1cm4gJycuam9pbihyZWFkX2J5dGVz
KQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2Nr
ZXQvX3N0cmVhbV9oaXhpZTc1LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvX3N0cmVhbV9oaXhp
ZTc1LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NGNmNWIzMWJhMGZjM2MzYTM0
NzdkZTgyMjk3YTBjMjZkYTFjNDhjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L19zdHJlYW1faGl4aWU3NS5weQorKysg
L2Rldi9udWxsCkBAIC0xLDIyOSArMCwwIEBACi0jIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5j
LgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0j
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0j
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJUaGlz
IGZpbGUgcHJvdmlkZXMgYSBjbGFzcyBmb3IgcGFyc2luZy9idWlsZGluZyBmcmFtZXMgb2YgdGhl
IFdlYlNvY2tldAotcHJvdG9jb2wgdmVyc2lvbiBIeUJpIDAwIGFuZCBIaXhpZSA3NS4KLQotU3Bl
Y2lmaWNhdGlvbjoKLS0gSHlCaSAwMCBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1p
ZXRmLWh5YmktdGhld2Vic29ja2V0cHJvdG9jb2wtMDAKLS0gSGl4aWUgNzUgaHR0cDovL3Rvb2xz
LmlldGYub3JnL2h0bWwvZHJhZnQtaGl4aWUtdGhld2Vic29ja2V0cHJvdG9jb2wtNzUKLSIiIgot
Ci0KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KLWZyb20gbW9kX3B5d2Vic29j
a2V0Ll9zdHJlYW1fYmFzZSBpbXBvcnQgQmFkT3BlcmF0aW9uRXhjZXB0aW9uCi1mcm9tIG1vZF9w
eXdlYnNvY2tldC5fc3RyZWFtX2Jhc2UgaW1wb3J0IENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0
aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2Jhc2UgaW1wb3J0IEludmFsaWRGcmFt
ZUV4Y2VwdGlvbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9iYXNlIGltcG9ydCBTdHJl
YW1CYXNlCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2Jhc2UgaW1wb3J0IFVuc3VwcG9y
dGVkRnJhbWVFeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCi0KLQot
Y2xhc3MgU3RyZWFtSGl4aWU3NShTdHJlYW1CYXNlKToKLSAgICAiIiJBIGNsYXNzIGZvciBwYXJz
aW5nL2J1aWxkaW5nIGZyYW1lcyBvZiB0aGUgV2ViU29ja2V0IHByb3RvY29sIHZlcnNpb24KLSAg
ICBIeUJpIDAwIGFuZCBIaXhpZSA3NS4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxm
LCByZXF1ZXN0LCBlbmFibGVfY2xvc2luZ19oYW5kc2hha2U9RmFsc2UpOgotICAgICAgICAiIiJD
b25zdHJ1Y3QgYW4gaW5zdGFuY2UuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIHJlcXVl
c3Q6IG1vZF9weXRob24gcmVxdWVzdC4KLSAgICAgICAgICAgIGVuYWJsZV9jbG9zaW5nX2hhbmRz
aGFrZTogdG8gbGV0IFN0cmVhbUhpeGllNzUgcGVyZm9ybSBjbG9zaW5nCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRzaGFrZSBhcyBzcGVjaWZpZWQgaW4gSHlCaSAw
MCwgc2V0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgb3B0aW9u
IHRvIFRydWUuCi0gICAgICAgICIiIgotCi0gICAgICAgIFN0cmVhbUJhc2UuX19pbml0X18oc2Vs
ZiwgcmVxdWVzdCkKLQotICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dn
ZXIoc2VsZikKLQotICAgICAgICBzZWxmLl9lbmFibGVfY2xvc2luZ19oYW5kc2hha2UgPSBlbmFi
bGVfY2xvc2luZ19oYW5kc2hha2UKLQotICAgICAgICBzZWxmLl9yZXF1ZXN0LmNsaWVudF90ZXJt
aW5hdGVkID0gRmFsc2UKLSAgICAgICAgc2VsZi5fcmVxdWVzdC5zZXJ2ZXJfdGVybWluYXRlZCA9
IEZhbHNlCi0KLSAgICBkZWYgc2VuZF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UsIGVuZD1UcnVlLCBi
aW5hcnk9RmFsc2UpOgotICAgICAgICAiIiJTZW5kIG1lc3NhZ2UuCi0KLSAgICAgICAgQXJnczoK
LSAgICAgICAgICAgIG1lc3NhZ2U6IHVuaWNvZGUgc3RyaW5nIHRvIHNlbmQuCi0gICAgICAgICAg
ICBiaW5hcnk6IG5vdCB1c2VkIGluIGhpeGllNzUuCi0KLSAgICAgICAgUmFpc2VzOgotICAgICAg
ICAgICAgQmFkT3BlcmF0aW9uRXhjZXB0aW9uOiB3aGVuIGNhbGxlZCBvbiBhIHNlcnZlci10ZXJt
aW5hdGVkCi0gICAgICAgICAgICAgICAgY29ubmVjdGlvbi4KLSAgICAgICAgIiIiCi0KLSAgICAg
ICAgaWYgbm90IGVuZDoKLSAgICAgICAgICAgIHJhaXNlIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbigK
LSAgICAgICAgICAgICAgICAnU3RyZWFtSGl4aWU3NSBkb2VzblwndCBzdXBwb3J0IHNlbmRfbWVz
c2FnZSB3aXRoIGVuZD1GYWxzZScpCi0KLSAgICAgICAgaWYgYmluYXJ5OgotICAgICAgICAgICAg
cmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdTdHJlYW1IaXhp
ZTc1IGRvZXNuXCd0IHN1cHBvcnQgc2VuZF9tZXNzYWdlIHdpdGggYmluYXJ5PVRydWUnKQotCi0g
ICAgICAgIGlmIHNlbGYuX3JlcXVlc3Quc2VydmVyX3Rlcm1pbmF0ZWQ6Ci0gICAgICAgICAgICBy
YWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ1JlcXVlc3RlZCBz
ZW5kX21lc3NhZ2UgYWZ0ZXIgc2VuZGluZyBvdXQgYSBjbG9zaW5nIGhhbmRzaGFrZScpCi0KLSAg
ICAgICAgc2VsZi5fd3JpdGUoJycuam9pbihbJ1x4MDAnLCBtZXNzYWdlLmVuY29kZSgndXRmLTgn
KSwgJ1x4ZmYnXSkpCi0KLSAgICBkZWYgX3JlYWRfcGF5bG9hZF9sZW5ndGhfaGl4aWU3NShzZWxm
KToKLSAgICAgICAgIiIiUmVhZHMgYSBsZW5ndGggaGVhZGVyIGluIGEgSGl4aWU3NSB2ZXJzaW9u
IGZyYW1lIHdpdGggbGVuZ3RoLgotCi0gICAgICAgIFJhaXNlczoKLSAgICAgICAgICAgIENvbm5l
Y3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uOiB3aGVuIHJlYWQgcmV0dXJucyBlbXB0eSBzdHJpbmcu
Ci0gICAgICAgICIiIgotCi0gICAgICAgIGxlbmd0aCA9IDAKLSAgICAgICAgd2hpbGUgVHJ1ZToK
LSAgICAgICAgICAgIGJfc3RyID0gc2VsZi5fcmVhZCgxKQotICAgICAgICAgICAgYiA9IG9yZChi
X3N0cikKLSAgICAgICAgICAgIGxlbmd0aCA9IGxlbmd0aCAqIDEyOCArIChiICYgMHg3ZikKLSAg
ICAgICAgICAgIGlmIChiICYgMHg4MCkgPT0gMDoKLSAgICAgICAgICAgICAgICBicmVhawotICAg
ICAgICByZXR1cm4gbGVuZ3RoCi0KLSAgICBkZWYgcmVjZWl2ZV9tZXNzYWdlKHNlbGYpOgotICAg
ICAgICAiIiJSZWNlaXZlIGEgV2ViU29ja2V0IGZyYW1lIGFuZCByZXR1cm4gaXRzIHBheWxvYWQg
YW4gdW5pY29kZSBzdHJpbmcuCi0KLSAgICAgICAgUmV0dXJuczoKLSAgICAgICAgICAgIHBheWxv
YWQgdW5pY29kZSBzdHJpbmcgaW4gYSBXZWJTb2NrZXQgZnJhbWUuCi0KLSAgICAgICAgUmFpc2Vz
OgotICAgICAgICAgICAgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb246IHdoZW4gcmVhZCBy
ZXR1cm5zIGVtcHR5Ci0gICAgICAgICAgICAgICAgc3RyaW5nLgotICAgICAgICAgICAgQmFkT3Bl
cmF0aW9uRXhjZXB0aW9uOiB3aGVuIGNhbGxlZCBvbiBhIGNsaWVudC10ZXJtaW5hdGVkCi0gICAg
ICAgICAgICAgICAgY29ubmVjdGlvbi4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgaWYgc2VsZi5f
cmVxdWVzdC5jbGllbnRfdGVybWluYXRlZDoKLSAgICAgICAgICAgIHJhaXNlIEJhZE9wZXJhdGlv
bkV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnUmVxdWVzdGVkIHJlY2VpdmVfbWVzc2FnZSBh
ZnRlciByZWNlaXZpbmcgYSBjbG9zaW5nICcKLSAgICAgICAgICAgICAgICAnaGFuZHNoYWtlJykK
LQotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgIyBSZWFkIDEgYnl0ZS4KLSAgICAg
ICAgICAgICMgbXBfY29ubi5yZWFkIHdpbGwgYmxvY2sgaWYgbm8gYnl0ZXMgYXJlIGF2YWlsYWJs
ZS4KLSAgICAgICAgICAgICMgVGltZW91dCBpcyBjb250cm9sbGVkIGJ5IFRpbWVPdXQgZGlyZWN0
aXZlIG9mIEFwYWNoZS4KLSAgICAgICAgICAgIGZyYW1lX3R5cGVfc3RyID0gc2VsZi5yZWNlaXZl
X2J5dGVzKDEpCi0gICAgICAgICAgICBmcmFtZV90eXBlID0gb3JkKGZyYW1lX3R5cGVfc3RyKQot
ICAgICAgICAgICAgaWYgKGZyYW1lX3R5cGUgJiAweDgwKSA9PSAweDgwOgotICAgICAgICAgICAg
ICAgICMgVGhlIHBheWxvYWQgbGVuZ3RoIGlzIHNwZWNpZmllZCBpbiB0aGUgZnJhbWUuCi0gICAg
ICAgICAgICAgICAgIyBSZWFkIGFuZCBkaXNjYXJkLgotICAgICAgICAgICAgICAgIGxlbmd0aCA9
IHNlbGYuX3JlYWRfcGF5bG9hZF9sZW5ndGhfaGl4aWU3NSgpCi0gICAgICAgICAgICAgICAgaWYg
bGVuZ3RoID4gMDoKLSAgICAgICAgICAgICAgICAgICAgXyA9IHNlbGYucmVjZWl2ZV9ieXRlcyhs
ZW5ndGgpCi0gICAgICAgICAgICAgICAgIyA1LjMgMy4gMTIuIGlmIC90eXBlLyBpcyAweEZGIGFu
ZCAvbGVuZ3RoLyBpcyAwLCB0aGVuIHNldCB0aGUKLSAgICAgICAgICAgICAgICAjIC9jbGllbnQg
dGVybWluYXRlZC8gZmxhZyBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCi0gICAgICAgICAgICAgICAg
aWYgbm90IHNlbGYuX2VuYWJsZV9jbG9zaW5nX2hhbmRzaGFrZToKLSAgICAgICAgICAgICAgICAg
ICAgY29udGludWUKLQotICAgICAgICAgICAgICAgIGlmIGZyYW1lX3R5cGUgPT0gMHhGRiBhbmQg
bGVuZ3RoID09IDA6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3QuY2xpZW50X3Rl
cm1pbmF0ZWQgPSBUcnVlCi0KLSAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC5z
ZXJ2ZXJfdGVybWluYXRlZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5k
ZWJ1ZygKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUmVjZWl2ZWQgYWNrIGZvciBzZXJ2
ZXItaW5pdGlhdGVkIGNsb3NpbmcgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoYW5k
c2hha2UnKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICAg
ICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAgICAgICAgICAgICAn
UmVjZWl2ZWQgY2xpZW50LWluaXRpYXRlZCBjbG9zaW5nIGhhbmRzaGFrZScpCi0KLSAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fc2VuZF9jbG9zaW5nX2hhbmRzaGFrZSgpCi0gICAgICAgICAgICAg
ICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICAgICAgICAgICAgICdTZW50
IGFjayBmb3IgY2xpZW50LWluaXRpYXRlZCBjbG9zaW5nIGhhbmRzaGFrZScpCi0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAg
ICMgVGhlIHBheWxvYWQgaXMgZGVsaW1pdGVkIHdpdGggXHhmZi4KLSAgICAgICAgICAgICAgICBi
eXRlcyA9IHNlbGYuX3JlYWRfdW50aWwoJ1x4ZmYnKQotICAgICAgICAgICAgICAgICMgVGhlIFdl
YlNvY2tldCBwcm90b2NvbCBzZWN0aW9uIDQuNCBzcGVjaWZpZXMgdGhhdCBpbnZhbGlkCi0gICAg
ICAgICAgICAgICAgIyBjaGFyYWN0ZXJzIG11c3QgYmUgcmVwbGFjZWQgd2l0aCBVK2ZmZmQgUkVQ
TEFDRU1FTlQKLSAgICAgICAgICAgICAgICAjIENIQVJBQ1RFUi4KLSAgICAgICAgICAgICAgICBt
ZXNzYWdlID0gYnl0ZXMuZGVjb2RlKCd1dGYtOCcsICdyZXBsYWNlJykKLSAgICAgICAgICAgICAg
ICBpZiBmcmFtZV90eXBlID09IDB4MDA6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBtZXNz
YWdlCi0gICAgICAgICAgICAgICAgIyBEaXNjYXJkIGRhdGEgb2Ygb3RoZXIgdHlwZXMuCi0KLSAg
ICBkZWYgX3NlbmRfY2xvc2luZ19oYW5kc2hha2Uoc2VsZik6Ci0gICAgICAgIGlmIG5vdCBzZWxm
Ll9lbmFibGVfY2xvc2luZ19oYW5kc2hha2U6Ci0gICAgICAgICAgICByYWlzZSBCYWRPcGVyYXRp
b25FeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ0Nsb3NpbmcgaGFuZHNoYWtlIGlzIG5vdCBz
dXBwb3J0ZWQgaW4gSGl4aWUgNzUgcHJvdG9jb2wnKQotCi0gICAgICAgIHNlbGYuX3JlcXVlc3Qu
c2VydmVyX3Rlcm1pbmF0ZWQgPSBUcnVlCi0KLSAgICAgICAgIyA1LjMgdGhlIHNlcnZlciBtYXkg
ZGVjaWRlIHRvIHRlcm1pbmF0ZSB0aGUgV2ViU29ja2V0IGNvbm5lY3Rpb24gYnkKLSAgICAgICAg
IyBydW5uaW5nIHRocm91Z2ggdGhlIGZvbGxvd2luZyBzdGVwczoKLSAgICAgICAgIyAxLiBzZW5k
IGEgMHhGRiBieXRlIGFuZCBhIDB4MDAgYnl0ZSB0byB0aGUgY2xpZW50IHRvIGluZGljYXRlIHRo
ZQotICAgICAgICAjIHN0YXJ0IG9mIHRoZSBjbG9zaW5nIGhhbmRzaGFrZS4KLSAgICAgICAgc2Vs
Zi5fd3JpdGUoJ1x4ZmZceDAwJykKLQotICAgIGRlZiBjbG9zZV9jb25uZWN0aW9uKHNlbGYsIHVu
dXNlZF9jb2RlPScnLCB1bnVzZWRfcmVhc29uPScnKToKLSAgICAgICAgIiIiQ2xvc2VzIGEgV2Vi
U29ja2V0IGNvbm5lY3Rpb24uCi0KLSAgICAgICAgUmFpc2VzOgotICAgICAgICAgICAgQ29ubmVj
dGlvblRlcm1pbmF0ZWRFeGNlcHRpb246IHdoZW4gY2xvc2luZyBoYW5kc2hha2Ugd2FzCi0gICAg
ICAgICAgICAgICAgbm90IHN1Y2Nlc3NmdWxsLgotICAgICAgICAiIiIKLQotICAgICAgICBpZiBz
ZWxmLl9yZXF1ZXN0LnNlcnZlcl90ZXJtaW5hdGVkOgotICAgICAgICAgICAgc2VsZi5fbG9nZ2Vy
LmRlYnVnKAotICAgICAgICAgICAgICAgICdSZXF1ZXN0ZWQgY2xvc2VfY29ubmVjdGlvbiBidXQg
c2VydmVyIGlzIGFscmVhZHkgdGVybWluYXRlZCcpCi0gICAgICAgICAgICByZXR1cm4KLQotICAg
ICAgICBpZiBub3Qgc2VsZi5fZW5hYmxlX2Nsb3NpbmdfaGFuZHNoYWtlOgotICAgICAgICAgICAg
c2VsZi5fcmVxdWVzdC5zZXJ2ZXJfdGVybWluYXRlZCA9IFRydWUKLSAgICAgICAgICAgIHNlbGYu
X2xvZ2dlci5kZWJ1ZygnQ29ubmVjdGlvbiBjbG9zZWQnKQotICAgICAgICAgICAgcmV0dXJuCi0K
LSAgICAgICAgc2VsZi5fc2VuZF9jbG9zaW5nX2hhbmRzaGFrZSgpCi0gICAgICAgIHNlbGYuX2xv
Z2dlci5kZWJ1ZygnU2VudCBzZXJ2ZXItaW5pdGlhdGVkIGNsb3NpbmcgaGFuZHNoYWtlJykKLQot
ICAgICAgICAjIFRPRE8odWthaSk6IDIuIHdhaXQgdW50aWwgdGhlIC9jbGllbnQgdGVybWluYXRl
ZC8gZmxhZyBoYXMgYmVlbiBzZXQsCi0gICAgICAgICMgb3IgdW50aWwgYSBzZXJ2ZXItZGVmaW5l
ZCB0aW1lb3V0IGV4cGlyZXMuCi0gICAgICAgICMKLSAgICAgICAgIyBGb3Igbm93LCB3ZSBleHBl
Y3QgcmVjZWl2aW5nIGNsb3NpbmcgaGFuZHNoYWtlIHJpZ2h0IGFmdGVyIHNlbmRpbmcKLSAgICAg
ICAgIyBvdXQgY2xvc2luZyBoYW5kc2hha2UsIGFuZCBpZiB3ZSBjb3VsZG4ndCByZWNlaXZlIG5v
bi1oYW5kc2hha2UKLSAgICAgICAgIyBmcmFtZSwgd2UgdGFrZSBpdCBhcyBDb25uZWN0aW9uVGVy
bWluYXRlZEV4Y2VwdGlvbi4KLSAgICAgICAgbWVzc2FnZSA9IHNlbGYucmVjZWl2ZV9tZXNzYWdl
KCkKLSAgICAgICAgaWYgbWVzc2FnZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHJhaXNlIENv
bm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdEaWRuXCd0IHJl
Y2VpdmUgdmFsaWQgYWNrIGZvciBjbG9zaW5nIGhhbmRzaGFrZScpCi0gICAgICAgICMgVE9ETzog
My4gY2xvc2UgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uLgotICAgICAgICAjIG5vdGU6IG1vZF9w
eXRob24gQ29ubmVjdGlvbiAobXBfY29ubikgZG9lc24ndCBoYXZlIGNsb3NlIG1ldGhvZC4KLQot
ICAgIGRlZiBzZW5kX3Bpbmcoc2VsZiwgYm9keSk6Ci0gICAgICAgIHJhaXNlIEJhZE9wZXJhdGlv
bkV4Y2VwdGlvbigKLSAgICAgICAgICAgICdTdHJlYW1IaXhpZTc1IGRvZXNuXCd0IHN1cHBvcnQg
c2VuZF9waW5nJykKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9k
X3B5d2Vic29ja2V0L19zdHJlYW1faHliaS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L19zdHJl
YW1faHliaS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzE4ZThmZmEzOTU1ZDVh
ZjVjM2I3YzUxNmJjZmE5ODBlZmU2ZGQ4OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9fc3RyZWFtX2h5YmkucHkKKysr
IC9kZXYvbnVsbApAQCAtMSw4OTQgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIElu
Yy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwot
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
IyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiVGhp
cyBmaWxlIHByb3ZpZGVzIGNsYXNzZXMgYW5kIGhlbHBlciBmdW5jdGlvbnMgZm9yIHBhcnNpbmcv
YnVpbGRpbmcgZnJhbWVzCi1vZiB0aGUgV2ViU29ja2V0IHByb3RvY29sIChSRkMgNjQ1NSkuCi0K
LVNwZWNpZmljYXRpb246Ci1odHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NDU1Ci0iIiIK
LQotCi1mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQotaW1wb3J0IGxvZ2dpbmcKLWltcG9y
dCBvcwotaW1wb3J0IHN0cnVjdAotaW1wb3J0IHRpbWUKLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQg
aW1wb3J0IGNvbW1vbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHV0aWwKLWZyb20gbW9k
X3B5d2Vic29ja2V0Ll9zdHJlYW1fYmFzZSBpbXBvcnQgQmFkT3BlcmF0aW9uRXhjZXB0aW9uCi1m
cm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2Jhc2UgaW1wb3J0IENvbm5lY3Rpb25UZXJtaW5h
dGVkRXhjZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2Jhc2UgaW1wb3J0IElu
dmFsaWRGcmFtZUV4Y2VwdGlvbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9iYXNlIGlt
cG9ydCBJbnZhbGlkVVRGOEV4Y2VwdGlvbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9i
YXNlIGltcG9ydCBTdHJlYW1CYXNlCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2Jhc2Ug
aW1wb3J0IFVuc3VwcG9ydGVkRnJhbWVFeGNlcHRpb24KLQotCi1fTk9PUF9NQVNLRVIgPSB1dGls
Lk5vb3BNYXNrZXIoKQotCi0KLWNsYXNzIEZyYW1lKG9iamVjdCk6Ci0KLSAgICBkZWYgX19pbml0
X18oc2VsZiwgZmluPTEsIHJzdjE9MCwgcnN2Mj0wLCByc3YzPTAsCi0gICAgICAgICAgICAgICAg
IG9wY29kZT1Ob25lLCBwYXlsb2FkPScnKToKLSAgICAgICAgc2VsZi5maW4gPSBmaW4KLSAgICAg
ICAgc2VsZi5yc3YxID0gcnN2MQotICAgICAgICBzZWxmLnJzdjIgPSByc3YyCi0gICAgICAgIHNl
bGYucnN2MyA9IHJzdjMKLSAgICAgICAgc2VsZi5vcGNvZGUgPSBvcGNvZGUKLSAgICAgICAgc2Vs
Zi5wYXlsb2FkID0gcGF5bG9hZAotCi0KLSMgSGVscGVyIGZ1bmN0aW9ucyBtYWRlIHB1YmxpYyB0
byBiZSB1c2VkIGZvciB3cml0aW5nIHVuaXR0ZXN0cyBmb3IgV2ViU29ja2V0Ci0jIGNsaWVudHMu
Ci0KLQotZGVmIGNyZWF0ZV9sZW5ndGhfaGVhZGVyKGxlbmd0aCwgbWFzayk6Ci0gICAgIiIiQ3Jl
YXRlcyBhIGxlbmd0aCBoZWFkZXIuCi0KLSAgICBBcmdzOgotICAgICAgICBsZW5ndGg6IEZyYW1l
IGxlbmd0aC4gTXVzdCBiZSBsZXNzIHRoYW4gMl42My4KLSAgICAgICAgbWFzazogTWFzayBiaXQu
IE11c3QgYmUgYm9vbGVhbi4KLQotICAgIFJhaXNlczoKLSAgICAgICAgVmFsdWVFcnJvcjogd2hl
biBiYWQgZGF0YSBpcyBnaXZlbi4KLSAgICAiIiIKLQotICAgIGlmIG1hc2s6Ci0gICAgICAgIG1h
c2tfYml0ID0gMSA8PCA3Ci0gICAgZWxzZToKLSAgICAgICAgbWFza19iaXQgPSAwCi0KLSAgICBp
ZiBsZW5ndGggPCAwOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdsZW5ndGggbXVzdCBiZSBu
b24gbmVnYXRpdmUgaW50ZWdlcicpCi0gICAgZWxpZiBsZW5ndGggPD0gMTI1OgotICAgICAgICBy
ZXR1cm4gY2hyKG1hc2tfYml0IHwgbGVuZ3RoKQotICAgIGVsaWYgbGVuZ3RoIDwgKDEgPDwgMTYp
OgotICAgICAgICByZXR1cm4gY2hyKG1hc2tfYml0IHwgMTI2KSArIHN0cnVjdC5wYWNrKCchSCcs
IGxlbmd0aCkKLSAgICBlbGlmIGxlbmd0aCA8ICgxIDw8IDYzKToKLSAgICAgICAgcmV0dXJuIGNo
cihtYXNrX2JpdCB8IDEyNykgKyBzdHJ1Y3QucGFjaygnIVEnLCBsZW5ndGgpCi0gICAgZWxzZToK
LSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignUGF5bG9hZCBpcyB0b28gYmlnIGZvciBvbmUgZnJh
bWUnKQotCi0KLWRlZiBjcmVhdGVfaGVhZGVyKG9wY29kZSwgcGF5bG9hZF9sZW5ndGgsIGZpbiwg
cnN2MSwgcnN2MiwgcnN2MywgbWFzayk6Ci0gICAgIiIiQ3JlYXRlcyBhIGZyYW1lIGhlYWRlci4K
LQotICAgIFJhaXNlczoKLSAgICAgICAgRXhjZXB0aW9uOiB3aGVuIGJhZCBkYXRhIGlzIGdpdmVu
LgotICAgICIiIgotCi0gICAgaWYgb3Bjb2RlIDwgMCBvciAweGYgPCBvcGNvZGU6Ci0gICAgICAg
IHJhaXNlIFZhbHVlRXJyb3IoJ09wY29kZSBvdXQgb2YgcmFuZ2UnKQotCi0gICAgaWYgcGF5bG9h
ZF9sZW5ndGggPCAwIG9yICgxIDw8IDYzKSA8PSBwYXlsb2FkX2xlbmd0aDoKLSAgICAgICAgcmFp
c2UgVmFsdWVFcnJvcigncGF5bG9hZF9sZW5ndGggb3V0IG9mIHJhbmdlJykKLQotICAgIGlmIChm
aW4gfCByc3YxIHwgcnN2MiB8IHJzdjMpICYgfjE6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3Io
J0ZJTiBiaXQgYW5kIFJlc2VydmVkIGJpdCBwYXJhbWV0ZXIgbXVzdCBiZSAwIG9yIDEnKQotCi0g
ICAgaGVhZGVyID0gJycKLQotICAgIGZpcnN0X2J5dGUgPSAoKGZpbiA8PCA3KQotICAgICAgICAg
ICAgICAgICAgfCAocnN2MSA8PCA2KSB8IChyc3YyIDw8IDUpIHwgKHJzdjMgPDwgNCkKLSAgICAg
ICAgICAgICAgICAgIHwgb3Bjb2RlKQotICAgIGhlYWRlciArPSBjaHIoZmlyc3RfYnl0ZSkKLSAg
ICBoZWFkZXIgKz0gY3JlYXRlX2xlbmd0aF9oZWFkZXIocGF5bG9hZF9sZW5ndGgsIG1hc2spCi0K
LSAgICByZXR1cm4gaGVhZGVyCi0KLQotZGVmIF9idWlsZF9mcmFtZShoZWFkZXIsIGJvZHksIG1h
c2spOgotICAgIGlmIG5vdCBtYXNrOgotICAgICAgICByZXR1cm4gaGVhZGVyICsgYm9keQotCi0g
ICAgbWFza2luZ19ub25jZSA9IG9zLnVyYW5kb20oNCkKLSAgICBtYXNrZXIgPSB1dGlsLlJlcGVh
dGVkWG9yTWFza2VyKG1hc2tpbmdfbm9uY2UpCi0KLSAgICByZXR1cm4gaGVhZGVyICsgbWFza2lu
Z19ub25jZSArIG1hc2tlci5tYXNrKGJvZHkpCi0KLQotZGVmIF9maWx0ZXJfYW5kX2Zvcm1hdF9m
cmFtZV9vYmplY3QoZnJhbWUsIG1hc2ssIGZyYW1lX2ZpbHRlcnMpOgotICAgIGZvciBmcmFtZV9m
aWx0ZXIgaW4gZnJhbWVfZmlsdGVyczoKLSAgICAgICAgZnJhbWVfZmlsdGVyLmZpbHRlcihmcmFt
ZSkKLQotICAgIGhlYWRlciA9IGNyZWF0ZV9oZWFkZXIoCi0gICAgICAgIGZyYW1lLm9wY29kZSwg
bGVuKGZyYW1lLnBheWxvYWQpLCBmcmFtZS5maW4sCi0gICAgICAgIGZyYW1lLnJzdjEsIGZyYW1l
LnJzdjIsIGZyYW1lLnJzdjMsIG1hc2spCi0gICAgcmV0dXJuIF9idWlsZF9mcmFtZShoZWFkZXIs
IGZyYW1lLnBheWxvYWQsIG1hc2spCi0KLQotZGVmIGNyZWF0ZV9iaW5hcnlfZnJhbWUoCi0gICAg
bWVzc2FnZSwgb3Bjb2RlPWNvbW1vbi5PUENPREVfQklOQVJZLCBmaW49MSwgbWFzaz1GYWxzZSwg
ZnJhbWVfZmlsdGVycz1bXSk6Ci0gICAgIiIiQ3JlYXRlcyBhIHNpbXBsZSBiaW5hcnkgZnJhbWUg
d2l0aCBubyBleHRlbnNpb24sIHJlc2VydmVkIGJpdC4iIiIKLQotICAgIGZyYW1lID0gRnJhbWUo
ZmluPWZpbiwgb3Bjb2RlPW9wY29kZSwgcGF5bG9hZD1tZXNzYWdlKQotICAgIHJldHVybiBfZmls
dGVyX2FuZF9mb3JtYXRfZnJhbWVfb2JqZWN0KGZyYW1lLCBtYXNrLCBmcmFtZV9maWx0ZXJzKQot
Ci0KLWRlZiBjcmVhdGVfdGV4dF9mcmFtZSgKLSAgICBtZXNzYWdlLCBvcGNvZGU9Y29tbW9uLk9Q
Q09ERV9URVhULCBmaW49MSwgbWFzaz1GYWxzZSwgZnJhbWVfZmlsdGVycz1bXSk6Ci0gICAgIiIi
Q3JlYXRlcyBhIHNpbXBsZSB0ZXh0IGZyYW1lIHdpdGggbm8gZXh0ZW5zaW9uLCByZXNlcnZlZCBi
aXQuIiIiCi0KLSAgICBlbmNvZGVkX21lc3NhZ2UgPSBtZXNzYWdlLmVuY29kZSgndXRmLTgnKQot
ICAgIHJldHVybiBjcmVhdGVfYmluYXJ5X2ZyYW1lKGVuY29kZWRfbWVzc2FnZSwgb3Bjb2RlLCBm
aW4sIG1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVfZmlsdGVycykK
LQotCi1kZWYgcGFyc2VfZnJhbWUocmVjZWl2ZV9ieXRlcywgbG9nZ2VyPU5vbmUsCi0gICAgICAg
ICAgICAgICAgd3NfdmVyc2lvbj1jb21tb24uVkVSU0lPTl9IWUJJX0xBVEVTVCwKLSAgICAgICAg
ICAgICAgICB1bm1hc2tfcmVjZWl2ZT1UcnVlKToKLSAgICAiIiJQYXJzZXMgYSBmcmFtZS4gUmV0
dXJucyBhIHR1cGxlIGNvbnRhaW5pbmcgZWFjaCBoZWFkZXIgZmllbGQgYW5kCi0gICAgcGF5bG9h
ZC4KLQotICAgIEFyZ3M6Ci0gICAgICAgIHJlY2VpdmVfYnl0ZXM6IGEgZnVuY3Rpb24gdGhhdCBy
ZWFkcyBmcmFtZSBkYXRhIGZyb20gYSBzdHJlYW0gb3IKLSAgICAgICAgICAgIHNvbWV0aGluZyBz
aW1pbGFyLiBUaGUgZnVuY3Rpb24gdGFrZXMgbGVuZ3RoIG9mIHRoZSBieXRlcyB0byBiZQotICAg
ICAgICAgICAgcmVhZC4gVGhlIGZ1bmN0aW9uIG11c3QgcmFpc2UgQ29ubmVjdGlvblRlcm1pbmF0
ZWRFeGNlcHRpb24gaWYKLSAgICAgICAgICAgIHRoZXJlIGlzIG5vdCBlbm91Z2ggZGF0YSB0byBi
ZSByZWFkLgotICAgICAgICBsb2dnZXI6IGEgbG9nZ2luZyBvYmplY3QuCi0gICAgICAgIHdzX3Zl
cnNpb246IHRoZSB2ZXJzaW9uIG9mIFdlYlNvY2tldCBwcm90b2NvbC4KLSAgICAgICAgdW5tYXNr
X3JlY2VpdmU6IHVubWFzayByZWNlaXZlZCBmcmFtZXMuIFdoZW4gcmVjZWl2ZWQgdW5tYXNrZWQK
LSAgICAgICAgICAgIGZyYW1lLCByYWlzZXMgSW52YWxpZEZyYW1lRXhjZXB0aW9uLgotCi0gICAg
UmFpc2VzOgotICAgICAgICBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbjogd2hlbiByZWNl
aXZlX2J5dGVzIHJhaXNlcyBpdC4KLSAgICAgICAgSW52YWxpZEZyYW1lRXhjZXB0aW9uOiB3aGVu
IHRoZSBmcmFtZSBjb250YWlucyBpbnZhbGlkIGRhdGEuCi0gICAgIiIiCi0KLSAgICBpZiBub3Qg
bG9nZ2VyOgotICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigpCi0KLSAgICBsb2dn
ZXIubG9nKGNvbW1vbi5MT0dMRVZFTF9GSU5FLCAnUmVjZWl2ZSB0aGUgZmlyc3QgMiBvY3RldHMg
b2YgYSBmcmFtZScpCi0KLSAgICByZWNlaXZlZCA9IHJlY2VpdmVfYnl0ZXMoMikKLQotICAgIGZp
cnN0X2J5dGUgPSBvcmQocmVjZWl2ZWRbMF0pCi0gICAgZmluID0gKGZpcnN0X2J5dGUgPj4gNykg
JiAxCi0gICAgcnN2MSA9IChmaXJzdF9ieXRlID4+IDYpICYgMQotICAgIHJzdjIgPSAoZmlyc3Rf
Ynl0ZSA+PiA1KSAmIDEKLSAgICByc3YzID0gKGZpcnN0X2J5dGUgPj4gNCkgJiAxCi0gICAgb3Bj
b2RlID0gZmlyc3RfYnl0ZSAmIDB4ZgotCi0gICAgc2Vjb25kX2J5dGUgPSBvcmQocmVjZWl2ZWRb
MV0pCi0gICAgbWFzayA9IChzZWNvbmRfYnl0ZSA+PiA3KSAmIDEKLSAgICBwYXlsb2FkX2xlbmd0
aCA9IHNlY29uZF9ieXRlICYgMHg3ZgotCi0gICAgbG9nZ2VyLmxvZyhjb21tb24uTE9HTEVWRUxf
RklORSwKLSAgICAgICAgICAgICAgICdGSU49JXMsIFJTVjE9JXMsIFJTVjI9JXMsIFJTVjM9JXMs
IG9wY29kZT0lcywgJwotICAgICAgICAgICAgICAgJ01hc2s9JXMsIFBheWxvYWRfbGVuZ3RoPSVz
JywKLSAgICAgICAgICAgICAgIGZpbiwgcnN2MSwgcnN2MiwgcnN2Mywgb3Bjb2RlLCBtYXNrLCBw
YXlsb2FkX2xlbmd0aCkKLQotICAgIGlmIChtYXNrID09IDEpICE9IHVubWFza19yZWNlaXZlOgot
ICAgICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oCi0gICAgICAgICAgICAnTWFzayBi
aXQgb24gdGhlIHJlY2VpdmVkIGZyYW1lIGRpZFwnbnQgbWF0Y2ggbWFza2luZyAnCi0gICAgICAg
ICAgICAnY29uZmlndXJhdGlvbiBmb3IgcmVjZWl2ZWQgZnJhbWVzJykKLQotICAgICMgVGhlIEh5
QmkgYW5kIGxhdGVyIHNwZWNzIGRpc2FsbG93IHB1dHRpbmcgYSB2YWx1ZSBpbiAweDAtMHhGRkZG
Ci0gICAgIyBpbnRvIHRoZSA4LW9jdGV0IGV4dGVuZGVkIHBheWxvYWQgbGVuZ3RoIGZpZWxkIChv
ciAweDAtMHhGRCBpbgotICAgICMgMi1vY3RldCBmaWVsZCkuCi0gICAgdmFsaWRfbGVuZ3RoX2Vu
Y29kaW5nID0gVHJ1ZQotICAgIGxlbmd0aF9lbmNvZGluZ19ieXRlcyA9IDEKLSAgICBpZiBwYXls
b2FkX2xlbmd0aCA9PSAxMjc6Ci0gICAgICAgIGxvZ2dlci5sb2coY29tbW9uLkxPR0xFVkVMX0ZJ
TkUsCi0gICAgICAgICAgICAgICAgICAgJ1JlY2VpdmUgOC1vY3RldCBleHRlbmRlZCBwYXlsb2Fk
IGxlbmd0aCcpCi0KLSAgICAgICAgZXh0ZW5kZWRfcGF5bG9hZF9sZW5ndGggPSByZWNlaXZlX2J5
dGVzKDgpCi0gICAgICAgIHBheWxvYWRfbGVuZ3RoID0gc3RydWN0LnVucGFjaygKLSAgICAgICAg
ICAgICchUScsIGV4dGVuZGVkX3BheWxvYWRfbGVuZ3RoKVswXQotICAgICAgICBpZiBwYXlsb2Fk
X2xlbmd0aCA+IDB4N0ZGRkZGRkZGRkZGRkZGRjoKLSAgICAgICAgICAgIHJhaXNlIEludmFsaWRG
cmFtZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnRXh0ZW5kZWQgcGF5bG9hZCBsZW5ndGgg
Pj0gMl42MycpCi0gICAgICAgIGlmIHdzX3ZlcnNpb24gPj0gMTMgYW5kIHBheWxvYWRfbGVuZ3Ro
IDwgMHgxMDAwMDoKLSAgICAgICAgICAgIHZhbGlkX2xlbmd0aF9lbmNvZGluZyA9IEZhbHNlCi0g
ICAgICAgICAgICBsZW5ndGhfZW5jb2RpbmdfYnl0ZXMgPSA4Ci0KLSAgICAgICAgbG9nZ2VyLmxv
Zyhjb21tb24uTE9HTEVWRUxfRklORSwKLSAgICAgICAgICAgICAgICAgICAnRGVjb2RlZF9wYXls
b2FkX2xlbmd0aD0lcycsIHBheWxvYWRfbGVuZ3RoKQotICAgIGVsaWYgcGF5bG9hZF9sZW5ndGgg
PT0gMTI2OgotICAgICAgICBsb2dnZXIubG9nKGNvbW1vbi5MT0dMRVZFTF9GSU5FLAotICAgICAg
ICAgICAgICAgICAgICdSZWNlaXZlIDItb2N0ZXQgZXh0ZW5kZWQgcGF5bG9hZCBsZW5ndGgnKQot
Ci0gICAgICAgIGV4dGVuZGVkX3BheWxvYWRfbGVuZ3RoID0gcmVjZWl2ZV9ieXRlcygyKQotICAg
ICAgICBwYXlsb2FkX2xlbmd0aCA9IHN0cnVjdC51bnBhY2soCi0gICAgICAgICAgICAnIUgnLCBl
eHRlbmRlZF9wYXlsb2FkX2xlbmd0aClbMF0KLSAgICAgICAgaWYgd3NfdmVyc2lvbiA+PSAxMyBh
bmQgcGF5bG9hZF9sZW5ndGggPCAxMjY6Ci0gICAgICAgICAgICB2YWxpZF9sZW5ndGhfZW5jb2Rp
bmcgPSBGYWxzZQotICAgICAgICAgICAgbGVuZ3RoX2VuY29kaW5nX2J5dGVzID0gMgotCi0gICAg
ICAgIGxvZ2dlci5sb2coY29tbW9uLkxPR0xFVkVMX0ZJTkUsCi0gICAgICAgICAgICAgICAgICAg
J0RlY29kZWRfcGF5bG9hZF9sZW5ndGg9JXMnLCBwYXlsb2FkX2xlbmd0aCkKLQotICAgIGlmIG5v
dCB2YWxpZF9sZW5ndGhfZW5jb2Rpbmc6Ci0gICAgICAgIGxvZ2dlci53YXJuaW5nKAotICAgICAg
ICAgICAgJ1BheWxvYWQgbGVuZ3RoIGlzIG5vdCBlbmNvZGVkIHVzaW5nIHRoZSBtaW5pbWFsIG51
bWJlciBvZiAnCi0gICAgICAgICAgICAnYnl0ZXMgKCVkIGlzIGVuY29kZWQgdXNpbmcgJWQgYnl0
ZXMpJywKLSAgICAgICAgICAgIHBheWxvYWRfbGVuZ3RoLAotICAgICAgICAgICAgbGVuZ3RoX2Vu
Y29kaW5nX2J5dGVzKQotCi0gICAgaWYgbWFzayA9PSAxOgotICAgICAgICBsb2dnZXIubG9nKGNv
bW1vbi5MT0dMRVZFTF9GSU5FLCAnUmVjZWl2ZSBtYXNrJykKLQotICAgICAgICBtYXNraW5nX25v
bmNlID0gcmVjZWl2ZV9ieXRlcyg0KQotICAgICAgICBtYXNrZXIgPSB1dGlsLlJlcGVhdGVkWG9y
TWFza2VyKG1hc2tpbmdfbm9uY2UpCi0KLSAgICAgICAgbG9nZ2VyLmxvZyhjb21tb24uTE9HTEVW
RUxfRklORSwgJ01hc2s9JXInLCBtYXNraW5nX25vbmNlKQotICAgIGVsc2U6Ci0gICAgICAgIG1h
c2tlciA9IF9OT09QX01BU0tFUgotCi0gICAgbG9nZ2VyLmxvZyhjb21tb24uTE9HTEVWRUxfRklO
RSwgJ1JlY2VpdmUgcGF5bG9hZCBkYXRhJykKLSAgICBpZiBsb2dnZXIuaXNFbmFibGVkRm9yKGNv
bW1vbi5MT0dMRVZFTF9GSU5FKToKLSAgICAgICAgcmVjZWl2ZV9zdGFydCA9IHRpbWUudGltZSgp
Ci0KLSAgICByYXdfcGF5bG9hZF9ieXRlcyA9IHJlY2VpdmVfYnl0ZXMocGF5bG9hZF9sZW5ndGgp
Ci0KLSAgICBpZiBsb2dnZXIuaXNFbmFibGVkRm9yKGNvbW1vbi5MT0dMRVZFTF9GSU5FKToKLSAg
ICAgICAgbG9nZ2VyLmxvZygKLSAgICAgICAgICAgIGNvbW1vbi5MT0dMRVZFTF9GSU5FLAotICAg
ICAgICAgICAgJ0RvbmUgcmVjZWl2aW5nIHBheWxvYWQgZGF0YSBhdCAlcyBNQi9zJywKLSAgICAg
ICAgICAgIHBheWxvYWRfbGVuZ3RoIC8gKHRpbWUudGltZSgpIC0gcmVjZWl2ZV9zdGFydCkgLyAx
MDAwIC8gMTAwMCkKLSAgICBsb2dnZXIubG9nKGNvbW1vbi5MT0dMRVZFTF9GSU5FLCAnVW5tYXNr
IHBheWxvYWQgZGF0YScpCi0KLSAgICBpZiBsb2dnZXIuaXNFbmFibGVkRm9yKGNvbW1vbi5MT0dM
RVZFTF9GSU5FKToKLSAgICAgICAgdW5tYXNrX3N0YXJ0ID0gdGltZS50aW1lKCkKLQotICAgIHVu
bWFza2VkX2J5dGVzID0gbWFza2VyLm1hc2socmF3X3BheWxvYWRfYnl0ZXMpCi0KLSAgICBpZiBs
b2dnZXIuaXNFbmFibGVkRm9yKGNvbW1vbi5MT0dMRVZFTF9GSU5FKToKLSAgICAgICAgbG9nZ2Vy
LmxvZygKLSAgICAgICAgICAgIGNvbW1vbi5MT0dMRVZFTF9GSU5FLAotICAgICAgICAgICAgJ0Rv
bmUgdW5tYXNraW5nIHBheWxvYWQgZGF0YSBhdCAlcyBNQi9zJywKLSAgICAgICAgICAgIHBheWxv
YWRfbGVuZ3RoIC8gKHRpbWUudGltZSgpIC0gdW5tYXNrX3N0YXJ0KSAvIDEwMDAgLyAxMDAwKQot
Ci0gICAgcmV0dXJuIG9wY29kZSwgdW5tYXNrZWRfYnl0ZXMsIGZpbiwgcnN2MSwgcnN2MiwgcnN2
MwotCi0KLWNsYXNzIEZyYWdtZW50ZWRGcmFtZUJ1aWxkZXIob2JqZWN0KToKLSAgICAiIiJBIHN0
YXRlZnVsIGNsYXNzIHRvIHNlbmQgYSBtZXNzYWdlIGFzIGZyYWdtZW50cy4iIiIKLQotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBtYXNrLCBmcmFtZV9maWx0ZXJzPVtdLCBlbmNvZGVfdXRmOD1UcnVl
KToKLSAgICAgICAgIiIiQ29uc3RydWN0cyBhbiBpbnN0YW5jZS4iIiIKLQotICAgICAgICBzZWxm
Ll9tYXNrID0gbWFzawotICAgICAgICBzZWxmLl9mcmFtZV9maWx0ZXJzID0gZnJhbWVfZmlsdGVy
cwotICAgICAgICAjIFRoaXMgaXMgZm9yIHNraXBwaW5nIFVURi04IGVuY29kaW5nIHdoZW4gYnVp
bGRpbmcgdGV4dCB0eXBlIGZyYW1lcwotICAgICAgICAjIGZyb20gY29tcHJlc3NlZCBkYXRhLgot
ICAgICAgICBzZWxmLl9lbmNvZGVfdXRmOCA9IGVuY29kZV91dGY4Ci0KLSAgICAgICAgc2VsZi5f
c3RhcnRlZCA9IEZhbHNlCi0KLSAgICAgICAgIyBIb2xkIG9wY29kZSBvZiB0aGUgZmlyc3QgZnJh
bWUgaW4gbWVzc2FnZXMgdG8gdmVyaWZ5IHR5cGVzIG9mIG90aGVyCi0gICAgICAgICMgZnJhbWVz
IGluIHRoZSBtZXNzYWdlIGFyZSBhbGwgdGhlIHNhbWUuCi0gICAgICAgIHNlbGYuX29wY29kZSA9
IGNvbW1vbi5PUENPREVfVEVYVAotCi0gICAgZGVmIGJ1aWxkKHNlbGYsIHBheWxvYWRfZGF0YSwg
ZW5kLCBiaW5hcnkpOgotICAgICAgICBpZiBiaW5hcnk6Ci0gICAgICAgICAgICBmcmFtZV90eXBl
ID0gY29tbW9uLk9QQ09ERV9CSU5BUlkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGZyYW1l
X3R5cGUgPSBjb21tb24uT1BDT0RFX1RFWFQKLSAgICAgICAgaWYgc2VsZi5fc3RhcnRlZDoKLSAg
ICAgICAgICAgIGlmIHNlbGYuX29wY29kZSAhPSBmcmFtZV90eXBlOgotICAgICAgICAgICAgICAg
IHJhaXNlIFZhbHVlRXJyb3IoJ01lc3NhZ2UgdHlwZXMgYXJlIGRpZmZlcmVudCBpbiBmcmFtZXMg
Zm9yICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aGUgc2FtZSBtZXNzYWdl
JykKLSAgICAgICAgICAgIG9wY29kZSA9IGNvbW1vbi5PUENPREVfQ09OVElOVUFUSU9OCi0gICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICBvcGNvZGUgPSBmcmFtZV90eXBlCi0gICAgICAgICAgICBz
ZWxmLl9vcGNvZGUgPSBmcmFtZV90eXBlCi0KLSAgICAgICAgaWYgZW5kOgotICAgICAgICAgICAg
c2VsZi5fc3RhcnRlZCA9IEZhbHNlCi0gICAgICAgICAgICBmaW4gPSAxCi0gICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICBzZWxmLl9zdGFydGVkID0gVHJ1ZQotICAgICAgICAgICAgZmluID0gMAot
Ci0gICAgICAgIGlmIGJpbmFyeSBvciBub3Qgc2VsZi5fZW5jb2RlX3V0Zjg6Ci0gICAgICAgICAg
ICByZXR1cm4gY3JlYXRlX2JpbmFyeV9mcmFtZSgKLSAgICAgICAgICAgICAgICBwYXlsb2FkX2Rh
dGEsIG9wY29kZSwgZmluLCBzZWxmLl9tYXNrLCBzZWxmLl9mcmFtZV9maWx0ZXJzKQotICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZV90ZXh0X2ZyYW1lKAotICAgICAgICAg
ICAgICAgIHBheWxvYWRfZGF0YSwgb3Bjb2RlLCBmaW4sIHNlbGYuX21hc2ssIHNlbGYuX2ZyYW1l
X2ZpbHRlcnMpCi0KLQotZGVmIF9jcmVhdGVfY29udHJvbF9mcmFtZShvcGNvZGUsIGJvZHksIG1h
c2ssIGZyYW1lX2ZpbHRlcnMpOgotICAgIGZyYW1lID0gRnJhbWUob3Bjb2RlPW9wY29kZSwgcGF5
bG9hZD1ib2R5KQotCi0gICAgZm9yIGZyYW1lX2ZpbHRlciBpbiBmcmFtZV9maWx0ZXJzOgotICAg
ICAgICBmcmFtZV9maWx0ZXIuZmlsdGVyKGZyYW1lKQotCi0gICAgaWYgbGVuKGZyYW1lLnBheWxv
YWQpID4gMTI1OgotICAgICAgICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oCi0gICAgICAg
ICAgICAnUGF5bG9hZCBkYXRhIHNpemUgb2YgY29udHJvbCBmcmFtZXMgbXVzdCBiZSAxMjUgYnl0
ZXMgb3IgbGVzcycpCi0KLSAgICBoZWFkZXIgPSBjcmVhdGVfaGVhZGVyKAotICAgICAgICBmcmFt
ZS5vcGNvZGUsIGxlbihmcmFtZS5wYXlsb2FkKSwgZnJhbWUuZmluLAotICAgICAgICBmcmFtZS5y
c3YxLCBmcmFtZS5yc3YyLCBmcmFtZS5yc3YzLCBtYXNrKQotICAgIHJldHVybiBfYnVpbGRfZnJh
bWUoaGVhZGVyLCBmcmFtZS5wYXlsb2FkLCBtYXNrKQotCi0KLWRlZiBjcmVhdGVfcGluZ19mcmFt
ZShib2R5LCBtYXNrPUZhbHNlLCBmcmFtZV9maWx0ZXJzPVtdKToKLSAgICByZXR1cm4gX2NyZWF0
ZV9jb250cm9sX2ZyYW1lKGNvbW1vbi5PUENPREVfUElORywgYm9keSwgbWFzaywgZnJhbWVfZmls
dGVycykKLQotCi1kZWYgY3JlYXRlX3BvbmdfZnJhbWUoYm9keSwgbWFzaz1GYWxzZSwgZnJhbWVf
ZmlsdGVycz1bXSk6Ci0gICAgcmV0dXJuIF9jcmVhdGVfY29udHJvbF9mcmFtZShjb21tb24uT1BD
T0RFX1BPTkcsIGJvZHksIG1hc2ssIGZyYW1lX2ZpbHRlcnMpCi0KLQotZGVmIGNyZWF0ZV9jbG9z
ZV9mcmFtZShib2R5LCBtYXNrPUZhbHNlLCBmcmFtZV9maWx0ZXJzPVtdKToKLSAgICByZXR1cm4g
X2NyZWF0ZV9jb250cm9sX2ZyYW1lKAotICAgICAgICBjb21tb24uT1BDT0RFX0NMT1NFLCBib2R5
LCBtYXNrLCBmcmFtZV9maWx0ZXJzKQotCi0KLWRlZiBjcmVhdGVfY2xvc2luZ19oYW5kc2hha2Vf
Ym9keShjb2RlLCByZWFzb24pOgotICAgIGJvZHkgPSAnJwotICAgIGlmIGNvZGUgaXMgbm90IE5v
bmU6Ci0gICAgICAgIGlmIChjb2RlID4gY29tbW9uLlNUQVRVU19VU0VSX1BSSVZBVEVfTUFYIG9y
Ci0gICAgICAgICAgICBjb2RlIDwgY29tbW9uLlNUQVRVU19OT1JNQUxfQ0xPU1VSRSk6Ci0gICAg
ICAgICAgICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oJ1N0YXR1cyBjb2RlIGlzIG91dCBv
ZiByYW5nZScpCi0gICAgICAgIGlmIChjb2RlID09IGNvbW1vbi5TVEFUVVNfTk9fU1RBVFVTX1JF
Q0VJVkVEIG9yCi0gICAgICAgICAgICBjb2RlID09IGNvbW1vbi5TVEFUVVNfQUJOT1JNQUxfQ0xP
U1VSRSBvcgotICAgICAgICAgICAgY29kZSA9PSBjb21tb24uU1RBVFVTX1RMU19IQU5EU0hBS0Up
OgotICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0aW9uKCdTdGF0dXMgY29kZSBp
cyByZXNlcnZlZCBwc2V1ZG8gJwotICAgICAgICAgICAgICAgICdjb2RlJykKLSAgICAgICAgZW5j
b2RlZF9yZWFzb24gPSByZWFzb24uZW5jb2RlKCd1dGYtOCcpCi0gICAgICAgIGJvZHkgPSBzdHJ1
Y3QucGFjaygnIUgnLCBjb2RlKSArIGVuY29kZWRfcmVhc29uCi0gICAgcmV0dXJuIGJvZHkKLQot
Ci1jbGFzcyBTdHJlYW1PcHRpb25zKG9iamVjdCk6Ci0gICAgIiIiSG9sZHMgb3B0aW9uIHZhbHVl
cyB0byBjb25maWd1cmUgU3RyZWFtIG9iamVjdHMuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2Vs
Zik6Ci0gICAgICAgICIiIkNvbnN0cnVjdHMgU3RyZWFtT3B0aW9ucy4iIiIKLQotICAgICAgICAj
IEZpbHRlcnMgYXBwbGllZCB0byBmcmFtZXMuCi0gICAgICAgIHNlbGYub3V0Z29pbmdfZnJhbWVf
ZmlsdGVycyA9IFtdCi0gICAgICAgIHNlbGYuaW5jb21pbmdfZnJhbWVfZmlsdGVycyA9IFtdCi0K
LSAgICAgICAgIyBGaWx0ZXJzIGFwcGxpZWQgdG8gbWVzc2FnZXMuIENvbnRyb2wgZnJhbWVzIGFy
ZSBub3QgYWZmZWN0ZWQgYnkgdGhlbS4KLSAgICAgICAgc2VsZi5vdXRnb2luZ19tZXNzYWdlX2Zp
bHRlcnMgPSBbXQotICAgICAgICBzZWxmLmluY29taW5nX21lc3NhZ2VfZmlsdGVycyA9IFtdCi0K
LSAgICAgICAgc2VsZi5lbmNvZGVfdGV4dF9tZXNzYWdlX3RvX3V0ZjggPSBUcnVlCi0gICAgICAg
IHNlbGYubWFza19zZW5kID0gRmFsc2UKLSAgICAgICAgc2VsZi51bm1hc2tfcmVjZWl2ZSA9IFRy
dWUKLQotCi1jbGFzcyBTdHJlYW0oU3RyZWFtQmFzZSk6Ci0gICAgIiIiQSBjbGFzcyBmb3IgcGFy
c2luZy9idWlsZGluZyBmcmFtZXMgb2YgdGhlIFdlYlNvY2tldCBwcm90b2NvbAotICAgIChSRkMg
NjQ1NSkuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCwgb3B0aW9u
cyk6Ci0gICAgICAgICIiIkNvbnN0cnVjdHMgYW4gaW5zdGFuY2UuCi0KLSAgICAgICAgQXJnczoK
LSAgICAgICAgICAgIHJlcXVlc3Q6IG1vZF9weXRob24gcmVxdWVzdC4KLSAgICAgICAgIiIiCi0K
LSAgICAgICAgU3RyZWFtQmFzZS5fX2luaXRfXyhzZWxmLCByZXF1ZXN0KQotCi0gICAgICAgIHNl
bGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQotCi0gICAgICAgIHNlbGYu
X29wdGlvbnMgPSBvcHRpb25zCi0KLSAgICAgICAgc2VsZi5fcmVxdWVzdC5jbGllbnRfdGVybWlu
YXRlZCA9IEZhbHNlCi0gICAgICAgIHNlbGYuX3JlcXVlc3Quc2VydmVyX3Rlcm1pbmF0ZWQgPSBG
YWxzZQotCi0gICAgICAgICMgSG9sZHMgYm9keSBvZiByZWNlaXZlZCBmcmFnbWVudHMuCi0gICAg
ICAgIHNlbGYuX3JlY2VpdmVkX2ZyYWdtZW50cyA9IFtdCi0gICAgICAgICMgSG9sZHMgdGhlIG9w
Y29kZSBvZiB0aGUgZmlyc3QgZnJhZ21lbnQuCi0gICAgICAgIHNlbGYuX29yaWdpbmFsX29wY29k
ZSA9IE5vbmUKLQotICAgICAgICBzZWxmLl93cml0ZXIgPSBGcmFnbWVudGVkRnJhbWVCdWlsZGVy
KAotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5tYXNrX3NlbmQsIHNlbGYuX29wdGlvbnMub3V0
Z29pbmdfZnJhbWVfZmlsdGVycywKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuZW5jb2RlX3Rl
eHRfbWVzc2FnZV90b191dGY4KQotCi0gICAgICAgIHNlbGYuX3BpbmdfcXVldWUgPSBkZXF1ZSgp
Ci0KLSAgICBkZWYgX3JlY2VpdmVfZnJhbWUoc2VsZik6Ci0gICAgICAgICIiIlJlY2VpdmVzIGEg
ZnJhbWUgYW5kIHJldHVybiBkYXRhIGluIHRoZSBmcmFtZSBhcyBhIHR1cGxlIGNvbnRhaW5pbmcK
LSAgICAgICAgZWFjaCBoZWFkZXIgZmllbGQgYW5kIHBheWxvYWQgc2VwYXJhdGVseS4KLQotICAg
ICAgICBSYWlzZXM6Ci0gICAgICAgICAgICBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbjog
d2hlbiByZWFkIHJldHVybnMgZW1wdHkKLSAgICAgICAgICAgICAgICBzdHJpbmcuCi0gICAgICAg
ICAgICBJbnZhbGlkRnJhbWVFeGNlcHRpb246IHdoZW4gdGhlIGZyYW1lIGNvbnRhaW5zIGludmFs
aWQgZGF0YS4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgZGVmIF9yZWNlaXZlX2J5dGVzKGxlbmd0
aCk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5yZWNlaXZlX2J5dGVzKGxlbmd0aCkKLQotICAg
ICAgICByZXR1cm4gcGFyc2VfZnJhbWUocmVjZWl2ZV9ieXRlcz1fcmVjZWl2ZV9ieXRlcywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlcj1zZWxmLl9sb2dnZXIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICB3c192ZXJzaW9uPXNlbGYuX3JlcXVlc3Qud3NfdmVyc2lvbiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVubWFza19yZWNlaXZlPXNlbGYuX29wdGlvbnMudW5t
YXNrX3JlY2VpdmUpCi0KLSAgICBkZWYgX3JlY2VpdmVfZnJhbWVfYXNfZnJhbWVfb2JqZWN0KHNl
bGYpOgotICAgICAgICBvcGNvZGUsIHVubWFza2VkX2J5dGVzLCBmaW4sIHJzdjEsIHJzdjIsIHJz
djMgPSBzZWxmLl9yZWNlaXZlX2ZyYW1lKCkKLQotICAgICAgICByZXR1cm4gRnJhbWUoZmluPWZp
biwgcnN2MT1yc3YxLCByc3YyPXJzdjIsIHJzdjM9cnN2MywKLSAgICAgICAgICAgICAgICAgICAg
IG9wY29kZT1vcGNvZGUsIHBheWxvYWQ9dW5tYXNrZWRfYnl0ZXMpCi0KLSAgICBkZWYgcmVjZWl2
ZV9maWx0ZXJlZF9mcmFtZShzZWxmKToKLSAgICAgICAgIiIiUmVjZWl2ZXMgYSBmcmFtZSBhbmQg
YXBwbGllcyBmcmFtZSBmaWx0ZXJzIGFuZCBtZXNzYWdlIGZpbHRlcnMuCi0gICAgICAgIFRoZSBm
cmFtZSB0byBiZSByZWNlaXZlZCBtdXN0IHNhdGlzZnkgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0g
ICAgICAgIC0gVGhlIGZyYW1lIGlzIG5vdCBmcmFnbWVudGVkLgotICAgICAgICAtIFRoZSBvcGNv
ZGUgb2YgdGhlIGZyYW1lIGlzIFRFWFQgb3IgQklOQVJZLgotCi0gICAgICAgIERPIE5PVCBVU0Ug
dGhpcyBtZXRob2QgZXhjZXB0IGZvciB0ZXN0aW5nIHB1cnBvc2UuCi0gICAgICAgICIiIgotCi0g
ICAgICAgIGZyYW1lID0gc2VsZi5fcmVjZWl2ZV9mcmFtZV9hc19mcmFtZV9vYmplY3QoKQotICAg
ICAgICBpZiBub3QgZnJhbWUuZmluOgotICAgICAgICAgICAgcmFpc2UgSW52YWxpZEZyYW1lRXhj
ZXB0aW9uKAotICAgICAgICAgICAgICAgICdTZWdtZW50ZWQgZnJhbWVzIG11c3Qgbm90IGJlIHJl
Y2VpdmVkIHZpYSAnCi0gICAgICAgICAgICAgICAgJ3JlY2VpdmVfZmlsdGVyZWRfZnJhbWUoKScp
Ci0gICAgICAgIGlmIChmcmFtZS5vcGNvZGUgIT0gY29tbW9uLk9QQ09ERV9URVhUIGFuZAotICAg
ICAgICAgICAgZnJhbWUub3Bjb2RlICE9IGNvbW1vbi5PUENPREVfQklOQVJZKToKLSAgICAgICAg
ICAgIHJhaXNlIEludmFsaWRGcmFtZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnQ29udHJv
bCBmcmFtZXMgbXVzdCBub3QgYmUgcmVjZWl2ZWQgdmlhICcKLSAgICAgICAgICAgICAgICAncmVj
ZWl2ZV9maWx0ZXJlZF9mcmFtZSgpJykKLQotICAgICAgICBmb3IgZnJhbWVfZmlsdGVyIGluIHNl
bGYuX29wdGlvbnMuaW5jb21pbmdfZnJhbWVfZmlsdGVyczoKLSAgICAgICAgICAgIGZyYW1lX2Zp
bHRlci5maWx0ZXIoZnJhbWUpCi0gICAgICAgIGZvciBtZXNzYWdlX2ZpbHRlciBpbiBzZWxmLl9v
cHRpb25zLmluY29taW5nX21lc3NhZ2VfZmlsdGVyczoKLSAgICAgICAgICAgIGZyYW1lLnBheWxv
YWQgPSBtZXNzYWdlX2ZpbHRlci5maWx0ZXIoZnJhbWUucGF5bG9hZCkKLSAgICAgICAgcmV0dXJu
IGZyYW1lCi0KLSAgICBkZWYgc2VuZF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UsIGVuZD1UcnVlLCBi
aW5hcnk9RmFsc2UpOgotICAgICAgICAiIiJTZW5kIG1lc3NhZ2UuCi0KLSAgICAgICAgQXJnczoK
LSAgICAgICAgICAgIG1lc3NhZ2U6IHRleHQgaW4gdW5pY29kZSBvciBiaW5hcnkgaW4gc3RyIHRv
IHNlbmQuCi0gICAgICAgICAgICBiaW5hcnk6IHNlbmQgbWVzc2FnZSBhcyBiaW5hcnkgZnJhbWUu
Ci0KLSAgICAgICAgUmFpc2VzOgotICAgICAgICAgICAgQmFkT3BlcmF0aW9uRXhjZXB0aW9uOiB3
aGVuIGNhbGxlZCBvbiBhIHNlcnZlci10ZXJtaW5hdGVkCi0gICAgICAgICAgICAgICAgY29ubmVj
dGlvbiBvciBjYWxsZWQgd2l0aCBpbmNvbnNpc3RlbnQgbWVzc2FnZSB0eXBlIG9yCi0gICAgICAg
ICAgICAgICAgYmluYXJ5IHBhcmFtZXRlci4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgaWYgc2Vs
Zi5fcmVxdWVzdC5zZXJ2ZXJfdGVybWluYXRlZDoKLSAgICAgICAgICAgIHJhaXNlIEJhZE9wZXJh
dGlvbkV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnUmVxdWVzdGVkIHNlbmRfbWVzc2FnZSBh
ZnRlciBzZW5kaW5nIG91dCBhIGNsb3NpbmcgaGFuZHNoYWtlJykKLQotICAgICAgICBpZiBiaW5h
cnkgYW5kIGlzaW5zdGFuY2UobWVzc2FnZSwgdW5pY29kZSk6Ci0gICAgICAgICAgICByYWlzZSBC
YWRPcGVyYXRpb25FeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ01lc3NhZ2UgZm9yIGJpbmFy
eSBmcmFtZSBtdXN0IGJlIGluc3RhbmNlIG9mIHN0cicpCi0KLSAgICAgICAgZm9yIG1lc3NhZ2Vf
ZmlsdGVyIGluIHNlbGYuX29wdGlvbnMub3V0Z29pbmdfbWVzc2FnZV9maWx0ZXJzOgotICAgICAg
ICAgICAgbWVzc2FnZSA9IG1lc3NhZ2VfZmlsdGVyLmZpbHRlcihtZXNzYWdlLCBlbmQsIGJpbmFy
eSkKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICAjIFNldCB0aGlzIHRvIGFueSBwb3NpdGl2
ZSBpbnRlZ2VyIHRvIGxpbWl0IG1heGltdW0gc2l6ZSBvZiBkYXRhIGluCi0gICAgICAgICAgICAj
IHBheWxvYWQgZGF0YSBvZiBlYWNoIGZyYW1lLgotICAgICAgICAgICAgTUFYX1BBWUxPQURfREFU
QV9TSVpFID0gLTEKLQotICAgICAgICAgICAgaWYgTUFYX1BBWUxPQURfREFUQV9TSVpFIDw9IDA6
Ci0gICAgICAgICAgICAgICAgc2VsZi5fd3JpdGUoc2VsZi5fd3JpdGVyLmJ1aWxkKG1lc3NhZ2Us
IGVuZCwgYmluYXJ5KSkKLSAgICAgICAgICAgICAgICByZXR1cm4KLQotICAgICAgICAgICAgYnl0
ZXNfd3JpdHRlbiA9IDAKLSAgICAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICAgICAg
ZW5kX2Zvcl90aGlzX2ZyYW1lID0gZW5kCi0gICAgICAgICAgICAgICAgYnl0ZXNfdG9fd3JpdGUg
PSBsZW4obWVzc2FnZSkgLSBieXRlc193cml0dGVuCi0gICAgICAgICAgICAgICAgaWYgKE1BWF9Q
QVlMT0FEX0RBVEFfU0laRSA+IDAgYW5kCi0gICAgICAgICAgICAgICAgICAgIGJ5dGVzX3RvX3dy
aXRlID4gTUFYX1BBWUxPQURfREFUQV9TSVpFKToKLSAgICAgICAgICAgICAgICAgICAgZW5kX2Zv
cl90aGlzX2ZyYW1lID0gRmFsc2UKLSAgICAgICAgICAgICAgICAgICAgYnl0ZXNfdG9fd3JpdGUg
PSBNQVhfUEFZTE9BRF9EQVRBX1NJWkUKLQotICAgICAgICAgICAgICAgIGZyYW1lID0gc2VsZi5f
d3JpdGVyLmJ1aWxkKAotICAgICAgICAgICAgICAgICAgICBtZXNzYWdlW2J5dGVzX3dyaXR0ZW46
Ynl0ZXNfd3JpdHRlbiArIGJ5dGVzX3RvX3dyaXRlXSwKLSAgICAgICAgICAgICAgICAgICAgZW5k
X2Zvcl90aGlzX2ZyYW1lLAotICAgICAgICAgICAgICAgICAgICBiaW5hcnkpCi0gICAgICAgICAg
ICAgICAgc2VsZi5fd3JpdGUoZnJhbWUpCi0KLSAgICAgICAgICAgICAgICBieXRlc193cml0dGVu
ICs9IGJ5dGVzX3RvX3dyaXRlCi0KLSAgICAgICAgICAgICAgICAjIFRoaXMgaWYgbXVzdCBiZSBw
bGFjZWQgaGVyZSAodGhlIGVuZCBvZiB3aGlsZSBibG9jaykgc28gdGhhdAotICAgICAgICAgICAg
ICAgICMgYXQgbGVhc3Qgb25lIGZyYW1lIGlzIHNlbnQuCi0gICAgICAgICAgICAgICAgaWYgbGVu
KG1lc3NhZ2UpIDw9IGJ5dGVzX3dyaXR0ZW46Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0g
ICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6Ci0gICAgICAgICAgICByYWlzZSBCYWRPcGVy
YXRpb25FeGNlcHRpb24oZSkKLQotICAgIGRlZiBfZ2V0X21lc3NhZ2VfZnJvbV9mcmFtZShzZWxm
LCBmcmFtZSk6Ci0gICAgICAgICIiIkdldHMgYSBtZXNzYWdlIGZyb20gZnJhbWUuIElmIHRoZSBt
ZXNzYWdlIGlzIGNvbXBvc2VkIG9mIGZyYWdtZW50ZWQKLSAgICAgICAgZnJhbWVzIGFuZCB0aGUg
ZnJhbWUgaXMgbm90IHRoZSBsYXN0IGZyYWdtZW50ZWQgZnJhbWUsIHRoaXMgbWV0aG9kCi0gICAg
ICAgIHJldHVybnMgTm9uZS4gVGhlIHdob2xlIG1lc3NhZ2Ugd2lsbCBiZSByZXR1cm5lZCB3aGVu
IHRoZSBsYXN0Ci0gICAgICAgIGZyYWdtZW50ZWQgZnJhbWUgaXMgcGFzc2VkIHRvIHRoaXMgbWV0
aG9kLgotCi0gICAgICAgIFJhaXNlczoKLSAgICAgICAgICAgIEludmFsaWRGcmFtZUV4Y2VwdGlv
bjogd2hlbiB0aGUgZnJhbWUgZG9lc24ndCBtYXRjaCBkZWZyYWdtZW50YXRpb24KLSAgICAgICAg
ICAgICAgICBjb250ZXh0LCBvciB0aGUgZnJhbWUgY29udGFpbnMgaW52YWxpZCBkYXRhLgotICAg
ICAgICAiIiIKLQotICAgICAgICBpZiBmcmFtZS5vcGNvZGUgPT0gY29tbW9uLk9QQ09ERV9DT05U
SU5VQVRJT046Ci0gICAgICAgICAgICBpZiBub3Qgc2VsZi5fcmVjZWl2ZWRfZnJhZ21lbnRzOgot
ICAgICAgICAgICAgICAgIGlmIGZyYW1lLmZpbjoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2Ug
SW52YWxpZEZyYW1lRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgJ1JlY2VpdmVk
IGEgdGVybWluYXRpb24gZnJhbWUgYnV0IGZyYWdtZW50YXRpb24gJwotICAgICAgICAgICAgICAg
ICAgICAgICAgJ25vdCBzdGFydGVkJykKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgICAgICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAg
ICAgICAgICAnUmVjZWl2ZWQgYW4gaW50ZXJtZWRpYXRlIGZyYW1lIGJ1dCAnCi0gICAgICAgICAg
ICAgICAgICAgICAgICAnZnJhZ21lbnRhdGlvbiBub3Qgc3RhcnRlZCcpCi0KLSAgICAgICAgICAg
IGlmIGZyYW1lLmZpbjoKLSAgICAgICAgICAgICAgICAjIEVuZCBvZiBmcmFnbWVudGF0aW9uIGZy
YW1lCi0gICAgICAgICAgICAgICAgc2VsZi5fcmVjZWl2ZWRfZnJhZ21lbnRzLmFwcGVuZChmcmFt
ZS5wYXlsb2FkKQotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAnJy5qb2luKHNlbGYuX3JlY2Vp
dmVkX2ZyYWdtZW50cykKLSAgICAgICAgICAgICAgICBzZWxmLl9yZWNlaXZlZF9mcmFnbWVudHMg
PSBbXQotICAgICAgICAgICAgICAgIHJldHVybiBtZXNzYWdlCi0gICAgICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgICAgICMgSW50ZXJtZWRpYXRlIGZyYW1lCi0gICAgICAgICAgICAgICAgc2Vs
Zi5fcmVjZWl2ZWRfZnJhZ21lbnRzLmFwcGVuZChmcmFtZS5wYXlsb2FkKQotICAgICAgICAgICAg
ICAgIHJldHVybiBOb25lCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBzZWxmLl9yZWNl
aXZlZF9mcmFnbWVudHM6Ci0gICAgICAgICAgICAgICAgaWYgZnJhbWUuZmluOgotICAgICAgICAg
ICAgICAgICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAg
ICAgICAgICAnUmVjZWl2ZWQgYW4gdW5mcmFnbWVudGVkIGZyYW1lIHdpdGhvdXQgJwotICAgICAg
ICAgICAgICAgICAgICAgICAgJ3Rlcm1pbmF0aW5nIGV4aXN0aW5nIGZyYWdtZW50YXRpb24nKQot
ICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEludmFsaWRG
cmFtZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICdOZXcgZnJhZ21lbnRhdGlv
biBzdGFydGVkIHdpdGhvdXQgdGVybWluYXRpbmcgJwotICAgICAgICAgICAgICAgICAgICAgICAg
J2V4aXN0aW5nIGZyYWdtZW50YXRpb24nKQotCi0gICAgICAgICAgICBpZiBmcmFtZS5maW46Ci0g
ICAgICAgICAgICAgICAgIyBVbmZyYWdtZW50ZWQgZnJhbWUKLQotICAgICAgICAgICAgICAgIHNl
bGYuX29yaWdpbmFsX29wY29kZSA9IGZyYW1lLm9wY29kZQotICAgICAgICAgICAgICAgIHJldHVy
biBmcmFtZS5wYXlsb2FkCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgU3Rh
cnQgb2YgZnJhZ21lbnRhdGlvbiBmcmFtZQotCi0gICAgICAgICAgICAgICAgaWYgY29tbW9uLmlz
X2NvbnRyb2xfb3Bjb2RlKGZyYW1lLm9wY29kZSk6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNl
IEludmFsaWRGcmFtZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICdDb250cm9s
IGZyYW1lcyBtdXN0IG5vdCBiZSBmcmFnbWVudGVkJykKLQotICAgICAgICAgICAgICAgIHNlbGYu
X29yaWdpbmFsX29wY29kZSA9IGZyYW1lLm9wY29kZQotICAgICAgICAgICAgICAgIHNlbGYuX3Jl
Y2VpdmVkX2ZyYWdtZW50cy5hcHBlbmQoZnJhbWUucGF5bG9hZCkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gTm9uZQotCi0gICAgZGVmIF9wcm9jZXNzX2Nsb3NlX21lc3NhZ2Uoc2VsZiwgbWVzc2Fn
ZSk6Ci0gICAgICAgICIiIlByb2Nlc3NlcyBjbG9zZSBtZXNzYWdlLgotCi0gICAgICAgIEFyZ3M6
Ci0gICAgICAgICAgICBtZXNzYWdlOiBjbG9zZSBtZXNzYWdlLgotCi0gICAgICAgIFJhaXNlczoK
LSAgICAgICAgICAgIEludmFsaWRGcmFtZUV4Y2VwdGlvbjogd2hlbiB0aGUgbWVzc2FnZSBpcyBp
bnZhbGlkLgotICAgICAgICAiIiIKLQotICAgICAgICBzZWxmLl9yZXF1ZXN0LmNsaWVudF90ZXJt
aW5hdGVkID0gVHJ1ZQotCi0gICAgICAgICMgU3RhdHVzIGNvZGUgaXMgb3B0aW9uYWwuIFdlIGNh
biBoYXZlIHN0YXR1cyByZWFzb24gb25seSBpZiB3ZQotICAgICAgICAjIGhhdmUgc3RhdHVzIGNv
ZGUuIFN0YXR1cyByZWFzb24gY2FuIGJlIGVtcHR5IHN0cmluZy4gU28sCi0gICAgICAgICMgYWxs
b3dlZCBjYXNlcyBhcmUKLSAgICAgICAgIyAtIG5vIGFwcGxpY2F0aW9uIGRhdGE6IG5vIGNvZGUg
bm8gcmVhc29uCi0gICAgICAgICMgLSAyIG9jdGV0IG9mIGFwcGxpY2F0aW9uIGRhdGE6IGhhcyBj
b2RlIGJ1dCBubyByZWFzb24KLSAgICAgICAgIyAtIDMgb3IgbW9yZSBvY3RldCBvZiBhcHBsaWNh
dGlvbiBkYXRhOiBib3RoIGNvZGUgYW5kIHJlYXNvbgotICAgICAgICBpZiBsZW4obWVzc2FnZSkg
PT0gMDoKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnUmVjZWl2ZWQgY2xvc2UgZnJh
bWUgKGVtcHR5IGJvZHkpJykKLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfY2xvc2VfY29k
ZSA9ICgKLSAgICAgICAgICAgICAgICBjb21tb24uU1RBVFVTX05PX1NUQVRVU19SRUNFSVZFRCkK
LSAgICAgICAgZWxpZiBsZW4obWVzc2FnZSkgPT0gMToKLSAgICAgICAgICAgIHJhaXNlIEludmFs
aWRGcmFtZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnSWYgYSBjbG9zZSBmcmFtZSBoYXMg
c3RhdHVzIGNvZGUsIHRoZSBsZW5ndGggb2YgJwotICAgICAgICAgICAgICAgICdzdGF0dXMgY29k
ZSBtdXN0IGJlIDIgb2N0ZXQnKQotICAgICAgICBlbGlmIGxlbihtZXNzYWdlKSA+PSAyOgotICAg
ICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19jbG9zZV9jb2RlID0gc3RydWN0LnVucGFjaygKLSAg
ICAgICAgICAgICAgICAnIUgnLCBtZXNzYWdlWzA6Ml0pWzBdCi0gICAgICAgICAgICBzZWxmLl9y
ZXF1ZXN0LndzX2Nsb3NlX3JlYXNvbiA9IG1lc3NhZ2VbMjpdLmRlY29kZSgKLSAgICAgICAgICAg
ICAgICAndXRmLTgnLCAncmVwbGFjZScpCi0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWco
Ci0gICAgICAgICAgICAgICAgJ1JlY2VpdmVkIGNsb3NlIGZyYW1lIChjb2RlPSVkLCByZWFzb249
JXIpJywKLSAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX2Nsb3NlX2NvZGUsCi0gICAg
ICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19jbG9zZV9yZWFzb24pCi0KLSAgICAgICAgIyBB
cyB3ZSd2ZSByZWNlaXZlZCBhIGNsb3NlIGZyYW1lLCBubyBtb3JlIGRhdGEgaXMgY29taW5nIG92
ZXIgdGhlCi0gICAgICAgICMgc29ja2V0LiBXZSBjYW4gbm93IHNhZmVseSBjbG9zZSB0aGUgc29j
a2V0IHdpdGhvdXQgd29ycnlpbmcgYWJvdXQKLSAgICAgICAgIyBSU1Qgc2VuZGluZy4KLQotICAg
ICAgICBpZiBzZWxmLl9yZXF1ZXN0LnNlcnZlcl90ZXJtaW5hdGVkOgotICAgICAgICAgICAgc2Vs
Zi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAgICAgICAgICdSZWNlaXZlZCBhY2sgZm9yIHNlcnZl
ci1pbml0aWF0ZWQgY2xvc2luZyBoYW5kc2hha2UnKQotICAgICAgICAgICAgcmV0dXJuCi0KLSAg
ICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAgICAgJ1JlY2VpdmVkIGNsaWVudC1p
bml0aWF0ZWQgY2xvc2luZyBoYW5kc2hha2UnKQotCi0gICAgICAgIGNvZGUgPSBjb21tb24uU1RB
VFVTX05PUk1BTF9DTE9TVVJFCi0gICAgICAgIHJlYXNvbiA9ICcnCi0gICAgICAgIGlmIGhhc2F0
dHIoc2VsZi5fcmVxdWVzdCwgJ19kaXNwYXRjaGVyJyk6Ci0gICAgICAgICAgICBkaXNwYXRjaGVy
ID0gc2VsZi5fcmVxdWVzdC5fZGlzcGF0Y2hlcgotICAgICAgICAgICAgY29kZSwgcmVhc29uID0g
ZGlzcGF0Y2hlci5wYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlKAotICAgICAgICAgICAgICAgIHNl
bGYuX3JlcXVlc3QpCi0gICAgICAgICAgICBpZiBjb2RlIGlzIE5vbmUgYW5kIHJlYXNvbiBpcyBu
b3QgTm9uZSBhbmQgbGVuKHJlYXNvbikgPiAwOgotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dl
ci53YXJuaW5nKAotICAgICAgICAgICAgICAgICAgICAnSGFuZGxlciBzcGVjaWZpZWQgcmVhc29u
IGRlc3BpdGUgY29kZSBiZWluZyBOb25lJykKLSAgICAgICAgICAgICAgICByZWFzb24gPSAnJwot
ICAgICAgICAgICAgaWYgcmVhc29uIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgcmVhc29uID0g
JycKLSAgICAgICAgc2VsZi5fc2VuZF9jbG9zaW5nX2hhbmRzaGFrZShjb2RlLCByZWFzb24pCi0g
ICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICdBY2tub3dsZWRnZWQgY2xv
c2luZyBoYW5kc2hha2UgaW5pdGlhdGVkIGJ5IHRoZSBwZWVyICcKLSAgICAgICAgICAgICcoY29k
ZT0lciwgcmVhc29uPSVyKScsIGNvZGUsIHJlYXNvbikKLQotICAgIGRlZiBfcHJvY2Vzc19waW5n
X21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSk6Ci0gICAgICAgICIiIlByb2Nlc3NlcyBwaW5nIG1lc3Nh
Z2UuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIG1lc3NhZ2U6IHBpbmcgbWVzc2FnZS4K
LSAgICAgICAgIiIiCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaGFuZGxlciA9IHNlbGYu
X3JlcXVlc3Qub25fcGluZ19oYW5kbGVyCi0gICAgICAgICAgICBpZiBoYW5kbGVyOgotICAgICAg
ICAgICAgICAgIGhhbmRsZXIoc2VsZi5fcmVxdWVzdCwgbWVzc2FnZSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4KLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yIGFzIGU6Ci0gICAgICAgICAg
ICBwYXNzCi0gICAgICAgIHNlbGYuX3NlbmRfcG9uZyhtZXNzYWdlKQotCi0gICAgZGVmIF9wcm9j
ZXNzX3BvbmdfbWVzc2FnZShzZWxmLCBtZXNzYWdlKToKLSAgICAgICAgIiIiUHJvY2Vzc2VzIHBv
bmcgbWVzc2FnZS4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgbWVzc2FnZTogcG9uZyBt
ZXNzYWdlLgotICAgICAgICAiIiIKLQotICAgICAgICAjIFRPRE8odHlvc2hpbm8pOiBBZGQgcGlu
ZyB0aW1lb3V0IGhhbmRsaW5nLgotCi0gICAgICAgIGluZmxpZ2h0X3BpbmdzID0gZGVxdWUoKQot
Ci0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAg
ZXhwZWN0ZWRfYm9keSA9IHNlbGYuX3BpbmdfcXVldWUucG9wbGVmdCgpCi0gICAgICAgICAgICAg
ICAgaWYgZXhwZWN0ZWRfYm9keSA9PSBtZXNzYWdlOgotICAgICAgICAgICAgICAgICAgICAjIGlu
ZmxpZ2h0X3BpbmdzIGNvbnRhaW5zIHBpbmdzIGlnbm9yZWQgYnkgdGhlCi0gICAgICAgICAgICAg
ICAgICAgICMgb3RoZXIgcGVlci4gSnVzdCBmb3JnZXQgdGhlbS4KLSAgICAgICAgICAgICAgICAg
ICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAgICAgICAgICAgICAgICAgJ1BpbmcgJXIg
aXMgYWNrZWQgKCVkIHBpbmdzIHdlcmUgaWdub3JlZCknLAotICAgICAgICAgICAgICAgICAgICAg
ICAgZXhwZWN0ZWRfYm9keSwgbGVuKGluZmxpZ2h0X3BpbmdzKSkKLSAgICAgICAgICAgICAgICAg
ICAgYnJlYWsKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBpbmZs
aWdodF9waW5ncy5hcHBlbmQoZXhwZWN0ZWRfYm9keSkKLSAgICAgICAgICAgIGV4Y2VwdCBJbmRl
eEVycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgIyBUaGUgcmVjZWl2ZWQgcG9uZyB3YXMgdW5z
b2xpY2l0ZWQgcG9uZy4gS2VlcCB0aGUKLSAgICAgICAgICAgICAgICAjIHBpbmcgcXVldWUgYXMg
aXMuCi0gICAgICAgICAgICAgICAgc2VsZi5fcGluZ19xdWV1ZSA9IGluZmxpZ2h0X3BpbmdzCi0g
ICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdSZWNlaXZlZCBhIHVuc29saWNpdGVk
IHBvbmcnKQotICAgICAgICAgICAgICAgIGJyZWFrCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAg
ICAgaGFuZGxlciA9IHNlbGYuX3JlcXVlc3Qub25fcG9uZ19oYW5kbGVyCi0gICAgICAgICAgICBp
ZiBoYW5kbGVyOgotICAgICAgICAgICAgICAgIGhhbmRsZXIoc2VsZi5fcmVxdWVzdCwgbWVzc2Fn
ZSkKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yIGFzIGU6Ci0gICAgICAgICAgICBwYXNz
Ci0KLSAgICBkZWYgcmVjZWl2ZV9tZXNzYWdlKHNlbGYpOgotICAgICAgICAiIiJSZWNlaXZlIGEg
V2ViU29ja2V0IGZyYW1lIGFuZCByZXR1cm4gaXRzIHBheWxvYWQgYXMgYSB0ZXh0IGluCi0gICAg
ICAgIHVuaWNvZGUgb3IgYSBiaW5hcnkgaW4gc3RyLgotCi0gICAgICAgIFJldHVybnM6Ci0gICAg
ICAgICAgICBwYXlsb2FkIGRhdGEgb2YgdGhlIGZyYW1lCi0gICAgICAgICAgICAtIGFzIHVuaWNv
ZGUgaW5zdGFuY2UgaWYgcmVjZWl2ZWQgdGV4dCBmcmFtZQotICAgICAgICAgICAgLSBhcyBzdHIg
aW5zdGFuY2UgaWYgcmVjZWl2ZWQgYmluYXJ5IGZyYW1lCi0gICAgICAgICAgICBvciBOb25lIGlm
ZiByZWNlaXZlZCBjbG9zaW5nIGhhbmRzaGFrZS4KLSAgICAgICAgUmFpc2VzOgotICAgICAgICAg
ICAgQmFkT3BlcmF0aW9uRXhjZXB0aW9uOiB3aGVuIGNhbGxlZCBvbiBhIGNsaWVudC10ZXJtaW5h
dGVkCi0gICAgICAgICAgICAgICAgY29ubmVjdGlvbi4KLSAgICAgICAgICAgIENvbm5lY3Rpb25U
ZXJtaW5hdGVkRXhjZXB0aW9uOiB3aGVuIHJlYWQgcmV0dXJucyBlbXB0eQotICAgICAgICAgICAg
ICAgIHN0cmluZy4KLSAgICAgICAgICAgIEludmFsaWRGcmFtZUV4Y2VwdGlvbjogd2hlbiB0aGUg
ZnJhbWUgY29udGFpbnMgaW52YWxpZAotICAgICAgICAgICAgICAgIGRhdGEuCi0gICAgICAgICAg
ICBVbnN1cHBvcnRlZEZyYW1lRXhjZXB0aW9uOiB3aGVuIHRoZSByZWNlaXZlZCBmcmFtZSBoYXMK
LSAgICAgICAgICAgICAgICBmbGFncywgb3Bjb2RlIHdlIGNhbm5vdCBoYW5kbGUuIFlvdSBjYW4g
aWdub3JlIHRoaXMKLSAgICAgICAgICAgICAgICBleGNlcHRpb24gYW5kIGNvbnRpbnVlIHJlY2Vp
dmluZyB0aGUgbmV4dCBmcmFtZS4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgaWYgc2VsZi5fcmVx
dWVzdC5jbGllbnRfdGVybWluYXRlZDoKLSAgICAgICAgICAgIHJhaXNlIEJhZE9wZXJhdGlvbkV4
Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnUmVxdWVzdGVkIHJlY2VpdmVfbWVzc2FnZSBhZnRl
ciByZWNlaXZpbmcgYSBjbG9zaW5nICcKLSAgICAgICAgICAgICAgICAnaGFuZHNoYWtlJykKLQot
ICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgIyBtcF9jb25uLnJlYWQgd2lsbCBibG9j
ayBpZiBubyBieXRlcyBhcmUgYXZhaWxhYmxlLgotICAgICAgICAgICAgIyBUaW1lb3V0IGlzIGNv
bnRyb2xsZWQgYnkgVGltZU91dCBkaXJlY3RpdmUgb2YgQXBhY2hlLgotCi0gICAgICAgICAgICBm
cmFtZSA9IHNlbGYuX3JlY2VpdmVfZnJhbWVfYXNfZnJhbWVfb2JqZWN0KCkKLQotICAgICAgICAg
ICAgIyBDaGVjayB0aGUgY29uc3RyYWludCBvbiB0aGUgcGF5bG9hZCBzaXplIGZvciBjb250cm9s
IGZyYW1lcwotICAgICAgICAgICAgIyBiZWZvcmUgZXh0ZW5zaW9uIHByb2Nlc3NlcyB0aGUgZnJh
bWUuCi0gICAgICAgICAgICAjIFNlZSBhbHNvIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3Jm
YzY0NTUjc2VjdGlvbi01LjUKLSAgICAgICAgICAgIGlmIChjb21tb24uaXNfY29udHJvbF9vcGNv
ZGUoZnJhbWUub3Bjb2RlKSBhbmQKLSAgICAgICAgICAgICAgICBsZW4oZnJhbWUucGF5bG9hZCkg
PiAxMjUpOgotICAgICAgICAgICAgICAgIHJhaXNlIEludmFsaWRGcmFtZUV4Y2VwdGlvbigKLSAg
ICAgICAgICAgICAgICAgICAgJ1BheWxvYWQgZGF0YSBzaXplIG9mIGNvbnRyb2wgZnJhbWVzIG11
c3QgYmUgMTI1IGJ5dGVzIG9yICcKLSAgICAgICAgICAgICAgICAgICAgJ2xlc3MnKQotCi0gICAg
ICAgICAgICBmb3IgZnJhbWVfZmlsdGVyIGluIHNlbGYuX29wdGlvbnMuaW5jb21pbmdfZnJhbWVf
ZmlsdGVyczoKLSAgICAgICAgICAgICAgICBmcmFtZV9maWx0ZXIuZmlsdGVyKGZyYW1lKQotCi0g
ICAgICAgICAgICBpZiBmcmFtZS5yc3YxIG9yIGZyYW1lLnJzdjIgb3IgZnJhbWUucnN2MzoKLSAg
ICAgICAgICAgICAgICByYWlzZSBVbnN1cHBvcnRlZEZyYW1lRXhjZXB0aW9uKAotICAgICAgICAg
ICAgICAgICAgICAnVW5zdXBwb3J0ZWQgZmxhZyBpcyBzZXQgKHJzdiA9ICVkJWQlZCknICUKLSAg
ICAgICAgICAgICAgICAgICAgKGZyYW1lLnJzdjEsIGZyYW1lLnJzdjIsIGZyYW1lLnJzdjMpKQot
Ci0gICAgICAgICAgICBtZXNzYWdlID0gc2VsZi5fZ2V0X21lc3NhZ2VfZnJvbV9mcmFtZShmcmFt
ZSkKLSAgICAgICAgICAgIGlmIG1lc3NhZ2UgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBjb250
aW51ZQotCi0gICAgICAgICAgICBmb3IgbWVzc2FnZV9maWx0ZXIgaW4gc2VsZi5fb3B0aW9ucy5p
bmNvbWluZ19tZXNzYWdlX2ZpbHRlcnM6Ci0gICAgICAgICAgICAgICAgbWVzc2FnZSA9IG1lc3Nh
Z2VfZmlsdGVyLmZpbHRlcihtZXNzYWdlKQotCi0gICAgICAgICAgICBpZiBzZWxmLl9vcmlnaW5h
bF9vcGNvZGUgPT0gY29tbW9uLk9QQ09ERV9URVhUOgotICAgICAgICAgICAgICAgICMgVGhlIFdl
YlNvY2tldCBwcm90b2NvbCBzZWN0aW9uIDQuNCBzcGVjaWZpZXMgdGhhdCBpbnZhbGlkCi0gICAg
ICAgICAgICAgICAgIyBjaGFyYWN0ZXJzIG11c3QgYmUgcmVwbGFjZWQgd2l0aCBVK2ZmZmQgUkVQ
TEFDRU1FTlQKLSAgICAgICAgICAgICAgICAjIENIQVJBQ1RFUi4KLSAgICAgICAgICAgICAgICB0
cnk6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBtZXNzYWdlLmRlY29kZSgndXRmLTgnKQot
ICAgICAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3IgYXMgZToKLSAgICAgICAg
ICAgICAgICAgICAgcmFpc2UgSW52YWxpZFVURjhFeGNlcHRpb24oZSkKLSAgICAgICAgICAgIGVs
aWYgc2VsZi5fb3JpZ2luYWxfb3Bjb2RlID09IGNvbW1vbi5PUENPREVfQklOQVJZOgotICAgICAg
ICAgICAgICAgIHJldHVybiBtZXNzYWdlCi0gICAgICAgICAgICBlbGlmIHNlbGYuX29yaWdpbmFs
X29wY29kZSA9PSBjb21tb24uT1BDT0RFX0NMT1NFOgotICAgICAgICAgICAgICAgIHNlbGYuX3By
b2Nlc3NfY2xvc2VfbWVzc2FnZShtZXNzYWdlKQotICAgICAgICAgICAgICAgIHJldHVybiBOb25l
Ci0gICAgICAgICAgICBlbGlmIHNlbGYuX29yaWdpbmFsX29wY29kZSA9PSBjb21tb24uT1BDT0RF
X1BJTkc6Ci0gICAgICAgICAgICAgICAgc2VsZi5fcHJvY2Vzc19waW5nX21lc3NhZ2UobWVzc2Fn
ZSkKLSAgICAgICAgICAgIGVsaWYgc2VsZi5fb3JpZ2luYWxfb3Bjb2RlID09IGNvbW1vbi5PUENP
REVfUE9ORzoKLSAgICAgICAgICAgICAgICBzZWxmLl9wcm9jZXNzX3BvbmdfbWVzc2FnZShtZXNz
YWdlKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZSBVbnN1cHBvcnRl
ZEZyYW1lRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICAgICAnT3Bjb2RlICVkIGlzIG5vdCBz
dXBwb3J0ZWQnICUgc2VsZi5fb3JpZ2luYWxfb3Bjb2RlKQotCi0gICAgZGVmIF9zZW5kX2Nsb3Np
bmdfaGFuZHNoYWtlKHNlbGYsIGNvZGUsIHJlYXNvbik6Ci0gICAgICAgIGJvZHkgPSBjcmVhdGVf
Y2xvc2luZ19oYW5kc2hha2VfYm9keShjb2RlLCByZWFzb24pCi0gICAgICAgIGZyYW1lID0gY3Jl
YXRlX2Nsb3NlX2ZyYW1lKAotICAgICAgICAgICAgYm9keSwgbWFzaz1zZWxmLl9vcHRpb25zLm1h
c2tfc2VuZCwKLSAgICAgICAgICAgIGZyYW1lX2ZpbHRlcnM9c2VsZi5fb3B0aW9ucy5vdXRnb2lu
Z19mcmFtZV9maWx0ZXJzKQotCi0gICAgICAgIHNlbGYuX3JlcXVlc3Quc2VydmVyX3Rlcm1pbmF0
ZWQgPSBUcnVlCi0KLSAgICAgICAgc2VsZi5fd3JpdGUoZnJhbWUpCi0KLSAgICBkZWYgY2xvc2Vf
Y29ubmVjdGlvbihzZWxmLCBjb2RlPWNvbW1vbi5TVEFUVVNfTk9STUFMX0NMT1NVUkUsIHJlYXNv
bj0nJywKLSAgICAgICAgICAgICAgICAgICAgICAgICB3YWl0X3Jlc3BvbnNlPVRydWUpOgotICAg
ICAgICAiIiJDbG9zZXMgYSBXZWJTb2NrZXQgY29ubmVjdGlvbi4gTm90ZSB0aGF0IHRoaXMgbWV0
aG9kIGJsb2NrcyB1bnRpbAotICAgICAgICBpdCByZWNlaXZlcyBhY2tub3dsZWRnZW1lbnQgdG8g
dGhlIGNsb3NpbmcgaGFuZHNoYWtlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBjb2Rl
OiBTdGF0dXMgY29kZSBmb3IgY2xvc2UgZnJhbWUuIElmIGNvZGUgaXMgTm9uZSwgYSBjbG9zZQot
ICAgICAgICAgICAgICAgIGZyYW1lIHdpdGggZW1wdHkgYm9keSB3aWxsIGJlIHNlbnQuCi0gICAg
ICAgICAgICByZWFzb246IHN0cmluZyByZXByZXNlbnRpbmcgY2xvc2UgcmVhc29uLgotICAgICAg
ICAgICAgd2FpdF9yZXNwb25zZTogVHJ1ZSB3aGVuIGNhbGxlciB3YW50IHRvIHdhaXQgdGhlIHJl
c3BvbnNlLgotICAgICAgICBSYWlzZXM6Ci0gICAgICAgICAgICBCYWRPcGVyYXRpb25FeGNlcHRp
b246IHdoZW4gcmVhc29uIGlzIHNwZWNpZmllZCB3aXRoIGNvZGUgTm9uZQotICAgICAgICAgICAg
b3IgcmVhc29uIGlzIG5vdCBhbiBpbnN0YW5jZSBvZiBib3RoIHN0ciBhbmQgdW5pY29kZS4KLSAg
ICAgICAgIiIiCi0KLSAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC5zZXJ2ZXJfdGVybWluYXRlZDoK
LSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICAgICAnUmVxdWVz
dGVkIGNsb3NlX2Nvbm5lY3Rpb24gYnV0IHNlcnZlciBpcyBhbHJlYWR5IHRlcm1pbmF0ZWQnKQot
ICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgIyBXaGVuIHdlIHJlY2VpdmUgYSBjbG9zZSBm
cmFtZSwgd2UgY2FsbCBfcHJvY2Vzc19jbG9zZV9tZXNzYWdlKCkuCi0gICAgICAgICMgX3Byb2Nl
c3NfY2xvc2VfbWVzc2FnZSgpIGltbWVkaWF0ZWx5IGFja25vd2xlZGdlcyB0byB0aGUKLSAgICAg
ICAgIyBzZXJ2ZXItaW5pdGlhdGVkIGNsb3NpbmcgaGFuZHNoYWtlIGFuZCBzZXRzIHNlcnZlcl90
ZXJtaW5hdGVkIHRvCi0gICAgICAgICMgVHJ1ZS4gU28sIGhlcmUgd2UgY2FuIGFzc3VtZSB0aGF0
IHdlIGhhdmVuJ3QgcmVjZWl2ZWQgYW55IGNsb3NlCi0gICAgICAgICMgZnJhbWUuIFdlJ3JlIGlu
aXRpYXRpbmcgYSBjbG9zaW5nIGhhbmRzaGFrZS4KLQotICAgICAgICBpZiBjb2RlIGlzIE5vbmU6
Ci0gICAgICAgICAgICBpZiByZWFzb24gaXMgbm90IE5vbmUgYW5kIGxlbihyZWFzb24pID4gMDoK
LSAgICAgICAgICAgICAgICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oCi0gICAgICAgICAg
ICAgICAgICAgICdjbG9zZSByZWFzb24gbXVzdCBub3QgYmUgc3BlY2lmaWVkIGlmIGNvZGUgaXMg
Tm9uZScpCi0gICAgICAgICAgICByZWFzb24gPSAnJwotICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgaWYgbm90IGlzaW5zdGFuY2UocmVhc29uLCBzdHIpIGFuZCBub3QgaXNpbnN0YW5jZShyZWFz
b24sIHVuaWNvZGUpOgotICAgICAgICAgICAgICAgIHJhaXNlIEJhZE9wZXJhdGlvbkV4Y2VwdGlv
bigKLSAgICAgICAgICAgICAgICAgICAgJ2Nsb3NlIHJlYXNvbiBtdXN0IGJlIGFuIGluc3RhbmNl
IG9mIHN0ciBvciB1bmljb2RlJykKLQotICAgICAgICBzZWxmLl9zZW5kX2Nsb3NpbmdfaGFuZHNo
YWtlKGNvZGUsIHJlYXNvbikKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAg
ICAgJ0luaXRpYXRlZCBjbG9zaW5nIGhhbmRzaGFrZSAoY29kZT0lciwgcmVhc29uPSVyKScsCi0g
ICAgICAgICAgICBjb2RlLCByZWFzb24pCi0KLSAgICAgICAgaWYgKGNvZGUgPT0gY29tbW9uLlNU
QVRVU19HT0lOR19BV0FZIG9yCi0gICAgICAgICAgICBjb2RlID09IGNvbW1vbi5TVEFUVVNfUFJP
VE9DT0xfRVJST1IpIG9yIG5vdCB3YWl0X3Jlc3BvbnNlOgotICAgICAgICAgICAgIyBJdCBkb2Vz
bid0IG1ha2Ugc2Vuc2UgdG8gd2FpdCBmb3IgYSBjbG9zZSBmcmFtZSBpZiB0aGUgcmVhc29uIGlz
Ci0gICAgICAgICAgICAjIHByb3RvY29sIGVycm9yIG9yIHRoYXQgdGhlIHNlcnZlciBpcyBnb2lu
ZyBhd2F5LiBGb3Igc29tZSBvZgotICAgICAgICAgICAgIyBvdGhlciByZWFzb25zLCBpdCBtaWdo
dCBub3QgbWFrZSBzZW5zZSB0byB3YWl0IGZvciBhIGNsb3NlIGZyYW1lLAotICAgICAgICAgICAg
IyBidXQgaXQncyBub3QgY2xlYXIsIHlldC4KLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAg
ICMgVE9ETyh1a2FpKTogMi4gd2FpdCB1bnRpbCB0aGUgL2NsaWVudCB0ZXJtaW5hdGVkLyBmbGFn
IGhhcyBiZWVuIHNldCwKLSAgICAgICAgIyBvciB1bnRpbCBhIHNlcnZlci1kZWZpbmVkIHRpbWVv
dXQgZXhwaXJlcy4KLSAgICAgICAgIwotICAgICAgICAjIEZvciBub3csIHdlIGV4cGVjdCByZWNl
aXZpbmcgY2xvc2luZyBoYW5kc2hha2UgcmlnaHQgYWZ0ZXIgc2VuZGluZwotICAgICAgICAjIG91
dCBjbG9zaW5nIGhhbmRzaGFrZS4KLSAgICAgICAgbWVzc2FnZSA9IHNlbGYucmVjZWl2ZV9tZXNz
YWdlKCkKLSAgICAgICAgaWYgbWVzc2FnZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHJhaXNl
IENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdEaWRuXCd0
IHJlY2VpdmUgdmFsaWQgYWNrIGZvciBjbG9zaW5nIGhhbmRzaGFrZScpCi0gICAgICAgICMgVE9E
TzogMy4gY2xvc2UgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uLgotICAgICAgICAjIG5vdGU6IG1v
ZF9weXRob24gQ29ubmVjdGlvbiAobXBfY29ubikgZG9lc24ndCBoYXZlIGNsb3NlIG1ldGhvZC4K
LQotICAgIGRlZiBzZW5kX3Bpbmcoc2VsZiwgYm9keT0nJyk6Ci0gICAgICAgIGZyYW1lID0gY3Jl
YXRlX3BpbmdfZnJhbWUoCi0gICAgICAgICAgICBib2R5LAotICAgICAgICAgICAgc2VsZi5fb3B0
aW9ucy5tYXNrX3NlbmQsCi0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLm91dGdvaW5nX2ZyYW1l
X2ZpbHRlcnMpCi0gICAgICAgIHNlbGYuX3dyaXRlKGZyYW1lKQotCi0gICAgICAgIHNlbGYuX3Bp
bmdfcXVldWUuYXBwZW5kKGJvZHkpCi0KLSAgICBkZWYgX3NlbmRfcG9uZyhzZWxmLCBib2R5KToK
LSAgICAgICAgZnJhbWUgPSBjcmVhdGVfcG9uZ19mcmFtZSgKLSAgICAgICAgICAgIGJvZHksCi0g
ICAgICAgICAgICBzZWxmLl9vcHRpb25zLm1hc2tfc2VuZCwKLSAgICAgICAgICAgIHNlbGYuX29w
dGlvbnMub3V0Z29pbmdfZnJhbWVfZmlsdGVycykKLSAgICAgICAgc2VsZi5fd3JpdGUoZnJhbWUp
Ci0KLSAgICBkZWYgZ2V0X2xhc3RfcmVjZWl2ZWRfb3Bjb2RlKHNlbGYpOgotICAgICAgICAiIiJS
ZXR1cm5zIHRoZSBvcGNvZGUgb2YgdGhlIFdlYlNvY2tldCBtZXNzYWdlIHdoaWNoIHRoZSBsYXN0
IHJlY2VpdmVkCi0gICAgICAgIGZyYW1lIGJlbG9uZ3MgdG8uIFRoZSByZXR1cm4gdmFsdWUgaXMg
dmFsaWQgaWZmIGltbWVkaWF0ZWx5IGFmdGVyCi0gICAgICAgIHJlY2VpdmVfbWVzc2FnZSBjYWxs
LgotICAgICAgICAiIiIKLQotICAgICAgICByZXR1cm4gc2VsZi5fb3JpZ2luYWxfb3Bjb2RlCi0K
LQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9j
b21tb24ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9jb21tb24ucHkKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDlmNzNkNjY1NjBkNjQ0MTU1ZWUwZjVmMmE1NTA5ODg5ODcxMzBkOWIu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2Rf
cHl3ZWJzb2NrZXQvY29tbW9uLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzA2ICswLDAgQEAKLSMg
Q29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0j
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0j
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotCi0KLSIiIlRoaXMgZmlsZSBtdXN0IG5vdCBkZXBlbmQgb24gYW55IG1v
ZHVsZSBzcGVjaWZpYyB0byB0aGUgV2ViU29ja2V0IHByb3RvY29sLgotIiIiCi0KLQotZnJvbSBt
b2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGh0dHBfaGVhZGVyX3V0aWwKLQotCi0jIEFkZGl0aW9uYWwg
bG9nIGxldmVsIGRlZmluaXRpb25zLgotTE9HTEVWRUxfRklORSA9IDkKLQotIyBDb25zdGFudHMg
aW5kaWNhdGluZyBXZWJTb2NrZXQgcHJvdG9jb2wgdmVyc2lvbi4KLVZFUlNJT05fSElYSUU3NSA9
IC0xCi1WRVJTSU9OX0hZQkkwMCA9IDAKLVZFUlNJT05fSFlCSTAxID0gMQotVkVSU0lPTl9IWUJJ
MDIgPSAyCi1WRVJTSU9OX0hZQkkwMyA9IDIKLVZFUlNJT05fSFlCSTA0ID0gNAotVkVSU0lPTl9I
WUJJMDUgPSA1Ci1WRVJTSU9OX0hZQkkwNiA9IDYKLVZFUlNJT05fSFlCSTA3ID0gNwotVkVSU0lP
Tl9IWUJJMDggPSA4Ci1WRVJTSU9OX0hZQkkwOSA9IDgKLVZFUlNJT05fSFlCSTEwID0gOAotVkVS
U0lPTl9IWUJJMTEgPSA4Ci1WRVJTSU9OX0hZQkkxMiA9IDgKLVZFUlNJT05fSFlCSTEzID0gMTMK
LVZFUlNJT05fSFlCSTE0ID0gMTMKLVZFUlNJT05fSFlCSTE1ID0gMTMKLVZFUlNJT05fSFlCSTE2
ID0gMTMKLVZFUlNJT05fSFlCSTE3ID0gMTMKLQotIyBDb25zdGFudHMgaW5kaWNhdGluZyBXZWJT
b2NrZXQgcHJvdG9jb2wgbGF0ZXN0IHZlcnNpb24uCi1WRVJTSU9OX0hZQklfTEFURVNUID0gVkVS
U0lPTl9IWUJJMTMKLQotIyBQb3J0IG51bWJlcnMKLURFRkFVTFRfV0VCX1NPQ0tFVF9QT1JUID0g
ODAKLURFRkFVTFRfV0VCX1NPQ0tFVF9TRUNVUkVfUE9SVCA9IDQ0MwotCi0jIFNjaGVtZXMKLVdF
Ql9TT0NLRVRfU0NIRU1FID0gJ3dzJwotV0VCX1NPQ0tFVF9TRUNVUkVfU0NIRU1FID0gJ3dzcycK
LQotIyBGcmFtZSBvcGNvZGVzIGRlZmluZWQgaW4gdGhlIHNwZWMuCi1PUENPREVfQ09OVElOVUFU
SU9OID0gMHgwCi1PUENPREVfVEVYVCA9IDB4MQotT1BDT0RFX0JJTkFSWSA9IDB4MgotT1BDT0RF
X0NMT1NFID0gMHg4Ci1PUENPREVfUElORyA9IDB4OQotT1BDT0RFX1BPTkcgPSAweGEKLQotIyBV
VUlEcyB1c2VkIGJ5IEh5QmkgMDQgYW5kIGxhdGVyIG9wZW5pbmcgaGFuZHNoYWtlIGFuZCBmcmFt
ZSBtYXNraW5nLgotV0VCU09DS0VUX0FDQ0VQVF9VVUlEID0gJzI1OEVBRkE1LUU5MTQtNDdEQS05
NUNBLUM1QUIwREM4NUIxMScKLQotIyBPcGVuaW5nIGhhbmRzaGFrZSBoZWFkZXIgbmFtZXMgYW5k
IGV4cGVjdGVkIHZhbHVlcy4KLVVQR1JBREVfSEVBREVSID0gJ1VwZ3JhZGUnCi1XRUJTT0NLRVRf
VVBHUkFERV9UWVBFID0gJ3dlYnNvY2tldCcKLVdFQlNPQ0tFVF9VUEdSQURFX1RZUEVfSElYSUU3
NSA9ICdXZWJTb2NrZXQnCi1DT05ORUNUSU9OX0hFQURFUiA9ICdDb25uZWN0aW9uJwotVVBHUkFE
RV9DT05ORUNUSU9OX1RZUEUgPSAnVXBncmFkZScKLUhPU1RfSEVBREVSID0gJ0hvc3QnCi1PUklH
SU5fSEVBREVSID0gJ09yaWdpbicKLVNFQ19XRUJTT0NLRVRfT1JJR0lOX0hFQURFUiA9ICdTZWMt
V2ViU29ja2V0LU9yaWdpbicKLVNFQ19XRUJTT0NLRVRfS0VZX0hFQURFUiA9ICdTZWMtV2ViU29j
a2V0LUtleScKLVNFQ19XRUJTT0NLRVRfQUNDRVBUX0hFQURFUiA9ICdTZWMtV2ViU29ja2V0LUFj
Y2VwdCcKLVNFQ19XRUJTT0NLRVRfVkVSU0lPTl9IRUFERVIgPSAnU2VjLVdlYlNvY2tldC1WZXJz
aW9uJwotU0VDX1dFQlNPQ0tFVF9QUk9UT0NPTF9IRUFERVIgPSAnU2VjLVdlYlNvY2tldC1Qcm90
b2NvbCcKLVNFQ19XRUJTT0NLRVRfRVhURU5TSU9OU19IRUFERVIgPSAnU2VjLVdlYlNvY2tldC1F
eHRlbnNpb25zJwotU0VDX1dFQlNPQ0tFVF9EUkFGVF9IRUFERVIgPSAnU2VjLVdlYlNvY2tldC1E
cmFmdCcKLVNFQ19XRUJTT0NLRVRfS0VZMV9IRUFERVIgPSAnU2VjLVdlYlNvY2tldC1LZXkxJwot
U0VDX1dFQlNPQ0tFVF9LRVkyX0hFQURFUiA9ICdTZWMtV2ViU29ja2V0LUtleTInCi1TRUNfV0VC
U09DS0VUX0xPQ0FUSU9OX0hFQURFUiA9ICdTZWMtV2ViU29ja2V0LUxvY2F0aW9uJwotCi0jIEV4
dGVuc2lvbnMKLURFRkxBVEVfRlJBTUVfRVhURU5TSU9OID0gJ2RlZmxhdGUtZnJhbWUnCi1QRVJN
RVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OID0gJ3Blcm1lc3NhZ2UtZGVmbGF0ZScKLVhfV0VCS0lU
X0RFRkxBVEVfRlJBTUVfRVhURU5TSU9OID0gJ3gtd2Via2l0LWRlZmxhdGUtZnJhbWUnCi1NVVhf
RVhURU5TSU9OID0gJ211eF9ET19OT1RfVVNFJwotCi0jIFN0YXR1cyBjb2RlcwotIyBDb2RlIFNU
QVRVU19OT19TVEFUVVNfUkVDRUlWRUQsIFNUQVRVU19BQk5PUk1BTF9DTE9TVVJFLCBhbmQKLSMg
U1RBVFVTX1RMU19IQU5EU0hBS0UgYXJlIHBzZXVkbyBjb2RlcyB0byBpbmRpY2F0ZSBzcGVjaWZp
YyBlcnJvciBjYXNlcy4KLSMgQ291bGQgbm90IGJlIHVzZWQgZm9yIGNvZGVzIGluIGFjdHVhbCBj
bG9zaW5nIGZyYW1lcy4KLSMgQXBwbGljYXRpb24gbGV2ZWwgZXJyb3JzIG11c3QgdXNlIGNvZGVz
IGluIHRoZSByYW5nZQotIyBTVEFUVVNfVVNFUl9SRUdJU1RFUkVEX0JBU0UgdG8gU1RBVFVTX1VT
RVJfUFJJVkFURV9NQVguIFRoZSBjb2RlcyBpbiB0aGUKLSMgcmFuZ2UgU1RBVFVTX1VTRVJfUkVH
SVNURVJFRF9CQVNFIHRvIFNUQVRVU19VU0VSX1JFR0lTVEVSRURfTUFYIGFyZSBtYW5hZ2VkCi0j
IGJ5IElBTkEuIFVzdWFsbHkgYXBwbGljYXRpb24gbXVzdCBkZWZpbmUgdXNlciBwcm90b2NvbCBs
ZXZlbCBlcnJvcnMgaW4gdGhlCi0jIHJhbmdlIFNUQVRVU19VU0VSX1BSSVZBVEVfQkFTRSB0byBT
VEFUVVNfVVNFUl9QUklWQVRFX01BWC4KLVNUQVRVU19OT1JNQUxfQ0xPU1VSRSA9IDEwMDAKLVNU
QVRVU19HT0lOR19BV0FZID0gMTAwMQotU1RBVFVTX1BST1RPQ09MX0VSUk9SID0gMTAwMgotU1RB
VFVTX1VOU1VQUE9SVEVEX0RBVEEgPSAxMDAzCi1TVEFUVVNfTk9fU1RBVFVTX1JFQ0VJVkVEID0g
MTAwNQotU1RBVFVTX0FCTk9STUFMX0NMT1NVUkUgPSAxMDA2Ci1TVEFUVVNfSU5WQUxJRF9GUkFN
RV9QQVlMT0FEX0RBVEEgPSAxMDA3Ci1TVEFUVVNfUE9MSUNZX1ZJT0xBVElPTiA9IDEwMDgKLVNU
QVRVU19NRVNTQUdFX1RPT19CSUcgPSAxMDA5Ci1TVEFUVVNfTUFOREFUT1JZX0VYVEVOU0lPTiA9
IDEwMTAKLVNUQVRVU19JTlRFUk5BTF9FTkRQT0lOVF9FUlJPUiA9IDEwMTEKLVNUQVRVU19UTFNf
SEFORFNIQUtFID0gMTAxNQotU1RBVFVTX1VTRVJfUkVHSVNURVJFRF9CQVNFID0gMzAwMAotU1RB
VFVTX1VTRVJfUkVHSVNURVJFRF9NQVggPSAzOTk5Ci1TVEFUVVNfVVNFUl9QUklWQVRFX0JBU0Ug
PSA0MDAwCi1TVEFUVVNfVVNFUl9QUklWQVRFX01BWCA9IDQ5OTkKLSMgRm9sbG93aW5nIGRlZmlu
aXRpb25zIGFyZSBhbGlhc2VzIHRvIGtlZXAgY29tcGF0aWJpbGl0eS4gQXBwbGljYXRpb25zIG11
c3QKLSMgbm90IHVzZSB0aGVzZSBvYnNvbGV0ZWQgZGVmaW5pdGlvbnMgYW55bW9yZS4KLVNUQVRV
U19OT1JNQUwgPSBTVEFUVVNfTk9STUFMX0NMT1NVUkUKLVNUQVRVU19VTlNVUFBPUlRFRCA9IFNU
QVRVU19VTlNVUFBPUlRFRF9EQVRBCi1TVEFUVVNfQ09ERV9OT1RfQVZBSUxBQkxFID0gU1RBVFVT
X05PX1NUQVRVU19SRUNFSVZFRAotU1RBVFVTX0FCTk9STUFMX0NMT1NFID0gU1RBVFVTX0FCTk9S
TUFMX0NMT1NVUkUKLVNUQVRVU19JTlZBTElEX0ZSQU1FX1BBWUxPQUQgPSBTVEFUVVNfSU5WQUxJ
RF9GUkFNRV9QQVlMT0FEX0RBVEEKLVNUQVRVU19NQU5EQVRPUllfRVhUID0gU1RBVFVTX01BTkRB
VE9SWV9FWFRFTlNJT04KLQotIyBIVFRQIHN0YXR1cyBjb2RlcwotSFRUUF9TVEFUVVNfQkFEX1JF
UVVFU1QgPSA0MDAKLUhUVFBfU1RBVFVTX0ZPUkJJRERFTiA9IDQwMwotSFRUUF9TVEFUVVNfTk9U
X0ZPVU5EID0gNDA0Ci0KLQotZGVmIGlzX2NvbnRyb2xfb3Bjb2RlKG9wY29kZSk6Ci0gICAgcmV0
dXJuIChvcGNvZGUgPj4gMykgPT0gMQotCi0KLWNsYXNzIEV4dGVuc2lvblBhcmFtZXRlcihvYmpl
Y3QpOgotCi0gICAgIiIiVGhpcyBpcyBleGNoYW5nZWQgb24gZXh0ZW5zaW9uIG5lZ290aWF0aW9u
IGluIG9wZW5pbmcgaGFuZHNoYWtlLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUp
OgotICAgICAgICBzZWxmLl9uYW1lID0gbmFtZQotICAgICAgICAjIFRPRE8odHlvc2hpbm8pOiBD
aGFuZ2UgdGhlIGRhdGEgc3RydWN0dXJlIHRvIG1vcmUgZWZmaWNpZW50IG9uZSBzdWNoCi0gICAg
ICAgICMgYXMgZGljdCB3aGVuIHRoZSBzcGVjIGNoYW5nZXMgdG8gc2F5IGxpa2UKLSAgICAgICAg
IyAtIFBhcmFtZXRlciBuYW1lcyBtdXN0IGJlIHVuaXF1ZQotICAgICAgICAjIC0gVGhlIG9yZGVy
IG9mIHBhcmFtZXRlcnMgaXMgbm90IHNpZ25pZmljYW50Ci0gICAgICAgIHNlbGYuX3BhcmFtZXRl
cnMgPSBbXQotCi0gICAgZGVmIG5hbWUoc2VsZik6Ci0gICAgICAgICIiIlJldHVybiB0aGUgZXh0
ZW5zaW9uIG5hbWUuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9uYW1lCi0KLSAgICBkZWYgYWRk
X3BhcmFtZXRlcihzZWxmLCBuYW1lLCB2YWx1ZSk6Ci0gICAgICAgICIiIkFkZCBhIHBhcmFtZXRl
ci4iIiIKLSAgICAgICAgc2VsZi5fcGFyYW1ldGVycy5hcHBlbmQoKG5hbWUsIHZhbHVlKSkKLQot
ICAgIGRlZiBnZXRfcGFyYW1ldGVycyhzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSBwYXJh
bWV0ZXJzLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5fcGFyYW1ldGVycwotCi0gICAgZGVmIGdl
dF9wYXJhbWV0ZXJfbmFtZXMoc2VsZik6Ci0gICAgICAgICIiIlJldHVybiB0aGUgbmFtZXMgb2Yg
dGhlIHBhcmFtZXRlcnMuIiIiCi0gICAgICAgIHJldHVybiBbbmFtZSBmb3IgbmFtZSwgdW51c2Vk
X3ZhbHVlIGluIHNlbGYuX3BhcmFtZXRlcnNdCi0KLSAgICBkZWYgaGFzX3BhcmFtZXRlcihzZWxm
LCBuYW1lKToKLSAgICAgICAgIiIiVGVzdCBpZiBhIHBhcmFtZXRlciBleGlzdHMuIiIiCi0gICAg
ICAgIGZvciBwYXJhbV9uYW1lLCBwYXJhbV92YWx1ZSBpbiBzZWxmLl9wYXJhbWV0ZXJzOgotICAg
ICAgICAgICAgaWYgcGFyYW1fbmFtZSA9PSBuYW1lOgotICAgICAgICAgICAgICAgIHJldHVybiBU
cnVlCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgZGVmIGdldF9wYXJhbWV0ZXJfdmFsdWUo
c2VsZiwgbmFtZSk6Ci0gICAgICAgICIiIkdldCB0aGUgdmFsdWUgb2YgYSBzcGVjaWZpYyBwYXJh
bWV0ZXIuIiIiCi0gICAgICAgIGZvciBwYXJhbV9uYW1lLCBwYXJhbV92YWx1ZSBpbiBzZWxmLl9w
YXJhbWV0ZXJzOgotICAgICAgICAgICAgaWYgcGFyYW1fbmFtZSA9PSBuYW1lOgotICAgICAgICAg
ICAgICAgIHJldHVybiBwYXJhbV92YWx1ZQotCi0KLWNsYXNzIEV4dGVuc2lvblBhcnNpbmdFeGNl
cHRpb24oRXhjZXB0aW9uKToKLQotICAgICIiIkV4Y2VwdGlvbiB0byBoYW5kbGUgZXJyb3JzIGlu
IGV4dGVuc2lvbiBwYXJzaW5nLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUpOgot
ICAgICAgICBzdXBlcihFeHRlbnNpb25QYXJzaW5nRXhjZXB0aW9uLCBzZWxmKS5fX2luaXRfXyhu
YW1lKQotCi0KLWRlZiBfcGFyc2VfZXh0ZW5zaW9uX3BhcmFtKHN0YXRlLCBkZWZpbml0aW9uKToK
LSAgICBwYXJhbV9uYW1lID0gaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX3Rva2VuKHN0YXRlKQot
Ci0gICAgaWYgcGFyYW1fbmFtZSBpcyBOb25lOgotICAgICAgICByYWlzZSBFeHRlbnNpb25QYXJz
aW5nRXhjZXB0aW9uKCdObyB2YWxpZCBwYXJhbWV0ZXIgbmFtZSBmb3VuZCcpCi0KLSAgICBodHRw
X2hlYWRlcl91dGlsLmNvbnN1bWVfbHdzZXMoc3RhdGUpCi0KLSAgICBpZiBub3QgaHR0cF9oZWFk
ZXJfdXRpbC5jb25zdW1lX3N0cmluZyhzdGF0ZSwgJz0nKToKLSAgICAgICAgZGVmaW5pdGlvbi5h
ZGRfcGFyYW1ldGVyKHBhcmFtX25hbWUsIE5vbmUpCi0gICAgICAgIHJldHVybgotCi0gICAgaHR0
cF9oZWFkZXJfdXRpbC5jb25zdW1lX2x3c2VzKHN0YXRlKQotCi0gICAgIyBUT0RPKHR5b3NoaW5v
KTogQWRkIGNvZGUgdG8gdmFsaWRhdGUgdGhhdCBwYXJzZWQgcGFyYW1fdmFsdWUgaXMgdG9rZW4K
LSAgICBwYXJhbV92YWx1ZSA9IGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV90b2tlbl9vcl9xdW90
ZWRfc3RyaW5nKHN0YXRlKQotICAgIGlmIHBhcmFtX3ZhbHVlIGlzIE5vbmU6Ci0gICAgICAgIHJh
aXNlIEV4dGVuc2lvblBhcnNpbmdFeGNlcHRpb24oCi0gICAgICAgICAgICAnTm8gdmFsaWQgcGFy
YW1ldGVyIHZhbHVlIGZvdW5kIG9uIHRoZSByaWdodC1oYW5kIHNpZGUgb2YgJwotICAgICAgICAg
ICAgJ3BhcmFtZXRlciAlcicgJSBwYXJhbV9uYW1lKQotCi0gICAgZGVmaW5pdGlvbi5hZGRfcGFy
YW1ldGVyKHBhcmFtX25hbWUsIHBhcmFtX3ZhbHVlKQotCi0KLWRlZiBfcGFyc2VfZXh0ZW5zaW9u
KHN0YXRlKToKLSAgICBleHRlbnNpb25fdG9rZW4gPSBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVf
dG9rZW4oc3RhdGUpCi0gICAgaWYgZXh0ZW5zaW9uX3Rva2VuIGlzIE5vbmU6Ci0gICAgICAgIHJl
dHVybiBOb25lCi0KLSAgICBleHRlbnNpb24gPSBFeHRlbnNpb25QYXJhbWV0ZXIoZXh0ZW5zaW9u
X3Rva2VuKQotCi0gICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgaHR0cF9oZWFkZXJfdXRpbC5jb25z
dW1lX2x3c2VzKHN0YXRlKQotCi0gICAgICAgIGlmIG5vdCBodHRwX2hlYWRlcl91dGlsLmNvbnN1
bWVfc3RyaW5nKHN0YXRlLCAnOycpOgotICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICBodHRw
X2hlYWRlcl91dGlsLmNvbnN1bWVfbHdzZXMoc3RhdGUpCi0KLSAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgX3BhcnNlX2V4dGVuc2lvbl9wYXJhbShzdGF0ZSwgZXh0ZW5zaW9uKQotICAgICAgICBl
eGNlcHQgRXh0ZW5zaW9uUGFyc2luZ0V4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgcmFpc2Ug
RXh0ZW5zaW9uUGFyc2luZ0V4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnRmFpbGVkIHRvIHBh
cnNlIHBhcmFtZXRlciBmb3IgJXIgKCVyKScgJQotICAgICAgICAgICAgICAgIChleHRlbnNpb25f
dG9rZW4sIGUpKQotCi0gICAgcmV0dXJuIGV4dGVuc2lvbgotCi0KLWRlZiBwYXJzZV9leHRlbnNp
b25zKGRhdGEpOgotICAgICIiIlBhcnNlIFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIg
dmFsdWUuCi0KLSAgICBSZXR1cm5zIGEgbGlzdCBvZiBFeHRlbnNpb25QYXJhbWV0ZXIgb2JqZWN0
cy4KLSAgICBMZWFkaW5nIExXU2VzIG11c3QgYmUgdHJpbW1lZC4KLSAgICAiIiIKLSAgICBzdGF0
ZSA9IGh0dHBfaGVhZGVyX3V0aWwuUGFyc2luZ1N0YXRlKGRhdGEpCi0KLSAgICBleHRlbnNpb25f
bGlzdCA9IFtdCi0gICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgZXh0ZW5zaW9uID0gX3BhcnNlX2V4
dGVuc2lvbihzdGF0ZSkKLSAgICAgICAgaWYgZXh0ZW5zaW9uIGlzIG5vdCBOb25lOgotICAgICAg
ICAgICAgZXh0ZW5zaW9uX2xpc3QuYXBwZW5kKGV4dGVuc2lvbikKLQotICAgICAgICBodHRwX2hl
YWRlcl91dGlsLmNvbnN1bWVfbHdzZXMoc3RhdGUpCi0KLSAgICAgICAgaWYgaHR0cF9oZWFkZXJf
dXRpbC5wZWVrKHN0YXRlKSBpcyBOb25lOgotICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICBp
ZiBub3QgaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX3N0cmluZyhzdGF0ZSwgJywnKToKLSAgICAg
ICAgICAgIHJhaXNlIEV4dGVuc2lvblBhcnNpbmdFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAg
J0ZhaWxlZCB0byBwYXJzZSBTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgaGVhZGVyOiAnCi0gICAg
ICAgICAgICAgICAgJ0V4cGVjdGVkIGEgY29tbWEgYnV0IGZvdW5kICVyJyAlCi0gICAgICAgICAg
ICAgICAgaHR0cF9oZWFkZXJfdXRpbC5wZWVrKHN0YXRlKSkKLQotICAgICAgICBodHRwX2hlYWRl
cl91dGlsLmNvbnN1bWVfbHdzZXMoc3RhdGUpCi0KLSAgICBpZiBsZW4oZXh0ZW5zaW9uX2xpc3Qp
ID09IDA6Ci0gICAgICAgIHJhaXNlIEV4dGVuc2lvblBhcnNpbmdFeGNlcHRpb24oCi0gICAgICAg
ICAgICAnTm8gdmFsaWQgZXh0ZW5zaW9uIGVudHJ5IGZvdW5kJykKLQotICAgIHJldHVybiBleHRl
bnNpb25fbGlzdAotCi0KLWRlZiBmb3JtYXRfZXh0ZW5zaW9uKGV4dGVuc2lvbik6Ci0gICAgIiIi
Rm9ybWF0IGFuIEV4dGVuc2lvblBhcmFtZXRlciBvYmplY3QuIiIiCi0gICAgZm9ybWF0dGVkX3Bh
cmFtcyA9IFtleHRlbnNpb24ubmFtZSgpXQotICAgIGZvciBwYXJhbV9uYW1lLCBwYXJhbV92YWx1
ZSBpbiBleHRlbnNpb24uZ2V0X3BhcmFtZXRlcnMoKToKLSAgICAgICAgaWYgcGFyYW1fdmFsdWUg
aXMgTm9uZToKLSAgICAgICAgICAgIGZvcm1hdHRlZF9wYXJhbXMuYXBwZW5kKHBhcmFtX25hbWUp
Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBxdW90ZWRfdmFsdWUgPSBodHRwX2hlYWRlcl91
dGlsLnF1b3RlX2lmX25lY2Vzc2FyeShwYXJhbV92YWx1ZSkKLSAgICAgICAgICAgIGZvcm1hdHRl
ZF9wYXJhbXMuYXBwZW5kKCclcz0lcycgJSAocGFyYW1fbmFtZSwgcXVvdGVkX3ZhbHVlKSkKLSAg
ICByZXR1cm4gJzsgJy5qb2luKGZvcm1hdHRlZF9wYXJhbXMpCi0KLQotZGVmIGZvcm1hdF9leHRl
bnNpb25zKGV4dGVuc2lvbl9saXN0KToKLSAgICAiIiJGb3JtYXQgYSBsaXN0IG9mIEV4dGVuc2lv
blBhcmFtZXRlciBvYmplY3RzLiIiIgotICAgIGZvcm1hdHRlZF9leHRlbnNpb25fbGlzdCA9IFtd
Ci0gICAgZm9yIGV4dGVuc2lvbiBpbiBleHRlbnNpb25fbGlzdDoKLSAgICAgICAgZm9ybWF0dGVk
X2V4dGVuc2lvbl9saXN0LmFwcGVuZChmb3JtYXRfZXh0ZW5zaW9uKGV4dGVuc2lvbikpCi0gICAg
cmV0dXJuICcsICcuam9pbihmb3JtYXR0ZWRfZXh0ZW5zaW9uX2xpc3QpCi0KLQotIyB2aTpzdHM9
NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9kaXNwYXRjaC5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvbW9kX3B5d2Vic29ja2V0L2Rpc3BhdGNoLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAyNTkxZmU4YjllOWVhZjJlOGViNGQ2ZDhiY2ZjYmE3MmUwMzBiYjQxLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29j
a2V0L2Rpc3BhdGNoLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzkzICswLDAgQEAKLSMgQ29weXJp
Z2h0IDIwMTIsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotCi0KLSIiIkRpc3BhdGNoIFdlYlNvY2tldCByZXF1ZXN0LgotIiIiCi0KLQotaW1w
b3J0IGxvZ2dpbmcKLWltcG9ydCBvcwotaW1wb3J0IHJlCi0KLWZyb20gbW9kX3B5d2Vic29ja2V0
IGltcG9ydCBjb21tb24KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBoYW5kc2hha2UKLWZy
b20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBtc2d1dGlsCi1mcm9tIG1vZF9weXdlYnNvY2tldCBp
bXBvcnQgbXV4Ci1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgc3RyZWFtCi1mcm9tIG1vZF9w
eXdlYnNvY2tldCBpbXBvcnQgdXRpbAotCi0KLV9TT1VSQ0VfUEFUSF9QQVRURVJOID0gcmUuY29t
cGlsZShyJyg/aSlfd3NoXC5weSQnKQotX1NPVVJDRV9TVUZGSVggPSAnX3dzaC5weScKLV9ET19F
WFRSQV9IQU5EU0hBS0VfSEFORExFUl9OQU1FID0gJ3dlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNo
YWtlJwotX1RSQU5TRkVSX0RBVEFfSEFORExFUl9OQU1FID0gJ3dlYl9zb2NrZXRfdHJhbnNmZXJf
ZGF0YScKLV9QQVNTSVZFX0NMT1NJTkdfSEFORFNIQUtFX0hBTkRMRVJfTkFNRSA9ICgKLSAgICAn
d2ViX3NvY2tldF9wYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlJykKLQotCi1jbGFzcyBEaXNwYXRj
aEV4Y2VwdGlvbihFeGNlcHRpb24pOgotICAgICIiIkV4Y2VwdGlvbiBpbiBkaXNwYXRjaGluZyBX
ZWJTb2NrZXQgcmVxdWVzdC4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBzdGF0
dXM9Y29tbW9uLkhUVFBfU1RBVFVTX05PVF9GT1VORCk6Ci0gICAgICAgIHN1cGVyKERpc3BhdGNo
RXhjZXB0aW9uLCBzZWxmKS5fX2luaXRfXyhuYW1lKQotICAgICAgICBzZWxmLnN0YXR1cyA9IHN0
YXR1cwotCi0KLWRlZiBfZGVmYXVsdF9wYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlX2hhbmRsZXIo
cmVxdWVzdCk6Ci0gICAgIiIiRGVmYXVsdCB3ZWJfc29ja2V0X3Bhc3NpdmVfY2xvc2luZ19oYW5k
c2hha2UgaGFuZGxlci4iIiIKLQotICAgIHJldHVybiBjb21tb24uU1RBVFVTX05PUk1BTF9DTE9T
VVJFLCAnJwotCi0KLWRlZiBfbm9ybWFsaXplX3BhdGgocGF0aCk6Ci0gICAgIiIiTm9ybWFsaXpl
IHBhdGguCi0KLSAgICBBcmdzOgotICAgICAgICBwYXRoOiB0aGUgcGF0aCB0byBub3JtYWxpemUu
Ci0KLSAgICBQYXRoIGlzIGNvbnZlcnRlZCB0byB0aGUgYWJzb2x1dGUgcGF0aC4KLSAgICBUaGUg
aW5wdXQgcGF0aCBjYW4gdXNlIGVpdGhlciAnXFwnIG9yICcvJyBhcyB0aGUgc2VwYXJhdG9yLgot
ICAgIFRoZSBub3JtYWxpemVkIHBhdGggYWx3YXlzIHVzZXMgJy8nIHJlZ2FyZGxlc3Mgb2YgdGhl
IHBsYXRmb3JtLgotICAgICIiIgotCi0gICAgcGF0aCA9IHBhdGgucmVwbGFjZSgnXFwnLCBvcy5w
YXRoLnNlcCkKLSAgICBwYXRoID0gb3MucGF0aC5yZWFscGF0aChwYXRoKQotICAgIHBhdGggPSBw
YXRoLnJlcGxhY2UoJ1xcJywgJy8nKQotICAgIHJldHVybiBwYXRoCi0KLQotZGVmIF9jcmVhdGVf
cGF0aF90b19yZXNvdXJjZV9jb252ZXJ0ZXIoYmFzZV9kaXIpOgotICAgICIiIlJldHVybnMgYSBm
dW5jdGlvbiB0aGF0IGNvbnZlcnRzIHRoZSBwYXRoIG9mIGEgV2ViU29ja2V0IGhhbmRsZXIgc291
cmNlCi0gICAgZmlsZSB0byBhIHJlc291cmNlIHN0cmluZyBieSByZW1vdmluZyB0aGUgcGF0aCB0
byB0aGUgYmFzZSBkaXJlY3RvcnkgZnJvbQotICAgIGl0cyBoZWFkLCByZW1vdmluZyBfU09VUkNF
X1NVRkZJWCBmcm9tIGl0cyB0YWlsLCBhbmQgcmVwbGFjaW5nIHBhdGgKLSAgICBzZXBhcmF0b3Jz
IGluIGl0IHdpdGggJy8nLgotCi0gICAgQXJnczoKLSAgICAgICAgYmFzZV9kaXI6IHRoZSBwYXRo
IHRvIHRoZSBiYXNlIGRpcmVjdG9yeS4KLSAgICAiIiIKLQotICAgIGJhc2VfZGlyID0gX25vcm1h
bGl6ZV9wYXRoKGJhc2VfZGlyKQotCi0gICAgYmFzZV9sZW4gPSBsZW4oYmFzZV9kaXIpCi0gICAg
c3VmZml4X2xlbiA9IGxlbihfU09VUkNFX1NVRkZJWCkKLQotICAgIGRlZiBjb252ZXJ0ZXIocGF0
aCk6Ci0gICAgICAgIGlmIG5vdCBwYXRoLmVuZHN3aXRoKF9TT1VSQ0VfU1VGRklYKToKLSAgICAg
ICAgICAgIHJldHVybiBOb25lCi0gICAgICAgICMgX25vcm1hbGl6ZV9wYXRoIG11c3Qgbm90IGJl
IHVzZWQgYmVjYXVzZSByZXNvbHZpbmcgc3ltbGluayBicmVha3MKLSAgICAgICAgIyBmb2xsb3dp
bmcgcGF0aCBjaGVjay4KLSAgICAgICAgcGF0aCA9IHBhdGgucmVwbGFjZSgnXFwnLCAnLycpCi0g
ICAgICAgIGlmIG5vdCBwYXRoLnN0YXJ0c3dpdGgoYmFzZV9kaXIpOgotICAgICAgICAgICAgcmV0
dXJuIE5vbmUKLSAgICAgICAgcmV0dXJuIHBhdGhbYmFzZV9sZW46LXN1ZmZpeF9sZW5dCi0KLSAg
ICByZXR1cm4gY29udmVydGVyCi0KLQotZGVmIF9lbnVtZXJhdGVfaGFuZGxlcl9maWxlX3BhdGhz
KGRpcmVjdG9yeSk6Ci0gICAgIiIiUmV0dXJucyBhIGdlbmVyYXRvciB0aGF0IGVudW1lcmF0ZXMg
V2ViU29ja2V0IEhhbmRsZXIgc291cmNlIGZpbGUgbmFtZXMKLSAgICBpbiB0aGUgZ2l2ZW4gZGly
ZWN0b3J5LgotICAgICIiIgotCi0gICAgZm9yIHJvb3QsIHVudXNlZF9kaXJzLCBmaWxlcyBpbiBv
cy53YWxrKGRpcmVjdG9yeSk6Ci0gICAgICAgIGZvciBiYXNlIGluIGZpbGVzOgotICAgICAgICAg
ICAgcGF0aCA9IG9zLnBhdGguam9pbihyb290LCBiYXNlKQotICAgICAgICAgICAgaWYgX1NPVVJD
RV9QQVRIX1BBVFRFUk4uc2VhcmNoKHBhdGgpOgotICAgICAgICAgICAgICAgIHlpZWxkIHBhdGgK
LQotCi1jbGFzcyBfSGFuZGxlclN1aXRlKG9iamVjdCk6Ci0gICAgIiIiQSBoYW5kbGVyIHN1aXRl
IGhvbGRlciBjbGFzcy4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkb19leHRyYV9oYW5k
c2hha2UsIHRyYW5zZmVyX2RhdGEsCi0gICAgICAgICAgICAgICAgIHBhc3NpdmVfY2xvc2luZ19o
YW5kc2hha2UpOgotICAgICAgICBzZWxmLmRvX2V4dHJhX2hhbmRzaGFrZSA9IGRvX2V4dHJhX2hh
bmRzaGFrZQotICAgICAgICBzZWxmLnRyYW5zZmVyX2RhdGEgPSB0cmFuc2Zlcl9kYXRhCi0gICAg
ICAgIHNlbGYucGFzc2l2ZV9jbG9zaW5nX2hhbmRzaGFrZSA9IHBhc3NpdmVfY2xvc2luZ19oYW5k
c2hha2UKLQotCi1kZWYgX3NvdXJjZV9oYW5kbGVyX2ZpbGUoaGFuZGxlcl9kZWZpbml0aW9uKToK
LSAgICAiIiJTb3VyY2UgYSBoYW5kbGVyIGRlZmluaXRpb24gc3RyaW5nLgotCi0gICAgQXJnczoK
LSAgICAgICAgaGFuZGxlcl9kZWZpbml0aW9uOiBhIHN0cmluZyBjb250YWluaW5nIFB5dGhvbiBz
dGF0ZW1lbnRzIHRoYXQgZGVmaW5lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxl
ciBmdW5jdGlvbnMuCi0gICAgIiIiCi0KLSAgICBnbG9iYWxfZGljID0ge30KLSAgICB0cnk6Ci0g
ICAgICAgIGV4ZWMoaGFuZGxlcl9kZWZpbml0aW9uLCBnbG9iYWxfZGljKQotICAgIGV4Y2VwdCBF
eGNlcHRpb246Ci0gICAgICAgIHJhaXNlIERpc3BhdGNoRXhjZXB0aW9uKCdFcnJvciBpbiBzb3Vy
Y2luZyBoYW5kbGVyOicgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGlsLmdl
dF9zdGFja190cmFjZSgpKQotICAgIHBhc3NpdmVfY2xvc2luZ19oYW5kc2hha2VfaGFuZGxlciA9
IE5vbmUKLSAgICB0cnk6Ci0gICAgICAgIHBhc3NpdmVfY2xvc2luZ19oYW5kc2hha2VfaGFuZGxl
ciA9IF9leHRyYWN0X2hhbmRsZXIoCi0gICAgICAgICAgICBnbG9iYWxfZGljLCBfUEFTU0lWRV9D
TE9TSU5HX0hBTkRTSEFLRV9IQU5ETEVSX05BTUUpCi0gICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAg
ICAgICAgcGFzc2l2ZV9jbG9zaW5nX2hhbmRzaGFrZV9oYW5kbGVyID0gKAotICAgICAgICAgICAg
X2RlZmF1bHRfcGFzc2l2ZV9jbG9zaW5nX2hhbmRzaGFrZV9oYW5kbGVyKQotICAgIHJldHVybiBf
SGFuZGxlclN1aXRlKAotICAgICAgICBfZXh0cmFjdF9oYW5kbGVyKGdsb2JhbF9kaWMsIF9ET19F
WFRSQV9IQU5EU0hBS0VfSEFORExFUl9OQU1FKSwKLSAgICAgICAgX2V4dHJhY3RfaGFuZGxlcihn
bG9iYWxfZGljLCBfVFJBTlNGRVJfREFUQV9IQU5ETEVSX05BTUUpLAotICAgICAgICBwYXNzaXZl
X2Nsb3NpbmdfaGFuZHNoYWtlX2hhbmRsZXIpCi0KLQotZGVmIF9leHRyYWN0X2hhbmRsZXIoZGlj
LCBuYW1lKToKLSAgICAiIiJFeHRyYWN0cyBhIGNhbGxhYmxlIHdpdGggdGhlIHNwZWNpZmllZCBu
YW1lIGZyb20gdGhlIGdpdmVuIGRpY3Rpb25hcnkKLSAgICBkaWMuCi0gICAgIiIiCi0KLSAgICBp
ZiBuYW1lIG5vdCBpbiBkaWM6Ci0gICAgICAgIHJhaXNlIERpc3BhdGNoRXhjZXB0aW9uKCclcyBp
cyBub3QgZGVmaW5lZC4nICUgbmFtZSkKLSAgICBoYW5kbGVyID0gZGljW25hbWVdCi0gICAgaWYg
bm90IGNhbGxhYmxlKGhhbmRsZXIpOgotICAgICAgICByYWlzZSBEaXNwYXRjaEV4Y2VwdGlvbign
JXMgaXMgbm90IGNhbGxhYmxlLicgJSBuYW1lKQotICAgIHJldHVybiBoYW5kbGVyCi0KLQotY2xh
c3MgRGlzcGF0Y2hlcihvYmplY3QpOgotICAgICIiIkRpc3BhdGNoZXMgV2ViU29ja2V0IHJlcXVl
c3RzLgotCi0gICAgVGhpcyBjbGFzcyBtYWludGFpbnMgYSBtYXAgZnJvbSByZXNvdXJjZSBuYW1l
IHRvIGhhbmRsZXJzLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKAotICAgICAgICBzZWxm
LCByb290X2Rpciwgc2Nhbl9kaXI9Tm9uZSwKLSAgICAgICAgYWxsb3dfaGFuZGxlcnNfb3V0c2lk
ZV9yb290X2Rpcj1UcnVlKToKLSAgICAgICAgIiIiQ29uc3RydWN0IGFuIGluc3RhbmNlLgotCi0g
ICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICByb290X2RpcjogVGhlIGRpcmVjdG9yeSB3aGVyZSBo
YW5kbGVyIGRlZmluaXRpb24gZmlsZXMgYXJlCi0gICAgICAgICAgICAgICAgICAgICAgcGxhY2Vk
LgotICAgICAgICAgICAgc2Nhbl9kaXI6IFRoZSBkaXJlY3Rvcnkgd2hlcmUgaGFuZGxlciBkZWZp
bml0aW9uIGZpbGVzIGFyZQotICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaGVkLiBzY2FuX2Rp
ciBtdXN0IGJlIGEgZGlyZWN0b3J5IHVuZGVyIHJvb3RfZGlyLAotICAgICAgICAgICAgICAgICAg
ICAgIGluY2x1ZGluZyByb290X2RpciBpdHNlbGYuICBJZiBzY2FuX2RpciBpcyBOb25lLAotICAg
ICAgICAgICAgICAgICAgICAgIHJvb3RfZGlyIGlzIHVzZWQgYXMgc2Nhbl9kaXIuIHNjYW5fZGly
IGNhbiBiZSB1c2VmdWwKLSAgICAgICAgICAgICAgICAgICAgICBpbiBzYXZpbmcgc2NhbiB0aW1l
IHdoZW4gcm9vdF9kaXIgY29udGFpbnMgbWFueQotICAgICAgICAgICAgICAgICAgICAgIHN1YmRp
cmVjdG9yaWVzLgotICAgICAgICAgICAgYWxsb3dfaGFuZGxlcnNfb3V0c2lkZV9yb290X2Rpcjog
U2NhbnMgaGFuZGxlciBmaWxlcyBldmVuIGlmIHRoZWlyCi0gICAgICAgICAgICAgICAgICAgICAg
Y2Fub25pY2FsIHBhdGggaXMgbm90IHVuZGVyIHJvb3RfZGlyLgotICAgICAgICAiIiIKLQotICAg
ICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKLQotICAgICAg
ICBzZWxmLl9oYW5kbGVyX3N1aXRlX21hcCA9IHt9Ci0gICAgICAgIHNlbGYuX3NvdXJjZV93YXJu
aW5ncyA9IFtdCi0gICAgICAgIGlmIHNjYW5fZGlyIGlzIE5vbmU6Ci0gICAgICAgICAgICBzY2Fu
X2RpciA9IHJvb3RfZGlyCi0gICAgICAgIGlmIG5vdCBvcy5wYXRoLnJlYWxwYXRoKHNjYW5fZGly
KS5zdGFydHN3aXRoKAotICAgICAgICAgICAgICAgIG9zLnBhdGgucmVhbHBhdGgocm9vdF9kaXIp
KToKLSAgICAgICAgICAgIHJhaXNlIERpc3BhdGNoRXhjZXB0aW9uKCdzY2FuX2RpcjolcyBtdXN0
IGJlIGEgZGlyZWN0b3J5IHVuZGVyICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdyb290X2Rpcjolcy4nICUgKHNjYW5fZGlyLCByb290X2RpcikpCi0gICAgICAgIHNlbGYu
X3NvdXJjZV9oYW5kbGVyX2ZpbGVzX2luX2RpcigKLSAgICAgICAgICAgIHJvb3RfZGlyLCBzY2Fu
X2RpciwgYWxsb3dfaGFuZGxlcnNfb3V0c2lkZV9yb290X2RpcikKLQotICAgIGRlZiBhZGRfcmVz
b3VyY2VfcGF0aF9hbGlhcyhzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
bGlhc19yZXNvdXJjZV9wYXRoLCBleGlzdGluZ19yZXNvdXJjZV9wYXRoKToKLSAgICAgICAgIiIi
QWRkIHJlc291cmNlIHBhdGggYWxpYXMuCi0KLSAgICAgICAgT25jZSBhZGRlZCwgcmVxdWVzdCB0
byBhbGlhc19yZXNvdXJjZV9wYXRoIHdvdWxkIGJlIGhhbmRsZWQgYnkKLSAgICAgICAgaGFuZGxl
ciByZWdpc3RlcmVkIGZvciBleGlzdGluZ19yZXNvdXJjZV9wYXRoLgotCi0gICAgICAgIEFyZ3M6
Ci0gICAgICAgICAgICBhbGlhc19yZXNvdXJjZV9wYXRoOiBhbGlhcyByZXNvdXJjZSBwYXRoCi0g
ICAgICAgICAgICBleGlzdGluZ19yZXNvdXJjZV9wYXRoOiBleGlzdGluZyByZXNvdXJjZSBwYXRo
Ci0gICAgICAgICIiIgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBoYW5kbGVyX3N1aXRlID0g
c2VsZi5faGFuZGxlcl9zdWl0ZV9tYXBbZXhpc3RpbmdfcmVzb3VyY2VfcGF0aF0KLSAgICAgICAg
ICAgIHNlbGYuX2hhbmRsZXJfc3VpdGVfbWFwW2FsaWFzX3Jlc291cmNlX3BhdGhdID0gaGFuZGxl
cl9zdWl0ZQotICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICByYWlzZSBEaXNw
YXRjaEV4Y2VwdGlvbignTm8gaGFuZGxlciBmb3I6ICVyJyAlCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBleGlzdGluZ19yZXNvdXJjZV9wYXRoKQotCi0gICAgZGVmIHNvdXJj
ZV93YXJuaW5ncyhzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIHdhcm5pbmdzIGluIHNvdXJjaW5n
IGhhbmRsZXJzLiIiIgotCi0gICAgICAgIHJldHVybiBzZWxmLl9zb3VyY2Vfd2FybmluZ3MKLQot
ICAgIGRlZiBkb19leHRyYV9oYW5kc2hha2Uoc2VsZiwgcmVxdWVzdCk6Ci0gICAgICAgICIiIkRv
IGV4dHJhIGNoZWNraW5nIGluIFdlYlNvY2tldCBoYW5kc2hha2UuCi0KLSAgICAgICAgU2VsZWN0
IGEgaGFuZGxlciBiYXNlZCBvbiByZXF1ZXN0LnVyaSBhbmQgY2FsbCBpdHMKLSAgICAgICAgd2Vi
X3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UgZnVuY3Rpb24uCi0KLSAgICAgICAgQXJnczoKLSAg
ICAgICAgICAgIHJlcXVlc3Q6IG1vZF9weXRob24gcmVxdWVzdC4KLQotICAgICAgICBSYWlzZXM6
Ci0gICAgICAgICAgICBEaXNwYXRjaEV4Y2VwdGlvbjogd2hlbiBoYW5kbGVyIHdhcyBub3QgZm91
bmQKLSAgICAgICAgICAgIEFib3J0ZWRCeVVzZXJFeGNlcHRpb246IHdoZW4gdXNlciBoYW5kbGVy
IGFib3J0IGNvbm5lY3Rpb24KLSAgICAgICAgICAgIEhhbmRzaGFrZUV4Y2VwdGlvbjogd2hlbiBv
cGVuaW5nIGhhbmRzaGFrZSBmYWlsZWQKLSAgICAgICAgIiIiCi0KLSAgICAgICAgaGFuZGxlcl9z
dWl0ZSA9IHNlbGYuZ2V0X2hhbmRsZXJfc3VpdGUocmVxdWVzdC53c19yZXNvdXJjZSkKLSAgICAg
ICAgaWYgaGFuZGxlcl9zdWl0ZSBpcyBOb25lOgotICAgICAgICAgICAgcmFpc2UgRGlzcGF0Y2hF
eGNlcHRpb24oJ05vIGhhbmRsZXIgZm9yOiAlcicgJSByZXF1ZXN0LndzX3Jlc291cmNlKQotICAg
ICAgICBkb19leHRyYV9oYW5kc2hha2VfID0gaGFuZGxlcl9zdWl0ZS5kb19leHRyYV9oYW5kc2hh
a2UKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZG9fZXh0cmFfaGFuZHNoYWtlXyhyZXF1ZXN0
KQotICAgICAgICBleGNlcHQgaGFuZHNoYWtlLkFib3J0ZWRCeVVzZXJFeGNlcHRpb24gYXMgZToK
LSAgICAgICAgICAgICMgUmUtcmFpc2UgdG8gdGVsbCB0aGUgY2FsbGVyIG9mIHRoaXMgZnVuY3Rp
b24gdG8gZmluaXNoIHRoaXMKLSAgICAgICAgICAgICMgY29ubmVjdGlvbiB3aXRob3V0IHNlbmRp
bmcgYW55IGVycm9yLgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCclcycsIHV0aWwu
Z2V0X3N0YWNrX3RyYWNlKCkpCi0gICAgICAgICAgICByYWlzZQotICAgICAgICBleGNlcHQgRXhj
ZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICB1dGlsLnByZXBlbmRfbWVzc2FnZV90b19leGNlcHRp
b24oCi0gICAgICAgICAgICAgICAgICAgICclcyByYWlzZWQgZXhjZXB0aW9uIGZvciAlczogJyAl
ICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBfRE9fRVhUUkFfSEFORFNIQUtFX0hBTkRM
RVJfTkFNRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LndzX3Jlc291cmNl
KSwKLSAgICAgICAgICAgICAgICAgICAgZSkKLSAgICAgICAgICAgIHJhaXNlIGhhbmRzaGFrZS5I
YW5kc2hha2VFeGNlcHRpb24oZSwgY29tbW9uLkhUVFBfU1RBVFVTX0ZPUkJJRERFTikKLQotICAg
IGRlZiB0cmFuc2Zlcl9kYXRhKHNlbGYsIHJlcXVlc3QpOgotICAgICAgICAiIiJMZXQgYSBoYW5k
bGVyIHRyYW5zZmVyX2RhdGEgd2l0aCBhIFdlYlNvY2tldCBjbGllbnQuCi0KLSAgICAgICAgU2Vs
ZWN0IGEgaGFuZGxlciBiYXNlZCBvbiByZXF1ZXN0LndzX3Jlc291cmNlIGFuZCBjYWxsIGl0cwot
ICAgICAgICB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEgZnVuY3Rpb24uCi0KLSAgICAgICAgQXJn
czoKLSAgICAgICAgICAgIHJlcXVlc3Q6IG1vZF9weXRob24gcmVxdWVzdC4KLQotICAgICAgICBS
YWlzZXM6Ci0gICAgICAgICAgICBEaXNwYXRjaEV4Y2VwdGlvbjogd2hlbiBoYW5kbGVyIHdhcyBu
b3QgZm91bmQKLSAgICAgICAgICAgIEFib3J0ZWRCeVVzZXJFeGNlcHRpb246IHdoZW4gdXNlciBo
YW5kbGVyIGFib3J0IGNvbm5lY3Rpb24KLSAgICAgICAgIiIiCi0KLSAgICAgICAgIyBUT0RPKHR5
b3NoaW5vKTogVGVybWluYXRlIHVuZGVybHlpbmcgVENQIGNvbm5lY3Rpb24gaWYgcG9zc2libGUu
Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIG11eC51c2VfbXV4KHJlcXVlc3QpOgotICAg
ICAgICAgICAgICAgIG11eC5zdGFydChyZXF1ZXN0LCBzZWxmKQotICAgICAgICAgICAgZWxzZToK
LSAgICAgICAgICAgICAgICBoYW5kbGVyX3N1aXRlID0gc2VsZi5nZXRfaGFuZGxlcl9zdWl0ZShy
ZXF1ZXN0LndzX3Jlc291cmNlKQotICAgICAgICAgICAgICAgIGlmIGhhbmRsZXJfc3VpdGUgaXMg
Tm9uZToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgRGlzcGF0Y2hFeGNlcHRpb24oJ05vIGhh
bmRsZXIgZm9yOiAlcicgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXF1ZXN0LndzX3Jlc291cmNlKQotICAgICAgICAgICAgICAgIHRyYW5zZmVyX2RhdGFf
ID0gaGFuZGxlcl9zdWl0ZS50cmFuc2Zlcl9kYXRhCi0gICAgICAgICAgICAgICAgdHJhbnNmZXJf
ZGF0YV8ocmVxdWVzdCkKLQotICAgICAgICAgICAgaWYgbm90IHJlcXVlc3Quc2VydmVyX3Rlcm1p
bmF0ZWQ6Ci0gICAgICAgICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uY2xvc2VfY29ubmVjdGlv
bigpCi0gICAgICAgICMgQ2F0Y2ggbm9uLWNyaXRpY2FsIGV4Y2VwdGlvbnMgdGhlIGhhbmRsZXIg
ZGlkbid0IGhhbmRsZS4KLSAgICAgICAgZXhjZXB0IGhhbmRzaGFrZS5BYm9ydGVkQnlVc2VyRXhj
ZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVzJywgdXRpbC5n
ZXRfc3RhY2tfdHJhY2UoKSkKLSAgICAgICAgICAgIHJhaXNlCi0gICAgICAgIGV4Y2VwdCBtc2d1
dGlsLkJhZE9wZXJhdGlvbkV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgc2VsZi5fbG9nZ2Vy
LmRlYnVnKCclcycsIGUpCi0gICAgICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5jbG9zZV9jb25u
ZWN0aW9uKAotICAgICAgICAgICAgICAgIGNvbW1vbi5TVEFUVVNfSU5URVJOQUxfRU5EUE9JTlRf
RVJST1IpCi0gICAgICAgIGV4Y2VwdCBtc2d1dGlsLkludmFsaWRGcmFtZUV4Y2VwdGlvbiBhcyBl
OgotICAgICAgICAgICAgIyBJbnZhbGlkRnJhbWVFeGNlcHRpb24gbXVzdCBiZSBjYXVnaHQgYmVm
b3JlCi0gICAgICAgICAgICAjIENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uIHRoYXQgY2F0
Y2hlcyBJbnZhbGlkRnJhbWVFeGNlcHRpb24uCi0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVi
dWcoJyVzJywgZSkKLSAgICAgICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rp
b24oY29tbW9uLlNUQVRVU19QUk9UT0NPTF9FUlJPUikKLSAgICAgICAgZXhjZXB0IG1zZ3V0aWwu
VW5zdXBwb3J0ZWRGcmFtZUV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgc2VsZi5fbG9nZ2Vy
LmRlYnVnKCclcycsIGUpCi0gICAgICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5jbG9zZV9jb25u
ZWN0aW9uKGNvbW1vbi5TVEFUVVNfVU5TVVBQT1JURURfREFUQSkKLSAgICAgICAgZXhjZXB0IHN0
cmVhbS5JbnZhbGlkVVRGOEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgc2VsZi5fbG9nZ2Vy
LmRlYnVnKCclcycsIGUpCi0gICAgICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5jbG9zZV9jb25u
ZWN0aW9uKAotICAgICAgICAgICAgICAgIGNvbW1vbi5TVEFUVVNfSU5WQUxJRF9GUkFNRV9QQVlM
T0FEX0RBVEEpCi0gICAgICAgIGV4Y2VwdCBtc2d1dGlsLkNvbm5lY3Rpb25UZXJtaW5hdGVkRXhj
ZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVzJywgZSkKLSAg
ICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgIyBBbnkgb3RoZXIgZXhj
ZXB0aW9ucyBhcmUgZm9yd2FyZGVkIHRvIHRoZSBjYWxsZXIgb2YgdGhpcwotICAgICAgICAgICAg
IyBmdW5jdGlvbi4KLSAgICAgICAgICAgIHV0aWwucHJlcGVuZF9tZXNzYWdlX3RvX2V4Y2VwdGlv
bigKLSAgICAgICAgICAgICAgICAnJXMgcmFpc2VkIGV4Y2VwdGlvbiBmb3IgJXM6ICcgJSAoCi0g
ICAgICAgICAgICAgICAgICAgIF9UUkFOU0ZFUl9EQVRBX0hBTkRMRVJfTkFNRSwgcmVxdWVzdC53
c19yZXNvdXJjZSksCi0gICAgICAgICAgICAgICAgZSkKLSAgICAgICAgICAgIHJhaXNlCi0KLSAg
ICBkZWYgcGFzc2l2ZV9jbG9zaW5nX2hhbmRzaGFrZShzZWxmLCByZXF1ZXN0KToKLSAgICAgICAg
IiIiUHJlcGFyZSBjb2RlIGFuZCByZWFzb24gZm9yIHJlc3BvbmRpbmcgY2xpZW50IGluaXRpYXRl
ZCBjbG9zaW5nCi0gICAgICAgIGhhbmRzaGFrZS4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgaGFu
ZGxlcl9zdWl0ZSA9IHNlbGYuZ2V0X2hhbmRsZXJfc3VpdGUocmVxdWVzdC53c19yZXNvdXJjZSkK
LSAgICAgICAgaWYgaGFuZGxlcl9zdWl0ZSBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuIF9k
ZWZhdWx0X3Bhc3NpdmVfY2xvc2luZ19oYW5kc2hha2VfaGFuZGxlcihyZXF1ZXN0KQotICAgICAg
ICByZXR1cm4gaGFuZGxlcl9zdWl0ZS5wYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlKHJlcXVlc3Qp
Ci0KLSAgICBkZWYgZ2V0X2hhbmRsZXJfc3VpdGUoc2VsZiwgcmVzb3VyY2UpOgotICAgICAgICAi
IiJSZXRyaWV2ZXMgdHdvIGhhbmRsZXJzIChvbmUgZm9yIGV4dHJhIGhhbmRzaGFrZSBwcm9jZXNz
aW5nLCBhbmQgb25lCi0gICAgICAgIGZvciBkYXRhIHRyYW5zZmVyKSBmb3IgdGhlIGdpdmVuIHJl
cXVlc3QgYXMgYSBIYW5kbGVyU3VpdGUgb2JqZWN0LgotICAgICAgICAiIiIKLQotICAgICAgICBm
cmFnbWVudCA9IE5vbmUKLSAgICAgICAgaWYgJyMnIGluIHJlc291cmNlOgotICAgICAgICAgICAg
cmVzb3VyY2UsIGZyYWdtZW50ID0gcmVzb3VyY2Uuc3BsaXQoJyMnLCAxKQotICAgICAgICBpZiAn
PycgaW4gcmVzb3VyY2U6Ci0gICAgICAgICAgICByZXNvdXJjZSA9IHJlc291cmNlLnNwbGl0KCc/
JywgMSlbMF0KLSAgICAgICAgaGFuZGxlcl9zdWl0ZSA9IHNlbGYuX2hhbmRsZXJfc3VpdGVfbWFw
LmdldChyZXNvdXJjZSkKLSAgICAgICAgaWYgaGFuZGxlcl9zdWl0ZSBhbmQgZnJhZ21lbnQ6Ci0g
ICAgICAgICAgICByYWlzZSBEaXNwYXRjaEV4Y2VwdGlvbignRnJhZ21lbnQgaWRlbnRpZmllcnMg
TVVTVCBOT1QgYmUgdXNlZCBvbiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnV2ViU29ja2V0IFVSSXMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29tbW9uLkhUVFBfU1RBVFVTX0JBRF9SRVFVRVNUKQotICAgICAgICByZXR1cm4gaGFuZGxlcl9z
dWl0ZQotCi0gICAgZGVmIF9zb3VyY2VfaGFuZGxlcl9maWxlc19pbl9kaXIoCi0gICAgICAgIHNl
bGYsIHJvb3RfZGlyLCBzY2FuX2RpciwgYWxsb3dfaGFuZGxlcnNfb3V0c2lkZV9yb290X2Rpcik6
Ci0gICAgICAgICIiIlNvdXJjZSBhbGwgdGhlIGhhbmRsZXIgc291cmNlIGZpbGVzIGluIHRoZSBz
Y2FuX2RpciBkaXJlY3RvcnkuCi0KLSAgICAgICAgVGhlIHJlc291cmNlIHBhdGggaXMgZGV0ZXJt
aW5lZCByZWxhdGl2ZSB0byByb290X2Rpci4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgIyBXZSBi
dWlsZCBhIG1hcCBmcm9tIHJlc291cmNlIHRvIGhhbmRsZXIgY29kZSBhc3N1bWluZyB0aGF0IHRo
ZXJlJ3MKLSAgICAgICAgIyBvbmx5IG9uZSBwYXRoIGZyb20gcm9vdF9kaXIgdG8gc2Nhbl9kaXIg
YW5kIGl0IGNhbiBiZSBvYnRhaW5lZCBieQotICAgICAgICAjIGNvbXBhcmluZyByZWFscGF0aCBv
ZiB0aGVtLgotCi0gICAgICAgICMgSGVyZSB3ZSBjYW5ub3QgdXNlIGFic3BhdGguIFNlZQotICAg
ICAgICAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTYwMwotCi0g
ICAgICAgIGNvbnZlcnQgPSBfY3JlYXRlX3BhdGhfdG9fcmVzb3VyY2VfY29udmVydGVyKHJvb3Rf
ZGlyKQotICAgICAgICBzY2FuX3JlYWxwYXRoID0gb3MucGF0aC5yZWFscGF0aChzY2FuX2RpcikK
LSAgICAgICAgcm9vdF9yZWFscGF0aCA9IG9zLnBhdGgucmVhbHBhdGgocm9vdF9kaXIpCi0gICAg
ICAgIGZvciBwYXRoIGluIF9lbnVtZXJhdGVfaGFuZGxlcl9maWxlX3BhdGhzKHNjYW5fcmVhbHBh
dGgpOgotICAgICAgICAgICAgaWYgKG5vdCBhbGxvd19oYW5kbGVyc19vdXRzaWRlX3Jvb3RfZGly
IGFuZAotICAgICAgICAgICAgICAgIChub3Qgb3MucGF0aC5yZWFscGF0aChwYXRoKS5zdGFydHN3
aXRoKHJvb3RfcmVhbHBhdGgpKSk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVn
KAotICAgICAgICAgICAgICAgICAgICAnQ2Fub25pY2FsIHBhdGggb2YgJXMgaXMgbm90IHVuZGVy
IHJvb3QgZGlyZWN0b3J5JyAlCi0gICAgICAgICAgICAgICAgICAgIHBhdGgpCi0gICAgICAgICAg
ICAgICAgY29udGludWUKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBoYW5kbGVy
X3N1aXRlID0gX3NvdXJjZV9oYW5kbGVyX2ZpbGUob3BlbihwYXRoKS5yZWFkKCkpCi0gICAgICAg
ICAgICBleGNlcHQgRGlzcGF0Y2hFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgICAgICBzZWxm
Ll9zb3VyY2Vfd2FybmluZ3MuYXBwZW5kKCclczogJXMnICUgKHBhdGgsIGUpKQotICAgICAgICAg
ICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICByZXNvdXJjZSA9IGNvbnZlcnQocGF0aCkKLSAg
ICAgICAgICAgIGlmIHJlc291cmNlIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbG9n
Z2VyLmRlYnVnKAotICAgICAgICAgICAgICAgICAgICAnUGF0aCB0byByZXNvdXJjZSBjb252ZXJz
aW9uIG9uICVzIGZhaWxlZCcgJSBwYXRoKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAg
ICAgICBzZWxmLl9oYW5kbGVyX3N1aXRlX21hcFtjb252ZXJ0KHBhdGgpXSA9IGhhbmRsZXJfc3Vp
dGUKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29j
a2V0L2V4dGVuc2lvbnMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9leHRlbnNpb25zLnB5CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMWJlNzQ5ZmZmNTk4OTY1MTdmYzUxNTcxNzQ2
YzdmMWMyYTdlYjA5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3
ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L2V4dGVuc2lvbnMucHkKKysrIC9kZXYvbnVsbApAQCAt
MSw3NTAgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwot
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0j
IGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0j
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQg
aW1wb3J0IGNvbW1vbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHV0aWwKLWZyb20gbW9k
X3B5d2Vic29ja2V0Lmh0dHBfaGVhZGVyX3V0aWwgaW1wb3J0IHF1b3RlX2lmX25lY2Vzc2FyeQot
Ci0KLSMgVGhlIGxpc3Qgb2YgYXZhaWxhYmxlIHNlcnZlciBzaWRlIGV4dGVuc2lvbiBwcm9jZXNz
b3IgY2xhc3Nlcy4KLV9hdmFpbGFibGVfcHJvY2Vzc29ycyA9IHt9Ci1fY29tcHJlc3Npb25fZXh0
ZW5zaW9uX25hbWVzID0gW10KLQotCi1jbGFzcyBFeHRlbnNpb25Qcm9jZXNzb3JJbnRlcmZhY2Uo
b2JqZWN0KToKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0KToKLSAgICAgICAgc2Vs
Zi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgc2VsZi5f
cmVxdWVzdCA9IHJlcXVlc3QKLSAgICAgICAgc2VsZi5fYWN0aXZlID0gVHJ1ZQotCi0gICAgZGVm
IHJlcXVlc3Qoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9yZXF1ZXN0Ci0KLSAgICBkZWYg
bmFtZShzZWxmKToKLSAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgIGRlZiBjaGVja19jb25zaXN0
ZW5jeV93aXRoX290aGVyX3Byb2Nlc3NvcnMoc2VsZiwgcHJvY2Vzc29ycyk6Ci0gICAgICAgIHBh
c3MKLQotICAgIGRlZiBzZXRfYWN0aXZlKHNlbGYsIGFjdGl2ZSk6Ci0gICAgICAgIHNlbGYuX2Fj
dGl2ZSA9IGFjdGl2ZQotCi0gICAgZGVmIGlzX2FjdGl2ZShzZWxmKToKLSAgICAgICAgcmV0dXJu
IHNlbGYuX2FjdGl2ZQotCi0gICAgZGVmIF9nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlX2ludGVybmFs
KHNlbGYpOgotICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgZGVmIGdldF9leHRlbnNpb25fcmVz
cG9uc2Uoc2VsZik6Ci0gICAgICAgIGlmIG5vdCBzZWxmLl9hY3RpdmU6Ci0gICAgICAgICAgICBz
ZWxmLl9sb2dnZXIuZGVidWcoJ0V4dGVuc2lvbiAlcyBpcyBkZWFjdGl2YXRlZCcsIHNlbGYubmFt
ZSgpKQotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICByZXNwb25zZSA9IHNlbGYu
X2dldF9leHRlbnNpb25fcmVzcG9uc2VfaW50ZXJuYWwoKQotICAgICAgICBpZiByZXNwb25zZSBp
cyBOb25lOgotICAgICAgICAgICAgc2VsZi5fYWN0aXZlID0gRmFsc2UKLSAgICAgICAgcmV0dXJu
IHJlc3BvbnNlCi0KLSAgICBkZWYgX3NldHVwX3N0cmVhbV9vcHRpb25zX2ludGVybmFsKHNlbGYs
IHN0cmVhbV9vcHRpb25zKToKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIHNldHVwX3N0cmVhbV9v
cHRpb25zKHNlbGYsIHN0cmVhbV9vcHRpb25zKToKLSAgICAgICAgaWYgc2VsZi5fYWN0aXZlOgot
ICAgICAgICAgICAgc2VsZi5fc2V0dXBfc3RyZWFtX29wdGlvbnNfaW50ZXJuYWwoc3RyZWFtX29w
dGlvbnMpCi0KLQotZGVmIF9sb2dfb3V0Z29pbmdfY29tcHJlc3Npb25fcmF0aW8oCi0gICAgICAg
IGxvZ2dlciwgb3JpZ2luYWxfYnl0ZXMsIGZpbHRlcmVkX2J5dGVzLCBhdmVyYWdlX3JhdGlvKToK
LSAgICAjIFByaW50IGluZiB3aGVuIHJhdGlvIGlzIG5vdCBhdmFpbGFibGUuCi0gICAgcmF0aW8g
PSBmbG9hdCgnaW5mJykKLSAgICBpZiBvcmlnaW5hbF9ieXRlcyAhPSAwOgotICAgICAgICByYXRp
byA9IGZsb2F0KGZpbHRlcmVkX2J5dGVzKSAvIG9yaWdpbmFsX2J5dGVzCi0KLSAgICBsb2dnZXIu
ZGVidWcoJ091dGdvaW5nIGNvbXByZXNzaW9uIHJhdGlvOiAlZiAoYXZlcmFnZTogJWYpJyAlCi0g
ICAgICAgICAgICAocmF0aW8sIGF2ZXJhZ2VfcmF0aW8pKQotCi0KLWRlZiBfbG9nX2luY29taW5n
X2NvbXByZXNzaW9uX3JhdGlvKAotICAgICAgICBsb2dnZXIsIHJlY2VpdmVkX2J5dGVzLCBmaWx0
ZXJlZF9ieXRlcywgYXZlcmFnZV9yYXRpbyk6Ci0gICAgIyBQcmludCBpbmYgd2hlbiByYXRpbyBp
cyBub3QgYXZhaWxhYmxlLgotICAgIHJhdGlvID0gZmxvYXQoJ2luZicpCi0gICAgaWYgZmlsdGVy
ZWRfYnl0ZXMgIT0gMDoKLSAgICAgICAgcmF0aW8gPSBmbG9hdChyZWNlaXZlZF9ieXRlcykgLyBm
aWx0ZXJlZF9ieXRlcwotCi0gICAgbG9nZ2VyLmRlYnVnKCdJbmNvbWluZyBjb21wcmVzc2lvbiBy
YXRpbzogJWYgKGF2ZXJhZ2U6ICVmKScgJQotICAgICAgICAgICAgKHJhdGlvLCBhdmVyYWdlX3Jh
dGlvKSkKLQotCi1kZWYgX3BhcnNlX3dpbmRvd19iaXRzKGJpdHMpOgotICAgICIiIlJldHVybiBw
YXJzZWQgaW50ZWdlciB2YWx1ZSBpZmYgdGhlIGdpdmVuIHN0cmluZyBjb25mb3JtcyB0byB0aGUK
LSAgICBncmFtbWFyIG9mIHRoZSB3aW5kb3cgYml0cyBleHRlbnNpb24gcGFyYW1ldGVycy4KLSAg
ICAiIiIKLQotICAgIGlmIGJpdHMgaXMgTm9uZToKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcign
VmFsdWUgaXMgcmVxdWlyZWQnKQotCi0gICAgIyBGb3Igbm9uIGludGVnZXIgdmFsdWVzIHN1Y2gg
YXMgIjEwLjAiLCBWYWx1ZUVycm9yIHdpbGwgYmUgcmFpc2VkLgotICAgIGludF9iaXRzID0gaW50
KGJpdHMpCi0KLSAgICAjIEZpcnN0IGNvbmRpdGlvbiBpcyB0byBkcm9wIGxlYWRpbmcgemVybyBj
YXNlIGUuZy4gIjA4Ii4KLSAgICBpZiBiaXRzICE9IHN0cihpbnRfYml0cykgb3IgaW50X2JpdHMg
PCA4IG9yIGludF9iaXRzID4gMTU6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ludmFsaWQg
dmFsdWU6ICVyJyAlIGJpdHMpCi0KLSAgICByZXR1cm4gaW50X2JpdHMKLQotCi1jbGFzcyBfQXZl
cmFnZVJhdGlvQ2FsY3VsYXRvcihvYmplY3QpOgotICAgICIiIlN0b3JlcyB0b3RhbCBieXRlcyBv
ZiBvcmlnaW5hbCBhbmQgcmVzdWx0IGRhdGEsIGFuZCBjYWxjdWxhdGVzIGF2ZXJhZ2UKLSAgICBy
ZXN1bHQgLyBvcmlnaW5hbCByYXRpby4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxm
KToKLSAgICAgICAgc2VsZi5fdG90YWxfb3JpZ2luYWxfYnl0ZXMgPSAwCi0gICAgICAgIHNlbGYu
X3RvdGFsX3Jlc3VsdF9ieXRlcyA9IDAKLQotICAgIGRlZiBhZGRfb3JpZ2luYWxfYnl0ZXMoc2Vs
ZiwgdmFsdWUpOgotICAgICAgICBzZWxmLl90b3RhbF9vcmlnaW5hbF9ieXRlcyArPSB2YWx1ZQot
Ci0gICAgZGVmIGFkZF9yZXN1bHRfYnl0ZXMoc2VsZiwgdmFsdWUpOgotICAgICAgICBzZWxmLl90
b3RhbF9yZXN1bHRfYnl0ZXMgKz0gdmFsdWUKLQotICAgIGRlZiBnZXRfYXZlcmFnZV9yYXRpbyhz
ZWxmKToKLSAgICAgICAgaWYgc2VsZi5fdG90YWxfb3JpZ2luYWxfYnl0ZXMgIT0gMDoKLSAgICAg
ICAgICAgIHJldHVybiAoZmxvYXQoc2VsZi5fdG90YWxfcmVzdWx0X2J5dGVzKSAvCi0gICAgICAg
ICAgICAgICAgICAgIHNlbGYuX3RvdGFsX29yaWdpbmFsX2J5dGVzKQotICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgcmV0dXJuIGZsb2F0KCdpbmYnKQotCi0KLWNsYXNzIERlZmxhdGVGcmFtZUV4
dGVuc2lvblByb2Nlc3NvcihFeHRlbnNpb25Qcm9jZXNzb3JJbnRlcmZhY2UpOgotICAgICIiImRl
ZmxhdGUtZnJhbWUgZXh0ZW5zaW9uIHByb2Nlc3Nvci4KLQotICAgIFNwZWNpZmljYXRpb246Ci0g
ICAgaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtdHlvc2hpbm8taHliaS13ZWJzb2Nr
ZXQtcGVyZnJhbWUtZGVmbGF0ZQotICAgICIiIgotCi0gICAgX1dJTkRPV19CSVRTX1BBUkFNID0g
J21heF93aW5kb3dfYml0cycKLSAgICBfTk9fQ09OVEVYVF9UQUtFT1ZFUl9QQVJBTSA9ICdub19j
b250ZXh0X3Rha2VvdmVyJwotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3QpOgotICAg
ICAgICBFeHRlbnNpb25Qcm9jZXNzb3JJbnRlcmZhY2UuX19pbml0X18oc2VsZiwgcmVxdWVzdCkK
LSAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAg
ICAgICAgc2VsZi5fcmVzcG9uc2Vfd2luZG93X2JpdHMgPSBOb25lCi0gICAgICAgIHNlbGYuX3Jl
c3BvbnNlX25vX2NvbnRleHRfdGFrZW92ZXIgPSBGYWxzZQotICAgICAgICBzZWxmLl9iZmluYWwg
PSBGYWxzZQotCi0gICAgICAgICMgQ2FsY3VsYXRlcwotICAgICAgICAjICAgICAoVG90YWwgb3V0
Z29pbmcgYnl0ZXMgc3VwcGxpZWQgdG8gdGhpcyBmaWx0ZXIpIC8KLSAgICAgICAgIyAgICAgKFRv
dGFsIGJ5dGVzIHNlbnQgdG8gdGhlIG5ldHdvcmsgYWZ0ZXIgYXBwbHlpbmcgdGhpcyBmaWx0ZXIp
Ci0gICAgICAgIHNlbGYuX291dGdvaW5nX2F2ZXJhZ2VfcmF0aW9fY2FsY3VsYXRvciA9IF9BdmVy
YWdlUmF0aW9DYWxjdWxhdG9yKCkKLQotICAgICAgICAjIENhbGN1bGF0ZXMKLSAgICAgICAgIyAg
ICAgKFRvdGFsIGJ5dGVzIHJlY2VpdmVkIGZyb20gdGhlIG5ldHdvcmspIC8KLSAgICAgICAgIyAg
ICAgKFRvdGFsIGluY29taW5nIGJ5dGVzIG9idGFpbmVkIGFmdGVyIGFwcGx5aW5nIHRoaXMgZmls
dGVyKQotICAgICAgICBzZWxmLl9pbmNvbWluZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IgPSBf
QXZlcmFnZVJhdGlvQ2FsY3VsYXRvcigpCi0KLSAgICBkZWYgbmFtZShzZWxmKToKLSAgICAgICAg
cmV0dXJuIGNvbW1vbi5ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTgotCi0gICAgZGVmIF9nZXRfZXh0
ZW5zaW9uX3Jlc3BvbnNlX2ludGVybmFsKHNlbGYpOgotICAgICAgICAjIEFueSB1bmtub3duIHBh
cmFtZXRlciB3aWxsIGJlIGp1c3QgaWdub3JlZC4KLQotICAgICAgICB3aW5kb3dfYml0cyA9IE5v
bmUKLSAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC5oYXNfcGFyYW1ldGVyKHNlbGYuX1dJTkRPV19C
SVRTX1BBUkFNKToKLSAgICAgICAgICAgIHdpbmRvd19iaXRzID0gc2VsZi5fcmVxdWVzdC5nZXRf
cGFyYW1ldGVyX3ZhbHVlKAotICAgICAgICAgICAgICAgIHNlbGYuX1dJTkRPV19CSVRTX1BBUkFN
KQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHdpbmRvd19iaXRzID0gX3BhcnNl
X3dpbmRvd19iaXRzKHdpbmRvd19iaXRzKQotICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3Ig
YXMgZToKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgIG5vX2NvbnRleHRf
dGFrZW92ZXIgPSBzZWxmLl9yZXF1ZXN0Lmhhc19wYXJhbWV0ZXIoCi0gICAgICAgICAgICBzZWxm
Ll9OT19DT05URVhUX1RBS0VPVkVSX1BBUkFNKQotICAgICAgICBpZiAobm9fY29udGV4dF90YWtl
b3ZlciBhbmQKLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3QuZ2V0X3BhcmFtZXRlcl92YWx1ZSgK
LSAgICAgICAgICAgICAgICBzZWxmLl9OT19DT05URVhUX1RBS0VPVkVSX1BBUkFNKSBpcyBub3Qg
Tm9uZSk6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgIHNlbGYuX3JmYzE5Nzlf
ZGVmbGF0ZXIgPSB1dGlsLl9SRkMxOTc5RGVmbGF0ZXIoCi0gICAgICAgICAgICB3aW5kb3dfYml0
cywgbm9fY29udGV4dF90YWtlb3ZlcikKLQotICAgICAgICBzZWxmLl9yZmMxOTc5X2luZmxhdGVy
ID0gdXRpbC5fUkZDMTk3OUluZmxhdGVyKCkKLQotICAgICAgICBzZWxmLl9jb21wcmVzc19vdXRn
b2luZyA9IFRydWUKLQotICAgICAgICByZXNwb25zZSA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0
ZXIoc2VsZi5fcmVxdWVzdC5uYW1lKCkpCi0KLSAgICAgICAgaWYgc2VsZi5fcmVzcG9uc2Vfd2lu
ZG93X2JpdHMgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByZXNwb25zZS5hZGRfcGFyYW1ldGVy
KAotICAgICAgICAgICAgICAgIHNlbGYuX1dJTkRPV19CSVRTX1BBUkFNLCBzdHIoc2VsZi5fcmVz
cG9uc2Vfd2luZG93X2JpdHMpKQotICAgICAgICBpZiBzZWxmLl9yZXNwb25zZV9ub19jb250ZXh0
X3Rha2VvdmVyOgotICAgICAgICAgICAgcmVzcG9uc2UuYWRkX3BhcmFtZXRlcigKLSAgICAgICAg
ICAgICAgICBzZWxmLl9OT19DT05URVhUX1RBS0VPVkVSX1BBUkFNLCBOb25lKQotCi0gICAgICAg
IHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICdFbmFibGUgJXMgZXh0ZW5zaW9uICgn
Ci0gICAgICAgICAgICAncmVxdWVzdDogd2luZG93X2JpdHM9JXM7IG5vX2NvbnRleHRfdGFrZW92
ZXI9JXIsICcKLSAgICAgICAgICAgICdyZXNwb25zZTogd2luZG93X3diaXRzPSVzOyBub19jb250
ZXh0X3Rha2VvdmVyPSVyKScgJQotICAgICAgICAgICAgKHNlbGYuX3JlcXVlc3QubmFtZSgpLAot
ICAgICAgICAgICAgIHdpbmRvd19iaXRzLAotICAgICAgICAgICAgIG5vX2NvbnRleHRfdGFrZW92
ZXIsCi0gICAgICAgICAgICAgc2VsZi5fcmVzcG9uc2Vfd2luZG93X2JpdHMsCi0gICAgICAgICAg
ICAgc2VsZi5fcmVzcG9uc2Vfbm9fY29udGV4dF90YWtlb3ZlcikpCi0KLSAgICAgICAgcmV0dXJu
IHJlc3BvbnNlCi0KLSAgICBkZWYgX3NldHVwX3N0cmVhbV9vcHRpb25zX2ludGVybmFsKHNlbGYs
IHN0cmVhbV9vcHRpb25zKToKLQotICAgICAgICBjbGFzcyBfT3V0Z29pbmdGaWx0ZXIob2JqZWN0
KToKLQotICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCk6Ci0gICAgICAgICAg
ICAgICAgc2VsZi5fcGFyZW50ID0gcGFyZW50Ci0KLSAgICAgICAgICAgIGRlZiBmaWx0ZXIoc2Vs
ZiwgZnJhbWUpOgotICAgICAgICAgICAgICAgIHNlbGYuX3BhcmVudC5fb3V0Z29pbmdfZmlsdGVy
KGZyYW1lKQotCi0gICAgICAgIGNsYXNzIF9JbmNvbWluZ0ZpbHRlcihvYmplY3QpOgotCi0gICAg
ICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50KToKLSAgICAgICAgICAgICAgICBzZWxm
Ll9wYXJlbnQgPSBwYXJlbnQKLQotICAgICAgICAgICAgZGVmIGZpbHRlcihzZWxmLCBmcmFtZSk6
Ci0gICAgICAgICAgICAgICAgc2VsZi5fcGFyZW50Ll9pbmNvbWluZ19maWx0ZXIoZnJhbWUpCi0K
LSAgICAgICAgc3RyZWFtX29wdGlvbnMub3V0Z29pbmdfZnJhbWVfZmlsdGVycy5hcHBlbmQoCi0g
ICAgICAgICAgICBfT3V0Z29pbmdGaWx0ZXIoc2VsZikpCi0gICAgICAgIHN0cmVhbV9vcHRpb25z
LmluY29taW5nX2ZyYW1lX2ZpbHRlcnMuaW5zZXJ0KAotICAgICAgICAgICAgMCwgX0luY29taW5n
RmlsdGVyKHNlbGYpKQotCi0gICAgZGVmIHNldF9yZXNwb25zZV93aW5kb3dfYml0cyhzZWxmLCB2
YWx1ZSk6Ci0gICAgICAgIHNlbGYuX3Jlc3BvbnNlX3dpbmRvd19iaXRzID0gdmFsdWUKLQotICAg
IGRlZiBzZXRfcmVzcG9uc2Vfbm9fY29udGV4dF90YWtlb3ZlcihzZWxmLCB2YWx1ZSk6Ci0gICAg
ICAgIHNlbGYuX3Jlc3BvbnNlX25vX2NvbnRleHRfdGFrZW92ZXIgPSB2YWx1ZQotCi0gICAgZGVm
IHNldF9iZmluYWwoc2VsZiwgdmFsdWUpOgotICAgICAgICBzZWxmLl9iZmluYWwgPSB2YWx1ZQot
Ci0gICAgZGVmIGVuYWJsZV9vdXRnb2luZ19jb21wcmVzc2lvbihzZWxmKToKLSAgICAgICAgc2Vs
Zi5fY29tcHJlc3Nfb3V0Z29pbmcgPSBUcnVlCi0KLSAgICBkZWYgZGlzYWJsZV9vdXRnb2luZ19j
b21wcmVzc2lvbihzZWxmKToKLSAgICAgICAgc2VsZi5fY29tcHJlc3Nfb3V0Z29pbmcgPSBGYWxz
ZQotCi0gICAgZGVmIF9vdXRnb2luZ19maWx0ZXIoc2VsZiwgZnJhbWUpOgotICAgICAgICAiIiJU
cmFuc2Zvcm0gb3V0Z29pbmcgZnJhbWVzLiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgb25seSBieQot
ICAgICAgICBhbiBfT3V0Z29pbmdGaWx0ZXIgaW5zdGFuY2UuCi0gICAgICAgICIiIgotCi0gICAg
ICAgIG9yaWdpbmFsX3BheWxvYWRfc2l6ZSA9IGxlbihmcmFtZS5wYXlsb2FkKQotICAgICAgICBz
ZWxmLl9vdXRnb2luZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IuYWRkX29yaWdpbmFsX2J5dGVz
KAotICAgICAgICAgICAgICAgIG9yaWdpbmFsX3BheWxvYWRfc2l6ZSkKLQotICAgICAgICBpZiAo
bm90IHNlbGYuX2NvbXByZXNzX291dGdvaW5nIG9yCi0gICAgICAgICAgICBjb21tb24uaXNfY29u
dHJvbF9vcGNvZGUoZnJhbWUub3Bjb2RlKSk6Ci0gICAgICAgICAgICBzZWxmLl9vdXRnb2luZ19h
dmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IuYWRkX3Jlc3VsdF9ieXRlcygKLSAgICAgICAgICAgICAg
ICAgICAgb3JpZ2luYWxfcGF5bG9hZF9zaXplKQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAg
ICAgZnJhbWUucGF5bG9hZCA9IHNlbGYuX3JmYzE5NzlfZGVmbGF0ZXIuZmlsdGVyKAotICAgICAg
ICAgICAgZnJhbWUucGF5bG9hZCwgYmZpbmFsPXNlbGYuX2JmaW5hbCkKLSAgICAgICAgZnJhbWUu
cnN2MSA9IDEKLQotICAgICAgICBmaWx0ZXJlZF9wYXlsb2FkX3NpemUgPSBsZW4oZnJhbWUucGF5
bG9hZCkKLSAgICAgICAgc2VsZi5fb3V0Z29pbmdfYXZlcmFnZV9yYXRpb19jYWxjdWxhdG9yLmFk
ZF9yZXN1bHRfYnl0ZXMoCi0gICAgICAgICAgICAgICAgZmlsdGVyZWRfcGF5bG9hZF9zaXplKQot
Ci0gICAgICAgIF9sb2dfb3V0Z29pbmdfY29tcHJlc3Npb25fcmF0aW8oCi0gICAgICAgICAgICAg
ICAgc2VsZi5fbG9nZ2VyLAotICAgICAgICAgICAgICAgIG9yaWdpbmFsX3BheWxvYWRfc2l6ZSwK
LSAgICAgICAgICAgICAgICBmaWx0ZXJlZF9wYXlsb2FkX3NpemUsCi0gICAgICAgICAgICAgICAg
c2VsZi5fb3V0Z29pbmdfYXZlcmFnZV9yYXRpb19jYWxjdWxhdG9yLmdldF9hdmVyYWdlX3JhdGlv
KCkpCi0KLSAgICBkZWYgX2luY29taW5nX2ZpbHRlcihzZWxmLCBmcmFtZSk6Ci0gICAgICAgICIi
IlRyYW5zZm9ybSBpbmNvbWluZyBmcmFtZXMuIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbmx5IGJ5
Ci0gICAgICAgIGFuIF9JbmNvbWluZ0ZpbHRlciBpbnN0YW5jZS4KLSAgICAgICAgIiIiCi0KLSAg
ICAgICAgcmVjZWl2ZWRfcGF5bG9hZF9zaXplID0gbGVuKGZyYW1lLnBheWxvYWQpCi0gICAgICAg
IHNlbGYuX2luY29taW5nX2F2ZXJhZ2VfcmF0aW9fY2FsY3VsYXRvci5hZGRfcmVzdWx0X2J5dGVz
KAotICAgICAgICAgICAgICAgIHJlY2VpdmVkX3BheWxvYWRfc2l6ZSkKLQotICAgICAgICBpZiBm
cmFtZS5yc3YxICE9IDEgb3IgY29tbW9uLmlzX2NvbnRyb2xfb3Bjb2RlKGZyYW1lLm9wY29kZSk6
Ci0gICAgICAgICAgICBzZWxmLl9pbmNvbWluZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IuYWRk
X29yaWdpbmFsX2J5dGVzKAotICAgICAgICAgICAgICAgICAgICByZWNlaXZlZF9wYXlsb2FkX3Np
emUpCi0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBmcmFtZS5wYXlsb2FkID0gc2VsZi5f
cmZjMTk3OV9pbmZsYXRlci5maWx0ZXIoZnJhbWUucGF5bG9hZCkKLSAgICAgICAgZnJhbWUucnN2
MSA9IDAKLQotICAgICAgICBmaWx0ZXJlZF9wYXlsb2FkX3NpemUgPSBsZW4oZnJhbWUucGF5bG9h
ZCkKLSAgICAgICAgc2VsZi5faW5jb21pbmdfYXZlcmFnZV9yYXRpb19jYWxjdWxhdG9yLmFkZF9v
cmlnaW5hbF9ieXRlcygKLSAgICAgICAgICAgICAgICBmaWx0ZXJlZF9wYXlsb2FkX3NpemUpCi0K
LSAgICAgICAgX2xvZ19pbmNvbWluZ19jb21wcmVzc2lvbl9yYXRpbygKLSAgICAgICAgICAgICAg
ICBzZWxmLl9sb2dnZXIsCi0gICAgICAgICAgICAgICAgcmVjZWl2ZWRfcGF5bG9hZF9zaXplLAot
ICAgICAgICAgICAgICAgIGZpbHRlcmVkX3BheWxvYWRfc2l6ZSwKLSAgICAgICAgICAgICAgICBz
ZWxmLl9pbmNvbWluZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IuZ2V0X2F2ZXJhZ2VfcmF0aW8o
KSkKLQotCi1fYXZhaWxhYmxlX3Byb2Nlc3NvcnNbY29tbW9uLkRFRkxBVEVfRlJBTUVfRVhURU5T
SU9OXSA9ICgKLSAgICBEZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IpCi1fY29tcHJlc3Np
b25fZXh0ZW5zaW9uX25hbWVzLmFwcGVuZChjb21tb24uREVGTEFURV9GUkFNRV9FWFRFTlNJT04p
Ci0KLV9hdmFpbGFibGVfcHJvY2Vzc29yc1tjb21tb24uWF9XRUJLSVRfREVGTEFURV9GUkFNRV9F
WFRFTlNJT05dID0gKAotICAgIERlZmxhdGVGcmFtZUV4dGVuc2lvblByb2Nlc3NvcikKLV9jb21w
cmVzc2lvbl9leHRlbnNpb25fbmFtZXMuYXBwZW5kKGNvbW1vbi5YX1dFQktJVF9ERUZMQVRFX0ZS
QU1FX0VYVEVOU0lPTikKLQotCi1jbGFzcyBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nl
c3NvcihFeHRlbnNpb25Qcm9jZXNzb3JJbnRlcmZhY2UpOgotICAgICIiInBlcm1lc3NhZ2UtZGVm
bGF0ZSBleHRlbnNpb24gcHJvY2Vzc29yLgotCi0gICAgU3BlY2lmaWNhdGlvbjoKLSAgICBodHRw
Oi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1pZXRmLWh5YmktcGVybWVzc2FnZS1jb21wcmVz
c2lvbi0wOAotICAgICIiIgotCi0gICAgX1NFUlZFUl9NQVhfV0lORE9XX0JJVFNfUEFSQU0gPSAn
c2VydmVyX21heF93aW5kb3dfYml0cycKLSAgICBfU0VSVkVSX05PX0NPTlRFWFRfVEFLRU9WRVJf
UEFSQU0gPSAnc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXInCi0gICAgX0NMSUVOVF9NQVhfV0lO
RE9XX0JJVFNfUEFSQU0gPSAnY2xpZW50X21heF93aW5kb3dfYml0cycKLSAgICBfQ0xJRU5UX05P
X0NPTlRFWFRfVEFLRU9WRVJfUEFSQU0gPSAnY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXInCi0K
LSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCk6Ci0gICAgICAgICIiIkNvbnN0cnVjdCBQ
ZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3Nvci4iIiIKLQotICAgICAgICBFeHRlbnNp
b25Qcm9jZXNzb3JJbnRlcmZhY2UuX19pbml0X18oc2VsZiwgcmVxdWVzdCkKLSAgICAgICAgc2Vs
Zi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgc2VsZi5f
cHJlZmVycmVkX2NsaWVudF9tYXhfd2luZG93X2JpdHMgPSBOb25lCi0gICAgICAgIHNlbGYuX2Ns
aWVudF9ub19jb250ZXh0X3Rha2VvdmVyID0gRmFsc2UKLQotICAgIGRlZiBuYW1lKHNlbGYpOgot
ICAgICAgICAjIFRoaXMgbWV0aG9kIHJldHVybnMgImRlZmxhdGUiIChub3QgInBlcm1lc3NhZ2Ut
ZGVmbGF0ZSIpIGZvcgotICAgICAgICAjIGNvbXBhdGliaWxpdHkuCi0gICAgICAgIHJldHVybiAn
ZGVmbGF0ZScKLQotICAgIGRlZiBfZ2V0X2V4dGVuc2lvbl9yZXNwb25zZV9pbnRlcm5hbChzZWxm
KToKLSAgICAgICAgZm9yIG5hbWUgaW4gc2VsZi5fcmVxdWVzdC5nZXRfcGFyYW1ldGVyX25hbWVz
KCk6Ci0gICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiBbc2VsZi5fU0VSVkVSX01BWF9XSU5ET1df
QklUU19QQVJBTSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9TRVJWRVJfTk9f
Q09OVEVYVF9UQUtFT1ZFUl9QQVJBTSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm
Ll9DTElFTlRfTUFYX1dJTkRPV19CSVRTX1BBUkFNXToKLSAgICAgICAgICAgICAgICBzZWxmLl9s
b2dnZXIuZGVidWcoJ1Vua25vd24gcGFyYW1ldGVyOiAlcicsIG5hbWUpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIE5vbmUKLQotICAgICAgICBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzID0gTm9uZQot
ICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0Lmhhc19wYXJhbWV0ZXIoc2VsZi5fU0VSVkVSX01BWF9X
SU5ET1dfQklUU19QQVJBTSk6Ci0gICAgICAgICAgICBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzID0g
c2VsZi5fcmVxdWVzdC5nZXRfcGFyYW1ldGVyX3ZhbHVlKAotICAgICAgICAgICAgICAgICAgICBz
ZWxmLl9TRVJWRVJfTUFYX1dJTkRPV19CSVRTX1BBUkFNKQotICAgICAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgICAgIHNlcnZlcl9tYXhfd2luZG93X2JpdHMgPSBfcGFyc2Vfd2luZG93X2JpdHMo
Ci0gICAgICAgICAgICAgICAgICAgIHNlcnZlcl9tYXhfd2luZG93X2JpdHMpCi0gICAgICAgICAg
ICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5k
ZWJ1ZygnQmFkICVzIHBhcmFtZXRlcjogJXInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZWxmLl9TRVJWRVJfTUFYX1dJTkRPV19CSVRTX1BBUkFNLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBlKQotICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0K
LSAgICAgICAgc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXIgPSBzZWxmLl9yZXF1ZXN0Lmhhc19w
YXJhbWV0ZXIoCi0gICAgICAgICAgICBzZWxmLl9TRVJWRVJfTk9fQ09OVEVYVF9UQUtFT1ZFUl9Q
QVJBTSkKLSAgICAgICAgaWYgKHNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyIGFuZAotICAgICAg
ICAgICAgc2VsZi5fcmVxdWVzdC5nZXRfcGFyYW1ldGVyX3ZhbHVlKAotICAgICAgICAgICAgICAg
IHNlbGYuX1NFUlZFUl9OT19DT05URVhUX1RBS0VPVkVSX1BBUkFNKSBpcyBub3QgTm9uZSk6Ci0g
ICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVzIHBhcmFtZXRlciBtdXN0IG5vdCBoYXZl
IGEgdmFsdWU6ICVyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9TRVJW
RVJfTk9fQ09OVEVYVF9UQUtFT1ZFUl9QQVJBTSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcikKLSAgICAgICAgICAgIHJldHVybiBOb25l
Ci0KLSAgICAgICAgIyBjbGllbnRfbWF4X3dpbmRvd19iaXRzIGZyb20gYSBjbGllbnQgaW5kaWNh
dGVzIHdoZXRoZXIgdGhlIGNsaWVudCBjYW4KLSAgICAgICAgIyBhY2NlcHQgY2xpZW50X21heF93
aW5kb3dfYml0cyBmcm9tIGEgc2VydmVyIG9yIG5vdC4KLSAgICAgICAgY2xpZW50X2NsaWVudF9t
YXhfd2luZG93X2JpdHMgPSBzZWxmLl9yZXF1ZXN0Lmhhc19wYXJhbWV0ZXIoCi0gICAgICAgICAg
ICBzZWxmLl9DTElFTlRfTUFYX1dJTkRPV19CSVRTX1BBUkFNKQotICAgICAgICBpZiAoY2xpZW50
X2NsaWVudF9tYXhfd2luZG93X2JpdHMgYW5kCi0gICAgICAgICAgICBzZWxmLl9yZXF1ZXN0Lmdl
dF9wYXJhbWV0ZXJfdmFsdWUoCi0gICAgICAgICAgICAgICAgc2VsZi5fQ0xJRU5UX01BWF9XSU5E
T1dfQklUU19QQVJBTSkgaXMgbm90IE5vbmUpOgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRl
YnVnKCclcyBwYXJhbWV0ZXIgbXVzdCBub3QgaGF2ZSBhIHZhbHVlIGluIGEgJwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdjbGllbnRcJ3Mgb3BlbmluZyBoYW5kc2hha2U6ICVyJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9DTElFTlRfTUFYX1dJTkRPV19C
SVRTX1BBUkFNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9jbGllbnRf
bWF4X3dpbmRvd19iaXRzKQotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICBzZWxm
Ll9yZmMxOTc5X2RlZmxhdGVyID0gdXRpbC5fUkZDMTk3OURlZmxhdGVyKAotICAgICAgICAgICAg
c2VydmVyX21heF93aW5kb3dfYml0cywgc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXIpCi0KLSAg
ICAgICAgIyBOb3RlIHRoYXQgd2UgcHJlcGFyZSBmb3IgaW5jb21pbmcgbWVzc2FnZXMgY29tcHJl
c3NlZCB3aXRoIHdpbmRvdwotICAgICAgICAjIGJpdHMgdXB0byAxNSByZWdhcmRsZXNzIG9mIHRo
ZSBjbGllbnRfbWF4X3dpbmRvd19iaXRzIHZhbHVlIHRvIGJlCi0gICAgICAgICMgc2VudCB0byB0
aGUgY2xpZW50LgotICAgICAgICBzZWxmLl9yZmMxOTc5X2luZmxhdGVyID0gdXRpbC5fUkZDMTk3
OUluZmxhdGVyKCkKLQotICAgICAgICBzZWxmLl9mcmFtZXIgPSBfUGVyTWVzc2FnZURlZmxhdGVG
cmFtZXIoCi0gICAgICAgICAgICBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzLCBzZXJ2ZXJfbm9fY29u
dGV4dF90YWtlb3ZlcikKLSAgICAgICAgc2VsZi5fZnJhbWVyLnNldF9iZmluYWwoRmFsc2UpCi0g
ICAgICAgIHNlbGYuX2ZyYW1lci5zZXRfY29tcHJlc3Nfb3V0Z29pbmdfZW5hYmxlZChUcnVlKQot
Ci0gICAgICAgIHJlc3BvbnNlID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcihzZWxmLl9yZXF1
ZXN0Lm5hbWUoKSkKLQotICAgICAgICBpZiBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzIGlzIG5vdCBO
b25lOgotICAgICAgICAgICAgcmVzcG9uc2UuYWRkX3BhcmFtZXRlcigKLSAgICAgICAgICAgICAg
ICBzZWxmLl9TRVJWRVJfTUFYX1dJTkRPV19CSVRTX1BBUkFNLAotICAgICAgICAgICAgICAgIHN0
cihzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzKSkKLQotICAgICAgICBpZiBzZXJ2ZXJfbm9fY29udGV4
dF90YWtlb3ZlcjoKLSAgICAgICAgICAgIHJlc3BvbnNlLmFkZF9wYXJhbWV0ZXIoCi0gICAgICAg
ICAgICAgICAgc2VsZi5fU0VSVkVSX05PX0NPTlRFWFRfVEFLRU9WRVJfUEFSQU0sIE5vbmUpCi0K
LSAgICAgICAgaWYgc2VsZi5fcHJlZmVycmVkX2NsaWVudF9tYXhfd2luZG93X2JpdHMgaXMgbm90
IE5vbmU6Ci0gICAgICAgICAgICBpZiBub3QgY2xpZW50X2NsaWVudF9tYXhfd2luZG93X2JpdHM6
Ci0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdQcm9jZXNzb3IgaXMgY29uZmln
dXJlZCB0byB1c2UgJXMgYnV0ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J3RoZSBjbGllbnQgY2Fubm90IGFjY2VwdCBpdCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX0NMSUVOVF9NQVhfV0lORE9XX0JJVFNfUEFSQU0pCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAgIHJlc3BvbnNlLmFkZF9wYXJhbWV0ZXIoCi0g
ICAgICAgICAgICAgICAgc2VsZi5fQ0xJRU5UX01BWF9XSU5ET1dfQklUU19QQVJBTSwKLSAgICAg
ICAgICAgICAgICBzdHIoc2VsZi5fcHJlZmVycmVkX2NsaWVudF9tYXhfd2luZG93X2JpdHMpKQot
Ci0gICAgICAgIGlmIHNlbGYuX2NsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyOgotICAgICAgICAg
ICAgcmVzcG9uc2UuYWRkX3BhcmFtZXRlcigKLSAgICAgICAgICAgICAgICBzZWxmLl9DTElFTlRf
Tk9fQ09OVEVYVF9UQUtFT1ZFUl9QQVJBTSwgTm9uZSkKLQotICAgICAgICBzZWxmLl9sb2dnZXIu
ZGVidWcoCi0gICAgICAgICAgICAnRW5hYmxlICVzIGV4dGVuc2lvbiAoJwotICAgICAgICAgICAg
J3JlcXVlc3Q6IHNlcnZlcl9tYXhfd2luZG93X2JpdHM9JXM7ICcKLSAgICAgICAgICAgICdzZXJ2
ZXJfbm9fY29udGV4dF90YWtlb3Zlcj0lciwgJwotICAgICAgICAgICAgJ3Jlc3BvbnNlOiBjbGll
bnRfbWF4X3dpbmRvd19iaXRzPSVzOyAnCi0gICAgICAgICAgICAnY2xpZW50X25vX2NvbnRleHRf
dGFrZW92ZXI9JXIpJyAlCi0gICAgICAgICAgICAoc2VsZi5fcmVxdWVzdC5uYW1lKCksCi0gICAg
ICAgICAgICAgc2VydmVyX21heF93aW5kb3dfYml0cywKLSAgICAgICAgICAgICBzZXJ2ZXJfbm9f
Y29udGV4dF90YWtlb3ZlciwKLSAgICAgICAgICAgICBzZWxmLl9wcmVmZXJyZWRfY2xpZW50X21h
eF93aW5kb3dfYml0cywKLSAgICAgICAgICAgICBzZWxmLl9jbGllbnRfbm9fY29udGV4dF90YWtl
b3ZlcikpCi0KLSAgICAgICAgcmV0dXJuIHJlc3BvbnNlCi0KLSAgICBkZWYgX3NldHVwX3N0cmVh
bV9vcHRpb25zX2ludGVybmFsKHNlbGYsIHN0cmVhbV9vcHRpb25zKToKLSAgICAgICAgc2VsZi5f
ZnJhbWVyLnNldHVwX3N0cmVhbV9vcHRpb25zKHN0cmVhbV9vcHRpb25zKQotCi0gICAgZGVmIHNl
dF9jbGllbnRfbWF4X3dpbmRvd19iaXRzKHNlbGYsIHZhbHVlKToKLSAgICAgICAgIiIiSWYgdGhp
cyBvcHRpb24gaXMgc3BlY2lmaWVkLCB0aGlzIGNsYXNzIGFkZHMgdGhlCi0gICAgICAgIGNsaWVu
dF9tYXhfd2luZG93X2JpdHMgZXh0ZW5zaW9uIHBhcmFtZXRlciB0byB0aGUgaGFuZHNoYWtlIHJl
c3BvbnNlLAotICAgICAgICBidXQgZG9lc24ndCByZWR1Y2UgdGhlIExaNzcgc2xpZGluZyB3aW5k
b3cgc2l6ZSBvZiBpdHMgaW5mbGF0ZXIuCi0gICAgICAgIEkuZS4sIHlvdSBjYW4gdXNlIHRoaXMg
Zm9yIHRlc3RpbmcgY2xpZW50IGltcGxlbWVudGF0aW9uIGJ1dCBjYW5ub3QKLSAgICAgICAgcmVk
dWNlIG1lbW9yeSB1c2FnZSBvZiB0aGlzIGNsYXNzLgotCi0gICAgICAgIElmIHRoaXMgbWV0aG9k
IGhhcyBiZWVuIGNhbGxlZCB3aXRoIFRydWUgYW5kIGFuIG9mZmVyIHdpdGhvdXQgdGhlCi0gICAg
ICAgIGNsaWVudF9tYXhfd2luZG93X2JpdHMgZXh0ZW5zaW9uIHBhcmFtZXRlciBpcyByZWNlaXZl
ZCwKLSAgICAgICAgLSAoV2hlbiBwcm9jZXNzaW5nIHRoZSBwZXJtZXNzYWdlLWRlZmxhdGUgZXh0
ZW5zaW9uKSB0aGlzIHByb2Nlc3NvcgotICAgICAgICAgIGRlY2xpbmVzIHRoZSByZXF1ZXN0Lgot
ICAgICAgICAtIChXaGVuIHByb2Nlc3NpbmcgdGhlIHBlcm1lc3NhZ2UtY29tcHJlc3MgZXh0ZW5z
aW9uKSB0aGlzIHByb2Nlc3NvcgotICAgICAgICAgIGFjY2VwdHMgdGhlIHJlcXVlc3QuCi0gICAg
ICAgICIiIgotCi0gICAgICAgIHNlbGYuX3ByZWZlcnJlZF9jbGllbnRfbWF4X3dpbmRvd19iaXRz
ID0gdmFsdWUKLQotICAgIGRlZiBzZXRfY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIoc2VsZiwg
dmFsdWUpOgotICAgICAgICAiIiJJZiB0aGlzIG9wdGlvbiBpcyBzcGVjaWZpZWQsIHRoaXMgY2xh
c3MgYWRkcyB0aGUKLSAgICAgICAgY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIgZXh0ZW5zaW9u
IHBhcmFtZXRlciB0byB0aGUgaGFuZHNoYWtlCi0gICAgICAgIHJlc3BvbnNlLCBidXQgZG9lc24n
dCByZXNldCBpbmZsYXRlciBmb3IgZWFjaCBtZXNzYWdlLiBJLmUuLCB5b3UgY2FuCi0gICAgICAg
IHVzZSB0aGlzIGZvciB0ZXN0aW5nIGNsaWVudCBpbXBsZW1lbnRhdGlvbiBidXQgY2Fubm90IHJl
ZHVjZSBtZW1vcnkKLSAgICAgICAgdXNhZ2Ugb2YgdGhpcyBjbGFzcy4KLSAgICAgICAgIiIiCi0K
LSAgICAgICAgc2VsZi5fY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIgPSB2YWx1ZQotCi0gICAg
ZGVmIHNldF9iZmluYWwoc2VsZiwgdmFsdWUpOgotICAgICAgICBzZWxmLl9mcmFtZXIuc2V0X2Jm
aW5hbCh2YWx1ZSkKLQotICAgIGRlZiBlbmFibGVfb3V0Z29pbmdfY29tcHJlc3Npb24oc2VsZik6
Ci0gICAgICAgIHNlbGYuX2ZyYW1lci5zZXRfY29tcHJlc3Nfb3V0Z29pbmdfZW5hYmxlZChUcnVl
KQotCi0gICAgZGVmIGRpc2FibGVfb3V0Z29pbmdfY29tcHJlc3Npb24oc2VsZik6Ci0gICAgICAg
IHNlbGYuX2ZyYW1lci5zZXRfY29tcHJlc3Nfb3V0Z29pbmdfZW5hYmxlZChGYWxzZSkKLQotCi1j
bGFzcyBfUGVyTWVzc2FnZURlZmxhdGVGcmFtZXIob2JqZWN0KToKLSAgICAiIiJBIGZyYW1lciBm
b3IgZXh0ZW5zaW9ucyB3aXRoIHBlci1tZXNzYWdlIERFRkxBVEUgZmVhdHVyZS4iIiIKLQotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBkZWZsYXRlX21heF93aW5kb3dfYml0cywgZGVmbGF0ZV9ub19j
b250ZXh0X3Rha2VvdmVyKToKLSAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3Nf
bG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgc2VsZi5fcmZjMTk3OV9kZWZsYXRlciA9IHV0aWwuX1JG
QzE5NzlEZWZsYXRlcigKLSAgICAgICAgICAgIGRlZmxhdGVfbWF4X3dpbmRvd19iaXRzLCBkZWZs
YXRlX25vX2NvbnRleHRfdGFrZW92ZXIpCi0KLSAgICAgICAgc2VsZi5fcmZjMTk3OV9pbmZsYXRl
ciA9IHV0aWwuX1JGQzE5NzlJbmZsYXRlcigpCi0KLSAgICAgICAgc2VsZi5fYmZpbmFsID0gRmFs
c2UKLQotICAgICAgICBzZWxmLl9jb21wcmVzc19vdXRnb2luZ19lbmFibGVkID0gRmFsc2UKLQot
ICAgICAgICAjIFRydWUgaWYgYSBtZXNzYWdlIGlzIGZyYWdtZW50ZWQgYW5kIGNvbXByZXNzaW9u
IGlzIG9uZ29pbmcuCi0gICAgICAgIHNlbGYuX2NvbXByZXNzX29uZ29pbmcgPSBGYWxzZQotCi0g
ICAgICAgICMgQ2FsY3VsYXRlcwotICAgICAgICAjICAgICAoVG90YWwgb3V0Z29pbmcgYnl0ZXMg
c3VwcGxpZWQgdG8gdGhpcyBmaWx0ZXIpIC8KLSAgICAgICAgIyAgICAgKFRvdGFsIGJ5dGVzIHNl
bnQgdG8gdGhlIG5ldHdvcmsgYWZ0ZXIgYXBwbHlpbmcgdGhpcyBmaWx0ZXIpCi0gICAgICAgIHNl
bGYuX291dGdvaW5nX2F2ZXJhZ2VfcmF0aW9fY2FsY3VsYXRvciA9IF9BdmVyYWdlUmF0aW9DYWxj
dWxhdG9yKCkKLQotICAgICAgICAjIENhbGN1bGF0ZXMKLSAgICAgICAgIyAgICAgKFRvdGFsIGJ5
dGVzIHJlY2VpdmVkIGZyb20gdGhlIG5ldHdvcmspIC8KLSAgICAgICAgIyAgICAgKFRvdGFsIGlu
Y29taW5nIGJ5dGVzIG9idGFpbmVkIGFmdGVyIGFwcGx5aW5nIHRoaXMgZmlsdGVyKQotICAgICAg
ICBzZWxmLl9pbmNvbWluZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IgPSBfQXZlcmFnZVJhdGlv
Q2FsY3VsYXRvcigpCi0KLSAgICBkZWYgc2V0X2JmaW5hbChzZWxmLCB2YWx1ZSk6Ci0gICAgICAg
IHNlbGYuX2JmaW5hbCA9IHZhbHVlCi0KLSAgICBkZWYgc2V0X2NvbXByZXNzX291dGdvaW5nX2Vu
YWJsZWQoc2VsZiwgdmFsdWUpOgotICAgICAgICBzZWxmLl9jb21wcmVzc19vdXRnb2luZ19lbmFi
bGVkID0gdmFsdWUKLQotICAgIGRlZiBfcHJvY2Vzc19pbmNvbWluZ19tZXNzYWdlKHNlbGYsIG1l
c3NhZ2UsIGRlY29tcHJlc3MpOgotICAgICAgICBpZiBub3QgZGVjb21wcmVzczoKLSAgICAgICAg
ICAgIHJldHVybiBtZXNzYWdlCi0KLSAgICAgICAgcmVjZWl2ZWRfcGF5bG9hZF9zaXplID0gbGVu
KG1lc3NhZ2UpCi0gICAgICAgIHNlbGYuX2luY29taW5nX2F2ZXJhZ2VfcmF0aW9fY2FsY3VsYXRv
ci5hZGRfcmVzdWx0X2J5dGVzKAotICAgICAgICAgICAgICAgIHJlY2VpdmVkX3BheWxvYWRfc2l6
ZSkKLQotICAgICAgICBtZXNzYWdlID0gc2VsZi5fcmZjMTk3OV9pbmZsYXRlci5maWx0ZXIobWVz
c2FnZSkKLQotICAgICAgICBmaWx0ZXJlZF9wYXlsb2FkX3NpemUgPSBsZW4obWVzc2FnZSkKLSAg
ICAgICAgc2VsZi5faW5jb21pbmdfYXZlcmFnZV9yYXRpb19jYWxjdWxhdG9yLmFkZF9vcmlnaW5h
bF9ieXRlcygKLSAgICAgICAgICAgICAgICBmaWx0ZXJlZF9wYXlsb2FkX3NpemUpCi0KLSAgICAg
ICAgX2xvZ19pbmNvbWluZ19jb21wcmVzc2lvbl9yYXRpbygKLSAgICAgICAgICAgICAgICBzZWxm
Ll9sb2dnZXIsCi0gICAgICAgICAgICAgICAgcmVjZWl2ZWRfcGF5bG9hZF9zaXplLAotICAgICAg
ICAgICAgICAgIGZpbHRlcmVkX3BheWxvYWRfc2l6ZSwKLSAgICAgICAgICAgICAgICBzZWxmLl9p
bmNvbWluZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IuZ2V0X2F2ZXJhZ2VfcmF0aW8oKSkKLQot
ICAgICAgICByZXR1cm4gbWVzc2FnZQotCi0gICAgZGVmIF9wcm9jZXNzX291dGdvaW5nX21lc3Nh
Z2Uoc2VsZiwgbWVzc2FnZSwgZW5kLCBiaW5hcnkpOgotICAgICAgICBpZiBub3QgYmluYXJ5Ogot
ICAgICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UuZW5jb2RlKCd1dGYtOCcpCi0KLSAgICAgICAg
aWYgbm90IHNlbGYuX2NvbXByZXNzX291dGdvaW5nX2VuYWJsZWQ6Ci0gICAgICAgICAgICByZXR1
cm4gbWVzc2FnZQotCi0gICAgICAgIG9yaWdpbmFsX3BheWxvYWRfc2l6ZSA9IGxlbihtZXNzYWdl
KQotICAgICAgICBzZWxmLl9vdXRnb2luZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IuYWRkX29y
aWdpbmFsX2J5dGVzKAotICAgICAgICAgICAgb3JpZ2luYWxfcGF5bG9hZF9zaXplKQotCi0gICAg
ICAgIG1lc3NhZ2UgPSBzZWxmLl9yZmMxOTc5X2RlZmxhdGVyLmZpbHRlcigKLSAgICAgICAgICAg
IG1lc3NhZ2UsIGVuZD1lbmQsIGJmaW5hbD1zZWxmLl9iZmluYWwpCi0KLSAgICAgICAgZmlsdGVy
ZWRfcGF5bG9hZF9zaXplID0gbGVuKG1lc3NhZ2UpCi0gICAgICAgIHNlbGYuX291dGdvaW5nX2F2
ZXJhZ2VfcmF0aW9fY2FsY3VsYXRvci5hZGRfcmVzdWx0X2J5dGVzKAotICAgICAgICAgICAgZmls
dGVyZWRfcGF5bG9hZF9zaXplKQotCi0gICAgICAgIF9sb2dfb3V0Z29pbmdfY29tcHJlc3Npb25f
cmF0aW8oCi0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLAotICAgICAgICAgICAgICAgIG9y
aWdpbmFsX3BheWxvYWRfc2l6ZSwKLSAgICAgICAgICAgICAgICBmaWx0ZXJlZF9wYXlsb2FkX3Np
emUsCi0gICAgICAgICAgICAgICAgc2VsZi5fb3V0Z29pbmdfYXZlcmFnZV9yYXRpb19jYWxjdWxh
dG9yLmdldF9hdmVyYWdlX3JhdGlvKCkpCi0KLSAgICAgICAgaWYgbm90IHNlbGYuX2NvbXByZXNz
X29uZ29pbmc6Ci0gICAgICAgICAgICBzZWxmLl9vdXRnb2luZ19mcmFtZV9maWx0ZXIuc2V0X2Nv
bXByZXNzaW9uX2JpdCgpCi0gICAgICAgIHNlbGYuX2NvbXByZXNzX29uZ29pbmcgPSBub3QgZW5k
Ci0gICAgICAgIHJldHVybiBtZXNzYWdlCi0KLSAgICBkZWYgX3Byb2Nlc3NfaW5jb21pbmdfZnJh
bWUoc2VsZiwgZnJhbWUpOgotICAgICAgICBpZiBmcmFtZS5yc3YxID09IDEgYW5kIG5vdCBjb21t
b24uaXNfY29udHJvbF9vcGNvZGUoZnJhbWUub3Bjb2RlKToKLSAgICAgICAgICAgIHNlbGYuX2lu
Y29taW5nX21lc3NhZ2VfZmlsdGVyLmRlY29tcHJlc3NfbmV4dF9tZXNzYWdlKCkKLSAgICAgICAg
ICAgIGZyYW1lLnJzdjEgPSAwCi0KLSAgICBkZWYgX3Byb2Nlc3Nfb3V0Z29pbmdfZnJhbWUoc2Vs
ZiwgZnJhbWUsIGNvbXByZXNzaW9uX2JpdCk6Ci0gICAgICAgIGlmIChub3QgY29tcHJlc3Npb25f
Yml0IG9yCi0gICAgICAgICAgICBjb21tb24uaXNfY29udHJvbF9vcGNvZGUoZnJhbWUub3Bjb2Rl
KSk6Ci0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBmcmFtZS5yc3YxID0gMQotCi0gICAg
ZGVmIHNldHVwX3N0cmVhbV9vcHRpb25zKHNlbGYsIHN0cmVhbV9vcHRpb25zKToKLSAgICAgICAg
IiIiQ3JlYXRlcyBmaWx0ZXJzIGFuZCBzZXRzIHRoZW0gdG8gdGhlIFN0cmVhbU9wdGlvbnMuIiIi
Ci0KLSAgICAgICAgY2xhc3MgX091dGdvaW5nTWVzc2FnZUZpbHRlcihvYmplY3QpOgotCi0gICAg
ICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50KToKLSAgICAgICAgICAgICAgICBzZWxm
Ll9wYXJlbnQgPSBwYXJlbnQKLQotICAgICAgICAgICAgZGVmIGZpbHRlcihzZWxmLCBtZXNzYWdl
LCBlbmQ9VHJ1ZSwgYmluYXJ5PUZhbHNlKToKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5f
cGFyZW50Ll9wcm9jZXNzX291dGdvaW5nX21lc3NhZ2UoCi0gICAgICAgICAgICAgICAgICAgIG1l
c3NhZ2UsIGVuZCwgYmluYXJ5KQotCi0gICAgICAgIGNsYXNzIF9JbmNvbWluZ01lc3NhZ2VGaWx0
ZXIob2JqZWN0KToKLQotICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCk6Ci0g
ICAgICAgICAgICAgICAgc2VsZi5fcGFyZW50ID0gcGFyZW50Ci0gICAgICAgICAgICAgICAgc2Vs
Zi5fZGVjb21wcmVzc19uZXh0X21lc3NhZ2UgPSBGYWxzZQotCi0gICAgICAgICAgICBkZWYgZGVj
b21wcmVzc19uZXh0X21lc3NhZ2Uoc2VsZik6Ci0gICAgICAgICAgICAgICAgc2VsZi5fZGVjb21w
cmVzc19uZXh0X21lc3NhZ2UgPSBUcnVlCi0KLSAgICAgICAgICAgIGRlZiBmaWx0ZXIoc2VsZiwg
bWVzc2FnZSk6Ci0gICAgICAgICAgICAgICAgbWVzc2FnZSA9IHNlbGYuX3BhcmVudC5fcHJvY2Vz
c19pbmNvbWluZ19tZXNzYWdlKAotICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLCBzZWxmLl9k
ZWNvbXByZXNzX25leHRfbWVzc2FnZSkKLSAgICAgICAgICAgICAgICBzZWxmLl9kZWNvbXByZXNz
X25leHRfbWVzc2FnZSA9IEZhbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1lc3NhZ2UKLQot
ICAgICAgICBzZWxmLl9vdXRnb2luZ19tZXNzYWdlX2ZpbHRlciA9IF9PdXRnb2luZ01lc3NhZ2VG
aWx0ZXIoc2VsZikKLSAgICAgICAgc2VsZi5faW5jb21pbmdfbWVzc2FnZV9maWx0ZXIgPSBfSW5j
b21pbmdNZXNzYWdlRmlsdGVyKHNlbGYpCi0gICAgICAgIHN0cmVhbV9vcHRpb25zLm91dGdvaW5n
X21lc3NhZ2VfZmlsdGVycy5hcHBlbmQoCi0gICAgICAgICAgICBzZWxmLl9vdXRnb2luZ19tZXNz
YWdlX2ZpbHRlcikKLSAgICAgICAgc3RyZWFtX29wdGlvbnMuaW5jb21pbmdfbWVzc2FnZV9maWx0
ZXJzLmFwcGVuZCgKLSAgICAgICAgICAgIHNlbGYuX2luY29taW5nX21lc3NhZ2VfZmlsdGVyKQot
Ci0gICAgICAgIGNsYXNzIF9PdXRnb2luZ0ZyYW1lRmlsdGVyKG9iamVjdCk6Ci0KLSAgICAgICAg
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQpOgotICAgICAgICAgICAgICAgIHNlbGYuX3Bh
cmVudCA9IHBhcmVudAotICAgICAgICAgICAgICAgIHNlbGYuX3NldF9jb21wcmVzc2lvbl9iaXQg
PSBGYWxzZQotCi0gICAgICAgICAgICBkZWYgc2V0X2NvbXByZXNzaW9uX2JpdChzZWxmKToKLSAg
ICAgICAgICAgICAgICBzZWxmLl9zZXRfY29tcHJlc3Npb25fYml0ID0gVHJ1ZQotCi0gICAgICAg
ICAgICBkZWYgZmlsdGVyKHNlbGYsIGZyYW1lKToKLSAgICAgICAgICAgICAgICBzZWxmLl9wYXJl
bnQuX3Byb2Nlc3Nfb3V0Z29pbmdfZnJhbWUoCi0gICAgICAgICAgICAgICAgICAgIGZyYW1lLCBz
ZWxmLl9zZXRfY29tcHJlc3Npb25fYml0KQotICAgICAgICAgICAgICAgIHNlbGYuX3NldF9jb21w
cmVzc2lvbl9iaXQgPSBGYWxzZQotCi0gICAgICAgIGNsYXNzIF9JbmNvbWluZ0ZyYW1lRmlsdGVy
KG9iamVjdCk6Ci0KLSAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQpOgotICAg
ICAgICAgICAgICAgIHNlbGYuX3BhcmVudCA9IHBhcmVudAotCi0gICAgICAgICAgICBkZWYgZmls
dGVyKHNlbGYsIGZyYW1lKToKLSAgICAgICAgICAgICAgICBzZWxmLl9wYXJlbnQuX3Byb2Nlc3Nf
aW5jb21pbmdfZnJhbWUoZnJhbWUpCi0KLSAgICAgICAgc2VsZi5fb3V0Z29pbmdfZnJhbWVfZmls
dGVyID0gX091dGdvaW5nRnJhbWVGaWx0ZXIoc2VsZikKLSAgICAgICAgc2VsZi5faW5jb21pbmdf
ZnJhbWVfZmlsdGVyID0gX0luY29taW5nRnJhbWVGaWx0ZXIoc2VsZikKLSAgICAgICAgc3RyZWFt
X29wdGlvbnMub3V0Z29pbmdfZnJhbWVfZmlsdGVycy5hcHBlbmQoCi0gICAgICAgICAgICBzZWxm
Ll9vdXRnb2luZ19mcmFtZV9maWx0ZXIpCi0gICAgICAgIHN0cmVhbV9vcHRpb25zLmluY29taW5n
X2ZyYW1lX2ZpbHRlcnMuYXBwZW5kKAotICAgICAgICAgICAgc2VsZi5faW5jb21pbmdfZnJhbWVf
ZmlsdGVyKQotCi0gICAgICAgIHN0cmVhbV9vcHRpb25zLmVuY29kZV90ZXh0X21lc3NhZ2VfdG9f
dXRmOCA9IEZhbHNlCi0KLQotX2F2YWlsYWJsZV9wcm9jZXNzb3JzW2NvbW1vbi5QRVJNRVNTQUdF
X0RFRkxBVEVfRVhURU5TSU9OXSA9ICgKLSAgICAgICAgUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNp
b25Qcm9jZXNzb3IpCi0jIFRPRE8odHlvc2hpbm8pOiBSZW9yZ2FuaXplIGNsYXNzIG5hbWVzLgot
X2NvbXByZXNzaW9uX2V4dGVuc2lvbl9uYW1lcy5hcHBlbmQoJ2RlZmxhdGUnKQotCi0KLWNsYXNz
IE11eEV4dGVuc2lvblByb2Nlc3NvcihFeHRlbnNpb25Qcm9jZXNzb3JJbnRlcmZhY2UpOgotICAg
ICIiIldlYlNvY2tldCBtdWx0aXBsZXhpbmcgZXh0ZW5zaW9uIHByb2Nlc3Nvci4iIiIKLQotICAg
IF9RVU9UQV9QQVJBTSA9ICdxdW90YScKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0
KToKLSAgICAgICAgRXh0ZW5zaW9uUHJvY2Vzc29ySW50ZXJmYWNlLl9faW5pdF9fKHNlbGYsIHJl
cXVlc3QpCi0gICAgICAgIHNlbGYuX3F1b3RhID0gMAotICAgICAgICBzZWxmLl9leHRlbnNpb25z
ID0gW10KLQotICAgIGRlZiBuYW1lKHNlbGYpOgotICAgICAgICByZXR1cm4gY29tbW9uLk1VWF9F
WFRFTlNJT04KLQotICAgIGRlZiBjaGVja19jb25zaXN0ZW5jeV93aXRoX290aGVyX3Byb2Nlc3Nv
cnMoc2VsZiwgcHJvY2Vzc29ycyk6Ci0gICAgICAgIGJlZm9yZV9tdXggPSBUcnVlCi0gICAgICAg
IGZvciBwcm9jZXNzb3IgaW4gcHJvY2Vzc29yczoKLSAgICAgICAgICAgIG5hbWUgPSBwcm9jZXNz
b3IubmFtZSgpCi0gICAgICAgICAgICBpZiBuYW1lID09IHNlbGYubmFtZSgpOgotICAgICAgICAg
ICAgICAgIGJlZm9yZV9tdXggPSBGYWxzZQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAg
ICAgICAgICBpZiBub3QgcHJvY2Vzc29yLmlzX2FjdGl2ZSgpOgotICAgICAgICAgICAgICAgIGNv
bnRpbnVlCi0gICAgICAgICAgICBpZiBiZWZvcmVfbXV4OgotICAgICAgICAgICAgICAgICMgTXV4
IGV4dGVuc2lvbiBjYW5ub3QgYmUgdXNlZCBhZnRlciBleHRlbnNpb25zCi0gICAgICAgICAgICAg
ICAgIyB0aGF0IGRlcGVuZCBvbiBmcmFtZSBib3VuZGFyeSwgZXh0ZW5zaW9uIGRhdGEgZmllbGQs
IG9yIGFueQotICAgICAgICAgICAgICAgICMgcmVzZXJ2ZWQgYml0cyB3aGljaCBhcmUgYXR0cmli
dXRlZCB0byBlYWNoIGZyYW1lLgotICAgICAgICAgICAgICAgIGlmIChuYW1lID09IGNvbW1vbi5E
RUZMQVRFX0ZSQU1FX0VYVEVOU0lPTiBvcgotICAgICAgICAgICAgICAgICAgICBuYW1lID09IGNv
bW1vbi5YX1dFQktJVF9ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTik6Ci0gICAgICAgICAgICAgICAg
ICAgIHNlbGYuc2V0X2FjdGl2ZShGYWxzZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuCi0g
ICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgTXV4IGV4dGVuc2lvbiBzaG91bGQg
bm90IGJlIGFwcGxpZWQgYmVmb3JlIGFueSBoaXN0b3J5LWJhc2VkCi0gICAgICAgICAgICAgICAg
IyBjb21wcmVzc2lvbiBleHRlbnNpb24uCi0gICAgICAgICAgICAgICAgaWYgKG5hbWUgPT0gJ2Rl
ZmxhdGUnIG9yCi0gICAgICAgICAgICAgICAgICAgIG5hbWUgPT0gY29tbW9uLkRFRkxBVEVfRlJB
TUVfRVhURU5TSU9OIG9yCi0gICAgICAgICAgICAgICAgICAgIG5hbWUgPT0gY29tbW9uLlhfV0VC
S0lUX0RFRkxBVEVfRlJBTUVfRVhURU5TSU9OKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5z
ZXRfYWN0aXZlKEZhbHNlKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4KLQotICAgIGRlZiBf
Z2V0X2V4dGVuc2lvbl9yZXNwb25zZV9pbnRlcm5hbChzZWxmKToKLSAgICAgICAgc2VsZi5fYWN0
aXZlID0gRmFsc2UKLSAgICAgICAgcXVvdGEgPSBzZWxmLl9yZXF1ZXN0LmdldF9wYXJhbWV0ZXJf
dmFsdWUoc2VsZi5fUVVPVEFfUEFSQU0pCi0gICAgICAgIGlmIHF1b3RhIGlzIG5vdCBOb25lOgot
ICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHF1b3RhID0gaW50KHF1b3RhKQotICAg
ICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICByZXR1cm4g
Tm9uZQotICAgICAgICAgICAgaWYgcXVvdGEgPCAwIG9yIHF1b3RhID49IDIgKiogMzI6Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAgIHNlbGYuX3F1b3RhID0gcXVvdGEK
LQotICAgICAgICBzZWxmLl9hY3RpdmUgPSBUcnVlCi0gICAgICAgIHJldHVybiBjb21tb24uRXh0
ZW5zaW9uUGFyYW1ldGVyKGNvbW1vbi5NVVhfRVhURU5TSU9OKQotCi0gICAgZGVmIF9zZXR1cF9z
dHJlYW1fb3B0aW9uc19pbnRlcm5hbChzZWxmLCBzdHJlYW1fb3B0aW9ucyk6Ci0gICAgICAgIHBh
c3MKLQotICAgIGRlZiBzZXRfcXVvdGEoc2VsZiwgcXVvdGEpOgotICAgICAgICBzZWxmLl9xdW90
YSA9IHF1b3RhCi0KLSAgICBkZWYgcXVvdGEoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9x
dW90YQotCi0gICAgZGVmIHNldF9leHRlbnNpb25zKHNlbGYsIGV4dGVuc2lvbnMpOgotICAgICAg
ICBzZWxmLl9leHRlbnNpb25zID0gZXh0ZW5zaW9ucwotCi0gICAgZGVmIGV4dGVuc2lvbnMoc2Vs
Zik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9leHRlbnNpb25zCi0KLQotX2F2YWlsYWJsZV9wcm9j
ZXNzb3JzW2NvbW1vbi5NVVhfRVhURU5TSU9OXSA9IE11eEV4dGVuc2lvblByb2Nlc3NvcgotCi0K
LWRlZiBnZXRfZXh0ZW5zaW9uX3Byb2Nlc3NvcihleHRlbnNpb25fcmVxdWVzdCk6Ci0gICAgIiIi
R2l2ZW4gYW4gRXh0ZW5zaW9uUGFyYW1ldGVyIHJlcHJlc2VudGluZyBhbiBleHRlbnNpb24gb2Zm
ZXIgcmVjZWl2ZWQKLSAgICBmcm9tIGEgY2xpZW50LCBjb25maWd1cmVzIGFuZCByZXR1cm5zIGFu
IGluc3RhbmNlIG9mIHRoZSBjb3JyZXNwb25kaW5nCi0gICAgZXh0ZW5zaW9uIHByb2Nlc3NvciBj
bGFzcy4KLSAgICAiIiIKLQotICAgIHByb2Nlc3Nvcl9jbGFzcyA9IF9hdmFpbGFibGVfcHJvY2Vz
c29ycy5nZXQoZXh0ZW5zaW9uX3JlcXVlc3QubmFtZSgpKQotICAgIGlmIHByb2Nlc3Nvcl9jbGFz
cyBpcyBOb25lOgotICAgICAgICByZXR1cm4gTm9uZQotICAgIHJldHVybiBwcm9jZXNzb3JfY2xh
c3MoZXh0ZW5zaW9uX3JlcXVlc3QpCi0KLQotZGVmIGlzX2NvbXByZXNzaW9uX2V4dGVuc2lvbihl
eHRlbnNpb25fbmFtZSk6Ci0gICAgcmV0dXJuIGV4dGVuc2lvbl9uYW1lIGluIF9jb21wcmVzc2lv
bl9leHRlbnNpb25fbmFtZXMKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvbW9kX3B5d2Vic29ja2V0L2Zhc3RfbWFza2luZy5pIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQv
ZmFzdF9tYXNraW5nLmkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkYWFkMjdmNTNj
NDZiZTJhNzFjNzA0YzcwOGZiYjNmNDJmMWEzZDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvZmFzdF9tYXNraW5nLmkK
KysrIC9kZXYvbnVsbApAQCAtMSw5OCArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAxMywgR29vZ2xl
IEluYy4KLS8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0vLyBtZXQ6Ci0vLwotLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LS8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLS8vIGRpc3RyaWJ1dGlvbi4KLS8vICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLS8vIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0vLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS8vICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0vLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLS8vIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0vLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0vLyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLS8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotJW1vZHVsZSBmYXN0X21hc2tpbmcKLQotJWluY2x1ZGUg
ImNzdHJpbmcuaSIKLQotJXsKLSNpbmNsdWRlIDxjc3RyaW5nPgotCi0jaWZkZWYgX19TU0UyX18K
LSNpbmNsdWRlIDxlbW1pbnRyaW4uaD4KLSNlbmRpZgotJX0KLQotJWFwcGx5IChjaGFyICpTVFJJ
TkcsIGludCBMRU5HVEgpIHsKLSAgICAoY29uc3QgY2hhciogcGF5bG9hZCwgaW50IHBheWxvYWRf
bGVuZ3RoKSwKLSAgICAoY29uc3QgY2hhciogbWFza2luZ19rZXksIGludCBtYXNraW5nX2tleV9s
ZW5ndGgpIH07Ci0lY3N0cmluZ19vdXRwdXRfYWxsb2NhdGVfc2l6ZSgKLSAgICBjaGFyKiogcmVz
dWx0LCBpbnQqIHJlc3VsdF9sZW5ndGgsIGRlbGV0ZSBbXSAqJDEpOwotCi0laW5saW5lICV7Ci0K
LXZvaWQgbWFzaygKLSAgICBjb25zdCBjaGFyKiBwYXlsb2FkLCBpbnQgcGF5bG9hZF9sZW5ndGgs
Ci0gICAgY29uc3QgY2hhciogbWFza2luZ19rZXksIGludCBtYXNraW5nX2tleV9sZW5ndGgsCi0g
ICAgaW50IG1hc2tpbmdfa2V5X2luZGV4LAotICAgIGNoYXIqKiByZXN1bHQsIGludCogcmVzdWx0
X2xlbmd0aCkgewotICAqcmVzdWx0ID0gbmV3IGNoYXJbcGF5bG9hZF9sZW5ndGhdOwotICAqcmVz
dWx0X2xlbmd0aCA9IHBheWxvYWRfbGVuZ3RoOwotICBtZW1jcHkoKnJlc3VsdCwgcGF5bG9hZCwg
cGF5bG9hZF9sZW5ndGgpOwotCi0gIGNoYXIqIGN1cnNvciA9ICpyZXN1bHQ7Ci0gIGNoYXIqIGN1
cnNvcl9lbmQgPSAqcmVzdWx0ICsgKnJlc3VsdF9sZW5ndGg7Ci0KLSNpZmRlZiBfX1NTRTJfXwot
ICB3aGlsZSAoKGN1cnNvciA8IGN1cnNvcl9lbmQpICYmCi0gICAgICAgICAocmVpbnRlcnByZXRf
Y2FzdDxzaXplX3Q+KGN1cnNvcikgJiAweGYpKSB7Ci0gICAgKmN1cnNvciBePSBtYXNraW5nX2tl
eVttYXNraW5nX2tleV9pbmRleF07Ci0gICAgKytjdXJzb3I7Ci0gICAgbWFza2luZ19rZXlfaW5k
ZXggPSAobWFza2luZ19rZXlfaW5kZXggKyAxKSAlIG1hc2tpbmdfa2V5X2xlbmd0aDsKLSAgfQot
ICBpZiAoY3Vyc29yID09IGN1cnNvcl9lbmQpIHsKLSAgICByZXR1cm47Ci0gIH0KLQotICBjb25z
dCBpbnQga0Jsb2NrU2l6ZSA9IDE2OwotICBfX20xMjhpIG1hc2tpbmdfa2V5X2Jsb2NrOwotICBm
b3IgKGludCBpID0gMDsgaSA8IGtCbG9ja1NpemU7ICsraSkgewotICAgICoocmVpbnRlcnByZXRf
Y2FzdDxjaGFyKj4oJm1hc2tpbmdfa2V5X2Jsb2NrKSArIGkpID0KLSAgICAgICAgbWFza2luZ19r
ZXlbbWFza2luZ19rZXlfaW5kZXhdOwotICAgIG1hc2tpbmdfa2V5X2luZGV4ID0gKG1hc2tpbmdf
a2V5X2luZGV4ICsgMSkgJSBtYXNraW5nX2tleV9sZW5ndGg7Ci0gIH0KLQotICB3aGlsZSAoY3Vy
c29yICsga0Jsb2NrU2l6ZSA8PSBjdXJzb3JfZW5kKSB7Ci0gICAgX19tMTI4aSBwYXlsb2FkX2Js
b2NrID0KLSAgICAgICAgX21tX2xvYWRfc2kxMjgocmVpbnRlcnByZXRfY2FzdDxfX20xMjhpKj4o
Y3Vyc29yKSk7Ci0gICAgX21tX3N0cmVhbV9zaTEyOChyZWludGVycHJldF9jYXN0PF9fbTEyOGkq
PihjdXJzb3IpLAotICAgICAgICAgICAgICAgICAgICAgX21tX3hvcl9zaTEyOChwYXlsb2FkX2Js
b2NrLCBtYXNraW5nX2tleV9ibG9jaykpOwotICAgIGN1cnNvciArPSBrQmxvY2tTaXplOwotICB9
Ci0jZW5kaWYKLQotICB3aGlsZSAoY3Vyc29yIDwgY3Vyc29yX2VuZCkgewotICAgICpjdXJzb3Ig
Xj0gbWFza2luZ19rZXlbbWFza2luZ19rZXlfaW5kZXhdOwotICAgICsrY3Vyc29yOwotICAgIG1h
c2tpbmdfa2V5X2luZGV4ID0gKG1hc2tpbmdfa2V5X2luZGV4ICsgMSkgJSBtYXNraW5nX2tleV9s
ZW5ndGg7Ci0gIH0KLX0KLQotJX0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L2hh
bmRzaGFrZS9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9fX2lu
aXRfXy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzA3MjYzYTY5ZmU5NTE1NmI1
ZjNiMzlkNTg4M2RiOTc1MjU5ZDM0Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvX19pbml0X18ucHkK
KysrIC9kZXYvbnVsbApAQCAtMSwxMTAgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xl
IEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
IwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIi
V2ViU29ja2V0IG9wZW5pbmcgaGFuZHNoYWtlIHByb2Nlc3Nvci4gVGhpcyBjbGFzcyB0cnkgdG8g
YXBwbHkgYXZhaWxhYmxlCi1vcGVuaW5nIGhhbmRzaGFrZSBwcm9jZXNzb3JzIGZvciBlYWNoIHBy
b3RvY29sIHZlcnNpb24gdW50aWwgYSBjb25uZWN0aW9uIGlzCi1zdWNjZXNzZnVsbHkgZXN0YWJs
aXNoZWQuCi0iIiIKLQotCi1pbXBvcnQgbG9nZ2luZwotCi1mcm9tIG1vZF9weXdlYnNvY2tldCBp
bXBvcnQgY29tbW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UgaW1wb3J0IGh5Ymkw
MAotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlIGltcG9ydCBoeWJpCi0jIEV4cG9ydCBB
Ym9ydGVkQnlVc2VyRXhjZXB0aW9uLCBIYW5kc2hha2VFeGNlcHRpb24sIGFuZCBWZXJzaW9uRXhj
ZXB0aW9uCi0jIHN5bWJvbCBmcm9tIHRoaXMgbW9kdWxlLgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQu
aGFuZHNoYWtlLl9iYXNlIGltcG9ydCBBYm9ydGVkQnlVc2VyRXhjZXB0aW9uCi1mcm9tIG1vZF9w
eXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IEhhbmRzaGFrZUV4Y2VwdGlvbgotZnJv
bSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBWZXJzaW9uRXhjZXB0aW9u
Ci0KLQotX0xPR0dFUiA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQotCi0KLWRlZiBkb19o
YW5kc2hha2UocmVxdWVzdCwgZGlzcGF0Y2hlciwgYWxsb3dEcmFmdDc1PUZhbHNlLCBzdHJpY3Q9
RmFsc2UpOgotICAgICIiIlBlcmZvcm1zIFdlYlNvY2tldCBoYW5kc2hha2UuCi0KLSAgICBBcmdz
OgotICAgICAgICByZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3QuCi0gICAgICAgIGRpc3BhdGNo
ZXI6IERpc3BhdGNoZXIgKGRpc3BhdGNoLkRpc3BhdGNoZXIpLgotICAgICAgICBhbGxvd0RyYWZ0
NzU6IG9ic29sZXRlIGFyZ3VtZW50LiBpZ25vcmVkLgotICAgICAgICBzdHJpY3Q6IG9ic29sZXRl
IGFyZ3VtZW50LiBpZ25vcmVkLgotCi0gICAgSGFuZHNoYWtlciB3aWxsIGFkZCBhdHRyaWJ1dGVz
IHN1Y2ggYXMgd3NfcmVzb3VyY2UgaW4gcGVyZm9ybWluZwotICAgIGhhbmRzaGFrZS4KLSAgICAi
IiIKLQotICAgIF9MT0dHRVIuZGVidWcoJ0NsaWVudFwncyBvcGVuaW5nIGhhbmRzaGFrZSByZXNv
dXJjZTogJXInLCByZXF1ZXN0LnVyaSkKLSAgICAjIFRvIHByaW50IG1pbWV0b29scy5NZXNzYWdl
IGFzIGVzY2FwZWQgb25lLWxpbmUgc3RyaW5nLCB3ZSBjb252ZXJ0cwotICAgICMgaGVhZGVyc19p
biB0byBkaWN0IG9iamVjdC4gV2l0aG91dCBjb252ZXJzaW9uLCBpZiB3ZSB1c2UgJXIsIGl0IGp1
c3QKLSAgICAjIHByaW50cyB0aGUgdHlwZSBhbmQgYWRkcmVzcywgYW5kIGlmIHdlIHVzZSAlcywg
aXQgcHJpbnRzIHRoZSBvcmlnaW5hbAotICAgICMgaGVhZGVyIHN0cmluZyBhcyBtdWx0aXBsZSBs
aW5lcy4KLSAgICAjCi0gICAgIyBCb3RoIG1pbWV0b29scy5NZXNzYWdlIGFuZCBNcFRhYmxlX1R5
cGUgb2YgbW9kX3B5dGhvbiBjYW4gYmUKLSAgICAjIGNvbnZlcnRlZCB0byBkaWN0LgotICAgICMK
LSAgICAjIG1pbWV0b29scy5NZXNzYWdlLl9fc3RyX18gcmV0dXJucyB0aGUgb3JpZ2luYWwgaGVh
ZGVyIHN0cmluZy4KLSAgICAjIGRpY3QobWltZXRvb2xzLk1lc3NhZ2Ugb2JqZWN0KSByZXR1cm5z
IHRoZSBtYXAgZnJvbSBoZWFkZXIgbmFtZXMgdG8KLSAgICAjIGhlYWRlciB2YWx1ZXMuIFdoaWxl
IE1wVGFibGVfVHlwZSBkb2Vzbid0IGhhdmUgc3VjaCBfX3N0cl9fIGJ1dCBqdXN0Ci0gICAgIyBf
X3JlcHJfXyB3aGljaCBmb3JtYXRzIGl0c2VsZiBhcyB3ZWxsIGFzIGRpY3Rpb25hcnkgb2JqZWN0
LgotICAgIF9MT0dHRVIuZGVidWcoCi0gICAgICAgICdDbGllbnRcJ3Mgb3BlbmluZyBoYW5kc2hh
a2UgaGVhZGVyczogJXInLCBkaWN0KHJlcXVlc3QuaGVhZGVyc19pbikpCi0KLSAgICBoYW5kc2hh
a2VycyA9IFtdCi0gICAgaGFuZHNoYWtlcnMuYXBwZW5kKAotICAgICAgICAoJ1JGQyA2NDU1Jywg
aHliaS5IYW5kc2hha2VyKHJlcXVlc3QsIGRpc3BhdGNoZXIpKSkKLSAgICBoYW5kc2hha2Vycy5h
cHBlbmQoCi0gICAgICAgICgnSHlCaSAwMCcsIGh5YmkwMC5IYW5kc2hha2VyKHJlcXVlc3QsIGRp
c3BhdGNoZXIpKSkKLQotICAgIGZvciBuYW1lLCBoYW5kc2hha2VyIGluIGhhbmRzaGFrZXJzOgot
ICAgICAgICBfTE9HR0VSLmRlYnVnKCdUcnlpbmcgcHJvdG9jb2wgdmVyc2lvbiAlcycsIG5hbWUp
Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKCkKLSAg
ICAgICAgICAgIF9MT0dHRVIuaW5mbygnRXN0YWJsaXNoZWQgKCVzIHByb3RvY29sKScsIG5hbWUp
Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgZXhjZXB0IEhhbmRzaGFrZUV4Y2VwdGlvbiBh
cyBlOgotICAgICAgICAgICAgX0xPR0dFUi5kZWJ1ZygKLSAgICAgICAgICAgICAgICAnRmFpbGVk
IHRvIGNvbXBsZXRlIG9wZW5pbmcgaGFuZHNoYWtlIGFzICVzIHByb3RvY29sOiAlcicsCi0gICAg
ICAgICAgICAgICAgbmFtZSwgZSkKLSAgICAgICAgICAgIGlmIGUuc3RhdHVzOgotICAgICAgICAg
ICAgICAgIHJhaXNlIGUKLSAgICAgICAgZXhjZXB0IEFib3J0ZWRCeVVzZXJFeGNlcHRpb24gYXMg
ZToKLSAgICAgICAgICAgIHJhaXNlCi0gICAgICAgIGV4Y2VwdCBWZXJzaW9uRXhjZXB0aW9uIGFz
IGU6Ci0gICAgICAgICAgICByYWlzZQotCi0gICAgIyBUT0RPKHRveW9zaGltKTogQWRkIGEgdGVz
dCB0byBjb3ZlciB0aGUgY2FzZSBhbGwgaGFuZHNoYWtlcnMgZmFpbC4KLSAgICByYWlzZSBIYW5k
c2hha2VFeGNlcHRpb24oCi0gICAgICAgICdGYWlsZWQgdG8gY29tcGxldGUgb3BlbmluZyBoYW5k
c2hha2UgZm9yIGFsbCBhdmFpbGFibGUgcHJvdG9jb2xzJywKLSAgICAgICAgc3RhdHVzPWNvbW1v
bi5IVFRQX1NUQVRVU19CQURfUkVRVUVTVCkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9fYmFzZS5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9k
X3B5d2Vic29ja2V0L2hhbmRzaGFrZS9fYmFzZS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMGFmMDUyNDJiZmNkNmZjOTZjYmQ4ODM5YjA3MDM4NDQyNGE3ZTI5Zi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tl
dC9oYW5kc2hha2UvX2Jhc2UucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxODIgKzAsMCBAQAotIyBD
b3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMg
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0j
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0KLQotIiIiQ29tbW9uIGZ1bmN0aW9ucyBhbmQgZXhjZXB0aW9ucyB1c2Vk
IGJ5IFdlYlNvY2tldCBvcGVuaW5nIGhhbmRzaGFrZQotcHJvY2Vzc29ycy4KLSIiIgotCi0KLWZy
b20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KLWZyb20gbW9kX3B5d2Vic29ja2V0IGlt
cG9ydCBodHRwX2hlYWRlcl91dGlsCi0KLQotY2xhc3MgQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbihF
eGNlcHRpb24pOgotICAgICIiIkV4Y2VwdGlvbiBmb3IgYWJvcnRpbmcgYSBjb25uZWN0aW9uIGlu
dGVudGlvbmFsbHkuCi0KLSAgICBJZiB0aGlzIGV4Y2VwdGlvbiBpcyByYWlzZWQgaW4gZG9fZXh0
cmFfaGFuZHNoYWtlIGhhbmRsZXIsIHRoZSBjb25uZWN0aW9uCi0gICAgd2lsbCBiZSBhYmFuZG9u
ZWQuIE5vIG90aGVyIFdlYlNvY2tldCBvciBIVFRQKFMpIGhhbmRsZXIgd2lsbCBiZSBpbnZva2Vk
LgotCi0gICAgSWYgdGhpcyBleGNlcHRpb24gaXMgcmFpc2VkIGluIHRyYW5zZmVyX2RhdGFfaGFu
ZGxlciwgdGhlIGNvbm5lY3Rpb24gd2lsbAotICAgIGJlIGNsb3NlZCB3aXRob3V0IGNsb3Npbmcg
aGFuZHNoYWtlLiBObyBvdGhlciBXZWJTb2NrZXQgb3IgSFRUUChTKSBoYW5kbGVyCi0gICAgd2ls
bCBiZSBpbnZva2VkLgotICAgICIiIgotCi0gICAgcGFzcwotCi0KLWNsYXNzIEhhbmRzaGFrZUV4
Y2VwdGlvbihFeGNlcHRpb24pOgotICAgICIiIlRoaXMgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2Vk
IHdoZW4gYW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgcHJvY2Vzc2luZwotICAgIFdlYlNvY2tldCBp
bml0aWFsIGhhbmRzaGFrZS4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1l
LCBzdGF0dXM9Tm9uZSk6Ci0gICAgICAgIHN1cGVyKEhhbmRzaGFrZUV4Y2VwdGlvbiwgc2VsZiku
X19pbml0X18obmFtZSkKLSAgICAgICAgc2VsZi5zdGF0dXMgPSBzdGF0dXMKLQotCi1jbGFzcyBW
ZXJzaW9uRXhjZXB0aW9uKEV4Y2VwdGlvbik6Ci0gICAgIiIiVGhpcyBleGNlcHRpb24gd2lsbCBi
ZSByYWlzZWQgd2hlbiBhIHZlcnNpb24gb2YgY2xpZW50IHJlcXVlc3QgZG9lcyBub3QKLSAgICBt
YXRjaCB3aXRoIHZlcnNpb24gdGhlIHNlcnZlciBzdXBwb3J0cy4KLSAgICAiIiIKLQotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBzdXBwb3J0ZWRfdmVyc2lvbnM9JycpOgotICAgICAgICAi
IiJDb25zdHJ1Y3QgYW4gaW5zdGFuY2UuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIHN1
cHBvcnRlZF92ZXJzaW9uOiBhIHN0ciBvYmplY3QgdG8gc2hvdyBzdXBwb3J0ZWQgaHliaSB2ZXJz
aW9ucy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiAnOCwgMTMnKQotICAg
ICAgICAiIiIKLSAgICAgICAgc3VwZXIoVmVyc2lvbkV4Y2VwdGlvbiwgc2VsZikuX19pbml0X18o
bmFtZSkKLSAgICAgICAgc2VsZi5zdXBwb3J0ZWRfdmVyc2lvbnMgPSBzdXBwb3J0ZWRfdmVyc2lv
bnMKLQotCi1kZWYgZ2V0X2RlZmF1bHRfcG9ydChpc19zZWN1cmUpOgotICAgIGlmIGlzX3NlY3Vy
ZToKLSAgICAgICAgcmV0dXJuIGNvbW1vbi5ERUZBVUxUX1dFQl9TT0NLRVRfU0VDVVJFX1BPUlQK
LSAgICBlbHNlOgotICAgICAgICByZXR1cm4gY29tbW9uLkRFRkFVTFRfV0VCX1NPQ0tFVF9QT1JU
Ci0KLQotZGVmIHZhbGlkYXRlX3N1YnByb3RvY29sKHN1YnByb3RvY29sKToKLSAgICAiIiJWYWxp
ZGF0ZSBhIHZhbHVlIGluIHRoZSBTZWMtV2ViU29ja2V0LVByb3RvY29sIGZpZWxkLgotCi0gICAg
U2VlIHRoZSBTZWN0aW9uIDQuMS4sIDQuMi4yLiwgYW5kIDQuMy4gb2YgUkZDIDY0NTUuCi0gICAg
IiIiCi0KLSAgICBpZiBub3Qgc3VicHJvdG9jb2w6Ci0gICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4
Y2VwdGlvbignSW52YWxpZCBzdWJwcm90b2NvbCBuYW1lOiBlbXB0eScpCi0KLSAgICAjIFBhcmFt
ZXRlciBzaG91bGQgYmUgZW5jb2RlZCBIVFRQIHRva2VuLgotICAgIHN0YXRlID0gaHR0cF9oZWFk
ZXJfdXRpbC5QYXJzaW5nU3RhdGUoc3VicHJvdG9jb2wpCi0gICAgdG9rZW4gPSBodHRwX2hlYWRl
cl91dGlsLmNvbnN1bWVfdG9rZW4oc3RhdGUpCi0gICAgcmVzdCA9IGh0dHBfaGVhZGVyX3V0aWwu
cGVlayhzdGF0ZSkKLSAgICAjIElmIHxyZXN0fCBpcyBub3QgTm9uZSwgfHN1YnByb3RvY29sfCBp
cyBub3Qgb25lIHRva2VuIG9yIGludmFsaWQuIElmCi0gICAgIyB8cmVzdHwgaXMgTm9uZSwgfHRv
a2VufCBtdXN0IG5vdCBiZSBOb25lIGJlY2F1c2UgfHN1YnByb3RvY29sfCBpcwotICAgICMgY29u
Y2F0ZW5hdGlvbiBvZiB8dG9rZW58IGFuZCB8cmVzdHwgYW5kIGlzIG5vdCBOb25lLgotICAgIGlm
IHJlc3QgaXMgbm90IE5vbmU6Ci0gICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbignSW52
YWxpZCBub24tdG9rZW4gc3RyaW5nIGluIHN1YnByb3RvY29sICcKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICduYW1lOiAlcicgJSByZXN0KQotCi0KLWRlZiBwYXJzZV9ob3N0X2hl
YWRlcihyZXF1ZXN0KToKLSAgICBmaWVsZHMgPSByZXF1ZXN0LmhlYWRlcnNfaW5bY29tbW9uLkhP
U1RfSEVBREVSXS5zcGxpdCgnOicsIDEpCi0gICAgaWYgbGVuKGZpZWxkcykgPT0gMToKLSAgICAg
ICAgcmV0dXJuIGZpZWxkc1swXSwgZ2V0X2RlZmF1bHRfcG9ydChyZXF1ZXN0LmlzX2h0dHBzKCkp
Ci0gICAgdHJ5OgotICAgICAgICByZXR1cm4gZmllbGRzWzBdLCBpbnQoZmllbGRzWzFdKQotICAg
IGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6Ci0gICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlv
bignSW52YWxpZCBwb3J0IG51bWJlciBmb3JtYXQ6ICVyJyAlIGUpCi0KLQotZGVmIGZvcm1hdF9o
ZWFkZXIobmFtZSwgdmFsdWUpOgotICAgIHJldHVybiAnJXM6ICVzXHJcbicgJSAobmFtZSwgdmFs
dWUpCi0KLQotZGVmIGdldF9tYW5kYXRvcnlfaGVhZGVyKHJlcXVlc3QsIGtleSk6Ci0gICAgdmFs
dWUgPSByZXF1ZXN0LmhlYWRlcnNfaW4uZ2V0KGtleSkKLSAgICBpZiB2YWx1ZSBpcyBOb25lOgot
ICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oJ0hlYWRlciAlcyBpcyBub3QgZGVmaW5l
ZCcgJSBrZXkpCi0gICAgcmV0dXJuIHZhbHVlCi0KLQotZGVmIHZhbGlkYXRlX21hbmRhdG9yeV9o
ZWFkZXIocmVxdWVzdCwga2V5LCBleHBlY3RlZF92YWx1ZSwgZmFpbF9zdGF0dXM9Tm9uZSk6Ci0g
ICAgdmFsdWUgPSBnZXRfbWFuZGF0b3J5X2hlYWRlcihyZXF1ZXN0LCBrZXkpCi0KLSAgICBpZiB2
YWx1ZS5sb3dlcigpICE9IGV4cGVjdGVkX3ZhbHVlLmxvd2VyKCk6Ci0gICAgICAgIHJhaXNlIEhh
bmRzaGFrZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICdFeHBlY3RlZCAlciBmb3IgaGVhZGVyICVz
IGJ1dCBmb3VuZCAlciAoY2FzZS1pbnNlbnNpdGl2ZSknICUKLSAgICAgICAgICAgIChleHBlY3Rl
ZF92YWx1ZSwga2V5LCB2YWx1ZSksIHN0YXR1cz1mYWlsX3N0YXR1cykKLQotCi1kZWYgY2hlY2tf
cmVxdWVzdF9saW5lKHJlcXVlc3QpOgotICAgICMgNS4xIDEuIFRoZSB0aHJlZSBjaGFyYWN0ZXIg
VVRGLTggc3RyaW5nICJHRVQiLgotICAgICMgNS4xIDIuIEEgVVRGLTgtZW5jb2RlZCBVKzAwMjAg
U1BBQ0UgY2hhcmFjdGVyICgweDIwIGJ5dGUpLgotICAgIGlmIHJlcXVlc3QubWV0aG9kICE9ICdH
RVQnOgotICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oJ01ldGhvZCBpcyBub3QgR0VU
OiAlcicgJSByZXF1ZXN0Lm1ldGhvZCkKLQotICAgIGlmIHJlcXVlc3QucHJvdG9jb2wgIT0gJ0hU
VFAvMS4xJzoKLSAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9uKCdWZXJzaW9uIGlzIG5v
dCBIVFRQLzEuMTogJXInICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVl
c3QucHJvdG9jb2wpCi0KLQotZGVmIHBhcnNlX3Rva2VuX2xpc3QoZGF0YSk6Ci0gICAgIiIiUGFy
c2VzIGEgaGVhZGVyIHZhbHVlIHdoaWNoIGZvbGxvd3MgMSN0b2tlbiBhbmQgcmV0dXJucyBwYXJz
ZWQgZWxlbWVudHMKLSAgICBhcyBhIGxpc3Qgb2Ygc3RyaW5ncy4KLQotICAgIExlYWRpbmcgTFdT
ZXMgbXVzdCBiZSB0cmltbWVkLgotICAgICIiIgotCi0gICAgc3RhdGUgPSBodHRwX2hlYWRlcl91
dGlsLlBhcnNpbmdTdGF0ZShkYXRhKQotCi0gICAgdG9rZW5fbGlzdCA9IFtdCi0KLSAgICB3aGls
ZSBUcnVlOgotICAgICAgICB0b2tlbiA9IGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV90b2tlbihz
dGF0ZSkKLSAgICAgICAgaWYgdG9rZW4gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICB0b2tlbl9s
aXN0LmFwcGVuZCh0b2tlbikKLQotICAgICAgICBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfbHdz
ZXMoc3RhdGUpCi0KLSAgICAgICAgaWYgaHR0cF9oZWFkZXJfdXRpbC5wZWVrKHN0YXRlKSBpcyBO
b25lOgotICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICBpZiBub3QgaHR0cF9oZWFkZXJfdXRp
bC5jb25zdW1lX3N0cmluZyhzdGF0ZSwgJywnKToKLSAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFr
ZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnRXhwZWN0ZWQgYSBjb21tYSBidXQgZm91bmQg
JXInICUgaHR0cF9oZWFkZXJfdXRpbC5wZWVrKHN0YXRlKSkKLQotICAgICAgICBodHRwX2hlYWRl
cl91dGlsLmNvbnN1bWVfbHdzZXMoc3RhdGUpCi0KLSAgICBpZiBsZW4odG9rZW5fbGlzdCkgPT0g
MDoKLSAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9uKCdObyB2YWxpZCB0b2tlbiBmb3Vu
ZCcpCi0KLSAgICByZXR1cm4gdG9rZW5fbGlzdAotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL2h5YmkucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21v
ZF9weXdlYnNvY2tldC9oYW5kc2hha2UvaHliaS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMmRiZjI1YTFkY2NhNzdjZDU4OWRiYTcwNTRmNGU2MjcyYzZkZWEyMi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tl
dC9oYW5kc2hha2UvaHliaS5weQorKysgL2Rldi9udWxsCkBAIC0xLDQyMCArMCwwIEBACi0jIENv
cHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
Ci0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLQotCi0iIiJUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIG9wZW5pbmcgaGFuZHNo
YWtlIHByb2Nlc3NvciBmb3IgdGhlIFdlYlNvY2tldAotcHJvdG9jb2wgKFJGQyA2NDU1KS4KLQot
U3BlY2lmaWNhdGlvbjoKLWh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY0NTUKLSIiIgot
Ci0KLSMgTm90ZTogcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlIGlzIHVzZWQgaW4gdGhpcyBtb2R1
bGUsIGV2ZW4gdGhvdWdoIG1vZF9weXRob24KLSMgZG9jdW1lbnQgc2F5cyB0aGF0IGl0IHNob3Vs
ZCBiZSB1c2VkIG9ubHkgaW4gY29ubmVjdGlvbiBoYW5kbGVycy4KLSMgVW5mb3J0dW5hdGVseSwg
d2UgaGF2ZSBubyBvdGhlciBvcHRpb25zLiBGb3IgZXhhbXBsZSwgcmVxdWVzdC53cml0ZSBpcyBu
b3QKLSMgc3VpdGFibGUgYmVjYXVzZSBpdCBkb2Vzbid0IGFsbG93IGRpcmVjdCByYXcgYnl0ZXMg
d3JpdGluZy4KLQotCi1pbXBvcnQgYmFzZTY0Ci1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IG9zCi1p
bXBvcnQgcmUKLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgotZnJvbSBtb2Rf
cHl3ZWJzb2NrZXQuZXh0ZW5zaW9ucyBpbXBvcnQgZ2V0X2V4dGVuc2lvbl9wcm9jZXNzb3IKLWZy
b20gbW9kX3B5d2Vic29ja2V0LmV4dGVuc2lvbnMgaW1wb3J0IGlzX2NvbXByZXNzaW9uX2V4dGVu
c2lvbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBjaGVja19y
ZXF1ZXN0X2xpbmUKLWZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQg
Zm9ybWF0X2hlYWRlcgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9y
dCBnZXRfbWFuZGF0b3J5X2hlYWRlcgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9i
YXNlIGltcG9ydCBIYW5kc2hha2VFeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRz
aGFrZS5fYmFzZSBpbXBvcnQgcGFyc2VfdG9rZW5fbGlzdAotZnJvbSBtb2RfcHl3ZWJzb2NrZXQu
aGFuZHNoYWtlLl9iYXNlIGltcG9ydCB2YWxpZGF0ZV9tYW5kYXRvcnlfaGVhZGVyCi1mcm9tIG1v
ZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IHZhbGlkYXRlX3N1YnByb3RvY29s
Ci1mcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IFZlcnNpb25FeGNl
cHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0LnN0cmVhbSBpbXBvcnQgU3RyZWFtCi1mcm9tIG1v
ZF9weXdlYnNvY2tldC5zdHJlYW0gaW1wb3J0IFN0cmVhbU9wdGlvbnMKLWZyb20gbW9kX3B5d2Vi
c29ja2V0IGltcG9ydCB1dGlsCi0KLQotIyBVc2VkIHRvIHZhbGlkYXRlIHRoZSB2YWx1ZSBpbiB0
aGUgU2VjLVdlYlNvY2tldC1LZXkgaGVhZGVyIHN0cmljdGx5LiBSRkMgNDY0OAotIyBkaXNhbGxv
d3Mgbm9uLXplcm8gcGFkZGluZywgc28gdGhlIGNoYXJhY3RlciByaWdodCBiZWZvcmUgPT0gbXVz
dCBiZSBhbnkgb2YKLSMgQSwgUSwgZyBhbmQgdy4KLV9TRUNfV0VCU09DS0VUX0tFWV9SRUdFWCA9
IHJlLmNvbXBpbGUoJ15bKy8wLTlBLVphLXpdezIxfVtBUWd3XT09JCcpCi0KLSMgRGVmaW5pbmcg
YWxpYXNlcyBmb3IgdmFsdWVzIHVzZWQgZnJlcXVlbnRseS4KLV9WRVJTSU9OX0xBVEVTVCA9IGNv
bW1vbi5WRVJTSU9OX0hZQklfTEFURVNUCi1fVkVSU0lPTl9MQVRFU1RfU1RSSU5HID0gc3RyKF9W
RVJTSU9OX0xBVEVTVCkKLV9TVVBQT1JURURfVkVSU0lPTlMgPSBbCi0gICAgX1ZFUlNJT05fTEFU
RVNULAotXQotCi0KLWRlZiBjb21wdXRlX2FjY2VwdChrZXkpOgotICAgICIiIkNvbXB1dGVzIHZh
bHVlIGZvciB0aGUgU2VjLVdlYlNvY2tldC1BY2NlcHQgaGVhZGVyIGZyb20gdmFsdWUgb2YgdGhl
Ci0gICAgU2VjLVdlYlNvY2tldC1LZXkgaGVhZGVyLgotICAgICIiIgotCi0gICAgYWNjZXB0X2Jp
bmFyeSA9IHV0aWwuc2hhMV9oYXNoKAotICAgICAgICBrZXkgKyBjb21tb24uV0VCU09DS0VUX0FD
Q0VQVF9VVUlEKS5kaWdlc3QoKQotICAgIGFjY2VwdCA9IGJhc2U2NC5iNjRlbmNvZGUoYWNjZXB0
X2JpbmFyeSkKLQotICAgIHJldHVybiAoYWNjZXB0LCBhY2NlcHRfYmluYXJ5KQotCi0KLWNsYXNz
IEhhbmRzaGFrZXIob2JqZWN0KToKLSAgICAiIiJPcGVuaW5nIGhhbmRzaGFrZSBwcm9jZXNzb3Ig
Zm9yIHRoZSBXZWJTb2NrZXQgcHJvdG9jb2wgKFJGQyA2NDU1KS4iIiIKLQotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCByZXF1ZXN0LCBkaXNwYXRjaGVyKToKLSAgICAgICAgIiIiQ29uc3RydWN0IGFu
IGluc3RhbmNlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICByZXF1ZXN0OiBtb2RfcHl0
aG9uIHJlcXVlc3QuCi0gICAgICAgICAgICBkaXNwYXRjaGVyOiBEaXNwYXRjaGVyIChkaXNwYXRj
aC5EaXNwYXRjaGVyKS4KLQotICAgICAgICBIYW5kc2hha2VyIHdpbGwgYWRkIGF0dHJpYnV0ZXMg
c3VjaCBhcyB3c19yZXNvdXJjZSBkdXJpbmcgaGFuZHNoYWtlLgotICAgICAgICAiIiIKLQotICAg
ICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKLQotICAgICAg
ICBzZWxmLl9yZXF1ZXN0ID0gcmVxdWVzdAotICAgICAgICBzZWxmLl9kaXNwYXRjaGVyID0gZGlz
cGF0Y2hlcgotCi0gICAgZGVmIF92YWxpZGF0ZV9jb25uZWN0aW9uX2hlYWRlcihzZWxmKToKLSAg
ICAgICAgY29ubmVjdGlvbiA9IGdldF9tYW5kYXRvcnlfaGVhZGVyKAotICAgICAgICAgICAgc2Vs
Zi5fcmVxdWVzdCwgY29tbW9uLkNPTk5FQ1RJT05fSEVBREVSKQotCi0gICAgICAgIHRyeToKLSAg
ICAgICAgICAgIGNvbm5lY3Rpb25fdG9rZW5zID0gcGFyc2VfdG9rZW5fbGlzdChjb25uZWN0aW9u
KQotICAgICAgICBleGNlcHQgSGFuZHNoYWtlRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICBy
YWlzZSBIYW5kc2hha2VFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ0ZhaWxlZCB0byBwYXJz
ZSAlczogJXMnICUgKGNvbW1vbi5DT05ORUNUSU9OX0hFQURFUiwgZSkpCi0KLSAgICAgICAgY29u
bmVjdGlvbl9pc192YWxpZCA9IEZhbHNlCi0gICAgICAgIGZvciB0b2tlbiBpbiBjb25uZWN0aW9u
X3Rva2VuczoKLSAgICAgICAgICAgIGlmIHRva2VuLmxvd2VyKCkgPT0gY29tbW9uLlVQR1JBREVf
Q09OTkVDVElPTl9UWVBFLmxvd2VyKCk6Ci0gICAgICAgICAgICAgICAgY29ubmVjdGlvbl9pc192
YWxpZCA9IFRydWUKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBpZiBub3QgY29ubmVj
dGlvbl9pc192YWxpZDoKLSAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKLSAg
ICAgICAgICAgICAgICAnJXMgaGVhZGVyIGRvZXNuXCd0IGNvbnRhaW4gIiVzIicgJQotICAgICAg
ICAgICAgICAgIChjb21tb24uQ09OTkVDVElPTl9IRUFERVIsIGNvbW1vbi5VUEdSQURFX0NPTk5F
Q1RJT05fVFlQRSkpCi0KLSAgICBkZWYgZG9faGFuZHNoYWtlKHNlbGYpOgotICAgICAgICBzZWxm
Ll9yZXF1ZXN0LndzX2Nsb3NlX2NvZGUgPSBOb25lCi0gICAgICAgIHNlbGYuX3JlcXVlc3Qud3Nf
Y2xvc2VfcmVhc29uID0gTm9uZQotCi0gICAgICAgICMgUGFyc2luZy4KLQotICAgICAgICBjaGVj
a19yZXF1ZXN0X2xpbmUoc2VsZi5fcmVxdWVzdCkKLQotICAgICAgICB2YWxpZGF0ZV9tYW5kYXRv
cnlfaGVhZGVyKAotICAgICAgICAgICAgc2VsZi5fcmVxdWVzdCwKLSAgICAgICAgICAgIGNvbW1v
bi5VUEdSQURFX0hFQURFUiwKLSAgICAgICAgICAgIGNvbW1vbi5XRUJTT0NLRVRfVVBHUkFERV9U
WVBFKQotCi0gICAgICAgIHNlbGYuX3ZhbGlkYXRlX2Nvbm5lY3Rpb25faGVhZGVyKCkKLQotICAg
ICAgICBzZWxmLl9yZXF1ZXN0LndzX3Jlc291cmNlID0gc2VsZi5fcmVxdWVzdC51cmkKLQotICAg
ICAgICB1bnVzZWRfaG9zdCA9IGdldF9tYW5kYXRvcnlfaGVhZGVyKHNlbGYuX3JlcXVlc3QsIGNv
bW1vbi5IT1NUX0hFQURFUikKLQotICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX3ZlcnNpb24gPSBz
ZWxmLl9jaGVja192ZXJzaW9uKCkKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9n
ZXRfb3JpZ2luKCkKLSAgICAgICAgICAgIHNlbGYuX3NldF9wcm90b2NvbCgpCi0gICAgICAgICAg
ICBzZWxmLl9wYXJzZV9leHRlbnNpb25zKCkKLQotICAgICAgICAgICAgIyBLZXkgdmFsaWRhdGlv
biwgcmVzcG9uc2UgZ2VuZXJhdGlvbi4KLQotICAgICAgICAgICAga2V5ID0gc2VsZi5fZ2V0X2tl
eSgpCi0gICAgICAgICAgICAoYWNjZXB0LCBhY2NlcHRfYmluYXJ5KSA9IGNvbXB1dGVfYWNjZXB0
KGtleSkKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICAgICAn
JXM6ICVyICglcyknLAotICAgICAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VCU09DS0VUX0FDQ0VQ
VF9IRUFERVIsCi0gICAgICAgICAgICAgICAgYWNjZXB0LAotICAgICAgICAgICAgICAgIHV0aWwu
aGV4aWZ5KGFjY2VwdF9iaW5hcnkpKQotCi0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWco
J1Byb3RvY29sIHZlcnNpb24gaXMgUkZDIDY0NTUnKQotCi0gICAgICAgICAgICAjIFNldHVwIGV4
dGVuc2lvbiBwcm9jZXNzb3JzLgotCi0gICAgICAgICAgICBwcm9jZXNzb3JzID0gW10KLSAgICAg
ICAgICAgIGlmIHNlbGYuX3JlcXVlc3Qud3NfcmVxdWVzdGVkX2V4dGVuc2lvbnMgaXMgbm90IE5v
bmU6Ci0gICAgICAgICAgICAgICAgZm9yIGV4dGVuc2lvbl9yZXF1ZXN0IGluIHNlbGYuX3JlcXVl
c3Qud3NfcmVxdWVzdGVkX2V4dGVuc2lvbnM6Ci0gICAgICAgICAgICAgICAgICAgIHByb2Nlc3Nv
ciA9IGdldF9leHRlbnNpb25fcHJvY2Vzc29yKGV4dGVuc2lvbl9yZXF1ZXN0KQotICAgICAgICAg
ICAgICAgICAgICAjIFVua25vd24gZXh0ZW5zaW9uIHJlcXVlc3RzIGFyZSBqdXN0IGlnbm9yZWQu
Ci0gICAgICAgICAgICAgICAgICAgIGlmIHByb2Nlc3NvciBpcyBub3QgTm9uZToKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHByb2Nlc3NvcnMuYXBwZW5kKHByb2Nlc3NvcikKLSAgICAgICAgICAg
IHNlbGYuX3JlcXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnMgPSBwcm9jZXNzb3JzCi0KLSAg
ICAgICAgICAgICMgTGlzdCBvZiBleHRyYSBoZWFkZXJzLiBUaGUgZXh0cmEgaGFuZHNoYWtlIGhh
bmRsZXIgbWF5IGFkZCBoZWFkZXIKLSAgICAgICAgICAgICMgZGF0YSBhcyBuYW1lL3ZhbHVlIHBh
aXJzIHRvIHRoaXMgbGlzdCBhbmQgcHl3ZWJzb2NrZXQgYXBwZW5kcwotICAgICAgICAgICAgIyB0
aGVtIHRvIHRoZSBXZWJTb2NrZXQgaGFuZHNoYWtlLgotICAgICAgICAgICAgc2VsZi5fcmVxdWVz
dC5leHRyYV9oZWFkZXJzID0gW10KLQotICAgICAgICAgICAgIyBFeHRyYSBoYW5kc2hha2UgaGFu
ZGxlciBtYXkgbW9kaWZ5L3JlbW92ZSBwcm9jZXNzb3JzLgotICAgICAgICAgICAgc2VsZi5fZGlz
cGF0Y2hlci5kb19leHRyYV9oYW5kc2hha2Uoc2VsZi5fcmVxdWVzdCkKLSAgICAgICAgICAgIHBy
b2Nlc3NvcnMgPSBmaWx0ZXIobGFtYmRhIHByb2Nlc3NvcjogcHJvY2Vzc29yIGlzIG5vdCBOb25l
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX2V4dGVu
c2lvbl9wcm9jZXNzb3JzKQotCi0gICAgICAgICAgICAjIEFzayBlYWNoIHByb2Nlc3NvciBpZiB0
aGVyZSBhcmUgZXh0ZW5zaW9ucyBvbiB0aGUgcmVxdWVzdCB3aGljaAotICAgICAgICAgICAgIyBj
YW5ub3QgY28tZXhpc3QuIFdoZW4gcHJvY2Vzc29yIGRlY2lkZWQgb3RoZXIgcHJvY2Vzc29ycyBj
YW5ub3QKLSAgICAgICAgICAgICMgY28tZXhpc3Qgd2l0aCBpdCwgdGhlIHByb2Nlc3NvciBtYXJr
cyB0aGVtIChvciBpdHNlbGYpIGFzCi0gICAgICAgICAgICAjICJpbmFjdGl2ZSIuIFRoZSBmaXJz
dCBleHRlbnNpb24gcHJvY2Vzc29yIGhhcyB0aGUgcmlnaHQgdG8KLSAgICAgICAgICAgICMgbWFr
ZSB0aGUgZmluYWwgY2FsbC4KLSAgICAgICAgICAgIGZvciBwcm9jZXNzb3IgaW4gcmV2ZXJzZWQo
cHJvY2Vzc29ycyk6Ci0gICAgICAgICAgICAgICAgaWYgcHJvY2Vzc29yLmlzX2FjdGl2ZSgpOgot
ICAgICAgICAgICAgICAgICAgICBwcm9jZXNzb3IuY2hlY2tfY29uc2lzdGVuY3lfd2l0aF9vdGhl
cl9wcm9jZXNzb3JzKAotICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc29ycykKLSAgICAg
ICAgICAgIHByb2Nlc3NvcnMgPSBmaWx0ZXIobGFtYmRhIHByb2Nlc3NvcjogcHJvY2Vzc29yLmlz
X2FjdGl2ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzb3JzKQot
Ci0gICAgICAgICAgICBhY2NlcHRlZF9leHRlbnNpb25zID0gW10KLQotICAgICAgICAgICAgIyBX
ZSBuZWVkIHRvIHRha2UgaW50byBhY2NvdW50IG9mIG11eCBleHRlbnNpb24gaGVyZS4KLSAgICAg
ICAgICAgICMgSWYgbXV4IGV4dGVuc2lvbiBleGlzdHM6Ci0gICAgICAgICAgICAjIC0gUmVtb3Zl
IHByb2Nlc3NvcnMgb2YgZXh0ZW5zaW9ucyBmb3IgbG9naWNhbCBjaGFubmVsLAotICAgICAgICAg
ICAgIyAgIHdoaWNoIGFyZSBwcm9jZXNzb3JzIGxvY2F0ZWQgYmVmb3JlIHRoZSBtdXggcHJvY2Vz
c29yCi0gICAgICAgICAgICAjIC0gUGFzcyBleHRlbnNpb24gcmVxdWVzdHMgZm9yIGxvZ2ljYWwg
Y2hhbm5lbCB0byBtdXggcHJvY2Vzc29yCi0gICAgICAgICAgICAjIC0gQXR0YWNoIHRoZSBtdXgg
cHJvY2Vzc29yIHRvIHRoZSByZXF1ZXN0LiBJdCB3aWxsIGJlIHJlZmVycmVkCi0gICAgICAgICAg
ICAjICAgYnkgZGlzcGF0Y2hlciB0byBzZWUgd2hldGhlciB0aGUgZGlzcGF0Y2hlciBzaG91bGQg
dXNlIG11eAotICAgICAgICAgICAgIyAgIGhhbmRsZXIgb3Igbm90LgotICAgICAgICAgICAgbXV4
X2luZGV4ID0gLTEKLSAgICAgICAgICAgIGZvciBpLCBwcm9jZXNzb3IgaW4gZW51bWVyYXRlKHBy
b2Nlc3NvcnMpOgotICAgICAgICAgICAgICAgIGlmIHByb2Nlc3Nvci5uYW1lKCkgPT0gY29tbW9u
Lk1VWF9FWFRFTlNJT046Ci0gICAgICAgICAgICAgICAgICAgIG11eF9pbmRleCA9IGkKLSAgICAg
ICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGlmIG11eF9pbmRleCA+PSAwOgotICAg
ICAgICAgICAgICAgIGxvZ2ljYWxfY2hhbm5lbF9leHRlbnNpb25zID0gW10KLSAgICAgICAgICAg
ICAgICBmb3IgcHJvY2Vzc29yIGluIHByb2Nlc3NvcnNbOm11eF9pbmRleF06Ci0gICAgICAgICAg
ICAgICAgICAgIGxvZ2ljYWxfY2hhbm5lbF9leHRlbnNpb25zLmFwcGVuZChwcm9jZXNzb3IucmVx
dWVzdCgpKQotICAgICAgICAgICAgICAgICAgICBwcm9jZXNzb3Iuc2V0X2FjdGl2ZShGYWxzZSkK
LSAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0Lm11eF9wcm9jZXNzb3IgPSBwcm9jZXNzb3Jz
W211eF9pbmRleF0KLSAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0Lm11eF9wcm9jZXNzb3Iu
c2V0X2V4dGVuc2lvbnMoCi0gICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxfY2hhbm5lbF9leHRl
bnNpb25zKQotICAgICAgICAgICAgICAgIHByb2Nlc3NvcnMgPSBmaWx0ZXIobGFtYmRhIHByb2Nl
c3NvcjogcHJvY2Vzc29yLmlzX2FjdGl2ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHJvY2Vzc29ycykKLQotICAgICAgICAgICAgc3RyZWFtX29wdGlvbnMgPSBTdHJl
YW1PcHRpb25zKCkKLQotICAgICAgICAgICAgZm9yIGluZGV4LCBwcm9jZXNzb3IgaW4gZW51bWVy
YXRlKHByb2Nlc3NvcnMpOgotICAgICAgICAgICAgICAgIGlmIG5vdCBwcm9jZXNzb3IuaXNfYWN0
aXZlKCk6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgICAgICBl
eHRlbnNpb25fcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpCi0g
ICAgICAgICAgICAgICAgaWYgZXh0ZW5zaW9uX3Jlc3BvbnNlIGlzIE5vbmU6Ci0gICAgICAgICAg
ICAgICAgICAgICMgUmVqZWN0ZWQuCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAg
ICAgICAgICAgICAgICBhY2NlcHRlZF9leHRlbnNpb25zLmFwcGVuZChleHRlbnNpb25fcmVzcG9u
c2UpCi0KLSAgICAgICAgICAgICAgICBwcm9jZXNzb3Iuc2V0dXBfc3RyZWFtX29wdGlvbnMoc3Ry
ZWFtX29wdGlvbnMpCi0KLSAgICAgICAgICAgICAgICBpZiBub3QgaXNfY29tcHJlc3Npb25fZXh0
ZW5zaW9uKHByb2Nlc3Nvci5uYW1lKCkpOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQot
Ci0gICAgICAgICAgICAgICAgIyBJbmFjdGl2YXRlIGFsbCBvZiB0aGUgZm9sbG93aW5nIGNvbXBy
ZXNzaW9uIGV4dGVuc2lvbnMuCi0gICAgICAgICAgICAgICAgZm9yIGogaW4geHJhbmdlKGluZGV4
ICsgMSwgbGVuKHByb2Nlc3NvcnMpKToKLSAgICAgICAgICAgICAgICAgICAgaWYgaXNfY29tcHJl
c3Npb25fZXh0ZW5zaW9uKHByb2Nlc3NvcnNbal0ubmFtZSgpKToKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHByb2Nlc3NvcnNbal0uc2V0X2FjdGl2ZShGYWxzZSkKLQotICAgICAgICAgICAgaWYg
bGVuKGFjY2VwdGVkX2V4dGVuc2lvbnMpID4gMDoKLSAgICAgICAgICAgICAgICBzZWxmLl9yZXF1
ZXN0LndzX2V4dGVuc2lvbnMgPSBhY2NlcHRlZF9leHRlbnNpb25zCi0gICAgICAgICAgICAgICAg
c2VsZi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAgICAgICAgICAgICAnRXh0ZW5zaW9ucyBhY2Nl
cHRlZDogJXInLAotICAgICAgICAgICAgICAgICAgICBtYXAoY29tbW9uLkV4dGVuc2lvblBhcmFt
ZXRlci5uYW1lLCBhY2NlcHRlZF9leHRlbnNpb25zKSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19leHRlbnNpb25zID0gTm9uZQotCi0gICAgICAg
ICAgICBzZWxmLl9yZXF1ZXN0LndzX3N0cmVhbSA9IHNlbGYuX2NyZWF0ZV9zdHJlYW0oc3RyZWFt
X29wdGlvbnMpCi0KLSAgICAgICAgICAgIGlmIHNlbGYuX3JlcXVlc3Qud3NfcmVxdWVzdGVkX3By
b3RvY29scyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0Lndz
X3Byb3RvY29sIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4
Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICdkb19leHRyYV9oYW5kc2hha2UgbXVz
dCBjaG9vc2Ugb25lIHN1YnByb3RvY29sIGZyb20gJwotICAgICAgICAgICAgICAgICAgICAgICAg
J3dzX3JlcXVlc3RlZF9wcm90b2NvbHMgYW5kIHNldCBpdCB0byB3c19wcm90b2NvbCcpCi0gICAg
ICAgICAgICAgICAgdmFsaWRhdGVfc3VicHJvdG9jb2woc2VsZi5fcmVxdWVzdC53c19wcm90b2Nv
bCkKLQotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICAg
ICAgICAgJ1N1YnByb3RvY29sIGFjY2VwdGVkOiAlcicsCi0gICAgICAgICAgICAgICAgICAgIHNl
bGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAg
ICAgIGlmIHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wgaXMgbm90IE5vbmU6Ci0gICAgICAgICAg
ICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAg
ICAgICd3c19wcm90b2NvbCBtdXN0IGJlIE5vbmUgd2hlbiB0aGUgY2xpZW50IGRpZG5cJ3QgJwot
ICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVlc3QgYW55IHN1YnByb3RvY29sJykKLQotICAg
ICAgICAgICAgc2VsZi5fc2VuZF9oYW5kc2hha2UoYWNjZXB0KQotICAgICAgICBleGNlcHQgSGFu
ZHNoYWtlRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICBpZiBub3QgZS5zdGF0dXM6Ci0gICAg
ICAgICAgICAgICAgIyBGYWxsYmFjayB0byA0MDAgYmFkIHJlcXVlc3QgYnkgZGVmYXVsdC4KLSAg
ICAgICAgICAgICAgICBlLnN0YXR1cyA9IGNvbW1vbi5IVFRQX1NUQVRVU19CQURfUkVRVUVTVAot
ICAgICAgICAgICAgcmFpc2UgZQotCi0gICAgZGVmIF9nZXRfb3JpZ2luKHNlbGYpOgotICAgICAg
ICBvcmlnaW5faGVhZGVyID0gY29tbW9uLk9SSUdJTl9IRUFERVIKLSAgICAgICAgb3JpZ2luID0g
c2VsZi5fcmVxdWVzdC5oZWFkZXJzX2luLmdldChvcmlnaW5faGVhZGVyKQotICAgICAgICBpZiBv
cmlnaW4gaXMgTm9uZToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnQ2xpZW50IHJl
cXVlc3QgZG9lcyBub3QgaGF2ZSBvcmlnaW4gaGVhZGVyJykKLSAgICAgICAgc2VsZi5fcmVxdWVz
dC53c19vcmlnaW4gPSBvcmlnaW4KLQotICAgIGRlZiBfY2hlY2tfdmVyc2lvbihzZWxmKToKLSAg
ICAgICAgdmVyc2lvbiA9IGdldF9tYW5kYXRvcnlfaGVhZGVyKHNlbGYuX3JlcXVlc3QsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb24uU0VDX1dFQlNPQ0tFVF9W
RVJTSU9OX0hFQURFUikKLSAgICAgICAgaWYgdmVyc2lvbiA9PSBfVkVSU0lPTl9MQVRFU1RfU1RS
SU5HOgotICAgICAgICAgICAgcmV0dXJuIF9WRVJTSU9OX0xBVEVTVAotCi0gICAgICAgIGlmIHZl
cnNpb24uZmluZCgnLCcpID49IDA6Ci0gICAgICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRp
b24oCi0gICAgICAgICAgICAgICAgJ011bHRpcGxlIHZlcnNpb25zICglcikgYXJlIG5vdCBhbGxv
d2VkIGZvciBoZWFkZXIgJXMnICUKLSAgICAgICAgICAgICAgICAodmVyc2lvbiwgY29tbW9uLlNF
Q19XRUJTT0NLRVRfVkVSU0lPTl9IRUFERVIpLAotICAgICAgICAgICAgICAgIHN0YXR1cz1jb21t
b24uSFRUUF9TVEFUVVNfQkFEX1JFUVVFU1QpCi0gICAgICAgIHJhaXNlIFZlcnNpb25FeGNlcHRp
b24oCi0gICAgICAgICAgICAnVW5zdXBwb3J0ZWQgdmVyc2lvbiAlciBmb3IgaGVhZGVyICVzJyAl
Ci0gICAgICAgICAgICAodmVyc2lvbiwgY29tbW9uLlNFQ19XRUJTT0NLRVRfVkVSU0lPTl9IRUFE
RVIpLAotICAgICAgICAgICAgc3VwcG9ydGVkX3ZlcnNpb25zPScsICcuam9pbihtYXAoc3RyLCBf
U1VQUE9SVEVEX1ZFUlNJT05TKSkpCi0KLSAgICBkZWYgX3NldF9wcm90b2NvbChzZWxmKToKLSAg
ICAgICAgc2VsZi5fcmVxdWVzdC53c19wcm90b2NvbCA9IE5vbmUKLQotICAgICAgICBwcm90b2Nv
bF9oZWFkZXIgPSBzZWxmLl9yZXF1ZXN0LmhlYWRlcnNfaW4uZ2V0KAotICAgICAgICAgICAgY29t
bW9uLlNFQ19XRUJTT0NLRVRfUFJPVE9DT0xfSEVBREVSKQotCi0gICAgICAgIGlmIHByb3RvY29s
X2hlYWRlciBpcyBOb25lOgotICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19yZXF1ZXN0ZWRf
cHJvdG9jb2xzID0gTm9uZQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgc2VsZi5fcmVx
dWVzdC53c19yZXF1ZXN0ZWRfcHJvdG9jb2xzID0gcGFyc2VfdG9rZW5fbGlzdCgKLSAgICAgICAg
ICAgIHByb3RvY29sX2hlYWRlcikKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdTdWJwcm90
b2NvbHMgcmVxdWVzdGVkOiAlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9y
ZXF1ZXN0LndzX3JlcXVlc3RlZF9wcm90b2NvbHMpCi0KLSAgICBkZWYgX3BhcnNlX2V4dGVuc2lv
bnMoc2VsZik6Ci0gICAgICAgIGV4dGVuc2lvbnNfaGVhZGVyID0gc2VsZi5fcmVxdWVzdC5oZWFk
ZXJzX2luLmdldCgKLSAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VCU09DS0VUX0VYVEVOU0lPTlNf
SEVBREVSKQotICAgICAgICBpZiBub3QgZXh0ZW5zaW9uc19oZWFkZXI6Ci0gICAgICAgICAgICBz
ZWxmLl9yZXF1ZXN0LndzX3JlcXVlc3RlZF9leHRlbnNpb25zID0gTm9uZQotICAgICAgICAgICAg
cmV0dXJuCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19yZXF1
ZXN0ZWRfZXh0ZW5zaW9ucyA9IGNvbW1vbi5wYXJzZV9leHRlbnNpb25zKAotICAgICAgICAgICAg
ICAgIGV4dGVuc2lvbnNfaGVhZGVyKQotICAgICAgICBleGNlcHQgY29tbW9uLkV4dGVuc2lvblBh
cnNpbmdFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlv
bigKLSAgICAgICAgICAgICAgICAnRmFpbGVkIHRvIHBhcnNlIFNlYy1XZWJTb2NrZXQtRXh0ZW5z
aW9ucyBoZWFkZXI6ICVyJyAlIGUpCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAg
ICAgICAgICAgJ0V4dGVuc2lvbnMgcmVxdWVzdGVkOiAlcicsCi0gICAgICAgICAgICBtYXAoY29t
bW9uLkV4dGVuc2lvblBhcmFtZXRlci5uYW1lLAotICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVl
c3Qud3NfcmVxdWVzdGVkX2V4dGVuc2lvbnMpKQotCi0gICAgZGVmIF92YWxpZGF0ZV9rZXkoc2Vs
Ziwga2V5KToKLSAgICAgICAgaWYga2V5LmZpbmQoJywnKSA+PSAwOgotICAgICAgICAgICAgcmFp
c2UgSGFuZHNoYWtlRXhjZXB0aW9uKCdSZXF1ZXN0IGhhcyBtdWx0aXBsZSAlcyBoZWFkZXIgbGlu
ZXMgb3IgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb250YWlucyBp
bGxlZ2FsIGNoYXJhY3RlciBcJyxcJzogJXInICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoY29tbW9uLlNFQ19XRUJTT0NLRVRfS0VZX0hFQURFUiwga2V5KSkKLQotICAg
ICAgICAjIFZhbGlkYXRlCi0gICAgICAgIGtleV9pc192YWxpZCA9IEZhbHNlCi0gICAgICAgIHRy
eToKLSAgICAgICAgICAgICMgVmFsaWRhdGUga2V5IGJ5IHF1aWNrIHJlZ2V4IG1hdGNoIGJlZm9y
ZSBwYXJzaW5nIGJ5IGJhc2U2NAotICAgICAgICAgICAgIyBtb2R1bGUuIEJlY2F1c2UgYmFzZTY0
IG1vZHVsZSBza2lwcyBpbnZhbGlkIGNoYXJhY3RlcnMsIHdlIGhhdmUKLSAgICAgICAgICAgICMg
dG8gZG8gdGhpcyBpbiBhZHZhbmNlIHRvIG1ha2UgdGhpcyBzZXJ2ZXIgc3RyaWN0bHkgcmVqZWN0
IGlsbGVnYWwKLSAgICAgICAgICAgICMga2V5cy4KLSAgICAgICAgICAgIGlmIF9TRUNfV0VCU09D
S0VUX0tFWV9SRUdFWC5tYXRjaChrZXkpOgotICAgICAgICAgICAgICAgIGRlY29kZWRfa2V5ID0g
YmFzZTY0LmI2NGRlY29kZShrZXkpCi0gICAgICAgICAgICAgICAgaWYgbGVuKGRlY29kZWRfa2V5
KSA9PSAxNjoKLSAgICAgICAgICAgICAgICAgICAga2V5X2lzX3ZhbGlkID0gVHJ1ZQotICAgICAg
ICBleGNlcHQgVHlwZUVycm9yIGFzIGU6Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgaWYg
bm90IGtleV9pc192YWxpZDoKLSAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigK
LSAgICAgICAgICAgICAgICAnSWxsZWdhbCB2YWx1ZSBmb3IgaGVhZGVyICVzOiAlcicgJQotICAg
ICAgICAgICAgICAgIChjb21tb24uU0VDX1dFQlNPQ0tFVF9LRVlfSEVBREVSLCBrZXkpKQotCi0g
ICAgICAgIHJldHVybiBkZWNvZGVkX2tleQotCi0gICAgZGVmIF9nZXRfa2V5KHNlbGYpOgotICAg
ICAgICBrZXkgPSBnZXRfbWFuZGF0b3J5X2hlYWRlcigKLSAgICAgICAgICAgIHNlbGYuX3JlcXVl
c3QsIGNvbW1vbi5TRUNfV0VCU09DS0VUX0tFWV9IRUFERVIpCi0KLSAgICAgICAgZGVjb2RlZF9r
ZXkgPSBzZWxmLl92YWxpZGF0ZV9rZXkoa2V5KQotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1
ZygKLSAgICAgICAgICAgICclczogJXIgKCVzKScsCi0gICAgICAgICAgICBjb21tb24uU0VDX1dF
QlNPQ0tFVF9LRVlfSEVBREVSLAotICAgICAgICAgICAga2V5LAotICAgICAgICAgICAgdXRpbC5o
ZXhpZnkoZGVjb2RlZF9rZXkpKQotCi0gICAgICAgIHJldHVybiBrZXkKLQotICAgIGRlZiBfY3Jl
YXRlX3N0cmVhbShzZWxmLCBzdHJlYW1fb3B0aW9ucyk6Ci0gICAgICAgIHJldHVybiBTdHJlYW0o
c2VsZi5fcmVxdWVzdCwgc3RyZWFtX29wdGlvbnMpCi0KLSAgICBkZWYgX2NyZWF0ZV9oYW5kc2hh
a2VfcmVzcG9uc2Uoc2VsZiwgYWNjZXB0KToKLSAgICAgICAgcmVzcG9uc2UgPSBbXQotCi0gICAg
ICAgIHJlc3BvbnNlLmFwcGVuZCgnSFRUUC8xLjEgMTAxIFN3aXRjaGluZyBQcm90b2NvbHNcclxu
JykKLQotICAgICAgICAjIFdlYlNvY2tldCBoZWFkZXJzCi0gICAgICAgIHJlc3BvbnNlLmFwcGVu
ZChmb3JtYXRfaGVhZGVyKAotICAgICAgICAgICAgY29tbW9uLlVQR1JBREVfSEVBREVSLCBjb21t
b24uV0VCU09DS0VUX1VQR1JBREVfVFlQRSkpCi0gICAgICAgIHJlc3BvbnNlLmFwcGVuZChmb3Jt
YXRfaGVhZGVyKAotICAgICAgICAgICAgY29tbW9uLkNPTk5FQ1RJT05fSEVBREVSLCBjb21tb24u
VVBHUkFERV9DT05ORUNUSU9OX1RZUEUpKQotICAgICAgICByZXNwb25zZS5hcHBlbmQoZm9ybWF0
X2hlYWRlcigKLSAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VCU09DS0VUX0FDQ0VQVF9IRUFERVIs
IGFjY2VwdCkpCi0gICAgICAgIGlmIHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wgaXMgbm90IE5v
bmU6Ci0gICAgICAgICAgICByZXNwb25zZS5hcHBlbmQoZm9ybWF0X2hlYWRlcigKLSAgICAgICAg
ICAgICAgICBjb21tb24uU0VDX1dFQlNPQ0tFVF9QUk9UT0NPTF9IRUFERVIsCi0gICAgICAgICAg
ICAgICAgc2VsZi5fcmVxdWVzdC53c19wcm90b2NvbCkpCi0gICAgICAgIGlmIChzZWxmLl9yZXF1
ZXN0LndzX2V4dGVuc2lvbnMgaXMgbm90IE5vbmUgYW5kCi0gICAgICAgICAgICBsZW4oc2VsZi5f
cmVxdWVzdC53c19leHRlbnNpb25zKSAhPSAwKToKLSAgICAgICAgICAgIHJlc3BvbnNlLmFwcGVu
ZChmb3JtYXRfaGVhZGVyKAotICAgICAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VCU09DS0VUX0VY
VEVOU0lPTlNfSEVBREVSLAotICAgICAgICAgICAgICAgIGNvbW1vbi5mb3JtYXRfZXh0ZW5zaW9u
cyhzZWxmLl9yZXF1ZXN0LndzX2V4dGVuc2lvbnMpKSkKLQotICAgICAgICAjIEhlYWRlcnMgbm90
IHNwZWNpZmljIGZvciBXZWJTb2NrZXQKLSAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIHNlbGYu
X3JlcXVlc3QuZXh0cmFfaGVhZGVyczoKLSAgICAgICAgICAgIHJlc3BvbnNlLmFwcGVuZChmb3Jt
YXRfaGVhZGVyKG5hbWUsIHZhbHVlKSkKLQotICAgICAgICByZXNwb25zZS5hcHBlbmQoJ1xyXG4n
KQotCi0gICAgICAgIHJldHVybiAnJy5qb2luKHJlc3BvbnNlKQotCi0gICAgZGVmIF9zZW5kX2hh
bmRzaGFrZShzZWxmLCBhY2NlcHQpOgotICAgICAgICByYXdfcmVzcG9uc2UgPSBzZWxmLl9jcmVh
dGVfaGFuZHNoYWtlX3Jlc3BvbnNlKGFjY2VwdCkKLSAgICAgICAgc2VsZi5fcmVxdWVzdC5jb25u
ZWN0aW9uLndyaXRlKHJhd19yZXNwb25zZSkKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdT
ZW50IHNlcnZlclwncyBvcGVuaW5nIGhhbmRzaGFrZTogJXInLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmF3X3Jlc3BvbnNlKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL2h5YmkwMC5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5
d2Vic29ja2V0L2hhbmRzaGFrZS9oeWJpMDAucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDg3NTc3MTdhNjM5YmFjM2RiMDVkNGNiMzAyN2UwNTVmZGJmN2YzY2YuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQv
aGFuZHNoYWtlL2h5YmkwMC5weQorKysgL2Rldi9udWxsCkBAIC0xLDI5MyArMCwwIEBACi0jIENv
cHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
Ci0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLQotCi0iIiJUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIG9wZW5pbmcgaGFuZHNo
YWtlIHByb2Nlc3NvciBmb3IgdGhlIFdlYlNvY2tldAotcHJvdG9jb2wgdmVyc2lvbiBIeUJpIDAw
LgotCi1TcGVjaWZpY2F0aW9uOgotaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtaWV0
Zi1oeWJpLXRoZXdlYnNvY2tldHByb3RvY29sLTAwCi0iIiIKLQotCi0jIE5vdGU6IHJlcXVlc3Qu
Y29ubmVjdGlvbi53cml0ZS9yZWFkIGFyZSB1c2VkIGluIHRoaXMgbW9kdWxlLCBldmVuIHRob3Vn
aAotIyBtb2RfcHl0aG9uIGRvY3VtZW50IHNheXMgdGhhdCB0aGV5IHNob3VsZCBiZSB1c2VkIG9u
bHkgaW4gY29ubmVjdGlvbgotIyBoYW5kbGVycy4gVW5mb3J0dW5hdGVseSwgd2UgaGF2ZSBubyBv
dGhlciBvcHRpb25zLiBGb3IgZXhhbXBsZSwKLSMgcmVxdWVzdC53cml0ZS9yZWFkIGFyZSBub3Qg
c3VpdGFibGUgYmVjYXVzZSB0aGV5IGRvbid0IGFsbG93IGRpcmVjdCByYXcgYnl0ZXMKLSMgd3Jp
dGluZy9yZWFkaW5nLgotCi0KLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgcmUKLWltcG9ydCBzdHJ1
Y3QKLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgotZnJvbSBtb2RfcHl3ZWJz
b2NrZXQuc3RyZWFtIGltcG9ydCBTdHJlYW1IaXhpZTc1Ci1mcm9tIG1vZF9weXdlYnNvY2tldCBp
bXBvcnQgdXRpbAotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBI
YW5kc2hha2VFeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBp
bXBvcnQgY2hlY2tfcmVxdWVzdF9saW5lCi1mcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2Uu
X2Jhc2UgaW1wb3J0IGZvcm1hdF9oZWFkZXIKLWZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFr
ZS5fYmFzZSBpbXBvcnQgZ2V0X2RlZmF1bHRfcG9ydAotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFu
ZHNoYWtlLl9iYXNlIGltcG9ydCBnZXRfbWFuZGF0b3J5X2hlYWRlcgotZnJvbSBtb2RfcHl3ZWJz
b2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBwYXJzZV9ob3N0X2hlYWRlcgotZnJvbSBtb2Rf
cHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCB2YWxpZGF0ZV9tYW5kYXRvcnlfaGVh
ZGVyCi0KLQotX01BTkRBVE9SWV9IRUFERVJTID0gWwotICAgICMga2V5LCBleHBlY3RlZCB2YWx1
ZSBvciBOb25lCi0gICAgW2NvbW1vbi5VUEdSQURFX0hFQURFUiwgY29tbW9uLldFQlNPQ0tFVF9V
UEdSQURFX1RZUEVfSElYSUU3NV0sCi0gICAgW2NvbW1vbi5DT05ORUNUSU9OX0hFQURFUiwgY29t
bW9uLlVQR1JBREVfQ09OTkVDVElPTl9UWVBFXSwKLV0KLQotCi1kZWYgX3ZhbGlkYXRlX3N1YnBy
b3RvY29sKHN1YnByb3RvY29sKToKLSAgICAiIiJDaGVja3MgaWYgY2hhcmFjdGVycyBpbiBzdWJw
cm90b2NvbCBhcmUgaW4gcmFuZ2UgYmV0d2VlbiBVKzAwMjAgYW5kCi0gICAgVSswMDdFLiBBIHZh
bHVlIGluIHRoZSBTZWMtV2ViU29ja2V0LVByb3RvY29sIGZpZWxkIG5lZWQgdG8gc2F0aXNmeSB0
aGlzCi0gICAgcmVxdWlyZW1lbnQuCi0KLSAgICBTZWUgdGhlIFNlY3Rpb24gNC4xLiBPcGVuaW5n
IGhhbmRzaGFrZSBvZiB0aGUgc3BlYy4KLSAgICAiIiIKLQotICAgIGlmIG5vdCBzdWJwcm90b2Nv
bDoKLSAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9uKCdJbnZhbGlkIHN1YnByb3RvY29s
IG5hbWU6IGVtcHR5JykKLQotICAgICMgUGFyYW1ldGVyIHNob3VsZCBiZSBpbiB0aGUgcmFuZ2Ug
VSswMDIwIHRvIFUrMDA3RS4KLSAgICBmb3IgYyBpbiBzdWJwcm90b2NvbDoKLSAgICAgICAgaWYg
bm90IDB4MjAgPD0gb3JkKGMpIDw9IDB4N2U6Ci0gICAgICAgICAgICByYWlzZSBIYW5kc2hha2VF
eGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ0lsbGVnYWwgY2hhcmFjdGVyIGluIHN1YnByb3Rv
Y29sIG5hbWU6ICVyJyAlIGMpCi0KLQotZGVmIF9jaGVja19oZWFkZXJfbGluZXMocmVxdWVzdCwg
bWFuZGF0b3J5X2hlYWRlcnMpOgotICAgIGNoZWNrX3JlcXVlc3RfbGluZShyZXF1ZXN0KQotCi0g
ICAgIyBUaGUgZXhwZWN0ZWQgZmllbGQgbmFtZXMsIGFuZCB0aGUgbWVhbmluZyBvZiB0aGVpciBj
b3JyZXNwb25kaW5nCi0gICAgIyB2YWx1ZXMsIGFyZSBhcyBmb2xsb3dzLgotICAgICMgIHxVcGdy
YWRlfCBhbmQgfENvbm5lY3Rpb258Ci0gICAgZm9yIGtleSwgZXhwZWN0ZWRfdmFsdWUgaW4gbWFu
ZGF0b3J5X2hlYWRlcnM6Ci0gICAgICAgIHZhbGlkYXRlX21hbmRhdG9yeV9oZWFkZXIocmVxdWVz
dCwga2V5LCBleHBlY3RlZF92YWx1ZSkKLQotCi1kZWYgX2J1aWxkX2xvY2F0aW9uKHJlcXVlc3Qp
OgotICAgICIiIkJ1aWxkIFdlYlNvY2tldCBsb2NhdGlvbiBmb3IgcmVxdWVzdC4iIiIKLQotICAg
IGxvY2F0aW9uX3BhcnRzID0gW10KLSAgICBpZiByZXF1ZXN0LmlzX2h0dHBzKCk6Ci0gICAgICAg
IGxvY2F0aW9uX3BhcnRzLmFwcGVuZChjb21tb24uV0VCX1NPQ0tFVF9TRUNVUkVfU0NIRU1FKQot
ICAgIGVsc2U6Ci0gICAgICAgIGxvY2F0aW9uX3BhcnRzLmFwcGVuZChjb21tb24uV0VCX1NPQ0tF
VF9TQ0hFTUUpCi0gICAgbG9jYXRpb25fcGFydHMuYXBwZW5kKCc6Ly8nKQotICAgIGhvc3QsIHBv
cnQgPSBwYXJzZV9ob3N0X2hlYWRlcihyZXF1ZXN0KQotICAgIGNvbm5lY3Rpb25fcG9ydCA9IHJl
cXVlc3QuY29ubmVjdGlvbi5sb2NhbF9hZGRyWzFdCi0gICAgaWYgcG9ydCAhPSBjb25uZWN0aW9u
X3BvcnQ6Ci0gICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbignSGVhZGVyL2Nvbm5lY3Rp
b24gcG9ydCBtaXNtYXRjaDogJWQvJWQnICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChwb3J0LCBjb25uZWN0aW9uX3BvcnQpKQotICAgIGxvY2F0aW9uX3BhcnRzLmFwcGVuZCho
b3N0KQotICAgIGlmIChwb3J0ICE9IGdldF9kZWZhdWx0X3BvcnQocmVxdWVzdC5pc19odHRwcygp
KSk6Ci0gICAgICAgIGxvY2F0aW9uX3BhcnRzLmFwcGVuZCgnOicpCi0gICAgICAgIGxvY2F0aW9u
X3BhcnRzLmFwcGVuZChzdHIocG9ydCkpCi0gICAgbG9jYXRpb25fcGFydHMuYXBwZW5kKHJlcXVl
c3QudW5wYXJzZWRfdXJpKQotICAgIHJldHVybiAnJy5qb2luKGxvY2F0aW9uX3BhcnRzKQotCi0K
LWNsYXNzIEhhbmRzaGFrZXIob2JqZWN0KToKLSAgICAiIiJPcGVuaW5nIGhhbmRzaGFrZSBwcm9j
ZXNzb3IgZm9yIHRoZSBXZWJTb2NrZXQgcHJvdG9jb2wgdmVyc2lvbiBIeUJpIDAwLgotICAgICIi
IgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3QsIGRpc3BhdGNoZXIpOgotICAgICAg
ICAiIiJDb25zdHJ1Y3QgYW4gaW5zdGFuY2UuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAg
IHJlcXVlc3Q6IG1vZF9weXRob24gcmVxdWVzdC4KLSAgICAgICAgICAgIGRpc3BhdGNoZXI6IERp
c3BhdGNoZXIgKGRpc3BhdGNoLkRpc3BhdGNoZXIpLgotCi0gICAgICAgIEhhbmRzaGFrZXIgd2ls
bCBhZGQgYXR0cmlidXRlcyBzdWNoIGFzIHdzX3Jlc291cmNlIGluIHBlcmZvcm1pbmcKLSAgICAg
ICAgaGFuZHNoYWtlLgotICAgICAgICAiIiIKLQotICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGls
LmdldF9jbGFzc19sb2dnZXIoc2VsZikKLQotICAgICAgICBzZWxmLl9yZXF1ZXN0ID0gcmVxdWVz
dAotICAgICAgICBzZWxmLl9kaXNwYXRjaGVyID0gZGlzcGF0Y2hlcgotCi0gICAgZGVmIGRvX2hh
bmRzaGFrZShzZWxmKToKLSAgICAgICAgIiIiUGVyZm9ybSBXZWJTb2NrZXQgSGFuZHNoYWtlLgot
Ci0gICAgICAgIE9uIF9yZXF1ZXN0LCB3ZSBzZXQKLSAgICAgICAgICAgIHdzX3Jlc291cmNlLCB3
c19wcm90b2NvbCwgd3NfbG9jYXRpb24sIHdzX29yaWdpbiwgd3NfY2hhbGxlbmdlLAotICAgICAg
ICAgICAgd3NfY2hhbGxlbmdlX21kNTogV2ViU29ja2V0IGhhbmRzaGFrZSBpbmZvcm1hdGlvbi4K
LSAgICAgICAgICAgIHdzX3N0cmVhbTogRnJhbWUgZ2VuZXJhdGlvbi9wYXJzaW5nIGNsYXNzLgot
ICAgICAgICAgICAgd3NfdmVyc2lvbjogUHJvdG9jb2wgdmVyc2lvbi4KLQotICAgICAgICBSYWlz
ZXM6Ci0gICAgICAgICAgICBIYW5kc2hha2VFeGNlcHRpb246IHdoZW4gYW55IGVycm9yIGhhcHBl
bmVkIGluIHBhcnNpbmcgdGhlIG9wZW5pbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaGFuZHNoYWtlIHJlcXVlc3QuCi0gICAgICAgICIiIgotCi0gICAgICAgICMgNS4xIFJlYWRp
bmcgdGhlIGNsaWVudCdzIG9wZW5pbmcgaGFuZHNoYWtlLgotICAgICAgICAjIGRpc3BhdGNoZXIg
c2V0cyBpdCBpbiBzZWxmLl9yZXF1ZXN0LgotICAgICAgICBfY2hlY2tfaGVhZGVyX2xpbmVzKHNl
bGYuX3JlcXVlc3QsIF9NQU5EQVRPUllfSEVBREVSUykKLSAgICAgICAgc2VsZi5fc2V0X3Jlc291
cmNlKCkKLSAgICAgICAgc2VsZi5fc2V0X3N1YnByb3RvY29sKCkKLSAgICAgICAgc2VsZi5fc2V0
X2xvY2F0aW9uKCkKLSAgICAgICAgc2VsZi5fc2V0X29yaWdpbigpCi0gICAgICAgIHNlbGYuX3Nl
dF9jaGFsbGVuZ2VfcmVzcG9uc2UoKQotICAgICAgICBzZWxmLl9zZXRfcHJvdG9jb2xfdmVyc2lv
bigpCi0KLSAgICAgICAgc2VsZi5fZGlzcGF0Y2hlci5kb19leHRyYV9oYW5kc2hha2Uoc2VsZi5f
cmVxdWVzdCkKLQotICAgICAgICBzZWxmLl9zZW5kX2hhbmRzaGFrZSgpCi0KLSAgICBkZWYgX3Nl
dF9yZXNvdXJjZShzZWxmKToKLSAgICAgICAgc2VsZi5fcmVxdWVzdC53c19yZXNvdXJjZSA9IHNl
bGYuX3JlcXVlc3QudXJpCi0KLSAgICBkZWYgX3NldF9zdWJwcm90b2NvbChzZWxmKToKLSAgICAg
ICAgIyB8U2VjLVdlYlNvY2tldC1Qcm90b2NvbHwKLSAgICAgICAgc3VicHJvdG9jb2wgPSBzZWxm
Ll9yZXF1ZXN0LmhlYWRlcnNfaW4uZ2V0KAotICAgICAgICAgICAgY29tbW9uLlNFQ19XRUJTT0NL
RVRfUFJPVE9DT0xfSEVBREVSKQotICAgICAgICBpZiBzdWJwcm90b2NvbCBpcyBub3QgTm9uZToK
LSAgICAgICAgICAgIF92YWxpZGF0ZV9zdWJwcm90b2NvbChzdWJwcm90b2NvbCkKLSAgICAgICAg
c2VsZi5fcmVxdWVzdC53c19wcm90b2NvbCA9IHN1YnByb3RvY29sCi0KLSAgICBkZWYgX3NldF9s
b2NhdGlvbihzZWxmKToKLSAgICAgICAgIyB8SG9zdHwKLSAgICAgICAgaG9zdCA9IHNlbGYuX3Jl
cXVlc3QuaGVhZGVyc19pbi5nZXQoY29tbW9uLkhPU1RfSEVBREVSKQotICAgICAgICBpZiBob3N0
IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19sb2NhdGlvbiA9IF9i
dWlsZF9sb2NhdGlvbihzZWxmLl9yZXF1ZXN0KQotICAgICAgICAjIFRPRE8odWthaSk6IGNoZWNr
IGhvc3QgaXMgdGhpcyBob3N0LgotCi0gICAgZGVmIF9zZXRfb3JpZ2luKHNlbGYpOgotICAgICAg
ICAjIHxPcmlnaW58Ci0gICAgICAgIG9yaWdpbiA9IHNlbGYuX3JlcXVlc3QuaGVhZGVyc19pbi5n
ZXQoY29tbW9uLk9SSUdJTl9IRUFERVIpCi0gICAgICAgIGlmIG9yaWdpbiBpcyBub3QgTm9uZToK
LSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3Nfb3JpZ2luID0gb3JpZ2luCi0KLSAgICBkZWYg
X3NldF9wcm90b2NvbF92ZXJzaW9uKHNlbGYpOgotICAgICAgICAjIHxTZWMtV2ViU29ja2V0LURy
YWZ0fAotICAgICAgICBkcmFmdCA9IHNlbGYuX3JlcXVlc3QuaGVhZGVyc19pbi5nZXQoY29tbW9u
LlNFQ19XRUJTT0NLRVRfRFJBRlRfSEVBREVSKQotICAgICAgICBpZiBkcmFmdCBpcyBub3QgTm9u
ZSBhbmQgZHJhZnQgIT0gJzAnOgotICAgICAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9u
KCdJbGxlZ2FsIHZhbHVlIGZvciAlczogJXMnICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoY29tbW9uLlNFQ19XRUJTT0NLRVRfRFJBRlRfSEVBREVSLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmFmdCkpCi0KLSAgICAgICAgc2VsZi5fbG9n
Z2VyLmRlYnVnKCdQcm90b2NvbCB2ZXJzaW9uIGlzIEh5QmkgMDAnKQotICAgICAgICBzZWxmLl9y
ZXF1ZXN0LndzX3ZlcnNpb24gPSBjb21tb24uVkVSU0lPTl9IWUJJMDAKLSAgICAgICAgc2VsZi5f
cmVxdWVzdC53c19zdHJlYW0gPSBTdHJlYW1IaXhpZTc1KHNlbGYuX3JlcXVlc3QsIFRydWUpCi0K
LSAgICBkZWYgX3NldF9jaGFsbGVuZ2VfcmVzcG9uc2Uoc2VsZik6Ci0gICAgICAgICMgNS4yIDQt
OC4KLSAgICAgICAgc2VsZi5fcmVxdWVzdC53c19jaGFsbGVuZ2UgPSBzZWxmLl9nZXRfY2hhbGxl
bmdlKCkKLSAgICAgICAgIyA1LjIgOS4gbGV0IC9yZXNwb25zZS8gYmUgdGhlIE1ENSBmaW50ZXJw
cmludCBvZiAvY2hhbGxlbmdlLwotICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX2NoYWxsZW5nZV9t
ZDUgPSB1dGlsLm1kNV9oYXNoKAotICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19jaGFsbGVu
Z2UpLmRpZ2VzdCgpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICdD
aGFsbGVuZ2U6ICVyICglcyknLAotICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19jaGFsbGVu
Z2UsCi0gICAgICAgICAgICB1dGlsLmhleGlmeShzZWxmLl9yZXF1ZXN0LndzX2NoYWxsZW5nZSkp
Ci0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICdDaGFsbGVuZ2UgcmVz
cG9uc2U6ICVyICglcyknLAotICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19jaGFsbGVuZ2Vf
bWQ1LAotICAgICAgICAgICAgdXRpbC5oZXhpZnkoc2VsZi5fcmVxdWVzdC53c19jaGFsbGVuZ2Vf
bWQ1KSkKLQotICAgIGRlZiBfZ2V0X2tleV92YWx1ZShzZWxmLCBrZXlfZmllbGQpOgotICAgICAg
ICBrZXlfdmFsdWUgPSBnZXRfbWFuZGF0b3J5X2hlYWRlcihzZWxmLl9yZXF1ZXN0LCBrZXlfZmll
bGQpCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCclczogJXInLCBrZXlfZmllbGQsIGtl
eV92YWx1ZSkKLQotICAgICAgICAjIDUuMiA0LiBsZXQgL2tleS1udW1iZXJfbi8gYmUgdGhlIGRp
Z2l0cyAoY2hhcmFjdGVycyBpbiB0aGUgcmFuZ2UKLSAgICAgICAgIyBVKzAwMzAgRElHSVQgWkVS
TyAoMCkgdG8gVSswMDM5IERJR0lUIE5JTkUgKDkpKSBpbiAva2V5X24vLAotICAgICAgICAjIGlu
dGVycHJldGVkIGFzIGEgYmFzZSB0ZW4gaW50ZWdlciwgaWdub3JpbmcgYWxsIG90aGVyIGNoYXJh
Y3RlcnMKLSAgICAgICAgIyBpbiAva2V5X24vLgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBr
ZXlfbnVtYmVyID0gaW50KHJlLnN1YigiXFxEIiwgIiIsIGtleV92YWx1ZSkpCi0gICAgICAgIGV4
Y2VwdDoKLSAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbignJXMgZmllbGQgY29u
dGFpbnMgbm8gZGlnaXQnICUga2V5X2ZpZWxkKQotICAgICAgICAjIDUuMiA1LiBsZXQgL3NwYWNl
c19uLyBiZSB0aGUgbnVtYmVyIG9mIFUrMDAyMCBTUEFDRSBjaGFyYWN0ZXJzCi0gICAgICAgICMg
aW4gL2tleV9uLy4KLSAgICAgICAgc3BhY2VzID0gcmUuc3VibigiICIsICIiLCBrZXlfdmFsdWUp
WzFdCi0gICAgICAgIGlmIHNwYWNlcyA9PSAwOgotICAgICAgICAgICAgcmFpc2UgSGFuZHNoYWtl
RXhjZXB0aW9uKCclcyBmaWVsZCBjb250YWlucyBubyBzcGFjZScgJSBrZXlfZmllbGQpCi0KLSAg
ICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAgICAgJyVzOiBLZXktbnVtYmVyIGlz
ICVkIGFuZCBudW1iZXIgb2Ygc3BhY2VzIGlzICVkJywKLSAgICAgICAgICAgIGtleV9maWVsZCwg
a2V5X251bWJlciwgc3BhY2VzKQotCi0gICAgICAgICMgNS4yIDYuIGlmIC9rZXktbnVtYmVyX24v
IGlzIG5vdCBhbiBpbnRlZ3JhbCBtdWx0aXBsZSBvZiAvc3BhY2VzX24vCi0gICAgICAgICMgdGhl
biBhYm9ydCB0aGUgV2ViU29ja2V0IGNvbm5lY3Rpb24uCi0gICAgICAgIGlmIGtleV9udW1iZXIg
JSBzcGFjZXMgIT0gMDoKLSAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKLSAg
ICAgICAgICAgICAgICAnJXM6IEtleS1udW1iZXIgKCVkKSBpcyBub3QgYW4gaW50ZWdyYWwgbXVs
dGlwbGUgb2Ygc3BhY2VzICcKLSAgICAgICAgICAgICAgICAnKCVkKScgJSAoa2V5X2ZpZWxkLCBr
ZXlfbnVtYmVyLCBzcGFjZXMpKQotICAgICAgICAjIDUuMiA3LiBsZXQgL3BhcnRfbi8gYmUgL2tl
eS1udW1iZXJfbi8gZGl2aWRlZCBieSAvc3BhY2VzX24vLgotICAgICAgICBwYXJ0ID0ga2V5X251
bWJlciAvIHNwYWNlcwotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVzOiBQYXJ0IGlzICVk
Jywga2V5X2ZpZWxkLCBwYXJ0KQotICAgICAgICByZXR1cm4gcGFydAotCi0gICAgZGVmIF9nZXRf
Y2hhbGxlbmdlKHNlbGYpOgotICAgICAgICAjIDUuMiA0LTcuCi0gICAgICAgIGtleTEgPSBzZWxm
Ll9nZXRfa2V5X3ZhbHVlKGNvbW1vbi5TRUNfV0VCU09DS0VUX0tFWTFfSEVBREVSKQotICAgICAg
ICBrZXkyID0gc2VsZi5fZ2V0X2tleV92YWx1ZShjb21tb24uU0VDX1dFQlNPQ0tFVF9LRVkyX0hF
QURFUikKLSAgICAgICAgIyA1LjIgOC4gbGV0IC9jaGFsbGVuZ2UvIGJlIHRoZSBjb25jYXRlbmF0
aW9uIG9mIC9wYXJ0XzEvLAotICAgICAgICBjaGFsbGVuZ2UgPSAnJwotICAgICAgICBjaGFsbGVu
Z2UgKz0gc3RydWN0LnBhY2soJyFJJywga2V5MSkgICMgbmV0d29yayBieXRlb3JkZXIgaW50Ci0g
ICAgICAgIGNoYWxsZW5nZSArPSBzdHJ1Y3QucGFjaygnIUknLCBrZXkyKSAgIyBuZXR3b3JrIGJ5
dGVvcmRlciBpbnQKLSAgICAgICAgY2hhbGxlbmdlICs9IHNlbGYuX3JlcXVlc3QuY29ubmVjdGlv
bi5yZWFkKDgpCi0gICAgICAgIHJldHVybiBjaGFsbGVuZ2UKLQotICAgIGRlZiBfc2VuZF9oYW5k
c2hha2Uoc2VsZik6Ci0gICAgICAgIHJlc3BvbnNlID0gW10KLQotICAgICAgICAjIDUuMiAxMC4g
c2VuZCB0aGUgZm9sbG93aW5nIGxpbmUuCi0gICAgICAgIHJlc3BvbnNlLmFwcGVuZCgnSFRUUC8x
LjEgMTAxIFdlYlNvY2tldCBQcm90b2NvbCBIYW5kc2hha2VcclxuJykKLQotICAgICAgICAjIDUu
MiAxMS4gc2VuZCB0aGUgZm9sbG93aW5nIGZpZWxkcyB0byB0aGUgY2xpZW50LgotICAgICAgICBy
ZXNwb25zZS5hcHBlbmQoZm9ybWF0X2hlYWRlcigKLSAgICAgICAgICAgIGNvbW1vbi5VUEdSQURF
X0hFQURFUiwgY29tbW9uLldFQlNPQ0tFVF9VUEdSQURFX1RZUEVfSElYSUU3NSkpCi0gICAgICAg
IHJlc3BvbnNlLmFwcGVuZChmb3JtYXRfaGVhZGVyKAotICAgICAgICAgICAgY29tbW9uLkNPTk5F
Q1RJT05fSEVBREVSLCBjb21tb24uVVBHUkFERV9DT05ORUNUSU9OX1RZUEUpKQotICAgICAgICBy
ZXNwb25zZS5hcHBlbmQoZm9ybWF0X2hlYWRlcigKLSAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VC
U09DS0VUX0xPQ0FUSU9OX0hFQURFUiwgc2VsZi5fcmVxdWVzdC53c19sb2NhdGlvbikpCi0gICAg
ICAgIHJlc3BvbnNlLmFwcGVuZChmb3JtYXRfaGVhZGVyKAotICAgICAgICAgICAgY29tbW9uLlNF
Q19XRUJTT0NLRVRfT1JJR0lOX0hFQURFUiwgc2VsZi5fcmVxdWVzdC53c19vcmlnaW4pKQotICAg
ICAgICBpZiBzZWxmLl9yZXF1ZXN0LndzX3Byb3RvY29sOgotICAgICAgICAgICAgcmVzcG9uc2Uu
YXBwZW5kKGZvcm1hdF9oZWFkZXIoCi0gICAgICAgICAgICAgICAgY29tbW9uLlNFQ19XRUJTT0NL
RVRfUFJPVE9DT0xfSEVBREVSLAotICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcHJv
dG9jb2wpKQotICAgICAgICAjIDUuMiAxMi4gc2VuZCB0d28gYnl0ZXMgMHgwRCAweDBBLgotICAg
ICAgICByZXNwb25zZS5hcHBlbmQoJ1xyXG4nKQotICAgICAgICAjIDUuMiAxMy4gc2VuZCAvcmVz
cG9uc2UvCi0gICAgICAgIHJlc3BvbnNlLmFwcGVuZChzZWxmLl9yZXF1ZXN0LndzX2NoYWxsZW5n
ZV9tZDUpCi0KLSAgICAgICAgcmF3X3Jlc3BvbnNlID0gJycuam9pbihyZXNwb25zZSkKLSAgICAg
ICAgc2VsZi5fcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKHJhd19yZXNwb25zZSkKLSAgICAgICAg
c2VsZi5fbG9nZ2VyLmRlYnVnKCdTZW50IHNlcnZlclwncyBvcGVuaW5nIGhhbmRzaGFrZTogJXIn
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgcmF3X3Jlc3BvbnNlKQotCi0KLSMgdmk6c3Rz
PTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL3cz
Yy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL3czYy1pbXBvcnQu
bG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNTdhNDhjNjI3YmJkMjgwMzZjZTZi
NzM3YzY1YWJkM2VkMDZiZWM2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS93M2MtaW1wb3J0LmxvZwor
KysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9y
eSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0
aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJl
cXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9y
bS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0
cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBm
aWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgot
Tm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29j
a2V0L2hhbmRzaGFrZS9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFr
ZS9fYmFzZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9oeWJpLnB5Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tl
dC9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL2h5YmkwMC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9t
b2RfcHl3ZWJzb2NrZXQvaGVhZGVycGFyc2VyaGFuZGxlci5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29j
a2V0L2hlYWRlcnBhcnNlcmhhbmRsZXIucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDA2ZTc2Mzg1OTc5ODVhOTZhNGMwMGVhMDA1MmEwZDM3MTdlNDQwM2MuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvaGVh
ZGVycGFyc2VyaGFuZGxlci5weQorKysgL2Rldi9udWxsCkBAIC0xLDI1NyArMCwwIEBACi0jIENv
cHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
Ci0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLQotCi0iIiJQeXRob25IZWFkZXJQYXJzZXJIYW5kbGVyIGZvciBtb2RfcHl3
ZWJzb2NrZXQuCi0KLUFwYWNoZSBIVFRQIFNlcnZlciBhbmQgbW9kX3B5dGhvbiBtdXN0IGJlIGNv
bmZpZ3VyZWQgc3VjaCB0aGF0IHRoaXMKLWZ1bmN0aW9uIGlzIGNhbGxlZCB0byBoYW5kbGUgV2Vi
U29ja2V0IHJlcXVlc3QuCi0iIiIKLQotCi1pbXBvcnQgbG9nZ2luZwotCi1mcm9tIG1vZF9weXRo
b24gaW1wb3J0IGFwYWNoZQotCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCi1m
cm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgZGlzcGF0Y2gKLWZyb20gbW9kX3B5d2Vic29ja2V0
IGltcG9ydCBoYW5kc2hha2UKLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCi0KLQot
IyBQeXRob25PcHRpb24gdG8gc3BlY2lmeSB0aGUgaGFuZGxlciByb290IGRpcmVjdG9yeS4KLV9Q
WU9QVF9IQU5ETEVSX1JPT1QgPSAnbW9kX3B5d2Vic29ja2V0LmhhbmRsZXJfcm9vdCcKLQotIyBQ
eXRob25PcHRpb24gdG8gc3BlY2lmeSB0aGUgaGFuZGxlciBzY2FuIGRpcmVjdG9yeS4KLSMgVGhp
cyBtdXN0IGJlIGEgZGlyZWN0b3J5IHVuZGVyIHRoZSByb290IGRpcmVjdG9yeS4KLSMgVGhlIGRl
ZmF1bHQgaXMgdGhlIHJvb3QgZGlyZWN0b3J5LgotX1BZT1BUX0hBTkRMRVJfU0NBTiA9ICdtb2Rf
cHl3ZWJzb2NrZXQuaGFuZGxlcl9zY2FuJwotCi0jIFB5dGhvbk9wdGlvbiB0byBhbGxvdyBoYW5k
bGVycyB3aG9zZSBjYW5vbmljYWwgcGF0aCBpcwotIyBub3QgdW5kZXIgdGhlIHJvb3QgZGlyZWN0
b3J5LiBJdCdzIGRpc2FsbG93ZWQgYnkgZGVmYXVsdC4KLSMgU2V0IHRoaXMgb3B0aW9uIHdpdGgg
dmFsdWUgb2YgJ3llcycgdG8gYWxsb3cuCi1fUFlPUFRfQUxMT1dfSEFORExFUlNfT1VUU0lERV9S
T09UID0gKAotICAgICdtb2RfcHl3ZWJzb2NrZXQuYWxsb3dfaGFuZGxlcnNfb3V0c2lkZV9yb290
X2RpcicpCi0jIE1hcCBmcm9tIHZhbHVlcyB0byB0aGVpciBtZWFuaW5ncy4gJ1llcycgYW5kICdO
bycgYXJlIGFsbG93ZWQganVzdCBmb3IKLSMgY29tcGF0aWJpbGl0eS4KLV9QWU9QVF9BTExPV19I
QU5ETEVSU19PVVRTSURFX1JPT1RfREVGSU5JVElPTiA9IHsKLSAgICAnb2ZmJzogRmFsc2UsICdu
byc6IEZhbHNlLCAnb24nOiBUcnVlLCAneWVzJzogVHJ1ZX0KLQotIyAoT2Jzb2xldGUgb3B0aW9u
LiBJZ25vcmVkLikKLSMgUHl0aG9uT3B0aW9uIHRvIHNwZWNpZnkgdG8gYWxsb3cgaGFuZHNoYWtl
IGRlZmluZWQgaW4gSGl4aWUgNzUgdmVyc2lvbgotIyBwcm90b2NvbC4gVGhlIGRlZmF1bHQgaXMg
Tm9uZSAoT2ZmKQotX1BZT1BUX0FMTE9XX0RSQUZUNzUgPSAnbW9kX3B5d2Vic29ja2V0LmFsbG93
X2RyYWZ0NzUnCi0jIE1hcCBmcm9tIHZhbHVlcyB0byB0aGVpciBtZWFuaW5ncy4KLV9QWU9QVF9B
TExPV19EUkFGVDc1X0RFRklOSVRJT04gPSB7J29mZic6IEZhbHNlLCAnb24nOiBUcnVlfQotCi0K
LWNsYXNzIEFwYWNoZUxvZ0hhbmRsZXIobG9nZ2luZy5IYW5kbGVyKToKLQotICAgICIiIldyYXBw
ZXIgbG9nZ2luZy5IYW5kbGVyIHRvIGVtaXQgbG9nIG1lc3NhZ2UgdG8gYXBhY2hlJ3MgZXJyb3Iu
bG9nLiIiIgotCi0gICAgX0xFVkVMUyA9IHsKLSAgICAgICAgbG9nZ2luZy5ERUJVRzogYXBhY2hl
LkFQTE9HX0RFQlVHLAotICAgICAgICBsb2dnaW5nLklORk86IGFwYWNoZS5BUExPR19JTkZPLAot
ICAgICAgICBsb2dnaW5nLldBUk5JTkc6IGFwYWNoZS5BUExPR19XQVJOSU5HLAotICAgICAgICBs
b2dnaW5nLkVSUk9SOiBhcGFjaGUuQVBMT0dfRVJSLAotICAgICAgICBsb2dnaW5nLkNSSVRJQ0FM
OiBhcGFjaGUuQVBMT0dfQ1JJVCwKLSAgICAgICAgfQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYs
IHJlcXVlc3Q9Tm9uZSk6Ci0gICAgICAgIGxvZ2dpbmcuSGFuZGxlci5fX2luaXRfXyhzZWxmKQot
ICAgICAgICBzZWxmLl9sb2dfZXJyb3IgPSBhcGFjaGUubG9nX2Vycm9yCi0gICAgICAgIGlmIHJl
cXVlc3QgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLl9sb2dfZXJyb3IgPSByZXF1ZXN0
LmxvZ19lcnJvcgotCi0gICAgICAgICMgVGltZSBhbmQgbGV2ZWwgd2lsbCBiZSBwcmludGVkIGJ5
IEFwYWNoZS4KLSAgICAgICAgc2VsZi5fZm9ybWF0dGVyID0gbG9nZ2luZy5Gb3JtYXR0ZXIoJyUo
bmFtZSlzOiAlKG1lc3NhZ2UpcycpCi0KLSAgICBkZWYgZW1pdChzZWxmLCByZWNvcmQpOgotICAg
ICAgICBhcGFjaGVfbGV2ZWwgPSBhcGFjaGUuQVBMT0dfREVCVUcKLSAgICAgICAgaWYgcmVjb3Jk
LmxldmVsbm8gaW4gQXBhY2hlTG9nSGFuZGxlci5fTEVWRUxTOgotICAgICAgICAgICAgYXBhY2hl
X2xldmVsID0gQXBhY2hlTG9nSGFuZGxlci5fTEVWRUxTW3JlY29yZC5sZXZlbG5vXQotCi0gICAg
ICAgIG1zZyA9IHNlbGYuX2Zvcm1hdHRlci5mb3JtYXQocmVjb3JkKQotCi0gICAgICAgICMgInNl
cnZlciIgcGFyYW1ldGVyIG11c3QgYmUgcGFzc2VkIHRvIGhhdmUgImxldmVsIiBwYXJhbWV0ZXIg
d29yay4KLSAgICAgICAgIyBJZiBvbmx5ICJsZXZlbCIgcGFyYW1ldGVyIGlzIHBhc3NlZCwgbm90
aGluZyBzaG93cyB1cCBvbiBBcGFjaGUncwotICAgICAgICAjIGxvZy4gSG93ZXZlciwgYXQgdGhp
cyBwb2ludCwgd2UgY2Fubm90IGdldCB0aGUgc2VydmVyIG9iamVjdCBvZiB0aGUKLSAgICAgICAg
IyB2aXJ0dWFsIGhvc3Qgd2hpY2ggd2lsbCBwcm9jZXNzIFdlYlNvY2tldCByZXF1ZXN0cy4gVGhl
IG9ubHkgc2VydmVyCi0gICAgICAgICMgb2JqZWN0IHdlIGNhbiBnZXQgaGVyZSBpcyBhcGFjaGUu
bWFpbl9zZXJ2ZXIuIEJ1dCBXaGVyZXZlciAoc2VydmVyCi0gICAgICAgICMgY29uZmlndXJhdGlv
biBjb250ZXh0IG9yIHZpcnR1YWwgaG9zdCBjb250ZXh0KSB3ZSBwdXQKLSAgICAgICAgIyBQeXRo
b25IZWFkZXJQYXJzZXJIYW5kbGVyIGRpcmVjdGl2ZSwgYXBhY2hlLm1haW5fc2VydmVyIGp1c3Qg
cG9pbnRzCi0gICAgICAgICMgdGhlIG1haW4gc2VydmVyIGluc3RhbmNlIChub3QgYW55IG9mIHZp
cnR1YWwgc2VydmVyIGluc3RhbmNlKS4gVGhlbiwKLSAgICAgICAgIyBBcGFjaGUgZm9sbG93cyBM
b2dMZXZlbCBkaXJlY3RpdmUgaW4gdGhlIHNlcnZlciBjb25maWd1cmF0aW9uIGNvbnRleHQKLSAg
ICAgICAgIyB0byBmaWx0ZXIgbG9ncy4gU28sIHdlIG5lZWQgdG8gc3BlY2lmeSBMb2dMZXZlbCBp
biB0aGUgc2VydmVyCi0gICAgICAgICMgY29uZmlndXJhdGlvbiBjb250ZXh0LiBFdmVuIGlmIHdl
IHNwZWNpZnkgIkxvZ0xldmVsIGRlYnVnIiBpbiB0aGUKLSAgICAgICAgIyB2aXJ0dWFsIGhvc3Qg
Y29udGV4dCB3aGljaCBhY3R1YWxseSBoYW5kbGVzIFdlYlNvY2tldCBjb25uZWN0aW9ucywKLSAg
ICAgICAgIyBERUJVRyBsZXZlbCBsb2dzIG5ldmVyIHNob3cgdXAgdW5sZXNzICJMb2dMZXZlbCBk
ZWJ1ZyIgaXMgc3BlY2lmaWVkCi0gICAgICAgICMgaW4gdGhlIHNlcnZlciBjb25maWd1cmF0aW9u
IGNvbnRleHQuCi0gICAgICAgICMKLSAgICAgICAgIyBUT0RPKHR5b3NoaW5vKTogUHJvdmlkZSBs
b2dnaW5nIG1ldGhvZHMgb24gcmVxdWVzdCBvYmplY3QuIFdoZW4KLSAgICAgICAgIyByZXF1ZXN0
IGlzIG1wX3JlcXVlc3Qgb2JqZWN0ICh3aGVuIHVzZWQgdG9nZXRoZXIgd2l0aCBBcGFjaGUpLCB0
aGUKLSAgICAgICAgIyBtZXRob2RzIGNhbGwgcmVxdWVzdC5sb2dfZXJyb3IgaW5kaXJlY3RseS4g
V2hlbiByZXF1ZXN0IGlzCi0gICAgICAgICMgX1N0YW5kYWxvbmVSZXF1ZXN0LCB0aGUgbWV0aG9k
cyBjYWxsIFB5dGhvbidzIGxvZ2dpbmcgZmFjaWxpdHkgd2hpY2gKLSAgICAgICAgIyB3ZSBjcmVh
dGUgaW4gc3RhbmRhbG9uZS5weS4KLSAgICAgICAgc2VsZi5fbG9nX2Vycm9yKG1zZywgYXBhY2hl
X2xldmVsLCBhcGFjaGUubWFpbl9zZXJ2ZXIpCi0KLQotZGVmIF9jb25maWd1cmVfbG9nZ2luZygp
OgotICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKLSAgICAjIExvZ3MgYXJlIGZpbHRl
cmVkIGJ5IEFwYWNoZSBiYXNlZCBvbiBMb2dMZXZlbCBkaXJlY3RpdmUgaW4gQXBhY2hlCi0gICAg
IyBjb25maWd1cmF0aW9uIGZpbGUuIFdlIG11c3QganVzdCBwYXNzIGxvZ3MgZm9yIGFsbCBsZXZl
bHMgdG8KLSAgICAjIEFwYWNoZUxvZ0hhbmRsZXIuCi0gICAgbG9nZ2VyLnNldExldmVsKGxvZ2dp
bmcuREVCVUcpCi0gICAgbG9nZ2VyLmFkZEhhbmRsZXIoQXBhY2hlTG9nSGFuZGxlcigpKQotCi0K
LV9jb25maWd1cmVfbG9nZ2luZygpCi0KLV9MT0dHRVIgPSBsb2dnaW5nLmdldExvZ2dlcihfX25h
bWVfXykKLQotCi1kZWYgX3BhcnNlX29wdGlvbihuYW1lLCB2YWx1ZSwgZGVmaW5pdGlvbik6Ci0g
ICAgIiIiUmV0dXJuIHRoZSBtZWFuaW5nIG9mIGEgb3B0aW9uIHZhbHVlLiIiIgotICAgIGlmIHZh
bHVlIGlzIE5vbmU6Ci0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgbWVhbmluZyA9IGRlZmlu
aXRpb24uZ2V0KHZhbHVlLmxvd2VyKCkpCi0gICAgaWYgbWVhbmluZyBpcyBOb25lOgotICAgICAg
ICByYWlzZSBFeGNlcHRpb24oJ0ludmFsaWQgdmFsdWUgZm9yIFB5dGhvbk9wdGlvbiAlczogJXIn
ICUKLSAgICAgICAgICAgICAgICAgICAgICAgIChuYW1lLCB2YWx1ZSkpCi0gICAgcmV0dXJuIG1l
YW5pbmcKLQotCi1kZWYgX2NyZWF0ZV9kaXNwYXRjaGVyKCk6Ci0gICAgIiIiSW5pdGlhbGl6ZSBh
IGRpc3BhdGNoLkRpc3BhdGNoZXIuIiIiCi0gICAgX0xPR0dFUi5pbmZvKCdJbml0aWFsaXppbmcg
RGlzcGF0Y2hlcicpCi0KLSAgICBvcHRpb25zID0gYXBhY2hlLm1haW5fc2VydmVyLmdldF9vcHRp
b25zKCkKLQotICAgIGhhbmRsZXJfcm9vdCA9IG9wdGlvbnMuZ2V0KF9QWU9QVF9IQU5ETEVSX1JP
T1QsIE5vbmUpCi0gICAgaWYgbm90IGhhbmRsZXJfcm9vdDoKLSAgICAgICAgcmFpc2UgRXhjZXB0
aW9uKCdQeXRob25PcHRpb24gJXMgaXMgbm90IGRlZmluZWQnICUgX1BZT1BUX0hBTkRMRVJfUk9P
VCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGFwYWNoZS5BUExPR19FUlIpCi0KLSAgICBoYW5k
bGVyX3NjYW4gPSBvcHRpb25zLmdldChfUFlPUFRfSEFORExFUl9TQ0FOLCBoYW5kbGVyX3Jvb3Qp
Ci0KLSAgICBhbGxvd19oYW5kbGVyc19vdXRzaWRlX3Jvb3QgPSBfcGFyc2Vfb3B0aW9uKAotICAg
ICAgICBfUFlPUFRfQUxMT1dfSEFORExFUlNfT1VUU0lERV9ST09ULAotICAgICAgICBvcHRpb25z
LmdldChfUFlPUFRfQUxMT1dfSEFORExFUlNfT1VUU0lERV9ST09UKSwKLSAgICAgICAgX1BZT1BU
X0FMTE9XX0hBTkRMRVJTX09VVFNJREVfUk9PVF9ERUZJTklUSU9OKQotCi0gICAgZGlzcGF0Y2hl
ciA9IGRpc3BhdGNoLkRpc3BhdGNoZXIoCi0gICAgICAgIGhhbmRsZXJfcm9vdCwgaGFuZGxlcl9z
Y2FuLCBhbGxvd19oYW5kbGVyc19vdXRzaWRlX3Jvb3QpCi0KLSAgICBmb3Igd2FybmluZyBpbiBk
aXNwYXRjaGVyLnNvdXJjZV93YXJuaW5ncygpOgotICAgICAgICBhcGFjaGUubG9nX2Vycm9yKAot
ICAgICAgICAgICAgJ21vZF9weXdlYnNvY2tldDogV2FybmluZyBpbiBzb3VyY2UgbG9hZGluZzog
JXMnICUgd2FybmluZywKLSAgICAgICAgICAgIGFwYWNoZS5BUExPR19XQVJOSU5HKQotCi0gICAg
cmV0dXJuIGRpc3BhdGNoZXIKLQotCi0jIEluaXRpYWxpemUKLV9kaXNwYXRjaGVyID0gX2NyZWF0
ZV9kaXNwYXRjaGVyKCkKLQotCi1kZWYgaGVhZGVycGFyc2VyaGFuZGxlcihyZXF1ZXN0KToKLSAg
ICAiIiJIYW5kbGUgcmVxdWVzdC4KLQotICAgIEFyZ3M6Ci0gICAgICAgIHJlcXVlc3Q6IG1vZF9w
eXRob24gcmVxdWVzdC4KLQotICAgIFRoaXMgZnVuY3Rpb24gaXMgbmFtZWQgaGVhZGVycGFyc2Vy
aGFuZGxlciBiZWNhdXNlIGl0IGlzIHRoZSBkZWZhdWx0Ci0gICAgbmFtZSBmb3IgYSBQeXRob25I
ZWFkZXJQYXJzZXJIYW5kbGVyLgotICAgICIiIgotICAgIGhhbmRzaGFrZV9pc19kb25lID0gRmFs
c2UKLSAgICB0cnk6Ci0gICAgICAgICMgRmFsbGJhY2sgdG8gZGVmYXVsdCBodHRwIGhhbmRsZXIg
Zm9yIHJlcXVlc3QgcGF0aHMgZm9yIHdoaWNoCi0gICAgICAgICMgd2UgZG9uJ3QgaGF2ZSByZXF1
ZXN0IGhhbmRsZXJzLgotICAgICAgICBpZiBub3QgX2Rpc3BhdGNoZXIuZ2V0X2hhbmRsZXJfc3Vp
dGUocmVxdWVzdC51cmkpOgotICAgICAgICAgICAgcmVxdWVzdC5sb2dfZXJyb3IoCi0gICAgICAg
ICAgICAgICAgJ21vZF9weXdlYnNvY2tldDogTm8gaGFuZGxlciBmb3IgcmVzb3VyY2U6ICVyJyAl
IHJlcXVlc3QudXJpLAotICAgICAgICAgICAgICAgIGFwYWNoZS5BUExPR19JTkZPKQotICAgICAg
ICAgICAgcmVxdWVzdC5sb2dfZXJyb3IoCi0gICAgICAgICAgICAgICAgJ21vZF9weXdlYnNvY2tl
dDogRmFsbGJhY2sgdG8gQXBhY2hlJywgYXBhY2hlLkFQTE9HX0lORk8pCi0gICAgICAgICAgICBy
ZXR1cm4gYXBhY2hlLkRFQ0xJTkVECi0gICAgZXhjZXB0IGRpc3BhdGNoLkRpc3BhdGNoRXhjZXB0
aW9uIGFzIGU6Ci0gICAgICAgIHJlcXVlc3QubG9nX2Vycm9yKAotICAgICAgICAgICAgJ21vZF9w
eXdlYnNvY2tldDogRGlzcGF0Y2ggZmFpbGVkIGZvciBlcnJvcjogJXMnICUgZSwKLSAgICAgICAg
ICAgIGFwYWNoZS5BUExPR19JTkZPKQotICAgICAgICBpZiBub3QgaGFuZHNoYWtlX2lzX2RvbmU6
Ci0gICAgICAgICAgICByZXR1cm4gZS5zdGF0dXMKLQotICAgIHRyeToKLSAgICAgICAgYWxsb3df
ZHJhZnQ3NSA9IF9wYXJzZV9vcHRpb24oCi0gICAgICAgICAgICBfUFlPUFRfQUxMT1dfRFJBRlQ3
NSwKLSAgICAgICAgICAgIGFwYWNoZS5tYWluX3NlcnZlci5nZXRfb3B0aW9ucygpLmdldChfUFlP
UFRfQUxMT1dfRFJBRlQ3NSksCi0gICAgICAgICAgICBfUFlPUFRfQUxMT1dfRFJBRlQ3NV9ERUZJ
TklUSU9OKQotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGhhbmRzaGFrZS5kb19oYW5kc2hh
a2UoCi0gICAgICAgICAgICAgICAgcmVxdWVzdCwgX2Rpc3BhdGNoZXIsIGFsbG93RHJhZnQ3NT1h
bGxvd19kcmFmdDc1KQotICAgICAgICBleGNlcHQgaGFuZHNoYWtlLlZlcnNpb25FeGNlcHRpb24g
YXMgZToKLSAgICAgICAgICAgIHJlcXVlc3QubG9nX2Vycm9yKAotICAgICAgICAgICAgICAgICdt
b2RfcHl3ZWJzb2NrZXQ6IEhhbmRzaGFrZSBmYWlsZWQgZm9yIHZlcnNpb24gZXJyb3I6ICVzJyAl
IGUsCi0gICAgICAgICAgICAgICAgYXBhY2hlLkFQTE9HX0lORk8pCi0gICAgICAgICAgICByZXF1
ZXN0LmVycl9oZWFkZXJzX291dC5hZGQoY29tbW9uLlNFQ19XRUJTT0NLRVRfVkVSU0lPTl9IRUFE
RVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5zdXBwb3J0ZWRf
dmVyc2lvbnMpCi0gICAgICAgICAgICByZXR1cm4gYXBhY2hlLkhUVFBfQkFEX1JFUVVFU1QKLSAg
ICAgICAgZXhjZXB0IGhhbmRzaGFrZS5IYW5kc2hha2VFeGNlcHRpb24gYXMgZToKLSAgICAgICAg
ICAgICMgSGFuZHNoYWtlIGZvciB3cy93c3MgZmFpbGVkLgotICAgICAgICAgICAgIyBTZW5kIGh0
dHAgcmVzcG9uc2Ugd2l0aCBlcnJvciBzdGF0dXMuCi0gICAgICAgICAgICByZXF1ZXN0LmxvZ19l
cnJvcigKLSAgICAgICAgICAgICAgICAnbW9kX3B5d2Vic29ja2V0OiBIYW5kc2hha2UgZmFpbGVk
IGZvciBlcnJvcjogJXMnICUgZSwKLSAgICAgICAgICAgICAgICBhcGFjaGUuQVBMT0dfSU5GTykK
LSAgICAgICAgICAgIHJldHVybiBlLnN0YXR1cwotCi0gICAgICAgIGhhbmRzaGFrZV9pc19kb25l
ID0gVHJ1ZQotICAgICAgICByZXF1ZXN0Ll9kaXNwYXRjaGVyID0gX2Rpc3BhdGNoZXIKLSAgICAg
ICAgX2Rpc3BhdGNoZXIudHJhbnNmZXJfZGF0YShyZXF1ZXN0KQotICAgIGV4Y2VwdCBoYW5kc2hh
a2UuQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbiBhcyBlOgotICAgICAgICByZXF1ZXN0LmxvZ19lcnJv
cignbW9kX3B5d2Vic29ja2V0OiBBYm9ydGVkOiAlcycgJSBlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICBhcGFjaGUuQVBMT0dfSU5GTykKLSAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0g
ICAgICAgICMgRGlzcGF0Y2hFeGNlcHRpb24gY2FuIGFsc28gYmUgdGhyb3duIGlmIHNvbWV0aGlu
ZyBpcyB3cm9uZyBpbgotICAgICAgICAjIHB5d2Vic29ja2V0IGNvZGUuIEl0J3MgY2F1Z2h0IGhl
cmUsIHRoZW4uCi0KLSAgICAgICAgcmVxdWVzdC5sb2dfZXJyb3IoJ21vZF9weXdlYnNvY2tldDog
RXhjZXB0aW9uIG9jY3VycmVkOiAlc1xuJXMnICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
KGUsIHV0aWwuZ2V0X3N0YWNrX3RyYWNlKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICBh
cGFjaGUuQVBMT0dfRVJSKQotICAgICAgICAjIFVua25vd24gZXhjZXB0aW9ucyBiZWZvcmUgaGFu
ZHNoYWtlIG1lYW4gQXBhY2hlIG11c3QgaGFuZGxlIGl0cwotICAgICAgICAjIHJlcXVlc3Qgd2l0
aCBhbm90aGVyIGhhbmRsZXIuCi0gICAgICAgIGlmIG5vdCBoYW5kc2hha2VfaXNfZG9uZToKLSAg
ICAgICAgICAgIHJldHVybiBhcGFjaGUuREVDTElORUQKLSAgICAjIFNldCBhc3NiYWNrd2FyZHMg
dG8gc3VwcHJlc3MgcmVzcG9uc2UgaGVhZGVyIGdlbmVyYXRpb24gYnkgQXBhY2hlLgotICAgIHJl
cXVlc3QuYXNzYmFja3dhcmRzID0gMQotICAgIHJldHVybiBhcGFjaGUuRE9ORSAgIyBSZXR1cm4g
RE9ORSBzdWNoIHRoYXQgbm8gb3RoZXIgaGFuZGxlcnMgYXJlIGludm9rZWQuCi0KLQotIyB2aTpz
dHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9odHRwX2hlYWRl
cl91dGlsLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvaHR0cF9oZWFkZXJfdXRpbC5weQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGUwNTg0YzVkYWM4Y2M0NGM3NzZmN2NjYjRlNmE1
MDQwY2U1MjIyNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L21vZF9weXdlYnNvY2tldC9odHRwX2hlYWRlcl91dGlsLnB5CisrKyAvZGV2L251bGwK
QEAgLTEsMjYzICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCi0jIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoK
LSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIlV0aWxpdGllcyBmb3Ig
cGFyc2luZyBhbmQgZm9ybWF0dGluZyBoZWFkZXJzIHRoYXQgZm9sbG93IHRoZSBncmFtbWFyIGRl
ZmluZWQKLWluIEhUVFAgUkZDIGh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzI2MTYudHh0Lgot
IiIiCi0KLQotZnJvbSBzaXgubW92ZXMgaW1wb3J0IHVybGxpYgotCi0KLV9TRVBBUkFUT1JTID0g
JygpPD5ALDs6XFwiL1tdPz17fSBcdCcKLQotCi1kZWYgX2lzX2NoYXIoYyk6Ci0gICAgIiIiUmV0
dXJucyB0cnVlIGlmZiBjIGlzIGluIENIQVIgYXMgc3BlY2lmaWVkIGluIEhUVFAgUkZDLiIiIgot
Ci0gICAgcmV0dXJuIG9yZChjKSA8PSAxMjcKLQotCi1kZWYgX2lzX2N0bChjKToKLSAgICAiIiJS
ZXR1cm5zIHRydWUgaWZmIGMgaXMgaW4gQ1RMIGFzIHNwZWNpZmllZCBpbiBIVFRQIFJGQy4iIiIK
LQotICAgIHJldHVybiBvcmQoYykgPD0gMzEgb3Igb3JkKGMpID09IDEyNwotCi0KLWNsYXNzIFBh
cnNpbmdTdGF0ZShvYmplY3QpOgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGRhdGEpOgotICAg
ICAgICBzZWxmLmRhdGEgPSBkYXRhCi0gICAgICAgIHNlbGYuaGVhZCA9IDAKLQotCi1kZWYgcGVl
ayhzdGF0ZSwgcG9zPTApOgotICAgICIiIlBlZWtzIHRoZSBjaGFyYWN0ZXIgYXQgcG9zIGZyb20g
dGhlIGhlYWQgb2YgZGF0YS4iIiIKLQotICAgIGlmIHN0YXRlLmhlYWQgKyBwb3MgPj0gbGVuKHN0
YXRlLmRhdGEpOgotICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgcmV0dXJuIHN0YXRlLmRhdGFb
c3RhdGUuaGVhZCArIHBvc10KLQotCi1kZWYgY29uc3VtZShzdGF0ZSwgYW1vdW50PTEpOgotICAg
ICIiIkNvbnN1bWVzIHNwZWNpZmllZCBhbW91bnQgb2YgYnl0ZXMgZnJvbSB0aGUgaGVhZCBhbmQg
cmV0dXJucyB0aGUKLSAgICBjb25zdW1lZCBieXRlcy4gSWYgdGhlcmUncyBub3QgZW5vdWdoIGJ5
dGVzIHRvIGNvbnN1bWUsIHJldHVybnMgTm9uZS4KLSAgICAiIiIKLQotICAgIGlmIHN0YXRlLmhl
YWQgKyBhbW91bnQgPiBsZW4oc3RhdGUuZGF0YSk6Ci0gICAgICAgIHJldHVybiBOb25lCi0KLSAg
ICByZXN1bHQgPSBzdGF0ZS5kYXRhW3N0YXRlLmhlYWQ6c3RhdGUuaGVhZCArIGFtb3VudF0KLSAg
ICBzdGF0ZS5oZWFkID0gc3RhdGUuaGVhZCArIGFtb3VudAotICAgIHJldHVybiByZXN1bHQKLQot
Ci1kZWYgY29uc3VtZV9zdHJpbmcoc3RhdGUsIGV4cGVjdGVkKToKLSAgICAiIiJHaXZlbiBhIHBh
cnNpbmcgc3RhdGUgYW5kIGEgZXhwZWN0ZWQgc3RyaW5nLCBjb25zdW1lcyB0aGUgc3RyaW5nIGZy
b20KLSAgICB0aGUgaGVhZC4gUmV0dXJucyBUcnVlIGlmIGNvbnN1bWVkIHN1Y2Nlc3NmdWxseS4g
T3RoZXJ3aXNlLCByZXR1cm5zCi0gICAgRmFsc2UuCi0gICAgIiIiCi0KLSAgICBwb3MgPSAwCi0K
LSAgICBmb3IgYyBpbiBleHBlY3RlZDoKLSAgICAgICAgaWYgYyAhPSBwZWVrKHN0YXRlLCBwb3Mp
OgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIHBvcyArPSAxCi0KLSAgICBjb25z
dW1lKHN0YXRlLCBwb3MpCi0gICAgcmV0dXJuIFRydWUKLQotCi1kZWYgY29uc3VtZV9sd3Moc3Rh
dGUpOgotICAgICIiIkNvbnN1bWVzIGEgTFdTIGZyb20gdGhlIGhlYWQuIFJldHVybnMgVHJ1ZSBp
ZiBhbnkgTFdTIGlzIGNvbnN1bWVkLgotICAgIE90aGVyd2lzZSwgcmV0dXJucyBGYWxzZS4KLQot
ICAgIExXUyA9IFtDUkxGXSAxKiggU1AgfCBIVCApCi0gICAgIiIiCi0KLSAgICBvcmlnaW5hbF9o
ZWFkID0gc3RhdGUuaGVhZAotCi0gICAgY29uc3VtZV9zdHJpbmcoc3RhdGUsICdcclxuJykKLQot
ICAgIHBvcyA9IDAKLQotICAgIHdoaWxlIFRydWU6Ci0gICAgICAgIGMgPSBwZWVrKHN0YXRlLCBw
b3MpCi0gICAgICAgIGlmIGMgPT0gJyAnIG9yIGMgPT0gJ1x0JzoKLSAgICAgICAgICAgIHBvcyAr
PSAxCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBwb3MgPT0gMDoKLSAgICAgICAgICAg
ICAgICBzdGF0ZS5oZWFkID0gb3JpZ2luYWxfaGVhZAotICAgICAgICAgICAgICAgIHJldHVybiBG
YWxzZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBjb25zdW1lKHN0YXRlLCBw
b3MpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLQotCi1kZWYgY29uc3VtZV9sd3Nlcyhz
dGF0ZSk6Ci0gICAgIiIiQ29uc3VtZXMgKkxXUyBmcm9tIHRoZSBoZWFkLiIiIgotCi0gICAgd2hp
bGUgY29uc3VtZV9sd3Moc3RhdGUpOgotICAgICAgICBwYXNzCi0KLQotZGVmIGNvbnN1bWVfdG9r
ZW4oc3RhdGUpOgotICAgICIiIkNvbnN1bWVzIGEgdG9rZW4gZnJvbSB0aGUgaGVhZC4gUmV0dXJu
cyB0aGUgdG9rZW4gb3IgTm9uZSBpZiBubyB0b2tlbgotICAgIHdhcyBmb3VuZC4KLSAgICAiIiIK
LQotICAgIHBvcyA9IDAKLQotICAgIHdoaWxlIFRydWU6Ci0gICAgICAgIGMgPSBwZWVrKHN0YXRl
LCBwb3MpCi0gICAgICAgIGlmIGMgaXMgTm9uZSBvciBjIGluIF9TRVBBUkFUT1JTIG9yIF9pc19j
dGwoYykgb3Igbm90IF9pc19jaGFyKGMpOgotICAgICAgICAgICAgaWYgcG9zID09IDA6Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICAgICAgcmV0dXJuIGNvbnN1bWUoc3Rh
dGUsIHBvcykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHBvcyArPSAxCi0KLQotZGVmIGNv
bnN1bWVfdG9rZW5fb3JfcXVvdGVkX3N0cmluZyhzdGF0ZSk6Ci0gICAgIiIiQ29uc3VtZXMgYSB0
b2tlbiBvciBhIHF1b3RlZC1zdHJpbmcsIGFuZCByZXR1cm5zIHRoZSB0b2tlbiBvciB1bnF1b3Rl
ZAotICAgIHN0cmluZy4gSWYgbm8gdG9rZW4gb3IgcXVvdGVkLXN0cmluZyB3YXMgZm91bmQsIHJl
dHVybnMgTm9uZS4KLSAgICAiIiIKLQotICAgIG9yaWdpbmFsX2hlYWQgPSBzdGF0ZS5oZWFkCi0K
LSAgICBpZiBub3QgY29uc3VtZV9zdHJpbmcoc3RhdGUsICciJyk6Ci0gICAgICAgIHJldHVybiBj
b25zdW1lX3Rva2VuKHN0YXRlKQotCi0gICAgcmVzdWx0ID0gW10KLQotICAgIGV4cGVjdF9xdW90
ZWRfcGFpciA9IEZhbHNlCi0KLSAgICB3aGlsZSBUcnVlOgotICAgICAgICBpZiBub3QgZXhwZWN0
X3F1b3RlZF9wYWlyIGFuZCBjb25zdW1lX2x3cyhzdGF0ZSk6Ci0gICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCcgJykKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgYyA9IGNvbnN1bWUo
c3RhdGUpCi0gICAgICAgIGlmIGMgaXMgTm9uZToKLSAgICAgICAgICAgICMgcXVvdGVkLXN0cmlu
ZyBpcyBub3QgZW5jbG9zZWQgd2l0aCBkb3VibGUgcXVvdGF0aW9uCi0gICAgICAgICAgICBzdGF0
ZS5oZWFkID0gb3JpZ2luYWxfaGVhZAotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAg
ZWxpZiBleHBlY3RfcXVvdGVkX3BhaXI6Ci0gICAgICAgICAgICBleHBlY3RfcXVvdGVkX3BhaXIg
PSBGYWxzZQotICAgICAgICAgICAgaWYgX2lzX2NoYXIoYyk6Ci0gICAgICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZChjKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIE5vbiBD
SEFSIGNoYXJhY3RlciBmb3VuZCBpbiBxdW90ZWQtcGFpcgotICAgICAgICAgICAgICAgIHN0YXRl
LmhlYWQgPSBvcmlnaW5hbF9oZWFkCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAg
ICAgZWxpZiBjID09ICdcXCc6Ci0gICAgICAgICAgICBleHBlY3RfcXVvdGVkX3BhaXIgPSBUcnVl
Ci0gICAgICAgIGVsaWYgYyA9PSAnIic6Ci0gICAgICAgICAgICByZXR1cm4gJycuam9pbihyZXN1
bHQpCi0gICAgICAgIGVsaWYgX2lzX2N0bChjKToKLSAgICAgICAgICAgICMgSW52YWxpZCBjaGFy
YWN0ZXIgJXIgZm91bmQgaW4gcWR0ZXh0Ci0gICAgICAgICAgICBzdGF0ZS5oZWFkID0gb3JpZ2lu
YWxfaGVhZAotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoYykKLQotCi1kZWYgcXVvdGVfaWZfbmVjZXNzYXJ5KHMpOgotICAg
ICIiIlF1b3RlcyBhcmJpdHJhcnkgc3RyaW5nIGludG8gcXVvdGVkLXN0cmluZy4iIiIKLQotICAg
IHF1b3RlID0gRmFsc2UKLSAgICBpZiBzID09ICcnOgotICAgICAgICByZXR1cm4gJyIiJwotCi0g
ICAgcmVzdWx0ID0gW10KLSAgICBmb3IgYyBpbiBzOgotICAgICAgICBpZiBjID09ICciJyBvciBj
IGluIF9TRVBBUkFUT1JTIG9yIF9pc19jdGwoYykgb3Igbm90IF9pc19jaGFyKGMpOgotICAgICAg
ICAgICAgcXVvdGUgPSBUcnVlCi0KLSAgICAgICAgaWYgYyA9PSAnIicgb3IgX2lzX2N0bChjKToK
LSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xcJyArIGMpCi0gICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKGMpCi0KLSAgICBpZiBxdW90ZToKLSAgICAgICAgcmV0dXJu
ICciJyArICcnLmpvaW4ocmVzdWx0KSArICciJwotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiAn
Jy5qb2luKHJlc3VsdCkKLQotCi1kZWYgcGFyc2VfdXJpKHVyaSk6Ci0gICAgIiIiUGFyc2UgYWJz
b2x1dGUgVVJJIHRoZW4gcmV0dXJuIGhvc3QsIHBvcnQgYW5kIHJlc291cmNlLiIiIgotCi0gICAg
cGFyc2VkID0gdXJsbGliLnBhcnNlLnVybHNwbGl0KHVyaSkKLSAgICBpZiBwYXJzZWQuc2NoZW1l
ICE9ICd3c3MnIGFuZCBwYXJzZWQuc2NoZW1lICE9ICd3cyc6Ci0gICAgICAgICMgfHVyaXwgbXVz
dCBiZSBhIHJlbGF0aXZlIFVSSS4KLSAgICAgICAgIyBUT0RPKHRveW9zaGltKTogU2hvdWxkIHZh
bGlkYXRlIHx1cml8LgotICAgICAgICByZXR1cm4gTm9uZSwgTm9uZSwgdXJpCi0KLSAgICBpZiBw
YXJzZWQuaG9zdG5hbWUgaXMgTm9uZToKLSAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUsIE5vbmUK
LQotICAgIHBvcnQgPSBOb25lCi0gICAgdHJ5OgotICAgICAgICBwb3J0ID0gcGFyc2VkLnBvcnQK
LSAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgotICAgICAgICAjIHBvcnQgcHJvcGVydHkgY2F1
c2UgVmFsdWVFcnJvciBvbiBpbnZhbGlkIG51bGwgcG9ydCBkZXNjcmlwdGlvbiBsaWtlCi0gICAg
ICAgICMgJ3dzOi8vaG9zdDovcGF0aCcuCi0gICAgICAgIHJldHVybiBOb25lLCBOb25lLCBOb25l
Ci0KLSAgICBpZiBwb3J0IGlzIE5vbmU6Ci0gICAgICAgIGlmIHBhcnNlZC5zY2hlbWUgPT0gJ3dz
JzoKLSAgICAgICAgICAgIHBvcnQgPSA4MAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcG9y
dCA9IDQ0MwotCi0gICAgcGF0aCA9IHBhcnNlZC5wYXRoCi0gICAgaWYgbm90IHBhdGg6Ci0gICAg
ICAgIHBhdGggKz0gJy8nCi0gICAgaWYgcGFyc2VkLnF1ZXJ5OgotICAgICAgICBwYXRoICs9ICc/
JyArIHBhcnNlZC5xdWVyeQotICAgIGlmIHBhcnNlZC5mcmFnbWVudDoKLSAgICAgICAgcGF0aCAr
PSAnIycgKyBwYXJzZWQuZnJhZ21lbnQKLQotICAgIHJldHVybiBwYXJzZWQuaG9zdG5hbWUsIHBv
cnQsIHBhdGgKLQotCi10cnk6Ci0gICAgdXJsbGliLnBhcnNlLnVzZXNfbmV0bG9jLmluZGV4KCd3
cycpCi1leGNlcHQgVmFsdWVFcnJvciBhcyBlOgotICAgICMgdXJscGFyc2UgaW4gUHl0aG9uMi41
LjEgZG9lc24ndCBoYXZlICd3cycgYW5kICd3c3MnIGVudHJpZXMuCi0gICAgdXJsbGliLnBhcnNl
LnVzZXNfbmV0bG9jLmFwcGVuZCgnd3MnKQotICAgIHVybGxpYi5wYXJzZS51c2VzX25ldGxvYy5h
cHBlbmQoJ3dzcycpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21v
ZF9weXdlYnNvY2tldC9tZW1vcml6aW5nZmlsZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L21l
bW9yaXppbmdmaWxlLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjN2FmY2MxNTdl
ZDdhMWQ5NDJjYmY0MzU4YWZhMDQ1NDg0NmYwMWQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L21lbW9yaXppbmdmaWxl
LnB5CisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAxMSwgR29v
Z2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
IyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQot
IiIiTWVtb3JpemluZyBmaWxlLgotCi1BIG1lbW9yaXppbmcgZmlsZSB3cmFwcyBhIGZpbGUgYW5k
IG1lbW9yaXplcyBsaW5lcyByZWFkIGJ5IHJlYWRsaW5lLgotIiIiCi0KLQotY2xhc3MgTWVtb3Jp
emluZ0ZpbGUob2JqZWN0KToKLQotICAgICIiIk1lbW9yaXppbmdGaWxlIHdyYXBzIGEgZmlsZSBh
bmQgbWVtb3JpemVzIGxpbmVzIHJlYWQgYnkgcmVhZGxpbmUuCi0KLSAgICBOb3RlIHRoYXQgZGF0
YSByZWFkIGJ5IG90aGVyIG1ldGhvZHMgYXJlIG5vdCBtZW1vcml6ZWQuIFRoaXMgYmVoYXZpb3IK
LSAgICBpcyBnb29kIGVub3VnaCBmb3IgbWVtb3JpemluZyBsaW5lcyBTaW1wbGVIVFRQU2VydmVy
IHJlYWRzIGJlZm9yZQotICAgIHRoZSBjb250cm9sIHJlYWNoZXMgV2ViU29ja2V0UmVxdWVzdEhh
bmRsZXIuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZV8sIG1heF9tZW1v
cml6ZWRfbGluZXM9MHg3RkZGRkZGRik6Ci0gICAgICAgICIiIkNvbnN0cnVjdCBhbiBpbnN0YW5j
ZS4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgZmlsZV86IHRoZSBmaWxlIG9iamVjdCB0
byB3cmFwLgotICAgICAgICAgICAgbWF4X21lbW9yaXplZF9saW5lczogdGhlIG1heGltdW0gbnVt
YmVyIG9mIGxpbmVzIHRvIG1lbW9yaXplLgotICAgICAgICAgICAgICAgIE9ubHkgdGhlIGZpcnN0
IG1heF9tZW1vcml6ZWRfbGluZXMgYXJlIG1lbW9yaXplZC4KLSAgICAgICAgICAgICAgICBEZWZh
dWx0OiBzeXMubWF4aW50LgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5fZmlsZSA9IGZpbGVf
Ci0gICAgICAgIHNlbGYuX21lbW9yaXplZF9saW5lcyA9IFtdCi0gICAgICAgIHNlbGYuX21heF9t
ZW1vcml6ZWRfbGluZXMgPSBtYXhfbWVtb3JpemVkX2xpbmVzCi0gICAgICAgIHNlbGYuX2J1ZmZl
cmVkID0gRmFsc2UKLSAgICAgICAgc2VsZi5fYnVmZmVyZWRfbGluZSA9IE5vbmUKLQotICAgIGRl
ZiBfX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpOgotICAgICAgICAiIiJSZXR1cm4gYSBmaWxl
IGF0dHJpYnV0ZS4KLQotICAgICAgICBSZXR1cm5zIHRoZSB2YWx1ZSBvdmVycmlkZGVuIGJ5IHRo
aXMgY2xhc3MgZm9yIHNvbWUgYXR0cmlidXRlcywKLSAgICAgICAgYW5kIGZvcndhcmRzIHRoZSBj
YWxsIHRvIF9maWxlIGZvciB0aGUgb3RoZXIgYXR0cmlidXRlcy4KLSAgICAgICAgIiIiCi0gICAg
ICAgIGlmIG5hbWUgaW4gKCdfZmlsZScsICdfbWVtb3JpemVkX2xpbmVzJywgJ19tYXhfbWVtb3Jp
emVkX2xpbmVzJywKLSAgICAgICAgICAgICAgICAgICAgJ19idWZmZXJlZCcsICdfYnVmZmVyZWRf
bGluZScsICdyZWFkbGluZScsCi0gICAgICAgICAgICAgICAgICAgICdnZXRfbWVtb3JpemVkX2xp
bmVzJyk6Ci0gICAgICAgICAgICByZXR1cm4gb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwg
bmFtZSkKLSAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGUuX19nZXRhdHRyaWJ1dGVfXyhuYW1lKQot
Ci0gICAgZGVmIHJlYWRsaW5lKHNlbGYsIHNpemU9LTEpOgotICAgICAgICAiIiJPdmVycmlkZSBm
aWxlLnJlYWRsaW5lIGFuZCBtZW1vcml6ZSB0aGUgbGluZSByZWFkLgotCi0gICAgICAgIE5vdGUg
dGhhdCBldmVuIGlmIHNpemUgaXMgc3BlY2lmaWVkIGFuZCBzbWFsbGVyIHRoYW4gYWN0dWFsIHNp
emUsCi0gICAgICAgIHRoZSB3aG9sZSBsaW5lIHdpbGwgYmUgcmVhZCBvdXQgZnJvbSB1bmRlcmx5
aW5nIGZpbGUgb2JqZWN0IGJ5Ci0gICAgICAgIHN1YnNlcXVlbnQgcmVhZGxpbmUgY2FsbHMuCi0g
ICAgICAgICIiIgotICAgICAgICBpZiBzZWxmLl9idWZmZXJlZDoKLSAgICAgICAgICAgIGxpbmUg
PSBzZWxmLl9idWZmZXJlZF9saW5lCi0gICAgICAgICAgICBzZWxmLl9idWZmZXJlZCA9IEZhbHNl
Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBsaW5lID0gc2VsZi5fZmlsZS5yZWFkbGluZSgp
Ci0gICAgICAgICAgICBpZiBsaW5lIGFuZCBsZW4oc2VsZi5fbWVtb3JpemVkX2xpbmVzKSA8IHNl
bGYuX21heF9tZW1vcml6ZWRfbGluZXM6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbWVtb3JpemVk
X2xpbmVzLmFwcGVuZChsaW5lKQotICAgICAgICBpZiBzaXplID49IDAgYW5kIHNpemUgPCBsZW4o
bGluZSk6Ci0gICAgICAgICAgICBzZWxmLl9idWZmZXJlZCA9IFRydWUKLSAgICAgICAgICAgIHNl
bGYuX2J1ZmZlcmVkX2xpbmUgPSBsaW5lW3NpemU6XQotICAgICAgICAgICAgcmV0dXJuIGxpbmVb
OnNpemVdCi0gICAgICAgIHJldHVybiBsaW5lCi0KLSAgICBkZWYgZ2V0X21lbW9yaXplZF9saW5l
cyhzZWxmKToKLSAgICAgICAgIiIiR2V0IGxpbmVzIG1lbW9yaXplZCBzbyBmYXIuIiIiCi0gICAg
ICAgIHJldHVybiBzZWxmLl9tZW1vcml6ZWRfbGluZXMKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L21zZ3V0aWwucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9w
eXdlYnNvY2tldC9tc2d1dGlsLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYzZj
NWIxZGJjZTk3ZDcyZjI2Y2I3N2NkYjdmODQ2NzQxYjFiYjNjLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L21zZ3V0aWwu
cHkKKysrIC9kZXYvbnVsbApAQCAtMSwyMTkgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAxMSwgR29v
Z2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
IyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQot
IiIiTWVzc2FnZSByZWxhdGVkIHV0aWxpdGllcy4KLQotTm90ZTogcmVxdWVzdC5jb25uZWN0aW9u
LndyaXRlL3JlYWQgYXJlIHVzZWQgaW4gdGhpcyBtb2R1bGUsIGV2ZW4gdGhvdWdoCi1tb2RfcHl0
aG9uIGRvY3VtZW50IHNheXMgdGhhdCB0aGV5IHNob3VsZCBiZSB1c2VkIG9ubHkgaW4gY29ubmVj
dGlvbgotaGFuZGxlcnMuIFVuZm9ydHVuYXRlbHksIHdlIGhhdmUgbm8gb3RoZXIgb3B0aW9ucy4g
Rm9yIGV4YW1wbGUsCi1yZXF1ZXN0LndyaXRlL3JlYWQgYXJlIG5vdCBzdWl0YWJsZSBiZWNhdXNl
IHRoZXkgZG9uJ3QgYWxsb3cgZGlyZWN0IHJhdwotYnl0ZXMgd3JpdGluZy9yZWFkaW5nLgotIiIi
Ci0KLQotZnJvbSBzaXgubW92ZXMgaW1wb3J0IHF1ZXVlCi1pbXBvcnQgdGhyZWFkaW5nCi0KLQot
IyBFeHBvcnQgRXhjZXB0aW9uIHN5bWJvbHMgZnJvbSBtc2d1dGlsIGZvciBiYWNrd2FyZCBjb21w
YXRpYmlsaXR5Ci1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2Jhc2UgaW1wb3J0IENvbm5l
Y3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2Jh
c2UgaW1wb3J0IEludmFsaWRGcmFtZUV4Y2VwdGlvbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0
cmVhbV9iYXNlIGltcG9ydCBCYWRPcGVyYXRpb25FeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29j
a2V0Ll9zdHJlYW1fYmFzZSBpbXBvcnQgVW5zdXBwb3J0ZWRGcmFtZUV4Y2VwdGlvbgotCi0KLSMg
QW4gQVBJIGZvciBoYW5kbGVyIHRvIHNlbmQvcmVjZWl2ZSBXZWJTb2NrZXQgbWVzc2FnZXMuCi1k
ZWYgY2xvc2VfY29ubmVjdGlvbihyZXF1ZXN0KToKLSAgICAiIiJDbG9zZSBjb25uZWN0aW9uLgot
Ci0gICAgQXJnczoKLSAgICAgICAgcmVxdWVzdDogbW9kX3B5dGhvbiByZXF1ZXN0LgotICAgICIi
IgotICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oKQotCi0KLWRlZiBzZW5k
X21lc3NhZ2UocmVxdWVzdCwgcGF5bG9hZF9kYXRhLCBlbmQ9VHJ1ZSwgYmluYXJ5PUZhbHNlKToK
LSAgICAiIiJTZW5kIGEgbWVzc2FnZSAob3IgcGFydCBvZiBhIG1lc3NhZ2UpLgotCi0gICAgQXJn
czoKLSAgICAgICAgcmVxdWVzdDogbW9kX3B5dGhvbiByZXF1ZXN0LgotICAgICAgICBwYXlsb2Fk
X2RhdGE6IHVuaWNvZGUgdGV4dCBvciBzdHIgYmluYXJ5IHRvIHNlbmQuCi0gICAgICAgIGVuZDog
VHJ1ZSB0byB0ZXJtaW5hdGUgYSBtZXNzYWdlLgotICAgICAgICAgICAgIEZhbHNlIHRvIHNlbmQg
cGF5bG9hZF9kYXRhIGFzIHBhcnQgb2YgYSBtZXNzYWdlIHRoYXQgaXMgdG8gYmUKLSAgICAgICAg
ICAgICB0ZXJtaW5hdGVkIGJ5IG5leHQgb3IgbGF0ZXIgc2VuZF9tZXNzYWdlIGNhbGwgd2l0aCBl
bmQ9VHJ1ZS4KLSAgICAgICAgYmluYXJ5OiBzZW5kIHBheWxvYWRfZGF0YSBhcyBiaW5hcnkgZnJh
bWUocykuCi0gICAgUmFpc2VzOgotICAgICAgICBCYWRPcGVyYXRpb25FeGNlcHRpb246IHdoZW4g
c2VydmVyIGFscmVhZHkgdGVybWluYXRlZC4KLSAgICAiIiIKLSAgICByZXF1ZXN0LndzX3N0cmVh
bS5zZW5kX21lc3NhZ2UocGF5bG9hZF9kYXRhLCBlbmQsIGJpbmFyeSkKLQotCi1kZWYgcmVjZWl2
ZV9tZXNzYWdlKHJlcXVlc3QpOgotICAgICIiIlJlY2VpdmUgYSBXZWJTb2NrZXQgZnJhbWUgYW5k
IHJldHVybiBpdHMgcGF5bG9hZCBhcyBhIHRleHQgaW4KLSAgICB1bmljb2RlIG9yIGEgYmluYXJ5
IGluIHN0ci4KLQotICAgIEFyZ3M6Ci0gICAgICAgIHJlcXVlc3Q6IG1vZF9weXRob24gcmVxdWVz
dC4KLSAgICBSYWlzZXM6Ci0gICAgICAgIEludmFsaWRGcmFtZUV4Y2VwdGlvbjogICAgIHdoZW4g
Y2xpZW50IHNlbmQgaW52YWxpZCBmcmFtZS4KLSAgICAgICAgVW5zdXBwb3J0ZWRGcmFtZUV4Y2Vw
dGlvbjogd2hlbiBjbGllbnQgc2VuZCB1bnN1cHBvcnRlZCBmcmFtZSBlLmcuIHNvbWUKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgcmVzZXJ2ZWQgYml0IGlzIHNldCBidXQg
bm8gZXh0ZW5zaW9uIGNhbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNv
Z25pemUgaXQuCi0gICAgICAgIEludmFsaWRVVEY4RXhjZXB0aW9uOiAgICAgIHdoZW4gY2xpZW50
IHNlbmQgYSB0ZXh0IGZyYW1lIGNvbnRhaW5pbmcgYW55Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludmFsaWQgVVRGLTggc3RyaW5nLgotICAgICAgICBDb25uZWN0aW9uVGVy
bWluYXRlZEV4Y2VwdGlvbjogd2hlbiB0aGUgY29ubmVjdGlvbiBpcyBjbG9zZWQKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5leHBlY3RlZGx5LgotICAgICAgICBCYWRPcGVy
YXRpb25FeGNlcHRpb246ICAgICB3aGVuIGNsaWVudCBhbHJlYWR5IHRlcm1pbmF0ZWQuCi0gICAg
IiIiCi0gICAgcmV0dXJuIHJlcXVlc3Qud3Nfc3RyZWFtLnJlY2VpdmVfbWVzc2FnZSgpCi0KLQot
ZGVmIHNlbmRfcGluZyhyZXF1ZXN0LCBib2R5PScnKToKLSAgICByZXF1ZXN0LndzX3N0cmVhbS5z
ZW5kX3BpbmcoYm9keSkKLQotCi1jbGFzcyBNZXNzYWdlUmVjZWl2ZXIodGhyZWFkaW5nLlRocmVh
ZCk6Ci0gICAgIiIiVGhpcyBjbGFzcyByZWNlaXZlcyBtZXNzYWdlcyBmcm9tIHRoZSBjbGllbnQu
Ci0KLSAgICBUaGlzIGNsYXNzIHByb3ZpZGVzIHRocmVlIHdheXMgdG8gcmVjZWl2ZSBtZXNzYWdl
czogYmxvY2tpbmcsCi0gICAgbm9uLWJsb2NraW5nLCBhbmQgdmlhIGNhbGxiYWNrLiBDYWxsYmFj
ayBoYXMgdGhlIGhpZ2hlc3QgcHJlY2VkZW5jZS4KLQotICAgIE5vdGU6IFRoaXMgY2xhc3Mgc2hv
dWxkIG5vdCBiZSB1c2VkIHdpdGggdGhlIHN0YW5kYWxvbmUgc2VydmVyIGZvciB3c3MKLSAgICBi
ZWNhdXNlIHB5T3BlblNTTCB1c2VkIGJ5IHRoZSBzZXJ2ZXIgcmFpc2VzIGEgZmF0YWwgZXJyb3Ig
aWYgdGhlIHNvY2tldAotICAgIGlzIGFjY2Vzc2VkIGZyb20gbXVsdGlwbGUgdGhyZWFkcy4KLSAg
ICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0LCBvbm1lc3NhZ2U9Tm9uZSk6
Ci0gICAgICAgICIiIkNvbnN0cnVjdCBhbiBpbnN0YW5jZS4KLQotICAgICAgICBBcmdzOgotICAg
ICAgICAgICAgcmVxdWVzdDogbW9kX3B5dGhvbiByZXF1ZXN0LgotICAgICAgICAgICAgb25tZXNz
YWdlOiBhIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIGEgbWVzc2FnZSBpcyByZWNlaXZlZC4K
LSAgICAgICAgICAgICAgICAgICAgICAgTWF5IGJlIE5vbmUuIElmIG5vdCBOb25lLCB0aGUgZnVu
Y3Rpb24gaXMgY2FsbGVkIG9uCi0gICAgICAgICAgICAgICAgICAgICAgIGFub3RoZXIgdGhyZWFk
LiBJbiB0aGF0IGNhc2UsIE1lc3NhZ2VSZWNlaXZlci5yZWNlaXZlCi0gICAgICAgICAgICAgICAg
ICAgICAgIGFuZCBNZXNzYWdlUmVjZWl2ZXIucmVjZWl2ZV9ub3dhaXQgYXJlIHVzZWxlc3MKLSAg
ICAgICAgICAgICAgICAgICAgICAgYmVjYXVzZSB0aGV5IHdpbGwgbmV2ZXIgcmV0dXJuIGFueSBt
ZXNzYWdlcy4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgdGhyZWFkaW5nLlRocmVhZC5fX2luaXRf
XyhzZWxmKQotICAgICAgICBzZWxmLl9yZXF1ZXN0ID0gcmVxdWVzdAotICAgICAgICBzZWxmLl9x
dWV1ZSA9IHF1ZXVlLlF1ZXVlKCkKLSAgICAgICAgc2VsZi5fb25tZXNzYWdlID0gb25tZXNzYWdl
Ci0gICAgICAgIHNlbGYuX3N0b3BfcmVxdWVzdGVkID0gRmFsc2UKLSAgICAgICAgc2VsZi5zZXRE
YWVtb24oVHJ1ZSkKLSAgICAgICAgc2VsZi5zdGFydCgpCi0KLSAgICBkZWYgcnVuKHNlbGYpOgot
ICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aGlsZSBub3Qgc2VsZi5fc3RvcF9yZXF1ZXN0ZWQ6
Ci0gICAgICAgICAgICAgICAgbWVzc2FnZSA9IHJlY2VpdmVfbWVzc2FnZShzZWxmLl9yZXF1ZXN0
KQotICAgICAgICAgICAgICAgIGlmIHNlbGYuX29ubWVzc2FnZToKLSAgICAgICAgICAgICAgICAg
ICAgc2VsZi5fb25tZXNzYWdlKG1lc3NhZ2UpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fcXVldWUucHV0KG1lc3NhZ2UpCi0gICAgICAgIGZpbmFsbHk6
Ci0gICAgICAgICAgICBjbG9zZV9jb25uZWN0aW9uKHNlbGYuX3JlcXVlc3QpCi0KLSAgICBkZWYg
cmVjZWl2ZShzZWxmKToKLSAgICAgICAgIiIiIFJlY2VpdmUgYSBtZXNzYWdlIGZyb20gdGhlIGNo
YW5uZWwsIGJsb2NraW5nLgotCi0gICAgICAgIFJldHVybnM6Ci0gICAgICAgICAgICBtZXNzYWdl
IGFzIGEgdW5pY29kZSBzdHJpbmcuCi0gICAgICAgICIiIgotICAgICAgICByZXR1cm4gc2VsZi5f
cXVldWUuZ2V0KCkKLQotICAgIGRlZiByZWNlaXZlX25vd2FpdChzZWxmKToKLSAgICAgICAgIiIi
IFJlY2VpdmUgYSBtZXNzYWdlIGZyb20gdGhlIGNoYW5uZWwsIG5vbi1ibG9ja2luZy4KLQotICAg
ICAgICBSZXR1cm5zOgotICAgICAgICAgICAgbWVzc2FnZSBhcyBhIHVuaWNvZGUgc3RyaW5nIGlm
IGF2YWlsYWJsZS4gTm9uZSBvdGhlcndpc2UuCi0gICAgICAgICIiIgotICAgICAgICB0cnk6Ci0g
ICAgICAgICAgICBtZXNzYWdlID0gc2VsZi5fcXVldWUuZ2V0X25vd2FpdCgpCi0gICAgICAgIGV4
Y2VwdCBxdWV1ZS5FbXB0eToKLSAgICAgICAgICAgIG1lc3NhZ2UgPSBOb25lCi0gICAgICAgIHJl
dHVybiBtZXNzYWdlCi0KLSAgICBkZWYgc3RvcChzZWxmKToKLSAgICAgICAgIiIiUmVxdWVzdCB0
byBzdG9wIHRoaXMgaW5zdGFuY2UuCi0KLSAgICAgICAgVGhlIGluc3RhbmNlIHdpbGwgYmUgc3Rv
cHBlZCBhZnRlciByZWNlaXZpbmcgdGhlIG5leHQgbWVzc2FnZS4KLSAgICAgICAgVGhpcyBtZXRo
b2QgbWF5IG5vdCBiZSB2ZXJ5IHVzZWZ1bCwgYnV0IHRoZXJlIGlzIG5vIGNsZWFuIHdheQotICAg
ICAgICBpbiBQeXRob24gdG8gZm9yY2VmdWxseSBzdG9wIGEgcnVubmluZyB0aHJlYWQuCi0gICAg
ICAgICIiIgotICAgICAgICBzZWxmLl9zdG9wX3JlcXVlc3RlZCA9IFRydWUKLQotCi1jbGFzcyBN
ZXNzYWdlU2VuZGVyKHRocmVhZGluZy5UaHJlYWQpOgotICAgICIiIlRoaXMgY2xhc3Mgc2VuZHMg
bWVzc2FnZXMgdG8gdGhlIGNsaWVudC4KLQotICAgIFRoaXMgY2xhc3MgcHJvdmlkZXMgYm90aCBz
eW5jaHJvbm91cyBhbmQgYXN5bmNocm9ub3VzIHdheXMgdG8gc2VuZAotICAgIG1lc3NhZ2VzLgot
Ci0gICAgTm90ZTogVGhpcyBjbGFzcyBzaG91bGQgbm90IGJlIHVzZWQgd2l0aCB0aGUgc3RhbmRh
bG9uZSBzZXJ2ZXIgZm9yIHdzcwotICAgIGJlY2F1c2UgcHlPcGVuU1NMIHVzZWQgYnkgdGhlIHNl
cnZlciByYWlzZXMgYSBmYXRhbCBlcnJvciBpZiB0aGUgc29ja2V0Ci0gICAgaXMgYWNjZXNzZWQg
ZnJvbSBtdWx0aXBsZSB0aHJlYWRzLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYs
IHJlcXVlc3QpOgotICAgICAgICAiIiJDb25zdHJ1Y3QgYW4gaW5zdGFuY2UuCi0KLSAgICAgICAg
QXJnczoKLSAgICAgICAgICAgIHJlcXVlc3Q6IG1vZF9weXRob24gcmVxdWVzdC4KLSAgICAgICAg
IiIiCi0gICAgICAgIHRocmVhZGluZy5UaHJlYWQuX19pbml0X18oc2VsZikKLSAgICAgICAgc2Vs
Zi5fcmVxdWVzdCA9IHJlcXVlc3QKLSAgICAgICAgc2VsZi5fcXVldWUgPSBxdWV1ZS5RdWV1ZSgp
Ci0gICAgICAgIHNlbGYuc2V0RGFlbW9uKFRydWUpCi0gICAgICAgIHNlbGYuc3RhcnQoKQotCi0g
ICAgZGVmIHJ1bihzZWxmKToKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIG1lc3Nh
Z2UsIGNvbmRpdGlvbiA9IHNlbGYuX3F1ZXVlLmdldCgpCi0gICAgICAgICAgICBjb25kaXRpb24u
YWNxdWlyZSgpCi0gICAgICAgICAgICBzZW5kX21lc3NhZ2Uoc2VsZi5fcmVxdWVzdCwgbWVzc2Fn
ZSkKLSAgICAgICAgICAgIGNvbmRpdGlvbi5ub3RpZnkoKQotICAgICAgICAgICAgY29uZGl0aW9u
LnJlbGVhc2UoKQotCi0gICAgZGVmIHNlbmQoc2VsZiwgbWVzc2FnZSk6Ci0gICAgICAgICIiIlNl
bmQgYSBtZXNzYWdlLCBibG9ja2luZy4iIiIKLQotICAgICAgICBjb25kaXRpb24gPSB0aHJlYWRp
bmcuQ29uZGl0aW9uKCkKLSAgICAgICAgY29uZGl0aW9uLmFjcXVpcmUoKQotICAgICAgICBzZWxm
Ll9xdWV1ZS5wdXQoKG1lc3NhZ2UsIGNvbmRpdGlvbikpCi0gICAgICAgIGNvbmRpdGlvbi53YWl0
KCkKLQotICAgIGRlZiBzZW5kX25vd2FpdChzZWxmLCBtZXNzYWdlKToKLSAgICAgICAgIiIiU2Vu
ZCBhIG1lc3NhZ2UsIG5vbi1ibG9ja2luZy4iIiIKLQotICAgICAgICBzZWxmLl9xdWV1ZS5wdXQo
KG1lc3NhZ2UsIHRocmVhZGluZy5Db25kaXRpb24oKSkpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9tdXgucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdl
YnNvY2tldC9tdXgucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5NGY4YTE0NjQ1
YzU0YjY3NGI4MTQ1ODM2NzMxOWI2NjAzMDQ0N2QuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvbXV4LnB5CisrKyAvZGV2
L251bGwKQEAgLTEsMTg4NSArMCwwIEBACi0jIENvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgot
IyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
IyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJUaGlzIGZp
bGUgcHJvdmlkZXMgY2xhc3NlcyBhbmQgaGVscGVyIGZ1bmN0aW9ucyBmb3IgbXVsdGlwbGV4aW5n
IGV4dGVuc2lvbi4KLQotU3BlY2lmaWNhdGlvbjoKLWh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1s
L2RyYWZ0LWlldGYtaHliaS13ZWJzb2NrZXQtbXVsdGlwbGV4aW5nLTA2Ci0iIiIKLQotCi1pbXBv
cnQgY29sbGVjdGlvbnMKLWltcG9ydCBjb3B5Ci1pbXBvcnQgZW1haWwKLWltcG9ydCBlbWFpbC5w
YXJzZXIKLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgbWF0aAotaW1wb3J0IHN0cnVjdAotaW1wb3J0
IHRocmVhZGluZwotaW1wb3J0IHRyYWNlYmFjawotCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBv
cnQgY29tbW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgaGFuZHNoYWtlCi1mcm9tIG1v
ZF9weXdlYnNvY2tldCBpbXBvcnQgdXRpbAotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9i
YXNlIGltcG9ydCBCYWRPcGVyYXRpb25FeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9z
dHJlYW1fYmFzZSBpbXBvcnQgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24KLWZyb20gbW9k
X3B5d2Vic29ja2V0Ll9zdHJlYW1fYmFzZSBpbXBvcnQgSW52YWxpZEZyYW1lRXhjZXB0aW9uCi1m
cm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0IEZyYW1lCi1mcm9tIG1vZF9w
eXdlYnNvY2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0IFN0cmVhbQotZnJvbSBtb2RfcHl3ZWJzb2Nr
ZXQuX3N0cmVhbV9oeWJpIGltcG9ydCBTdHJlYW1PcHRpb25zCi1mcm9tIG1vZF9weXdlYnNvY2tl
dC5fc3RyZWFtX2h5YmkgaW1wb3J0IGNyZWF0ZV9iaW5hcnlfZnJhbWUKLWZyb20gbW9kX3B5d2Vi
c29ja2V0Ll9zdHJlYW1faHliaSBpbXBvcnQgY3JlYXRlX2Nsb3NpbmdfaGFuZHNoYWtlX2JvZHkK
LWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1faHliaSBpbXBvcnQgY3JlYXRlX2hlYWRlcgot
ZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9oeWJpIGltcG9ydCBjcmVhdGVfbGVuZ3RoX2hl
YWRlcgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9oeWJpIGltcG9ydCBwYXJzZV9mcmFt
ZQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlIGltcG9ydCBoeWJpCi0KLQotX0NPTlRS
T0xfQ0hBTk5FTF9JRCA9IDAKLV9ERUZBVUxUX0NIQU5ORUxfSUQgPSAxCi0KLV9NVVhfT1BDT0RF
X0FERF9DSEFOTkVMX1JFUVVFU1QgPSAwCi1fTVVYX09QQ09ERV9BRERfQ0hBTk5FTF9SRVNQT05T
RSA9IDEKLV9NVVhfT1BDT0RFX0ZMT1dfQ09OVFJPTCA9IDIKLV9NVVhfT1BDT0RFX0RST1BfQ0hB
Tk5FTCA9IDMKLV9NVVhfT1BDT0RFX05FV19DSEFOTkVMX1NMT1QgPSA0Ci0KLV9NQVhfQ0hBTk5F
TF9JRCA9IDIgKiogMjkgLSAxCi0KLV9JTklUSUFMX05VTUJFUl9PRl9DSEFOTkVMX1NMT1RTID0g
NjQKLV9JTklUSUFMX1FVT1RBX0ZPUl9DTElFTlQgPSA4ICogMTAyNAotCi1fSEFORFNIQUtFX0VO
Q09ESU5HX0lERU5USVRZID0gMAotX0hBTkRTSEFLRV9FTkNPRElOR19ERUxUQSA9IDEKLQotIyBX
ZSBuZWVkIG9ubHkgdGhlc2Ugc3RhdHVzIGNvZGUgZm9yIG5vdy4KLV9IVFRQX0JBRF9SRVNQT05T
RV9NRVNTQUdFUyA9IHsKLSAgICBjb21tb24uSFRUUF9TVEFUVVNfQkFEX1JFUVVFU1Q6ICdCYWQg
UmVxdWVzdCcsCi19Ci0KLSMgRHJvcENoYW5uZWwgcmVhc29uIGNvZGUKLSMgVE9ETyhiYXNoaSk6
IERlZmluZSBhbGwgcmVhc29uIGNvZGUgZGVmaW5lZCBpbiAtMDUgZHJhZnQuCi1fRFJPUF9DT0RF
X05PUk1BTF9DTE9TVVJFID0gMTAwMAotCi1fRFJPUF9DT0RFX0lOVkFMSURfRU5DQVBTVUxBVElO
R19NRVNTQUdFID0gMjAwMQotX0RST1BfQ09ERV9DSEFOTkVMX0lEX1RSVU5DQVRFRCA9IDIwMDIK
LV9EUk9QX0NPREVfRU5DQVBTVUxBVEVEX0ZSQU1FX0lTX1RSVU5DQVRFRCA9IDIwMDMKLV9EUk9Q
X0NPREVfVU5LTk9XTl9NVVhfT1BDT0RFID0gMjAwNAotX0RST1BfQ09ERV9JTlZBTElEX01VWF9D
T05UUk9MX0JMT0NLID0gMjAwNQotX0RST1BfQ09ERV9DSEFOTkVMX0FMUkVBRFlfRVhJU1RTID0g
MjAwNgotX0RST1BfQ09ERV9ORVdfQ0hBTk5FTF9TTE9UX1ZJT0xBVElPTiA9IDIwMDcKLV9EUk9Q
X0NPREVfVU5LTk9XTl9SRVFVRVNUX0VOQ09ESU5HID0gMjAxMAotCi1fRFJPUF9DT0RFX1NFTkRf
UVVPVEFfVklPTEFUSU9OID0gMzAwNQotX0RST1BfQ09ERV9TRU5EX1FVT1RBX09WRVJGTE9XID0g
MzAwNgotX0RST1BfQ09ERV9BQ0tOT1dMRURHRUQgPSAzMDA4Ci1fRFJPUF9DT0RFX0JBRF9GUkFH
TUVOVEFUSU9OID0gMzAwOQotCi0KLWNsYXNzIE11eFVuZXhwZWN0ZWRFeGNlcHRpb24oRXhjZXB0
aW9uKToKLQotICAgICIiIkV4Y2VwdGlvbiBpbiBoYW5kbGluZyBtdWx0aXBsZXhpbmcgZXh0ZW5z
aW9uLiIiIgotCi0gICAgcGFzcwotCi0KLSMgVGVtcG9yYXJ5Ci1jbGFzcyBNdXhOb3RJbXBsZW1l
bnRlZEV4Y2VwdGlvbihFeGNlcHRpb24pOgotCi0gICAgIiIiUmFpc2VkIHdoZW4gYSBmbG93IGVu
dGVycyB1bmltcGxlbWVudGVkIGNvZGUgcGF0aC4iIiIKLQotICAgIHBhc3MKLQotCi1jbGFzcyBM
b2dpY2FsQ29ubmVjdGlvbkNsb3NlZEV4Y2VwdGlvbihFeGNlcHRpb24pOgotCi0gICAgIiIiUmFp
c2VkIHdoZW4gbG9naWNhbCBjb25uZWN0aW9uIGlzIGdyYWNlZnVsbHkgY2xvc2VkLiIiIgotCi0g
ICAgcGFzcwotCi0KLWNsYXNzIFBoeXNpY2FsQ29ubmVjdGlvbkVycm9yKEV4Y2VwdGlvbik6Ci0K
LSAgICAiIiJSYWlzZWQgd2hlbiB0aGVyZSBpcyBhIHBoeXNpY2FsIGNvbm5lY3Rpb24gZXJyb3Iu
IiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgZHJvcF9jb2RlLCBtZXNzYWdlPScnKToKLSAg
ICAgICAgc3VwZXIoUGh5c2ljYWxDb25uZWN0aW9uRXJyb3IsIHNlbGYpLl9faW5pdF9fKAotICAg
ICAgICAgICAgJ2NvZGU9JWQsIG1lc3NhZ2U9JXInICUgKGRyb3BfY29kZSwgbWVzc2FnZSkpCi0g
ICAgICAgIHNlbGYuZHJvcF9jb2RlID0gZHJvcF9jb2RlCi0gICAgICAgIHNlbGYubWVzc2FnZSA9
IG1lc3NhZ2UKLQotCi1jbGFzcyBMb2dpY2FsQ2hhbm5lbEVycm9yKEV4Y2VwdGlvbik6Ci0KLSAg
ICAiIiJSYWlzZWQgd2hlbiB0aGVyZSBpcyBhIGxvZ2ljYWwgY2hhbm5lbCBlcnJvci4iIiIKLQot
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjaGFubmVsX2lkLCBkcm9wX2NvZGUsIG1lc3NhZ2U9Jycp
OgotICAgICAgICAiIiJJbml0aWFsaXplIHRoZSBlcnJvciB3aXRoIGEgc3RhdHVzIG1lc3NhZ2Uu
IiIiCi0gICAgICAgIHN1cGVyKExvZ2ljYWxDaGFubmVsRXJyb3IsIHNlbGYpLl9faW5pdF9fKAot
ICAgICAgICAgICAgJ2NoYW5uZWxfaWQ9JWQsIGNvZGU9JWQsIG1lc3NhZ2U9JXInICUgKAotICAg
ICAgICAgICAgICAgIGNoYW5uZWxfaWQsIGRyb3BfY29kZSwgbWVzc2FnZSkpCi0gICAgICAgIHNl
bGYuY2hhbm5lbF9pZCA9IGNoYW5uZWxfaWQKLSAgICAgICAgc2VsZi5kcm9wX2NvZGUgPSBkcm9w
X2NvZGUKLSAgICAgICAgc2VsZi5tZXNzYWdlID0gbWVzc2FnZQotCi0KLWRlZiBfZW5jb2RlX2No
YW5uZWxfaWQoY2hhbm5lbF9pZCk6Ci0gICAgaWYgY2hhbm5lbF9pZCA8IDA6Ci0gICAgICAgIHJh
aXNlIFZhbHVlRXJyb3IoJ0NoYW5uZWwgaWQgJWQgbXVzdCBub3QgYmUgbmVnYXRpdmUnICUgY2hh
bm5lbF9pZCkKLQotICAgIGlmIGNoYW5uZWxfaWQgPCAyICoqIDc6Ci0gICAgICAgIHJldHVybiBj
aHIoY2hhbm5lbF9pZCkKLSAgICBpZiBjaGFubmVsX2lkIDwgMiAqKiAxNDoKLSAgICAgICAgcmV0
dXJuIHN0cnVjdC5wYWNrKCchSCcsIDB4ODAwMCArIGNoYW5uZWxfaWQpCi0gICAgaWYgY2hhbm5l
bF9pZCA8IDIgKiogMjE6Ci0gICAgICAgIGZpcnN0ID0gY2hyKDB4YzAgKyAoY2hhbm5lbF9pZCA+
PiAxNikpCi0gICAgICAgIHJldHVybiBmaXJzdCArIHN0cnVjdC5wYWNrKCchSCcsIGNoYW5uZWxf
aWQgJiAweGZmZmYpCi0gICAgaWYgY2hhbm5lbF9pZCA8IDIgKiogMjk6Ci0gICAgICAgIHJldHVy
biBzdHJ1Y3QucGFjaygnIUwnLCAweGUwMDAwMDAwICsgY2hhbm5lbF9pZCkKLQotICAgIHJhaXNl
IFZhbHVlRXJyb3IoJ0NoYW5uZWwgaWQgJWQgaXMgdG9vIGxhcmdlJyAlIGNoYW5uZWxfaWQpCi0K
LQotZGVmIF9lbmNvZGVfbnVtYmVyKG51bWJlcik6Ci0gICAgcmV0dXJuIGNyZWF0ZV9sZW5ndGhf
aGVhZGVyKG51bWJlciwgRmFsc2UpCi0KLQotZGVmIF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVzcG9u
c2UoY2hhbm5lbF9pZCwgZW5jb2RlZF9oYW5kc2hha2UsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlbmNvZGluZz0wLCByZWplY3RlZD1GYWxzZSk6Ci0gICAgaWYgZW5jb2Rpbmcg
IT0gMCBhbmQgZW5jb2RpbmcgIT0gMToKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW52YWxp
ZCBlbmNvZGluZyAlZCcgJSBlbmNvZGluZykKLQotICAgIGZpcnN0X2J5dGUgPSAoKF9NVVhfT1BD
T0RFX0FERF9DSEFOTkVMX1JFU1BPTlNFIDw8IDUpIHwKLSAgICAgICAgICAgICAgICAgIChyZWpl
Y3RlZCA8PCA0KSB8IGVuY29kaW5nKQotICAgIGJsb2NrID0gKGNocihmaXJzdF9ieXRlKSArCi0g
ICAgICAgICAgICAgX2VuY29kZV9jaGFubmVsX2lkKGNoYW5uZWxfaWQpICsKLSAgICAgICAgICAg
ICBfZW5jb2RlX251bWJlcihsZW4oZW5jb2RlZF9oYW5kc2hha2UpKSArCi0gICAgICAgICAgICAg
ZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgcmV0dXJuIGJsb2NrCi0KLQotZGVmIF9jcmVhdGVfZHJv
cF9jaGFubmVsKGNoYW5uZWxfaWQsIGNvZGU9Tm9uZSwgbWVzc2FnZT0nJyk6Ci0gICAgaWYgbGVu
KG1lc3NhZ2UpID4gMCBhbmQgY29kZSBpcyBOb25lOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9y
KCdDb2RlIG11c3QgYmUgc3BlY2lmaWVkIGlmIG1lc3NhZ2UgaXMgc3BlY2lmaWVkJykKLQotICAg
IGZpcnN0X2J5dGUgPSBfTVVYX09QQ09ERV9EUk9QX0NIQU5ORUwgPDwgNQotICAgIGJsb2NrID0g
Y2hyKGZpcnN0X2J5dGUpICsgX2VuY29kZV9jaGFubmVsX2lkKGNoYW5uZWxfaWQpCi0gICAgaWYg
Y29kZSBpcyBOb25lOgotICAgICAgICBibG9jayArPSBfZW5jb2RlX251bWJlcigwKSAgIyBSZWFz
b24gc2l6ZQotICAgIGVsc2U6Ci0gICAgICAgIHJlYXNvbiA9IHN0cnVjdC5wYWNrKCchSCcsIGNv
ZGUpICsgbWVzc2FnZQotICAgICAgICByZWFzb25fc2l6ZSA9IF9lbmNvZGVfbnVtYmVyKGxlbihy
ZWFzb24pKQotICAgICAgICBibG9jayArPSByZWFzb25fc2l6ZSArIHJlYXNvbgotCi0gICAgcmV0
dXJuIGJsb2NrCi0KLQotZGVmIF9jcmVhdGVfZmxvd19jb250cm9sKGNoYW5uZWxfaWQsIHJlcGxl
bmlzaGVkX3F1b3RhKToKLSAgICBmaXJzdF9ieXRlID0gX01VWF9PUENPREVfRkxPV19DT05UUk9M
IDw8IDUKLSAgICBibG9jayA9IChjaHIoZmlyc3RfYnl0ZSkgKwotICAgICAgICAgICAgIF9lbmNv
ZGVfY2hhbm5lbF9pZChjaGFubmVsX2lkKSArCi0gICAgICAgICAgICAgX2VuY29kZV9udW1iZXIo
cmVwbGVuaXNoZWRfcXVvdGEpKQotICAgIHJldHVybiBibG9jawotCi0KLWRlZiBfY3JlYXRlX25l
d19jaGFubmVsX3Nsb3Qoc2xvdHMsIHNlbmRfcXVvdGEpOgotICAgIGlmIHNsb3RzIDwgMCBvciBz
ZW5kX3F1b3RhIDwgMDoKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignc2xvdHMgYW5kIHNlbmRf
cXVvdGEgbXVzdCBiZSBub24tbmVnYXRpdmUuJykKLSAgICBmaXJzdF9ieXRlID0gX01VWF9PUENP
REVfTkVXX0NIQU5ORUxfU0xPVCA8PCA1Ci0gICAgYmxvY2sgPSAoY2hyKGZpcnN0X2J5dGUpICsK
LSAgICAgICAgICAgICBfZW5jb2RlX251bWJlcihzbG90cykgKwotICAgICAgICAgICAgIF9lbmNv
ZGVfbnVtYmVyKHNlbmRfcXVvdGEpKQotICAgIHJldHVybiBibG9jawotCi0KLWRlZiBfY3JlYXRl
X2ZhbGxiYWNrX25ld19jaGFubmVsX3Nsb3QoKToKLSAgICBmaXJzdF9ieXRlID0gKF9NVVhfT1BD
T0RFX05FV19DSEFOTkVMX1NMT1QgPDwgNSkgfCAxICAjIFNldCB0aGUgRiBmbGFnCi0gICAgYmxv
Y2sgPSAoY2hyKGZpcnN0X2J5dGUpICsgX2VuY29kZV9udW1iZXIoMCkgKyBfZW5jb2RlX251bWJl
cigwKSkKLSAgICByZXR1cm4gYmxvY2sKLQotCi1kZWYgX3BhcnNlX3JlcXVlc3RfdGV4dChyZXF1
ZXN0X3RleHQpOgotICAgIHJlcXVlc3RfbGluZSwgaGVhZGVyX2xpbmVzID0gcmVxdWVzdF90ZXh0
LnNwbGl0KCdcclxuJywgMSkKLQotICAgIHdvcmRzID0gcmVxdWVzdF9saW5lLnNwbGl0KCcgJykK
LSAgICBpZiBsZW4od29yZHMpICE9IDM6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0JhZCBS
ZXF1ZXN0LUxpbmUgc3ludGF4ICVyJyAlIHJlcXVlc3RfbGluZSkKLSAgICBbY29tbWFuZCwgcGF0
aCwgdmVyc2lvbl0gPSB3b3JkcwotICAgIGlmIHZlcnNpb24gIT0gJ0hUVFAvMS4xJzoKLSAgICAg
ICAgcmFpc2UgVmFsdWVFcnJvcignQmFkIHJlcXVlc3QgdmVyc2lvbiAlcicgJSB2ZXJzaW9uKQot
Ci0gICAgIyBlbWFpbC5wYXJzZXIuUGFyc2VyKCkgcGFyc2VzIFJGQyAyODIyIChSRkMgODIyKSBz
dHlsZSBoZWFkZXJzLgotICAgICMgUkZDIDY0NTUgcmVmZXJzIFJGQyAyNjE2IGZvciBoYW5kc2hh
a2UgcGFyc2luZywgYW5kIFJGQyAyNjE2IHJlZmVycwotICAgICMgUkZDIDgyMi4KLSAgICBoZWFk
ZXJzID0gZW1haWwucGFyc2VyLlBhcnNlcigpLnBhcnNlc3RyKGhlYWRlcl9saW5lcykKLSAgICBy
ZXR1cm4gY29tbWFuZCwgcGF0aCwgdmVyc2lvbiwgaGVhZGVycwotCi0KLWNsYXNzIF9Db250cm9s
QmxvY2sob2JqZWN0KToKLQotICAgICIiIkEgc3RydWN0dXJlIHRoYXQgaG9sZHMgcGFyc2luZyBy
ZXN1bHQgb2YgbXVsdGlwbGV4aW5nIGNvbnRyb2wgYmxvY2suCi0KLSAgICBDb250cm9sIGJsb2Nr
IHNwZWNpZmljIGF0dHJpYnV0ZXMgd2lsbCBiZSBhZGRlZCBieSBfTXV4RnJhbWVQYXlsb2FkUGFy
c2VyLgotICAgIChlLmcuIGVuY29kZWRfaGFuZHNoYWtlIHdpbGwgYmUgYWRkZWQgZm9yIEFkZENo
YW5uZWxSZXF1ZXN0IGFuZAotICAgIEFkZENoYW5uZWxSZXNwb25zZSkKLSAgICAiIiIKLQotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBvcGNvZGUpOgotICAgICAgICBzZWxmLm9wY29kZSA9IG9wY29k
ZQotCi0KLWNsYXNzIF9NdXhGcmFtZVBheWxvYWRQYXJzZXIob2JqZWN0KToKLQotICAgICIiIkEg
Y2xhc3MgdGhhdCBwYXJzZXMgbXVsdGlwbGV4ZWQgZnJhbWUgcGF5bG9hZC4iIiIKLQotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBwYXlsb2FkKToKLSAgICAgICAgc2VsZi5fZGF0YSA9IHBheWxvYWQK
LSAgICAgICAgc2VsZi5fcmVhZF9wb3NpdGlvbiA9IDAKLSAgICAgICAgc2VsZi5fbG9nZ2VyID0g
dXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICBkZWYgcmVhZF9jaGFubmVsX2lkKHNl
bGYpOgotICAgICAgICAiIiJSZWFkIGNoYW5uZWwgaWQuCi0KLSAgICAgICAgUmFpc2VzOgotICAg
ICAgICAgICAgVmFsdWVFcnJvcjogd2hlbiB0aGUgcGF5bG9hZCBkb2Vzbid0IGNvbnRhaW4KLSAg
ICAgICAgICAgICAgICB2YWxpZCBjaGFubmVsIGlkLgotICAgICAgICAiIiIKLSAgICAgICAgcmVt
YWluaW5nX2xlbmd0aCA9IGxlbihzZWxmLl9kYXRhKSAtIHNlbGYuX3JlYWRfcG9zaXRpb24KLSAg
ICAgICAgcG9zID0gc2VsZi5fcmVhZF9wb3NpdGlvbgotICAgICAgICBpZiByZW1haW5pbmdfbGVu
Z3RoID09IDA6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIGNoYW5uZWwg
aWQgZm9ybWF0JykKLQotICAgICAgICBjaGFubmVsX2lkID0gb3JkKHNlbGYuX2RhdGFbcG9zXSkK
LSAgICAgICAgY2hhbm5lbF9pZF9sZW5ndGggPSAxCi0gICAgICAgIGlmIGNoYW5uZWxfaWQgJiAw
eGUwID09IDB4ZTA6Ci0gICAgICAgICAgICBpZiByZW1haW5pbmdfbGVuZ3RoIDwgNDoKLSAgICAg
ICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIGNoYW5uZWwgaWQgZm9ybWF0JykK
LSAgICAgICAgICAgIGNoYW5uZWxfaWQgPSBzdHJ1Y3QudW5wYWNrKCchTCcsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9kYXRhW3Bvczpwb3MrNF0pWzBdICYg
MHgxZmZmZmZmZgotICAgICAgICAgICAgY2hhbm5lbF9pZF9sZW5ndGggPSA0Ci0gICAgICAgIGVs
aWYgY2hhbm5lbF9pZCAmIDB4YzAgPT0gMHhjMDoKLSAgICAgICAgICAgIGlmIHJlbWFpbmluZ19s
ZW5ndGggPCAzOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ludmFsaWQgY2hh
bm5lbCBpZCBmb3JtYXQnKQotICAgICAgICAgICAgY2hhbm5lbF9pZCA9ICgoKGNoYW5uZWxfaWQg
JiAweDFmKSA8PCAxNikgKwotICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QudW5wYWNr
KCchSCcsIHNlbGYuX2RhdGFbcG9zKzE6cG9zKzNdKVswXSkKLSAgICAgICAgICAgIGNoYW5uZWxf
aWRfbGVuZ3RoID0gMwotICAgICAgICBlbGlmIGNoYW5uZWxfaWQgJiAweDgwID09IDB4ODA6Ci0g
ICAgICAgICAgICBpZiByZW1haW5pbmdfbGVuZ3RoIDwgMjoKLSAgICAgICAgICAgICAgICByYWlz
ZSBWYWx1ZUVycm9yKCdJbnZhbGlkIGNoYW5uZWwgaWQgZm9ybWF0JykKLSAgICAgICAgICAgIGNo
YW5uZWxfaWQgPSBzdHJ1Y3QudW5wYWNrKCchSCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9kYXRhW3Bvczpwb3MrMl0pWzBdICYgMHgzZmZmCi0gICAgICAg
ICAgICBjaGFubmVsX2lkX2xlbmd0aCA9IDIKLSAgICAgICAgc2VsZi5fcmVhZF9wb3NpdGlvbiAr
PSBjaGFubmVsX2lkX2xlbmd0aAotCi0gICAgICAgIHJldHVybiBjaGFubmVsX2lkCi0KLSAgICBk
ZWYgcmVhZF9pbm5lcl9mcmFtZShzZWxmKToKLSAgICAgICAgIiIiUmVhZCBhbiBpbm5lciBmcmFt
ZS4KLQotICAgICAgICBSYWlzZXM6Ci0gICAgICAgICAgICBQaHlzaWNhbENvbm5lY3Rpb25FcnJv
cjogd2hlbiB0aGUgaW5uZXIgZnJhbWUgaXMgaW52YWxpZC4KLSAgICAgICAgIiIiCi0gICAgICAg
IGlmIGxlbihzZWxmLl9kYXRhKSA9PSBzZWxmLl9yZWFkX3Bvc2l0aW9uOgotICAgICAgICAgICAg
cmFpc2UgUGh5c2ljYWxDb25uZWN0aW9uRXJyb3IoCi0gICAgICAgICAgICAgICAgX0RST1BfQ09E
RV9FTkNBUFNVTEFURURfRlJBTUVfSVNfVFJVTkNBVEVEKQotCi0gICAgICAgIGJpdHMgPSBvcmQo
c2VsZi5fZGF0YVtzZWxmLl9yZWFkX3Bvc2l0aW9uXSkKLSAgICAgICAgc2VsZi5fcmVhZF9wb3Np
dGlvbiArPSAxCi0gICAgICAgIGZpbiA9IChiaXRzICYgMHg4MCkgPT0gMHg4MAotICAgICAgICBy
c3YxID0gKGJpdHMgJiAweDQwKSA9PSAweDQwCi0gICAgICAgIHJzdjIgPSAoYml0cyAmIDB4MjAp
ID09IDB4MjAKLSAgICAgICAgcnN2MyA9IChiaXRzICYgMHgxMCkgPT0gMHgxMAotICAgICAgICBv
cGNvZGUgPSBiaXRzICYgMHhmCi0gICAgICAgIHBheWxvYWQgPSBzZWxmLnJlbWFpbmluZ19kYXRh
KCkKLSAgICAgICAgIyBDb25zdW1lIHJlc3Qgb2YgdGhlIG1lc3NhZ2Ugd2hpY2ggaXMgcGF5bG9h
ZCBkYXRhIG9mIHRoZSBvcmlnaW5hbAotICAgICAgICAjIGZyYW1lLgotICAgICAgICBzZWxmLl9y
ZWFkX3Bvc2l0aW9uID0gbGVuKHNlbGYuX2RhdGEpCi0gICAgICAgIHJldHVybiBmaW4sIHJzdjEs
IHJzdjIsIHJzdjMsIG9wY29kZSwgcGF5bG9hZAotCi0gICAgZGVmIF9yZWFkX251bWJlcihzZWxm
KToKLSAgICAgICAgaWYgc2VsZi5fcmVhZF9wb3NpdGlvbiArIDEgPiBsZW4oc2VsZi5fZGF0YSk6
Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAotICAgICAgICAgICAgICAgICdDYW5ub3Qg
cmVhZCB0aGUgZmlyc3QgYnl0ZSBvZiBudW1iZXIgZmllbGQnKQotCi0gICAgICAgIG51bWJlciA9
IG9yZChzZWxmLl9kYXRhW3NlbGYuX3JlYWRfcG9zaXRpb25dKQotICAgICAgICBpZiBudW1iZXIg
JiAweDgwID09IDB4ODA6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAotICAgICAgICAg
ICAgICAgICdUaGUgbW9zdCBzaWduaWZpY2FudCBiaXQgb2YgdGhlIGZpcnN0IGJ5dGUgb2YgbnVt
YmVyIHNob3VsZCAnCi0gICAgICAgICAgICAgICAgJ2JlIHVuc2V0JykKLSAgICAgICAgc2VsZi5f
cmVhZF9wb3NpdGlvbiArPSAxCi0gICAgICAgIHBvcyA9IHNlbGYuX3JlYWRfcG9zaXRpb24KLSAg
ICAgICAgaWYgbnVtYmVyID09IDEyNzoKLSAgICAgICAgICAgIGlmIHBvcyArIDggPiBsZW4oc2Vs
Zi5fZGF0YSk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW52YWxpZCBudW1i
ZXIgZmllbGQnKQotICAgICAgICAgICAgc2VsZi5fcmVhZF9wb3NpdGlvbiArPSA4Ci0gICAgICAg
ICAgICBudW1iZXIgPSBzdHJ1Y3QudW5wYWNrKCchUScsIHNlbGYuX2RhdGFbcG9zOnBvcys4XSlb
MF0KLSAgICAgICAgICAgIGlmIG51bWJlciA+IDB4N0ZGRkZGRkZGRkZGRkZGRjoKLSAgICAgICAg
ICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdFbmNvZGVkIG51bWJlciglZCkgPj0gMl42MycgJSBu
dW1iZXIpCi0gICAgICAgICAgICBpZiBudW1iZXIgPD0gMHhGRkZGOgotICAgICAgICAgICAgICAg
IHJhaXNlIFZhbHVlRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICclZCBzaG91bGQgbm90IGJl
IGVuY29kZWQgYnkgOSBieXRlcyBlbmNvZGluZycgJSBudW1iZXIpCi0gICAgICAgICAgICByZXR1
cm4gbnVtYmVyCi0gICAgICAgIGlmIG51bWJlciA9PSAxMjY6Ci0gICAgICAgICAgICBpZiBwb3Mg
KyAyID4gbGVuKHNlbGYuX2RhdGEpOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3Io
J0ludmFsaWQgbnVtYmVyIGZpZWxkJykKLSAgICAgICAgICAgIHNlbGYuX3JlYWRfcG9zaXRpb24g
Kz0gMgotICAgICAgICAgICAgbnVtYmVyID0gc3RydWN0LnVucGFjaygnIUgnLCBzZWxmLl9kYXRh
W3Bvczpwb3MrMl0pWzBdCi0gICAgICAgICAgICBpZiBudW1iZXIgPD0gMTI1OgotICAgICAgICAg
ICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICclZCBzaG91bGQg
bm90IGJlIGVuY29kZWQgYnkgMyBieXRlcyBlbmNvZGluZycgJSBudW1iZXIpCi0gICAgICAgIHJl
dHVybiBudW1iZXIKLQotICAgIGRlZiBfcmVhZF9zaXplX2FuZF9jb250ZW50cyhzZWxmKToKLSAg
ICAgICAgIiIiUmVhZCBkYXRhIHRoYXQgY29uc2lzdHMgb2YgdGhlIGZvbGxvd2luZzoKLSAgICAg
ICAgICAgIC0gdGhlIHNpemUgb2YgdGhlIGNvbnRlbnRzIGVuY29kZWQgdGhlIHNhbWUgd2F5IGFz
IHBheWxvYWQgbGVuZ3RoCi0gICAgICAgICAgICAgIG9mIHRoZSBXZWJTb2NrZXQgUHJvdG9jb2wg
d2l0aCAxIGJpdCBwYWRkaW5nIGF0IHRoZSBoZWFkLgotICAgICAgICAgICAgLSB0aGUgY29udGVu
dHMuCi0gICAgICAgICIiIgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzaXplID0gc2VsZi5f
cmVhZF9udW1iZXIoKQotICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgotICAgICAgICAg
ICAgcmFpc2UgUGh5c2ljYWxDb25uZWN0aW9uRXJyb3IoX0RST1BfQ09ERV9JTlZBTElEX01VWF9D
T05UUk9MX0JMT0NLLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RyKGUpKQotICAgICAgICBwb3MgPSBzZWxmLl9yZWFkX3Bvc2l0aW9uCi0gICAgICAgIGlmIHBv
cyArIHNpemUgPiBsZW4oc2VsZi5fZGF0YSk6Ci0gICAgICAgICAgICByYWlzZSBQaHlzaWNhbENv
bm5lY3Rpb25FcnJvcigKLSAgICAgICAgICAgICAgICBfRFJPUF9DT0RFX0lOVkFMSURfTVVYX0NP
TlRST0xfQkxPQ0ssCi0gICAgICAgICAgICAgICAgJ0Nhbm5vdCByZWFkICVkIGJ5dGVzIGRhdGEn
ICUgc2l6ZSkKLQotICAgICAgICBzZWxmLl9yZWFkX3Bvc2l0aW9uICs9IHNpemUKLSAgICAgICAg
cmV0dXJuIHNlbGYuX2RhdGFbcG9zOnBvcytzaXplXQotCi0gICAgZGVmIF9yZWFkX2FkZF9jaGFu
bmVsX3JlcXVlc3Qoc2VsZiwgZmlyc3RfYnl0ZSwgY29udHJvbF9ibG9jayk6Ci0gICAgICAgIHJl
c2VydmVkID0gKGZpcnN0X2J5dGUgPj4gMikgJiAweDcKLSAgICAgICAgaWYgcmVzZXJ2ZWQgIT0g
MDoKLSAgICAgICAgICAgIHJhaXNlIFBoeXNpY2FsQ29ubmVjdGlvbkVycm9yKAotICAgICAgICAg
ICAgICAgIF9EUk9QX0NPREVfSU5WQUxJRF9NVVhfQ09OVFJPTF9CTE9DSywKLSAgICAgICAgICAg
ICAgICAnUmVzZXJ2ZWQgYml0cyBtdXN0IGJlIHVuc2V0JykKLQotICAgICAgICAjIEludmFsaWQg
ZW5jb2Rpbmcgd2lsbCBiZSBoYW5kbGVkIGJ5IE11eEhhbmRsZXIuCi0gICAgICAgIGVuY29kaW5n
ID0gZmlyc3RfYnl0ZSAmIDB4MwotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBjb250cm9sX2Js
b2NrLmNoYW5uZWxfaWQgPSBzZWxmLnJlYWRfY2hhbm5lbF9pZCgpCi0gICAgICAgIGV4Y2VwdCBW
YWx1ZUVycm9yIGFzIGU6Ci0gICAgICAgICAgICByYWlzZSBQaHlzaWNhbENvbm5lY3Rpb25FcnJv
cihfRFJPUF9DT0RFX0lOVkFMSURfTVVYX0NPTlRST0xfQkxPQ0spCi0gICAgICAgIGNvbnRyb2xf
YmxvY2suZW5jb2RpbmcgPSBlbmNvZGluZwotICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSA9IHNl
bGYuX3JlYWRfc2l6ZV9hbmRfY29udGVudHMoKQotICAgICAgICBjb250cm9sX2Jsb2NrLmVuY29k
ZWRfaGFuZHNoYWtlID0gZW5jb2RlZF9oYW5kc2hha2UKLSAgICAgICAgcmV0dXJuIGNvbnRyb2xf
YmxvY2sKLQotICAgIGRlZiBfcmVhZF9hZGRfY2hhbm5lbF9yZXNwb25zZShzZWxmLCBmaXJzdF9i
eXRlLCBjb250cm9sX2Jsb2NrKToKLSAgICAgICAgcmVzZXJ2ZWQgPSAoZmlyc3RfYnl0ZSA+PiAy
KSAmIDB4MwotICAgICAgICBpZiByZXNlcnZlZCAhPSAwOgotICAgICAgICAgICAgcmFpc2UgUGh5
c2ljYWxDb25uZWN0aW9uRXJyb3IoCi0gICAgICAgICAgICAgICAgX0RST1BfQ09ERV9JTlZBTElE
X01VWF9DT05UUk9MX0JMT0NLLAotICAgICAgICAgICAgICAgICdSZXNlcnZlZCBiaXRzIG11c3Qg
YmUgdW5zZXQnKQotCi0gICAgICAgIGNvbnRyb2xfYmxvY2suYWNjZXB0ZWQgPSAoZmlyc3RfYnl0
ZSA+PiA0KSAmIDEKLSAgICAgICAgY29udHJvbF9ibG9jay5lbmNvZGluZyA9IGZpcnN0X2J5dGUg
JiAweDMKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgY29udHJvbF9ibG9jay5jaGFubmVsX2lk
ID0gc2VsZi5yZWFkX2NoYW5uZWxfaWQoKQotICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBl
OgotICAgICAgICAgICAgcmFpc2UgUGh5c2ljYWxDb25uZWN0aW9uRXJyb3IoX0RST1BfQ09ERV9J
TlZBTElEX01VWF9DT05UUk9MX0JMT0NLKQotICAgICAgICBjb250cm9sX2Jsb2NrLmVuY29kZWRf
aGFuZHNoYWtlID0gc2VsZi5fcmVhZF9zaXplX2FuZF9jb250ZW50cygpCi0gICAgICAgIHJldHVy
biBjb250cm9sX2Jsb2NrCi0KLSAgICBkZWYgX3JlYWRfZmxvd19jb250cm9sKHNlbGYsIGZpcnN0
X2J5dGUsIGNvbnRyb2xfYmxvY2spOgotICAgICAgICByZXNlcnZlZCA9IGZpcnN0X2J5dGUgJiAw
eDFmCi0gICAgICAgIGlmIHJlc2VydmVkICE9IDA6Ci0gICAgICAgICAgICByYWlzZSBQaHlzaWNh
bENvbm5lY3Rpb25FcnJvcigKLSAgICAgICAgICAgICAgICBfRFJPUF9DT0RFX0lOVkFMSURfTVVY
X0NPTlRST0xfQkxPQ0ssCi0gICAgICAgICAgICAgICAgJ1Jlc2VydmVkIGJpdHMgbXVzdCBiZSB1
bnNldCcpCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgY29udHJvbF9ibG9jay5jaGFubmVs
X2lkID0gc2VsZi5yZWFkX2NoYW5uZWxfaWQoKQotICAgICAgICAgICAgY29udHJvbF9ibG9jay5z
ZW5kX3F1b3RhID0gc2VsZi5fcmVhZF9udW1iZXIoKQotICAgICAgICBleGNlcHQgVmFsdWVFcnJv
ciBhcyBlOgotICAgICAgICAgICAgcmFpc2UgUGh5c2ljYWxDb25uZWN0aW9uRXJyb3IoX0RST1Bf
Q09ERV9JTlZBTElEX01VWF9DT05UUk9MX0JMT0NLLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RyKGUpKQotCi0gICAgICAgIHJldHVybiBjb250cm9sX2Jsb2Nr
Ci0KLSAgICBkZWYgX3JlYWRfZHJvcF9jaGFubmVsKHNlbGYsIGZpcnN0X2J5dGUsIGNvbnRyb2xf
YmxvY2spOgotICAgICAgICByZXNlcnZlZCA9IGZpcnN0X2J5dGUgJiAweDFmCi0gICAgICAgIGlm
IHJlc2VydmVkICE9IDA6Ci0gICAgICAgICAgICByYWlzZSBQaHlzaWNhbENvbm5lY3Rpb25FcnJv
cigKLSAgICAgICAgICAgICAgICBfRFJPUF9DT0RFX0lOVkFMSURfTVVYX0NPTlRST0xfQkxPQ0ss
Ci0gICAgICAgICAgICAgICAgJ1Jlc2VydmVkIGJpdHMgbXVzdCBiZSB1bnNldCcpCi0KLSAgICAg
ICAgdHJ5OgotICAgICAgICAgICAgY29udHJvbF9ibG9jay5jaGFubmVsX2lkID0gc2VsZi5yZWFk
X2NoYW5uZWxfaWQoKQotICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgotICAgICAgICAg
ICAgcmFpc2UgUGh5c2ljYWxDb25uZWN0aW9uRXJyb3IoX0RST1BfQ09ERV9JTlZBTElEX01VWF9D
T05UUk9MX0JMT0NLKQotICAgICAgICByZWFzb24gPSBzZWxmLl9yZWFkX3NpemVfYW5kX2NvbnRl
bnRzKCkKLSAgICAgICAgaWYgbGVuKHJlYXNvbikgPT0gMDoKLSAgICAgICAgICAgIGNvbnRyb2xf
YmxvY2suZHJvcF9jb2RlID0gTm9uZQotICAgICAgICAgICAgY29udHJvbF9ibG9jay5kcm9wX21l
c3NhZ2UgPSAnJwotICAgICAgICBlbGlmIGxlbihyZWFzb24pID49IDI6Ci0gICAgICAgICAgICBj
b250cm9sX2Jsb2NrLmRyb3BfY29kZSA9IHN0cnVjdC51bnBhY2soJyFIJywgcmVhc29uWzoyXSlb
MF0KLSAgICAgICAgICAgIGNvbnRyb2xfYmxvY2suZHJvcF9tZXNzYWdlID0gcmVhc29uWzI6XQot
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgUGh5c2ljYWxDb25uZWN0aW9uRXJyb3Io
Ci0gICAgICAgICAgICAgICAgX0RST1BfQ09ERV9JTlZBTElEX01VWF9DT05UUk9MX0JMT0NLLAot
ICAgICAgICAgICAgICAgICdSZWNlaXZlZCBEcm9wQ2hhbm5lbCB0aGF0IGNvbmFpbnMgb25seSAx
LWJ5dGUgcmVhc29uJykKLSAgICAgICAgcmV0dXJuIGNvbnRyb2xfYmxvY2sKLQotICAgIGRlZiBf
cmVhZF9uZXdfY2hhbm5lbF9zbG90KHNlbGYsIGZpcnN0X2J5dGUsIGNvbnRyb2xfYmxvY2spOgot
ICAgICAgICByZXNlcnZlZCA9IGZpcnN0X2J5dGUgJiAweDFlCi0gICAgICAgIGlmIHJlc2VydmVk
ICE9IDA6Ci0gICAgICAgICAgICByYWlzZSBQaHlzaWNhbENvbm5lY3Rpb25FcnJvcigKLSAgICAg
ICAgICAgICAgICBfRFJPUF9DT0RFX0lOVkFMSURfTVVYX0NPTlRST0xfQkxPQ0ssCi0gICAgICAg
ICAgICAgICAgJ1Jlc2VydmVkIGJpdHMgbXVzdCBiZSB1bnNldCcpCi0gICAgICAgIGNvbnRyb2xf
YmxvY2suZmFsbGJhY2sgPSBmaXJzdF9ieXRlICYgMQotICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICBjb250cm9sX2Jsb2NrLnNsb3RzID0gc2VsZi5fcmVhZF9udW1iZXIoKQotICAgICAgICAgICAg
Y29udHJvbF9ibG9jay5zZW5kX3F1b3RhID0gc2VsZi5fcmVhZF9udW1iZXIoKQotICAgICAgICBl
eGNlcHQgVmFsdWVFcnJvciBhcyBlOgotICAgICAgICAgICAgcmFpc2UgUGh5c2ljYWxDb25uZWN0
aW9uRXJyb3IoX0RST1BfQ09ERV9JTlZBTElEX01VWF9DT05UUk9MX0JMT0NLLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKGUpKQotICAgICAgICByZXR1cm4g
Y29udHJvbF9ibG9jawotCi0gICAgZGVmIHJlYWRfY29udHJvbF9ibG9ja3Moc2VsZik6Ci0gICAg
ICAgICIiIlJlYWQgY29udHJvbCBibG9jayhzKS4KLQotICAgICAgICBSYWlzZXM6Ci0gICAgICAg
ICAgIFBoeXNpY2FsQ29ubmVjdGlvbkVycm9yOiB3aGVuIHRoZSBwYXlsb2FkIGNvbnRhaW5zIGlu
dmFsaWQgY29udHJvbAotICAgICAgICAgICAgICAgYmxvY2socykuCi0gICAgICAgICAgIFN0b3BJ
dGVyYXRpb246IHdoZW4gbm8gY29udHJvbCBibG9ja3MgbGVmdC4KLSAgICAgICAgIiIiCi0gICAg
ICAgIHdoaWxlIHNlbGYuX3JlYWRfcG9zaXRpb24gPCBsZW4oc2VsZi5fZGF0YSk6Ci0gICAgICAg
ICAgICBmaXJzdF9ieXRlID0gb3JkKHNlbGYuX2RhdGFbc2VsZi5fcmVhZF9wb3NpdGlvbl0pCi0g
ICAgICAgICAgICBzZWxmLl9yZWFkX3Bvc2l0aW9uICs9IDEKLSAgICAgICAgICAgIG9wY29kZSA9
IChmaXJzdF9ieXRlID4+IDUpICYgMHg3Ci0gICAgICAgICAgICBjb250cm9sX2Jsb2NrID0gX0Nv
bnRyb2xCbG9jayhvcGNvZGU9b3Bjb2RlKQotICAgICAgICAgICAgaWYgb3Bjb2RlID09IF9NVVhf
T1BDT0RFX0FERF9DSEFOTkVMX1JFUVVFU1Q6Ci0gICAgICAgICAgICAgICAgeWllbGQgc2VsZi5f
cmVhZF9hZGRfY2hhbm5lbF9yZXF1ZXN0KGZpcnN0X2J5dGUsIGNvbnRyb2xfYmxvY2spCi0gICAg
ICAgICAgICBlbGlmIG9wY29kZSA9PSBfTVVYX09QQ09ERV9BRERfQ0hBTk5FTF9SRVNQT05TRToK
LSAgICAgICAgICAgICAgICB5aWVsZCBzZWxmLl9yZWFkX2FkZF9jaGFubmVsX3Jlc3BvbnNlKAot
ICAgICAgICAgICAgICAgICAgICBmaXJzdF9ieXRlLCBjb250cm9sX2Jsb2NrKQotICAgICAgICAg
ICAgZWxpZiBvcGNvZGUgPT0gX01VWF9PUENPREVfRkxPV19DT05UUk9MOgotICAgICAgICAgICAg
ICAgIHlpZWxkIHNlbGYuX3JlYWRfZmxvd19jb250cm9sKGZpcnN0X2J5dGUsIGNvbnRyb2xfYmxv
Y2spCi0gICAgICAgICAgICBlbGlmIG9wY29kZSA9PSBfTVVYX09QQ09ERV9EUk9QX0NIQU5ORUw6
Ci0gICAgICAgICAgICAgICAgeWllbGQgc2VsZi5fcmVhZF9kcm9wX2NoYW5uZWwoZmlyc3RfYnl0
ZSwgY29udHJvbF9ibG9jaykKLSAgICAgICAgICAgIGVsaWYgb3Bjb2RlID09IF9NVVhfT1BDT0RF
X05FV19DSEFOTkVMX1NMT1Q6Ci0gICAgICAgICAgICAgICAgeWllbGQgc2VsZi5fcmVhZF9uZXdf
Y2hhbm5lbF9zbG90KGZpcnN0X2J5dGUsIGNvbnRyb2xfYmxvY2spCi0gICAgICAgICAgICBlbHNl
OgotICAgICAgICAgICAgICAgIHJhaXNlIFBoeXNpY2FsQ29ubmVjdGlvbkVycm9yKAotICAgICAg
ICAgICAgICAgICAgICBfRFJPUF9DT0RFX1VOS05PV05fTVVYX09QQ09ERSwKLSAgICAgICAgICAg
ICAgICAgICAgJ0ludmFsaWQgb3Bjb2RlICVkJyAlIG9wY29kZSkKLQotICAgICAgICBhc3NlcnQg
c2VsZi5fcmVhZF9wb3NpdGlvbiA9PSBsZW4oc2VsZi5fZGF0YSkKLSAgICAgICAgcmFpc2UgU3Rv
cEl0ZXJhdGlvbgotCi0gICAgZGVmIHJlbWFpbmluZ19kYXRhKHNlbGYpOgotICAgICAgICAiIiJS
ZXR1cm4gcmVtYWluaW5nIGRhdGEuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9kYXRhW3NlbGYu
X3JlYWRfcG9zaXRpb246XQotCi0KLWNsYXNzIF9Mb2dpY2FsUmVxdWVzdChvYmplY3QpOgotCi0g
ICAgIiIiTWltaWNzIG1vZF9weXRob24gcmVxdWVzdC4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBjaGFubmVsX2lkLCBjb21tYW5kLCBwYXRoLCBwcm90b2NvbCwgaGVhZGVycywKLSAgICAg
ICAgICAgICAgICAgY29ubmVjdGlvbik6Ci0gICAgICAgICIiIkNvbnN0cnVjdCBhbiBpbnN0YW5j
ZS4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgY2hhbm5lbF9pZDogdGhlIGNoYW5uZWwg
aWQgb2YgdGhlIGxvZ2ljYWwgY2hhbm5lbC4KLSAgICAgICAgICAgIGNvbW1hbmQ6IEhUVFAgcmVx
dWVzdCBjb21tYW5kLgotICAgICAgICAgICAgcGF0aDogSFRUUCByZXF1ZXN0IHBhdGguCi0gICAg
ICAgICAgICBoZWFkZXJzOiBIVFRQIGhlYWRlcnMuCi0gICAgICAgICAgICBjb25uZWN0aW9uOiBf
TG9naWNhbENvbm5lY3Rpb24gaW5zdGFuY2UuCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLmNo
YW5uZWxfaWQgPSBjaGFubmVsX2lkCi0gICAgICAgIHNlbGYubWV0aG9kID0gY29tbWFuZAotICAg
ICAgICBzZWxmLnVyaSA9IHBhdGgKLSAgICAgICAgc2VsZi5wcm90b2NvbCA9IHByb3RvY29sCi0g
ICAgICAgIHNlbGYuaGVhZGVyc19pbiA9IGhlYWRlcnMKLSAgICAgICAgc2VsZi5jb25uZWN0aW9u
ID0gY29ubmVjdGlvbgotICAgICAgICBzZWxmLnNlcnZlcl90ZXJtaW5hdGVkID0gRmFsc2UKLSAg
ICAgICAgc2VsZi5jbGllbnRfdGVybWluYXRlZCA9IEZhbHNlCi0KLSAgICBkZWYgaXNfaHR0cHMo
c2VsZik6Ci0gICAgICAgICIiIk1pbWljIHJlcXVlc3QuaXNfaHR0cHMoKS4KLQotICAgICAgICBS
ZXR1cm5zIEZhbHNlIGJlY2F1c2UgdGhpcyBtZXRob2QgaXMgdXNlZCBvbmx5IGJ5IG9sZCBwcm90
b2NvbHMKLSAgICAgICAgKGhpeGllIGFuZCBoeWJpMDApLgotICAgICAgICAiIiIKLSAgICAgICAg
cmV0dXJuIEZhbHNlCi0KLQotY2xhc3MgX0xvZ2ljYWxDb25uZWN0aW9uKG9iamVjdCk6Ci0KLSAg
ICAiIiJNaW1pY3MgbW9kX3B5dGhvbiBtcF9jb25uLiIiIgotCi0gICAgIyBGb3IgZGV0YWlscywg
c2VlIHRoZSBjb21tZW50IG9mIHNldF9yZWFkX3N0YXRlKCkuCi0gICAgU1RBVEVfQUNUSVZFID0g
MQotICAgIFNUQVRFX0dSQUNFRlVMTFlfQ0xPU0VEID0gMgotICAgIFNUQVRFX1RFUk1JTkFURUQg
PSAzCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbXV4X2hhbmRsZXIsIGNoYW5uZWxfaWQpOgot
ICAgICAgICAiIiJDb25zdHJ1Y3QgYW4gaW5zdGFuY2UuCi0KLSAgICAgICAgQXJnczoKLSAgICAg
ICAgICAgIG11eF9oYW5kbGVyOiBfTXV4SGFuZGxlciBpbnN0YW5jZS4KLSAgICAgICAgICAgIGNo
YW5uZWxfaWQ6IGNoYW5uZWwgaWQgb2YgdGhpcyBjb25uZWN0aW9uLgotICAgICAgICAiIiIKLSAg
ICAgICAgc2VsZi5fbXV4X2hhbmRsZXIgPSBtdXhfaGFuZGxlcgotICAgICAgICBzZWxmLl9jaGFu
bmVsX2lkID0gY2hhbm5lbF9pZAotICAgICAgICBzZWxmLl9pbmNvbWluZ19kYXRhID0gJycKLQot
ICAgICAgICAjIC0gUHJvdGVjdHMgX3dhaXRpbmdfd3JpdGVfY29tcGxldGlvbgotICAgICAgICAj
IC0gU2lnbmFscyB0aGUgdGhyZWFkIHdhaXRpbmcgZm9yIGNvbXBsZXRpb24gb2Ygd3JpdGUgYnkg
bXV4IGhhbmRsZXIKLSAgICAgICAgc2VsZi5fd3JpdGVfY29uZGl0aW9uID0gdGhyZWFkaW5nLkNv
bmRpdGlvbigpCi0gICAgICAgIHNlbGYuX3dhaXRpbmdfd3JpdGVfY29tcGxldGlvbiA9IEZhbHNl
Ci0KLSAgICAgICAgc2VsZi5fcmVhZF9jb25kaXRpb24gPSB0aHJlYWRpbmcuQ29uZGl0aW9uKCkK
LSAgICAgICAgc2VsZi5fcmVhZF9zdGF0ZSA9IHNlbGYuU1RBVEVfQUNUSVZFCi0KLSAgICBkZWYg
Z2V0X2xvY2FsX2FkZHIoc2VsZik6Ci0gICAgICAgICIiIkdldHRlciB0byBtaW1pYyBtcF9jb25u
LmxvY2FsX2FkZHIuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9tdXhfaGFuZGxlci5waHlzaWNh
bF9jb25uZWN0aW9uLmdldF9sb2NhbF9hZGRyKCkKLSAgICBsb2NhbF9hZGRyID0gcHJvcGVydHko
Z2V0X2xvY2FsX2FkZHIpCi0KLSAgICBkZWYgZ2V0X3JlbW90ZV9hZGRyKHNlbGYpOgotICAgICAg
ICAiIiJHZXR0ZXIgdG8gbWltaWMgbXBfY29ubi5yZW1vdGVfYWRkci4iIiIKLSAgICAgICAgcmV0
dXJuIHNlbGYuX211eF9oYW5kbGVyLnBoeXNpY2FsX2Nvbm5lY3Rpb24uZ2V0X3JlbW90ZV9hZGRy
KCkKLSAgICByZW1vdGVfYWRkciA9IHByb3BlcnR5KGdldF9yZW1vdGVfYWRkcikKLQotICAgIGRl
ZiBnZXRfbWVtb3JpemVkX2xpbmVzKHNlbGYpOgotICAgICAgICAiIiJHZXQgbWVtb3JpemVkIGxp
bmVzLiBOb3Qgc3VwcG9ydGVkLiIiIgotICAgICAgICByYWlzZSBNdXhVbmV4cGVjdGVkRXhjZXB0
aW9uKCdfTG9naWNhbENvbm5lY3Rpb24gZG9lcyBub3Qgc3VwcG9ydCAnCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9tZW1vcml6ZWRfbGluZXMnKQotCi0gICAgZGVm
IHdyaXRlKHNlbGYsIGRhdGEpOgotICAgICAgICAiIiJXcml0ZSBkYXRhLiBtdXhfaGFuZGxlciBz
ZW5kcyBkYXRhIGFzeW5jaHJvbm91c2x5LgotCi0gICAgICAgIFRoZSBjYWxsZXIgd2lsbCBiZSBz
dXNwZW5kZWQgdW50aWwgd3JpdGUgZG9uZS4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAg
ZGF0YTogZGF0YSB0byBiZSB3cml0dGVuLgotCi0gICAgICAgIFJhaXNlczoKLSAgICAgICAgICAg
IE11eFVuZXhwZWN0ZWRFeGNlcHRpb246IHdoZW4gY2FsbGVkIGJlZm9yZSBmaW5pc2hpbmcgdGhl
IHByZXZpb3VzCi0gICAgICAgICAgICAgICAgd3JpdGUuCi0gICAgICAgICIiIgotICAgICAgICB0
cnk6Ci0gICAgICAgICAgICBzZWxmLl93cml0ZV9jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAg
ICAgICBpZiBzZWxmLl93YWl0aW5nX3dyaXRlX2NvbXBsZXRpb246Ci0gICAgICAgICAgICAgICAg
cmFpc2UgTXV4VW5leHBlY3RlZEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgJ0xvZ2lj
YWwgY29ubmVjdGlvbiAlZCBpcyBhbHJlYWR5IHdhaXRpbmcgdGhlIGNvbXBsZXRpb24gJwotICAg
ICAgICAgICAgICAgICAgICAnb2Ygd3JpdGUnICUgc2VsZi5fY2hhbm5lbF9pZCkKLQotICAgICAg
ICAgICAgc2VsZi5fd2FpdGluZ193cml0ZV9jb21wbGV0aW9uID0gVHJ1ZQotICAgICAgICAgICAg
c2VsZi5fbXV4X2hhbmRsZXIuc2VuZF9kYXRhKHNlbGYuX2NoYW5uZWxfaWQsIGRhdGEpCi0gICAg
ICAgICAgICBzZWxmLl93cml0ZV9jb25kaXRpb24ud2FpdCgpCi0gICAgICAgICAgICAjIFRPRE8o
dHlvc2hpbm8pOiBSYWlzZSBhbiBleGNlcHRpb24gaWYgd29rZSB1cCBieSBvbl93cml0ZXJfZG9u
ZS4KLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX3dyaXRlX2NvbmRpdGlvbi5y
ZWxlYXNlKCkKLQotICAgIGRlZiB3cml0ZV9jb250cm9sX2RhdGEoc2VsZiwgZGF0YSk6Ci0gICAg
ICAgICIiIldyaXRlIGRhdGEgdmlhIHRoZSBjb250cm9sIGNoYW5uZWwuCi0KLSAgICAgICAgRG9u
J3Qgd2FpdCBmaW5pc2hpbmcgd3JpdGUgYmVjYXVzZSB0aGlzIG1ldGhvZCBjYW4gYmUgY2FsbGVk
IGJ5Ci0gICAgICAgIG11eCBkaXNwYXRjaGVyLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAg
ICBkYXRhOiBkYXRhIHRvIGJlIHdyaXR0ZW4uCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLl9t
dXhfaGFuZGxlci5zZW5kX2NvbnRyb2xfZGF0YShkYXRhKQotCi0gICAgZGVmIG9uX3dyaXRlX2Rh
dGFfZG9uZShzZWxmKToKLSAgICAgICAgIiIiQ2FsbGVkIHdoZW4gc2VuZGluZyBkYXRhIGlzIGNv
bXBsZXRlZC4iIiIKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fd3JpdGVfY29uZGl0
aW9uLmFjcXVpcmUoKQotICAgICAgICAgICAgaWYgbm90IHNlbGYuX3dhaXRpbmdfd3JpdGVfY29t
cGxldGlvbjoKLSAgICAgICAgICAgICAgICByYWlzZSBNdXhVbmV4cGVjdGVkRXhjZXB0aW9uKAot
ICAgICAgICAgICAgICAgICAgICAnSW52YWxpZCBjYWxsIG9mIG9uX3dyaXRlX2RhdGFfZG9uZSBm
b3IgbG9naWNhbCAnCi0gICAgICAgICAgICAgICAgICAgICdjb25uZWN0aW9uICVkJyAlIHNlbGYu
X2NoYW5uZWxfaWQpCi0gICAgICAgICAgICBzZWxmLl93YWl0aW5nX3dyaXRlX2NvbXBsZXRpb24g
PSBGYWxzZQotICAgICAgICAgICAgc2VsZi5fd3JpdGVfY29uZGl0aW9uLm5vdGlmeSgpCi0gICAg
ICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl93cml0ZV9jb25kaXRpb24ucmVsZWFzZSgp
Ci0KLSAgICBkZWYgb25fd3JpdGVyX2RvbmUoc2VsZik6Ci0gICAgICAgICIiIkNhbGxlZCBieSB0
aGUgbXV4IGhhbmRsZXIgd2hlbiB0aGUgd3JpdGVyIHRocmVhZCBoYXMgZmluaXNoZWQuIiIiCi0g
ICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX3dyaXRlX2NvbmRpdGlvbi5hY3F1aXJlKCkK
LSAgICAgICAgICAgIHNlbGYuX3dhaXRpbmdfd3JpdGVfY29tcGxldGlvbiA9IEZhbHNlCi0gICAg
ICAgICAgICBzZWxmLl93cml0ZV9jb25kaXRpb24ubm90aWZ5KCkKLSAgICAgICAgZmluYWxseToK
LSAgICAgICAgICAgIHNlbGYuX3dyaXRlX2NvbmRpdGlvbi5yZWxlYXNlKCkKLQotICAgIGRlZiBh
cHBlbmRfZnJhbWVfZGF0YShzZWxmLCBmcmFtZV9kYXRhKToKLSAgICAgICAgIiIiQXBwZW5kIGlu
Y29taW5nIGZyYW1lIGRhdGEuCi0KLSAgICAgICAgQ2FsbGVkIHdoZW4gbXV4X2hhbmRsZXIgZGlz
cGF0Y2hlcyBmcmFtZSBkYXRhIHRvIHRoZSBjb3JyZXNwb25kaW5nCi0gICAgICAgIGFwcGxpY2F0
aW9uLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBmcmFtZV9kYXRhOiBpbmNvbWluZyBm
cmFtZSBkYXRhLgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5fcmVhZF9jb25kaXRpb24uYWNx
dWlyZSgpCi0gICAgICAgIHNlbGYuX2luY29taW5nX2RhdGEgKz0gZnJhbWVfZGF0YQotICAgICAg
ICBzZWxmLl9yZWFkX2NvbmRpdGlvbi5ub3RpZnkoKQotICAgICAgICBzZWxmLl9yZWFkX2NvbmRp
dGlvbi5yZWxlYXNlKCkKLQotICAgIGRlZiByZWFkKHNlbGYsIGxlbmd0aCk6Ci0gICAgICAgICIi
IlJlYWQgZGF0YS4KLQotICAgICAgICBCbG9ja3MgdW50aWwgZW5vdWdoIGRhdGEgaGFzIGFycml2
ZWQgdmlhIHBoeXNpY2FsIGNvbm5lY3Rpb24uCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAg
IGxlbmd0aDogbGVuZ3RoIG9mIGRhdGEgdG8gYmUgcmVhZC4KLSAgICAgICAgUmFpc2VzOgotICAg
ICAgICAgICAgTG9naWNhbENvbm5lY3Rpb25DbG9zZWRFeGNlcHRpb246IHdoZW4gY2xvc2luZyBo
YW5kc2hha2UgZm9yIHRoaXMKLSAgICAgICAgICAgICAgICBsb2dpY2FsIGNoYW5uZWwgaGFzIGJl
ZW4gcmVjZWl2ZWQuCi0gICAgICAgICAgICBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbjog
d2hlbiB0aGUgcGh5c2ljYWwgY29ubmVjdGlvbiBoYXMKLSAgICAgICAgICAgICAgICBjbG9zZWQs
IG9yIGFuIGVycm9yIGlzIGNhdXNlZCBvbiB0aGUgcmVhZGVyIHRocmVhZC4KLSAgICAgICAgIiIi
Ci0gICAgICAgIHNlbGYuX3JlYWRfY29uZGl0aW9uLmFjcXVpcmUoKQotICAgICAgICB3aGlsZSAo
c2VsZi5fcmVhZF9zdGF0ZSA9PSBzZWxmLlNUQVRFX0FDVElWRSBhbmQKLSAgICAgICAgICAgICAg
IGxlbihzZWxmLl9pbmNvbWluZ19kYXRhKSA8IGxlbmd0aCk6Ci0gICAgICAgICAgICBzZWxmLl9y
ZWFkX2NvbmRpdGlvbi53YWl0KCkKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpZiBzZWxm
Ll9yZWFkX3N0YXRlID09IHNlbGYuU1RBVEVfR1JBQ0VGVUxMWV9DTE9TRUQ6Ci0gICAgICAgICAg
ICAgICAgcmFpc2UgTG9naWNhbENvbm5lY3Rpb25DbG9zZWRFeGNlcHRpb24oCi0gICAgICAgICAg
ICAgICAgICAgICdMb2dpY2FsIGNoYW5uZWwgJWQgaGFzIGNsb3NlZC4nICUgc2VsZi5fY2hhbm5l
bF9pZCkKLSAgICAgICAgICAgIGVsaWYgc2VsZi5fcmVhZF9zdGF0ZSA9PSBzZWxmLlNUQVRFX1RF
Uk1JTkFURUQ6Ci0gICAgICAgICAgICAgICAgcmFpc2UgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNl
cHRpb24oCi0gICAgICAgICAgICAgICAgICAgICdSZWNlaXZpbmcgJWQgYnl0ZSBmYWlsZWQuIExv
Z2ljYWwgY2hhbm5lbCAoJWQpIGNsb3NlZCcgJQotICAgICAgICAgICAgICAgICAgICAobGVuZ3Ro
LCBzZWxmLl9jaGFubmVsX2lkKSkKLQotICAgICAgICAgICAgdmFsdWUgPSBzZWxmLl9pbmNvbWlu
Z19kYXRhWzpsZW5ndGhdCi0gICAgICAgICAgICBzZWxmLl9pbmNvbWluZ19kYXRhID0gc2VsZi5f
aW5jb21pbmdfZGF0YVtsZW5ndGg6XQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2Vs
Zi5fcmVhZF9jb25kaXRpb24ucmVsZWFzZSgpCi0KLSAgICAgICAgcmV0dXJuIHZhbHVlCi0KLSAg
ICBkZWYgc2V0X3JlYWRfc3RhdGUoc2VsZiwgbmV3X3N0YXRlKToKLSAgICAgICAgIiIiU2V0IHRo
ZSBzdGF0ZSBvZiB0aGlzIGNvbm5lY3Rpb24uCi0KLSAgICAgICAgQ2FsbGVkIHdoZW4gYW4gZXZl
bnQgZm9yIHRoaXMgY29ubmVjdGlvbiBoYXMgb2NjdXJyZWQuCi0gICAgICAgIEFyZ3M6Ci0gICAg
ICAgICAgICBuZXdfc3RhdGU6IHN0YXRlIHRvIGJlIHNldC4gbmV3X3N0YXRlIG11c3QgYmUgb25l
IG9mIGZvbGxvd2luZ3M6Ci0gICAgICAgICAgICAtIFNUQVRFX0dSQUNFRlVMTFlfQ0xPU0VEOiB3
aGVuIGNsb3NpbmcgaGFuZHNoYWtlIGZvciB0aGlzCi0gICAgICAgICAgICAgICAgY29ubmVjdGlv
biBoYXMgYmVlbiByZWNlaXZlZC4KLSAgICAgICAgICAgIC0gU1RBVEVfVEVSTUlOQVRFRDogd2hl
biB0aGUgcGh5c2ljYWwgY29ubmVjdGlvbiBoYXMgY2xvc2VkIG9yCi0gICAgICAgICAgICAgICAg
RHJvcENoYW5uZWwgb2YgdGhpcyBjb25uZWN0aW9uIGhhcyByZWNlaXZlZC4KLSAgICAgICAgIiIi
Ci0gICAgICAgIHNlbGYuX3JlYWRfY29uZGl0aW9uLmFjcXVpcmUoKQotICAgICAgICBzZWxmLl9y
ZWFkX3N0YXRlID0gbmV3X3N0YXRlCi0gICAgICAgIHNlbGYuX3JlYWRfY29uZGl0aW9uLm5vdGlm
eSgpCi0gICAgICAgIHNlbGYuX3JlYWRfY29uZGl0aW9uLnJlbGVhc2UoKQotCi0KLWNsYXNzIF9J
bm5lck1lc3NhZ2Uob2JqZWN0KToKLQotICAgICIiIkhvbGQgdGhlIHJlc3VsdCBvZiBfSW5uZXJN
ZXNzYWdlQnVpbGRlci5idWlsZCgpLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wY29k
ZSwgcGF5bG9hZCk6Ci0gICAgICAgIHNlbGYub3Bjb2RlID0gb3Bjb2RlCi0gICAgICAgIHNlbGYu
cGF5bG9hZCA9IHBheWxvYWQKLQotCi1jbGFzcyBfSW5uZXJNZXNzYWdlQnVpbGRlcihvYmplY3Qp
OgotCi0gICAgIiIiQ2xhc3MgdG8gYnVpbGQgYW4gX0lubmVyTWVzc2FnZS4KLQotICAgIEEgY2xh
c3MgdGhhdCBob2xkcyB0aGUgY29udGV4dCBvZiBpbm5lciBtZXNzYWdlIGZyYWdtZW50YXRpb24g
YW5kCi0gICAgYnVpbGRzIGEgbWVzc2FnZSBmcm9tIGZyYWdtZW50ZWQgaW5uZXIgZnJhbWUocyku
Ci0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYuX2NvbnRy
b2xfb3Bjb2RlID0gTm9uZQotICAgICAgICBzZWxmLl9wZW5kaW5nX2NvbnRyb2xfZnJhZ21lbnRz
ID0gW10KLSAgICAgICAgc2VsZi5fbWVzc2FnZV9vcGNvZGUgPSBOb25lCi0gICAgICAgIHNlbGYu
X3BlbmRpbmdfbWVzc2FnZV9mcmFnbWVudHMgPSBbXQotICAgICAgICBzZWxmLl9mcmFtZV9oYW5k
bGVyID0gc2VsZi5faGFuZGxlX2ZpcnN0Ci0KLSAgICBkZWYgX2hhbmRsZV9maXJzdChzZWxmLCBm
cmFtZSk6Ci0gICAgICAgIGlmIGZyYW1lLm9wY29kZSA9PSBjb21tb24uT1BDT0RFX0NPTlRJTlVB
VElPTjoKLSAgICAgICAgICAgIHJhaXNlIEludmFsaWRGcmFtZUV4Y2VwdGlvbignU2VuZGluZyBp
bnZhbGlkIGNvbnRpbnVhdGlvbiBvcGNvZGUnKQotCi0gICAgICAgIGlmIGNvbW1vbi5pc19jb250
cm9sX29wY29kZShmcmFtZS5vcGNvZGUpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3Byb2Nl
c3NfZmlyc3RfZnJhZ21lbnRlZF9jb250cm9sKGZyYW1lKQotICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgcmV0dXJuIHNlbGYuX3Byb2Nlc3NfZmlyc3RfZnJhZ21lbnRlZF9tZXNzYWdlKGZyYW1l
KQotCi0gICAgZGVmIF9wcm9jZXNzX2ZpcnN0X2ZyYWdtZW50ZWRfY29udHJvbChzZWxmLCBmcmFt
ZSk6Ci0gICAgICAgIHNlbGYuX2NvbnRyb2xfb3Bjb2RlID0gZnJhbWUub3Bjb2RlCi0gICAgICAg
IHNlbGYuX3BlbmRpbmdfY29udHJvbF9mcmFnbWVudHMuYXBwZW5kKGZyYW1lLnBheWxvYWQpCi0g
ICAgICAgIGlmIG5vdCBmcmFtZS5maW46Ci0gICAgICAgICAgICBzZWxmLl9mcmFtZV9oYW5kbGVy
ID0gc2VsZi5faGFuZGxlX2ZyYWdtZW50ZWRfY29udHJvbAotICAgICAgICAgICAgcmV0dXJuIE5v
bmUKLSAgICAgICAgcmV0dXJuIHNlbGYuX3JlYXNzZW1ibGVfZnJhZ21lbnRlZF9jb250cm9sKCkK
LQotICAgIGRlZiBfcHJvY2Vzc19maXJzdF9mcmFnbWVudGVkX21lc3NhZ2Uoc2VsZiwgZnJhbWUp
OgotICAgICAgICBzZWxmLl9tZXNzYWdlX29wY29kZSA9IGZyYW1lLm9wY29kZQotICAgICAgICBz
ZWxmLl9wZW5kaW5nX21lc3NhZ2VfZnJhZ21lbnRzLmFwcGVuZChmcmFtZS5wYXlsb2FkKQotICAg
ICAgICBpZiBub3QgZnJhbWUuZmluOgotICAgICAgICAgICAgc2VsZi5fZnJhbWVfaGFuZGxlciA9
IHNlbGYuX2hhbmRsZV9mcmFnbWVudGVkX21lc3NhZ2UKLSAgICAgICAgICAgIHJldHVybiBOb25l
Ci0gICAgICAgIHJldHVybiBzZWxmLl9yZWFzc2VtYmxlX2ZyYWdtZW50ZWRfbWVzc2FnZSgpCi0K
LSAgICBkZWYgX2hhbmRsZV9mcmFnbWVudGVkX2NvbnRyb2woc2VsZiwgZnJhbWUpOgotICAgICAg
ICBpZiBmcmFtZS5vcGNvZGUgIT0gY29tbW9uLk9QQ09ERV9DT05USU5VQVRJT046Ci0gICAgICAg
ICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ1NlbmRp
bmcgaW52YWxpZCBvcGNvZGUgJWQgd2hpbGUgc2VuZGluZyBmcmFnbWVudGVkIGNvbnRyb2wgJwot
ICAgICAgICAgICAgICAgICdtZXNzYWdlJyAlIGZyYW1lLm9wY29kZSkKLSAgICAgICAgc2VsZi5f
cGVuZGluZ19jb250cm9sX2ZyYWdtZW50cy5hcHBlbmQoZnJhbWUucGF5bG9hZCkKLSAgICAgICAg
aWYgbm90IGZyYW1lLmZpbjoKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIHJldHVy
biBzZWxmLl9yZWFzc2VtYmxlX2ZyYWdtZW50ZWRfY29udHJvbCgpCi0KLSAgICBkZWYgX3JlYXNz
ZW1ibGVfZnJhZ21lbnRlZF9jb250cm9sKHNlbGYpOgotICAgICAgICBvcGNvZGUgPSBzZWxmLl9j
b250cm9sX29wY29kZQotICAgICAgICBwYXlsb2FkID0gJycuam9pbihzZWxmLl9wZW5kaW5nX2Nv
bnRyb2xfZnJhZ21lbnRzKQotICAgICAgICBzZWxmLl9jb250cm9sX29wY29kZSA9IE5vbmUKLSAg
ICAgICAgc2VsZi5fcGVuZGluZ19jb250cm9sX2ZyYWdtZW50cyA9IFtdCi0gICAgICAgIGlmIHNl
bGYuX21lc3NhZ2Vfb3Bjb2RlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2VsZi5fZnJhbWVf
aGFuZGxlciA9IHNlbGYuX2hhbmRsZV9mcmFnbWVudGVkX21lc3NhZ2UKLSAgICAgICAgZWxzZToK
LSAgICAgICAgICAgIHNlbGYuX2ZyYW1lX2hhbmRsZXIgPSBzZWxmLl9oYW5kbGVfZmlyc3QKLSAg
ICAgICAgcmV0dXJuIF9Jbm5lck1lc3NhZ2Uob3Bjb2RlLCBwYXlsb2FkKQotCi0gICAgZGVmIF9o
YW5kbGVfZnJhZ21lbnRlZF9tZXNzYWdlKHNlbGYsIGZyYW1lKToKLSAgICAgICAgIyBTZW5kZXIg
Y2FuIGludGVybGVhdmUgYSBjb250cm9sIG1lc3NhZ2Ugd2hpbGUgc2VuZGluZyBmcmFnbWVudGVk
Ci0gICAgICAgICMgbWVzc2FnZXMuCi0gICAgICAgIGlmIGNvbW1vbi5pc19jb250cm9sX29wY29k
ZShmcmFtZS5vcGNvZGUpOgotICAgICAgICAgICAgaWYgc2VsZi5fY29udHJvbF9vcGNvZGUgaXMg
bm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgcmFpc2UgTXV4VW5leHBlY3RlZEV4Y2VwdGlvbigK
LSAgICAgICAgICAgICAgICAgICAgJ1Nob3VsZCBub3QgcmVhY2ggaGVyZShCdWcgaW4gYnVpbGRl
ciknKQotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3Byb2Nlc3NfZmlyc3RfZnJhZ21lbnRlZF9j
b250cm9sKGZyYW1lKQotCi0gICAgICAgIGlmIGZyYW1lLm9wY29kZSAhPSBjb21tb24uT1BDT0RF
X0NPTlRJTlVBVElPTjoKLSAgICAgICAgICAgIHJhaXNlIEludmFsaWRGcmFtZUV4Y2VwdGlvbigK
LSAgICAgICAgICAgICAgICAnU2VuZGluZyBpbnZhbGlkIG9wY29kZSAlZCB3aGlsZSBzZW5kaW5n
IGZyYWdtZW50ZWQgbWVzc2FnZScgJQotICAgICAgICAgICAgICAgIGZyYW1lLm9wY29kZSkKLSAg
ICAgICAgc2VsZi5fcGVuZGluZ19tZXNzYWdlX2ZyYWdtZW50cy5hcHBlbmQoZnJhbWUucGF5bG9h
ZCkKLSAgICAgICAgaWYgbm90IGZyYW1lLmZpbjoKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0g
ICAgICAgIHJldHVybiBzZWxmLl9yZWFzc2VtYmxlX2ZyYWdtZW50ZWRfbWVzc2FnZSgpCi0KLSAg
ICBkZWYgX3JlYXNzZW1ibGVfZnJhZ21lbnRlZF9tZXNzYWdlKHNlbGYpOgotICAgICAgICBvcGNv
ZGUgPSBzZWxmLl9tZXNzYWdlX29wY29kZQotICAgICAgICBwYXlsb2FkID0gJycuam9pbihzZWxm
Ll9wZW5kaW5nX21lc3NhZ2VfZnJhZ21lbnRzKQotICAgICAgICBzZWxmLl9tZXNzYWdlX29wY29k
ZSA9IE5vbmUKLSAgICAgICAgc2VsZi5fcGVuZGluZ19tZXNzYWdlX2ZyYWdtZW50cyA9IFtdCi0g
ICAgICAgIHNlbGYuX2ZyYW1lX2hhbmRsZXIgPSBzZWxmLl9oYW5kbGVfZmlyc3QKLSAgICAgICAg
cmV0dXJuIF9Jbm5lck1lc3NhZ2Uob3Bjb2RlLCBwYXlsb2FkKQotCi0gICAgZGVmIGJ1aWxkKHNl
bGYsIGZyYW1lKToKLSAgICAgICAgIiIiQnVpbGQgYW4gaW5uZXIgbWVzc2FnZS4KLQotICAgICAg
ICBSZXR1cm5zIGFuIF9Jbm5lck1lc3NhZ2UgaW5zdGFuY2Ugd2hlbiB0aGUgZ2l2ZW4gZnJhbWUg
aXMgdGhlIGxhc3QKLSAgICAgICAgZnJhZ21lbnRlZCBmcmFtZS4gUmV0dXJucyBOb25lIG90aGVy
d2lzZS4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgZnJhbWU6IGFuIGlubmVyIGZyYW1l
LgotICAgICAgICBSYWlzZXM6Ci0gICAgICAgICAgICBJbnZhbGlkRnJhbWVFeGNlcHRpb246IHdo
ZW4gcmVjZWl2ZWQgaW52YWxpZCBvcGNvZGUuIChlLmcuCi0gICAgICAgICAgICAgICAgcmVjZWl2
aW5nIG5vbiBjb250aW51YXRpb24gZGF0YSBvcGNvZGUgYnV0IHRoZSBmaW4gZmxhZyBvZgotICAg
ICAgICAgICAgICAgIHRoZSBwcmV2aW91cyBpbm5lciBmcmFtZSB3YXMgbm90IHNldC4pCi0gICAg
ICAgICIiIgotICAgICAgICByZXR1cm4gc2VsZi5fZnJhbWVfaGFuZGxlcihmcmFtZSkKLQotCi1j
bGFzcyBfTG9naWNhbFN0cmVhbShTdHJlYW0pOgotCi0gICAgIiIiTWltaWNzIHRoZSBTdHJlYW0g
Y2xhc3MuCi0KLSAgICBUaGlzIGNsYXNzIGludGVycHJldHMgbXVsdGlwbGV4ZWQgV2ViU29ja2V0
IGZyYW1lcy4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0LCBzdHJl
YW1fb3B0aW9ucywgc2VuZF9xdW90YSwgcmVjZWl2ZV9xdW90YSk6Ci0gICAgICAgICIiIkNvbnN0
cnVjdCBhbiBpbnN0YW5jZS4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgcmVxdWVzdDog
X0xvZ2ljYWxSZXF1ZXN0IGluc3RhbmNlLgotICAgICAgICAgICAgc3RyZWFtX29wdGlvbnM6IFN0
cmVhbU9wdGlvbnMgaW5zdGFuY2UuCi0gICAgICAgICAgICBzZW5kX3F1b3RhOiBJbml0aWFsIHNl
bmQgcXVvdGEuCi0gICAgICAgICAgICByZWNlaXZlX3F1b3RhOiBJbml0aWFsIHJlY2VpdmUgcXVv
dGEuCi0gICAgICAgICIiIgotICAgICAgICAjIFBoeXNpY2FsIHN0cmVhbSBpcyByZXNwb25zaWJs
ZSBmb3IgbWFza2luZy4KLSAgICAgICAgc3RyZWFtX29wdGlvbnMudW5tYXNrX3JlY2VpdmUgPSBG
YWxzZQotICAgICAgICBTdHJlYW0uX19pbml0X18oc2VsZiwgcmVxdWVzdCwgc3RyZWFtX29wdGlv
bnMpCi0KLSAgICAgICAgc2VsZi5fc2VuZF9jbG9zZWQgPSBGYWxzZQotICAgICAgICBzZWxmLl9z
ZW5kX3F1b3RhID0gc2VuZF9xdW90YQotICAgICAgICAjIC0gUHJvdGVjdHMgX3NlbmRfY2xvc2Vk
IGFuZCBfc2VuZF9xdW90YQotICAgICAgICAjIC0gU2lnbmFscyB0aGUgdGhyZWFkIHdhaXRpbmcg
Zm9yIHNlbmQgcXVvdGEgcmVwbGVuaXNoZWQKLSAgICAgICAgc2VsZi5fc2VuZF9jb25kaXRpb24g
PSB0aHJlYWRpbmcuQ29uZGl0aW9uKCkKLQotICAgICAgICAjIFRoZSBvcGNvZGUgb2YgdGhlIGZp
cnN0IGZyYW1lIGluIG1lc3NhZ2VzLgotICAgICAgICBzZWxmLl9tZXNzYWdlX29wY29kZSA9IGNv
bW1vbi5PUENPREVfVEVYVAotICAgICAgICAjIFRydWUgd2hlbiB0aGUgbGFzdCBtZXNzYWdlIHdh
cyBmcmFnbWVudGVkLgotICAgICAgICBzZWxmLl9sYXN0X21lc3NhZ2Vfd2FzX2ZyYWdtZW50ZWQg
PSBGYWxzZQotCi0gICAgICAgIHNlbGYuX3JlY2VpdmVfcXVvdGEgPSByZWNlaXZlX3F1b3RhCi0g
ICAgICAgIHNlbGYuX3dyaXRlX2lubmVyX2ZyYW1lX3NlbWFwaG9yZSA9IHRocmVhZGluZy5TZW1h
cGhvcmUoKQotCi0gICAgICAgIHNlbGYuX2lubmVyX21lc3NhZ2VfYnVpbGRlciA9IF9Jbm5lck1l
c3NhZ2VCdWlsZGVyKCkKLQotICAgIGRlZiBfY3JlYXRlX2lubmVyX2ZyYW1lKHNlbGYsIG9wY29k
ZSwgcGF5bG9hZCwgZW5kPVRydWUpOgotICAgICAgICBmcmFtZSA9IEZyYW1lKGZpbj1lbmQsIG9w
Y29kZT1vcGNvZGUsIHBheWxvYWQ9cGF5bG9hZCkKLSAgICAgICAgZm9yIGZyYW1lX2ZpbHRlciBp
biBzZWxmLl9vcHRpb25zLm91dGdvaW5nX2ZyYW1lX2ZpbHRlcnM6Ci0gICAgICAgICAgICBmcmFt
ZV9maWx0ZXIuZmlsdGVyKGZyYW1lKQotCi0gICAgICAgIGlmIGxlbihwYXlsb2FkKSAhPSBsZW4o
ZnJhbWUucGF5bG9hZCk6Ci0gICAgICAgICAgICByYWlzZSBNdXhVbmV4cGVjdGVkRXhjZXB0aW9u
KAotICAgICAgICAgICAgICAgICdNdXggZXh0ZW5zaW9uIG11c3Qgbm90IGJlIHVzZWQgYWZ0ZXIg
ZXh0ZW5zaW9ucyB3aGljaCBjaGFuZ2UgJwotICAgICAgICAgICAgICAgICcgZnJhbWUgYm91bmRh
cnknKQotCi0gICAgICAgIGZpcnN0X2J5dGUgPSAoKGZyYW1lLmZpbiA8PCA3KSB8IChmcmFtZS5y
c3YxIDw8IDYpIHwKLSAgICAgICAgICAgICAgICAgICAgICAoZnJhbWUucnN2MiA8PCA1KSB8IChm
cmFtZS5yc3YzIDw8IDQpIHwgZnJhbWUub3Bjb2RlKQotICAgICAgICByZXR1cm4gY2hyKGZpcnN0
X2J5dGUpICsgZnJhbWUucGF5bG9hZAotCi0gICAgZGVmIF93cml0ZV9pbm5lcl9mcmFtZShzZWxm
LCBvcGNvZGUsIHBheWxvYWQsIGVuZD1UcnVlKToKLSAgICAgICAgcGF5bG9hZF9sZW5ndGggPSBs
ZW4ocGF5bG9hZCkKLSAgICAgICAgd3JpdGVfcG9zaXRpb24gPSAwCi0KLSAgICAgICAgdHJ5Ogot
ICAgICAgICAgICAgIyBBbiBpbm5lciBmcmFtZSB3aWxsIGJlIGZyYWdtZW50ZWQgaWYgdGhlcmUg
aXMgbm8gZW5vdWdoIHNlbmQKLSAgICAgICAgICAgICMgcXVvdGEuIFRoaXMgc2VtYXBob3JlIGVu
c3VyZXMgdGhhdCBmcmFnbWVudGVkIGlubmVyIGZyYW1lcyBhcmUKLSAgICAgICAgICAgICMgc2Vu
dCBpbiBvcmRlciBvbiB0aGUgbG9naWNhbCBjaGFubmVsLgotICAgICAgICAgICAgIyBOb3RlIHRo
YXQgZnJhbWVzIHRoYXQgY29tZSBmcm9tIG90aGVyIGxvZ2ljYWwgY2hhbm5lbHMgb3IKLSAgICAg
ICAgICAgICMgbXVsdGlwbGV4aW5nIGNvbnRyb2wgYmxvY2tzIGNhbiBiZSBpbnNlcnRlZCBiZXR3
ZWVuIGZyYWdtZW50ZWQKLSAgICAgICAgICAgICMgaW5uZXIgZnJhbWVzIG9uIHRoZSBwaHlzaWNh
bCBjaGFubmVsLgotICAgICAgICAgICAgc2VsZi5fd3JpdGVfaW5uZXJfZnJhbWVfc2VtYXBob3Jl
LmFjcXVpcmUoKQotCi0gICAgICAgICAgICAjIENvbnN1bWUgYW4gb2N0ZXQgcXVvdGEgd2hlbiB0
aGlzIGlzIHRoZSBmaXJzdCBmcmFnbWVudGVkIGZyYW1lLgotICAgICAgICAgICAgaWYgb3Bjb2Rl
ICE9IGNvbW1vbi5PUENPREVfQ09OVElOVUFUSU9OOgotICAgICAgICAgICAgICAgIHRyeToKLSAg
ICAgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAg
ICAgICAgICAgICAgIHdoaWxlIChub3Qgc2VsZi5fc2VuZF9jbG9zZWQpIGFuZCBzZWxmLl9zZW5k
X3F1b3RhID09IDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX2NvbmRpdGlv
bi53YWl0KCkKLQotICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9zZW5kX2Nsb3NlZDoKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbigKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnTG9naWNhbCBjb25uZWN0aW9uICVkIGlzIGNsb3NlZCcg
JQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3QuY2hhbm5lbF9pZCkK
LQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX3F1b3RhIC09IDEKLSAgICAgICAgICAg
ICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX2NvbmRpdGlvbi5y
ZWxlYXNlKCkKLQotICAgICAgICAgICAgd2hpbGUgd3JpdGVfcG9zaXRpb24gPCBwYXlsb2FkX2xl
bmd0aDoKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3Nl
bmRfY29uZGl0aW9uLmFjcXVpcmUoKQotICAgICAgICAgICAgICAgICAgICB3aGlsZSAobm90IHNl
bGYuX3NlbmRfY2xvc2VkKSBhbmQgc2VsZi5fc2VuZF9xdW90YSA9PSAwOgotICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdObyBxdW90YS4gV2FpdGluZyBGbG93Q29udHJvbCBtZXNzYWdlIGZvciAlZC4nICUKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LmNoYW5uZWxfaWQpCi0gICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX2NvbmRpdGlvbi53YWl0KCkKLQotICAgICAg
ICAgICAgICAgICAgICBpZiBzZWxmLl9zZW5kX2Nsb3NlZDoKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHJhaXNlIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnTG9naWNhbCBjb25uZWN0aW9uICVkIGlzIGNsb3NlZCcgJQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbGYucmVxdWVzdC5fY2hhbm5lbF9pZCkKLQotICAgICAgICAgICAgICAg
ICAgICByZW1haW5pbmcgPSBwYXlsb2FkX2xlbmd0aCAtIHdyaXRlX3Bvc2l0aW9uCi0gICAgICAg
ICAgICAgICAgICAgIHdyaXRlX2xlbmd0aCA9IG1pbihzZWxmLl9zZW5kX3F1b3RhLCByZW1haW5p
bmcpCi0gICAgICAgICAgICAgICAgICAgIGlubmVyX2ZyYW1lX2VuZCA9ICgKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGVuZCBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICh3cml0ZV9wb3Np
dGlvbiArIHdyaXRlX2xlbmd0aCA9PSBwYXlsb2FkX2xlbmd0aCkpCi0KLSAgICAgICAgICAgICAg
ICAgICAgaW5uZXJfZnJhbWUgPSBzZWxmLl9jcmVhdGVfaW5uZXJfZnJhbWUoCi0gICAgICAgICAg
ICAgICAgICAgICAgICBvcGNvZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2FkW3dy
aXRlX3Bvc2l0aW9uOndyaXRlX3Bvc2l0aW9uK3dyaXRlX2xlbmd0aF0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICBpbm5lcl9mcmFtZV9lbmQpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3Nl
bmRfcXVvdGEgLT0gd3JpdGVfbGVuZ3RoCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dl
ci5kZWJ1ZygnQ29uc3VtZWQgcXVvdGE9JWQsIHJlbWFpbmluZz0lZCcgJQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdyaXRlX2xlbmd0aCwgc2VsZi5fc2VuZF9xdW90
YSkpCi0gICAgICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5f
c2VuZF9jb25kaXRpb24ucmVsZWFzZSgpCi0KLSAgICAgICAgICAgICAgICAjIFdyaXRpbmcgZGF0
YSB3aWxsIGJsb2NrIHRoZSB3b3JrZXIgc28gd2UgbmVlZCB0byByZWxlYXNlCi0gICAgICAgICAg
ICAgICAgIyBfc2VuZF9jb25kaXRpb24gYmVmb3JlIHdyaXRpbmcuCi0gICAgICAgICAgICAgICAg
c2VsZi5fbG9nZ2VyLmRlYnVnKCdTZW5kaW5nIGlubmVyIGZyYW1lOiAlcicgJSBpbm5lcl9mcmFt
ZSkKLSAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoaW5uZXJf
ZnJhbWUpCi0gICAgICAgICAgICAgICAgd3JpdGVfcG9zaXRpb24gKz0gd3JpdGVfbGVuZ3RoCi0K
LSAgICAgICAgICAgICAgICBvcGNvZGUgPSBjb21tb24uT1BDT0RFX0NPTlRJTlVBVElPTgotCi0g
ICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6Ci0gICAgICAgICAgICByYWlzZSBCYWRPcGVy
YXRpb25FeGNlcHRpb24oZSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX3dy
aXRlX2lubmVyX2ZyYW1lX3NlbWFwaG9yZS5yZWxlYXNlKCkKLQotICAgIGRlZiByZXBsZW5pc2hf
c2VuZF9xdW90YShzZWxmLCBzZW5kX3F1b3RhKToKLSAgICAgICAgIiIiUmVwbGVuaXNoIHNlbmQg
cXVvdGEuIiIiCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX3NlbmRfY29uZGl0aW9u
LmFjcXVpcmUoKQotICAgICAgICAgICAgaWYgc2VsZi5fc2VuZF9xdW90YSArIHNlbmRfcXVvdGEg
PiAweDdGRkZGRkZGRkZGRkZGRkY6Ci0gICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9xdW90YSA9
IDAKLSAgICAgICAgICAgICAgICByYWlzZSBMb2dpY2FsQ2hhbm5lbEVycm9yKAotICAgICAgICAg
ICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LmNoYW5uZWxfaWQsIF9EUk9QX0NPREVfU0VORF9RVU9U
QV9PVkVSRkxPVykKLSAgICAgICAgICAgIHNlbGYuX3NlbmRfcXVvdGEgKz0gc2VuZF9xdW90YQot
ICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdSZXBsZW5pc2hlZCBzZW5kIHF1b3RhIGZv
ciBjaGFubmVsIGlkICVkOiAlZCcgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChz
ZWxmLl9yZXF1ZXN0LmNoYW5uZWxfaWQsIHNlbGYuX3NlbmRfcXVvdGEpKQotICAgICAgICBmaW5h
bGx5OgotICAgICAgICAgICAgc2VsZi5fc2VuZF9jb25kaXRpb24ubm90aWZ5KCkKLSAgICAgICAg
ICAgIHNlbGYuX3NlbmRfY29uZGl0aW9uLnJlbGVhc2UoKQotCi0gICAgZGVmIGNvbnN1bWVfcmVj
ZWl2ZV9xdW90YShzZWxmLCBhbW91bnQpOgotICAgICAgICAiIiJDb25zdW1lIHJlY2VpdmUgcXVv
dGEuIFJldHVybnMgRmFsc2Ugb24gZmFpbHVyZS4iIiIKLSAgICAgICAgaWYgc2VsZi5fcmVjZWl2
ZV9xdW90YSA8IGFtb3VudDoKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnVmlvbGF0
ZSBxdW90YSBvbiBjaGFubmVsIGlkICVkOiAlZCA8ICVkJyAlCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKHNlbGYuX3JlcXVlc3QuY2hhbm5lbF9pZCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fcmVjZWl2ZV9xdW90YSwgYW1vdW50KSkKLSAgICAgICAgICAg
IHJldHVybiBGYWxzZQotICAgICAgICBzZWxmLl9yZWNlaXZlX3F1b3RhIC09IGFtb3VudAotICAg
ICAgICByZXR1cm4gVHJ1ZQotCi0gICAgZGVmIHNlbmRfbWVzc2FnZShzZWxmLCBtZXNzYWdlLCBl
bmQ9VHJ1ZSwgYmluYXJ5PUZhbHNlKToKLSAgICAgICAgIiIiT3ZlcnJpZGUgU3RyZWFtLnNlbmRf
bWVzc2FnZS4iIiIKLSAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC5zZXJ2ZXJfdGVybWluYXRlZDoK
LSAgICAgICAgICAgIHJhaXNlIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbigKLSAgICAgICAgICAgICAg
ICAnUmVxdWVzdGVkIHNlbmRfbWVzc2FnZSBhZnRlciBzZW5kaW5nIG91dCBhIGNsb3NpbmcgaGFu
ZHNoYWtlJykKLQotICAgICAgICBpZiBiaW5hcnkgYW5kIGlzaW5zdGFuY2UobWVzc2FnZSwgdW5p
Y29kZSk6Ci0gICAgICAgICAgICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oCi0gICAgICAg
ICAgICAgICAgJ01lc3NhZ2UgZm9yIGJpbmFyeSBmcmFtZSBtdXN0IGJlIGluc3RhbmNlIG9mIHN0
cicpCi0KLSAgICAgICAgaWYgYmluYXJ5OgotICAgICAgICAgICAgb3Bjb2RlID0gY29tbW9uLk9Q
Q09ERV9CSU5BUlkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG9wY29kZSA9IGNvbW1vbi5P
UENPREVfVEVYVAotICAgICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UuZW5jb2RlKCd1dGYtOCcp
Ci0KLSAgICAgICAgZm9yIG1lc3NhZ2VfZmlsdGVyIGluIHNlbGYuX29wdGlvbnMub3V0Z29pbmdf
bWVzc2FnZV9maWx0ZXJzOgotICAgICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2VfZmlsdGVyLmZp
bHRlcihtZXNzYWdlLCBlbmQsIGJpbmFyeSkKLQotICAgICAgICBpZiBzZWxmLl9sYXN0X21lc3Nh
Z2Vfd2FzX2ZyYWdtZW50ZWQ6Ci0gICAgICAgICAgICBpZiBvcGNvZGUgIT0gc2VsZi5fbWVzc2Fn
ZV9vcGNvZGU6Ci0gICAgICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0aW9uKCdN
ZXNzYWdlIHR5cGVzIGFyZSBkaWZmZXJlbnQgaW4gJwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnZnJhbWVzIGZvciB0aGUgc2FtZSBtZXNzYWdlJykKLSAgICAg
ICAgICAgIG9wY29kZSA9IGNvbW1vbi5PUENPREVfQ09OVElOVUFUSU9OCi0gICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICBzZWxmLl9tZXNzYWdlX29wY29kZSA9IG9wY29kZQotCi0gICAgICAgIHNl
bGYuX3dyaXRlX2lubmVyX2ZyYW1lKG9wY29kZSwgbWVzc2FnZSwgZW5kKQotICAgICAgICBzZWxm
Ll9sYXN0X21lc3NhZ2Vfd2FzX2ZyYWdtZW50ZWQgPSBub3QgZW5kCi0KLSAgICBkZWYgX3JlY2Vp
dmVfZnJhbWUoc2VsZik6Ci0gICAgICAgICIiIk92ZXJyaWRlIFN0cmVhbS5fcmVjZWl2ZV9mcmFt
ZS4KLQotICAgICAgICBJbiBhZGRpdGlvbiB0byBjYWxsIFN0cmVhbS5fcmVjZWl2ZV9mcmFtZSwg
dGhpcyBtZXRob2QgYWRkcyB0aGUgYW1vdW50Ci0gICAgICAgIG9mIHBheWxvYWQgdG8gcmVjZWl2
aW5nIHF1b3RhIGFuZCBzZW5kcyBGbG93Q29udHJvbCB0byB0aGUgY2xpZW50LgotICAgICAgICBX
ZSBuZWVkIHRvIGRvIGl0IGhlcmUgYmVjYXVzZSBTdHJlYW0ucmVjZWl2ZV9tZXNzYWdlKCkgaGFu
ZGxlcwotICAgICAgICBjb250cm9sIGZyYW1lcyBpbnRlcm5hbGx5LgotICAgICAgICAiIiIKLSAg
ICAgICAgb3Bjb2RlLCBwYXlsb2FkLCBmaW4sIHJzdjEsIHJzdjIsIHJzdjMgPSBTdHJlYW0uX3Jl
Y2VpdmVfZnJhbWUoc2VsZikKLSAgICAgICAgYW1vdW50ID0gbGVuKHBheWxvYWQpCi0gICAgICAg
ICMgUmVwbGVuaXNoIGV4dHJhIG9uZSBvY3RldCB3aGVuIHJlY2VpdmluZyB0aGUgZmlyc3QgZnJh
Z21lbnRlZCBmcmFtZS4KLSAgICAgICAgaWYgb3Bjb2RlICE9IGNvbW1vbi5PUENPREVfQ09OVElO
VUFUSU9OOgotICAgICAgICAgICAgYW1vdW50ICs9IDEKLSAgICAgICAgc2VsZi5fcmVjZWl2ZV9x
dW90YSArPSBhbW91bnQKLSAgICAgICAgZnJhbWVfZGF0YSA9IF9jcmVhdGVfZmxvd19jb250cm9s
KHNlbGYuX3JlcXVlc3QuY2hhbm5lbF9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFtb3VudCkKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdTZW5kaW5n
IGZsb3cgY29udHJvbCBmb3IgJWQsIHJlcGxlbmlzaGVkPSVkJyAlCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAoc2VsZi5fcmVxdWVzdC5jaGFubmVsX2lkLCBhbW91bnQpKQotICAgICAgICBz
ZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGVfY29udHJvbF9kYXRhKGZyYW1lX2RhdGEpCi0g
ICAgICAgIHJldHVybiBvcGNvZGUsIHBheWxvYWQsIGZpbiwgcnN2MSwgcnN2MiwgcnN2MwotCi0g
ICAgZGVmIF9nZXRfbWVzc2FnZV9mcm9tX2ZyYW1lKHNlbGYsIGZyYW1lKToKLSAgICAgICAgIiIi
T3ZlcnJpZGUgU3RyZWFtLl9nZXRfbWVzc2FnZV9mcm9tX2ZyYW1lLiIiIgotICAgICAgICB0cnk6
Ci0gICAgICAgICAgICBpbm5lcl9tZXNzYWdlID0gc2VsZi5faW5uZXJfbWVzc2FnZV9idWlsZGVy
LmJ1aWxkKGZyYW1lKQotICAgICAgICBleGNlcHQgSW52YWxpZEZyYW1lRXhjZXB0aW9uOgotICAg
ICAgICAgICAgcmFpc2UgTG9naWNhbENoYW5uZWxFcnJvcigKLSAgICAgICAgICAgICAgICBzZWxm
Ll9yZXF1ZXN0LmNoYW5uZWxfaWQsIF9EUk9QX0NPREVfQkFEX0ZSQUdNRU5UQVRJT04pCi0KLSAg
ICAgICAgaWYgaW5uZXJfbWVzc2FnZSBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUK
LSAgICAgICAgc2VsZi5fb3JpZ2luYWxfb3Bjb2RlID0gaW5uZXJfbWVzc2FnZS5vcGNvZGUKLSAg
ICAgICAgcmV0dXJuIGlubmVyX21lc3NhZ2UucGF5bG9hZAotCi0gICAgZGVmIHJlY2VpdmVfbWVz
c2FnZShzZWxmKToKLSAgICAgICAgIiIiT3ZlcnJpZGUgU3RyZWFtLnJlY2VpdmVfbWVzc2FnZS4i
IiIKLSAgICAgICAgIyBKdXN0IGNhbGwgU3RyZWFtLnJlY2VpdmVfbWVzc2FnZSgpLCBidXQgY2F0
Y2gKLSAgICAgICAgIyBMb2dpY2FsQ29ubmVjdGlvbkNsb3NlZEV4Y2VwdGlvbiwgd2hpY2ggaXMg
cmFpc2VkIHdoZW4gdGhlIGxvZ2ljYWwKLSAgICAgICAgIyBjb25uZWN0aW9uIGhhcyBjbG9zZWQg
Z3JhY2VmdWxseS4KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIFN0cmVhbS5yZWNl
aXZlX21lc3NhZ2Uoc2VsZikKLSAgICAgICAgZXhjZXB0IExvZ2ljYWxDb25uZWN0aW9uQ2xvc2Vk
RXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVzJywgZSkK
LSAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICBkZWYgX3NlbmRfY2xvc2luZ19oYW5kc2hh
a2Uoc2VsZiwgY29kZSwgcmVhc29uKToKLSAgICAgICAgIiIiT3ZlcnJpZGUgU3RyZWFtLl9zZW5k
X2Nsb3NpbmdfaGFuZHNoYWtlLiIiIgotICAgICAgICBib2R5ID0gY3JlYXRlX2Nsb3NpbmdfaGFu
ZHNoYWtlX2JvZHkoY29kZSwgcmVhc29uKQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1Nl
bmRpbmcgY2xvc2luZyBoYW5kc2hha2UgZm9yICVkOiAoJXIsICVyKScgJQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKHNlbGYuX3JlcXVlc3QuY2hhbm5lbF9pZCwgY29kZSwgcmVhc29uKSkK
LSAgICAgICAgc2VsZi5fd3JpdGVfaW5uZXJfZnJhbWUoY29tbW9uLk9QQ09ERV9DTE9TRSwgYm9k
eSwgZW5kPVRydWUpCi0KLSAgICAgICAgc2VsZi5fcmVxdWVzdC5zZXJ2ZXJfdGVybWluYXRlZCA9
IFRydWUKLQotICAgIGRlZiBzZW5kX3Bpbmcoc2VsZiwgYm9keT0nJyk6Ci0gICAgICAgICIiIk92
ZXJyaWRlIFN0cmVhbS5zZW5kX3BpbmcuIiIiCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1Zygn
U2VuZGluZyBwaW5nIG9uIGxvZ2ljYWwgY2hhbm5lbCAlZDogJXInICUKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChzZWxmLl9yZXF1ZXN0LmNoYW5uZWxfaWQsIGJvZHkpKQotICAgICAgICBz
ZWxmLl93cml0ZV9pbm5lcl9mcmFtZShjb21tb24uT1BDT0RFX1BJTkcsIGJvZHksIGVuZD1UcnVl
KQotCi0gICAgICAgIHNlbGYuX3BpbmdfcXVldWUuYXBwZW5kKGJvZHkpCi0KLSAgICBkZWYgX3Nl
bmRfcG9uZyhzZWxmLCBib2R5KToKLSAgICAgICAgIiIiT3ZlcnJpZGUgU3RyZWFtLl9zZW5kX3Bv
bmcuIiIiCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnU2VuZGluZyBwb25nIG9uIGxvZ2lj
YWwgY2hhbm5lbCAlZDogJXInICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLl9y
ZXF1ZXN0LmNoYW5uZWxfaWQsIGJvZHkpKQotICAgICAgICBzZWxmLl93cml0ZV9pbm5lcl9mcmFt
ZShjb21tb24uT1BDT0RFX1BPTkcsIGJvZHksIGVuZD1UcnVlKQotCi0gICAgZGVmIGNsb3NlX2Nv
bm5lY3Rpb24oc2VsZiwgY29kZT1jb21tb24uU1RBVFVTX05PUk1BTF9DTE9TVVJFLCByZWFzb249
JycpOgotICAgICAgICAiIiJPdmVycmlkZSBTdHJlYW0uY2xvc2VfY29ubmVjdGlvbi4iIiIKLSAg
ICAgICAgIyBUT0RPKGJhc2hpKTogSW1wbGVtZW50Ci0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1
ZygnQ2xvc2luZyBsb2dpY2FsIGNvbm5lY3Rpb24gJWQnICUKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbGYuX3JlcXVlc3QuY2hhbm5lbF9pZCkKLSAgICAgICAgc2VsZi5fcmVxdWVzdC5z
ZXJ2ZXJfdGVybWluYXRlZCA9IFRydWUKLQotICAgIGRlZiBzdG9wX3NlbmRpbmcoc2VsZik6Ci0g
ICAgICAgICIiIlN0b3AgYWNjZXB0aW5nIG5ldyBzZW5kIG9wZXJhdGlvbiAoX3dyaXRlX2lubmVy
X2ZyYW1lKS4iIiIKLSAgICAgICAgc2VsZi5fc2VuZF9jb25kaXRpb24uYWNxdWlyZSgpCi0gICAg
ICAgIHNlbGYuX3NlbmRfY2xvc2VkID0gVHJ1ZQotICAgICAgICBzZWxmLl9zZW5kX2NvbmRpdGlv
bi5ub3RpZnkoKQotICAgICAgICBzZWxmLl9zZW5kX2NvbmRpdGlvbi5yZWxlYXNlKCkKLQotCi1j
bGFzcyBfT3V0Z29pbmdEYXRhKG9iamVjdCk6Ci0KLSAgICAiIiJTaW1wbGUgZGF0YS9jaGFubmVs
IGNvbnRhaW5lci4KLQotICAgIEEgc3RydWN0dXJlIHRoYXQgaG9sZHMgZGF0YSB0byBiZSBzZW50
IHZpYSBwaHlzaWNhbCBjb25uZWN0aW9uIGFuZAotICAgIG9yaWdpbiBvZiB0aGUgZGF0YS4KLSAg
ICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjaGFubmVsX2lkLCBkYXRhKToKLSAgICAg
ICAgc2VsZi5jaGFubmVsX2lkID0gY2hhbm5lbF9pZAotICAgICAgICBzZWxmLmRhdGEgPSBkYXRh
Ci0KLQotY2xhc3MgX1BoeXNpY2FsQ29ubmVjdGlvbldyaXRlcih0aHJlYWRpbmcuVGhyZWFkKToK
LQotICAgICIiIkEgdGhyZWFkIHRoYXQgaXMgcmVzcG9uc2libGUgZm9yIHdyaXRpbmcgZGF0YSB0
byBwaHlzaWNhbCBjb25uZWN0aW9uLgotCi0gICAgVE9ETyhiYXNoaSk6IE1ha2Ugc3VyZSB0aGVy
ZSBpcyBubyB0aHJlYWQtc2FmZXR5IHByb2JsZW0gd2hlbiB0aGUgcmVhZGVyCi0gICAgdGhyZWFk
IHJlYWRzIGRhdGEgZnJvbSB0aGUgc2FtZSBzb2NrZXQgYXQgYSB0aW1lLgotICAgICIiIgotCi0g
ICAgZGVmIF9faW5pdF9fKHNlbGYsIG11eF9oYW5kbGVyKToKLSAgICAgICAgIiIiQ29uc3RydWN0
IGFuIGluc3RhbmNlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBtdXhfaGFuZGxlcjog
X011eEhhbmRsZXIgaW5zdGFuY2UuCi0gICAgICAgICIiIgotICAgICAgICB0aHJlYWRpbmcuVGhy
ZWFkLl9faW5pdF9fKHNlbGYpCi0gICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNz
X2xvZ2dlcihzZWxmKQotICAgICAgICBzZWxmLl9tdXhfaGFuZGxlciA9IG11eF9oYW5kbGVyCi0g
ICAgICAgIHNlbGYuc2V0RGFlbW9uKFRydWUpCi0KLSAgICAgICAgIyBXaGVuIHNldCwgbWFrZSB0
aGlzIHRocmVhZCBzdG9wIGFjY2VwdGluZyBuZXcgZGF0YSwgZmx1c2ggcGVuZGluZwotICAgICAg
ICAjIGRhdGEgYW5kIGV4aXQuCi0gICAgICAgIHNlbGYuX3N0b3BfcmVxdWVzdGVkID0gRmFsc2UK
LSAgICAgICAgIyBUaGUgY2xvc2UgY29kZSBvZiB0aGUgcGh5c2ljYWwgY29ubmVjdGlvbi4KLSAg
ICAgICAgc2VsZi5fY2xvc2VfY29kZSA9IGNvbW1vbi5TVEFUVVNfTk9STUFMX0NMT1NVUkUKLSAg
ICAgICAgIyBEZXF1ZSBmb3IgcGFzc2luZyB3cml0ZSBkYXRhLiBJdCdzIHByb3RlY3RlZCBieSBf
ZGVxdWVfY29uZGl0aW9uCi0gICAgICAgICMgdW50aWwgX3N0b3BfcmVxdWVzdGVkIGlzIHNldC4K
LSAgICAgICAgc2VsZi5fZGVxdWUgPSBjb2xsZWN0aW9ucy5kZXF1ZSgpCi0gICAgICAgICMgLSBQ
cm90ZWN0cyBfZGVxdWUsIF9zdG9wX3JlcXVlc3RlZCBhbmQgX2Nsb3NlX2NvZGUKLSAgICAgICAg
IyAtIFNpZ25hbHMgdGhyZWFkcyB3YWl0aW5nIGZvciB0aGVtIHRvIGJlIGF2YWlsYWJsZQotICAg
ICAgICBzZWxmLl9kZXF1ZV9jb25kaXRpb24gPSB0aHJlYWRpbmcuQ29uZGl0aW9uKCkKLQotICAg
IGRlZiBwdXRfb3V0Z29pbmdfZGF0YShzZWxmLCBkYXRhKToKLSAgICAgICAgIiIiUHV0IG91dGdv
aW5nIGRhdGEuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIGRhdGE6IF9PdXRnb2luZ0Rh
dGEgaW5zdGFuY2UuCi0gICAgICAgIFJhaXNlczoKLSAgICAgICAgICAgIEJhZE9wZXJhdGlvbkV4
Y2VwdGlvbjogd2hlbiB0aGUgdGhyZWFkIGhhcyBiZWVuIHJlcXVlc3RlZCB0bwotICAgICAgICAg
ICAgICAgIHRlcm1pbmF0ZS4KLSAgICAgICAgIiIiCi0gICAgICAgIHRyeToKLSAgICAgICAgICAg
IHNlbGYuX2RlcXVlX2NvbmRpdGlvbi5hY3F1aXJlKCkKLSAgICAgICAgICAgIGlmIHNlbGYuX3N0
b3BfcmVxdWVzdGVkOgotICAgICAgICAgICAgICAgIHJhaXNlIEJhZE9wZXJhdGlvbkV4Y2VwdGlv
bignQ2Fubm90IHdyaXRlIGRhdGEgYW55bW9yZScpCi0KLSAgICAgICAgICAgIHNlbGYuX2RlcXVl
LmFwcGVuZChkYXRhKQotICAgICAgICAgICAgc2VsZi5fZGVxdWVfY29uZGl0aW9uLm5vdGlmeSgp
Ci0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9kZXF1ZV9jb25kaXRpb24ucmVs
ZWFzZSgpCi0KLSAgICBkZWYgX3dyaXRlX2RhdGEoc2VsZiwgb3V0Z29pbmdfZGF0YSk6Ci0gICAg
ICAgIG1lc3NhZ2UgPSAoX2VuY29kZV9jaGFubmVsX2lkKG91dGdvaW5nX2RhdGEuY2hhbm5lbF9p
ZCkgKwotICAgICAgICAgICAgICAgICAgIG91dGdvaW5nX2RhdGEuZGF0YSkKLSAgICAgICAgdHJ5
OgotICAgICAgICAgICAgc2VsZi5fbXV4X2hhbmRsZXIucGh5c2ljYWxfc3RyZWFtLnNlbmRfbWVz
c2FnZSgKLSAgICAgICAgICAgICAgICBtZXNzYWdlPW1lc3NhZ2UsIGVuZD1UcnVlLCBiaW5hcnk9
VHJ1ZSkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgdXRpbC5w
cmVwZW5kX21lc3NhZ2VfdG9fZXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdGYWlsZWQgdG8g
c2VuZCBtZXNzYWdlIHRvICVyOiAnICUKLSAgICAgICAgICAgICAgICAoc2VsZi5fbXV4X2hhbmRs
ZXIucGh5c2ljYWxfY29ubmVjdGlvbi5yZW1vdGVfYWRkciwpLCBlKQotICAgICAgICAgICAgcmFp
c2UKLQotICAgICAgICAjIFRPRE8oYmFzaGkpOiBJdCB3b3VsZCBiZSBiZXR0ZXIgdG8gYmxvY2sg
dGhlIHRocmVhZCB0aGF0IHNlbmRzCi0gICAgICAgICMgY29udHJvbCBkYXRhIGFzIHdlbGwuCi0g
ICAgICAgIGlmIG91dGdvaW5nX2RhdGEuY2hhbm5lbF9pZCAhPSBfQ09OVFJPTF9DSEFOTkVMX0lE
OgotICAgICAgICAgICAgc2VsZi5fbXV4X2hhbmRsZXIubm90aWZ5X3dyaXRlX2RhdGFfZG9uZShv
dXRnb2luZ19kYXRhLmNoYW5uZWxfaWQpCi0KLSAgICBkZWYgcnVuKHNlbGYpOgotICAgICAgICB0
cnk6Ci0gICAgICAgICAgICBzZWxmLl9kZXF1ZV9jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAg
ICAgICB3aGlsZSBub3Qgc2VsZi5fc3RvcF9yZXF1ZXN0ZWQ6Ci0gICAgICAgICAgICAgICAgaWYg
bGVuKHNlbGYuX2RlcXVlKSA9PSAwOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9kZXF1ZV9j
b25kaXRpb24ud2FpdCgpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAg
ICAgICAgICBvdXRnb2luZ19kYXRhID0gc2VsZi5fZGVxdWUucG9wbGVmdCgpCi0KLSAgICAgICAg
ICAgICAgICBzZWxmLl9kZXF1ZV9jb25kaXRpb24ucmVsZWFzZSgpCi0gICAgICAgICAgICAgICAg
c2VsZi5fd3JpdGVfZGF0YShvdXRnb2luZ19kYXRhKQotICAgICAgICAgICAgICAgIHNlbGYuX2Rl
cXVlX2NvbmRpdGlvbi5hY3F1aXJlKCkKLQotICAgICAgICAgICAgIyBGbHVzaCBkZXF1ZS4KLSAg
ICAgICAgICAgICMKLSAgICAgICAgICAgICMgQXQgdGhpcyBwb2ludCwgc2VsZi5fZGVxdWVfY29u
ZGl0aW9uIGlzIGFsd2F5cyBhY3F1aXJlZC4KLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAg
ICAgICB3aGlsZSBsZW4oc2VsZi5fZGVxdWUpID4gMDoKLSAgICAgICAgICAgICAgICAgICAgb3V0
Z29pbmdfZGF0YSA9IHNlbGYuX2RlcXVlLnBvcGxlZnQoKQotICAgICAgICAgICAgICAgICAgICBz
ZWxmLl93cml0ZV9kYXRhKG91dGdvaW5nX2RhdGEpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAg
ICAgICAgICAgICAgIHNlbGYuX2RlcXVlX2NvbmRpdGlvbi5yZWxlYXNlKCkKLQotICAgICAgICAg
ICAgIyBDbG9zZSBwaHlzaWNhbCBjb25uZWN0aW9uLgotICAgICAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgICAgICMgRG9uJ3Qgd2FpdCB0aGUgcmVzcG9uc2UgaGVyZS4gVGhlIHJlc3BvbnNlIHdp
bGwgYmUgcmVhZAotICAgICAgICAgICAgICAgICMgYnkgdGhlIHJlYWRlciB0aHJlYWQuCi0gICAg
ICAgICAgICAgICAgc2VsZi5fbXV4X2hhbmRsZXIucGh5c2ljYWxfc3RyZWFtLmNsb3NlX2Nvbm5l
Y3Rpb24oCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2Nsb3NlX2NvZGUsIHdhaXRfcmVzcG9u
c2U9RmFsc2UpCi0gICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAg
ICAgICAgdXRpbC5wcmVwZW5kX21lc3NhZ2VfdG9fZXhjZXB0aW9uKAotICAgICAgICAgICAgICAg
ICAgICAnRmFpbGVkIHRvIGNsb3NlIHRoZSBwaHlzaWNhbCBjb25uZWN0aW9uOiAlcicgJSBlKQot
ICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxm
Ll9tdXhfaGFuZGxlci5ub3RpZnlfd3JpdGVyX2RvbmUoKQotCi0gICAgZGVmIHN0b3Aoc2VsZiwg
Y2xvc2VfY29kZT1jb21tb24uU1RBVFVTX05PUk1BTF9DTE9TVVJFKToKLSAgICAgICAgIiIiU3Rv
cCB0aGUgd3JpdGVyIHRocmVhZC4iIiIKLSAgICAgICAgc2VsZi5fZGVxdWVfY29uZGl0aW9uLmFj
cXVpcmUoKQotICAgICAgICBzZWxmLl9zdG9wX3JlcXVlc3RlZCA9IFRydWUKLSAgICAgICAgc2Vs
Zi5fY2xvc2VfY29kZSA9IGNsb3NlX2NvZGUKLSAgICAgICAgc2VsZi5fZGVxdWVfY29uZGl0aW9u
Lm5vdGlmeSgpCi0gICAgICAgIHNlbGYuX2RlcXVlX2NvbmRpdGlvbi5yZWxlYXNlKCkKLQotCi1j
bGFzcyBfUGh5c2ljYWxDb25uZWN0aW9uUmVhZGVyKHRocmVhZGluZy5UaHJlYWQpOgotCi0gICAg
IiIiQSB0aHJlYWQgdGhhdCBpcyByZXNwb25zaWJsZSBmb3IgcmVhZGluZyBkYXRhIGZyb20gcGh5
c2ljYWwgY29ubmVjdGlvbi4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtdXhf
aGFuZGxlcik6Ci0gICAgICAgICIiIkNvbnN0cnVjdCBhbiBpbnN0YW5jZS4KLQotICAgICAgICBB
cmdzOgotICAgICAgICAgICAgbXV4X2hhbmRsZXI6IF9NdXhIYW5kbGVyIGluc3RhbmNlLgotICAg
ICAgICAiIiIKLSAgICAgICAgdGhyZWFkaW5nLlRocmVhZC5fX2luaXRfXyhzZWxmKQotICAgICAg
ICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKLSAgICAgICAgc2Vs
Zi5fbXV4X2hhbmRsZXIgPSBtdXhfaGFuZGxlcgotICAgICAgICBzZWxmLnNldERhZW1vbihUcnVl
KQotCi0gICAgZGVmIHJ1bihzZWxmKToKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAg
IHRyeToKLSAgICAgICAgICAgICAgICBwaHlzaWNhbF9zdHJlYW0gPSBzZWxmLl9tdXhfaGFuZGxl
ci5waHlzaWNhbF9zdHJlYW0KLSAgICAgICAgICAgICAgICBtZXNzYWdlID0gcGh5c2ljYWxfc3Ry
ZWFtLnJlY2VpdmVfbWVzc2FnZSgpCi0gICAgICAgICAgICAgICAgaWYgbWVzc2FnZSBpcyBOb25l
OgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICMgQmVsb3cgaGFw
cGVucyBvbmx5IHdoZW4gYSBkYXRhIG1lc3NhZ2UgaXMgcmVjZWl2ZWQuCi0gICAgICAgICAgICAg
ICAgb3Bjb2RlID0gcGh5c2ljYWxfc3RyZWFtLmdldF9sYXN0X3JlY2VpdmVkX29wY29kZSgpCi0g
ICAgICAgICAgICAgICAgaWYgb3Bjb2RlICE9IGNvbW1vbi5PUENPREVfQklOQVJZOgotICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9tdXhfaGFuZGxlci5mYWlsX3BoeXNpY2FsX2Nvbm5lY3Rpb24o
Ci0gICAgICAgICAgICAgICAgICAgICAgICBfRFJPUF9DT0RFX0lOVkFMSURfRU5DQVBTVUxBVElO
R19NRVNTQUdFLAotICAgICAgICAgICAgICAgICAgICAgICAgJ1JlY2VpdmVkIGEgdGV4dCBtZXNz
YWdlIG9uIHBoeXNpY2FsIGNvbm5lY3Rpb24nKQotICAgICAgICAgICAgICAgICAgICBicmVhawot
Ci0gICAgICAgICAgICBleGNlcHQgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24gYXMgZToK
LSAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVzJywgZSkKLSAgICAgICAgICAg
ICAgICBicmVhawotCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbXV4
X2hhbmRsZXIuZGlzcGF0Y2hfbWVzc2FnZShtZXNzYWdlKQotICAgICAgICAgICAgZXhjZXB0IFBo
eXNpY2FsQ29ubmVjdGlvbkVycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbXV4X2hh
bmRsZXIuZmFpbF9waHlzaWNhbF9jb25uZWN0aW9uKAotICAgICAgICAgICAgICAgICAgICBlLmRy
b3BfY29kZSwgZS5tZXNzYWdlKQotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBl
eGNlcHQgTG9naWNhbENoYW5uZWxFcnJvciBhcyBlOgotICAgICAgICAgICAgICAgIHNlbGYuX211
eF9oYW5kbGVyLmZhaWxfbG9naWNhbF9jaGFubmVsKAotICAgICAgICAgICAgICAgICAgICBlLmNo
YW5uZWxfaWQsIGUuZHJvcF9jb2RlLCBlLm1lc3NhZ2UpCi0gICAgICAgICAgICBleGNlcHQgRXhj
ZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKHRyYWNlYmFj
ay5mb3JtYXRfZXhjKCkpCi0gICAgICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICBzZWxmLl9t
dXhfaGFuZGxlci5ub3RpZnlfcmVhZGVyX2RvbmUoKQotCi0KLWNsYXNzIF9Xb3JrZXIodGhyZWFk
aW5nLlRocmVhZCk6Ci0KLSAgICAiIiJBIHRocmVhZCB0aGF0IGlzIHJlc3BvbnNpYmxlIGZvciBy
dW5uaW5nIHRoZSBjb3JyZXNwb25kaW5nIGFwcGxpY2F0aW9uCi0gICAgaGFuZGxlci4KLSAgICAi
IiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtdXhfaGFuZGxlciwgcmVxdWVzdCk6Ci0gICAg
ICAgICIiIkNvbnN0cnVjdCBhbiBpbnN0YW5jZS4KLQotICAgICAgICBBcmdzOgotICAgICAgICAg
ICAgbXV4X2hhbmRsZXI6IF9NdXhIYW5kbGVyIGluc3RhbmNlLgotICAgICAgICAgICAgcmVxdWVz
dDogX0xvZ2ljYWxSZXF1ZXN0IGluc3RhbmNlLgotICAgICAgICAiIiIKLSAgICAgICAgdGhyZWFk
aW5nLlRocmVhZC5fX2luaXRfXyhzZWxmKQotICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdl
dF9jbGFzc19sb2dnZXIoc2VsZikKLSAgICAgICAgc2VsZi5fbXV4X2hhbmRsZXIgPSBtdXhfaGFu
ZGxlcgotICAgICAgICBzZWxmLl9yZXF1ZXN0ID0gcmVxdWVzdAotICAgICAgICBzZWxmLnNldERh
ZW1vbihUcnVlKQotCi0gICAgZGVmIHJ1bihzZWxmKToKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRl
YnVnKCdMb2dpY2FsIGNoYW5uZWwgd29ya2VyIHN0YXJ0ZWQuIChpZD0lZCknICUKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3QuY2hhbm5lbF9pZCkKLSAgICAgICAgdHJ5
OgotICAgICAgICAgICAgIyBOb24tY3JpdGljYWwgZXhjZXB0aW9ucyB3aWxsIGJlIGhhbmRsZWQg
YnkgZGlzcGF0Y2hlci4KLSAgICAgICAgICAgIHNlbGYuX211eF9oYW5kbGVyLmRpc3BhdGNoZXIu
dHJhbnNmZXJfZGF0YShzZWxmLl9yZXF1ZXN0KQotICAgICAgICBleGNlcHQgTG9naWNhbENoYW5u
ZWxFcnJvciBhcyBlOgotICAgICAgICAgICAgc2VsZi5fbXV4X2hhbmRsZXIuZmFpbF9sb2dpY2Fs
X2NoYW5uZWwoCi0gICAgICAgICAgICAgICAgZS5jaGFubmVsX2lkLCBlLmRyb3BfY29kZSwgZS5t
ZXNzYWdlKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fbXV4X2hhbmRsZXIu
bm90aWZ5X3dvcmtlcl9kb25lKHNlbGYuX3JlcXVlc3QuY2hhbm5lbF9pZCkKLQotCi1jbGFzcyBf
TXV4SGFuZHNoYWtlcihoeWJpLkhhbmRzaGFrZXIpOgotCi0gICAgIiIiT3BlbmluZyBoYW5kc2hh
a2UgcHJvY2Vzc29yIGZvciBtdWx0aXBsZXhpbmcuIiIiCi0KLSAgICBfRFVNTVlfV0VCU09DS0VU
X0tFWSA9ICdkR2hsSUhOaGJYQnNaU0J1YjI1alpRPT0nCi0KLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgcmVxdWVzdCwgZGlzcGF0Y2hlciwgc2VuZF9xdW90YSwgcmVjZWl2ZV9xdW90YSk6Ci0gICAg
ICAgICIiIkNvbnN0cnVjdCBhbiBpbnN0YW5jZS4KLQotICAgICAgICBBcmdzOgotICAgICAgICAg
ICAgcmVxdWVzdDogX0xvZ2ljYWxSZXF1ZXN0IGluc3RhbmNlLgotICAgICAgICAgICAgZGlzcGF0
Y2hlcjogRGlzcGF0Y2hlciBpbnN0YW5jZSAoZGlzcGF0Y2guRGlzcGF0Y2hlcikuCi0gICAgICAg
ICAgICBzZW5kX3F1b3RhOiBJbml0aWFsIHNlbmQgcXVvdGEuCi0gICAgICAgICAgICByZWNlaXZl
X3F1b3RhOiBJbml0aWFsIHJlY2VpdmUgcXVvdGEuCi0gICAgICAgICIiIgotICAgICAgICBoeWJp
LkhhbmRzaGFrZXIuX19pbml0X18oc2VsZiwgcmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAg
c2VsZi5fc2VuZF9xdW90YSA9IHNlbmRfcXVvdGEKLSAgICAgICAgc2VsZi5fcmVjZWl2ZV9xdW90
YSA9IHJlY2VpdmVfcXVvdGEKLQotICAgICAgICAjIEFwcGVuZCBoZWFkZXJzIHdoaWNoIHNob3Vs
ZCBub3QgYmUgaW5jbHVkZWQgaW4gaGFuZHNoYWtlIGZpZWxkIG9mCi0gICAgICAgICMgQWRkQ2hh
bm5lbFJlcXVlc3QuCi0gICAgICAgICMgVE9ETyhiYXNoaSk6IE1ha2Ugc3VyZSB3aGV0aGVyIHdl
IHNob3VsZCByYWlzZSBleGNlcHRpb24gd2hlbgotICAgICAgICAjICAgICB0aGVzZSBoZWFkZXJz
IGFyZSBpbmNsdWRlZCBhbHJlYWR5LgotICAgICAgICByZXF1ZXN0LmhlYWRlcnNfaW5bY29tbW9u
LlVQR1JBREVfSEVBREVSXSA9ICgKLSAgICAgICAgICAgIGNvbW1vbi5XRUJTT0NLRVRfVVBHUkFE
RV9UWVBFKQotICAgICAgICByZXF1ZXN0LmhlYWRlcnNfaW5bY29tbW9uLlNFQ19XRUJTT0NLRVRf
VkVSU0lPTl9IRUFERVJdID0gKAotICAgICAgICAgICAgc3RyKGNvbW1vbi5WRVJTSU9OX0hZQklf
TEFURVNUKSkKLSAgICAgICAgcmVxdWVzdC5oZWFkZXJzX2luW2NvbW1vbi5TRUNfV0VCU09DS0VU
X0tFWV9IRUFERVJdID0gKAotICAgICAgICAgICAgc2VsZi5fRFVNTVlfV0VCU09DS0VUX0tFWSkK
LQotICAgIGRlZiBfY3JlYXRlX3N0cmVhbShzZWxmLCBzdHJlYW1fb3B0aW9ucyk6Ci0gICAgICAg
ICIiIk92ZXJyaWRlIGh5YmkuSGFuZHNoYWtlci5fY3JlYXRlX3N0cmVhbS4iIiIKLSAgICAgICAg
c2VsZi5fbG9nZ2VyLmRlYnVnKCdDcmVhdGluZyBsb2dpY2FsIHN0cmVhbSBmb3IgJWQnICUKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3QuY2hhbm5lbF9pZCkKLSAgICAg
ICAgcmV0dXJuIF9Mb2dpY2FsU3RyZWFtKAotICAgICAgICAgICAgc2VsZi5fcmVxdWVzdCwgc3Ry
ZWFtX29wdGlvbnMsIHNlbGYuX3NlbmRfcXVvdGEsCi0gICAgICAgICAgICBzZWxmLl9yZWNlaXZl
X3F1b3RhKQotCi0gICAgZGVmIF9jcmVhdGVfaGFuZHNoYWtlX3Jlc3BvbnNlKHNlbGYsIGFjY2Vw
dCk6Ci0gICAgICAgICIiIk92ZXJyaWRlIGh5YmkuX2NyZWF0ZV9oYW5kc2hha2VfcmVzcG9uc2Uu
IiIiCi0gICAgICAgIHJlc3BvbnNlID0gW10KLQotICAgICAgICByZXNwb25zZS5hcHBlbmQoJ0hU
VFAvMS4xIDEwMSBTd2l0Y2hpbmcgUHJvdG9jb2xzXHJcbicpCi0KLSAgICAgICAgIyBVcGdyYWRl
IGFuZCBTZWMtV2ViU29ja2V0LUFjY2VwdCBzaG91bGQgYmUgZXhjbHVkZWQuCi0gICAgICAgIHJl
c3BvbnNlLmFwcGVuZCgnJXM6ICVzXHJcbicgJSAoCi0gICAgICAgICAgICBjb21tb24uQ09OTkVD
VElPTl9IRUFERVIsIGNvbW1vbi5VUEdSQURFX0NPTk5FQ1RJT05fVFlQRSkpCi0gICAgICAgIGlm
IHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByZXNw
b25zZS5hcHBlbmQoJyVzOiAlc1xyXG4nICUgKAotICAgICAgICAgICAgICAgIGNvbW1vbi5TRUNf
V0VCU09DS0VUX1BST1RPQ09MX0hFQURFUiwKLSAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0
LndzX3Byb3RvY29sKSkKLSAgICAgICAgaWYgKHNlbGYuX3JlcXVlc3Qud3NfZXh0ZW5zaW9ucyBp
cyBub3QgTm9uZSBhbmQKLSAgICAgICAgICAgIGxlbihzZWxmLl9yZXF1ZXN0LndzX2V4dGVuc2lv
bnMpICE9IDApOgotICAgICAgICAgICAgcmVzcG9uc2UuYXBwZW5kKCclczogJXNcclxuJyAlICgK
LSAgICAgICAgICAgICAgICBjb21tb24uU0VDX1dFQlNPQ0tFVF9FWFRFTlNJT05TX0hFQURFUiwK
LSAgICAgICAgICAgICAgICBjb21tb24uZm9ybWF0X2V4dGVuc2lvbnMoc2VsZi5fcmVxdWVzdC53
c19leHRlbnNpb25zKSkpCi0gICAgICAgIHJlc3BvbnNlLmFwcGVuZCgnXHJcbicpCi0KLSAgICAg
ICAgcmV0dXJuICcnLmpvaW4ocmVzcG9uc2UpCi0KLSAgICBkZWYgX3NlbmRfaGFuZHNoYWtlKHNl
bGYsIGFjY2VwdCk6Ci0gICAgICAgICIiIk92ZXJyaWRlIGh5YmkuSGFuZHNoYWtlci5fc2VuZF9o
YW5kc2hha2UuIiIiCi0gICAgICAgICMgRG9uJ3Qgc2VuZCBoYW5kc2hha2UgcmVzcG9uc2UgZm9y
IHRoZSBkZWZhdWx0IGNoYW5uZWwKLSAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC5jaGFubmVsX2lk
ID09IF9ERUZBVUxUX0NIQU5ORUxfSUQ6Ci0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBo
YW5kc2hha2VfcmVzcG9uc2UgPSBzZWxmLl9jcmVhdGVfaGFuZHNoYWtlX3Jlc3BvbnNlKGFjY2Vw
dCkKLSAgICAgICAgZnJhbWVfZGF0YSA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVzcG9uc2UoCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC5jaGFubmVsX2lkLAotICAgICAg
ICAgICAgICAgICAgICAgICAgIGhhbmRzaGFrZV9yZXNwb25zZSkKLSAgICAgICAgc2VsZi5fbG9n
Z2VyLmRlYnVnKCdTZW5kaW5nIGhhbmRzaGFrZSByZXNwb25zZSBmb3IgJWQ6ICVyJyAlCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5fcmVxdWVzdC5jaGFubmVsX2lkLCBmcmFtZV9k
YXRhKSkKLSAgICAgICAgc2VsZi5fcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlX2NvbnRyb2xfZGF0
YShmcmFtZV9kYXRhKQotCi0KLWNsYXNzIF9Mb2dpY2FsQ2hhbm5lbERhdGEob2JqZWN0KToKLQot
ICAgICIiIkEgc3RydWN0dXJlIHRoYXQgaG9sZHMgaW5mb3JtYXRpb24gYWJvdXQgbG9naWNhbCBj
aGFubmVsLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3QsIHdvcmtlcik6Ci0g
ICAgICAgIHNlbGYucmVxdWVzdCA9IHJlcXVlc3QKLSAgICAgICAgc2VsZi53b3JrZXIgPSB3b3Jr
ZXIKLSAgICAgICAgc2VsZi5kcm9wX2NvZGUgPSBfRFJPUF9DT0RFX05PUk1BTF9DTE9TVVJFCi0g
ICAgICAgIHNlbGYuZHJvcF9tZXNzYWdlID0gJycKLQotCi1jbGFzcyBfSGFuZHNoYWtlRGVsdGFC
YXNlKG9iamVjdCk6Ci0gICAgIiIiQSBjbGFzcyB0aGF0IGhvbGRzIGluZm9ybWF0aW9uIGZvciBk
ZWx0YS1lbmNvZGVkIGhhbmRzaGFrZS4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBoZWFk
ZXJzKToKLSAgICAgICAgc2VsZi5faGVhZGVycyA9IGhlYWRlcnMKLQotICAgIGRlZiBjcmVhdGVf
aGVhZGVycyhzZWxmLCBkZWx0YT1Ob25lKToKLSAgICAgICAgIiIiQ3JlYXRlcyByZXF1ZXN0IGhl
YWRlcnMgZm9yIGFuIEFkZENoYW5uZWxSZXF1ZXN0IHRoYXQgaGFzCi0gICAgICAgIGRlbHRhLWVu
Y29kZWQgaGFuZHNoYWtlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBkZWx0YTogaGVh
ZGVycyBzaG91bGQgYmUgb3ZlcnJpZGRlbi4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgaGVhZGVy
cyA9IGNvcHkuY29weShzZWxmLl9oZWFkZXJzKQotICAgICAgICBpZiBkZWx0YToKLSAgICAgICAg
ICAgIGZvciBrZXksIHZhbHVlIGluIGRlbHRhLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgIyBU
aGUgc3BlYyByZXF1aXJlcyB0aGF0IGEgaGVhZGVyIHdpdGggYW4gZW1wdHkgdmFsdWUgaXMKLSAg
ICAgICAgICAgICAgICAjIHJlbW92ZWQgZnJvbSB0aGUgZGVsdGEgYmFzZS4KLSAgICAgICAgICAg
ICAgICBpZiBsZW4odmFsdWUpID09IDAgYW5kIGhlYWRlcnMuaGFzX2tleShrZXkpOgotICAgICAg
ICAgICAgICAgICAgICBkZWwgaGVhZGVyc1trZXldCi0gICAgICAgICAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgICAgICAgICAgaGVhZGVyc1trZXldID0gdmFsdWUKLSAgICAgICAgcmV0dXJuIGhl
YWRlcnMKLQotCi1jbGFzcyBfTXV4SGFuZGxlcihvYmplY3QpOgotICAgICIiIk11bHRpcGxleGlu
ZyBoYW5kbGVyLiBXaGVuIGEgaGFuZGxlciBzdGFydHMsIGl0IGxhdW5jaGVzIHRocmVlCi0gICAg
dGhyZWFkczsgdGhlIHJlYWRlciB0aHJlYWQsIHRoZSB3cml0ZXIgdGhyZWFkLCBhbmQgYSB3b3Jr
ZXIgdGhyZWFkLgotCi0gICAgVGhlIHJlYWRlciB0aHJlYWQgcmVhZHMgZGF0YSBmcm9tIHRoZSBw
aHlzaWNhbCBzdHJlYW0sIGkuZS4sIHRoZQotICAgIHdzX3N0cmVhbSBvYmplY3Qgb2YgdGhlIHVu
ZGVybHlpbmcgd2Vic29ja2V0IGNvbm5lY3Rpb24uIFRoZSByZWFkZXIKLSAgICB0aHJlYWQgaW50
ZXJwcmV0cyBtdWx0aXBsZXhlZCBmcmFtZXMgYW5kIGRpc3BhdGNoZXMgdGhlbSB0byBsb2dpY2Fs
Ci0gICAgY2hhbm5lbHMuIE1ldGhvZHMgb2YgdGhpcyBjbGFzcyBhcmUgbW9zdGx5IGNhbGxlZCBi
eSB0aGUgcmVhZGVyIHRocmVhZC4KLQotICAgIFRoZSB3cml0ZXIgdGhyZWFkIHNlbmRzIG11bHRp
cGxleGVkIGZyYW1lcyB3aGljaCBhcmUgY3JlYXRlZCBieQotICAgIGxvZ2ljYWwgY2hhbm5lbHMg
dmlhIHRoZSBwaHlzaWNhbCBjb25uZWN0aW9uLgotCi0gICAgVGhlIHdvcmtlciB0aHJlYWQgbGF1
bmNoZWQgYXQgdGhlIHN0YXJ0aW5nIHBvaW50IGhhbmRsZXMgdGhlCi0gICAgIkltcGxpY2l0bHkg
T3BlbmVkIENvbm5lY3Rpb24iLiBJZiBtdWx0aXBsZXhpbmcgaGFuZGxlciByZWNlaXZlcwotICAg
IGFuIEFkZENoYW5uZWxSZXF1ZXN0IGFuZCBhY2NlcHRzIGl0LCB0aGUgaGFuZGxlciB3aWxsIGxh
dW5jaCBhIG5ldyB3b3JrZXIKLSAgICB0aHJlYWQgYW5kIGRpc3BhdGNoIHRoZSByZXF1ZXN0IHRv
IGl0LgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3QsIGRpc3BhdGNo
ZXIpOgotICAgICAgICAiIiJDb25zdHJ1Y3RzIGFuIGluc3RhbmNlLgotCi0gICAgICAgIEFyZ3M6
Ci0gICAgICAgICAgICByZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3Qgb2YgdGhlIHBoeXNpY2Fs
IGNvbm5lY3Rpb24uCi0gICAgICAgICAgICBkaXNwYXRjaGVyOiBEaXNwYXRjaGVyIGluc3RhbmNl
IChkaXNwYXRjaC5EaXNwYXRjaGVyKS4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi5vcmln
aW5hbF9yZXF1ZXN0ID0gcmVxdWVzdAotICAgICAgICBzZWxmLmRpc3BhdGNoZXIgPSBkaXNwYXRj
aGVyCi0gICAgICAgIHNlbGYucGh5c2ljYWxfY29ubmVjdGlvbiA9IHJlcXVlc3QuY29ubmVjdGlv
bgotICAgICAgICBzZWxmLnBoeXNpY2FsX3N0cmVhbSA9IHJlcXVlc3Qud3Nfc3RyZWFtCi0gICAg
ICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQotICAgICAgICBz
ZWxmLl9sb2dpY2FsX2NoYW5uZWxzID0ge30KLSAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVs
c19jb25kaXRpb24gPSB0aHJlYWRpbmcuQ29uZGl0aW9uKCkKLSAgICAgICAgIyBIb2xkcyBjbGll
bnQncyBpbml0aWFsIHF1b3RhCi0gICAgICAgIHNlbGYuX2NoYW5uZWxfc2xvdHMgPSBjb2xsZWN0
aW9ucy5kZXF1ZSgpCi0gICAgICAgIHNlbGYuX2hhbmRzaGFrZV9iYXNlID0gTm9uZQotICAgICAg
ICBzZWxmLl93b3JrZXJfZG9uZV9ub3RpZnlfcmVjZWl2ZWQgPSBGYWxzZQotICAgICAgICBzZWxm
Ll9yZWFkZXIgPSBOb25lCi0gICAgICAgIHNlbGYuX3dyaXRlciA9IE5vbmUKLQotICAgIGRlZiBz
dGFydChzZWxmKToKLSAgICAgICAgIiIiU3RhcnRzIHRoZSBoYW5kbGVyLgotCi0gICAgICAgIFJh
aXNlczoKLSAgICAgICAgICAgIE11eFVuZXhwZWN0ZWRFeGNlcHRpb246IHdoZW4gdGhlIGhhbmRs
ZXIgYWxyZWFkeSBzdGFydGVkLCBvciB3aGVuCi0gICAgICAgICAgICAgICAgb3BlbmluZyBoYW5k
c2hha2Ugb2YgdGhlIGRlZmF1bHQgY2hhbm5lbCBmYWlscy4KLSAgICAgICAgIiIiCi0KLSAgICAg
ICAgaWYgc2VsZi5fcmVhZGVyIG9yIHNlbGYuX3dyaXRlcjoKLSAgICAgICAgICAgIHJhaXNlIE11
eFVuZXhwZWN0ZWRFeGNlcHRpb24oJ011eEhhbmRsZXIgYWxyZWFkeSBzdGFydGVkJykKLQotICAg
ICAgICBzZWxmLl9yZWFkZXIgPSBfUGh5c2ljYWxDb25uZWN0aW9uUmVhZGVyKHNlbGYpCi0gICAg
ICAgIHNlbGYuX3dyaXRlciA9IF9QaHlzaWNhbENvbm5lY3Rpb25Xcml0ZXIoc2VsZikKLSAgICAg
ICAgc2VsZi5fcmVhZGVyLnN0YXJ0KCkKLSAgICAgICAgc2VsZi5fd3JpdGVyLnN0YXJ0KCkKLQot
ICAgICAgICAjIENyZWF0ZSAiSW1wbGljaXRseSBPcGVuZWQgQ29ubmVjdGlvbiIuCi0gICAgICAg
IGxvZ2ljYWxfY29ubmVjdGlvbiA9IF9Mb2dpY2FsQ29ubmVjdGlvbihzZWxmLCBfREVGQVVMVF9D
SEFOTkVMX0lEKQotICAgICAgICBoZWFkZXJzID0gY29weS5jb3B5KHNlbGYub3JpZ2luYWxfcmVx
dWVzdC5oZWFkZXJzX2luKQotICAgICAgICAjIEFkZCBleHRlbnNpb25zIGZvciBsb2dpY2FsIGNo
YW5uZWwuCi0gICAgICAgIGhlYWRlcnNbY29tbW9uLlNFQ19XRUJTT0NLRVRfRVhURU5TSU9OU19I
RUFERVJdID0gKAotICAgICAgICAgICAgY29tbW9uLmZvcm1hdF9leHRlbnNpb25zKAotICAgICAg
ICAgICAgICAgIHNlbGYub3JpZ2luYWxfcmVxdWVzdC5tdXhfcHJvY2Vzc29yLmV4dGVuc2lvbnMo
KSkpCi0gICAgICAgIHNlbGYuX2hhbmRzaGFrZV9iYXNlID0gX0hhbmRzaGFrZURlbHRhQmFzZSho
ZWFkZXJzKQotICAgICAgICBsb2dpY2FsX3JlcXVlc3QgPSBfTG9naWNhbFJlcXVlc3QoCi0gICAg
ICAgICAgICBfREVGQVVMVF9DSEFOTkVMX0lELAotICAgICAgICAgICAgc2VsZi5vcmlnaW5hbF9y
ZXF1ZXN0Lm1ldGhvZCwKLSAgICAgICAgICAgIHNlbGYub3JpZ2luYWxfcmVxdWVzdC51cmksCi0g
ICAgICAgICAgICBzZWxmLm9yaWdpbmFsX3JlcXVlc3QucHJvdG9jb2wsCi0gICAgICAgICAgICBz
ZWxmLl9oYW5kc2hha2VfYmFzZS5jcmVhdGVfaGVhZGVycygpLAotICAgICAgICAgICAgbG9naWNh
bF9jb25uZWN0aW9uKQotICAgICAgICAjIENsaWVudCdzIHNlbmQgcXVvdGEgZm9yIHRoZSBpbXBs
aWNpdGx5IG9wZW5lZCBjb25uZWN0aW9uIGlzIHplcm8sCi0gICAgICAgICMgYnV0IHdlIHdpbGwg
c2VuZCBGbG93Q29udHJvbCBsYXRlciBzbyBzZXQgdGhlIGluaXRpYWwgcXVvdGEgdG8KLSAgICAg
ICAgIyBfSU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5ULgotICAgICAgICBzZWxmLl9jaGFubmVsX3Ns
b3RzLmFwcGVuZChfSU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotICAgICAgICBzZW5kX3F1b3Rh
ID0gc2VsZi5vcmlnaW5hbF9yZXF1ZXN0Lm11eF9wcm9jZXNzb3IucXVvdGEoKQotICAgICAgICBp
ZiBub3Qgc2VsZi5fZG9faGFuZHNoYWtlX2Zvcl9sb2dpY2FsX3JlcXVlc3QoCi0gICAgICAgICAg
ICBsb2dpY2FsX3JlcXVlc3QsIHNlbmRfcXVvdGE9c2VuZF9xdW90YSk6Ci0gICAgICAgICAgICBy
YWlzZSBNdXhVbmV4cGVjdGVkRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdGYWlsZWQgaGFu
ZHNoYWtlIG9uIHRoZSBkZWZhdWx0IGNoYW5uZWwgaWQnKQotICAgICAgICBzZWxmLl9hZGRfbG9n
aWNhbF9jaGFubmVsKGxvZ2ljYWxfcmVxdWVzdCkKLQotICAgICAgICAjIFNlbmQgRmxvd0NvbnRy
b2wgZm9yIHRoZSBpbXBsaWNpdGx5IG9wZW5lZCBjb25uZWN0aW9uLgotICAgICAgICBmcmFtZV9k
YXRhID0gX2NyZWF0ZV9mbG93X2NvbnRyb2woX0RFRkFVTFRfQ0hBTk5FTF9JRCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9JTklUSUFMX1FVT1RBX0ZPUl9DTElF
TlQpCi0gICAgICAgIGxvZ2ljYWxfcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlX2NvbnRyb2xfZGF0
YShmcmFtZV9kYXRhKQotCi0gICAgZGVmIGFkZF9jaGFubmVsX3Nsb3RzKHNlbGYsIHNsb3RzLCBz
ZW5kX3F1b3RhKToKLSAgICAgICAgIiIiQWRkcyBjaGFubmVsIHNsb3RzLgotCi0gICAgICAgIEFy
Z3M6Ci0gICAgICAgICAgICBzbG90czogbnVtYmVyIG9mIHNsb3RzIHRvIGJlIGFkZGVkLgotICAg
ICAgICAgICAgc2VuZF9xdW90YTogaW5pdGlhbCBzZW5kIHF1b3RhIGZvciBzbG90cy4KLSAgICAg
ICAgIiIiCi0KLSAgICAgICAgc2VsZi5fY2hhbm5lbF9zbG90cy5leHRlbmQoW3NlbmRfcXVvdGFd
ICogc2xvdHMpCi0gICAgICAgICMgU2VuZCBOZXdDaGFubmVsU2xvdCB0byBjbGllbnQuCi0gICAg
ICAgIGZyYW1lX2RhdGEgPSBfY3JlYXRlX25ld19jaGFubmVsX3Nsb3Qoc2xvdHMsIHNlbmRfcXVv
dGEpCi0gICAgICAgIHNlbGYuc2VuZF9jb250cm9sX2RhdGEoZnJhbWVfZGF0YSkKLQotICAgIGRl
ZiB3YWl0X3VudGlsX2RvbmUoc2VsZiwgdGltZW91dD1Ob25lKToKLSAgICAgICAgIiIiV2FpdHMg
dW50aWwgYWxsIHdvcmtlcnMgYXJlIGRvbmUuIFJldHVybnMgRmFsc2Ugd2hlbiB0aW1lb3V0IGhh
cwotICAgICAgICBvY2N1cnJlZC4gUmV0dXJucyBUcnVlIG9uIHN1Y2Nlc3MuCi0KLSAgICAgICAg
QXJnczoKLSAgICAgICAgICAgIHRpbWVvdXQ6IHRpbWVvdXQgaW4gc2VjLgotICAgICAgICAiIiIK
LQotICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5hY3F1aXJlKCkKLSAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgd2hpbGUgbGVuKHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHMp
ID4gMDoKLSAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1dhaXRpbmcgd29ya2Vy
cyglZCkuLi4nICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKHNlbGYu
X2xvZ2ljYWxfY2hhbm5lbHMpKQotICAgICAgICAgICAgICAgIHNlbGYuX3dvcmtlcl9kb25lX25v
dGlmeV9yZWNlaXZlZCA9IEZhbHNlCi0gICAgICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFu
bmVsc19jb25kaXRpb24ud2FpdCh0aW1lb3V0KQotICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxm
Ll93b3JrZXJfZG9uZV9ub3RpZnlfcmVjZWl2ZWQ6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYu
X2xvZ2dlci5kZWJ1ZygnV2FpdGluZyB3b3JrZXIocykgdGltZWQgb3V0JykKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxm
Ll9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5yZWxlYXNlKCkKLQotICAgICAgICAjIEZsdXNo
IHBlbmRpbmcgb3V0Z29pbmcgZGF0YQotICAgICAgICBzZWxmLl93cml0ZXIuc3RvcCgpCi0gICAg
ICAgIHNlbGYuX3dyaXRlci5qb2luKCkKLQotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgZGVm
IG5vdGlmeV93cml0ZV9kYXRhX2RvbmUoc2VsZiwgY2hhbm5lbF9pZCk6Ci0gICAgICAgICIiIkNh
bGxlZCBieSB0aGUgd3JpdGVyIHRocmVhZCB3aGVuIGEgd3JpdGUgb3BlcmF0aW9uIGhhcyBkb25l
LgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBjaGFubmVsX2lkOiBvYmplY3RpdmUgY2hh
bm5lbCBpZC4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5f
bG9naWNhbF9jaGFubmVsc19jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgICAgICBpZiBjaGFu
bmVsX2lkIGluIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHM6Ci0gICAgICAgICAgICAgICAgY2hhbm5l
bF9kYXRhID0gc2VsZi5fbG9naWNhbF9jaGFubmVsc1tjaGFubmVsX2lkXQotICAgICAgICAgICAg
ICAgIGNoYW5uZWxfZGF0YS5yZXF1ZXN0LmNvbm5lY3Rpb24ub25fd3JpdGVfZGF0YV9kb25lKCkK
LSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdT
ZWVtcyB0aGF0IGxvZ2ljYWwgY2hhbm5lbCBmb3IgJWQgaGFzIGdvbmUnCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICUgY2hhbm5lbF9pZCkKLSAgICAgICAgZmluYWxseToKLSAg
ICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLnJlbGVhc2UoKQotCi0g
ICAgZGVmIHNlbmRfY29udHJvbF9kYXRhKHNlbGYsIGRhdGEpOgotICAgICAgICAiIiJTZW5kcyBk
YXRhIHZpYSB0aGUgY29udHJvbCBjaGFubmVsLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAg
ICBkYXRhOiBkYXRhIHRvIGJlIHNlbnQuCi0gICAgICAgICIiIgotCi0gICAgICAgIHNlbGYuX3dy
aXRlci5wdXRfb3V0Z29pbmdfZGF0YShfT3V0Z29pbmdEYXRhKAotICAgICAgICAgICAgICAgIGNo
YW5uZWxfaWQ9X0NPTlRST0xfQ0hBTk5FTF9JRCwgZGF0YT1kYXRhKSkKLQotICAgIGRlZiBzZW5k
X2RhdGEoc2VsZiwgY2hhbm5lbF9pZCwgZGF0YSk6Ci0gICAgICAgICIiIlNlbmRzIGRhdGEgdmlh
IGdpdmVuIGxvZ2ljYWwgY2hhbm5lbC4gVGhpcyBtZXRob2QgaXMgY2FsbGVkIGJ5Ci0gICAgICAg
IHdvcmtlciB0aHJlYWRzLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBjaGFubmVsX2lk
OiBvYmplY3RpdmUgY2hhbm5lbCBpZC4KLSAgICAgICAgICAgIGRhdGE6IGRhdGEgdG8gYmUgc2Vu
dC4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi5fd3JpdGVyLnB1dF9vdXRnb2luZ19kYXRh
KF9PdXRnb2luZ0RhdGEoCi0gICAgICAgICAgICAgICAgY2hhbm5lbF9pZD1jaGFubmVsX2lkLCBk
YXRhPWRhdGEpKQotCi0gICAgZGVmIF9zZW5kX2Ryb3BfY2hhbm5lbChzZWxmLCBjaGFubmVsX2lk
LCBjb2RlPU5vbmUsIG1lc3NhZ2U9JycpOgotICAgICAgICBmcmFtZV9kYXRhID0gX2NyZWF0ZV9k
cm9wX2NoYW5uZWwoY2hhbm5lbF9pZCwgY29kZSwgbWVzc2FnZSkKLSAgICAgICAgc2VsZi5fbG9n
Z2VyLmRlYnVnKAotICAgICAgICAgICAgJ1NlbmRpbmcgZHJvcCBjaGFubmVsIGZvciBjaGFubmVs
IGlkICVkJyAlIGNoYW5uZWxfaWQpCi0gICAgICAgIHNlbGYuc2VuZF9jb250cm9sX2RhdGEoZnJh
bWVfZGF0YSkKLQotICAgIGRlZiBfc2VuZF9lcnJvcl9hZGRfY2hhbm5lbF9yZXNwb25zZShzZWxm
LCBjaGFubmVsX2lkLCBzdGF0dXM9Tm9uZSk6Ci0gICAgICAgIGlmIHN0YXR1cyBpcyBOb25lOgot
ICAgICAgICAgICAgc3RhdHVzID0gY29tbW9uLkhUVFBfU1RBVFVTX0JBRF9SRVFVRVNUCi0KLSAg
ICAgICAgaWYgc3RhdHVzIGluIF9IVFRQX0JBRF9SRVNQT05TRV9NRVNTQUdFUzoKLSAgICAgICAg
ICAgIG1lc3NhZ2UgPSBfSFRUUF9CQURfUkVTUE9OU0VfTUVTU0FHRVNbc3RhdHVzXQotICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdSZXNwb25zZSBtZXNzYWdl
IGZvciAlZCBpcyBub3QgZm91bmQnICUgc3RhdHVzKQotICAgICAgICAgICAgbWVzc2FnZSA9ICc/
Pz8nCi0KLSAgICAgICAgcmVzcG9uc2UgPSAnSFRUUC8xLjEgJWQgJXNcclxuXHJcbicgJSAoc3Rh
dHVzLCBtZXNzYWdlKQotICAgICAgICBmcmFtZV9kYXRhID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9y
ZXNwb25zZShjaGFubmVsX2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1yZXNwb25zZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9MCwgcmVqZWN0ZWQ9
VHJ1ZSkKLSAgICAgICAgc2VsZi5zZW5kX2NvbnRyb2xfZGF0YShmcmFtZV9kYXRhKQotCi0gICAg
ZGVmIF9jcmVhdGVfbG9naWNhbF9yZXF1ZXN0KHNlbGYsIGJsb2NrKToKLSAgICAgICAgaWYgYmxv
Y2suY2hhbm5lbF9pZCA9PSBfQ09OVFJPTF9DSEFOTkVMX0lEOgotICAgICAgICAgICAgIyBUT0RP
KGJhc2hpKTogUmFpc2UgUGh5c2ljYWxDb25uZWN0aW9uRXJyb3Igd2l0aCBjb2RlIDIwMDYKLSAg
ICAgICAgICAgICMgaW5zdGVhZCBvZiBNdXhVbmV4cGVjdGVkRXhjZXB0aW9uLgotICAgICAgICAg
ICAgcmFpc2UgTXV4VW5leHBlY3RlZEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnUmVjZWl2
ZWQgdGhlIGNvbnRyb2wgY2hhbm5lbCBpZCAoMCkgYXMgb2JqZWN0aXZlIGNoYW5uZWwgJwotICAg
ICAgICAgICAgICAgICdpZCBmb3IgQWRkQ2hhbm5lbCcpCi0KLSAgICAgICAgaWYgYmxvY2suZW5j
b2RpbmcgPiBfSEFORFNIQUtFX0VOQ09ESU5HX0RFTFRBOgotICAgICAgICAgICAgcmFpc2UgUGh5
c2ljYWxDb25uZWN0aW9uRXJyb3IoCi0gICAgICAgICAgICAgICAgX0RST1BfQ09ERV9VTktOT1dO
X1JFUVVFU1RfRU5DT0RJTkcpCi0KLSAgICAgICAgbWV0aG9kLCBwYXRoLCB2ZXJzaW9uLCBoZWFk
ZXJzID0gX3BhcnNlX3JlcXVlc3RfdGV4dCgKLSAgICAgICAgICAgIGJsb2NrLmVuY29kZWRfaGFu
ZHNoYWtlKQotICAgICAgICBpZiBibG9jay5lbmNvZGluZyA9PSBfSEFORFNIQUtFX0VOQ09ESU5H
X0RFTFRBOgotICAgICAgICAgICAgaGVhZGVycyA9IHNlbGYuX2hhbmRzaGFrZV9iYXNlLmNyZWF0
ZV9oZWFkZXJzKGhlYWRlcnMpCi0KLSAgICAgICAgY29ubmVjdGlvbiA9IF9Mb2dpY2FsQ29ubmVj
dGlvbihzZWxmLCBibG9jay5jaGFubmVsX2lkKQotICAgICAgICByZXF1ZXN0ID0gX0xvZ2ljYWxS
ZXF1ZXN0KGJsb2NrLmNoYW5uZWxfaWQsIG1ldGhvZCwgcGF0aCwgdmVyc2lvbiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzLCBjb25uZWN0aW9uKQotICAgICAgICBy
ZXR1cm4gcmVxdWVzdAotCi0gICAgZGVmIF9kb19oYW5kc2hha2VfZm9yX2xvZ2ljYWxfcmVxdWVz
dChzZWxmLCByZXF1ZXN0LCBzZW5kX3F1b3RhPTApOgotICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICByZWNlaXZlX3F1b3RhID0gc2VsZi5fY2hhbm5lbF9zbG90cy5wb3BsZWZ0KCkKLSAgICAgICAg
ZXhjZXB0IEluZGV4RXJyb3I6Ci0gICAgICAgICAgICByYWlzZSBMb2dpY2FsQ2hhbm5lbEVycm9y
KAotICAgICAgICAgICAgICAgIHJlcXVlc3QuY2hhbm5lbF9pZCwgX0RST1BfQ09ERV9ORVdfQ0hB
Tk5FTF9TTE9UX1ZJT0xBVElPTikKLQotICAgICAgICBoYW5kc2hha2VyID0gX011eEhhbmRzaGFr
ZXIocmVxdWVzdCwgc2VsZi5kaXNwYXRjaGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2VuZF9xdW90YSwgcmVjZWl2ZV9xdW90YSkKLSAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQotICAgICAgICBleGNlcHQgaGFuZHNoYWtl
LlZlcnNpb25FeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCcl
cycsIGUpCi0gICAgICAgICAgICBzZWxmLl9zZW5kX2Vycm9yX2FkZF9jaGFubmVsX3Jlc3BvbnNl
KAotICAgICAgICAgICAgICAgIHJlcXVlc3QuY2hhbm5lbF9pZCwgc3RhdHVzPWNvbW1vbi5IVFRQ
X1NUQVRVU19CQURfUkVRVUVTVCkKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICBl
eGNlcHQgaGFuZHNoYWtlLkhhbmRzaGFrZUV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgIyBU
T0RPKGJhc2hpKTogU2hvdWxkIHdlIF9GYWlsIHRoZSBMb2dpY2FsIENoYW5uZWxfIHdpdGggMzAw
MQotICAgICAgICAgICAgIyBpbnN0ZWFkPwotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8o
JyVzJywgZSkKLSAgICAgICAgICAgIHNlbGYuX3NlbmRfZXJyb3JfYWRkX2NoYW5uZWxfcmVzcG9u
c2UocmVxdWVzdC5jaGFubmVsX2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0dXM9ZS5zdGF0dXMpCi0gICAgICAgICAgICByZXR1cm4gRmFs
c2UKLSAgICAgICAgZXhjZXB0IGhhbmRzaGFrZS5BYm9ydGVkQnlVc2VyRXhjZXB0aW9uIGFzIGU6
Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnJXMnLCBlKQotICAgICAgICAgICAgc2Vs
Zi5fc2VuZF9lcnJvcl9hZGRfY2hhbm5lbF9yZXNwb25zZShyZXF1ZXN0LmNoYW5uZWxfaWQpCi0g
ICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgZGVm
IF9hZGRfbG9naWNhbF9jaGFubmVsKHNlbGYsIGxvZ2ljYWxfcmVxdWVzdCk6Ci0gICAgICAgIHRy
eToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLmFjcXVpcmUo
KQotICAgICAgICAgICAgaWYgbG9naWNhbF9yZXF1ZXN0LmNoYW5uZWxfaWQgaW4gc2VsZi5fbG9n
aWNhbF9jaGFubmVsczoKLSAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0NoYW5u
ZWwgaWQgJWQgYWxyZWFkeSBleGlzdHMnICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbG9naWNhbF9yZXF1ZXN0LmNoYW5uZWxfaWQpCi0gICAgICAgICAgICAgICAgcmFpc2Ug
UGh5c2ljYWxDb25uZWN0aW9uRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgIF9EUk9QX0NPREVf
Q0hBTk5FTF9BTFJFQURZX0VYSVNUUywKLSAgICAgICAgICAgICAgICAgICAgJ0NoYW5uZWwgaWQg
JWQgYWxyZWFkeSBleGlzdHMnICUKLSAgICAgICAgICAgICAgICAgICAgbG9naWNhbF9yZXF1ZXN0
LmNoYW5uZWxfaWQpCi0gICAgICAgICAgICB3b3JrZXIgPSBfV29ya2VyKHNlbGYsIGxvZ2ljYWxf
cmVxdWVzdCkKLSAgICAgICAgICAgIGNoYW5uZWxfZGF0YSA9IF9Mb2dpY2FsQ2hhbm5lbERhdGEo
bG9naWNhbF9yZXF1ZXN0LCB3b3JrZXIpCi0gICAgICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5u
ZWxzW2xvZ2ljYWxfcmVxdWVzdC5jaGFubmVsX2lkXSA9IGNoYW5uZWxfZGF0YQotICAgICAgICAg
ICAgd29ya2VyLnN0YXJ0KCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX2xv
Z2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLnJlbGVhc2UoKQotCi0gICAgZGVmIF9wcm9jZXNzX2Fk
ZF9jaGFubmVsX3JlcXVlc3Qoc2VsZiwgYmxvY2spOgotICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICBsb2dpY2FsX3JlcXVlc3QgPSBzZWxmLl9jcmVhdGVfbG9naWNhbF9yZXF1ZXN0KGJsb2NrKQot
ICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgotICAgICAgICAgICAgc2VsZi5fbG9nZ2Vy
LmRlYnVnKCdGYWlsZWQgdG8gY3JlYXRlIGxvZ2ljYWwgcmVxdWVzdDogJXInICUgZSkKLSAgICAg
ICAgICAgIHNlbGYuX3NlbmRfZXJyb3JfYWRkX2NoYW5uZWxfcmVzcG9uc2UoCi0gICAgICAgICAg
ICAgICAgYmxvY2suY2hhbm5lbF9pZCwgc3RhdHVzPWNvbW1vbi5IVFRQX1NUQVRVU19CQURfUkVR
VUVTVCkKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBpZiBzZWxmLl9kb19oYW5kc2hha2Vf
Zm9yX2xvZ2ljYWxfcmVxdWVzdChsb2dpY2FsX3JlcXVlc3QpOgotICAgICAgICAgICAgaWYgYmxv
Y2suZW5jb2RpbmcgPT0gX0hBTkRTSEFLRV9FTkNPRElOR19JREVOVElUWToKLSAgICAgICAgICAg
ICAgICAjIFVwZGF0ZSBoYW5kc2hha2UgYmFzZS4KLSAgICAgICAgICAgICAgICAjIFRPRE8oYmFz
aGkpOiBNYWtlIHN1cmUgdGhpcyBpcyB0aGUgcmlnaHQgcGxhY2UgdG8gdXBkYXRlCi0gICAgICAg
ICAgICAgICAgIyBoYW5kc2hha2UgYmFzZS4KLSAgICAgICAgICAgICAgICBzZWxmLl9oYW5kc2hh
a2VfYmFzZSA9IF9IYW5kc2hha2VEZWx0YUJhc2UoCi0gICAgICAgICAgICAgICAgICAgIGxvZ2lj
YWxfcmVxdWVzdC5oZWFkZXJzX2luKQotICAgICAgICAgICAgc2VsZi5fYWRkX2xvZ2ljYWxfY2hh
bm5lbChsb2dpY2FsX3JlcXVlc3QpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLl9z
ZW5kX2Vycm9yX2FkZF9jaGFubmVsX3Jlc3BvbnNlKAotICAgICAgICAgICAgICAgIGJsb2NrLmNo
YW5uZWxfaWQsIHN0YXR1cz1jb21tb24uSFRUUF9TVEFUVVNfQkFEX1JFUVVFU1QpCi0KLSAgICBk
ZWYgX3Byb2Nlc3NfZmxvd19jb250cm9sKHNlbGYsIGJsb2NrKToKLSAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24uYWNxdWlyZSgpCi0gICAg
ICAgICAgICBpZiBub3QgYmxvY2suY2hhbm5lbF9pZCBpbiBzZWxmLl9sb2dpY2FsX2NoYW5uZWxz
OgotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgY2hhbm5lbF9kYXRhID0gc2Vs
Zi5fbG9naWNhbF9jaGFubmVsc1tibG9jay5jaGFubmVsX2lkXQotICAgICAgICAgICAgY2hhbm5l
bF9kYXRhLnJlcXVlc3Qud3Nfc3RyZWFtLnJlcGxlbmlzaF9zZW5kX3F1b3RhKAotICAgICAgICAg
ICAgICAgIGJsb2NrLnNlbmRfcXVvdGEpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBz
ZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5yZWxlYXNlKCkKLQotICAgIGRlZiBfcHJv
Y2Vzc19kcm9wX2NoYW5uZWwoc2VsZiwgYmxvY2spOgotICAgICAgICBzZWxmLl9sb2dnZXIuZGVi
dWcoCi0gICAgICAgICAgICAnRHJvcENoYW5uZWwgcmVjZWl2ZWQgZm9yICVkOiBjb2RlPSVyLCBy
ZWFzb249JXInICUKLSAgICAgICAgICAgIChibG9jay5jaGFubmVsX2lkLCBibG9jay5kcm9wX2Nv
ZGUsIGJsb2NrLmRyb3BfbWVzc2FnZSkpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYu
X2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLmFjcXVpcmUoKQotICAgICAgICAgICAgaWYgbm90
IGJsb2NrLmNoYW5uZWxfaWQgaW4gc2VsZi5fbG9naWNhbF9jaGFubmVsczoKLSAgICAgICAgICAg
ICAgICByZXR1cm4KLSAgICAgICAgICAgIGNoYW5uZWxfZGF0YSA9IHNlbGYuX2xvZ2ljYWxfY2hh
bm5lbHNbYmxvY2suY2hhbm5lbF9pZF0KLSAgICAgICAgICAgIGNoYW5uZWxfZGF0YS5kcm9wX2Nv
ZGUgPSBfRFJPUF9DT0RFX0FDS05PV0xFREdFRAotCi0gICAgICAgICAgICAjIENsb3NlIHRoZSBs
b2dpY2FsIGNoYW5uZWwKLSAgICAgICAgICAgIGNoYW5uZWxfZGF0YS5yZXF1ZXN0LmNvbm5lY3Rp
b24uc2V0X3JlYWRfc3RhdGUoCi0gICAgICAgICAgICAgICAgX0xvZ2ljYWxDb25uZWN0aW9uLlNU
QVRFX1RFUk1JTkFURUQpCi0gICAgICAgICAgICBjaGFubmVsX2RhdGEucmVxdWVzdC53c19zdHJl
YW0uc3RvcF9zZW5kaW5nKCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX2xv
Z2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLnJlbGVhc2UoKQotCi0gICAgZGVmIF9wcm9jZXNzX2Nv
bnRyb2xfYmxvY2tzKHNlbGYsIHBhcnNlcik6Ci0gICAgICAgIGZvciBjb250cm9sX2Jsb2NrIGlu
IHBhcnNlci5yZWFkX2NvbnRyb2xfYmxvY2tzKCk6Ci0gICAgICAgICAgICBvcGNvZGUgPSBjb250
cm9sX2Jsb2NrLm9wY29kZQotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdjb250cm9s
IGJsb2NrIHJlY2VpdmVkLCBvcGNvZGU6ICVkJyAlIG9wY29kZSkKLSAgICAgICAgICAgIGlmIG9w
Y29kZSA9PSBfTVVYX09QQ09ERV9BRERfQ0hBTk5FTF9SRVFVRVNUOgotICAgICAgICAgICAgICAg
IHNlbGYuX3Byb2Nlc3NfYWRkX2NoYW5uZWxfcmVxdWVzdChjb250cm9sX2Jsb2NrKQotICAgICAg
ICAgICAgZWxpZiBvcGNvZGUgPT0gX01VWF9PUENPREVfQUREX0NIQU5ORUxfUkVTUE9OU0U6Ci0g
ICAgICAgICAgICAgICAgcmFpc2UgUGh5c2ljYWxDb25uZWN0aW9uRXJyb3IoCi0gICAgICAgICAg
ICAgICAgICAgIF9EUk9QX0NPREVfSU5WQUxJRF9NVVhfQ09OVFJPTF9CTE9DSywKLSAgICAgICAg
ICAgICAgICAgICAgJ1JlY2VpdmVkIEFkZENoYW5uZWxSZXNwb25zZScpCi0gICAgICAgICAgICBl
bGlmIG9wY29kZSA9PSBfTVVYX09QQ09ERV9GTE9XX0NPTlRST0w6Ci0gICAgICAgICAgICAgICAg
c2VsZi5fcHJvY2Vzc19mbG93X2NvbnRyb2woY29udHJvbF9ibG9jaykKLSAgICAgICAgICAgIGVs
aWYgb3Bjb2RlID09IF9NVVhfT1BDT0RFX0RST1BfQ0hBTk5FTDoKLSAgICAgICAgICAgICAgICBz
ZWxmLl9wcm9jZXNzX2Ryb3BfY2hhbm5lbChjb250cm9sX2Jsb2NrKQotICAgICAgICAgICAgZWxp
ZiBvcGNvZGUgPT0gX01VWF9PUENPREVfTkVXX0NIQU5ORUxfU0xPVDoKLSAgICAgICAgICAgICAg
ICByYWlzZSBQaHlzaWNhbENvbm5lY3Rpb25FcnJvcigKLSAgICAgICAgICAgICAgICAgICAgX0RS
T1BfQ09ERV9JTlZBTElEX01VWF9DT05UUk9MX0JMT0NLLAotICAgICAgICAgICAgICAgICAgICAn
UmVjZWl2ZWQgTmV3Q2hhbm5lbFNsb3QnKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAg
ICAgICByYWlzZSBNdXhVbmV4cGVjdGVkRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICAgICAn
VW5leHBlY3RlZCBvcGNvZGUgJXInICUgb3Bjb2RlKQotCi0gICAgZGVmIF9wcm9jZXNzX2xvZ2lj
YWxfZnJhbWUoc2VsZiwgY2hhbm5lbF9pZCwgcGFyc2VyKToKLSAgICAgICAgc2VsZi5fbG9nZ2Vy
LmRlYnVnKCdSZWNlaXZlZCBhIGZyYW1lLiBjaGFubmVsIGlkPSVkJyAlIGNoYW5uZWxfaWQpCi0g
ICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9u
LmFjcXVpcmUoKQotICAgICAgICAgICAgaWYgbm90IGNoYW5uZWxfaWQgaW4gc2VsZi5fbG9naWNh
bF9jaGFubmVsczoKLSAgICAgICAgICAgICAgICAjIFdlIG11c3QgaWdub3JlIHRoZSBtZXNzYWdl
IGZvciBhbiBpbmFjdGl2ZSBjaGFubmVsLgotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAg
ICAgICAgY2hhbm5lbF9kYXRhID0gc2VsZi5fbG9naWNhbF9jaGFubmVsc1tjaGFubmVsX2lkXQot
ICAgICAgICAgICAgZmluLCByc3YxLCByc3YyLCByc3YzLCBvcGNvZGUsIHBheWxvYWQgPSBwYXJz
ZXIucmVhZF9pbm5lcl9mcmFtZSgpCi0gICAgICAgICAgICBjb25zdW1pbmdfYnl0ZSA9IGxlbihw
YXlsb2FkKQotICAgICAgICAgICAgaWYgb3Bjb2RlICE9IGNvbW1vbi5PUENPREVfQ09OVElOVUFU
SU9OOgotICAgICAgICAgICAgICAgIGNvbnN1bWluZ19ieXRlICs9IDEKLSAgICAgICAgICAgIGlm
IG5vdCBjaGFubmVsX2RhdGEucmVxdWVzdC53c19zdHJlYW0uY29uc3VtZV9yZWNlaXZlX3F1b3Rh
KAotICAgICAgICAgICAgICAgIGNvbnN1bWluZ19ieXRlKToKLSAgICAgICAgICAgICAgICAjIFRo
ZSBjbGllbnQgdmlvbGF0ZXMgcXVvdGEuIENsb3NlIGxvZ2ljYWwgY2hhbm5lbC4KLSAgICAgICAg
ICAgICAgICByYWlzZSBMb2dpY2FsQ2hhbm5lbEVycm9yKAotICAgICAgICAgICAgICAgICAgICBj
aGFubmVsX2lkLCBfRFJPUF9DT0RFX1NFTkRfUVVPVEFfVklPTEFUSU9OKQotICAgICAgICAgICAg
aGVhZGVyID0gY3JlYXRlX2hlYWRlcihvcGNvZGUsIGxlbihwYXlsb2FkKSwgZmluLCByc3YxLCBy
c3YyLCByc3YzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXNrPUZhbHNl
KQotICAgICAgICAgICAgZnJhbWVfZGF0YSA9IGhlYWRlciArIHBheWxvYWQKLSAgICAgICAgICAg
IGNoYW5uZWxfZGF0YS5yZXF1ZXN0LmNvbm5lY3Rpb24uYXBwZW5kX2ZyYW1lX2RhdGEoZnJhbWVf
ZGF0YSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5l
bHNfY29uZGl0aW9uLnJlbGVhc2UoKQotCi0gICAgZGVmIGRpc3BhdGNoX21lc3NhZ2Uoc2VsZiwg
bWVzc2FnZSk6Ci0gICAgICAgICIiIkRpc3BhdGNoZXMgbWVzc2FnZS4gVGhlIHJlYWRlciB0aHJl
YWQgY2FsbHMgdGhpcyBtZXRob2QuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIG1lc3Nh
Z2U6IGEgbWVzc2FnZSB0aGF0IGNvbnRhaW5zIGVuY2Fwc3VsYXRlZCBmcmFtZS4KLSAgICAgICAg
UmFpc2VzOgotICAgICAgICAgICAgUGh5c2ljYWxDb25uZWN0aW9uRXJyb3I6IGlmIHRoZSBtZXNz
YWdlIGNvbnRhaW5zIHBoeXNpY2FsCi0gICAgICAgICAgICAgICAgY29ubmVjdGlvbiBsZXZlbCBl
cnJvcnMuCi0gICAgICAgICAgICBMb2dpY2FsQ2hhbm5lbEVycm9yOiBpZiB0aGUgbWVzc2FnZSBj
b250YWlucyBsb2dpY2FsIGNoYW5uZWwKLSAgICAgICAgICAgICAgICBsZXZlbCBlcnJvcnMuCi0g
ICAgICAgICIiIgotCi0gICAgICAgIHBhcnNlciA9IF9NdXhGcmFtZVBheWxvYWRQYXJzZXIobWVz
c2FnZSkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgY2hhbm5lbF9pZCA9IHBhcnNlci5yZWFk
X2NoYW5uZWxfaWQoKQotICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgotICAgICAgICAg
ICAgcmFpc2UgUGh5c2ljYWxDb25uZWN0aW9uRXJyb3IoX0RST1BfQ09ERV9DSEFOTkVMX0lEX1RS
VU5DQVRFRCkKLSAgICAgICAgaWYgY2hhbm5lbF9pZCA9PSBfQ09OVFJPTF9DSEFOTkVMX0lEOgot
ICAgICAgICAgICAgc2VsZi5fcHJvY2Vzc19jb250cm9sX2Jsb2NrcyhwYXJzZXIpCi0gICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICBzZWxmLl9wcm9jZXNzX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9p
ZCwgcGFyc2VyKQotCi0gICAgZGVmIG5vdGlmeV93b3JrZXJfZG9uZShzZWxmLCBjaGFubmVsX2lk
KToKLSAgICAgICAgIiIiQ2FsbGVkIHdoZW4gYSB3b3JrZXIgaGFzIGZpbmlzaGVkLgotCi0gICAg
ICAgIEFyZ3M6Ci0gICAgICAgICAgICBjaGFubmVsX2lkOiBjaGFubmVsIGlkIGNvcnJlc3BvbmRl
ZCB3aXRoIHRoZSB3b3JrZXIuCi0gICAgICAgICIiIgotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5k
ZWJ1ZygnV29ya2VyIGZvciBjaGFubmVsIGlkICVkIHRlcm1pbmF0ZWQnICUgY2hhbm5lbF9pZCkK
LSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRp
b24uYWNxdWlyZSgpCi0gICAgICAgICAgICBpZiBub3QgY2hhbm5lbF9pZCBpbiBzZWxmLl9sb2dp
Y2FsX2NoYW5uZWxzOgotICAgICAgICAgICAgICAgIHJhaXNlIE11eFVuZXhwZWN0ZWRFeGNlcHRp
b24oCi0gICAgICAgICAgICAgICAgICAgICdDaGFubmVsIGlkICVkIG5vdCBmb3VuZCcgJSBjaGFu
bmVsX2lkKQotICAgICAgICAgICAgY2hhbm5lbF9kYXRhID0gc2VsZi5fbG9naWNhbF9jaGFubmVs
cy5wb3AoY2hhbm5lbF9pZCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX3dv
cmtlcl9kb25lX25vdGlmeV9yZWNlaXZlZCA9IFRydWUKLSAgICAgICAgICAgIHNlbGYuX2xvZ2lj
YWxfY2hhbm5lbHNfY29uZGl0aW9uLm5vdGlmeSgpCi0gICAgICAgICAgICBzZWxmLl9sb2dpY2Fs
X2NoYW5uZWxzX2NvbmRpdGlvbi5yZWxlYXNlKCkKLQotICAgICAgICBpZiBub3QgY2hhbm5lbF9k
YXRhLnJlcXVlc3Quc2VydmVyX3Rlcm1pbmF0ZWQ6Ci0gICAgICAgICAgICBzZWxmLl9zZW5kX2Ry
b3BfY2hhbm5lbCgKLSAgICAgICAgICAgICAgICBjaGFubmVsX2lkLCBjb2RlPWNoYW5uZWxfZGF0
YS5kcm9wX2NvZGUsCi0gICAgICAgICAgICAgICAgbWVzc2FnZT1jaGFubmVsX2RhdGEuZHJvcF9t
ZXNzYWdlKQotCi0gICAgZGVmIG5vdGlmeV9yZWFkZXJfZG9uZShzZWxmKToKLSAgICAgICAgIiIi
VGhpcyBtZXRob2QgaXMgY2FsbGVkIGJ5IHRoZSByZWFkZXIgdGhyZWFkIHdoZW4gdGhlIHJlYWRl
ciBoYXMKLSAgICAgICAgZmluaXNoZWQuCi0gICAgICAgICIiIgotCi0gICAgICAgIHNlbGYuX2xv
Z2dlci5kZWJ1ZygKLSAgICAgICAgICAgICdUZXJtaWF0aW5nIGFsbCBsb2dpY2FsIGNvbm5lY3Rp
b25zIHdhaXRpbmcgZm9yIGluY29taW5nIGRhdGEgJwotICAgICAgICAgICAgJy4uLicpCi0gICAg
ICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLmFjcXVpcmUoKQotICAgICAgICBm
b3IgY2hhbm5lbF9kYXRhIGluIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHMudmFsdWVzKCk6Ci0gICAg
ICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgY2hhbm5lbF9kYXRhLnJlcXVlc3QuY29ubmVj
dGlvbi5zZXRfcmVhZF9zdGF0ZSgKLSAgICAgICAgICAgICAgICAgICAgX0xvZ2ljYWxDb25uZWN0
aW9uLlNUQVRFX1RFUk1JTkFURUQpCi0gICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgotICAg
ICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1Zyh0cmFjZWJhY2suZm9ybWF0X2V4YygpKQot
ICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5yZWxlYXNlKCkKLQotICAg
IGRlZiBub3RpZnlfd3JpdGVyX2RvbmUoc2VsZik6Ci0gICAgICAgICIiIlRoaXMgbWV0aG9kIGlz
IGNhbGxlZCBieSB0aGUgd3JpdGVyIHRocmVhZCB3aGVuIHRoZSB3cml0ZXIgaGFzCi0gICAgICAg
IGZpbmlzaGVkLgotICAgICAgICAiIiIKLQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0g
ICAgICAgICAgICAnVGVybWlhdGluZyBhbGwgbG9naWNhbCBjb25uZWN0aW9ucyB3YWl0aW5nIGZv
ciB3cml0ZSAnCi0gICAgICAgICAgICAnY29tcGxldGlvbiAuLi4nKQotICAgICAgICBzZWxmLl9s
b2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5hY3F1aXJlKCkKLSAgICAgICAgZm9yIGNoYW5uZWxf
ZGF0YSBpbiBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzLnZhbHVlcygpOgotICAgICAgICAgICAgdHJ5
OgotICAgICAgICAgICAgICAgIGNoYW5uZWxfZGF0YS5yZXF1ZXN0LmNvbm5lY3Rpb24ub25fd3Jp
dGVyX2RvbmUoKQotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgICAg
ICBzZWxmLl9sb2dnZXIuZGVidWcodHJhY2ViYWNrLmZvcm1hdF9leGMoKSkKLSAgICAgICAgc2Vs
Zi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24ucmVsZWFzZSgpCi0KLSAgICBkZWYgZmFpbF9w
aHlzaWNhbF9jb25uZWN0aW9uKHNlbGYsIGNvZGUsIG1lc3NhZ2UpOgotICAgICAgICAiIiJGYWls
IHRoZSBwaHlzaWNhbCBjb25uZWN0aW9uLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBj
b2RlOiBkcm9wIHJlYXNvbiBjb2RlLgotICAgICAgICAgICAgbWVzc2FnZTogZHJvcCBtZXNzYWdl
LgotICAgICAgICAiIiIKLQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0ZhaWxpbmcgdGhl
IHBoeXNpY2FsIGNvbm5lY3Rpb24uLi4nKQotICAgICAgICBzZWxmLl9zZW5kX2Ryb3BfY2hhbm5l
bChfQ09OVFJPTF9DSEFOTkVMX0lELCBjb2RlLCBtZXNzYWdlKQotICAgICAgICBzZWxmLl93cml0
ZXIuc3RvcChjb21tb24uU1RBVFVTX0lOVEVSTkFMX0VORFBPSU5UX0VSUk9SKQotCi0gICAgZGVm
IGZhaWxfbG9naWNhbF9jaGFubmVsKHNlbGYsIGNoYW5uZWxfaWQsIGNvZGUsIG1lc3NhZ2UpOgot
ICAgICAgICAiIiJGYWlsIGEgbG9naWNhbCBjaGFubmVsLgotCi0gICAgICAgIEFyZ3M6Ci0gICAg
ICAgICAgICBjaGFubmVsX2lkOiBjaGFubmVsIGlkLgotICAgICAgICAgICAgY29kZTogZHJvcCBy
ZWFzb24gY29kZS4KLSAgICAgICAgICAgIG1lc3NhZ2U6IGRyb3AgbWVzc2FnZS4KLSAgICAgICAg
IiIiCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdGYWlsaW5nIGxvZ2ljYWwgY2hhbm5l
bCAlZC4uLicgJSBjaGFubmVsX2lkKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9s
b2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5hY3F1aXJlKCkKLSAgICAgICAgICAgIGlmIGNoYW5u
ZWxfaWQgaW4gc2VsZi5fbG9naWNhbF9jaGFubmVsczoKLSAgICAgICAgICAgICAgICBjaGFubmVs
X2RhdGEgPSBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzW2NoYW5uZWxfaWRdCi0gICAgICAgICAgICAg
ICAgIyBDbG9zZSB0aGUgbG9naWNhbCBjaGFubmVsLiBub3RpZnlfd29ya2VyX2RvbmUoKSB3aWxs
IGJlCi0gICAgICAgICAgICAgICAgIyBjYWxsZWQgbGF0ZXIgYW5kIGl0IHdpbGwgc2VuZCBEcm9w
Q2hhbm5lbC4KLSAgICAgICAgICAgICAgICBjaGFubmVsX2RhdGEuZHJvcF9jb2RlID0gY29kZQot
ICAgICAgICAgICAgICAgIGNoYW5uZWxfZGF0YS5kcm9wX21lc3NhZ2UgPSBtZXNzYWdlCi0KLSAg
ICAgICAgICAgICAgICBjaGFubmVsX2RhdGEucmVxdWVzdC5jb25uZWN0aW9uLnNldF9yZWFkX3N0
YXRlKAotICAgICAgICAgICAgICAgICAgICBfTG9naWNhbENvbm5lY3Rpb24uU1RBVEVfVEVSTUlO
QVRFRCkKLSAgICAgICAgICAgICAgICBjaGFubmVsX2RhdGEucmVxdWVzdC53c19zdHJlYW0uc3Rv
cF9zZW5kaW5nKCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5fc2Vu
ZF9kcm9wX2NoYW5uZWwoY2hhbm5lbF9pZCwgY29kZSwgbWVzc2FnZSkKLSAgICAgICAgZmluYWxs
eToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLnJlbGVhc2Uo
KQotCi0KLWRlZiB1c2VfbXV4KHJlcXVlc3QpOgotICAgIHJldHVybiBoYXNhdHRyKHJlcXVlc3Qs
ICdtdXhfcHJvY2Vzc29yJykgYW5kICgKLSAgICAgICAgcmVxdWVzdC5tdXhfcHJvY2Vzc29yLmlz
X2FjdGl2ZSgpKQotCi0KLWRlZiBzdGFydChyZXF1ZXN0LCBkaXNwYXRjaGVyKToKLSAgICBtdXhf
aGFuZGxlciA9IF9NdXhIYW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIpCi0gICAgbXV4X2hhbmRs
ZXIuc3RhcnQoKQotCi0gICAgbXV4X2hhbmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMoX0lOSVRJQUxf
TlVNQkVSX09GX0NIQU5ORUxfU0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX0lOSVRJQUxfUVVPVEFfRk9SX0NMSUVOVCkKLQotICAgIG11eF9oYW5kbGVyLndhaXRfdW50
aWxfZG9uZSgpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9w
eXdlYnNvY2tldC9zdGFuZGFsb25lLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9u
ZS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmM4Nzg2MDY0ODg5ZTg0ZjExNWE3
NTY3OWFiNzFjNzQ0NjZhMGM2Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9zdGFuZGFsb25lLnB5CisrKyAvZGV2L251
bGwKQEAgLTEsMTIwOCArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJp
Z2h0IDIwMTIsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotCi0KLSIiIlN0YW5kYWxvbmUgV2ViU29ja2V0IHNlcnZlci4KLQotVXNlIHRoaXMg
ZmlsZSB0byBsYXVuY2ggcHl3ZWJzb2NrZXQgd2l0aG91dCBBcGFjaGUgSFRUUCBTZXJ2ZXIuCi0K
LQotQkFTSUMgVVNBR0UKLT09PT09PT09PT09Ci0KLUdvIHRvIHRoZSBzcmMgZGlyZWN0b3J5IGFu
ZCBydW4KLQotICAkIHB5dGhvbiBtb2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5weSBbLXAgPHdz
X3BvcnQ+XQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbLXcgPHdl
YnNvY2tfaGFuZGxlcnM+XQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbLWQgPGRvY3VtZW50X3Jvb3Q+XQotCi08d3NfcG9ydD4gaXMgdGhlIHBvcnQgbnVtYmVyIHRv
IHVzZSBmb3Igd3M6Ly8gY29ubmVjdGlvbi4KLQotPGRvY3VtZW50X3Jvb3Q+IGlzIHRoZSBwYXRo
IHRvIHRoZSByb290IGRpcmVjdG9yeSBvZiBIVE1MIGZpbGVzLgotCi08d2Vic29ja19oYW5kbGVy
cz4gaXMgdGhlIHBhdGggdG8gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIFdlYlNvY2tldCBoYW5kbGVy
cy4KLUlmIG5vdCBzcGVjaWZpZWQsIDxkb2N1bWVudF9yb290PiB3aWxsIGJlIHVzZWQuIFNlZSBf
X2luaXRfXy5weSAob3IKLXJ1biAkIHB5ZG9jIG1vZF9weXdlYnNvY2tldCkgZm9yIGhvdyB0byB3
cml0ZSBXZWJTb2NrZXQgaGFuZGxlcnMuCi0KLUZvciBtb3JlIGRldGFpbCBhbmQgb3RoZXIgb3B0
aW9ucywgcnVuCi0KLSAgJCBweXRob24gbW9kX3B5d2Vic29ja2V0L3N0YW5kYWxvbmUucHkgLS1o
ZWxwCi0KLW9yIHNlZSBfYnVpbGRfb3B0aW9uX3BhcnNlciBtZXRob2QgYmVsb3cuCi0KLUZvciB0
cm91YmxlIHNob290aW5nLCBhZGRpbmcgIi0tbG9nX2xldmVsIGRlYnVnIiBtaWdodCBoZWxwIHlv
dS4KLQotCi1UUlkgREVNTwotPT09PT09PT0KLQotR28gdG8gdGhlIHNyYyBkaXJlY3RvcnkgYW5k
IHJ1biBzdGFuZGFsb25lLnB5IHdpdGggLWQgb3B0aW9uIHRvIHNldCB0aGUKLWRvY3VtZW50IHJv
b3QgdG8gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIGV4YW1wbGUgSFRNTHMgYW5kIGhhbmRsZXJz
IGxpa2UgdGhpczoKLQotICAkIGNkIHNyYwotICAkIFBZVEhPTlBBVEg9LiBweXRob24gbW9kX3B5
d2Vic29ja2V0L3N0YW5kYWxvbmUucHkgLWQgZXhhbXBsZQotCi10byBsYXVuY2ggcHl3ZWJzb2Nr
ZXQgd2l0aCB0aGUgc2FtcGxlIGhhbmRsZXIgYW5kIGh0bWwgb24gcG9ydCA4MC4gT3BlbgotaHR0
cDovL2xvY2FsaG9zdC9jb25zb2xlLmh0bWwsIGNsaWNrIHRoZSBjb25uZWN0IGJ1dHRvbiwgdHlw
ZSBzb21ldGhpbmcgaW50bwotdGhlIHRleHQgYm94IG5leHQgdG8gdGhlIHNlbmQgYnV0dG9uIGFu
ZCBjbGljayB0aGUgc2VuZCBidXR0b24uIElmIGV2ZXJ5dGhpbmcKLWlzIHdvcmtpbmcsIHlvdSds
bCBzZWUgdGhlIG1lc3NhZ2UgeW91IHR5cGVkIGVjaG9lZCBieSB0aGUgc2VydmVyLgotCi0KLVVT
SU5HIFRMUwotPT09PT09PT09Ci0KLVRvIHJ1biB0aGUgc3RhbmRhbG9uZSBzZXJ2ZXIgd2l0aCBU
TFMgc3VwcG9ydCwgcnVuIGl0IHdpdGggLXQsIC1rLCBhbmQgLWMKLW9wdGlvbnMuIFdoZW4gVExT
IGlzIGVuYWJsZWQsIHRoZSBzdGFuZGFsb25lIHNlcnZlciBhY2NlcHRzIG9ubHkgVExTIGNvbm5l
Y3Rpb24uCi0KLU5vdGUgdGhhdCB3aGVuIHNzbCBtb2R1bGUgaXMgdXNlZCBhbmQgdGhlIGtleS9j
ZXJ0IGxvY2F0aW9uIGlzIGluY29ycmVjdCwKLVRMUyBjb25uZWN0aW9uIHNpbGVudGx5IGZhaWxz
IHdoaWxlIHB5T3BlblNTTCBmYWlscyBvbiBzdGFydHVwLgotCi1FeGFtcGxlOgotCi0gICQgUFlU
SE9OUEFUSD0uIHB5dGhvbiBtb2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5weSBcCi0gICAgICAg
IC1kIGV4YW1wbGUgXAotICAgICAgICAtcCAxMDQ0MyBcCi0gICAgICAgIC10IFwKLSAgICAgICAg
LWMgLi4vdGVzdC9jZXJ0L2NlcnQucGVtIFwKLSAgICAgICAgLWsgLi4vdGVzdC9jZXJ0L2tleS5w
ZW0gXAotCi1Ob3RlIHRoYXQgd2hlbiBwYXNzaW5nIGEgcmVsYXRpdmUgcGF0aCB0byAtYyBhbmQg
LWsgb3B0aW9uLCBpdCB3aWxsIGJlIHJlc29sdmVkCi11c2luZyB0aGUgZG9jdW1lbnQgcm9vdCBk
aXJlY3RvcnkgYXMgdGhlIGJhc2UuCi0KLQotVVNJTkcgQ0xJRU5UIEFVVEhFTlRJQ0FUSU9OCi09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotVG8gcnVuIHRoZSBzdGFuZGFsb25lIHNlcnZl
ciB3aXRoIFRMUyBjbGllbnQgYXV0aGVudGljYXRpb24gc3VwcG9ydCwgcnVuIGl0IHdpdGgKLS0t
dGxzLWNsaWVudC1hdXRoIGFuZCAtLXRscy1jbGllbnQtY2Egb3B0aW9ucyBpbiBhZGRpdGlvbiB0
byBvbmVzIHJlcXVpcmVkIGZvcgotVExTIHN1cHBvcnQuCi0KLUV4YW1wbGU6Ci0KLSAgJCBQWVRI
T05QQVRIPS4gcHl0aG9uIG1vZF9weXdlYnNvY2tldC9zdGFuZGFsb25lLnB5IC1kIGV4YW1wbGUg
LXAgMTA0NDMgLXQgXAotICAgICAgICAtYyAuLi90ZXN0L2NlcnQvY2VydC5wZW0gLWsgLi4vdGVz
dC9jZXJ0L2tleS5wZW0gXAotICAgICAgICAtLXRscy1jbGllbnQtYXV0aCBcCi0gICAgICAgIC0t
dGxzLWNsaWVudC1jYT0uLi90ZXN0L2NlcnQvY2FjZXJ0LnBlbQotCi1Ob3RlIHRoYXQgd2hlbiBw
YXNzaW5nIGEgcmVsYXRpdmUgcGF0aCB0byAtLXRscy1jbGllbnQtY2Egb3B0aW9uLCBpdCB3aWxs
IGJlCi1yZXNvbHZlZCB1c2luZyB0aGUgZG9jdW1lbnQgcm9vdCBkaXJlY3RvcnkgYXMgdGhlIGJh
c2UuCi0KLQotQ09ORklHVVJBVElPTiBGSUxFCi09PT09PT09PT09PT09PT09PT0KLQotWW91IGNh
biBhbHNvIHdyaXRlIGEgY29uZmlndXJhdGlvbiBmaWxlIGFuZCB1c2UgaXQgYnkgc3BlY2lmeWlu
ZyB0aGUgcGF0aCB0bwotdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBieSAtLWNvbmZpZyBvcHRpb24u
IFBsZWFzZSB3cml0ZSBhIGNvbmZpZ3VyYXRpb24gZmlsZQotZm9sbG93aW5nIHRoZSBkb2N1bWVu
dGF0aW9uIG9mIHRoZSBQeXRob24gQ29uZmlnUGFyc2VyIGxpYnJhcnkuIE5hbWUgb2YgZWFjaAot
ZW50cnkgbXVzdCBiZSB0aGUgbG9uZyB2ZXJzaW9uIGFyZ3VtZW50IG5hbWUuIEUuZy4gdG8gc2V0
IGxvZyBsZXZlbCB0byBkZWJ1ZywKLWFkZCB0aGUgZm9sbG93aW5nIGxpbmU6Ci0KLWxvZ19sZXZl
bD1kZWJ1ZwotCi1Gb3Igb3B0aW9ucyB3aGljaCBkb2Vzbid0IHRha2UgdmFsdWUsIHBsZWFzZSBh
ZGQgc29tZSBmYWtlIHZhbHVlLiBFLmcuIGZvcgotLS10bHMgb3B0aW9uLCBhZGQgdGhlIGZvbGxv
d2luZyBsaW5lOgotCi10bHM9VHJ1ZQotCi1Ob3RlIHRoYXQgdGxzIHdpbGwgYmUgZW5hYmxlZCBl
dmVuIGlmIHlvdSB3cml0ZSB0bHM9RmFsc2UgYXMgdGhlIHZhbHVlIHBhcnQgaXMKLWZha2UuCi0K
LVdoZW4gYm90aCBhIGNvbW1hbmQgbGluZSBhcmd1bWVudCBhbmQgYSBjb25maWd1cmF0aW9uIGZp
bGUgZW50cnkgYXJlIHNldCBmb3IKLXRoZSBzYW1lIGNvbmZpZ3VyYXRpb24gaXRlbSwgdGhlIGNv
bW1hbmQgbGluZSB2YWx1ZSB3aWxsIG92ZXJyaWRlIG9uZSBpbiB0aGUKLWNvbmZpZ3VyYXRpb24g
ZmlsZS4KLQotCi1USFJFQURJTkcKLT09PT09PT09PQotCi1UaGlzIHNlcnZlciBpcyBkZXJpdmVk
IGZyb20gc29ja2V0c2VydmVyLlRocmVhZGluZ01peEluLiBIZW5jZSBhIHRocmVhZCBpcwotdXNl
ZCBmb3IgZWFjaCByZXF1ZXN0LgotCi0KLVNFQ1VSSVRZIFdBUk5JTkcKLT09PT09PT09PT09PT09
PT0KLQotVGhpcyB1c2VzIENHSUhUVFBTZXJ2ZXIgYW5kIENHSUhUVFBTZXJ2ZXIgaXMgbm90IHNl
Y3VyZS4KLUl0IG1heSBleGVjdXRlIGFyYml0cmFyeSBQeXRob24gY29kZSBvciBleHRlcm5hbCBw
cm9ncmFtcy4gSXQgc2hvdWxkIG5vdCBiZQotdXNlZCBvdXRzaWRlIGEgZmlyZXdhbGwuCi0iIiIK
LQotZnJvbSBzaXgubW92ZXMgaW1wb3J0IEJhc2VIVFRQU2VydmVyCi1mcm9tIHNpeC5tb3ZlcyBp
bXBvcnQgQ0dJSFRUUFNlcnZlcgotZnJvbSBzaXgubW92ZXMgaW1wb3J0IFNpbXBsZUhUVFBTZXJ2
ZXIKLWZyb20gc2l4Lm1vdmVzIGltcG9ydCBzb2NrZXRzZXJ2ZXIKLWZyb20gc2l4Lm1vdmVzIGlt
cG9ydCBjb25maWdwYXJzZXIKLWltcG9ydCBiYXNlNjQKLWZyb20gc2l4Lm1vdmVzIGltcG9ydCBo
dHRwX2NsaWVudAotaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBsb2dnaW5nLmhhbmRsZXJzCi1pbXBv
cnQgb3B0cGFyc2UKLWltcG9ydCBvcwotaW1wb3J0IHJlCi1pbXBvcnQgc2VsZWN0Ci1pbXBvcnQg
c29ja2V0Ci1pbXBvcnQgc3lzCi1pbXBvcnQgdGhyZWFkaW5nCi1pbXBvcnQgdGltZQotZnJvbSBz
aXgubW92ZXMgaW1wb3J0IHVybGxpYgotCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29t
bW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgZGlzcGF0Y2gKLWZyb20gbW9kX3B5d2Vi
c29ja2V0IGltcG9ydCBoYW5kc2hha2UKLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBodHRw
X2hlYWRlcl91dGlsCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgbWVtb3JpemluZ2ZpbGUK
LWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCi1mcm9tIG1vZF9weXdlYnNvY2tldC54
aHJfYmVuY2htYXJrX2hhbmRsZXIgaW1wb3J0IFhIUkJlbmNobWFya0hhbmRsZXIKLQotCi1fREVG
QVVMVF9MT0dfTUFYX0JZVEVTID0gMTAyNCAqIDI1NgotX0RFRkFVTFRfTE9HX0JBQ0tVUF9DT1VO
VCA9IDUKLQotX0RFRkFVTFRfUkVRVUVTVF9RVUVVRV9TSVpFID0gMTI4Ci0KLSMgMTAyNCBpcyBw
cmFjdGljYWxseSBsYXJnZSBlbm91Z2ggdG8gY29udGFpbiBXZWJTb2NrZXQgaGFuZHNoYWtlIGxp
bmVzLgotX01BWF9NRU1PUklaRURfTElORVMgPSAxMDI0Ci0KLSMgQ29uc3RhbnRzIGZvciB0aGUg
LS10bHNfbW9kdWxlIGZsYWcuCi1fVExTX0JZX1NUQU5EQVJEX01PRFVMRSA9ICdzc2wnCi1fVExT
X0JZX1BZT1BFTlNTTCA9ICdweW9wZW5zc2wnCi0KLQotY2xhc3MgX1N0YW5kYWxvbmVDb25uZWN0
aW9uKG9iamVjdCk6Ci0gICAgIiIiTWltaWMgbW9kX3B5dGhvbiBtcF9jb25uLiIiIgotCi0gICAg
ZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3RfaGFuZGxlcik6Ci0gICAgICAgICIiIkNvbnN0cnVj
dCBhbiBpbnN0YW5jZS4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgcmVxdWVzdF9oYW5k
bGVyOiBBIFdlYlNvY2tldFJlcXVlc3RIYW5kbGVyIGluc3RhbmNlLgotICAgICAgICAiIiIKLQot
ICAgICAgICBzZWxmLl9yZXF1ZXN0X2hhbmRsZXIgPSByZXF1ZXN0X2hhbmRsZXIKLQotICAgIGRl
ZiBnZXRfbG9jYWxfYWRkcihzZWxmKToKLSAgICAgICAgIiIiR2V0dGVyIHRvIG1pbWljIG1wX2Nv
bm4ubG9jYWxfYWRkci4iIiIKLQotICAgICAgICByZXR1cm4gKHNlbGYuX3JlcXVlc3RfaGFuZGxl
ci5zZXJ2ZXIuc2VydmVyX25hbWUsCi0gICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVzdF9oYW5k
bGVyLnNlcnZlci5zZXJ2ZXJfcG9ydCkKLSAgICBsb2NhbF9hZGRyID0gcHJvcGVydHkoZ2V0X2xv
Y2FsX2FkZHIpCi0KLSAgICBkZWYgZ2V0X3JlbW90ZV9hZGRyKHNlbGYpOgotICAgICAgICAiIiJH
ZXR0ZXIgdG8gbWltaWMgbXBfY29ubi5yZW1vdGVfYWRkci4KLQotICAgICAgICBTZXR0aW5nIHRo
ZSBwcm9wZXJ0eSBpbiBfX2luaXRfXyB3b24ndCB3b3JrIGJlY2F1c2UgdGhlIHJlcXVlc3QKLSAg
ICAgICAgaGFuZGxlciBpcyBub3QgaW5pdGlhbGl6ZWQgeWV0IHRoZXJlLiIiIgotCi0gICAgICAg
IHJldHVybiBzZWxmLl9yZXF1ZXN0X2hhbmRsZXIuY2xpZW50X2FkZHJlc3MKLSAgICByZW1vdGVf
YWRkciA9IHByb3BlcnR5KGdldF9yZW1vdGVfYWRkcikKLQotICAgIGRlZiB3cml0ZShzZWxmLCBk
YXRhKToKLSAgICAgICAgIiIiTWltaWMgbXBfY29ubi53cml0ZSgpLiIiIgotCi0gICAgICAgIHJl
dHVybiBzZWxmLl9yZXF1ZXN0X2hhbmRsZXIud2ZpbGUud3JpdGUoZGF0YSkKLQotICAgIGRlZiBy
ZWFkKHNlbGYsIGxlbmd0aCk6Ci0gICAgICAgICIiIk1pbWljIG1wX2Nvbm4ucmVhZCgpLiIiIgot
Ci0gICAgICAgIHJldHVybiBzZWxmLl9yZXF1ZXN0X2hhbmRsZXIucmZpbGUucmVhZChsZW5ndGgp
Ci0KLSAgICBkZWYgZ2V0X21lbW9yaXplZF9saW5lcyhzZWxmKToKLSAgICAgICAgIiIiR2V0IG1l
bW9yaXplZCBsaW5lcy4iIiIKLQotICAgICAgICByZXR1cm4gc2VsZi5fcmVxdWVzdF9oYW5kbGVy
LnJmaWxlLmdldF9tZW1vcml6ZWRfbGluZXMoKQotCi0KLWNsYXNzIF9TdGFuZGFsb25lUmVxdWVz
dChvYmplY3QpOgotICAgICIiIk1pbWljIG1vZF9weXRob24gcmVxdWVzdC4iIiIKLQotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0X2hhbmRsZXIsIHVzZV90bHMpOgotICAgICAgICAiIiJD
b25zdHJ1Y3QgYW4gaW5zdGFuY2UuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIHJlcXVl
c3RfaGFuZGxlcjogQSBXZWJTb2NrZXRSZXF1ZXN0SGFuZGxlciBpbnN0YW5jZS4KLSAgICAgICAg
IiIiCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYp
Ci0KLSAgICAgICAgc2VsZi5fcmVxdWVzdF9oYW5kbGVyID0gcmVxdWVzdF9oYW5kbGVyCi0gICAg
ICAgIHNlbGYuY29ubmVjdGlvbiA9IF9TdGFuZGFsb25lQ29ubmVjdGlvbihyZXF1ZXN0X2hhbmRs
ZXIpCi0gICAgICAgIHNlbGYuX3VzZV90bHMgPSB1c2VfdGxzCi0gICAgICAgIHNlbGYuaGVhZGVy
c19pbiA9IHJlcXVlc3RfaGFuZGxlci5oZWFkZXJzCi0KLSAgICBkZWYgZ2V0X3VyaShzZWxmKToK
LSAgICAgICAgIiIiR2V0dGVyIHRvIG1pbWljIHJlcXVlc3QudXJpLgotCi0gICAgICAgIFRoaXMg
bWV0aG9kIHJldHVybnMgdGhlIHJhdyBkYXRhIGF0IHRoZSBSZXF1ZXN0LVVSSSBwYXJ0IG9mIHRo
ZQotICAgICAgICBSZXF1ZXN0LUxpbmUsIHdoaWxlIHRoZSB1cmkgbWV0aG9kIG9uIHRoZSByZXF1
ZXN0IG9iamVjdCBvZiBtb2RfcHl0aG9uCi0gICAgICAgIHJldHVybnMgdGhlIHBhdGggcG9ydGlv
biBhZnRlciBwYXJzaW5nIHRoZSByYXcgZGF0YS4gVGhpcyBiZWhhdmlvciBpcwotICAgICAgICBr
ZXB0IGZvciBjb21wYXRpYmlsaXR5LgotICAgICAgICAiIiIKLQotICAgICAgICByZXR1cm4gc2Vs
Zi5fcmVxdWVzdF9oYW5kbGVyLnBhdGgKLSAgICB1cmkgPSBwcm9wZXJ0eShnZXRfdXJpKQotCi0g
ICAgZGVmIGdldF91bnBhcnNlZF91cmkoc2VsZik6Ci0gICAgICAgICIiIkdldHRlciB0byBtaW1p
YyByZXF1ZXN0LnVucGFyc2VkX3VyaS4iIiIKLQotICAgICAgICByZXR1cm4gc2VsZi5fcmVxdWVz
dF9oYW5kbGVyLnBhdGgKLSAgICB1bnBhcnNlZF91cmkgPSBwcm9wZXJ0eShnZXRfdW5wYXJzZWRf
dXJpKQotCi0gICAgZGVmIGdldF9tZXRob2Qoc2VsZik6Ci0gICAgICAgICIiIkdldHRlciB0byBt
aW1pYyByZXF1ZXN0Lm1ldGhvZC4iIiIKLQotICAgICAgICByZXR1cm4gc2VsZi5fcmVxdWVzdF9o
YW5kbGVyLmNvbW1hbmQKLSAgICBtZXRob2QgPSBwcm9wZXJ0eShnZXRfbWV0aG9kKQotCi0gICAg
ZGVmIGdldF9wcm90b2NvbChzZWxmKToKLSAgICAgICAgIiIiR2V0dGVyIHRvIG1pbWljIHJlcXVl
c3QucHJvdG9jb2wuIiIiCi0KLSAgICAgICAgcmV0dXJuIHNlbGYuX3JlcXVlc3RfaGFuZGxlci5y
ZXF1ZXN0X3ZlcnNpb24KLSAgICBwcm90b2NvbCA9IHByb3BlcnR5KGdldF9wcm90b2NvbCkKLQot
ICAgIGRlZiBpc19odHRwcyhzZWxmKToKLSAgICAgICAgIiIiTWltaWMgcmVxdWVzdC5pc19odHRw
cygpLiIiIgotCi0gICAgICAgIHJldHVybiBzZWxmLl91c2VfdGxzCi0KLQotZGVmIF9pbXBvcnRf
c3NsKCk6Ci0gICAgZ2xvYmFsIHNzbAotICAgIHRyeToKLSAgICAgICAgaW1wb3J0IHNzbAotICAg
ICAgICByZXR1cm4gVHJ1ZQotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgcmV0dXJu
IEZhbHNlCi0KLQotZGVmIF9pbXBvcnRfcHlvcGVuc3NsKCk6Ci0gICAgZ2xvYmFsIE9wZW5TU0wK
LSAgICB0cnk6Ci0gICAgICAgIGltcG9ydCBPcGVuU1NMLlNTTAotICAgICAgICByZXR1cm4gVHJ1
ZQotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLQotY2xh
c3MgX1N0YW5kYWxvbmVTU0xDb25uZWN0aW9uKG9iamVjdCk6Ci0gICAgIiIiQSB3cmFwcGVyIGNs
YXNzIGZvciBPcGVuU1NMLlNTTC5Db25uZWN0aW9uIHRvCi0gICAgLSBwcm92aWRlIG1ha2VmaWxl
IG1ldGhvZCB3aGljaCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBjbGFzcwotICAgIC0gdHdlYWsg
c2h1dGRvd24gbWV0aG9kIHNpbmNlIE9wZW5TU0wuU1NMLkNvbm5lY3Rpb24uc2h1dGRvd24gZG9l
c24ndAotICAgICAgYWNjZXB0IHRoZSAiaG93IiBhcmd1bWVudC4KLSAgICAtIGNvbnZlcnQgU3lz
Q2FsbEVycm9yIGV4Y2VwdGlvbnMgdGhhdCBpdHMgcmVjdiBtZXRob2QgbWF5IHJhaXNlIGludG8g
YQotICAgICAgcmV0dXJuIHZhbHVlIG9mICcnLCBtZWFuaW5nIEVPRi4gV2UgY2Fubm90IG92ZXJ3
cml0ZSB0aGUgcmVjdiBtZXRob2Qgb24KLSAgICAgIHNlbGYuX2Nvbm5lY3Rpb24gc2luY2UgaXQn
cyBpbW11dGFibGUuCi0gICAgIiIiCi0KLSAgICBfT1ZFUlJJRERFTl9BVFRSSUJVVEVTID0gWydf
Y29ubmVjdGlvbicsICdtYWtlZmlsZScsICdzaHV0ZG93bicsICdyZWN2J10KLQotICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBjb25uZWN0aW9uKToKLSAgICAgICAgc2VsZi5fY29ubmVjdGlvbiA9IGNv
bm5lY3Rpb24KLQotICAgIGRlZiBfX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpOgotICAgICAg
ICBpZiBuYW1lIGluIF9TdGFuZGFsb25lU1NMQ29ubmVjdGlvbi5fT1ZFUlJJRERFTl9BVFRSSUJV
VEVTOgotICAgICAgICAgICAgcmV0dXJuIG9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5h
bWUpCi0gICAgICAgIHJldHVybiBzZWxmLl9jb25uZWN0aW9uLl9fZ2V0YXR0cmlidXRlX18obmFt
ZSkKLQotICAgIGRlZiBfX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSk6Ci0gICAgICAgIGlm
IG5hbWUgaW4gX1N0YW5kYWxvbmVTU0xDb25uZWN0aW9uLl9PVkVSUklEREVOX0FUVFJJQlVURVM6
Ci0gICAgICAgICAgICByZXR1cm4gb2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVl
KQotICAgICAgICByZXR1cm4gc2VsZi5fY29ubmVjdGlvbi5fX3NldGF0dHJfXyhuYW1lLCB2YWx1
ZSkKLQotICAgIGRlZiBtYWtlZmlsZShzZWxmLCBtb2RlPSdyJywgYnVmc2l6ZT0tMSk6Ci0gICAg
ICAgIHJldHVybiBzb2NrZXQuX2ZpbGVvYmplY3Qoc2VsZiwgbW9kZSwgYnVmc2l6ZSkKLQotICAg
IGRlZiBzaHV0ZG93bihzZWxmLCB1bnVzZWRfaG93KToKLSAgICAgICAgc2VsZi5fY29ubmVjdGlv
bi5zaHV0ZG93bigpCi0KLSAgICBkZWYgcmVjdihzZWxmLCBidWZzaXplLCBmbGFncz0wKToKLSAg
ICAgICAgaWYgZmxhZ3MgIT0gMDoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ05vbi16
ZXJvIGZsYWdzIG5vdCBhbGxvd2VkJykKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1
cm4gc2VsZi5fY29ubmVjdGlvbi5yZWN2KGJ1ZnNpemUpCi0gICAgICAgIGV4Y2VwdCBPcGVuU1NM
LlNTTC5TeXNDYWxsRXJyb3IgYXMgZToKLSAgICAgICAgICAgIGlmIGUuYXJnc1swXSA9PSAtMToK
LSAgICAgICAgICAgICAgICAjIFN1cHByZXNzICJ1bmV4cGVjdGVkIEVPRiIgZXhjZXB0aW9uLiBT
ZWUgdGhlIE9wZW5TU0wgZG9jdW1lbnQKLSAgICAgICAgICAgICAgICAjIGZvciBTU0xfZ2V0X2Vy
cm9yLgotICAgICAgICAgICAgICAgIHJldHVybiAnJwotICAgICAgICAgICAgcmFpc2UKLQotCi1k
ZWYgX2FsaWFzX2hhbmRsZXJzKGRpc3BhdGNoZXIsIHdlYnNvY2tfaGFuZGxlcnNfbWFwX2ZpbGUp
OgotICAgICIiIlNldCBhbGlhc2VzIHNwZWNpZmllZCBpbiB3ZWJzb2NrX2hhbmRsZXJfbWFwX2Zp
bGUgaW4gZGlzcGF0Y2hlci4KLQotICAgIEFyZ3M6Ci0gICAgICAgIGRpc3BhdGNoZXI6IGRpc3Bh
dGNoLkRpc3BhdGNoZXIgaW5zdGFuY2UKLSAgICAgICAgd2Vic29ja19oYW5kbGVyX21hcF9maWxl
OiBhbGlhcyBtYXAgZmlsZQotICAgICIiIgotCi0gICAgZnAgPSBvcGVuKHdlYnNvY2tfaGFuZGxl
cnNfbWFwX2ZpbGUpCi0gICAgdHJ5OgotICAgICAgICBmb3IgbGluZSBpbiBmcDoKLSAgICAgICAg
ICAgIGlmIGxpbmVbMF0gPT0gJyMnIG9yIGxpbmUuaXNzcGFjZSgpOgotICAgICAgICAgICAgICAg
IGNvbnRpbnVlCi0gICAgICAgICAgICBtID0gcmUubWF0Y2gocicoXFMrKVxzKyhcUyspJywgbGlu
ZSkKLSAgICAgICAgICAgIGlmIG5vdCBtOgotICAgICAgICAgICAgICAgIGxvZ2dpbmcud2Fybmlu
ZygnV3JvbmcgZm9ybWF0IGluIG1hcCBmaWxlOicgKyBsaW5lKQotICAgICAgICAgICAgICAgIGNv
bnRpbnVlCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZGlzcGF0Y2hlci5hZGRf
cmVzb3VyY2VfcGF0aF9hbGlhcygKLSAgICAgICAgICAgICAgICAgICAgbS5ncm91cCgxKSwgbS5n
cm91cCgyKSkKLSAgICAgICAgICAgIGV4Y2VwdCBkaXNwYXRjaC5EaXNwYXRjaEV4Y2VwdGlvbiBh
cyBlOgotICAgICAgICAgICAgICAgIGxvZ2dpbmcuZXJyb3Ioc3RyKGUpKQotICAgIGZpbmFsbHk6
Ci0gICAgICAgIGZwLmNsb3NlKCkKLQotCi1jbGFzcyBXZWJTb2NrZXRTZXJ2ZXIoc29ja2V0c2Vy
dmVyLlRocmVhZGluZ01peEluLCBCYXNlSFRUUFNlcnZlci5IVFRQU2VydmVyKToKLSAgICAiIiJI
VFRQU2VydmVyIHNwZWNpYWxpemVkIGZvciBXZWJTb2NrZXQuIiIiCi0KLSAgICAjIE92ZXJyaWRl
cyBzb2NrZXRzZXJ2ZXIuVGhyZWFkaW5nTWl4SW4uZGFlbW9uX3RocmVhZHMKLSAgICBkYWVtb25f
dGhyZWFkcyA9IFRydWUKLSAgICAjIE92ZXJyaWRlcyBCYXNlSFRUUFNlcnZlci5IVFRQU2VydmVy
LmFsbG93X3JldXNlX2FkZHJlc3MKLSAgICBhbGxvd19yZXVzZV9hZGRyZXNzID0gVHJ1ZQotCi0g
ICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wdGlvbnMpOgotICAgICAgICAiIiJPdmVycmlkZSBzb2Nr
ZXRzZXJ2ZXIuVENQU2VydmVyLl9faW5pdF9fIHRvIHNldCBTU0wgZW5hYmxlZAotICAgICAgICBz
b2NrZXQgb2JqZWN0IHRvIHNlbGYuc29ja2V0IGJlZm9yZSBzZXJ2ZXJfYmluZCBhbmQgc2VydmVy
X2FjdGl2YXRlLAotICAgICAgICBpZiBuZWNlc3NhcnkuCi0gICAgICAgICIiIgotCi0gICAgICAg
ICMgU2hhcmUgYSBEaXNwYXRjaGVyIGFtb25nIHJlcXVlc3QgaGFuZGxlcnMgdG8gc2F2ZSB0aW1l
IGZvcgotICAgICAgICAjIGluc3RhbnRpYXRpb24uICBEaXNwYXRjaGVyIGNhbiBiZSBzaGFyZWQg
YmVjYXVzZSBpdCBpcyB0aHJlYWQtc2FmZS4KLSAgICAgICAgb3B0aW9ucy5kaXNwYXRjaGVyID0g
ZGlzcGF0Y2guRGlzcGF0Y2hlcigKLSAgICAgICAgICAgIG9wdGlvbnMud2Vic29ja19oYW5kbGVy
cywKLSAgICAgICAgICAgIG9wdGlvbnMuc2Nhbl9kaXIsCi0gICAgICAgICAgICBvcHRpb25zLmFs
bG93X2hhbmRsZXJzX291dHNpZGVfcm9vdF9kaXIpCi0gICAgICAgIGlmIG9wdGlvbnMud2Vic29j
a19oYW5kbGVyc19tYXBfZmlsZToKLSAgICAgICAgICAgIF9hbGlhc19oYW5kbGVycyhvcHRpb25z
LmRpc3BhdGNoZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy53ZWJzb2Nr
X2hhbmRsZXJzX21hcF9maWxlKQotICAgICAgICB3YXJuaW5ncyA9IG9wdGlvbnMuZGlzcGF0Y2hl
ci5zb3VyY2Vfd2FybmluZ3MoKQotICAgICAgICBpZiB3YXJuaW5nczoKLSAgICAgICAgICAgIGZv
ciB3YXJuaW5nIGluIHdhcm5pbmdzOgotICAgICAgICAgICAgICAgIGxvZ2dpbmcud2FybmluZygn
V2FybmluZyBpbiBzb3VyY2UgbG9hZGluZzogJXMnICUgd2FybmluZykKLQotICAgICAgICBzZWxm
Ll9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKLQotICAgICAgICBzZWxmLnJl
cXVlc3RfcXVldWVfc2l6ZSA9IG9wdGlvbnMucmVxdWVzdF9xdWV1ZV9zaXplCi0gICAgICAgIHNl
bGYuX193c19pc19zaHV0X2Rvd24gPSB0aHJlYWRpbmcuRXZlbnQoKQotICAgICAgICBzZWxmLl9f
d3Nfc2VydmluZyA9IEZhbHNlCi0KLSAgICAgICAgc29ja2V0c2VydmVyLkJhc2VTZXJ2ZXIuX19p
bml0X18oCi0gICAgICAgICAgICBzZWxmLCAob3B0aW9ucy5zZXJ2ZXJfaG9zdCwgb3B0aW9ucy5w
b3J0KSwgV2ViU29ja2V0UmVxdWVzdEhhbmRsZXIpCi0KLSAgICAgICAgIyBFeHBvc2UgdGhlIG9w
dGlvbnMgb2JqZWN0IHRvIGFsbG93IGhhbmRsZXIgb2JqZWN0cyBhY2Nlc3MgaXQuIFdlIG5hbWUK
LSAgICAgICAgIyBpdCB3aXRoIHdlYnNvY2tldF8gcHJlZml4IHRvIGF2b2lkIGNvbmZsaWN0Lgot
ICAgICAgICBzZWxmLndlYnNvY2tldF9zZXJ2ZXJfb3B0aW9ucyA9IG9wdGlvbnMKLQotICAgICAg
ICBzZWxmLl9jcmVhdGVfc29ja2V0cygpCi0gICAgICAgIHNlbGYuc2VydmVyX2JpbmQoKQotICAg
ICAgICBzZWxmLnNlcnZlcl9hY3RpdmF0ZSgpCi0KLSAgICBkZWYgX2NyZWF0ZV9zb2NrZXRzKHNl
bGYpOgotICAgICAgICBzZWxmLnNlcnZlcl9uYW1lLCBzZWxmLnNlcnZlcl9wb3J0ID0gc2VsZi5z
ZXJ2ZXJfYWRkcmVzcwotICAgICAgICBzZWxmLl9zb2NrZXRzID0gW10KLSAgICAgICAgaWYgbm90
IHNlbGYuc2VydmVyX25hbWU6Ci0gICAgICAgICAgICAjIE9uIHBsYXRmb3JtcyB0aGF0IGRvZXNu
J3Qgc3VwcG9ydCBJUHY2LCB0aGUgZmlyc3QgYmluZCBmYWlscy4KLSAgICAgICAgICAgICMgT24g
cGxhdGZvcm1zIHRoYXQgc3VwcG9ydHMgSVB2NgotICAgICAgICAgICAgIyAtIElmIGl0IGJpbmRz
IGJvdGggSVB2NCBhbmQgSVB2NiBvbiBjYWxsIHdpdGggQUZfSU5FVDYsIHRoZQotICAgICAgICAg
ICAgIyAgIGZpcnN0IGJpbmQgc3VjY2VlZHMgYW5kIHRoZSBzZWNvbmQgZmFpbHMgKHdlJ2xsIHNl
ZSAnQWRkcmVzcwotICAgICAgICAgICAgIyAgIGFscmVhZHkgaW4gdXNlJyBlcnJvcikuCi0gICAg
ICAgICAgICAjIC0gSWYgaXQgYmluZHMgb25seSBJUHY2IG9uIGNhbGwgd2l0aCBBRl9JTkVUNiwg
Ym90aCBjYWxsIGFyZQotICAgICAgICAgICAgIyAgIGV4cGVjdGVkIHRvIHN1Y2NlZWQgdG8gbGlz
dGVuIGJvdGggcHJvdG9jb2wuCi0gICAgICAgICAgICBhZGRyaW5mb19hcnJheSA9IFsKLSAgICAg
ICAgICAgICAgICAoc29ja2V0LkFGX0lORVQ2LCBzb2NrZXQuU09DS19TVFJFQU0sICcnLCAnJywg
JycpLAotICAgICAgICAgICAgICAgIChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFN
LCAnJywgJycsICcnKV0KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGFkZHJpbmZvX2FycmF5
ID0gc29ja2V0LmdldGFkZHJpbmZvKHNlbGYuc2VydmVyX25hbWUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9wb3J0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LkFGX1VOU1BF
QywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tl
dC5TT0NLX1NUUkVBTSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNvY2tldC5JUFBST1RPX1RDUCkKLSAgICAgICAgZm9yIGFkZHJpbmZvIGluIGFkZHJp
bmZvX2FycmF5OgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0NyZWF0ZSBzb2NrZXQg
b246ICVyJywgYWRkcmluZm8pCi0gICAgICAgICAgICBmYW1pbHksIHNvY2t0eXBlLCBwcm90bywg
Y2Fub25uYW1lLCBzb2NrYWRkciA9IGFkZHJpbmZvCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAg
ICAgICAgICAgc29ja2V0XyA9IHNvY2tldC5zb2NrZXQoZmFtaWx5LCBzb2NrdHlwZSkKLSAgICAg
ICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgICAgICBzZWxmLl9sb2dn
ZXIuaW5mbygnU2tpcCBieSBmYWlsdXJlOiAlcicsIGUpCi0gICAgICAgICAgICAgICAgY29udGlu
dWUKLSAgICAgICAgICAgIHNlcnZlcl9vcHRpb25zID0gc2VsZi53ZWJzb2NrZXRfc2VydmVyX29w
dGlvbnMKLSAgICAgICAgICAgIGlmIHNlcnZlcl9vcHRpb25zLnVzZV90bHM6Ci0gICAgICAgICAg
ICAgICAgIyBGb3IgdGhlIGNhc2Ugb2YgX0hBU19PUEVOX1NTTCwgd2UgZG8gd3JhcHBlciBzZXR1
cCBhZnRlcgotICAgICAgICAgICAgICAgICMgYWNjZXB0LgotICAgICAgICAgICAgICAgIGlmIHNl
cnZlcl9vcHRpb25zLnRsc19tb2R1bGUgPT0gX1RMU19CWV9TVEFOREFSRF9NT0RVTEU6Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIHNlcnZlcl9vcHRpb25zLnRsc19jbGllbnRfYXV0aDoKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIHNlcnZlcl9vcHRpb25zLnRsc19jbGllbnRfY2VydF9vcHRp
b25hbDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRfY2VydF8gPSBzc2wuQ0VS
VF9PUFRJT05BTAotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjbGllbnRfY2VydF8gPSBzc2wuQ0VSVF9SRVFVSVJFRAotICAgICAgICAg
ICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50X2NlcnRfID0g
c3NsLkNFUlRfTk9ORQotICAgICAgICAgICAgICAgICAgICBzb2NrZXRfID0gc3NsLndyYXBfc29j
a2V0KHNvY2tldF8sCi0gICAgICAgICAgICAgICAgICAgICAgICBrZXlmaWxlPXNlcnZlcl9vcHRp
b25zLnByaXZhdGVfa2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9c2VydmVy
X29wdGlvbnMuY2VydGlmaWNhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICBzc2xfdmVyc2lv
bj1zc2wuUFJPVE9DT0xfU1NMdjIzLAotICAgICAgICAgICAgICAgICAgICAgICAgY2FfY2VydHM9
c2VydmVyX29wdGlvbnMudGxzX2NsaWVudF9jYSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNl
cnRfcmVxcz1jbGllbnRfY2VydF8sCi0gICAgICAgICAgICAgICAgICAgICAgICBkb19oYW5kc2hh
a2Vfb25fY29ubmVjdD1GYWxzZSkKLSAgICAgICAgICAgIHNlbGYuX3NvY2tldHMuYXBwZW5kKChz
b2NrZXRfLCBhZGRyaW5mbykpCi0KLSAgICBkZWYgc2VydmVyX2JpbmQoc2VsZik6Ci0gICAgICAg
ICIiIk92ZXJyaWRlIHNvY2tldHNlcnZlci5UQ1BTZXJ2ZXIuc2VydmVyX2JpbmQgdG8gZW5hYmxl
IG11bHRpcGxlCi0gICAgICAgIHNvY2tldHMgYmluZC4KLSAgICAgICAgIiIiCi0KLSAgICAgICAg
ZmFpbGVkX3NvY2tldHMgPSBbXQotCi0gICAgICAgIGZvciBzb2NrZXRpbmZvIGluIHNlbGYuX3Nv
Y2tldHM6Ci0gICAgICAgICAgICBzb2NrZXRfLCBhZGRyaW5mbyA9IHNvY2tldGluZm8KLSAgICAg
ICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdCaW5kIG9uOiAlcicsIGFkZHJpbmZvKQotICAgICAg
ICAgICAgaWYgc2VsZi5hbGxvd19yZXVzZV9hZGRyZXNzOgotICAgICAgICAgICAgICAgIHNvY2tl
dF8uc2V0c29ja29wdChzb2NrZXQuU09MX1NPQ0tFVCwgc29ja2V0LlNPX1JFVVNFQUREUiwgMSkK
LSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzb2NrZXRfLmJpbmQoc2VsZi5zZXJ2
ZXJfYWRkcmVzcykKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAg
ICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnU2tpcCBieSBmYWlsdXJlOiAlcicsIGUpCi0gICAg
ICAgICAgICAgICAgc29ja2V0Xy5jbG9zZSgpCi0gICAgICAgICAgICAgICAgZmFpbGVkX3NvY2tl
dHMuYXBwZW5kKHNvY2tldGluZm8pCi0gICAgICAgICAgICBpZiBzZWxmLnNlcnZlcl9hZGRyZXNz
WzFdID09IDA6Ci0gICAgICAgICAgICAgICAgIyBUaGUgb3BlcmF0aW5nIHN5c3RlbSBhc3NpZ25z
IHRoZSBhY3R1YWwgcG9ydCBudW1iZXIgZm9yIHBvcnQKLSAgICAgICAgICAgICAgICAjIG51bWJl
ciAwLiBUaGlzIGNhc2UsIHRoZSBzZWNvbmQgYW5kIGxhdGVyIHNvY2tldHMgc2hvdWxkIHVzZQot
ICAgICAgICAgICAgICAgICMgdGhlIHNhbWUgcG9ydCBudW1iZXIuIEFsc28gc2VsZi5zZXJ2ZXJf
cG9ydCBpcyByZXdyaXR0ZW4KLSAgICAgICAgICAgICAgICAjIGJlY2F1c2UgaXQgaXMgZXhwb3J0
ZWQsIGFuZCB3aWxsIGJlIHVzZWQgYnkgZXh0ZXJuYWwgY29kZS4KLSAgICAgICAgICAgICAgICBz
ZWxmLnNlcnZlcl9hZGRyZXNzID0gKAotICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9u
YW1lLCBzb2NrZXRfLmdldHNvY2tuYW1lKClbMV0pCi0gICAgICAgICAgICAgICAgc2VsZi5zZXJ2
ZXJfcG9ydCA9IHNlbGYuc2VydmVyX2FkZHJlc3NbMV0KLSAgICAgICAgICAgICAgICBzZWxmLl9s
b2dnZXIuaW5mbygnUG9ydCAlciBpcyBhc3NpZ25lZCcsIHNlbGYuc2VydmVyX3BvcnQpCi0KLSAg
ICAgICAgZm9yIHNvY2tldGluZm8gaW4gZmFpbGVkX3NvY2tldHM6Ci0gICAgICAgICAgICBzZWxm
Ll9zb2NrZXRzLnJlbW92ZShzb2NrZXRpbmZvKQotCi0gICAgZGVmIHNlcnZlcl9hY3RpdmF0ZShz
ZWxmKToKLSAgICAgICAgIiIiT3ZlcnJpZGUgc29ja2V0c2VydmVyLlRDUFNlcnZlci5zZXJ2ZXJf
YWN0aXZhdGUgdG8gZW5hYmxlIG11bHRpcGxlCi0gICAgICAgIHNvY2tldHMgbGlzdGVuLgotICAg
ICAgICAiIiIKLQotICAgICAgICBmYWlsZWRfc29ja2V0cyA9IFtdCi0KLSAgICAgICAgZm9yIHNv
Y2tldGluZm8gaW4gc2VsZi5fc29ja2V0czoKLSAgICAgICAgICAgIHNvY2tldF8sIGFkZHJpbmZv
ID0gc29ja2V0aW5mbwotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0xpc3RlbiBvbjog
JXInLCBhZGRyaW5mbykKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzb2NrZXRf
Lmxpc3RlbihzZWxmLnJlcXVlc3RfcXVldWVfc2l6ZSkKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNl
cHRpb24gYXMgZToKLSAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnU2tpcCBieSBm
YWlsdXJlOiAlcicsIGUpCi0gICAgICAgICAgICAgICAgc29ja2V0Xy5jbG9zZSgpCi0gICAgICAg
ICAgICAgICAgZmFpbGVkX3NvY2tldHMuYXBwZW5kKHNvY2tldGluZm8pCi0KLSAgICAgICAgZm9y
IHNvY2tldGluZm8gaW4gZmFpbGVkX3NvY2tldHM6Ci0gICAgICAgICAgICBzZWxmLl9zb2NrZXRz
LnJlbW92ZShzb2NrZXRpbmZvKQotCi0gICAgICAgIGlmIGxlbihzZWxmLl9zb2NrZXRzKSA9PSAw
OgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmNyaXRpY2FsKAotICAgICAgICAgICAgICAgICdO
byBzb2NrZXRzIGFjdGl2YXRlZC4gVXNlIGluZm8gbG9nIGxldmVsIHRvIHNlZSB0aGUgcmVhc29u
LicpCi0KLSAgICBkZWYgc2VydmVyX2Nsb3NlKHNlbGYpOgotICAgICAgICAiIiJPdmVycmlkZSBz
b2NrZXRzZXJ2ZXIuVENQU2VydmVyLnNlcnZlcl9jbG9zZSB0byBlbmFibGUgbXVsdGlwbGUKLSAg
ICAgICAgc29ja2V0cyBjbG9zZS4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgZm9yIHNvY2tldGlu
Zm8gaW4gc2VsZi5fc29ja2V0czoKLSAgICAgICAgICAgIHNvY2tldF8sIGFkZHJpbmZvID0gc29j
a2V0aW5mbwotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0Nsb3NlIG9uOiAlcicsIGFk
ZHJpbmZvKQotICAgICAgICAgICAgc29ja2V0Xy5jbG9zZSgpCi0KLSAgICBkZWYgZmlsZW5vKHNl
bGYpOgotICAgICAgICAiIiJPdmVycmlkZSBzb2NrZXRzZXJ2ZXIuVENQU2VydmVyLmZpbGVuby4i
IiIKLQotICAgICAgICBzZWxmLl9sb2dnZXIuY3JpdGljYWwoJ05vdCBzdXBwb3J0ZWQ6IGZpbGVu
bycpCi0gICAgICAgIHJldHVybiBzZWxmLl9zb2NrZXRzWzBdWzBdLmZpbGVubygpCi0KLSAgICBk
ZWYgaGFuZGxlX2Vycm9yKHNlbGYsIHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKToKLSAgICAgICAg
IiIiT3ZlcnJpZGUgc29ja2V0c2VydmVyLmhhbmRsZV9lcnJvci4iIiIKLQotICAgICAgICBzZWxm
Ll9sb2dnZXIuZXJyb3IoCi0gICAgICAgICAgICAnRXhjZXB0aW9uIGluIHByb2Nlc3NpbmcgcmVx
dWVzdCBmcm9tOiAlclxuJXMnLAotICAgICAgICAgICAgY2xpZW50X2FkZHJlc3MsCi0gICAgICAg
ICAgICB1dGlsLmdldF9zdGFja190cmFjZSgpKQotICAgICAgICAjIE5vdGU6IGNsaWVudF9hZGRy
ZXNzIGlzIGEgdHVwbGUuCi0KLSAgICBkZWYgZ2V0X3JlcXVlc3Qoc2VsZik6Ci0gICAgICAgICIi
Ik92ZXJyaWRlIFRDUFNlcnZlci5nZXRfcmVxdWVzdCB0byB3cmFwIE9wZW5TU0wuU1NMLkNvbm5l
Y3Rpb24KLSAgICAgICAgb2JqZWN0IHdpdGggX1N0YW5kYWxvbmVTU0xDb25uZWN0aW9uIHRvIHBy
b3ZpZGUgbWFrZWZpbGUgbWV0aG9kLiBXZQotICAgICAgICBjYW5ub3Qgc3Vic3RpdHV0ZSBPcGVu
U1NMLlNTTC5Db25uZWN0aW9uLm1ha2VmaWxlIHNpbmNlIGl0J3MgcmVhZG9ubHkKLSAgICAgICAg
YXR0cmlidXRlLgotICAgICAgICAiIiIKLQotICAgICAgICBhY2NlcHRlZF9zb2NrZXQsIGNsaWVu
dF9hZGRyZXNzID0gc2VsZi5zb2NrZXQuYWNjZXB0KCkKLQotICAgICAgICBzZXJ2ZXJfb3B0aW9u
cyA9IHNlbGYud2Vic29ja2V0X3NlcnZlcl9vcHRpb25zCi0gICAgICAgIGlmIHNlcnZlcl9vcHRp
b25zLnVzZV90bHM6Ci0gICAgICAgICAgICBpZiBzZXJ2ZXJfb3B0aW9ucy50bHNfbW9kdWxlID09
IF9UTFNfQllfU1RBTkRBUkRfTU9EVUxFOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAg
ICAgICAgICAgICAgYWNjZXB0ZWRfc29ja2V0LmRvX2hhbmRzaGFrZSgpCi0gICAgICAgICAgICAg
ICAgZXhjZXB0IHNzbC5TU0xFcnJvciBhcyBlOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9s
b2dnZXIuZGVidWcoJyVyJywgZSkKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UKLQotICAgICAg
ICAgICAgICAgICMgUHJpbnQgY2lwaGVyIGluIHVzZS4gSGFuZHNoYWtlIGlzIGRvbmUgb24gYWNj
ZXB0LgotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnQ2lwaGVyOiAlcycsIGFj
Y2VwdGVkX3NvY2tldC5jaXBoZXIoKSkKLSAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVi
dWcoJ0NsaWVudCBjZXJ0OiAlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFjY2VwdGVkX3NvY2tldC5nZXRwZWVyY2VydCgpKQotICAgICAgICAgICAgZWxpZiBzZXJ2ZXJf
b3B0aW9ucy50bHNfbW9kdWxlID09IF9UTFNfQllfUFlPUEVOU1NMOgotICAgICAgICAgICAgICAg
ICMgV2UgY2Fubm90IHByaW50IHRoZSBjaXBoZXIgaW4gdXNlLiBweU9wZW5TU0wgZG9lc24ndCBw
cm92aWRlCi0gICAgICAgICAgICAgICAgIyBhbnkgbWV0aG9kIHRvIGZldGNoIHRoYXQuCi0KLSAg
ICAgICAgICAgICAgICBjdHggPSBPcGVuU1NMLlNTTC5Db250ZXh0KE9wZW5TU0wuU1NMLlNTTHYy
M19NRVRIT0QpCi0gICAgICAgICAgICAgICAgY3R4LnVzZV9wcml2YXRla2V5X2ZpbGUoc2VydmVy
X29wdGlvbnMucHJpdmF0ZV9rZXkpCi0gICAgICAgICAgICAgICAgY3R4LnVzZV9jZXJ0aWZpY2F0
ZV9maWxlKHNlcnZlcl9vcHRpb25zLmNlcnRpZmljYXRlKQotCi0gICAgICAgICAgICAgICAgZGVm
IGRlZmF1bHRfY2FsbGJhY2soY29ubiwgY2VydCwgZXJybnVtLCBlcnJkZXB0aCwgb2spOgotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gb2sgPT0gMQotCi0gICAgICAgICAgICAgICAgIyBTZWUg
dGhlIE9wZW5TU0wgZG9jdW1lbnQgZm9yIFNTTF9DVFhfc2V0X3ZlcmlmeS4KLSAgICAgICAgICAg
ICAgICBpZiBzZXJ2ZXJfb3B0aW9ucy50bHNfY2xpZW50X2F1dGg6Ci0gICAgICAgICAgICAgICAg
ICAgIHZlcmlmeV9tb2RlID0gT3BlblNTTC5TU0wuVkVSSUZZX1BFRVIKLSAgICAgICAgICAgICAg
ICAgICAgaWYgbm90IHNlcnZlcl9vcHRpb25zLnRsc19jbGllbnRfY2VydF9vcHRpb25hbDoKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHZlcmlmeV9tb2RlIHw9IE9wZW5TU0wuU1NMLlZFUklGWV9G
QUlMX0lGX05PX1BFRVJfQ0VSVAotICAgICAgICAgICAgICAgICAgICBjdHguc2V0X3ZlcmlmeSh2
ZXJpZnlfbW9kZSwgZGVmYXVsdF9jYWxsYmFjaykKLSAgICAgICAgICAgICAgICAgICAgY3R4Lmxv
YWRfdmVyaWZ5X2xvY2F0aW9ucyhzZXJ2ZXJfb3B0aW9ucy50bHNfY2xpZW50X2NhLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUpCi0gICAgICAgICAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgY3R4LnNldF92ZXJpZnkoT3BlblNTTC5T
U0wuVkVSSUZZX05PTkUsIGRlZmF1bHRfY2FsbGJhY2spCi0KLSAgICAgICAgICAgICAgICBhY2Nl
cHRlZF9zb2NrZXQgPSBPcGVuU1NMLlNTTC5Db25uZWN0aW9uKGN0eCwgYWNjZXB0ZWRfc29ja2V0
KQotICAgICAgICAgICAgICAgIGFjY2VwdGVkX3NvY2tldC5zZXRfYWNjZXB0X3N0YXRlKCkKLQot
ICAgICAgICAgICAgICAgICMgQ29udmVydCBTU0wgcmVsYXRlZCBlcnJvciBpbnRvIHNvY2tldC5l
cnJvciBzbyB0aGF0Ci0gICAgICAgICAgICAgICAgIyBTb2NrZXRTZXJ2ZXIgaWdub3JlcyB0aGVt
IGFuZCBrZWVwcyBydW5uaW5nLgotICAgICAgICAgICAgICAgICMKLSAgICAgICAgICAgICAgICAj
IFRPRE8odHlvc2hpbm8pOiBDb252ZXJ0IGFsbCBraW5kcyBvZiBlcnJvcnMuCi0gICAgICAgICAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBhY2NlcHRlZF9zb2NrZXQuZG9faGFuZHNo
YWtlKCkKLSAgICAgICAgICAgICAgICBleGNlcHQgT3BlblNTTC5TU0wuRXJyb3IgYXMgZToKLSAg
ICAgICAgICAgICAgICAgICAgIyBTZXQgZXJybm8gcGFydCB0byAxIChTU0xfRVJST1JfU1NMKSBs
aWtlIHRoZSBzc2wgbW9kdWxlCi0gICAgICAgICAgICAgICAgICAgICMgZG9lcy4KLSAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCclcicsIGUpCi0gICAgICAgICAgICAgICAg
ICAgIHJhaXNlIHNvY2tldC5lcnJvcigxLCAnJXInICUgZSkKLSAgICAgICAgICAgICAgICBjZXJ0
ID0gYWNjZXB0ZWRfc29ja2V0LmdldF9wZWVyX2NlcnRpZmljYXRlKCkKLSAgICAgICAgICAgICAg
ICBpZiBjZXJ0IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIu
ZGVidWcoJ0NsaWVudCBjZXJ0IHN1YmplY3Q6ICVyJywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNlcnQuZ2V0X3N1YmplY3QoKS5nZXRfY29tcG9uZW50cygpKQotICAg
ICAgICAgICAgICAgIGFjY2VwdGVkX3NvY2tldCA9IF9TdGFuZGFsb25lU1NMQ29ubmVjdGlvbihh
Y2NlcHRlZF9zb2NrZXQpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJhaXNl
IFZhbHVlRXJyb3IoJ05vIFRMUyBzdXBwb3J0IG1vZHVsZSBpcyBhdmFpbGFibGUnKQotCi0gICAg
ICAgIHJldHVybiBhY2NlcHRlZF9zb2NrZXQsIGNsaWVudF9hZGRyZXNzCi0KLSAgICBkZWYgc2Vy
dmVfZm9yZXZlcihzZWxmLCBwb2xsX2ludGVydmFsPTAuNSk6Ci0gICAgICAgICIiIk92ZXJyaWRl
IHNvY2tldHNlcnZlci5CYXNlU2VydmVyLnNlcnZlX2ZvcmV2ZXIuIiIiCi0KLSAgICAgICAgc2Vs
Zi5fX3dzX3NlcnZpbmcgPSBUcnVlCi0gICAgICAgIHNlbGYuX193c19pc19zaHV0X2Rvd24uY2xl
YXIoKQotICAgICAgICBoYW5kbGVfcmVxdWVzdCA9IHNlbGYuaGFuZGxlX3JlcXVlc3QKLSAgICAg
ICAgaWYgaGFzYXR0cihzZWxmLCAnX2hhbmRsZV9yZXF1ZXN0X25vYmxvY2snKToKLSAgICAgICAg
ICAgIGhhbmRsZV9yZXF1ZXN0ID0gc2VsZi5faGFuZGxlX3JlcXVlc3Rfbm9ibG9jawotICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLndhcm5pbmcoJ0ZhbGxiYWNrIHRvIGJs
b2NraW5nIHJlcXVlc3QgaGFuZGxlcicpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHdoaWxl
IHNlbGYuX193c19zZXJ2aW5nOgotICAgICAgICAgICAgICAgIHIsIHcsIGUgPSBzZWxlY3Quc2Vs
ZWN0KAotICAgICAgICAgICAgICAgICAgICBbc29ja2V0X1swXSBmb3Igc29ja2V0XyBpbiBzZWxm
Ll9zb2NrZXRzXSwKLSAgICAgICAgICAgICAgICAgICAgW10sIFtdLCBwb2xsX2ludGVydmFsKQot
ICAgICAgICAgICAgICAgIGZvciBzb2NrZXRfIGluIHI6Ci0gICAgICAgICAgICAgICAgICAgIHNl
bGYuc29ja2V0ID0gc29ja2V0XwotICAgICAgICAgICAgICAgICAgICBoYW5kbGVfcmVxdWVzdCgp
Ci0gICAgICAgICAgICAgICAgc2VsZi5zb2NrZXQgPSBOb25lCi0gICAgICAgIGZpbmFsbHk6Ci0g
ICAgICAgICAgICBzZWxmLl9fd3NfaXNfc2h1dF9kb3duLnNldCgpCi0KLSAgICBkZWYgc2h1dGRv
d24oc2VsZik6Ci0gICAgICAgICIiIk92ZXJyaWRlIHNvY2tldHNlcnZlci5CYXNlU2VydmVyLnNo
dXRkb3duLiIiIgotCi0gICAgICAgIHNlbGYuX193c19zZXJ2aW5nID0gRmFsc2UKLSAgICAgICAg
c2VsZi5fX3dzX2lzX3NodXRfZG93bi53YWl0KCkKLQotCi1jbGFzcyBXZWJTb2NrZXRSZXF1ZXN0
SGFuZGxlcihDR0lIVFRQU2VydmVyLkNHSUhUVFBSZXF1ZXN0SGFuZGxlcik6Ci0gICAgIiIiQ0dJ
SFRUUFJlcXVlc3RIYW5kbGVyIHNwZWNpYWxpemVkIGZvciBXZWJTb2NrZXQuIiIiCi0KLSAgICAj
IFVzZSBodHRwX2NsaWVudC5IVFRQTWVzc2FnZSBpbnN0ZWFkIG9mIG1pbWV0b29scy5NZXNzYWdl
LgotICAgIE1lc3NhZ2VDbGFzcyA9IGh0dHBfY2xpZW50LkhUVFBNZXNzYWdlCi0KLSAgICBwcm90
b2NvbF92ZXJzaW9uID0gIkhUVFAvMS4xIgotCi0gICAgZGVmIHNldHVwKHNlbGYpOgotICAgICAg
ICAiIiJPdmVycmlkZSBzb2NrZXRzZXJ2ZXIuU3RyZWFtUmVxdWVzdEhhbmRsZXIuc2V0dXAgdG8g
d3JhcCByZmlsZQotICAgICAgICB3aXRoIE1lbW9yaXppbmdGaWxlLgotCi0gICAgICAgIFRoaXMg
bWV0aG9kIHdpbGwgYmUgY2FsbGVkIGJ5IEJhc2VSZXF1ZXN0SGFuZGxlcidzIGNvbnN0cnVjdG9y
Ci0gICAgICAgIGJlZm9yZSBjYWxsaW5nIEJhc2VIVFRQUmVxdWVzdEhhbmRsZXIuaGFuZGxlLgot
ICAgICAgICBCYXNlSFRUUFJlcXVlc3RIYW5kbGVyLmhhbmRsZSB3aWxsIGNhbGwKLSAgICAgICAg
QmFzZUhUVFBSZXF1ZXN0SGFuZGxlci5oYW5kbGVfb25lX3JlcXVlc3QgYW5kIGl0IHdpbGwgY2Fs
bAotICAgICAgICBXZWJTb2NrZXRSZXF1ZXN0SGFuZGxlci5wYXJzZV9yZXF1ZXN0LgotICAgICAg
ICAiIiIKLQotICAgICAgICAjIENhbGwgc3VwZXJjbGFzcydzIHNldHVwIHRvIHByZXBhcmUgcmZp
bGUsIHdmaWxlLCBldGMuIFNlZSBzZXR1cAotICAgICAgICAjIGRlZmluaXRpb24gb24gdGhlIHJv
b3QgY2xhc3Mgc29ja2V0c2VydmVyLlN0cmVhbVJlcXVlc3RIYW5kbGVyIHRvCi0gICAgICAgICMg
dW5kZXJzdGFuZCB3aGF0IHRoaXMgZG9lcy4KLSAgICAgICAgQ0dJSFRUUFNlcnZlci5DR0lIVFRQ
UmVxdWVzdEhhbmRsZXIuc2V0dXAoc2VsZikKLQotICAgICAgICBzZWxmLnJmaWxlID0gbWVtb3Jp
emluZ2ZpbGUuTWVtb3JpemluZ0ZpbGUoCi0gICAgICAgICAgICBzZWxmLnJmaWxlLAotICAgICAg
ICAgICAgbWF4X21lbW9yaXplZF9saW5lcz1fTUFYX01FTU9SSVpFRF9MSU5FUykKLQotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0LCBjbGllbnRfYWRkcmVzcywgc2VydmVyKToKLSAgICAg
ICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAg
c2VsZi5fb3B0aW9ucyA9IHNlcnZlci53ZWJzb2NrZXRfc2VydmVyX29wdGlvbnMKLQotICAgICAg
ICAjIE92ZXJyaWRlcyBDR0lIVFRQU2VydmVyUmVxdWVzdEhhbmRsZXIuY2dpX2RpcmVjdG9yaWVz
LgotICAgICAgICBzZWxmLmNnaV9kaXJlY3RvcmllcyA9IHNlbGYuX29wdGlvbnMuY2dpX2RpcmVj
dG9yaWVzCi0gICAgICAgICMgUmVwbGFjZSBDR0lIVFRQUmVxdWVzdEhhbmRsZXIuaXNfZXhlY3V0
YWJsZSBtZXRob2QuCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMuaXNfZXhlY3V0YWJsZV9tZXRo
b2QgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLmlzX2V4ZWN1dGFibGUgPSBzZWxmLl9v
cHRpb25zLmlzX2V4ZWN1dGFibGVfbWV0aG9kCi0KLSAgICAgICAgIyBUaGlzIGFjdHVhbGx5IGNh
bGxzIEJhc2VSZXF1ZXN0SGFuZGxlci5fX2luaXRfXy4KLSAgICAgICAgQ0dJSFRUUFNlcnZlci5D
R0lIVFRQUmVxdWVzdEhhbmRsZXIuX19pbml0X18oCi0gICAgICAgICAgICBzZWxmLCByZXF1ZXN0
LCBjbGllbnRfYWRkcmVzcywgc2VydmVyKQotCi0gICAgZGVmIHBhcnNlX3JlcXVlc3Qoc2VsZik6
Ci0gICAgICAgICIiIk92ZXJyaWRlIEJhc2VIVFRQU2VydmVyLkJhc2VIVFRQUmVxdWVzdEhhbmRs
ZXIucGFyc2VfcmVxdWVzdC4KLQotICAgICAgICBSZXR1cm4gVHJ1ZSB0byBjb250aW51ZSBwcm9j
ZXNzaW5nIGZvciBIVFRQKFMpLCBGYWxzZSBvdGhlcndpc2UuCi0KLSAgICAgICAgU2VlIEJhc2VI
VFRQUmVxdWVzdEhhbmRsZXIuaGFuZGxlX29uZV9yZXF1ZXN0IG1ldGhvZCB3aGljaCBjYWxscwot
ICAgICAgICB0aGlzIG1ldGhvZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgcmV0dXJuIHZhbHVlIHdp
bGwgYmUgaGFuZGxlZC4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgIyBXZSBob29rIHBhcnNlX3Jl
cXVlc3QgbWV0aG9kLCBidXQgYWxzbyBjYWxsIHRoZSBvcmlnaW5hbAotICAgICAgICAjIENHSUhU
VFBSZXF1ZXN0SGFuZGxlci5wYXJzZV9yZXF1ZXN0IHNpbmNlIHdoZW4gd2UgcmV0dXJuIEZhbHNl
LAotICAgICAgICAjIENHSUhUVFBSZXF1ZXN0SGFuZGxlci5oYW5kbGVfb25lX3JlcXVlc3QgY29u
dGludWVzIHByb2Nlc3NpbmcgYW5kCi0gICAgICAgICMgaXQgbmVlZHMgdmFyaWFibGVzIHNldCBi
eSBDR0lIVFRQUmVxdWVzdEhhbmRsZXIucGFyc2VfcmVxdWVzdC4KLSAgICAgICAgIwotICAgICAg
ICAjIFZhcmlhYmxlcyBzZXQgYnkgdGhpcyBtZXRob2Qgd2lsbCBiZSBhbHNvIHVzZWQgYnkgV2Vi
U29ja2V0IHJlcXVlc3QKLSAgICAgICAgIyBoYW5kbGluZyAoc2VsZi5wYXRoLCBzZWxmLmNvbW1h
bmQsIHNlbGYucmVxdWVzdGxpbmUsIGV0Yy4gU2VlIGFsc28KLSAgICAgICAgIyBob3cgX1N0YW5k
YWxvbmVSZXF1ZXN0J3MgbWVtYmVycyBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgdGhlc2UKLSAgICAg
ICAgIyBhdHRyaWJ1dGVzKS4KLSAgICAgICAgaWYgbm90IENHSUhUVFBTZXJ2ZXIuQ0dJSFRUUFJl
cXVlc3RIYW5kbGVyLnBhcnNlX3JlcXVlc3Qoc2VsZik6Ci0gICAgICAgICAgICByZXR1cm4gRmFs
c2UKLQotICAgICAgICBpZiBzZWxmLmNvbW1hbmQgPT0gIkNPTk5FQ1QiOgotICAgICAgICAgICAg
c2VsZi5zZW5kX3Jlc3BvbnNlKDIwMCwgIkNvbm5lY3RlZCIpCi0gICAgICAgICAgICBzZWxmLnNl
bmRfaGVhZGVyKCJDb25uZWN0aW9uIiwgImtlZXAtYWxpdmUiKQotICAgICAgICAgICAgc2VsZi5l
bmRfaGVhZGVycygpCi0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICAgICBpZiBzZWxm
Ll9vcHRpb25zLnVzZV9iYXNpY19hdXRoOgotICAgICAgICAgICAgYXV0aCA9IHNlbGYuaGVhZGVy
cy5nZXRoZWFkZXIoJ0F1dGhvcml6YXRpb24nKQotICAgICAgICAgICAgaWYgYXV0aCAhPSBzZWxm
Ll9vcHRpb25zLmJhc2ljX2F1dGhfY3JlZGVudGlhbDoKLSAgICAgICAgICAgICAgICBzZWxmLnNl
bmRfcmVzcG9uc2UoNDAxKQotICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9oZWFkZXIoJ1dXVy1B
dXRoZW50aWNhdGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0Jhc2ljIHJl
YWxtPSJQeXdlYnNvY2tldCInKQotICAgICAgICAgICAgICAgIHNlbGYuZW5kX2hlYWRlcnMoKQot
ICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdSZXF1ZXN0IGJhc2ljIGF1dGhlbnRp
Y2F0aW9uJykKLSAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICAgICAjIFNwZWNp
YWwgcGF0aHMgZm9yIFhNTEh0dHBSZXF1ZXN0IGJlbmNobWFyawotICAgICAgICB4aHJfYmVuY2ht
YXJrX2hlbHBlcl9wcmVmaXggPSAnLzA3M2JlMDAxZTEwOTUwNjkyY2NiZjNhMmFkMjFjMjQ1Jwot
ICAgICAgICBwYXJzZWRfcGF0aCA9IHVybGxpYi5wYXJzZS51cmxzcGxpdChzZWxmLnBhdGgpCi0g
ICAgICAgIGlmIHBhcnNlZF9wYXRoLnBhdGggPT0gKHhocl9iZW5jaG1hcmtfaGVscGVyX3ByZWZp
eCArICdfc2VuZCcpOgotICAgICAgICAgICAgeGhyX2JlbmNobWFya19oYW5kbGVyID0gWEhSQmVu
Y2htYXJrSGFuZGxlcigKLSAgICAgICAgICAgICAgICBzZWxmLmhlYWRlcnMsIHNlbGYucmZpbGUs
IHNlbGYud2ZpbGUpCi0gICAgICAgICAgICB4aHJfYmVuY2htYXJrX2hhbmRsZXIuZG9fc2VuZCgp
Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgaWYgcGFyc2VkX3BhdGgucGF0aCA9
PSAoeGhyX2JlbmNobWFya19oZWxwZXJfcHJlZml4ICsgJ19yZWNlaXZlJyk6Ci0gICAgICAgICAg
ICB4aHJfYmVuY2htYXJrX2hhbmRsZXIgPSBYSFJCZW5jaG1hcmtIYW5kbGVyKAotICAgICAgICAg
ICAgICAgIHNlbGYuaGVhZGVycywgc2VsZi5yZmlsZSwgc2VsZi53ZmlsZSkKLSAgICAgICAgICAg
IHhocl9iZW5jaG1hcmtfaGFuZGxlci5kb19yZWNlaXZlX2FuZF9wYXJzZSgpCi0gICAgICAgICAg
ICByZXR1cm4gRmFsc2UKLSAgICAgICAgaWYgcGFyc2VkX3BhdGgucGF0aCA9PSAoeGhyX2JlbmNo
bWFya19oZWxwZXJfcHJlZml4ICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19y
ZWNlaXZlX2dldG5vY2FjaGUnKToKLSAgICAgICAgICAgIHhocl9iZW5jaG1hcmtfaGFuZGxlciA9
IFhIUkJlbmNobWFya0hhbmRsZXIoCi0gICAgICAgICAgICAgICAgc2VsZi5oZWFkZXJzLCBzZWxm
LnJmaWxlLCBzZWxmLndmaWxlKQotICAgICAgICAgICAgeGhyX2JlbmNobWFya19oYW5kbGVyLmRv
X3JlY2VpdmUoCi0gICAgICAgICAgICAgICAgaW50KHBhcnNlZF9wYXRoLnF1ZXJ5KSwgRmFsc2Us
IEZhbHNlKQotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIGlmIHBhcnNlZF9wYXRo
LnBhdGggPT0gKHhocl9iZW5jaG1hcmtfaGVscGVyX3ByZWZpeCArCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdfcmVjZWl2ZV9nZXRjYWNoZScpOgotICAgICAgICAgICAgeGhyX2Jl
bmNobWFya19oYW5kbGVyID0gWEhSQmVuY2htYXJrSGFuZGxlcigKLSAgICAgICAgICAgICAgICBz
ZWxmLmhlYWRlcnMsIHNlbGYucmZpbGUsIHNlbGYud2ZpbGUpCi0gICAgICAgICAgICB4aHJfYmVu
Y2htYXJrX2hhbmRsZXIuZG9fcmVjZWl2ZSgKLSAgICAgICAgICAgICAgICBpbnQocGFyc2VkX3Bh
dGgucXVlcnkpLCBGYWxzZSwgVHJ1ZSkKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAg
ICAgIGhvc3QsIHBvcnQsIHJlc291cmNlID0gaHR0cF9oZWFkZXJfdXRpbC5wYXJzZV91cmkoc2Vs
Zi5wYXRoKQotICAgICAgICBpZiByZXNvdXJjZSBpcyBOb25lOgotICAgICAgICAgICAgc2VsZi5f
bG9nZ2VyLmluZm8oJ0ludmFsaWQgVVJJOiAlcicsIHNlbGYucGF0aCkKLSAgICAgICAgICAgIHNl
bGYuX2xvZ2dlci5pbmZvKCdGYWxsYmFjayB0byBDR0lIVFRQUmVxdWVzdEhhbmRsZXInKQotICAg
ICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgc2VydmVyX29wdGlvbnMgPSBzZWxmLnNlcnZl
ci53ZWJzb2NrZXRfc2VydmVyX29wdGlvbnMKLSAgICAgICAgaWYgaG9zdCBpcyBub3QgTm9uZToK
LSAgICAgICAgICAgIHZhbGlkYXRpb25faG9zdCA9IHNlcnZlcl9vcHRpb25zLnZhbGlkYXRpb25f
aG9zdAotICAgICAgICAgICAgaWYgdmFsaWRhdGlvbl9ob3N0IGlzIG5vdCBOb25lIGFuZCBob3N0
ICE9IHZhbGlkYXRpb25faG9zdDoKLSAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygn
SW52YWxpZCBob3N0OiAlciAoZXhwZWN0ZWQ6ICVyKScsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaG9zdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxp
ZGF0aW9uX2hvc3QpCi0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0ZhbGxiYWNr
IHRvIENHSUhUVFBSZXF1ZXN0SGFuZGxlcicpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUK
LSAgICAgICAgaWYgcG9ydCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHZhbGlkYXRpb25fcG9y
dCA9IHNlcnZlcl9vcHRpb25zLnZhbGlkYXRpb25fcG9ydAotICAgICAgICAgICAgaWYgdmFsaWRh
dGlvbl9wb3J0IGlzIG5vdCBOb25lIGFuZCBwb3J0ICE9IHZhbGlkYXRpb25fcG9ydDoKLSAgICAg
ICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnSW52YWxpZCBwb3J0OiAlciAoZXhwZWN0ZWQ6
ICVyKScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uX3BvcnQpCi0gICAgICAgICAgICAg
ICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0ZhbGxiYWNrIHRvIENHSUhUVFBSZXF1ZXN0SGFuZGxlcicp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgc2VsZi5wYXRoID0gcmVzb3Vy
Y2UKLQotICAgICAgICByZXF1ZXN0ID0gX1N0YW5kYWxvbmVSZXF1ZXN0KHNlbGYsIHNlbGYuX29w
dGlvbnMudXNlX3RscykKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICAjIEZhbGxiYWNrIHRv
IGRlZmF1bHQgaHR0cCBoYW5kbGVyIGZvciByZXF1ZXN0IHBhdGhzIGZvciB3aGljaAotICAgICAg
ICAgICAgIyB3ZSBkb24ndCBoYXZlIHJlcXVlc3QgaGFuZGxlcnMuCi0gICAgICAgICAgICBpZiBu
b3Qgc2VsZi5fb3B0aW9ucy5kaXNwYXRjaGVyLmdldF9oYW5kbGVyX3N1aXRlKHNlbGYucGF0aCk6
Ci0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ05vIGhhbmRsZXIgZm9yIHJlc291
cmNlOiAlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wYXRoKQot
ICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdGYWxsYmFjayB0byBDR0lIVFRQUmVx
dWVzdEhhbmRsZXInKQotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIGV4Y2Vw
dCBkaXNwYXRjaC5EaXNwYXRjaEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgc2VsZi5fbG9n
Z2VyLmluZm8oJ0Rpc3BhdGNoIGZhaWxlZCBmb3IgZXJyb3I6ICVzJywgZSkKLSAgICAgICAgICAg
IHNlbGYuc2VuZF9lcnJvcihlLnN0YXR1cykKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0g
ICAgICAgICMgSWYgYW55IEV4Y2VwdGlvbnMgd2l0aG91dCBleGNlcHQgY2xhdXNlIHNldHVwIChp
bmNsdWRpbmcKLSAgICAgICAgIyBEaXNwYXRjaEV4Y2VwdGlvbikgaXMgcmFpc2VkIGJlbG93IHRo
aXMgcG9pbnQsIGl0IHdpbGwgYmUgY2F1Z2h0Ci0gICAgICAgICMgYW5kIGxvZ2dlZCBieSBXZWJT
b2NrZXRTZXJ2ZXIuCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAg
ICAgICAgIGhhbmRzaGFrZS5kb19oYW5kc2hha2UoCi0gICAgICAgICAgICAgICAgICAgIHJlcXVl
c3QsCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuZGlzcGF0Y2hlciwKLSAgICAg
ICAgICAgICAgICAgICAgYWxsb3dEcmFmdDc1PXNlbGYuX29wdGlvbnMuYWxsb3dfZHJhZnQ3NSwK
LSAgICAgICAgICAgICAgICAgICAgc3RyaWN0PXNlbGYuX29wdGlvbnMuc3RyaWN0KQotICAgICAg
ICAgICAgZXhjZXB0IGhhbmRzaGFrZS5WZXJzaW9uRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAg
ICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0hhbmRzaGFrZSBmYWlsZWQgZm9yIHZlcnNpb24gZXJy
b3I6ICVzJywgZSkKLSAgICAgICAgICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2UoY29tbW9uLkhU
VFBfU1RBVFVTX0JBRF9SRVFVRVNUKQotICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9oZWFkZXIo
Y29tbW9uLlNFQ19XRUJTT0NLRVRfVkVSU0lPTl9IRUFERVIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlLnN1cHBvcnRlZF92ZXJzaW9ucykKLSAgICAgICAgICAgICAgICBzZWxm
LmVuZF9oZWFkZXJzKCkKLSAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgICAg
IGV4Y2VwdCBoYW5kc2hha2UuSGFuZHNoYWtlRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICAg
ICAgIyBIYW5kc2hha2UgZm9yIHdzKHMpIGZhaWxlZC4KLSAgICAgICAgICAgICAgICBzZWxmLl9s
b2dnZXIuaW5mbygnSGFuZHNoYWtlIGZhaWxlZCBmb3IgZXJyb3I6ICVzJywgZSkKLSAgICAgICAg
ICAgICAgICBzZWxmLnNlbmRfZXJyb3IoZS5zdGF0dXMpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IEZhbHNlCi0KLSAgICAgICAgICAgIHJlcXVlc3QuX2Rpc3BhdGNoZXIgPSBzZWxmLl9vcHRpb25z
LmRpc3BhdGNoZXIKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuZGlzcGF0Y2hlci50cmFuc2Zl
cl9kYXRhKHJlcXVlc3QpCi0gICAgICAgIGV4Y2VwdCBoYW5kc2hha2UuQWJvcnRlZEJ5VXNlckV4
Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0Fib3J0ZWQ6ICVz
JywgZSkKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBkZWYgbG9nX3JlcXVlc3Qoc2VsZiwg
Y29kZT0nLScsIHNpemU9Jy0nKToKLSAgICAgICAgIiIiT3ZlcnJpZGUgQmFzZUhUVFBTZXJ2ZXIu
bG9nX3JlcXVlc3QuIiIiCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJyIlcyIgJXMgJXMn
LAotICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJlcXVlc3RsaW5lLCBzdHIoY29kZSks
IHN0cihzaXplKSkKLQotICAgIGRlZiBsb2dfZXJyb3Ioc2VsZiwgKmFyZ3MpOgotICAgICAgICAi
IiJPdmVycmlkZSBCYXNlSFRUUFNlcnZlci5sb2dfZXJyb3IuIiIiCi0KLSAgICAgICAgIyBEZXNw
aXRlIHRoZSBuYW1lLCB0aGlzIG1ldGhvZCBpcyBmb3Igd2FybmluZ3MgdGhhbiBmb3IgZXJyb3Jz
LgotICAgICAgICAjIEZvciBleGFtcGxlLCBIVFRQIHN0YXR1cyBjb2RlIGlzIGxvZ2dlZCBieSB0
aGlzIG1ldGhvZC4KLSAgICAgICAgc2VsZi5fbG9nZ2VyLndhcm5pbmcoJyVzIC0gJXMnLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFkZHJlc3Nfc3RyaW5nKCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFyZ3NbMF0gJSBhcmdzWzE6XSkKLQotICAgIGRlZiBpc19j
Z2koc2VsZik6Ci0gICAgICAgICIiIlRlc3Qgd2hldGhlciBzZWxmLnBhdGggY29ycmVzcG9uZHMg
dG8gYSBDR0kgc2NyaXB0LgotCi0gICAgICAgIEFkZCBleHRyYSBjaGVjayB0aGF0IHNlbGYucGF0
aCBkb2Vzbid0IGNvbnRhaW5zIC4uCi0gICAgICAgIEFsc28gY2hlY2sgaWYgdGhlIGZpbGUgaXMg
YSBleGVjdXRhYmxlIGZpbGUgb3Igbm90LgotICAgICAgICBJZiB0aGUgZmlsZSBpcyBub3QgZXhl
Y3V0YWJsZSwgaXQgaXMgaGFuZGxlZCBhcyBzdGF0aWMgZmlsZSBvciBkaXIKLSAgICAgICAgcmF0
aGVyIHRoYW4gYSBDR0kgc2NyaXB0LgotICAgICAgICAiIiIKLQotICAgICAgICBpZiBDR0lIVFRQ
U2VydmVyLkNHSUhUVFBSZXF1ZXN0SGFuZGxlci5pc19jZ2koc2VsZik6Ci0gICAgICAgICAgICBp
ZiAnLi4nIGluIHNlbGYucGF0aDoKLSAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAg
ICAgICAgICMgc3RyaXAgcXVlcnkgcGFyYW1ldGVyIGZyb20gcmVxdWVzdCBwYXRoCi0gICAgICAg
ICAgICByZXNvdXJjZV9uYW1lID0gc2VsZi5wYXRoLnNwbGl0KCc/JywgMilbMF0KLSAgICAgICAg
ICAgICMgY29udmVydCByZXNvdXJjZV9uYW1lIGludG8gcmVhbCBwYXRoIG5hbWUgaW4gZmlsZXN5
c3RlbS4KLSAgICAgICAgICAgIHNjcmlwdGZpbGUgPSBzZWxmLnRyYW5zbGF0ZV9wYXRoKHJlc291
cmNlX25hbWUpCi0gICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUoc2NyaXB0ZmlsZSk6
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgICAgICBpZiBub3Qgc2VsZi5p
c19leGVjdXRhYmxlKHNjcmlwdGZpbGUpOgotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQot
ICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLQotZGVmIF9n
ZXRfbG9nZ2VyX2Zyb21fY2xhc3MoYyk6Ci0gICAgcmV0dXJuIGxvZ2dpbmcuZ2V0TG9nZ2VyKCcl
cy4lcycgJSAoYy5fX21vZHVsZV9fLCBjLl9fbmFtZV9fKSkKLQotCi1kZWYgX2NvbmZpZ3VyZV9s
b2dnaW5nKG9wdGlvbnMpOgotICAgIGxvZ2dpbmcuYWRkTGV2ZWxOYW1lKGNvbW1vbi5MT0dMRVZF
TF9GSU5FLCAnRklORScpCi0KLSAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigpCi0gICAg
bG9nZ2VyLnNldExldmVsKGxvZ2dpbmcuZ2V0TGV2ZWxOYW1lKG9wdGlvbnMubG9nX2xldmVsLnVw
cGVyKCkpKQotICAgIGlmIG9wdGlvbnMubG9nX2ZpbGU6Ci0gICAgICAgIGhhbmRsZXIgPSBsb2dn
aW5nLmhhbmRsZXJzLlJvdGF0aW5nRmlsZUhhbmRsZXIoCi0gICAgICAgICAgICAgICAgb3B0aW9u
cy5sb2dfZmlsZSwgJ2EnLCBvcHRpb25zLmxvZ19tYXgsIG9wdGlvbnMubG9nX2NvdW50KQotICAg
IGVsc2U6Ci0gICAgICAgIGhhbmRsZXIgPSBsb2dnaW5nLlN0cmVhbUhhbmRsZXIoKQotICAgIGZv
cm1hdHRlciA9IGxvZ2dpbmcuRm9ybWF0dGVyKAotICAgICAgICAgICAgJ1slKGFzY3RpbWUpc10g
WyUobGV2ZWxuYW1lKXNdICUobmFtZSlzOiAlKG1lc3NhZ2UpcycpCi0gICAgaGFuZGxlci5zZXRG
b3JtYXR0ZXIoZm9ybWF0dGVyKQotICAgIGxvZ2dlci5hZGRIYW5kbGVyKGhhbmRsZXIpCi0KLSAg
ICBkZWZsYXRlX2xvZ19sZXZlbF9uYW1lID0gbG9nZ2luZy5nZXRMZXZlbE5hbWUoCi0gICAgICAg
IG9wdGlvbnMuZGVmbGF0ZV9sb2dfbGV2ZWwudXBwZXIoKSkKLSAgICBfZ2V0X2xvZ2dlcl9mcm9t
X2NsYXNzKHV0aWwuX0RlZmxhdGVyKS5zZXRMZXZlbCgKLSAgICAgICAgZGVmbGF0ZV9sb2dfbGV2
ZWxfbmFtZSkKLSAgICBfZ2V0X2xvZ2dlcl9mcm9tX2NsYXNzKHV0aWwuX0luZmxhdGVyKS5zZXRM
ZXZlbCgKLSAgICAgICAgZGVmbGF0ZV9sb2dfbGV2ZWxfbmFtZSkKLQotCi1kZWYgX2J1aWxkX29w
dGlvbl9wYXJzZXIoKToKLSAgICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIoKQotCi0g
ICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tY29uZmlnJywgZGVzdD0nY29uZmlnX2ZpbGUnLCB0eXBl
PSdzdHJpbmcnLAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwKLSAgICAgICAg
ICAgICAgICAgICAgICBoZWxwPSgnUGF0aCB0byBjb25maWd1cmF0aW9uIGZpbGUuIFNlZSB0aGUg
ZmlsZSBjb21tZW50ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXQgdGhlIHRvcCBv
ZiB0aGlzIGZpbGUgZm9yIHRoZSBjb25maWd1cmF0aW9uICcKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnZmlsZSBmb3JtYXQnKSkKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLUgnLCAnLS1z
ZXJ2ZXItaG9zdCcsICctLXNlcnZlcl9ob3N0JywKLSAgICAgICAgICAgICAgICAgICAgICBkZXN0
PSdzZXJ2ZXJfaG9zdCcsCi0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0nJywKLSAgICAg
ICAgICAgICAgICAgICAgICBoZWxwPSdzZXJ2ZXIgaG9zdG5hbWUgdG8gbGlzdGVuIHRvJykKLSAg
ICBwYXJzZXIuYWRkX29wdGlvbignLVYnLCAnLS12YWxpZGF0aW9uLWhvc3QnLCAnLS12YWxpZGF0
aW9uX2hvc3QnLAotICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3ZhbGlkYXRpb25faG9zdCcs
Ci0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1Ob25lLAotICAgICAgICAgICAgICAgICAg
ICAgIGhlbHA9J3NlcnZlciBob3N0bmFtZSB0byB2YWxpZGF0ZSBpbiBhYnNvbHV0ZSBwYXRoLicp
Ci0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy1wJywgJy0tcG9ydCcsIGRlc3Q9J3BvcnQnLCB0eXBl
PSdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Y29tbW9uLkRFRkFVTFRfV0VC
X1NPQ0tFVF9QT1JULAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3BvcnQgdG8gbGlzdGVu
IHRvJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLVAnLCAnLS12YWxpZGF0aW9uLXBvcnQnLCAn
LS12YWxpZGF0aW9uX3BvcnQnLAotICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3ZhbGlkYXRp
b25fcG9ydCcsIHR5cGU9J2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1Ob25l
LAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3NlcnZlciBwb3J0IHRvIHZhbGlkYXRlIGlu
IGFic29sdXRlIHBhdGguJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLXcnLCAnLS13ZWJzb2Nr
LWhhbmRsZXJzJywgJy0td2Vic29ja19oYW5kbGVycycsCi0gICAgICAgICAgICAgICAgICAgICAg
ZGVzdD0nd2Vic29ja19oYW5kbGVycycsCi0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0n
LicsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0oJ1RoZSByb290IGRpcmVjdG9yeSBvZiBX
ZWJTb2NrZXQgaGFuZGxlciBmaWxlcy4gJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdJ
ZiB0aGUgcGF0aCBpcyByZWxhdGl2ZSwgLS1kb2N1bWVudC1yb290IGlzIHVzZWQgJwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdhcyB0aGUgYmFzZS4nKSkKLSAgICBwYXJzZXIuYWRkX29w
dGlvbignLW0nLCAnLS13ZWJzb2NrLWhhbmRsZXJzLW1hcC1maWxlJywKLSAgICAgICAgICAgICAg
ICAgICAgICAnLS13ZWJzb2NrX2hhbmRsZXJzX21hcF9maWxlJywKLSAgICAgICAgICAgICAgICAg
ICAgICBkZXN0PSd3ZWJzb2NrX2hhbmRsZXJzX21hcF9maWxlJywKLSAgICAgICAgICAgICAgICAg
ICAgICBkZWZhdWx0PU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0oJ1dlYlNvY2tl
dCBoYW5kbGVycyBtYXAgZmlsZS4gJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFYWNo
IGxpbmUgY29uc2lzdHMgb2YgYWxpYXNfcmVzb3VyY2VfcGF0aCBhbmQgJwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdleGlzdGluZ19yZXNvdXJjZV9wYXRoLCBzZXBhcmF0ZWQgYnkgc3Bh
Y2VzLicpKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctcycsICctLXNjYW4tZGlyJywgJy0tc2Nh
bl9kaXInLCBkZXN0PSdzY2FuX2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1O
b25lLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9KCdNdXN0IGJlIGEgZGlyZWN0b3J5IHVu
ZGVyIC0td2Vic29jay1oYW5kbGVycy4gJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdP
bmx5IGhhbmRsZXJzIHVuZGVyIHRoaXMgZGlyZWN0b3J5IGFyZSBzY2FubmVkICcKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnYW5kIHJlZ2lzdGVyZWQgdG8gdGhlIHNlcnZlci4gJwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdVc2VmdWwgZm9yIHNhdmluZyBzY2FuIHRpbWUgd2hl
biB0aGUgaGFuZGxlciAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Jvb3QgZGlyZWN0
b3J5IGNvbnRhaW5zIGxvdHMgb2YgZmlsZXMgdGhhdCBhcmUgJwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdub3QgaGFuZGxlciBmaWxlIG9yIGFyZSBoYW5kbGVyIGZpbGVzIGJ1dCB5b3Ug
JwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkb25cJ3Qgd2FudCB0aGVtIHRvIGJlIHJl
Z2lzdGVyZWQuICcpKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctLWFsbG93LWhhbmRsZXJzLW91
dHNpZGUtcm9vdC1kaXInLAotICAgICAgICAgICAgICAgICAgICAgICctLWFsbG93X2hhbmRsZXJz
X291dHNpZGVfcm9vdF9kaXInLAotICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J2FsbG93X2hh
bmRsZXJzX291dHNpZGVfcm9vdF9kaXInLAotICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0n
c3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwKLSAgICAg
ICAgICAgICAgICAgICAgICBoZWxwPSgnU2NhbnMgV2ViU29ja2V0IGhhbmRsZXJzIGV2ZW4gaWYg
dGhlaXIgY2Fub25pY2FsICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGF0aCBpcyBu
b3QgdW5kZXIgLS13ZWJzb2NrLWhhbmRsZXJzLicpKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCct
ZCcsICctLWRvY3VtZW50LXJvb3QnLCAnLS1kb2N1bWVudF9yb290JywKLSAgICAgICAgICAgICAg
ICAgICAgICBkZXN0PSdkb2N1bWVudF9yb290JywgZGVmYXVsdD0nLicsCi0gICAgICAgICAgICAg
ICAgICAgICAgaGVscD0nRG9jdW1lbnQgcm9vdCBkaXJlY3RvcnkuJykKLSAgICBwYXJzZXIuYWRk
X29wdGlvbignLXgnLCAnLS1jZ2ktcGF0aHMnLCAnLS1jZ2lfcGF0aHMnLCBkZXN0PSdjZ2lfcGF0
aHMnLAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwKLSAgICAgICAgICAgICAg
ICAgICAgICBoZWxwPSgnQ0dJIHBhdGhzIHJlbGF0aXZlIHRvIGRvY3VtZW50X3Jvb3QuJwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdDb21tYS1zZXBhcmF0ZWQuIChlLmcgLXggL2NnaSwv
aHRiaW4pICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRmlsZXMgdW5kZXIgZG9jdW1l
bnRfcm9vdC9jZ2lfcGF0aCBhcmUgaGFuZGxlZCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ2FzIENHSSBwcm9ncmFtcy4gTXVzdCBiZSBleGVjdXRhYmxlLicpKQotICAgIHBhcnNlci5h
ZGRfb3B0aW9uKCctdCcsICctLXRscycsIGRlc3Q9J3VzZV90bHMnLCBhY3Rpb249J3N0b3JlX3Ry
dWUnLAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsIGhlbHA9J3VzZSBUTFMg
KHdzczovLyknKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctLXRscy1tb2R1bGUnLCAnLS10bHNf
bW9kdWxlJywgZGVzdD0ndGxzX21vZHVsZScsCi0gICAgICAgICAgICAgICAgICAgICAgdHlwZT0n
Y2hvaWNlJywKLSAgICAgICAgICAgICAgICAgICAgICBjaG9pY2VzID0gW19UTFNfQllfU1RBTkRB
UkRfTU9EVUxFLCBfVExTX0JZX1BZT1BFTlNTTF0sCi0gICAgICAgICAgICAgICAgICAgICAgaGVs
cD0nVXNlIHNzbCBtb2R1bGUgaWYgIiVzIiBpcyBzcGVjaWZpZWQuICcKLSAgICAgICAgICAgICAg
ICAgICAgICAnVXNlIHB5T3BlblNTTCBtb2R1bGUgaWYgIiVzIiBpcyBzcGVjaWZpZWQnICUKLSAg
ICAgICAgICAgICAgICAgICAgICAoX1RMU19CWV9TVEFOREFSRF9NT0RVTEUsIF9UTFNfQllfUFlP
UEVOU1NMKSkKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLWsnLCAnLS1wcml2YXRlLWtleScsICct
LXByaXZhdGVfa2V5JywKLSAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdwcml2YXRlX2tleScs
Ci0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0nJywgaGVscD0nVExTIHByaXZhdGUga2V5
IGZpbGUuJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLWMnLCAnLS1jZXJ0aWZpY2F0ZScsIGRl
c3Q9J2NlcnRpZmljYXRlJywKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PScnLCBoZWxw
PSdUTFMgY2VydGlmaWNhdGUgZmlsZS4nKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctLXRscy1j
bGllbnQtYXV0aCcsIGRlc3Q9J3Rsc19jbGllbnRfYXV0aCcsCi0gICAgICAgICAgICAgICAgICAg
ICAgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgICAgICAgICAg
ICAgICBoZWxwPSdSZXF1ZXN0cyBUTFMgY2xpZW50IGF1dGggb24gZXZlcnkgY29ubmVjdGlvbi4n
KQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctLXRscy1jbGllbnQtY2VydC1vcHRpb25hbCcsCi0g
ICAgICAgICAgICAgICAgICAgICAgZGVzdD0ndGxzX2NsaWVudF9jZXJ0X29wdGlvbmFsJywKLSAg
ICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLAot
ICAgICAgICAgICAgICAgICAgICAgIGhlbHA9KCdNYWtlcyBjbGllbnQgY2VydGlmaWNhdGUgb3B0
aW9uYWwgZXZlbiB0aG91Z2ggJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdUTFMgY2xp
ZW50IGF1dGggaXMgZW5hYmxlZC4nKSkKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLS10bHMtY2xp
ZW50LWNhJywgZGVzdD0ndGxzX2NsaWVudF9jYScsIGRlZmF1bHQ9JycsCi0gICAgICAgICAgICAg
ICAgICAgICAgaGVscD0oJ1NwZWNpZmllcyBhIHBlbSBmaWxlIHdoaWNoIGNvbnRhaW5zIGEgc2V0
IG9mICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29uY2F0ZW5hdGVkIENBIGNlcnRp
ZmljYXRlcyB3aGljaCBhcmUgdXNlZCB0byAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
J3ZhbGlkYXRlIGNlcnRpZmljYXRlcyBwYXNzZWQgZnJvbSBjbGllbnRzJykpCi0gICAgcGFyc2Vy
LmFkZF9vcHRpb24oJy0tYmFzaWMtYXV0aCcsIGRlc3Q9J3VzZV9iYXNpY19hdXRoJywKLSAgICAg
ICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLAotICAg
ICAgICAgICAgICAgICAgICAgIGhlbHA9J1JlcXVpcmVzIEJhc2ljIGF1dGhlbnRpY2F0aW9uLicp
Ci0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tYmFzaWMtYXV0aC1jcmVkZW50aWFsJywKLSAgICAg
ICAgICAgICAgICAgICAgICBkZXN0PSdiYXNpY19hdXRoX2NyZWRlbnRpYWwnLCBkZWZhdWx0PSd0
ZXN0OnRlc3QnLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1NwZWNpZmllcyB0aGUgY3Jl
ZGVudGlhbCBvZiBiYXNpYyBhdXRoZW50aWNhdGlvbiAnCi0gICAgICAgICAgICAgICAgICAgICAg
J2J5IHVzZXJuYW1lOnBhc3N3b3JkIHBhaXIgKGUuZy4gdGVzdDp0ZXN0KS4nKQotICAgIHBhcnNl
ci5hZGRfb3B0aW9uKCctbCcsICctLWxvZy1maWxlJywgJy0tbG9nX2ZpbGUnLCBkZXN0PSdsb2df
ZmlsZScsCi0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0nJywgaGVscD0nTG9nIGZpbGUu
JykKLSAgICAjIEN1c3RvbSBsb2cgbGV2ZWw6Ci0gICAgIyAtIEZJTkU6IFByaW50cyBzdGF0dXMg
b2YgZWFjaCBmcmFtZSBwcm9jZXNzaW5nIHN0ZXAKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLS1s
b2ctbGV2ZWwnLCAnLS1sb2dfbGV2ZWwnLCB0eXBlPSdjaG9pY2UnLAotICAgICAgICAgICAgICAg
ICAgICAgIGRlc3Q9J2xvZ19sZXZlbCcsIGRlZmF1bHQ9J3dhcm4nLAotICAgICAgICAgICAgICAg
ICAgICAgIGNob2ljZXM9WydmaW5lJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
ZGVidWcnLCAnaW5mbycsICd3YXJuaW5nJywgJ3dhcm4nLCAnZXJyb3InLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdjcml0aWNhbCddLAotICAgICAgICAgICAgICAgICAgICAgIGhl
bHA9J0xvZyBsZXZlbC4nKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctLWRlZmxhdGUtbG9nLWxl
dmVsJywgJy0tZGVmbGF0ZV9sb2dfbGV2ZWwnLAotICAgICAgICAgICAgICAgICAgICAgIHR5cGU9
J2Nob2ljZScsCi0gICAgICAgICAgICAgICAgICAgICAgZGVzdD0nZGVmbGF0ZV9sb2dfbGV2ZWwn
LCBkZWZhdWx0PSd3YXJuJywKLSAgICAgICAgICAgICAgICAgICAgICBjaG9pY2VzPVsnZGVidWcn
LCAnaW5mbycsICd3YXJuaW5nJywgJ3dhcm4nLCAnZXJyb3InLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdjcml0aWNhbCddLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J0xv
ZyBsZXZlbCBmb3IgX0RlZmxhdGVyIGFuZCBfSW5mbGF0ZXIuJykKLSAgICBwYXJzZXIuYWRkX29w
dGlvbignLS10aHJlYWQtbW9uaXRvci1pbnRlcnZhbC1pbi1zZWMnLAotICAgICAgICAgICAgICAg
ICAgICAgICctLXRocmVhZF9tb25pdG9yX2ludGVydmFsX2luX3NlYycsCi0gICAgICAgICAgICAg
ICAgICAgICAgZGVzdD0ndGhyZWFkX21vbml0b3JfaW50ZXJ2YWxfaW5fc2VjJywKLSAgICAgICAg
ICAgICAgICAgICAgICB0eXBlPSdpbnQnLCBkZWZhdWx0PS0xLAotICAgICAgICAgICAgICAgICAg
ICAgIGhlbHA9KCdJZiBwb3NpdGl2ZSBpbnRlZ2VyIGlzIHNwZWNpZmllZCwgcnVuIGEgdGhyZWFk
ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9uaXRvciB0byBzaG93IHRoZSBzdGF0
dXMgb2Ygc2VydmVyIHRocmVhZHMgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwZXJp
b2RpY2FsbHkgaW4gdGhlIHNwZWNpZmllZCBpbnRldmFsIGluICcKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnc2Vjb25kLiBJZiBub24tcG9zaXRpdmUgaW50ZWdlciBpcyBzcGVjaWZpZWQs
ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlzYWJsZSB0aGUgdGhyZWFkIG1vbml0
b3IuJykpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tbG9nLW1heCcsICctLWxvZ19tYXgnLCBk
ZXN0PSdsb2dfbWF4JywgdHlwZT0naW50JywKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0
PV9ERUZBVUxUX0xPR19NQVhfQllURVMsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0nTG9n
IG1heGltdW0gYnl0ZXMnKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctLWxvZy1jb3VudCcsICct
LWxvZ19jb3VudCcsIGRlc3Q9J2xvZ19jb3VudCcsCi0gICAgICAgICAgICAgICAgICAgICAgdHlw
ZT0naW50JywgZGVmYXVsdD1fREVGQVVMVF9MT0dfQkFDS1VQX0NPVU5ULAotICAgICAgICAgICAg
ICAgICAgICAgIGhlbHA9J0xvZyBiYWNrdXAgY291bnQnKQotICAgIHBhcnNlci5hZGRfb3B0aW9u
KCctLWFsbG93LWRyYWZ0NzUnLCBkZXN0PSdhbGxvd19kcmFmdDc1JywKLSAgICAgICAgICAgICAg
ICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLAotICAgICAgICAgICAg
ICAgICAgICAgIGhlbHA9J09ic29sZXRlIG9wdGlvbi4gSWdub3JlZC4nKQotICAgIHBhcnNlci5h
ZGRfb3B0aW9uKCctLXN0cmljdCcsIGRlc3Q9J3N0cmljdCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScs
Ci0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwgaGVscD0nT2Jzb2xldGUgb3B0
aW9uLiBJZ25vcmVkLicpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy1xJywgJy0tcXVldWUnLCBk
ZXN0PSdyZXF1ZXN0X3F1ZXVlX3NpemUnLCB0eXBlPSdpbnQnLAotICAgICAgICAgICAgICAgICAg
ICAgIGRlZmF1bHQ9X0RFRkFVTFRfUkVRVUVTVF9RVUVVRV9TSVpFLAotICAgICAgICAgICAgICAg
ICAgICAgIGhlbHA9J3JlcXVlc3QgcXVldWUgc2l6ZScpCi0KLSAgICByZXR1cm4gcGFyc2VyCi0K
LQotY2xhc3MgVGhyZWFkTW9uaXRvcih0aHJlYWRpbmcuVGhyZWFkKToKLSAgICBkYWVtb24gPSBU
cnVlCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgaW50ZXJ2YWxfaW5fc2VjKToKLSAgICAgICAg
dGhyZWFkaW5nLlRocmVhZC5fX2luaXRfXyhzZWxmLCBuYW1lPSdUaHJlYWRNb25pdG9yJykKLQot
ICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKLQotICAg
ICAgICBzZWxmLl9pbnRlcnZhbF9pbl9zZWMgPSBpbnRlcnZhbF9pbl9zZWMKLQotICAgIGRlZiBy
dW4oc2VsZik6Ci0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICB0aHJlYWRfbmFtZV9s
aXN0ID0gW10KLSAgICAgICAgICAgIGZvciB0aHJlYWQgaW4gdGhyZWFkaW5nLmVudW1lcmF0ZSgp
OgotICAgICAgICAgICAgICAgIHRocmVhZF9uYW1lX2xpc3QuYXBwZW5kKHRocmVhZC5uYW1lKQot
ICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oCi0gICAgICAgICAgICAgICAgIiVkIGFjdGl2
ZSB0aHJlYWRzOiAlcyIsCi0gICAgICAgICAgICAgICAgdGhyZWFkaW5nLmFjdGl2ZV9jb3VudCgp
LAotICAgICAgICAgICAgICAgICcsICcuam9pbih0aHJlYWRfbmFtZV9saXN0KSkKLSAgICAgICAg
ICAgIHRpbWUuc2xlZXAoc2VsZi5faW50ZXJ2YWxfaW5fc2VjKQotCi0KLWRlZiBfcGFyc2VfYXJn
c19hbmRfY29uZmlnKGFyZ3MpOgotICAgIHBhcnNlciA9IF9idWlsZF9vcHRpb25fcGFyc2VyKCkK
LQotICAgICMgRmlyc3QsIHBhcnNlIG9wdGlvbnMgd2l0aG91dCBjb25maWd1cmF0aW9uIGZpbGUu
Ci0gICAgdGVtcG9yYXJ5X29wdGlvbnMsIHRlbXBvcmFyeV9hcmdzID0gcGFyc2VyLnBhcnNlX2Fy
Z3MoYXJncz1hcmdzKQotICAgIGlmIHRlbXBvcmFyeV9hcmdzOgotICAgICAgICBsb2dnaW5nLmNy
aXRpY2FsKAotICAgICAgICAgICAgJ1VucmVjb2duaXplZCBwb3NpdGlvbmFsIGFyZ3VtZW50czog
JXInLCB0ZW1wb3JhcnlfYXJncykKLSAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgIGlmIHRlbXBv
cmFyeV9vcHRpb25zLmNvbmZpZ19maWxlOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBjb25m
aWdfZnAgPSBvcGVuKHRlbXBvcmFyeV9vcHRpb25zLmNvbmZpZ19maWxlLCAncicpCi0gICAgICAg
IGV4Y2VwdCBJT0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKAotICAg
ICAgICAgICAgICAgICdGYWlsZWQgdG8gb3BlbiBjb25maWd1cmF0aW9uIGZpbGUgJXI6ICVyJywK
LSAgICAgICAgICAgICAgICB0ZW1wb3Jhcnlfb3B0aW9ucy5jb25maWdfZmlsZSwKLSAgICAgICAg
ICAgICAgICBlKQotICAgICAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgICAgICBjb25maWdfcGFy
c2VyID0gY29uZmlncGFyc2VyLlNhZmVDb25maWdQYXJzZXIoKQotICAgICAgICBjb25maWdfcGFy
c2VyLnJlYWRmcChjb25maWdfZnApCi0gICAgICAgIGNvbmZpZ19mcC5jbG9zZSgpCi0KLSAgICAg
ICAgYXJnc19mcm9tX2NvbmZpZyA9IFtdCi0gICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBjb25m
aWdfcGFyc2VyLml0ZW1zKCdweXdlYnNvY2tldCcpOgotICAgICAgICAgICAgYXJnc19mcm9tX2Nv
bmZpZy5hcHBlbmQoJy0tJyArIG5hbWUpCi0gICAgICAgICAgICBhcmdzX2Zyb21fY29uZmlnLmFw
cGVuZCh2YWx1ZSkKLSAgICAgICAgaWYgYXJncyBpcyBOb25lOgotICAgICAgICAgICAgYXJncyA9
IGFyZ3NfZnJvbV9jb25maWcKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGFyZ3MgPSBhcmdz
X2Zyb21fY29uZmlnICsgYXJncwotICAgICAgICByZXR1cm4gcGFyc2VyLnBhcnNlX2FyZ3MoYXJn
cz1hcmdzKQotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiB0ZW1wb3Jhcnlfb3B0aW9ucywgdGVt
cG9yYXJ5X2FyZ3MKLQotCi1kZWYgX21haW4oYXJncz1Ob25lKToKLSAgICAiIiJZb3UgY2FuIGNh
bGwgdGhpcyBmdW5jdGlvbiBmcm9tIHlvdXIgb3duIHByb2dyYW0sIGJ1dCBwbGVhc2Ugbm90ZSB0
aGF0Ci0gICAgdGhpcyBmdW5jdGlvbiBoYXMgc29tZSBzaWRlLWVmZmVjdHMgdGhhdCBtaWdodCBh
ZmZlY3QgeW91ciBwcm9ncmFtLiBGb3IKLSAgICBleGFtcGxlLCB1dGlsLndyYXBfcG9wZW4zX2Zv
cl93aW4gdXNlIGluIHRoaXMgbWV0aG9kIHJlcGxhY2VzIGltcGxlbWVudGF0aW9uCi0gICAgb2Yg
b3MucG9wZW4zLgotICAgICIiIgotCi0gICAgb3B0aW9ucywgYXJncyA9IF9wYXJzZV9hcmdzX2Fu
ZF9jb25maWcoYXJncz1hcmdzKQotCi0gICAgb3MuY2hkaXIob3B0aW9ucy5kb2N1bWVudF9yb290
KQotCi0gICAgX2NvbmZpZ3VyZV9sb2dnaW5nKG9wdGlvbnMpCi0KLSAgICBpZiBvcHRpb25zLmFs
bG93X2RyYWZ0NzU6Ci0gICAgICAgIGxvZ2dpbmcud2FybmluZygnLS1hbGxvd19kcmFmdDc1IG9w
dGlvbiBpcyBvYnNvbGV0ZS4nKQotCi0gICAgaWYgb3B0aW9ucy5zdHJpY3Q6Ci0gICAgICAgIGxv
Z2dpbmcud2FybmluZygnLS1zdHJpY3Qgb3B0aW9uIGlzIG9ic29sZXRlLicpCi0KLSAgICAjIFRP
RE8odHlvc2hpbm8pOiBDbGVhbiB1cCBpbml0aWFsaXphdGlvbiBvZiBDR0kgcmVsYXRlZCB2YWx1
ZXMuIE1vdmUgc29tZQotICAgICMgb2YgY29kZSBoZXJlIHRvIFdlYlNvY2tldFJlcXVlc3RIYW5k
bGVyIGNsYXNzIGlmIGl0J3MgYmV0dGVyLgotICAgIG9wdGlvbnMuY2dpX2RpcmVjdG9yaWVzID0g
W10KLSAgICBvcHRpb25zLmlzX2V4ZWN1dGFibGVfbWV0aG9kID0gTm9uZQotICAgIGlmIG9wdGlv
bnMuY2dpX3BhdGhzOgotICAgICAgICBvcHRpb25zLmNnaV9kaXJlY3RvcmllcyA9IG9wdGlvbnMu
Y2dpX3BhdGhzLnNwbGl0KCcsJykKLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtIGluICgnY3lnd2lu
JywgJ3dpbjMyJyk6Ci0gICAgICAgICAgICBjeWd3aW5fcGF0aCA9IE5vbmUKLSAgICAgICAgICAg
ICMgRm9yIFdpbjMyIFB5dGhvbiwgaXQgaXMgZXhwZWN0ZWQgdGhhdCBDWUdXSU5fUEFUSAotICAg
ICAgICAgICAgIyBpcyBzZXQgdG8gYSBkaXJlY3Rvcnkgb2YgY3lnd2luIGJpbmFyaWVzLgotICAg
ICAgICAgICAgIyBGb3IgZXhhbXBsZSwgd2Vic29ja2V0X3NlcnZlci5weSBpbiBDaHJvbWl1bSBz
ZXRzIENZR1dJTl9QQVRIIHRvCi0gICAgICAgICAgICAjIGZ1bGwgcGF0aCBvZiB0aGlyZF9wYXJ0
eS9jeWd3aW4vYmluLgotICAgICAgICAgICAgaWYgJ0NZR1dJTl9QQVRIJyBpbiBvcy5lbnZpcm9u
OgotICAgICAgICAgICAgICAgIGN5Z3dpbl9wYXRoID0gb3MuZW52aXJvblsnQ1lHV0lOX1BBVEgn
XQotICAgICAgICAgICAgdXRpbC53cmFwX3BvcGVuM19mb3Jfd2luKGN5Z3dpbl9wYXRoKQotCi0g
ICAgICAgICAgICBkZWYgX19jaGVja19zY3JpcHQoc2NyaXB0cGF0aCk6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIHV0aWwuZ2V0X3NjcmlwdF9pbnRlcnAoc2NyaXB0cGF0aCwgY3lnd2luX3BhdGgp
Ci0KLSAgICAgICAgICAgIG9wdGlvbnMuaXNfZXhlY3V0YWJsZV9tZXRob2QgPSBfX2NoZWNrX3Nj
cmlwdAotCi0gICAgaWYgb3B0aW9ucy51c2VfdGxzOgotICAgICAgICBpZiBvcHRpb25zLnRsc19t
b2R1bGUgaXMgTm9uZToKLSAgICAgICAgICAgIGlmIF9pbXBvcnRfc3NsKCk6Ci0gICAgICAgICAg
ICAgICAgb3B0aW9ucy50bHNfbW9kdWxlID0gX1RMU19CWV9TVEFOREFSRF9NT0RVTEUKLSAgICAg
ICAgICAgICAgICBsb2dnaW5nLmRlYnVnKCdVc2luZyBzc2wgbW9kdWxlJykKLSAgICAgICAgICAg
IGVsaWYgX2ltcG9ydF9weW9wZW5zc2woKToKLSAgICAgICAgICAgICAgICBvcHRpb25zLnRsc19t
b2R1bGUgPSBfVExTX0JZX1BZT1BFTlNTTAotICAgICAgICAgICAgICAgIGxvZ2dpbmcuZGVidWco
J1VzaW5nIHB5T3BlblNTTCBtb2R1bGUnKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAg
ICAgICBsb2dnaW5nLmNyaXRpY2FsKAotICAgICAgICAgICAgICAgICAgICAgICAgJ1RMUyBzdXBw
b3J0IHJlcXVpcmVzIHNzbCBvciBweU9wZW5TU0wgbW9kdWxlLicpCi0gICAgICAgICAgICAgICAg
c3lzLmV4aXQoMSkKLSAgICAgICAgZWxpZiBvcHRpb25zLnRsc19tb2R1bGUgPT0gX1RMU19CWV9T
VEFOREFSRF9NT0RVTEU6Ci0gICAgICAgICAgICBpZiBub3QgX2ltcG9ydF9zc2woKToKLSAgICAg
ICAgICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKCdzc2wgbW9kdWxlIGlzIG5vdCBhdmFpbGFibGUn
KQotICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCi0gICAgICAgIGVsaWYgb3B0aW9ucy50bHNf
bW9kdWxlID09IF9UTFNfQllfUFlPUEVOU1NMOgotICAgICAgICAgICAgaWYgbm90IF9pbXBvcnRf
cHlvcGVuc3NsKCk6Ci0gICAgICAgICAgICAgICAgbG9nZ2luZy5jcml0aWNhbCgncHlPcGVuU1NM
IG1vZHVsZSBpcyBub3QgYXZhaWxhYmxlJykKLSAgICAgICAgICAgICAgICBzeXMuZXhpdCgxKQot
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgbG9nZ2luZy5jcml0aWNhbCgnSW52YWxpZCAtLXRs
cy1tb2R1bGUgb3B0aW9uOiAlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlv
bnMudGxzX21vZHVsZSkKLSAgICAgICAgICAgIHN5cy5leGl0KDEpCi0KLSAgICAgICAgaWYgbm90
IG9wdGlvbnMucHJpdmF0ZV9rZXkgb3Igbm90IG9wdGlvbnMuY2VydGlmaWNhdGU6Ci0gICAgICAg
ICAgICBsb2dnaW5nLmNyaXRpY2FsKAotICAgICAgICAgICAgICAgICAgICAnVG8gdXNlIFRMUywg
c3BlY2lmeSBwcml2YXRlX2tleSBhbmQgY2VydGlmaWNhdGUuJykKLSAgICAgICAgICAgIHN5cy5l
eGl0KDEpCi0KLSAgICAgICAgaWYgKG9wdGlvbnMudGxzX2NsaWVudF9jZXJ0X29wdGlvbmFsIGFu
ZAotICAgICAgICAgICAgbm90IG9wdGlvbnMudGxzX2NsaWVudF9hdXRoKToKLSAgICAgICAgICAg
IGxvZ2dpbmcuY3JpdGljYWwoJ0NsaWVudCBhdXRoZW50aWNhdGlvbiBtdXN0IGJlIGVuYWJsZWQg
dG8gJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3BlY2lmeSB0bHNfY2xpZW50X2Nl
cnRfb3B0aW9uYWwnKQotICAgICAgICAgICAgc3lzLmV4aXQoMSkKLSAgICBlbHNlOgotICAgICAg
ICBpZiBvcHRpb25zLnRsc19tb2R1bGUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBsb2dnaW5n
LmNyaXRpY2FsKCdVc2UgLS10bHMtbW9kdWxlIG9wdGlvbiBvbmx5IHRvZ2V0aGVyIHdpdGggJwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS11c2UtdGxzIG9wdGlvbi4nKQotICAgICAg
ICAgICAgc3lzLmV4aXQoMSkKLQotICAgICAgICBpZiBvcHRpb25zLnRsc19jbGllbnRfYXV0aDoK
LSAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoJ1RMUyBtdXN0IGJlIGVuYWJsZWQgZm9yIGNs
aWVudCBhdXRoZW50aWNhdGlvbi4nKQotICAgICAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgICAg
ICBpZiBvcHRpb25zLnRsc19jbGllbnRfY2VydF9vcHRpb25hbDoKLSAgICAgICAgICAgIGxvZ2dp
bmcuY3JpdGljYWwoJ1RMUyBtdXN0IGJlIGVuYWJsZWQgZm9yIGNsaWVudCBhdXRoZW50aWNhdGlv
bi4nKQotICAgICAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgIGlmIG5vdCBvcHRpb25zLnNjYW5f
ZGlyOgotICAgICAgICBvcHRpb25zLnNjYW5fZGlyID0gb3B0aW9ucy53ZWJzb2NrX2hhbmRsZXJz
Ci0KLSAgICBpZiBvcHRpb25zLnVzZV9iYXNpY19hdXRoOgotICAgICAgICBvcHRpb25zLmJhc2lj
X2F1dGhfY3JlZGVudGlhbCA9ICdCYXNpYyAnICsgYmFzZTY0LmI2NGVuY29kZSgKLSAgICAgICAg
ICAgIG9wdGlvbnMuYmFzaWNfYXV0aF9jcmVkZW50aWFsKQotCi0gICAgdHJ5OgotICAgICAgICBp
ZiBvcHRpb25zLnRocmVhZF9tb25pdG9yX2ludGVydmFsX2luX3NlYyA+IDA6Ci0gICAgICAgICAg
ICAjIFJ1biBhIHRocmVhZCBtb25pdG9yIHRvIHNob3cgdGhlIHN0YXR1cyBvZiBzZXJ2ZXIgdGhy
ZWFkcyBmb3IKLSAgICAgICAgICAgICMgZGVidWdnaW5nLgotICAgICAgICAgICAgVGhyZWFkTW9u
aXRvcihvcHRpb25zLnRocmVhZF9tb25pdG9yX2ludGVydmFsX2luX3NlYykuc3RhcnQoKQotCi0g
ICAgICAgIHNlcnZlciA9IFdlYlNvY2tldFNlcnZlcihvcHRpb25zKQotICAgICAgICBzZXJ2ZXIu
c2VydmVfZm9yZXZlcigpCi0gICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICBsb2dn
aW5nLmNyaXRpY2FsKCdtb2RfcHl3ZWJzb2NrZXQ6ICVzJyAlIGUpCi0gICAgICAgIGxvZ2dpbmcu
Y3JpdGljYWwoJ21vZF9weXdlYnNvY2tldDogJXMnICUgdXRpbC5nZXRfc3RhY2tfdHJhY2UoKSkK
LSAgICAgICAgc3lzLmV4aXQoMSkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAg
IF9tYWluKHN5cy5hcmd2WzE6XSkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvbW9kX3B5d2Vic29ja2V0L3N0cmVhbS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L3N0
cmVhbS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTdkMzEzNmFjOWI0MmY1ZGY1
NjUyZDkxZjNjODg2Zjg1ZWNiZjFmNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9zdHJlYW0ucHkKKysrIC9kZXYvbnVs
bApAQCAtMSw1NiArMCwwIEBACi0jIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgotIyBBbGwg
cmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6
Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJUaGlzIGZpbGUgZXhw
b3J0cyBwdWJsaWMgc3ltYm9scy4iIiIKLQotCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFt
X2Jhc2UgaW1wb3J0IEJhZE9wZXJhdGlvbkV4Y2VwdGlvbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQu
X3N0cmVhbV9iYXNlIGltcG9ydCBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbgotZnJvbSBt
b2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9iYXNlIGltcG9ydCBJbnZhbGlkRnJhbWVFeGNlcHRpb24K
LWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fYmFzZSBpbXBvcnQgSW52YWxpZFVURjhFeGNl
cHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fYmFzZSBpbXBvcnQgVW5zdXBwb3J0
ZWRGcmFtZUV4Y2VwdGlvbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9oaXhpZTc1IGlt
cG9ydCBTdHJlYW1IaXhpZTc1Ci1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2h5YmkgaW1w
b3J0IEZyYW1lCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0IFN0cmVh
bQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9oeWJpIGltcG9ydCBTdHJlYW1PcHRpb25z
Ci0KLSMgVGhlc2UgbWV0aG9kcyBhcmUgaW50ZW5kZWQgdG8gYmUgdXNlZCBieSBXZWJTb2NrZXQg
Y2xpZW50IGRldmVsb3BlcnMgdG8gaGF2ZQotIyB0aGVpciBpbXBsZW1lbnRhdGlvbnMgcmVjZWl2
ZSBicm9rZW4gZGF0YSBpbiB0ZXN0cy4KLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1faHli
aSBpbXBvcnQgY3JlYXRlX2Nsb3NlX2ZyYW1lCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFt
X2h5YmkgaW1wb3J0IGNyZWF0ZV9oZWFkZXIKLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1f
aHliaSBpbXBvcnQgY3JlYXRlX2xlbmd0aF9oZWFkZXIKLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9z
dHJlYW1faHliaSBpbXBvcnQgY3JlYXRlX3BpbmdfZnJhbWUKLWZyb20gbW9kX3B5d2Vic29ja2V0
Ll9zdHJlYW1faHliaSBpbXBvcnQgY3JlYXRlX3BvbmdfZnJhbWUKLWZyb20gbW9kX3B5d2Vic29j
a2V0Ll9zdHJlYW1faHliaSBpbXBvcnQgY3JlYXRlX2JpbmFyeV9mcmFtZQotZnJvbSBtb2RfcHl3
ZWJzb2NrZXQuX3N0cmVhbV9oeWJpIGltcG9ydCBjcmVhdGVfdGV4dF9mcmFtZQotZnJvbSBtb2Rf
cHl3ZWJzb2NrZXQuX3N0cmVhbV9oeWJpIGltcG9ydCBjcmVhdGVfY2xvc2luZ19oYW5kc2hha2Vf
Ym9keQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJz
b2NrZXQvdXRpbC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L3V0aWwucHkKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDZjODI4NGNkMDc0NGNkZTM4NGM1NDJhOTZkY2MzMGFlZjVhZGU4
NzQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9t
b2RfcHl3ZWJzb2NrZXQvdXRpbC5weQorKysgL2Rldi9udWxsCkBAIC0xLDQyNCArMCwwIEBACi0j
IENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwot
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0j
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgot
IyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLQotCi0iIiJXZWJTb2NrZXQgdXRpbGl0aWVzLiIiIgotCi0KLWltcG9y
dCBhcnJheQotaW1wb3J0IGVycm5vCi0KLSMgSW1wb3J0IGhhc2ggY2xhc3NlcyBmcm9tIGEgbW9k
dWxlIGF2YWlsYWJsZSBhbmQgcmVjb21tZW5kZWQgZm9yIGVhY2ggUHl0aG9uCi0jIHZlcnNpb24g
YW5kIHJlLWV4cG9ydCB0aG9zZSBzeW1ib2wuIFVzZSBzaGEgYW5kIG1kNSBtb2R1bGUgaW4gUHl0
aG9uIDIuNCwgYW5kCi0jIGhhc2hsaWIgbW9kdWxlIGluIFB5dGhvbiAyLjYuCi10cnk6Ci0gICAg
aW1wb3J0IGhhc2hsaWIKLSAgICBtZDVfaGFzaCA9IGhhc2hsaWIubWQ1Ci0gICAgc2hhMV9oYXNo
ID0gaGFzaGxpYi5zaGExCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgaW1wb3J0IG1kNQotICAg
IGltcG9ydCBzaGEKLSAgICBtZDVfaGFzaCA9IG1kNS5tZDUKLSAgICBzaGExX2hhc2ggPSBzaGEu
c2hhCi0KLWZyb20gc2l4Lm1vdmVzIGltcG9ydCBTdHJpbmdJTwotaW1wb3J0IGxvZ2dpbmcKLWlt
cG9ydCBvcwotaW1wb3J0IHJlCi1pbXBvcnQgc29ja2V0Ci1pbXBvcnQgdHJhY2ViYWNrCi1pbXBv
cnQgemxpYgotCi10cnk6Ci0gICAgZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGZhc3RfbWFz
a2luZwotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIHBhc3MKLQotCi1kZWYgZ2V0X3N0YWNrX3Ry
YWNlKCk6Ci0gICAgIiIiR2V0IHRoZSBjdXJyZW50IHN0YWNrIHRyYWNlIGFzIHN0cmluZy4KLQot
ICAgIFRoaXMgaXMgbmVlZGVkIHRvIHN1cHBvcnQgUHl0aG9uIDIuMy4KLSAgICBUT0RPOiBSZW1v
dmUgdGhpcyB3aGVuIHdlIG9ubHkgc3VwcG9ydCBQeXRob24gMi40IGFuZCBhYm92ZS4KLSAgICAg
ICAgICBVc2UgdHJhY2ViYWNrLmZvcm1hdF9leGMgaW5zdGVhZC4KLSAgICAiIiIKLSAgICBvdXQg
PSBTdHJpbmdJTygpCi0gICAgdHJhY2ViYWNrLnByaW50X2V4YyhmaWxlPW91dCkKLSAgICByZXR1
cm4gb3V0LmdldHZhbHVlKCkKLQotCi1kZWYgcHJlcGVuZF9tZXNzYWdlX3RvX2V4Y2VwdGlvbiht
ZXNzYWdlLCBleGMpOgotICAgICIiIlByZXBlbmQgbWVzc2FnZSB0byB0aGUgZXhjZXB0aW9uLiIi
IgotICAgIGV4Yy5hcmdzID0gKG1lc3NhZ2UgKyBzdHIoZXhjKSwpCi0gICAgcmV0dXJuCi0KLQot
ZGVmIF9fdHJhbnNsYXRlX2ludGVycChpbnRlcnAsIGN5Z3dpbl9wYXRoKToKLSAgICAiIiJUcmFu
c2xhdGUgaW50ZXJwIHByb2dyYW0gcGF0aCBmb3IgV2luMzIgcHl0aG9uIHRvIHJ1biBjeWd3aW4g
cHJvZ3JhbQotICAgIChlLmcuIHBlcmwpLiAgTm90ZSB0aGF0IGl0IGRvZXNuJ3Qgc3VwcG9ydCBw
YXRoIHRoYXQgY29udGFpbnMgc3BhY2UsCi0gICAgd2hpY2ggaXMgdHlwaWNhbGx5IHRydWUgZm9y
IFVuaXgsIHdoZXJlICMhLXNjcmlwdCBpcyB3cml0dGVuLgotICAgIEZvciBXaW4zMiBweXRob24s
IGN5Z3dpbl9wYXRoIGlzIGEgZGlyZWN0b3J5IG9mIGN5Z3dpbiBiaW5hcmllcy4KLQotICAgIEFy
Z3M6Ci0gICAgICBpbnRlcnA6IGludGVycCBjb21tYW5kIGxpbmUKLSAgICAgIGN5Z3dpbl9wYXRo
OiBkaXJlY3RvcnkgbmFtZSBvZiBjeWd3aW4gYmluYXJ5LCBvciBOb25lCi0gICAgUmV0dXJuczoK
LSAgICAgIHRyYW5zbGF0ZWQgaW50ZXJwIGNvbW1hbmQgbGluZS4KLSAgICAiIiIKLSAgICBpZiBu
b3QgY3lnd2luX3BhdGg6Ci0gICAgICAgIHJldHVybiBpbnRlcnAKLSAgICBtID0gcmUubWF0Y2go
J15bXiBdKi8oW14gXSspKCAuKik/JywgaW50ZXJwKQotICAgIGlmIG06Ci0gICAgICAgIGNtZCA9
IG9zLnBhdGguam9pbihjeWd3aW5fcGF0aCwgbS5ncm91cCgxKSkKLSAgICAgICAgcmV0dXJuIGNt
ZCArIG0uZ3JvdXAoMikKLSAgICByZXR1cm4gaW50ZXJwCi0KLQotZGVmIGdldF9zY3JpcHRfaW50
ZXJwKHNjcmlwdF9wYXRoLCBjeWd3aW5fcGF0aD1Ob25lKToKLSAgICByIiIiR2V0ICMhLWludGVy
cHJldGVyIGNvbW1hbmQgbGluZSBmcm9tIHRoZSBzY3JpcHQuCi0KLSAgICBJdCBhbHNvIGZpeGVz
IGNvbW1hbmQgcGF0aC4gIFdoZW4gQ3lnd2luIFB5dGhvbiBpcyB1c2VkLCBlLmcuIGluIFdlYktp
dCwKLSAgICBpdCBjb3VsZCBydW4gIi91c3IvYmluL3BlcmwgLXdUIGhlbGxvLnBsIi4KLSAgICBX
aGVuIFdpbjMyIFB5dGhvbiBpcyB1c2VkLCBlLmcuIGluIENocm9taXVtLCBpdCBjb3VsZG4ndC4g
IFNvLCBmaXgKLSAgICAiL3Vzci9iaW4vcGVybCIgdG8gIjxjeWd3aW5fcGF0aD5ccGVybC5leGUi
LgotCi0gICAgQXJnczoKLSAgICAgIHNjcmlwdF9wYXRoOiBwYXRobmFtZSBvZiB0aGUgc2NyaXB0
Ci0gICAgICBjeWd3aW5fcGF0aDogZGlyZWN0b3J5IG5hbWUgb2YgY3lnd2luIGJpbmFyeSwgb3Ig
Tm9uZQotICAgIFJldHVybnM6Ci0gICAgICAjIS1pbnRlcnByZXRlciBjb21tYW5kIGxpbmUsIG9y
IE5vbmUgaWYgaXQgaXMgbm90ICMhLXNjcmlwdC4KLSAgICAiIiIKLSAgICBmcCA9IG9wZW4oc2Ny
aXB0X3BhdGgpCi0gICAgbGluZSA9IGZwLnJlYWRsaW5lKCkKLSAgICBmcC5jbG9zZSgpCi0gICAg
bSA9IHJlLm1hdGNoKCdeIyEoLiopJywgbGluZSkKLSAgICBpZiBtOgotICAgICAgICByZXR1cm4g
X190cmFuc2xhdGVfaW50ZXJwKG0uZ3JvdXAoMSksIGN5Z3dpbl9wYXRoKQotICAgIHJldHVybiBO
b25lCi0KLQotZGVmIHdyYXBfcG9wZW4zX2Zvcl93aW4oY3lnd2luX3BhdGgpOgotICAgICIiIldy
YXAgcG9wZW4zIHRvIHN1cHBvcnQgIyEtc2NyaXB0IG9uIFdpbmRvd3MuCi0KLSAgICBBcmdzOgot
ICAgICAgY3lnd2luX3BhdGg6ICBwYXRoIGZvciBjeWd3aW4gYmluYXJ5IGlmIGNvbW1hbmQgcGF0
aCBpcyBuZWVkZWQgdG8gYmUKLSAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlZC4gIE5vbmUg
aWYgbm8gdHJhbnNsYXRpb24gcmVxdWlyZWQuCi0gICAgIiIiCi0gICAgX19vcmlnX3BvcGVuMyA9
IG9zLnBvcGVuMwotCi0gICAgZGVmIF9fd3JhcF9wb3BlbjMoY21kLCBtb2RlPSd0JywgYnVmc2l6
ZT0tMSk6Ci0gICAgICAgIGNtZGxpbmUgPSBjbWQuc3BsaXQoJyAnKQotICAgICAgICBpbnRlcnAg
PSBnZXRfc2NyaXB0X2ludGVycChjbWRsaW5lWzBdLCBjeWd3aW5fcGF0aCkKLSAgICAgICAgaWYg
aW50ZXJwOgotICAgICAgICAgICAgY21kID0gaW50ZXJwICsgJyAnICsgY21kCi0gICAgICAgIHJl
dHVybiBfX29yaWdfcG9wZW4zKGNtZCwgbW9kZSwgYnVmc2l6ZSkKLQotICAgIG9zLnBvcGVuMyA9
IF9fd3JhcF9wb3BlbjMKLQotCi1kZWYgaGV4aWZ5KHMpOgotICAgIHJldHVybiAnICcuam9pbiht
YXAobGFtYmRhIHg6ICclMDJ4JyAlIG9yZCh4KSwgcykpCi0KLQotZGVmIGdldF9jbGFzc19sb2dn
ZXIobyk6Ci0gICAgIiIiUmV0dXJuIHRoZSBsb2dnaW5nIGNsYXNzIGluZm9ybWF0aW9uLiIiIgot
ICAgIHJldHVybiBsb2dnaW5nLmdldExvZ2dlcigKLSAgICAgICAgJyVzLiVzJyAlIChvLl9fY2xh
c3NfXy5fX21vZHVsZV9fLCBvLl9fY2xhc3NfXy5fX25hbWVfXykpCi0KLQotY2xhc3MgTm9vcE1h
c2tlcihvYmplY3QpOgotICAgICIiIkEgTm9PcCBtYXNraW5nIG9iamVjdC4KLQotICAgIFRoaXMg
aGFzIHRoZSBzYW1lIGludGVyZmFjZSBhcyBSZXBlYXRlZFhvck1hc2tlciBidXQganVzdCByZXR1
cm5zCi0gICAgdGhlIHN0cmluZyBwYXNzZWQgaW4gd2l0aG91dCBtYWtpbmcgYW55IGNoYW5nZS4K
LSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgIiIiTm9PcC4iIiIK
LSAgICAgICAgcGFzcwotCi0gICAgZGVmIG1hc2soc2VsZiwgcyk6Ci0gICAgICAgICIiIk5vT3Au
IiIiCi0gICAgICAgIHJldHVybiBzCi0KLQotY2xhc3MgUmVwZWF0ZWRYb3JNYXNrZXIob2JqZWN0
KToKLQotICAgICIiIkEgbWFza2luZyBvYmplY3QgdGhhdCBhcHBsaWVzIFhPUiBvbiB0aGUgc3Ry
aW5nLgotCi0gICAgQXBwbGllcyBYT1Igb24gdGhlIHN0cmluZyBnaXZlbiB0byBtYXNrIG1ldGhv
ZCB3aXRoIHRoZSBtYXNraW5nIGJ5dGVzCi0gICAgZ2l2ZW4gdG8gdGhlIGNvbnN0cnVjdG9yIHJl
cGVhdGVkbHkuIFRoaXMgb2JqZWN0IHJlbWVtYmVycyB0aGUgcG9zaXRpb24KLSAgICBpbiB0aGUg
bWFza2luZyBieXRlcyB0aGUgbGFzdCBtYXNrIG1ldGhvZCBjYWxsIGVuZGVkIGFuZCByZXN1bWVz
IGZyb20KLSAgICB0aGF0IHBvaW50IG9uIHRoZSBuZXh0IG1hc2sgbWV0aG9kIGNhbGwuCi0gICAg
IiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbWFza2luZ19rZXkpOgotICAgICAgICBzZWxm
Ll9tYXNraW5nX2tleSA9IG1hc2tpbmdfa2V5Ci0gICAgICAgIHNlbGYuX21hc2tpbmdfa2V5X2lu
ZGV4ID0gMAotCi0gICAgZGVmIF9tYXNrX3VzaW5nX3N3aWcoc2VsZiwgcyk6Ci0gICAgICAgICIi
IlBlcmZvcm0gdGhlIG1hc2sgdmlhIFNXSUcuIiIiCi0gICAgICAgIG1hc2tlZF9kYXRhID0gZmFz
dF9tYXNraW5nLm1hc2soCi0gICAgICAgICAgICAgICAgcywgc2VsZi5fbWFza2luZ19rZXksIHNl
bGYuX21hc2tpbmdfa2V5X2luZGV4KQotICAgICAgICBzZWxmLl9tYXNraW5nX2tleV9pbmRleCA9
ICgKLSAgICAgICAgICAgICAgICAoc2VsZi5fbWFza2luZ19rZXlfaW5kZXggKyBsZW4ocykpICUg
bGVuKHNlbGYuX21hc2tpbmdfa2V5KSkKLSAgICAgICAgcmV0dXJuIG1hc2tlZF9kYXRhCi0KLSAg
ICBkZWYgX21hc2tfdXNpbmdfYXJyYXkoc2VsZiwgcyk6Ci0gICAgICAgICIiIlBlcmZvcm0gdGhl
IG1hc2sgdmlhIHB5dGhvbi4iIiIKLSAgICAgICAgcmVzdWx0ID0gYXJyYXkuYXJyYXkoJ0InKQot
ICAgICAgICByZXN1bHQuZnJvbXN0cmluZyhzKQotCi0gICAgICAgICMgVXNlIHRlbXBvcmFyeSBs
b2NhbCB2YXJpYWJsZXMgdG8gZWxpbWluYXRlIHRoZSBjb3N0IHRvIGFjY2VzcwotICAgICAgICAj
IGF0dHJpYnV0ZXMKLSAgICAgICAgbWFza2luZ19rZXkgPSBtYXAob3JkLCBzZWxmLl9tYXNraW5n
X2tleSkKLSAgICAgICAgbWFza2luZ19rZXlfc2l6ZSA9IGxlbihtYXNraW5nX2tleSkKLSAgICAg
ICAgbWFza2luZ19rZXlfaW5kZXggPSBzZWxmLl9tYXNraW5nX2tleV9pbmRleAotCi0gICAgICAg
IGZvciBpIGluIHhyYW5nZShsZW4ocmVzdWx0KSk6Ci0gICAgICAgICAgICByZXN1bHRbaV0gXj0g
bWFza2luZ19rZXlbbWFza2luZ19rZXlfaW5kZXhdCi0gICAgICAgICAgICBtYXNraW5nX2tleV9p
bmRleCA9IChtYXNraW5nX2tleV9pbmRleCArIDEpICUgbWFza2luZ19rZXlfc2l6ZQotCi0gICAg
ICAgIHNlbGYuX21hc2tpbmdfa2V5X2luZGV4ID0gbWFza2luZ19rZXlfaW5kZXgKLQotICAgICAg
ICByZXR1cm4gcmVzdWx0LnRvc3RyaW5nKCkKLQotICAgIGlmICdmYXN0X21hc2tpbmcnIGluIGds
b2JhbHMoKToKLSAgICAgICAgbWFzayA9IF9tYXNrX3VzaW5nX3N3aWcKLSAgICBlbHNlOgotICAg
ICAgICBtYXNrID0gX21hc2tfdXNpbmdfYXJyYXkKLQotCi0jIEJ5IG1ha2luZyB3Yml0cyBvcHRp
b24gbmVnYXRpdmUsIHdlIGNhbiBzdXBwcmVzcyBDTUYvRkxHICgyIG9jdGV0KSBhbmQKLSMgQURM
RVIzMiAoNCBvY3RldCkgZmllbGRzIG9mIHpsaWIgc28gdGhhdCB3ZSBjYW4gdXNlIHpsaWIgbW9k
dWxlIGp1c3QgYXMKLSMgZGVmbGF0ZSBsaWJyYXJ5LiBESUNUSUQgd29uJ3QgYmUgYWRkZWQgYXMg
ZmFyIGFzIHdlIGRvbid0IHNldCBkaWN0aW9uYXJ5LgotIyBMWjc3IHdpbmRvdyBvZiAzMksgd2ls
bCBiZSB1c2VkIGZvciBib3RoIGNvbXByZXNzaW9uIGFuZCBkZWNvbXByZXNzaW9uLgotIyBGb3Ig
ZGVjb21wcmVzc2lvbiwgd2UgY2FuIGp1c3QgdXNlIDMySyB0byBjb3ZlciBhbnkgd2luZG93cyBz
aXplLiBGb3IKLSMgY29tcHJlc3Npb24sIHdlIHVzZSAzMksgc28gcmVjZWl2ZXJzIG11c3QgdXNl
IDMySy4KLSMKLSMgQ29tcHJlc3Npb24gbGV2ZWwgaXMgWl9ERUZBVUxUX0NPTVBSRVNTSU9OLiBX
ZSBkb24ndCBoYXZlIHRvIG1hdGNoIGxldmVsCi0jIHRvIGRlY29kZS4KLSMKLSMgU2VlIHpjb25m
LmgsIGRlZmxhdGUuY2MsIGluZmxhdGUuY2Mgb2YgemxpYiBsaWJyYXJ5LCBhbmQgemxpYm1vZHVs
ZS5jIG9mCi0jIFB5dGhvbi4gU2VlIGFsc28gUkZDMTk1MCAoWkxJQiAzLjMpLgotCi0KLWNsYXNz
IF9EZWZsYXRlcihvYmplY3QpOgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHdpbmRvd19iaXRz
KToKLSAgICAgICAgc2VsZi5fbG9nZ2VyID0gZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQotCi0gICAg
ICAgIHNlbGYuX2NvbXByZXNzID0gemxpYi5jb21wcmVzc29iaigKLSAgICAgICAgICAgIHpsaWIu
Wl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELCAtd2luZG93X2JpdHMpCi0KLSAg
ICBkZWYgY29tcHJlc3Moc2VsZiwgYnl0ZXMpOgotICAgICAgICBjb21wcmVzc2VkX2J5dGVzID0g
c2VsZi5fY29tcHJlc3MuY29tcHJlc3MoYnl0ZXMpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1
ZygnQ29tcHJlc3MgaW5wdXQgJXInLCBieXRlcykKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVn
KCdDb21wcmVzcyByZXN1bHQgJXInLCBjb21wcmVzc2VkX2J5dGVzKQotICAgICAgICByZXR1cm4g
Y29tcHJlc3NlZF9ieXRlcwotCi0gICAgZGVmIGNvbXByZXNzX2FuZF9mbHVzaChzZWxmLCBieXRl
cyk6Ci0gICAgICAgIGNvbXByZXNzZWRfYnl0ZXMgPSBzZWxmLl9jb21wcmVzcy5jb21wcmVzcyhi
eXRlcykKLSAgICAgICAgY29tcHJlc3NlZF9ieXRlcyArPSBzZWxmLl9jb21wcmVzcy5mbHVzaCh6
bGliLlpfU1lOQ19GTFVTSCkKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdDb21wcmVzcyBp
bnB1dCAlcicsIGJ5dGVzKQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0NvbXByZXNzIHJl
c3VsdCAlcicsIGNvbXByZXNzZWRfYnl0ZXMpCi0gICAgICAgIHJldHVybiBjb21wcmVzc2VkX2J5
dGVzCi0KLSAgICBkZWYgY29tcHJlc3NfYW5kX2ZpbmlzaChzZWxmLCBieXRlcyk6Ci0gICAgICAg
IGNvbXByZXNzZWRfYnl0ZXMgPSBzZWxmLl9jb21wcmVzcy5jb21wcmVzcyhieXRlcykKLSAgICAg
ICAgY29tcHJlc3NlZF9ieXRlcyArPSBzZWxmLl9jb21wcmVzcy5mbHVzaCh6bGliLlpfRklOSVNI
KQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0NvbXByZXNzIGlucHV0ICVyJywgYnl0ZXMp
Ci0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnQ29tcHJlc3MgcmVzdWx0ICVyJywgY29tcHJl
c3NlZF9ieXRlcykKLSAgICAgICAgcmV0dXJuIGNvbXByZXNzZWRfYnl0ZXMKLQotCi1jbGFzcyBf
SW5mbGF0ZXIob2JqZWN0KToKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB3aW5kb3dfYml0cyk6
Ci0gICAgICAgIHNlbGYuX2xvZ2dlciA9IGdldF9jbGFzc19sb2dnZXIoc2VsZikKLSAgICAgICAg
c2VsZi5fd2luZG93X2JpdHMgPSB3aW5kb3dfYml0cwotCi0gICAgICAgIHNlbGYuX3VuY29uc3Vt
ZWQgPSAnJwotCi0gICAgICAgIHNlbGYucmVzZXQoKQotCi0gICAgZGVmIGRlY29tcHJlc3Moc2Vs
Ziwgc2l6ZSk6Ci0gICAgICAgIGlmIG5vdCAoc2l6ZSA9PSAtMSBvciBzaXplID4gMCk6Ci0gICAg
ICAgICAgICByYWlzZSBFeGNlcHRpb24oJ3NpemUgbXVzdCBiZSAtMSBvciBwb3NpdGl2ZScpCi0K
LSAgICAgICAgZGF0YSA9ICcnCi0KLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIGlm
IHNpemUgPT0gLTE6Ci0gICAgICAgICAgICAgICAgZGF0YSArPSBzZWxmLl9kZWNvbXByZXNzLmRl
Y29tcHJlc3Moc2VsZi5fdW5jb25zdW1lZCkKLSAgICAgICAgICAgICAgICAjIFNlZSBQeXRob24g
YnVnIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxMjA1MCB0bwotICAgICAgICAgICAgICAg
ICMgdW5kZXJzdGFuZCB3aHkgdGhlIHNhbWUgY29kZSBjYW5ub3QgYmUgdXNlZCBmb3IgdXBkYXRp
bmcKLSAgICAgICAgICAgICAgICAjIHNlbGYuX3VuY29uc3VtZWQgZm9yIGhlcmUgYW5kIGVsc2Ug
YmxvY2suCi0gICAgICAgICAgICAgICAgc2VsZi5fdW5jb25zdW1lZCA9ICcnCi0gICAgICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgICAgIGRhdGEgKz0gc2VsZi5fZGVjb21wcmVzcy5kZWNvbXBy
ZXNzKAotICAgICAgICAgICAgICAgICAgICBzZWxmLl91bmNvbnN1bWVkLCBzaXplIC0gbGVuKGRh
dGEpKQotICAgICAgICAgICAgICAgIHNlbGYuX3VuY29uc3VtZWQgPSBzZWxmLl9kZWNvbXByZXNz
LnVuY29uc3VtZWRfdGFpbAotICAgICAgICAgICAgaWYgc2VsZi5fZGVjb21wcmVzcy51bnVzZWRf
ZGF0YToKLSAgICAgICAgICAgICAgICAjIEVuY291bnRlcmVkIGEgbGFzdCBibG9jayAoaS5lLiBh
IGJsb2NrIHdpdGggQkZJTkFMID0gMSkgYW5kCi0gICAgICAgICAgICAgICAgIyBmb3VuZCBhIG5l
dyBzdHJlYW0gKHVudXNlZF9kYXRhKS4gV2UgY2Fubm90IHVzZSB0aGUgc2FtZQotICAgICAgICAg
ICAgICAgICMgemxpYi5EZWNvbXByZXNzIG9iamVjdCBmb3IgdGhlIG5ldyBzdHJlYW0uIENyZWF0
ZSBhIG5ldwotICAgICAgICAgICAgICAgICMgRGVjb21wcmVzcyBvYmplY3QgdG8gZGVjb21wcmVz
cyB0aGUgbmV3IG9uZS4KLSAgICAgICAgICAgICAgICAjCi0gICAgICAgICAgICAgICAgIyBJdCdz
IGZpbmUgdG8gaWdub3JlIHVuY29uc3VtZWRfdGFpbCBpZiB1bnVzZWRfZGF0YSBpcyBub3QKLSAg
ICAgICAgICAgICAgICAjIGVtcHR5LgotICAgICAgICAgICAgICAgIHNlbGYuX3VuY29uc3VtZWQg
PSBzZWxmLl9kZWNvbXByZXNzLnVudXNlZF9kYXRhCi0gICAgICAgICAgICAgICAgc2VsZi5yZXNl
dCgpCi0gICAgICAgICAgICAgICAgaWYgc2l6ZSA+PSAwIGFuZCBsZW4oZGF0YSkgPT0gc2l6ZToK
LSAgICAgICAgICAgICAgICAgICAgIyBkYXRhIGlzIGZpbGxlZC4gRG9uJ3QgY2FsbCBkZWNvbXBy
ZXNzIGFnYWluLgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICAgICAgICAgICMgUmUtaW52b2tlIERlY29tcHJlc3MuZGVjb21wcmVz
cyB0byB0cnkgdG8gZGVjb21wcmVzcyBhbGwKLSAgICAgICAgICAgICAgICAgICAgIyBhdmFpbGFi
bGUgYnl0ZXMgYmVmb3JlIGludm9raW5nIHJlYWQgd2hpY2ggYmxvY2tzIHVudGlsCi0gICAgICAg
ICAgICAgICAgICAgICMgYW55IG5ldyBieXRlIGlzIGF2YWlsYWJsZS4KLSAgICAgICAgICAgICAg
ICAgICAgY29udGludWUKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyBIZXJl
LCBzaW5jZSB1bnVzZWRfZGF0YSBpcyBlbXB0eSwgZXZlbiBpZiB1bmNvbnN1bWVkX3RhaWwgaXMK
LSAgICAgICAgICAgICAgICAjIG5vdCBlbXB0eSwgYnl0ZXMgb2YgcmVxdWVzdGVkIGxlbmd0aCBh
cmUgYWxyZWFkeSBpbiBkYXRhLiBXZQotICAgICAgICAgICAgICAgICMgZG9uJ3QgaGF2ZSB0byAi
Y29udGludWUiIGhlcmUuCi0gICAgICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICBpZiBkYXRh
OgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdEZWNvbXByZXNzZWQgJXInLCBkYXRh
KQotICAgICAgICByZXR1cm4gZGF0YQotCi0gICAgZGVmIGFwcGVuZChzZWxmLCBkYXRhKToKLSAg
ICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdBcHBlbmRlZCAlcicsIGRhdGEpCi0gICAgICAgIHNl
bGYuX3VuY29uc3VtZWQgKz0gZGF0YQotCi0gICAgZGVmIHJlc2V0KHNlbGYpOgotICAgICAgICBz
ZWxmLl9sb2dnZXIuZGVidWcoJ1Jlc2V0JykKLSAgICAgICAgc2VsZi5fZGVjb21wcmVzcyA9IHps
aWIuZGVjb21wcmVzc29iaigtc2VsZi5fd2luZG93X2JpdHMpCi0KLQotIyBDb21wcmVzc2VzL2Rl
Y29tcHJlc3NlcyBnaXZlbiBvY3RldHMgdXNpbmcgdGhlIG1ldGhvZCBpbnRyb2R1Y2VkIGluIFJG
QzE5NzkuCi0KLQotY2xhc3MgX1JGQzE5NzlEZWZsYXRlcihvYmplY3QpOgotICAgICIiIkEgY29t
cHJlc3NvciBjbGFzcyB0aGF0IGFwcGxpZXMgREVGTEFURSB0byBnaXZlbiBieXRlIHNlcXVlbmNl
IGFuZAotICAgIGZsdXNoZXMgdXNpbmcgdGhlIGFsZ29yaXRobSBkZXNjcmliZWQgaW4gdGhlIFJG
QzE5Nzkgc2VjdGlvbiAyLjEuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgd2lu
ZG93X2JpdHMsIG5vX2NvbnRleHRfdGFrZW92ZXIpOgotICAgICAgICBzZWxmLl9kZWZsYXRlciA9
IE5vbmUKLSAgICAgICAgaWYgd2luZG93X2JpdHMgaXMgTm9uZToKLSAgICAgICAgICAgIHdpbmRv
d19iaXRzID0gemxpYi5NQVhfV0JJVFMKLSAgICAgICAgc2VsZi5fd2luZG93X2JpdHMgPSB3aW5k
b3dfYml0cwotICAgICAgICBzZWxmLl9ub19jb250ZXh0X3Rha2VvdmVyID0gbm9fY29udGV4dF90
YWtlb3ZlcgotCi0gICAgZGVmIGZpbHRlcihzZWxmLCBieXRlcywgZW5kPVRydWUsIGJmaW5hbD1G
YWxzZSk6Ci0gICAgICAgIGlmIHNlbGYuX2RlZmxhdGVyIGlzIE5vbmU6Ci0gICAgICAgICAgICBz
ZWxmLl9kZWZsYXRlciA9IF9EZWZsYXRlcihzZWxmLl93aW5kb3dfYml0cykKLQotICAgICAgICBp
ZiBiZmluYWw6Ci0gICAgICAgICAgICByZXN1bHQgPSBzZWxmLl9kZWZsYXRlci5jb21wcmVzc19h
bmRfZmluaXNoKGJ5dGVzKQotICAgICAgICAgICAgIyBBZGQgYSBwYWRkaW5nIGJsb2NrIHdpdGgg
QkZJTkFMID0gMCBhbmQgQlRZUEUgPSAwLgotICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICsg
Y2hyKDApCi0gICAgICAgICAgICBzZWxmLl9kZWZsYXRlciA9IE5vbmUKLSAgICAgICAgICAgIHJl
dHVybiByZXN1bHQKLQotICAgICAgICByZXN1bHQgPSBzZWxmLl9kZWZsYXRlci5jb21wcmVzc19h
bmRfZmx1c2goYnl0ZXMpCi0gICAgICAgIGlmIGVuZDoKLSAgICAgICAgICAgICMgU3RyaXAgbGFz
dCA0IG9jdGV0cyB3aGljaCBpcyBMRU4gYW5kIE5MRU4gZmllbGQgb2YgYQotICAgICAgICAgICAg
IyBub24tY29tcHJlc3NlZCBibG9jayBhZGRlZCBmb3IgWl9TWU5DX0ZMVVNILgotICAgICAgICAg
ICAgcmVzdWx0ID0gcmVzdWx0WzotNF0KLQotICAgICAgICBpZiBzZWxmLl9ub19jb250ZXh0X3Rh
a2VvdmVyIGFuZCBlbmQ6Ci0gICAgICAgICAgICBzZWxmLl9kZWZsYXRlciA9IE5vbmUKLQotICAg
ICAgICByZXR1cm4gcmVzdWx0Ci0KLQotY2xhc3MgX1JGQzE5NzlJbmZsYXRlcihvYmplY3QpOgot
ICAgICIiIkEgZGVjb21wcmVzc29yIGNsYXNzIGEgbGEgUkZDMTk3OS4KLQotICAgIEEgZGVjb21w
cmVzc29yIGNsYXNzIGZvciBieXRlIHNlcXVlbmNlIGNvbXByZXNzZWQgYW5kIGZsdXNoZWQgZm9s
bG93aW5nCi0gICAgdGhlIGFsZ29yaXRobSBkZXNjcmliZWQgaW4gdGhlIFJGQzE5Nzkgc2VjdGlv
biAyLjEuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgd2luZG93X2JpdHM9emxp
Yi5NQVhfV0JJVFMpOgotICAgICAgICBzZWxmLl9pbmZsYXRlciA9IF9JbmZsYXRlcih3aW5kb3df
Yml0cykKLQotICAgIGRlZiBmaWx0ZXIoc2VsZiwgYnl0ZXMpOgotICAgICAgICAjIFJlc3RvcmUg
c3RyaXBwZWQgTEVOIGFuZCBOTEVOIGZpZWxkIG9mIGEgbm9uLWNvbXByZXNzZWQgYmxvY2sgYWRk
ZWQKLSAgICAgICAgIyBmb3IgWl9TWU5DX0ZMVVNILgotICAgICAgICBzZWxmLl9pbmZsYXRlci5h
cHBlbmQoYnl0ZXMgKyAnXHgwMFx4MDBceGZmXHhmZicpCi0gICAgICAgIHJldHVybiBzZWxmLl9p
bmZsYXRlci5kZWNvbXByZXNzKC0xKQotCi0KLWNsYXNzIERlZmxhdGVTb2NrZXQob2JqZWN0KToK
LSAgICAiIiJBIHdyYXBwZXIgY2xhc3MgZm9yIHNvY2tldCBvYmplY3QgdG8gaW50ZXJjZXB0IHNl
bmQgYW5kIHJlY3YgdG8gcGVyZm9ybQotICAgIGRlZmxhdGUgY29tcHJlc3Npb24gYW5kIGRlY29t
cHJlc3Npb24gdHJhbnNwYXJlbnRseS4KLSAgICAiIiIKLQotICAgICMgU2l6ZSBvZiB0aGUgYnVm
ZmVyIHBhc3NlZCB0byByZWN2IHRvIHJlY2VpdmUgY29tcHJlc3NlZCBkYXRhLgotICAgIF9SRUNW
X1NJWkUgPSA0MDk2Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgc29ja2V0KToKLSAgICAgICAg
c2VsZi5fc29ja2V0ID0gc29ja2V0Ci0KLSAgICAgICAgc2VsZi5fbG9nZ2VyID0gZ2V0X2NsYXNz
X2xvZ2dlcihzZWxmKQotCi0gICAgICAgIHNlbGYuX2RlZmxhdGVyID0gX0RlZmxhdGVyKHpsaWIu
TUFYX1dCSVRTKQotICAgICAgICBzZWxmLl9pbmZsYXRlciA9IF9JbmZsYXRlcih6bGliLk1BWF9X
QklUUykKLQotICAgIGRlZiByZWN2KHNlbGYsIHNpemUpOgotICAgICAgICAiIiJSZWNlaXZlcyBk
YXRhIGZyb20gdGhlIHNvY2tldCBzcGVjaWZpZWQgb24gdGhlIGNvbnN0cnVjdGlvbiB1cAotICAg
ICAgICB0byB0aGUgc3BlY2lmaWVkIHNpemUuIE9uY2UgYW55IGRhdGEgaXMgYXZhaWxhYmxlLCBy
ZXR1cm5zIGl0IGV2ZW4KLSAgICAgICAgaWYgaXQncyBzbWFsbGVyIHRoYW4gdGhlIHNwZWNpZmll
ZCBzaXplLgotICAgICAgICAiIiIKLQotICAgICAgICAjIFRPRE8odHlvc2hpbm8pOiBBbGxvdyBj
YWxsIHdpdGggc2l6ZT0wLiBJdCBzaG91bGQgYmxvY2sgdW50aWwgYW55Ci0gICAgICAgICMgZGVj
b21wcmVzc2VkIGRhdGEgaXMgYXZhaWxhYmxlLgotICAgICAgICBpZiBzaXplIDw9IDA6Ci0gICAg
ICAgICAgICByYWlzZSBFeGNlcHRpb24oJ05vbi1wb3NpdGl2ZSBzaXplIHBhc3NlZCcpCi0gICAg
ICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICBkYXRhID0gc2VsZi5faW5mbGF0ZXIuZGVjb21w
cmVzcyhzaXplKQotICAgICAgICAgICAgaWYgbGVuKGRhdGEpICE9IDA6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIGRhdGEKLQotICAgICAgICAgICAgcmVhZF9kYXRhID0gc2VsZi5fc29ja2V0LnJl
Y3YoRGVmbGF0ZVNvY2tldC5fUkVDVl9TSVpFKQotICAgICAgICAgICAgaWYgbm90IHJlYWRfZGF0
YToKLSAgICAgICAgICAgICAgICByZXR1cm4gJycKLSAgICAgICAgICAgIHNlbGYuX2luZmxhdGVy
LmFwcGVuZChyZWFkX2RhdGEpCi0KLSAgICBkZWYgc2VuZGFsbChzZWxmLCBieXRlcyk6Ci0gICAg
ICAgIHNlbGYuc2VuZChieXRlcykKLQotICAgIGRlZiBzZW5kKHNlbGYsIGJ5dGVzKToKLSAgICAg
ICAgc2VsZi5fc29ja2V0LnNlbmRhbGwoc2VsZi5fZGVmbGF0ZXIuY29tcHJlc3NfYW5kX2ZsdXNo
KGJ5dGVzKSkKLSAgICAgICAgcmV0dXJuIGxlbihieXRlcykKLQotCi0jIHZpOnN0cz00IHN3PTQg
ZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L3czYy1pbXBvcnQubG9nIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tl
dC9tb2RfcHl3ZWJzb2NrZXQvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGJjMjNhNWQyOGI3NWJjZDljNGE1ZGUwY2RjOGJkNWQ2NTM3ODU2OWEuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2Nr
ZXQvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1UaGUgdGVz
dHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9y
eS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVh
ZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0
aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3Jp
cHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2Rp
Znkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJl
cXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5n
IHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L21vZF9weXdlYnNvY2tldC9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0
L19zdHJlYW1fYmFzZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L19zdHJlYW1faGl4aWU3NS5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3
ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L19zdHJlYW1faHliaS5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vi
c29ja2V0L2NvbW1vbi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L2Rpc3BhdGNoLnB5Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tl
dC9tb2RfcHl3ZWJzb2NrZXQvZXh0ZW5zaW9ucy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L2Zh
c3RfbWFza2luZy5pCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvaGVhZGVycGFyc2VyaGFuZGxlci5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3
ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L2h0dHBfaGVhZGVyX3V0aWwucHkKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9w
eXdlYnNvY2tldC9tZW1vcml6aW5nZmlsZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L21zZ3V0
aWwucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9tdXgucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tl
dC9zdGFuZGFsb25lLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvc3RyZWFtLnB5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9t
b2RfcHl3ZWJzb2NrZXQvdXRpbC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L3hocl9iZW5jaG1h
cmtfaGFuZGxlci5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQveGhyX2JlbmNo
bWFya19oYW5kbGVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQveGhyX2JlbmNobWFya19oYW5k
bGVyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0M2E1YjA0OTIyMGVlNzkwZWZl
YTUxYmRhNmEzZjk1ZDhkY2YwOTc1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L3hocl9iZW5jaG1hcmtfaGFuZGxlci5w
eQorKysgL2Rldi9udWxsCkBAIC0xLDEyMSArMCwwIEBACi0jIENvcHlyaWdodCAyMDE0IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlCi0jIGxpY2Vuc2UgdGhhdCBjYW4gYmUgZm91bmQg
aW4gdGhlIENPUFlJTkcgZmlsZSBvciBhdAotIyBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNv
bS9vcGVuLXNvdXJjZS9saWNlbnNlcy9ic2QKLQotCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBv
cnQgdXRpbAotCi0KLWNsYXNzIFhIUkJlbmNobWFya0hhbmRsZXIob2JqZWN0KToKLSAgICBkZWYg
X19pbml0X18oc2VsZiwgaGVhZGVycywgcmZpbGUsIHdmaWxlKToKLSAgICAgICAgc2VsZi5fbG9n
Z2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgc2VsZi5oZWFkZXJz
ID0gaGVhZGVycwotICAgICAgICBzZWxmLnJmaWxlID0gcmZpbGUKLSAgICAgICAgc2VsZi53Zmls
ZSA9IHdmaWxlCi0KLSAgICBkZWYgZG9fc2VuZChzZWxmKToKLSAgICAgICAgY29udGVudF9sZW5n
dGggPSBpbnQoc2VsZi5oZWFkZXJzLmdldGhlYWRlcignQ29udGVudC1MZW5ndGgnKSkKLQotICAg
ICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1JlcXVlc3RlZCB0byByZWNlaXZlICVzIGJ5dGVzJywg
Y29udGVudF9sZW5ndGgpCi0KLSAgICAgICAgUkVDRUlWRV9CTE9DS19TSVpFID0gMTAyNCAqIDEw
MjQKLQotICAgICAgICBieXRlc190b19yZWNlaXZlID0gY29udGVudF9sZW5ndGgKLSAgICAgICAg
d2hpbGUgYnl0ZXNfdG9fcmVjZWl2ZSA+IDA6Ci0gICAgICAgICAgICBieXRlc190b19yZWNlaXZl
X2luX3RoaXNfbG9vcCA9IGJ5dGVzX3RvX3JlY2VpdmUKLSAgICAgICAgICAgIGlmIGJ5dGVzX3Rv
X3JlY2VpdmVfaW5fdGhpc19sb29wID4gUkVDRUlWRV9CTE9DS19TSVpFOgotICAgICAgICAgICAg
ICAgIGJ5dGVzX3RvX3JlY2VpdmVfaW5fdGhpc19sb29wID0gUkVDRUlWRV9CTE9DS19TSVpFCi0g
ICAgICAgICAgICByZWNlaXZlZF9kYXRhID0gc2VsZi5yZmlsZS5yZWFkKGJ5dGVzX3RvX3JlY2Vp
dmVfaW5fdGhpc19sb29wKQotICAgICAgICAgICAgaWYgcmVjZWl2ZWRfZGF0YSAhPSAoJ2EnICog
Ynl0ZXNfdG9fcmVjZWl2ZV9pbl90aGlzX2xvb3ApOgotICAgICAgICAgICAgICAgIHNlbGYuX2xv
Z2dlci5kZWJ1ZygnUmVxdWVzdCBib2R5IHZlcmlmaWNhdGlvbiBmYWlsZWQnKQotICAgICAgICAg
ICAgICAgIHJldHVybgotICAgICAgICAgICAgYnl0ZXNfdG9fcmVjZWl2ZSAtPSBsZW4ocmVjZWl2
ZWRfZGF0YSkKLSAgICAgICAgaWYgYnl0ZXNfdG9fcmVjZWl2ZSA8IDA6Ci0gICAgICAgICAgICBz
ZWxmLl9sb2dnZXIuZGVidWcoJ1JlY2VpdmVkICVkIG1vcmUgYnl0ZXMgdGhhbiBleHBlY3RlZCcg
JQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtYnl0ZXNfdG9fcmVjZWl2ZSkpCi0g
ICAgICAgICAgICByZXR1cm4KLQotICAgICAgICAjIFJldHVybiB0aGUgbnVtYmVyIG9mIHJlY2Vp
dmVkIGJ5dGVzIGJhY2sgdG8gdGhlIGNsaWVudC4KLSAgICAgICAgcmVzcG9uc2VfYm9keSA9ICcl
ZCcgJSBjb250ZW50X2xlbmd0aAotICAgICAgICBzZWxmLndmaWxlLndyaXRlKAotICAgICAgICAg
ICAgJ0hUVFAvMS4xIDIwMCBPS1xyXG4nCi0gICAgICAgICAgICAnQWNjZXNzLUNvbnRyb2wtQWxs
b3ctT3JpZ2luOiAqXHJcbicKLSAgICAgICAgICAgICdDb250ZW50LVR5cGU6IHRleHQvaHRtbFxy
XG4nCi0gICAgICAgICAgICAnQ29udGVudC1MZW5ndGg6ICVkXHJcbicKLSAgICAgICAgICAgICdc
clxuJXMnICUgKGxlbihyZXNwb25zZV9ib2R5KSwgcmVzcG9uc2VfYm9keSkpCi0gICAgICAgIHNl
bGYud2ZpbGUuZmx1c2goKQotCi0gICAgZGVmIGRvX3JlY2VpdmVfYW5kX3BhcnNlKHNlbGYpOgot
ICAgICAgICBjb250ZW50X2xlbmd0aCA9IGludChzZWxmLmhlYWRlcnMuZ2V0aGVhZGVyKCdDb250
ZW50LUxlbmd0aCcpKQotICAgICAgICByZXF1ZXN0X2JvZHkgPSBzZWxmLnJmaWxlLnJlYWQoY29u
dGVudF9sZW5ndGgpCi0KLSAgICAgICAgcmVxdWVzdF9hcnJheSA9IHJlcXVlc3RfYm9keS5zcGxp
dCgnICcpCi0gICAgICAgIGlmIGxlbihyZXF1ZXN0X2FycmF5KSA8IDI6Ci0gICAgICAgICAgICBz
ZWxmLl9sb2dnZXIuZGVidWcoJ01hbGZvcm1lZCByZXF1ZXN0IGJvZHk6ICVyJywgcmVxdWVzdF9i
b2R5KQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgIyBQYXJzZSB0aGUgc2l6ZSBwYXJh
bWV0ZXIuCi0gICAgICAgIGJ5dGVzX3RvX3NlbmQgPSByZXF1ZXN0X2FycmF5WzBdCi0gICAgICAg
IHRyeToKLSAgICAgICAgICAgIGJ5dGVzX3RvX3NlbmQgPSBpbnQoYnl0ZXNfdG9fc2VuZCkKLSAg
ICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5k
ZWJ1ZygnTWFsZm9ybWVkIHNpemUgcGFyYW1ldGVyOiAlcicsIGJ5dGVzX3RvX3NlbmQpCi0gICAg
ICAgICAgICByZXR1cm4KLQotICAgICAgICAjIFBhcnNlIHRoZSB0cmFuc2ZlciBlbmNvZGluZyBw
YXJhbWV0ZXIuCi0gICAgICAgIGNodW5rZWRfbW9kZSA9IEZhbHNlCi0gICAgICAgIG1vZGVfcGFy
YW1ldGVyID0gcmVxdWVzdF9hcnJheVsxXQotICAgICAgICBpZiBtb2RlX3BhcmFtZXRlciA9PSAn
Y2h1bmtlZCc6Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1JlcXVlc3RlZCBjaHVu
a2VkIHRyYW5zZmVyIGVuY29kaW5nJykKLSAgICAgICAgICAgIGNodW5rZWRfbW9kZSA9IFRydWUK
LSAgICAgICAgZWxpZiBtb2RlX3BhcmFtZXRlciAhPSAnbm9uZSc6Ci0gICAgICAgICAgICBzZWxm
Ll9sb2dnZXIuZGVidWcoJ0ludmFsaWQgbW9kZSBwYXJhbWV0ZXI6ICVyJywgbW9kZV9wYXJhbWV0
ZXIpCi0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBzZWxmLmRvX3JlY2VpdmUoYnl0ZXNf
dG9fc2VuZCwgY2h1bmtlZF9tb2RlLCBGYWxzZSkKLQotICAgIGRlZiBkb19yZWNlaXZlKHNlbGYs
IGJ5dGVzX3RvX3NlbmQsIGNodW5rZWRfbW9kZSwgZW5hYmxlX2NhY2hlKToKLSAgICAgICAgc2Vs
Zi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAgICAgJ1JlcXVlc3RlZCB0byBzZW5kICVzIGJ5dGVz
IChjaHVua2VkOiAlcywgY2FjaGU6ICVzKScsCi0gICAgICAgICAgICBieXRlc190b19zZW5kLCBj
aHVua2VkX21vZGUsIGVuYWJsZV9jYWNoZSkKLSAgICAgICAgIyBXcml0ZSBhIGhlYWRlcgotICAg
ICAgICByZXNwb25zZV9oZWFkZXIgPSAoCi0gICAgICAgICAgICAnSFRUUC8xLjEgMjAwIE9LXHJc
bicKLSAgICAgICAgICAgICdBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW46ICpcclxuJwotICAg
ICAgICAgICAgJ0NvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXHJcbicpCi0g
ICAgICAgIGlmIGVuYWJsZV9jYWNoZToKLSAgICAgICAgICAgIHJlc3BvbnNlX2hlYWRlciArPSAn
Q2FjaGUtQ29udHJvbDogcHJpdmF0ZSwgbWF4LWFnZT0xMFxyXG4nCi0gICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICByZXNwb25zZV9oZWFkZXIgKz0gXAotICAgICAgICAgICAgICAgICdDYWNoZS1D
b250cm9sOiBuby1jYWNoZSwgbm8tc3RvcmUsIG11c3QtcmV2YWxpZGF0ZVxyXG4nCi0gICAgICAg
IGlmIGNodW5rZWRfbW9kZToKLSAgICAgICAgICAgIHJlc3BvbnNlX2hlYWRlciArPSAnVHJhbnNm
ZXItRW5jb2Rpbmc6IGNodW5rZWRcclxuXHJcbicKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IHJlc3BvbnNlX2hlYWRlciArPSAoCi0gICAgICAgICAgICAgICAgJ0NvbnRlbnQtTGVuZ3RoOiAl
ZFxyXG5cclxuJyAlIGJ5dGVzX3RvX3NlbmQpCi0gICAgICAgIHNlbGYud2ZpbGUud3JpdGUocmVz
cG9uc2VfaGVhZGVyKQotICAgICAgICBzZWxmLndmaWxlLmZsdXNoKCkKLQotICAgICAgICAjIFdy
aXRlIGEgYm9keQotICAgICAgICBTRU5EX0JMT0NLX1NJWkUgPSAxMDI0ICogMTAyNAotCi0gICAg
ICAgIHdoaWxlIGJ5dGVzX3RvX3NlbmQgPiAwOgotICAgICAgICAgICAgYnl0ZXNfdG9fc2VuZF9p
bl90aGlzX2xvb3AgPSBieXRlc190b19zZW5kCi0gICAgICAgICAgICBpZiBieXRlc190b19zZW5k
X2luX3RoaXNfbG9vcCA+IFNFTkRfQkxPQ0tfU0laRToKLSAgICAgICAgICAgICAgICBieXRlc190
b19zZW5kX2luX3RoaXNfbG9vcCA9IFNFTkRfQkxPQ0tfU0laRQotCi0gICAgICAgICAgICBpZiBj
aHVua2VkX21vZGU6Ci0gICAgICAgICAgICAgICAgc2VsZi53ZmlsZS53cml0ZSgnJXhcclxuJyAl
IGJ5dGVzX3RvX3NlbmRfaW5fdGhpc19sb29wKQotICAgICAgICAgICAgc2VsZi53ZmlsZS53cml0
ZSgnYScgKiBieXRlc190b19zZW5kX2luX3RoaXNfbG9vcCkKLSAgICAgICAgICAgIGlmIGNodW5r
ZWRfbW9kZToKLSAgICAgICAgICAgICAgICBzZWxmLndmaWxlLndyaXRlKCdcclxuJykKLSAgICAg
ICAgICAgIHNlbGYud2ZpbGUuZmx1c2goKQotCi0gICAgICAgICAgICBieXRlc190b19zZW5kIC09
IGJ5dGVzX3RvX3NlbmRfaW5fdGhpc19sb29wCi0KLSAgICAgICAgaWYgY2h1bmtlZF9tb2RlOgot
ICAgICAgICAgICAgc2VsZi53ZmlsZS53cml0ZSgnMFxyXG5cclxuJykKLSAgICAgICAgICAgIHNl
bGYud2ZpbGUuZmx1c2goKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zZXR1cC5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc2V0dXAu
cHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzNWQ2YjEwNTg5OWNhMTM0OGQ3ZDZk
NjhiYmUyYmQ0OWU4NWQxMTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC9zZXR1cC5weQorKysgL2Rldi9udWxsCkBAIC0xLDc0ICswLDAgQEAKLSMh
L3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KLSMg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMg
bWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
IyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiU2V0IHVwIHNj
cmlwdCBmb3IgbW9kX3B5d2Vic29ja2V0LgotIiIiCi0KLQotZnJvbSBkaXN0dXRpbHMuY29yZSBp
bXBvcnQgc2V0dXAsIEV4dGVuc2lvbgotaW1wb3J0IHN5cwotCi0KLV9QQUNLQUdFX05BTUUgPSAn
bW9kX3B5d2Vic29ja2V0JwotCi0jIEJ1aWxkIGFuZCB1c2UgYSBDKysgZXh0ZW5zaW9uIGZvciBm
YXN0ZXIgbWFza2luZy4gU1dJRyBpcyByZXF1aXJlZC4KLV9VU0VfRkFTVF9NQVNLSU5HID0gRmFs
c2UKLQotaWYgc3lzLnZlcnNpb24gPCAnMi4zJzoKLSAgICBwcmludCA+PiBzeXMuc3RkZXJyLCAn
JXMgcmVxdWlyZXMgUHl0aG9uIDIuMyBvciBsYXRlci4nICUgX1BBQ0tBR0VfTkFNRQotICAgIHN5
cy5leGl0KDEpCi0KLWlmIF9VU0VfRkFTVF9NQVNLSU5HOgotICAgIHNldHVwKGV4dF9tb2R1bGVz
PVsKLSAgICAgICAgICAgICAgICAgIEV4dGVuc2lvbigKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ21vZF9weXdlYnNvY2tldC9fZmFzdF9tYXNraW5nJywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgWydtb2RfcHl3ZWJzb2NrZXQvZmFzdF9tYXNraW5nLmknXSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3dpZ19vcHRzPVsnLWMrKyddKV0pCi0KLXNldHVwKGF1dGhvcj0nWXV6byBG
dWppc2hpbWEnLAotICAgICAgYXV0aG9yX2VtYWlsPSd5dXpvQGNocm9taXVtLm9yZycsCi0gICAg
ICBkZXNjcmlwdGlvbj0nV2ViU29ja2V0IGV4dGVuc2lvbiBmb3IgQXBhY2hlIEhUVFAgU2VydmVy
LicsCi0gICAgICBsb25nX2Rlc2NyaXB0aW9uPSgKLSAgICAgICAgICAgICAgJ21vZF9weXdlYnNv
Y2tldCBpcyBhbiBBcGFjaGUgSFRUUCBTZXJ2ZXIgZXh0ZW5zaW9uIGZvciAnCi0gICAgICAgICAg
ICAgICd0aGUgV2ViU29ja2V0IFByb3RvY29sIChSRkMgNjQ1NSkuICcKLSAgICAgICAgICAgICAg
J1NlZSBtb2RfcHl3ZWJzb2NrZXQvX19pbml0X18ucHkgZm9yIG1vcmUgZGV0YWlsLicpLAotICAg
ICAgbGljZW5zZT0nU2VlIExJQ0VOU0UnLAotICAgICAgbmFtZT1fUEFDS0FHRV9OQU1FLAotICAg
ICAgcGFja2FnZXM9W19QQUNLQUdFX05BTUUsIF9QQUNLQUdFX05BTUUgKyAnLmhhbmRzaGFrZSdd
LAotICAgICAgdXJsPSdodHRwOi8vY29kZS5nb29nbGUuY29tL3AvcHl3ZWJzb2NrZXQvJywKLSAg
ICAgICMgU2VlIHRoZSBzb3VyY2Ugb2YgZGlzdHV0aWxzLnZlcnNpb24sIGRpc3R1dGlscy52ZXJz
aW9ucHJlZGljYXRlIGFuZAotICAgICAgIyBkaXN0dXRpbHMuZGlzdCB0byB1bmRlcnN0YW5kIGhv
dyB0byBuYW1lIHZlcnNpb24gbnVtYmVycy4KLSAgICAgIHZlcnNpb249JzAuNy45JywKLSAgICAg
ICkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL0NPUFlJTkcg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L3NyYy9DT1BZSU5HCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ODlkMDJl
NGNkMDkyMzc4MDZmN2RmOGJlYWVjYzY5MTUyNzM0MjhlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL0NPUFlJTkcKKysrIC9kZXYvbnVsbApA
QCAtMSwyOCArMCwwIEBACi1Db3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KLUFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0KLVJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotbWV0OgotCi0gICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQotY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotZGlzdHJpYnV0aW9uLgotICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KLXRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0KLVRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKLSJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi1MSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLUEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCi1PV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLVNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLUxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi1U
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0oSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLU9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Ny
Yy9NQU5JRkVTVC5pbiBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL01BTklGRVNULmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAxOTI1Njg4MmM1NmZlYjcyODEyYzk5YzhhODM3OTk3OWU2M2U0YTBjLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL01BTklG
RVNULmluCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1pbmNsdWRlIENPUFlJTkcKLWlu
Y2x1ZGUgTUFOSUZFU1QuaW4KLWluY2x1ZGUgUkVBRE1FCi1yZWN1cnNpdmUtaW5jbHVkZSBleGFt
cGxlICoucHkKLXJlY3Vyc2l2ZS1pbmNsdWRlIG1vZF9weXdlYnNvY2tldCAqLnB5Ci1yZWN1cnNp
dmUtaW5jbHVkZSB0ZXN0ICoucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL1JFQURNRSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
c3JjL1JFQURNRQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzhjNzU4ZjVlZWY0Yzcz
MTg5MjY0MWRlMzMzZTVkNzVkMTBhM2U1Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9SRUFETUUKKysrIC9kZXYvbnVsbApAQCAtMSwxNyAr
MCwwIEBACi1JTlNUQUxMCi0KLVRvIGluc3RhbGwgdGhpcyBwYWNrYWdlIHRvIHRoZSBzeXN0ZW0s
IHJ1biB0aGlzOgotJCBweXRob24gc2V0dXAucHkgYnVpbGQKLSQgc3VkbyBweXRob24gc2V0dXAu
cHkgaW5zdGFsbAotCi1UbyBpbnN0YWxsIHRoaXMgcGFja2FnZSBhcyBhIG5vcm1hbCB1c2VyLCBy
dW4gdGhpcyBpbnN0ZWFkOgotJCBweXRob24gc2V0dXAucHkgYnVpbGQKLSQgcHl0aG9uIHNldHVw
LnB5IGluc3RhbGwgLS11c2VyCi0KLUxBVU5DSAotCi1UbyB1c2UgcHl3ZWJzb2NrZXQgYXMgQXBh
Y2hlIG1vZHVsZSwgcnVuIHRoaXMgdG8gcmVhZCB0aGUgZG9jdW1lbnQ6Ci0kIHB5ZG9jIG1vZF9w
eXdlYnNvY2tldAotCi1UbyB1c2UgcHl3ZWJzb2NrZXQgYXMgc3RhbmRhbG9uZSBzZXJ2ZXIsIHJ1
biB0aGlzIHRvIHJlYWQgdGhlIGRvY3VtZW50OgotJCBweWRvYyBtb2RfcHl3ZWJzb2NrZXQuc3Rh
bmRhbG9uZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS9hYm9ydF9oYW5kc2hha2Vfd3No
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC9zcmMvZXhhbXBsZS9hYm9ydF9oYW5kc2hha2Vfd3NoLnB5CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDgwMjNhMWZlOTFlMmYyOTc3YjE2M2Y5NzdkYWU2ODUwMDA5
YWE0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
c3JjL2V4YW1wbGUvYWJvcnRfaGFuZHNoYWtlX3dzaC5weQorKysgL2Rldi9udWxsCkBAIC0xLDQz
ICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0
cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9y
dCBoYW5kc2hha2UKLQotCi1kZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVz
dCk6Ci0gICAgcmFpc2UgaGFuZHNoYWtlLkFib3J0ZWRCeVVzZXJFeGNlcHRpb24oCi0gICAgICAg
ICJBYm9ydGVkIGluIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlIikKLQotCi1kZWYgd2Vi
X3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgotICAgIHBhc3MKLQotCi0jIHZpOnN0cz00
IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvYWJvcnRfd3NoLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tl
dC9zcmMvZXhhbXBsZS9hYm9ydF93c2gucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDJiYmYwMDVmNmEzN2M2MDllMTZhYmRlNGRmOTQwMjQyNjhkMGRhZWUuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS9hYm9ydF93
c2gucHkKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0jIENvcHlyaWdodCAyMDEyLCBH
b29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
Ci0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQot
Ci1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgaGFuZHNoYWtlCi0KLQotZGVmIHdlYl9zb2Nr
ZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgotICAgIHBhc3MKLQotCi1kZWYgd2ViX3Nv
Y2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgotICAgIHJhaXNlIGhhbmRzaGFrZS5BYm9ydGVk
QnlVc2VyRXhjZXB0aW9uKAotICAgICAgICAiQWJvcnRlZCBpbiB3ZWJfc29ja2V0X3RyYW5zZmVy
X2RhdGEiKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhh
bXBsZS9hcnJheWJ1ZmZlcl9iZW5jaG1hcmsuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvYXJyYXli
dWZmZXJfYmVuY2htYXJrLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2OWNk
N2UxZWU2NTNkNTlmMDRiODAyZmYzNGM4ZDA4MTMxN2NhODkuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS9hcnJheWJ1ZmZlcl9i
ZW5jaG1hcmsuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzNCArMCwwIEBACi08IS0tCi1Db3B5
cmlnaHQgMjAxMywgR29vZ2xlIEluYy4KLUFsbCByaWdodHMgcmVzZXJ2ZWQuCi0KLVJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotbWV0OgotCi0gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotZGlzdHJpYnV0aW9uLgotICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLXRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0KLVRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi1MSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLUEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi1PV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLVNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLUxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi1USEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0oSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLU9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0tLT4KLQotPGh0bWw+Ci08aGVhZD4KLTx0aXRsZT5BcnJheUJ1ZmZl
ciBiZW5jaG1hcms8L3RpdGxlPgotPHNjcmlwdCBzcmM9InV0aWwuanMiPjwvc2NyaXB0PgotPHNj
cmlwdD4KLXZhciBQUklOVF9TSVpFID0gdHJ1ZTsKLQotLy8gSW5pdGlhbCBzaXplIG9mIGFycmF5
cy4KLXZhciBTVEFSVF9TSVpFID0gMTAgKiAxMDI0OwotLy8gU3RvcHMgYmVuY2htYXJrIHdoZW4g
dGhlIHNpemUgb2YgYW4gYXJyYXkgZXhjZWVkcyB0aGlzIHRocmVzaG9sZC4KLXZhciBTVE9QX1RI
UkVTSE9MRCA9IDEwMDAwMCAqIDEwMjQ7Ci0vLyBJZiB0aGUgc2l6ZSBvZiBlYWNoIGFycmF5IGlz
IHNtYWxsLCB3cml0ZS9yZWFkIHRoZSBhcnJheSBtdWx0aXBsZSB0aW1lcwotLy8gdW50aWwgdGhl
IHN1bSBvZiBzaXplcyByZWFjaGVzIHRoaXMgdGhyZXNob2xkLgotdmFyIE1JTl9UT1RBTCA9IDEw
MDAwMCAqIDEwMjQ7Ci12YXIgTVVMVElQTElFUlMgPSBbNSwgMl07Ci0KLS8vIFJlcGVhdCBiZW5j
aG1hcmsgZm9yIHNldmVyYWwgdGltZXMgdG8gbWVhc3VyZSBwZXJmb3JtYW5jZSBvZiBvcHRpbWl6
ZWQKLS8vIChzdWNoIGFzIEpJVCkgcnVuLgotdmFyIFJFUEVBVF9GT1JfV0FSTVVQID0gMzsKLQot
ZnVuY3Rpb24gd3JpdGVCZW5jaG1hcmsoc2l6ZSwgbWluVG90YWwpIHsKLSAgdmFyIHRvdGFsU2l6
ZSA9IDA7Ci0gIHdoaWxlICh0b3RhbFNpemUgPCBtaW5Ub3RhbCkgewotICAgIHZhciBhcnJheUJ1
ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihzaXplKTsKLQotICAgIC8vIFdyaXRlICdhJ3MuCi0gICAg
ZmlsbEFycmF5QnVmZmVyKGFycmF5QnVmZmVyLCAweDYxKTsKLQotICAgIHRvdGFsU2l6ZSArPSBz
aXplOwotICB9Ci0gIHJldHVybiB0b3RhbFNpemU7Ci19Ci0KLWZ1bmN0aW9uIHJlYWRCZW5jaG1h
cmsoc2l6ZSwgbWluVG90YWwpIHsKLSAgdmFyIHRvdGFsU2l6ZSA9IDA7Ci0gIHdoaWxlICh0b3Rh
bFNpemUgPCBtaW5Ub3RhbCkgewotICAgIHZhciBhcnJheUJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZl
cihzaXplKTsKLQotICAgIGlmICghdmVyaWZ5QXJyYXlCdWZmZXIoYXJyYXlCdWZmZXIsIDB4MDAp
KSB7Ci0gICAgICBxdWV1ZUxvZygnVmVyaWZpY2F0aW9uIGZhaWxlZCcpOwotICAgICAgcmV0dXJu
IC0xOwotICAgIH0KLQotICAgIHRvdGFsU2l6ZSArPSBzaXplOwotICB9Ci0gIHJldHVybiB0b3Rh
bFNpemU7Ci19Ci0KLWZ1bmN0aW9uIHJ1bkJlbmNobWFyayhiZW5jaG1hcmtGdW5jdGlvbiwKLSAg
ICAgICAgICAgICAgICAgICAgICBzaXplLAotICAgICAgICAgICAgICAgICAgICAgIHN0b3BUaHJl
c2hvbGQsCi0gICAgICAgICAgICAgICAgICAgICAgbWluVG90YWwsCi0gICAgICAgICAgICAgICAg
ICAgICAgbXVsdGlwbGllcnMsCi0gICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGllckluZGV4
KSB7Ci0gIHdoaWxlIChzaXplIDw9IHN0b3BUaHJlc2hvbGQpIHsKLSAgICB2YXIgbWF4U3BlZWQg
PSAwOwotCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBSRVBFQVRfRk9SX1dBUk1VUDsgKytpKSB7
Ci0gICAgICB2YXIgc3RhcnRUaW1lSW5NcyA9IGdldFRpbWVTdGFtcCgpOwotCi0gICAgICB2YXIg
dG90YWxTaXplID0gYmVuY2htYXJrRnVuY3Rpb24oc2l6ZSwgbWluVG90YWwpOwotCi0gICAgICBt
YXhTcGVlZCA9IE1hdGgubWF4KG1heFNwZWVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICBj
YWxjdWxhdGVTcGVlZEluS0IodG90YWxTaXplLCBzdGFydFRpbWVJbk1zKSk7Ci0gICAgfQotICAg
IHF1ZXVlTG9nKGZvcm1hdFJlc3VsdEluS2lCKHNpemUsIG1heFNwZWVkLCBQUklOVF9TSVpFKSk7
Ci0KLSAgICBzaXplICo9IG11bHRpcGxpZXJzW211bHRpcGxpZXJJbmRleF07Ci0gICAgbXVsdGlw
bGllckluZGV4ID0gKG11bHRpcGxpZXJJbmRleCArIDEpICUgbXVsdGlwbGllcnMubGVuZ3RoOwot
ICB9Ci19Ci0KLWZ1bmN0aW9uIHJ1bkJlbmNobWFya3MoKSB7Ci0gIHF1ZXVlTG9nKCdNZXNzYWdl
IHNpemUgaW4gS2lCLCBTcGVlZCBpbiBrQi9zJyk7Ci0KLSAgcXVldWVMb2coJ1dyaXRlIGJlbmNo
bWFyaycpOwotICBydW5CZW5jaG1hcmsoCi0gICAgICB3cml0ZUJlbmNobWFyaywgU1RBUlRfU0la
RSwgU1RPUF9USFJFU0hPTEQsIE1JTl9UT1RBTCwgTVVMVElQTElFUlMsIDApOwotICBxdWV1ZUxv
ZygnRmluaXNoZWQnKTsKLQotICBxdWV1ZUxvZygnUmVhZCBiZW5jaG1hcmsnKTsKLSAgcnVuQmVu
Y2htYXJrKAotICAgICAgcmVhZEJlbmNobWFyaywgU1RBUlRfU0laRSwgU1RPUF9USFJFU0hPTEQs
IE1JTl9UT1RBTCwgTVVMVElQTElFUlMsIDApOwotICBhZGRUb0xvZygnRmluaXNoZWQnKTsKLX0K
LQotZnVuY3Rpb24gaW5pdCgpIHsKLSAgbG9nQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2xvZycpOwotCi0gIHF1ZXVlTG9nKHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJD
YXNlKCkpOwotCi0gIGFkZFRvTG9nKCdTdGFydGVkLi4uJyk7Ci0KLSAgc2V0VGltZW91dChydW5C
ZW5jaG1hcmtzLCAwKTsKLX0KLQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9Imlu
aXQoKSI+Ci08dGV4dGFyZWEKLSAgICBpZD0ibG9nIiByb3dzPSI1MCIgc3R5bGU9IndpZHRoOiAx
MDAlIiByZWFkb25seT48L3RleHRhcmVhPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNv
Y2tldC9zcmMvZXhhbXBsZS9iZW5jaF93c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2JlbmNoX3dz
aC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTA2N2NhN2Q4OTU1ZmMxNjNkNTAw
MWNkODgxMmU2YWUyMGMxNjI5My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2JlbmNoX3dzaC5weQorKysgL2Rldi9udWxsCkBA
IC0xLDYwICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMK
LSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot
IyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
IyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
Ci0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIkEgc2ltcGxlIGxvYWQgdGVz
dGVyIGZvciBXZWJTb2NrZXQgY2xpZW50cy4KLQotQSBjbGllbnQgcHJvZ3JhbSBzZW5kcyBhIG1l
c3NhZ2UgZm9ybWF0dGVkIGFzICI8dGltZT4gPGNvdW50PiA8bWVzc2FnZT4iIHRvCi10aGlzIGhh
bmRsZXIuIFRoaXMgaGFuZGxlciBzdGFydHMgc2VuZGluZyB0b3RhbCA8Y291bnQ+IFdlYlNvY2tl
dCBtZXNzYWdlcwotY29udGFpbmluZyA8bWVzc2FnZT4gZXZlcnkgPHRpbWU+IHNlY29uZHMuIDx0
aW1lPiBjYW4gYmUgYSBmbG9hdGluZyBwb2ludAotdmFsdWUuIDxjb3VudD4gbXVzdCBiZSBhbiBp
bnRlZ2VyIHZhbHVlLgotIiIiCi0KLQotaW1wb3J0IHRpbWUKLQotCi1kZWYgd2ViX3NvY2tldF9k
b19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6Ci0gICAgcGFzcyAgIyBBbHdheXMgYWNjZXB0Lgot
Ci0KLWRlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6Ci0gICAgbGluZSA9IHJl
cXVlc3Qud3Nfc3RyZWFtLnJlY2VpdmVfbWVzc2FnZSgpCi0gICAgcGFydHMgPSBsaW5lLnNwbGl0
KCcgJykKLSAgICBpZiBsZW4ocGFydHMpICE9IDM6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3Io
J0JhZCBwYXJhbWV0ZXIgZm9ybWF0JykKLSAgICB3YWl0ID0gZmxvYXQocGFydHNbMF0pCi0gICAg
Y291bnQgPSBpbnQocGFydHNbMV0pCi0gICAgbWVzc2FnZSA9IHBhcnRzWzJdCi0gICAgZm9yIGkg
aW4geHJhbmdlKGNvdW50KToKLSAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdl
KG1lc3NhZ2UpCi0gICAgICAgIHRpbWUuc2xlZXAod2FpdCkKLQotCi0jIHZpOnN0cz00IHN3PTQg
ZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvYmVuY2htYXJrLmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Ny
Yy9leGFtcGxlL2JlbmNobWFyay5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAz
YTIxODE3M2EwZjFmMzNhNGVkNDYyZTIxZjg2YzFiOGQ0OGJhNjIwLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvYmVuY2htYXJr
Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMDMgKzAsMCBAQAotPCEtLQotQ29weXJpZ2h0IDIw
MTMsIEdvb2dsZSBJbmMuCi1BbGwgcmlnaHRzIHJlc2VydmVkLgotCi1SZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLW1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLW1ldDoKLQotICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLW5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLWNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
LWluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKLWRpc3RyaWJ1dGlvbi4KLSAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLWNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi10aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotCi1USElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0iQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAotTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCi1BIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi1TUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi1M
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLURBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi1PRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotLS0+Ci0KLTxodG1sPgotPGhlYWQ+Ci08dGl0bGU+V2ViU29ja2V0IGJlbmNobWFy
azwvdGl0bGU+Ci08c2NyaXB0IHNyYz0idXRpbF9tYWluLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSJ1dGlsLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJiZW5jaG1hcmsuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdD4KLXZhciBhZGRyZXNzQm94ID0gbnVsbDsKLQotZnVuY3Rpb24gZ2V0Q29u
ZmlnKCkgewotICByZXR1cm4gewotICAgIHByZWZpeFVybDogYWRkcmVzc0JveC52YWx1ZSwKLSAg
ICBwcmludFNpemU6IGdldEJvb2xGcm9tQ2hlY2tCb3goJ3ByaW50c2l6ZScpLAotICAgIG51bVNv
Y2tldHM6IGdldEludEZyb21JbnB1dCgnbnVtc29ja2V0cycpLAotICAgIC8vIEluaXRpYWwgc2l6
ZSBvZiBtZXNzYWdlcy4KLSAgICBudW1JdGVyYXRpb25zOiBnZXRJbnRGcm9tSW5wdXQoJ251bWl0
ZXJhdGlvbnMnKSwKLSAgICBudW1XYXJtVXBJdGVyYXRpb25zOiBnZXRJbnRGcm9tSW5wdXQoJ251
bXdhcm11cGl0ZXJhdGlvbnMnKSwKLSAgICBzdGFydFNpemU6IGdldEludEZyb21JbnB1dCgnc3Rh
cnRzaXplJyksCi0gICAgLy8gU3RvcHMgYmVuY2htYXJrIHdoZW4gdGhlIHNpemUgb2YgbWVzc2Fn
ZSBleGNlZWRzIHRoaXMgdGhyZXNob2xkLgotICAgIHN0b3BUaHJlc2hvbGQ6IGdldEludEZyb21J
bnB1dCgnc3RvcHRocmVzaG9sZCcpLAotICAgIC8vIElmIHRoZSBzaXplIG9mIGVhY2ggbWVzc2Fn
ZSBpcyBzbWFsbCwgc2VuZC9yZWNlaXZlIG11bHRpcGxlIG1lc3NhZ2VzCi0gICAgLy8gdW50aWwg
dGhlIHN1bSBvZiBzaXplcyByZWFjaGVzIHRoaXMgdGhyZXNob2xkLgotICAgIG1pblRvdGFsOiBn
ZXRJbnRGcm9tSW5wdXQoJ21pbnRvdGFsJyksCi0gICAgbXVsdGlwbGllcnM6IGdldEludEFycmF5
RnJvbUlucHV0KCdtdWx0aXBsaWVycycpLAotICAgIHZlcmlmeURhdGE6IGdldEJvb2xGcm9tQ2hl
Y2tCb3goJ3ZlcmlmeWRhdGEnKQotICB9OwotfQotCi12YXIgd29ya2VyID0gbmV3IFdvcmtlcign
YmVuY2htYXJrLmpzJyk7Ci13b3JrZXIub25tZXNzYWdlID0gb25NZXNzYWdlOwotCi1mdW5jdGlv
biBvblNlbmRCZW5jaG1hcmsoKSB7Ci0gIHZhciBjb25maWcgPSBnZXRDb25maWcoKTsKLQotICBp
ZiAoZ2V0Qm9vbEZyb21DaGVja0JveCgnd29ya2VyJykpIHsKLSAgICB3b3JrZXIucG9zdE1lc3Nh
Z2Uoe3R5cGU6ICdzZW5kQmVuY2htYXJrJywgY29uZmlnOiBjb25maWd9KTsKLSAgfSBlbHNlIHsK
LSAgICBjb25maWcuYWRkVG9Mb2cgPSBhZGRUb0xvZzsKLSAgICBjb25maWcuYWRkVG9TdW1tYXJ5
ID0gYWRkVG9TdW1tYXJ5OwotICAgIGNvbmZpZy5tZWFzdXJlVmFsdWUgPSBtZWFzdXJlVmFsdWU7
Ci0gICAgc2VuZEJlbmNobWFyayhjb25maWcpOwotICB9Ci19Ci0KLWZ1bmN0aW9uIG9uUmVjZWl2
ZUJlbmNobWFyaygpIHsKLSAgdmFyIGNvbmZpZyA9IGdldENvbmZpZygpOwotCi0gIGlmIChnZXRC
b29sRnJvbUNoZWNrQm94KCd3b3JrZXInKSkgewotICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7dHlw
ZTogJ3JlY2VpdmVCZW5jaG1hcmsnLCBjb25maWc6IGNvbmZpZ30pOwotICB9IGVsc2UgewotICAg
IGNvbmZpZy5hZGRUb0xvZyA9IGFkZFRvTG9nOwotICAgIGNvbmZpZy5hZGRUb1N1bW1hcnkgPSBh
ZGRUb1N1bW1hcnk7Ci0gICAgY29uZmlnLm1lYXN1cmVWYWx1ZSA9IG1lYXN1cmVWYWx1ZTsKLSAg
ICByZWNlaXZlQmVuY2htYXJrKGNvbmZpZyk7Ci0gIH0KLX0KLQotZnVuY3Rpb24gb25CYXRjaEJl
bmNobWFyaygpIHsKLSAgdmFyIGNvbmZpZyA9IGdldENvbmZpZygpOwotCi0gIGlmIChnZXRCb29s
RnJvbUNoZWNrQm94KCd3b3JrZXInKSkgewotICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7dHlwZTog
J2JhdGNoQmVuY2htYXJrJywgY29uZmlnOiBjb25maWd9KTsKLSAgfSBlbHNlIHsKLSAgICBjb25m
aWcuYWRkVG9Mb2cgPSBhZGRUb0xvZzsKLSAgICBjb25maWcuYWRkVG9TdW1tYXJ5ID0gYWRkVG9T
dW1tYXJ5OwotICAgIGNvbmZpZy5tZWFzdXJlVmFsdWUgPSBtZWFzdXJlVmFsdWU7Ci0gICAgYmF0
Y2hCZW5jaG1hcmsoY29uZmlnKTsKLSAgfQotfQotCi1mdW5jdGlvbiBvblN0b3AoKSB7Ci0gIHZh
ciBjb25maWcgPSBnZXRDb25maWcoKTsKLQotICBpZiAoZ2V0Qm9vbEZyb21DaGVja0JveCgnd29y
a2VyJykpIHsKLSAgICB3b3JrZXIucG9zdE1lc3NhZ2Uoe3R5cGU6ICdzdG9wJywgY29uZmlnOiBj
b25maWd9KTsKLSAgfSBlbHNlIHsKLSAgICBjb25maWcuYWRkVG9Mb2cgPSBhZGRUb0xvZzsKLSAg
ICBjb25maWcuYWRkVG9TdW1tYXJ5ID0gYWRkVG9TdW1tYXJ5OwotICAgIGNvbmZpZy5tZWFzdXJl
VmFsdWUgPSBtZWFzdXJlVmFsdWU7Ci0gICAgc3RvcChjb25maWcpOwotICB9Ci19Ci1mdW5jdGlv
biBpbml0KCkgewotICBhZGRyZXNzQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FkZHJl
c3MnKTsKLSAgbG9nQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZycpOwotCi0gIHN1
bW1hcnlCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3VtbWFyeScpOwotCi0gIHZhciBz
Y2hlbWUgPSB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgPT0gJ2h0dHBzOicgPyAnd3NzOi8vJyA6
ICd3czovLyc7Ci0gIHZhciBkZWZhdWx0QWRkcmVzcyA9IHNjaGVtZSArIHdpbmRvdy5sb2NhdGlv
bi5ob3N0ICsgJy9iZW5jaG1hcmtfaGVscGVyJzsKLQotICBhZGRyZXNzQm94LnZhbHVlID0gZGVm
YXVsdEFkZHJlc3M7Ci0KLSAgYWRkVG9Mb2cod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9M
b3dlckNhc2UoKSk7Ci0gIGFkZFRvU3VtbWFyeSh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC50
b0xvd2VyQ2FzZSgpKTsKLQotICBpZiAoISgnV2ViU29ja2V0JyBpbiB3aW5kb3cpKSB7Ci0gICAg
YWRkVG9Mb2coJ1dlYlNvY2tldCBpcyBub3QgYXZhaWxhYmxlJyk7Ci0gIH0KLX0KLTwvc2NyaXB0
PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJpbml0KCkiPgotCi08ZGl2IGlkPSJiZW5jaG1hcmtf
ZGl2Ij4KLSAgdXJsIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iYWRkcmVzcyIgc2l6ZT0iNDAiPgot
ICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0ic2VuZCIgb25jbGljaz0ib25TZW5kQmVuY2ht
YXJrKCkiPgotICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0icmVjZWl2ZSIgb25jbGljaz0i
b25SZWNlaXZlQmVuY2htYXJrKCkiPgotICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0iYmF0
Y2giIG9uY2xpY2s9Im9uQmF0Y2hCZW5jaG1hcmsoKSI+Ci0gIDxpbnB1dCB0eXBlPSJidXR0b24i
IHZhbHVlPSJzdG9wIiBvbmNsaWNrPSJvblN0b3AoKSI+Ci0KLSAgPGJyLz4KLQotICA8aW5wdXQg
dHlwZT0iY2hlY2tib3giIGlkPSJwcmludHNpemUiIGNoZWNrZWQ+Ci0gIDxsYWJlbCBmb3I9InBy
aW50c2l6ZSI+UHJpbnQgc2l6ZSBhbmQgdGltZSBwZXIgbWVzc2FnZTwvbGFiZWw+Ci0gIDxpbnB1
dCB0eXBlPSJjaGVja2JveCIgaWQ9InZlcmlmeWRhdGEiIGNoZWNrZWQ+Ci0gIDxsYWJlbCBmb3I9
InZlcmlmeWRhdGEiPlZlcmlmeSBkYXRhPC9sYWJlbD4KLSAgPGlucHV0IHR5cGU9ImNoZWNrYm94
IiBpZD0id29ya2VyIj4KLSAgPGxhYmVsIGZvcj0id29ya2VyIj5SdW4gb24gd29ya2VyPC9sYWJl
bD4KLQotICA8YnIvPgotCi0gIFBhcmFtZXRlcnM6Ci0KLSAgPGJyLz4KLQotICA8dGFibGU+Ci0g
ICAgPHRyPgotICAgICAgPHRkPk51bSBzb2NrZXRzPC90ZD4KLSAgICAgIDx0ZD48aW5wdXQgdHlw
ZT0idGV4dCIgaWQ9Im51bXNvY2tldHMiIHZhbHVlPSIxIj48L3RkPgotICAgIDwvdHI+Ci0gICAg
PHRyPgotICAgICAgPHRkPk51bWJlciBvZiBpdGVyYXRpb25zPC90ZD4KLSAgICAgIDx0ZD48aW5w
dXQgdHlwZT0idGV4dCIgaWQ9Im51bWl0ZXJhdGlvbnMiIHZhbHVlPSIxIj48L3RkPgotICAgIDwv
dHI+Ci0gICAgPHRyPgotICAgICAgPHRkPk51bWJlciBvZiB3YXJtLXVwIGl0ZXJhdGlvbnM8L3Rk
PgotICAgICAgPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ibnVtd2FybXVwaXRlcmF0aW9ucyIg
dmFsdWU9IjAiPjwvdGQ+Ci0gICAgPC90cj4KLSAgICA8dHI+Ci0gICAgICA8dGQ+U3RhcnQgc2l6
ZTwvdGQ+Ci0gICAgICA8dGQ+PGlucHV0IHR5cGU9InRleHQiIGlkPSJzdGFydHNpemUiIHZhbHVl
PSIxMDI0MCI+PC90ZD4KLSAgICA8L3RyPgotICAgIDx0cj4KLSAgICAgIDx0ZD5TdG9wIHRocmVz
aG9sZDwvdGQ+Ci0gICAgICA8dGQ+PGlucHV0IHR5cGU9InRleHQiIGlkPSJzdG9wdGhyZXNob2xk
IiB2YWx1ZT0iMTAyNDAwMDAwIj48L3RkPgotICAgIDwvdHI+Ci0gICAgPHRyPgotICAgICAgPHRk
Pk1pbmltdW0gdG90YWw8L3RkPgotICAgICAgPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ibWlu
dG90YWwiIHZhbHVlPSIxMDI0MDAwMDAiPjwvdGQ+Ci0gICAgPC90cj4KLSAgICA8dHI+Ci0gICAg
ICA8dGQ+TXVsdGlwbGllcnM8L3RkPgotICAgICAgPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0i
bXVsdGlwbGllcnMiIHZhbHVlPSI1LCAyIj48L3RkPgotICAgIDwvdHI+Ci0gIDwvdGFibGU+Ci08
L2Rpdj4KLQotPGRpdiBpZD0ibG9nX2RpdiI+Ci0gIDx0ZXh0YXJlYQotICAgICAgaWQ9ImxvZyIg
cm93cz0iMjAiIHN0eWxlPSJ3aWR0aDogMTAwJSIgcmVhZG9ubHk+PC90ZXh0YXJlYT4KLTwvZGl2
PgotPGRpdiBpZD0ic3VtbWFyeV9kaXYiPgotICBTdW1tYXJ5Ci0gIDx0ZXh0YXJlYQotICAgICAg
aWQ9InN1bW1hcnkiIHJvd3M9IjIwIiBzdHlsZT0id2lkdGg6IDEwMCUiIHJlYWRvbmx5PjwvdGV4
dGFyZWE+Ci08L2Rpdj4KLQotTm90ZTogRWZmZWN0IG9mIFJUVCBpcyBub3QgZWxpbWluYXRlZC4K
LQotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS9iZW5jaG1h
cmsuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2JlbmNobWFyay5qcwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZDM0N2FlOWUxM2RlMmYwNWRhMDg1YzQ5MjExZjU0YzBiNjg1MmFmMS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFt
cGxlL2JlbmNobWFyay5qcworKysgL2Rldi9udWxsCkBAIC0xLDMwOSArMCwwIEBACi0vLyBDb3B5
cmlnaHQgMjAxNCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlCi0vLyBsaWNlbnNl
IHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBDT1BZSU5HIGZpbGUgb3IgYXQKLS8vIGh0dHBzOi8v
ZGV2ZWxvcGVycy5nb29nbGUuY29tL29wZW4tc291cmNlL2xpY2Vuc2VzL2JzZAotCi1pZiAodHlw
ZW9mIGltcG9ydFNjcmlwdHMgIT09ICJ1bmRlZmluZWQiKSB7Ci0gIC8vIFJ1bm5pbmcgb24gYSB3
b3JrZXIKLSAgaW1wb3J0U2NyaXB0cygndXRpbC5qcycsICd1dGlsX3dvcmtlci5qcycpOwotfQot
Ci0vLyBOYW1lc3BhY2UgZm9yIGhvbGRpbmcgZ2xvYmFscy4KLXZhciBiZW5jaG1hcmsgPSB7c3Rh
cnRUaW1lSW5NczogMH07Ci0KLXZhciBzb2NrZXRzID0gW107Ci12YXIgbnVtRXN0YWJsaXNoZWRT
b2NrZXRzID0gMDsKLQotdmFyIHRpbWVySUQgPSBudWxsOwotCi1mdW5jdGlvbiBkZXN0cm95U29j
a2V0KHNvY2tldCkgewotICBzb2NrZXQub25vcGVuID0gbnVsbDsKLSAgc29ja2V0Lm9ubWVzc2Fn
ZSA9IG51bGw7Ci0gIHNvY2tldC5vbmVycm9yID0gbnVsbDsKLSAgc29ja2V0Lm9uY2xvc2UgPSBu
dWxsOwotICBzb2NrZXQuY2xvc2UoKTsKLX0KLQotZnVuY3Rpb24gZGVzdHJveUFsbFNvY2tldHMo
KSB7Ci0gIGZvciAodmFyIGkgPSAwOyBpIDwgc29ja2V0cy5sZW5ndGg7ICsraSkgewotICAgIGRl
c3Ryb3lTb2NrZXQoc29ja2V0c1tpXSk7Ci0gIH0KLSAgc29ja2V0cyA9IFtdOwotfQotCi1mdW5j
dGlvbiBzZW5kQmVuY2htYXJrU3RlcChzaXplLCBjb25maWcpIHsKLSAgdGltZXJJRCA9IG51bGw7
Ci0KLSAgdmFyIHRvdGFsU2l6ZSA9IDA7Ci0gIHZhciB0b3RhbFJlcGxpZWQgPSAwOwotCi0gIHZh
ciBvbk1lc3NhZ2VIYW5kbGVyID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICBpZiAoIXZlcmlmeUFj
a25vd2xlZGdlbWVudChjb25maWcsIGV2ZW50LmRhdGEsIHNpemUpKSB7Ci0gICAgICBkZXN0cm95
QWxsU29ja2V0cygpOwotICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHRvdGFsUmVwbGllZCAr
PSBzaXplOwotCi0gICAgaWYgKHRvdGFsUmVwbGllZCA8IHRvdGFsU2l6ZSkgewotICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGNhbGN1bGF0ZUFuZExvZ1Jlc3VsdChjb25maWcsIHNpemUsIGJl
bmNobWFyay5zdGFydFRpbWVJbk1zLCB0b3RhbFNpemUpOwotCi0gICAgcnVuTmV4dFRhc2soY29u
ZmlnKTsKLSAgfTsKLQotICBmb3IgKHZhciBpID0gMDsgaSA8IHNvY2tldHMubGVuZ3RoOyArK2kp
IHsKLSAgICB2YXIgc29ja2V0ID0gc29ja2V0c1tpXTsKLSAgICBzb2NrZXQub25tZXNzYWdlID0g
b25NZXNzYWdlSGFuZGxlcjsKLSAgfQotCi0gIHZhciBkYXRhQXJyYXkgPSBbXTsKLQotICB3aGls
ZSAodG90YWxTaXplIDwgY29uZmlnLm1pblRvdGFsKSB7Ci0gICAgdmFyIGJ1ZmZlciA9IG5ldyBB
cnJheUJ1ZmZlcihzaXplKTsKLQotICAgIGZpbGxBcnJheUJ1ZmZlcihidWZmZXIsIDB4NjEpOwot
Ci0gICAgZGF0YUFycmF5LnB1c2goYnVmZmVyKTsKLSAgICB0b3RhbFNpemUgKz0gc2l6ZTsKLSAg
fQotCi0gIGJlbmNobWFyay5zdGFydFRpbWVJbk1zID0gZ2V0VGltZVN0YW1wKCk7Ci0KLSAgdG90
YWxTaXplID0gMDsKLQotICB2YXIgc29ja2V0SW5kZXggPSAwOwotICB2YXIgZGF0YUluZGV4ID0g
MDsKLSAgd2hpbGUgKHRvdGFsU2l6ZSA8IGNvbmZpZy5taW5Ub3RhbCkgewotICAgIHZhciBjb21t
YW5kID0gWydzZW5kJ107Ci0gICAgY29tbWFuZC5wdXNoKGNvbmZpZy52ZXJpZnlEYXRhID8gJzEn
IDogJzAnKTsKLSAgICBzb2NrZXRzW3NvY2tldEluZGV4XS5zZW5kKGNvbW1hbmQuam9pbignICcp
KTsKLSAgICBzb2NrZXRzW3NvY2tldEluZGV4XS5zZW5kKGRhdGFBcnJheVtkYXRhSW5kZXhdKTsK
LSAgICBzb2NrZXRJbmRleCA9IChzb2NrZXRJbmRleCArIDEpICUgc29ja2V0cy5sZW5ndGg7Ci0K
LSAgICB0b3RhbFNpemUgKz0gc2l6ZTsKLSAgICArK2RhdGFJbmRleDsKLSAgfQotfQotCi1mdW5j
dGlvbiByZWNlaXZlQmVuY2htYXJrU3RlcChzaXplLCBjb25maWcpIHsKLSAgdGltZXJJRCA9IG51
bGw7Ci0KLSAgdmFyIHRvdGFsU2l6ZSA9IDA7Ci0gIHZhciB0b3RhbFJlcGxpZWQgPSAwOwotCi0g
IHZhciBvbk1lc3NhZ2VIYW5kbGVyID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICB2YXIgYnl0ZXNS
ZWNlaXZlZCA9IGV2ZW50LmRhdGEuYnl0ZUxlbmd0aDsKLSAgICBpZiAoYnl0ZXNSZWNlaXZlZCAh
PSBzaXplKSB7Ci0gICAgICBjb25maWcuYWRkVG9Mb2coJ0V4cGVjdGVkICcgKyBzaXplICsgJ0Ig
YnV0IHJlY2VpdmVkICcgKwotICAgICAgICAgIGJ5dGVzUmVjZWl2ZWQgKyAnQicpOwotICAgICAg
ZGVzdHJveUFsbFNvY2tldHMoKTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoY29u
ZmlnLnZlcmlmeURhdGEgJiYgIXZlcmlmeUFycmF5QnVmZmVyKGV2ZW50LmRhdGEsIDB4NjEpKSB7
Ci0gICAgICBjb25maWcuYWRkVG9Mb2coJ1Jlc3BvbnNlIHZlcmlmaWNhdGlvbiBmYWlsZWQnKTsK
LSAgICAgIGRlc3Ryb3lBbGxTb2NrZXRzKCk7Ci0gICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
dG90YWxSZXBsaWVkICs9IGJ5dGVzUmVjZWl2ZWQ7Ci0KLSAgICBpZiAodG90YWxSZXBsaWVkIDwg
dG90YWxTaXplKSB7Ci0gICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY2FsY3VsYXRlQW5kTG9n
UmVzdWx0KGNvbmZpZywgc2l6ZSwgYmVuY2htYXJrLnN0YXJ0VGltZUluTXMsIHRvdGFsU2l6ZSk7
Ci0KLSAgICBydW5OZXh0VGFzayhjb25maWcpOwotICB9OwotCi0gIGZvciAodmFyIGkgPSAwOyBp
IDwgc29ja2V0cy5sZW5ndGg7ICsraSkgewotICAgIHZhciBzb2NrZXQgPSBzb2NrZXRzW2ldOwot
ICAgIHNvY2tldC5iaW5hcnlUeXBlID0gJ2FycmF5YnVmZmVyJzsKLSAgICBzb2NrZXQub25tZXNz
YWdlID0gb25NZXNzYWdlSGFuZGxlcjsKLSAgfQotCi0gIGJlbmNobWFyay5zdGFydFRpbWVJbk1z
ID0gZ2V0VGltZVN0YW1wKCk7Ci0KLSAgdmFyIHNvY2tldEluZGV4ID0gMDsKLSAgd2hpbGUgKHRv
dGFsU2l6ZSA8IGNvbmZpZy5taW5Ub3RhbCkgewotICAgIHNvY2tldHNbc29ja2V0SW5kZXhdLnNl
bmQoJ3JlY2VpdmUgJyArIHNpemUpOwotICAgIHNvY2tldEluZGV4ID0gKHNvY2tldEluZGV4ICsg
MSkgJSBzb2NrZXRzLmxlbmd0aDsKLQotICAgIHRvdGFsU2l6ZSArPSBzaXplOwotICB9Ci19Ci0K
LWZ1bmN0aW9uIGNyZWF0ZVNvY2tldChjb25maWcpIHsKLSAgLy8gVE9ETyh0eW9zaGlubyk6IEFk
ZCBUQ1Agd2FybSB1cC4KLSAgdmFyIHVybCA9IGNvbmZpZy5wcmVmaXhVcmw7Ci0KLSAgY29uZmln
LmFkZFRvTG9nKCdDb25uZWN0ICcgKyB1cmwpOwotCi0gIHZhciBzb2NrZXQgPSBuZXcgV2ViU29j
a2V0KHVybCk7Ci0gIHNvY2tldC5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkgewotICAgIGNv
bmZpZy5hZGRUb0xvZygnVW5leHBlY3RlZCBtZXNzYWdlIHJlY2VpdmVkLiBBYm9ydGluZy4nKTsK
LSAgfTsKLSAgc29ja2V0Lm9uZXJyb3IgPSBmdW5jdGlvbigpIHsKLSAgICBjb25maWcuYWRkVG9M
b2coJ0Vycm9yJyk7Ci0gIH07Ci0gIHNvY2tldC5vbmNsb3NlID0gZnVuY3Rpb24oZXZlbnQpIHsK
LSAgICBjb25maWcuYWRkVG9Mb2coJ0Nsb3NlZCcpOwotICB9OwotICByZXR1cm4gc29ja2V0Owot
fQotCi12YXIgdGFza3MgPSBbXTsKLQotZnVuY3Rpb24gc3RhcnRCZW5jaG1hcmsoY29uZmlnKSB7
Ci0gIGNsZWFyVGltZW91dCh0aW1lcklEKTsKLSAgZGVzdHJveUFsbFNvY2tldHMoKTsKLQotICBu
dW1Fc3RhYmxpc2hlZFNvY2tldHMgPSAwOwotCi0gIGZvciAodmFyIGkgPSAwOyBpIDwgY29uZmln
Lm51bVNvY2tldHM7ICsraSkgewotICAgIHZhciBzb2NrZXQgPSBjcmVhdGVTb2NrZXQoY29uZmln
KTsKLSAgICBzb2NrZXQub25vcGVuID0gZnVuY3Rpb24oKSB7Ci0gICAgICBjb25maWcuYWRkVG9M
b2coJ09wZW5lZCcpOwotCi0gICAgICArK251bUVzdGFibGlzaGVkU29ja2V0czsKLQotICAgICAg
aWYgKG51bUVzdGFibGlzaGVkU29ja2V0cyA9PSBzb2NrZXRzLmxlbmd0aCkgewotICAgICAgICBy
dW5OZXh0VGFzayhjb25maWcpOwotICAgICAgfQotICAgIH07Ci0gICAgc29ja2V0cy5wdXNoKHNv
Y2tldCk7Ci0gIH0KLX0KLQotZnVuY3Rpb24gcnVuTmV4dFRhc2soY29uZmlnKSB7Ci0gIHZhciB0
YXNrID0gdGFza3Muc2hpZnQoKTsKLSAgaWYgKHRhc2sgPT0gdW5kZWZpbmVkKSB7Ci0gICAgY29u
ZmlnLmFkZFRvTG9nKCdGaW5pc2hlZCcpOwotICAgIGRlc3Ryb3lBbGxTb2NrZXRzKCk7Ci0gICAg
cmV0dXJuOwotICB9Ci0gIHRpbWVySUQgPSBzZXRUaW1lb3V0KHRhc2ssIDApOwotfQotCi1mdW5j
dGlvbiBidWlsZExlZ2VuZFN0cmluZyhjb25maWcpIHsKLSAgdmFyIGxlZ2VuZCA9ICcnCi0gIGlm
IChjb25maWcucHJpbnRTaXplKQotICAgIGxlZ2VuZCA9ICdNZXNzYWdlIHNpemUgaW4gS2lCLCBU
aW1lL21lc3NhZ2UgaW4gbXMsICc7Ci0gIGxlZ2VuZCArPSAnU3BlZWQgaW4ga0Ivcyc7Ci0gIHJl
dHVybiBsZWdlbmQ7Ci19Ci0KLWZ1bmN0aW9uIGdldENvbmZpZ1N0cmluZyhjb25maWcpIHsKLSAg
cmV0dXJuICcoV2ViU29ja2V0JyArCi0gICAgJywgJyArICh0eXBlb2YgaW1wb3J0U2NyaXB0cyAh
PT0gInVuZGVmaW5lZCIgPyAnV29ya2VyJyA6ICdNYWluJykgKwotICAgICcsIG51bVNvY2tldHM9
JyArIGNvbmZpZy5udW1Tb2NrZXRzICsKLSAgICAnLCBudW1JdGVyYXRpb25zPScgKyBjb25maWcu
bnVtSXRlcmF0aW9ucyArCi0gICAgJywgdmVyaWZ5RGF0YT0nICsgY29uZmlnLnZlcmlmeURhdGEg
KwotICAgICcsIG1pblRvdGFsPScgKyBjb25maWcubWluVG90YWwgKwotICAgICcsIG51bVdhcm1V
cEl0ZXJhdGlvbnM9JyArIGNvbmZpZy5udW1XYXJtVXBJdGVyYXRpb25zICsKLSAgICAnKSc7Ci19
Ci0KLWZ1bmN0aW9uIGFkZFRhc2tzKGNvbmZpZywgc3RlcEZ1bmMpIHsKLSAgZm9yICh2YXIgaSA9
IDA7Ci0gICAgICBpIDwgY29uZmlnLm51bVdhcm1VcEl0ZXJhdGlvbnMgKyBjb25maWcubnVtSXRl
cmF0aW9uczsgKytpKSB7Ci0gICAgLy8gSWdub3JlIHRoZSBmaXJzdCB8Y29uZmlnLm51bVdhcm1V
cEl0ZXJhdGlvbnN8IGl0ZXJhdGlvbnMuCi0gICAgaWYgKGkgPT0gY29uZmlnLm51bVdhcm1VcEl0
ZXJhdGlvbnMpCi0gICAgICBhZGRSZXN1bHRDbGVhcmluZ1Rhc2soY29uZmlnKTsKLQotICAgIHZh
ciBtdWx0aXBsaWVySW5kZXggPSAwOwotICAgIGZvciAodmFyIHNpemUgPSBjb25maWcuc3RhcnRT
aXplOwotICAgICAgICAgc2l6ZSA8PSBjb25maWcuc3RvcFRocmVzaG9sZDsKLSAgICAgICAgICsr
bXVsdGlwbGllckluZGV4KSB7Ci0gICAgICB2YXIgdGFzayA9IHN0ZXBGdW5jLmJpbmQoCi0gICAg
ICAgICAgbnVsbCwKLSAgICAgICAgICBzaXplLAotICAgICAgICAgIGNvbmZpZyk7Ci0gICAgICB0
YXNrcy5wdXNoKHRhc2spOwotICAgICAgc2l6ZSAqPSBjb25maWcubXVsdGlwbGllcnNbCi0gICAg
ICAgICAgbXVsdGlwbGllckluZGV4ICUgY29uZmlnLm11bHRpcGxpZXJzLmxlbmd0aF07Ci0gICAg
fQotICB9Ci19Ci0KLWZ1bmN0aW9uIGFkZFJlc3VsdFJlcG9ydGluZ1Rhc2soY29uZmlnLCB0aXRs
ZSkgewotICB0YXNrcy5wdXNoKGZ1bmN0aW9uKCl7Ci0gICAgICB0aW1lcklEID0gbnVsbDsKLSAg
ICAgIGNvbmZpZy5hZGRUb1N1bW1hcnkodGl0bGUpOwotICAgICAgcmVwb3J0QXZlcmFnZURhdGEo
Y29uZmlnKTsKLSAgICAgIGNsZWFyQXZlcmFnZURhdGEoKTsKLSAgICAgIHJ1bk5leHRUYXNrKGNv
bmZpZyk7Ci0gIH0pOwotfQotCi1mdW5jdGlvbiBhZGRSZXN1bHRDbGVhcmluZ1Rhc2soY29uZmln
KSB7Ci0gIHRhc2tzLnB1c2goZnVuY3Rpb24oKXsKLSAgICAgIHRpbWVySUQgPSBudWxsOwotICAg
ICAgY2xlYXJBdmVyYWdlRGF0YSgpOwotICAgICAgcnVuTmV4dFRhc2soY29uZmlnKTsKLSAgfSk7
Ci19Ci0KLWZ1bmN0aW9uIHNlbmRCZW5jaG1hcmsoY29uZmlnKSB7Ci0gIGNvbmZpZy5hZGRUb0xv
ZygnU2VuZCBiZW5jaG1hcmsnKTsKLSAgY29uZmlnLmFkZFRvTG9nKGJ1aWxkTGVnZW5kU3RyaW5n
KGNvbmZpZykpOwotCi0gIHRhc2tzID0gW107Ci0gIGNsZWFyQXZlcmFnZURhdGEoKTsKLSAgYWRk
VGFza3MoY29uZmlnLCBzZW5kQmVuY2htYXJrU3RlcCk7Ci0gIGFkZFJlc3VsdFJlcG9ydGluZ1Rh
c2soY29uZmlnLCAnU2VuZCBCZW5jaG1hcmsgJyArIGdldENvbmZpZ1N0cmluZyhjb25maWcpKTsK
LSAgc3RhcnRCZW5jaG1hcmsoY29uZmlnKTsKLX0KLQotZnVuY3Rpb24gcmVjZWl2ZUJlbmNobWFy
ayhjb25maWcpIHsKLSAgY29uZmlnLmFkZFRvTG9nKCdSZWNlaXZlIGJlbmNobWFyaycpOwotICBj
b25maWcuYWRkVG9Mb2coYnVpbGRMZWdlbmRTdHJpbmcoY29uZmlnKSk7Ci0KLSAgdGFza3MgPSBb
XTsKLSAgY2xlYXJBdmVyYWdlRGF0YSgpOwotICBhZGRUYXNrcyhjb25maWcsIHJlY2VpdmVCZW5j
aG1hcmtTdGVwKTsKLSAgYWRkUmVzdWx0UmVwb3J0aW5nVGFzayhjb25maWcsCi0gICAgICAnUmVj
ZWl2ZSBCZW5jaG1hcmsgJyArIGdldENvbmZpZ1N0cmluZyhjb25maWcpKTsKLSAgc3RhcnRCZW5j
aG1hcmsoY29uZmlnKTsKLX0KLQotZnVuY3Rpb24gYmF0Y2hCZW5jaG1hcmsoY29uZmlnKSB7Ci0g
IGNvbmZpZy5hZGRUb0xvZygnQmF0Y2ggYmVuY2htYXJrJyk7Ci0gIGNvbmZpZy5hZGRUb0xvZyhi
dWlsZExlZ2VuZFN0cmluZyhjb25maWcpKTsKLQotICB0YXNrcyA9IFtdOwotICBjbGVhckF2ZXJh
Z2VEYXRhKCk7Ci0gIGFkZFRhc2tzKGNvbmZpZywgc2VuZEJlbmNobWFya1N0ZXApOwotICBhZGRS
ZXN1bHRSZXBvcnRpbmdUYXNrKGNvbmZpZywgJ1NlbmQgQmVuY2htYXJrICcgKyBnZXRDb25maWdT
dHJpbmcoY29uZmlnKSk7Ci0gIGFkZFRhc2tzKGNvbmZpZywgcmVjZWl2ZUJlbmNobWFya1N0ZXAp
OwotICBhZGRSZXN1bHRSZXBvcnRpbmdUYXNrKGNvbmZpZywgJ1JlY2VpdmUgQmVuY2htYXJrICcg
KwotICAgICAgZ2V0Q29uZmlnU3RyaW5nKGNvbmZpZykpOwotICBzdGFydEJlbmNobWFyayhjb25m
aWcpOwotfQotCi1mdW5jdGlvbiBzdG9wKGNvbmZpZykgewotICBjbGVhclRpbWVvdXQodGltZXJJ
RCk7Ci0gIHRpbWVySUQgPSBudWxsOwotICBjb25maWcuYWRkVG9Mb2coJ1N0b3BwZWQnKTsKLSAg
ZGVzdHJveUFsbFNvY2tldHMoKTsKLX0KLQotb25tZXNzYWdlID0gZnVuY3Rpb24gKG1lc3NhZ2Up
IHsKLSAgdmFyIGNvbmZpZyA9IG1lc3NhZ2UuZGF0YS5jb25maWc7Ci0gIGNvbmZpZy5hZGRUb0xv
ZyA9IHdvcmtlckFkZFRvTG9nOwotICBjb25maWcuYWRkVG9TdW1tYXJ5ID0gd29ya2VyQWRkVG9T
dW1tYXJ5OwotICBjb25maWcubWVhc3VyZVZhbHVlID0gd29ya2VyTWVhc3VyZVZhbHVlOwotICBp
ZiAobWVzc2FnZS5kYXRhLnR5cGUgPT09ICdzZW5kQmVuY2htYXJrJykKLSAgICBzZW5kQmVuY2ht
YXJrKGNvbmZpZyk7Ci0gIGVsc2UgaWYgKG1lc3NhZ2UuZGF0YS50eXBlID09PSAncmVjZWl2ZUJl
bmNobWFyaycpCi0gICAgcmVjZWl2ZUJlbmNobWFyayhjb25maWcpOwotICBlbHNlIGlmIChtZXNz
YWdlLmRhdGEudHlwZSA9PT0gJ2JhdGNoQmVuY2htYXJrJykKLSAgICBiYXRjaEJlbmNobWFyayhj
b25maWcpOwotICBlbHNlIGlmIChtZXNzYWdlLmRhdGEudHlwZSA9PT0gJ3N0b3AnKQotICAgIHN0
b3AoY29uZmlnKTsKLX07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2JlbmNobWFya19o
ZWxwZXJfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS9iZW5jaG1hcmtfaGVscGVyX3dzaC5weQpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDRhZDBiZmVlZmM2ZjQ0MzA1NzFiN2I1MzIz
M2ZiNzk1MDYxNGNmMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L3NyYy9leGFtcGxlL2JlbmNobWFya19oZWxwZXJfd3NoLnB5CisrKyAvZGV2L251
bGwKQEAgLTEsODUgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAxMywgR29vZ2xlIEluYy4KLSMgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0
OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiSGFuZGxlciBmb3Ig
YmVuY2htYXJrLmh0bWwuIiIiCi0KLQotZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtl
KHJlcXVlc3QpOgotICAgICMgVHVybiBvZmYgY29tcHJlc3Npb24uCi0gICAgcmVxdWVzdC53c19l
eHRlbnNpb25fcHJvY2Vzc29ycyA9IFtdCi0KLQotZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0
YShyZXF1ZXN0KToKLSAgICBkYXRhID0gJycKLQotICAgIHdoaWxlIFRydWU6Ci0gICAgICAgIGNv
bW1hbmQgPSByZXF1ZXN0LndzX3N0cmVhbS5yZWNlaXZlX21lc3NhZ2UoKQotICAgICAgICBpZiBj
b21tYW5kIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBpZiBub3QgaXNp
bnN0YW5jZShjb21tYW5kLCB1bmljb2RlKToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3Io
J0ludmFsaWQgY29tbWFuZCBkYXRhOicgKyBjb21tYW5kKQotICAgICAgICBjb21tYW5kcyA9IGNv
bW1hbmQuc3BsaXQoJyAnKQotICAgICAgICBpZiBsZW4oY29tbWFuZHMpID09IDA6Ci0gICAgICAg
ICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIGNvbW1hbmQgZGF0YTogJyArIGNvbW1hbmQp
Ci0KLSAgICAgICAgaWYgY29tbWFuZHNbMF0gPT0gJ3JlY2VpdmUnOgotICAgICAgICAgICAgaWYg
bGVuKGNvbW1hbmRzKSAhPSAyOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0g
ICAgICAgICAgICAgICAgICAgICAgICAnSWxsZWdhbCBudW1iZXIgb2YgYXJndW1lbnRzIGZvciBz
ZW5kIGNvbW1hbmQnICsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQpCi0gICAgICAg
ICAgICBzaXplID0gaW50KGNvbW1hbmRzWzFdKQotCi0gICAgICAgICAgICAjIFJldXNlIGRhdGEg
aWYgcG9zc2libGUuCi0gICAgICAgICAgICBpZiBsZW4oZGF0YSkgIT0gc2l6ZToKLSAgICAgICAg
ICAgICAgICBkYXRhID0gJ2EnICogc2l6ZQotICAgICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0u
c2VuZF9tZXNzYWdlKGRhdGEsIGJpbmFyeT1UcnVlKQotICAgICAgICBlbGlmIGNvbW1hbmRzWzBd
ID09ICdzZW5kJzoKLSAgICAgICAgICAgIGlmIGxlbihjb21tYW5kcykgIT0gMjoKLSAgICAgICAg
ICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAotICAgICAgICAgICAgICAgICAgICAgICAgJ0lsbGVn
YWwgbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgcmVjZWl2ZSBjb21tYW5kJyArCi0gICAgICAgICAg
ICAgICAgICAgICAgICBjb21tYW5kKQotICAgICAgICAgICAgdmVyaWZ5X2RhdGEgPSBjb21tYW5k
c1sxXSA9PSAnMScKLQotICAgICAgICAgICAgZGF0YSA9IHJlcXVlc3Qud3Nfc3RyZWFtLnJlY2Vp
dmVfbWVzc2FnZSgpCi0gICAgICAgICAgICBpZiBkYXRhIGlzIE5vbmU6Ci0gICAgICAgICAgICAg
ICAgcmFpc2UgVmFsdWVFcnJvcignUGF5bG9hZCBub3QgcmVjZWl2ZWQnKQotICAgICAgICAgICAg
c2l6ZSA9IGxlbihkYXRhKQotCi0gICAgICAgICAgICBpZiB2ZXJpZnlfZGF0YToKLSAgICAgICAg
ICAgICAgICBpZiBkYXRhICE9ICdhJyAqIHNpemU6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNl
IFZhbHVlRXJyb3IoJ1BheWxvYWQgdmVyaWZpY2F0aW9uIGZhaWxlZCcpCi0KLSAgICAgICAgICAg
IHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRfbWVzc2FnZShzdHIoc2l6ZSkpCi0gICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIGNvbW1hbmQ6ICcgKyBjb21t
YW5kc1swXSkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4
YW1wbGUvY2xvc2Vfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS9jbG9zZV93c2gucHkKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2YjA4Mzg0MDgxMjQ1Mzk3OTc2NTdkNDBkNjQyNzhm
MWE2NDgxYzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNv
Y2tldC9zcmMvZXhhbXBsZS9jbG9zZV93c2gucHkKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCww
IEBACi0jIENvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVk
LgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0
aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
LSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
Ci0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IHN0cnVjdAotCi1mcm9tIG1vZF9weXdlYnNv
Y2tldCBpbXBvcnQgY29tbW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgc3RyZWFtCi0K
LQotZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgotICAgIHBhc3MK
LQotCi1kZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgotICAgIHdoaWxlIFRy
dWU6Ci0gICAgICAgIGxpbmUgPSByZXF1ZXN0LndzX3N0cmVhbS5yZWNlaXZlX21lc3NhZ2UoKQot
ICAgICAgICBpZiBsaW5lIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgY29k
ZSwgcmVhc29uID0gbGluZS5zcGxpdCgnICcsIDEpCi0gICAgICAgIGlmIGNvZGUgaXMgTm9uZSBv
ciByZWFzb24gaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICByZXF1ZXN0Lndz
X3N0cmVhbS5jbG9zZV9jb25uZWN0aW9uKGludChjb2RlKSwgcmVhc29uKQotICAgICAgICAjIGNs
b3NlX2Nvbm5lY3Rpb24oKSBpbml0aWF0ZXMgY2xvc2luZyBoYW5kc2hha2UuIEl0IHZhbGlkYXRl
cyBjb2RlCi0gICAgICAgICMgYW5kIHJlYXNvbi4gSWYgeW91IHdhbnQgdG8gc2VuZCBhIGJyb2tl
biBjbG9zZSBmcmFtZSBmb3IgYSB0ZXN0LAotICAgICAgICAjIGZvbGxvd2luZyBjb2RlIHdpbGwg
YmUgdXNlZnVsLgotICAgICAgICAjID4gZGF0YSA9IHN0cnVjdC5wYWNrKCchSCcsIGludChjb2Rl
KSkgKyByZWFzb24uZW5jb2RlKCdVVEYtOCcpCi0gICAgICAgICMgPiByZXF1ZXN0LmNvbm5lY3Rp
b24ud3JpdGUoc3RyZWFtLmNyZWF0ZV9jbG9zZV9mcmFtZShkYXRhKSkKLSAgICAgICAgIyA+ICMg
U3VwcHJlc3MgdG8gcmUtcmVzcG9uZCBjbGllbnQgcmVzcG9uZGluZyBjbG9zZSBmcmFtZS4KLSAg
ICAgICAgIyA+IHJhaXNlIEV4Y2VwdGlvbigiY3VzdG9taXplZCBzZXJ2ZXIgaW5pdGlhdGVkIGNs
b3NpbmcgaGFuZHNoYWtlIikKLQotCi1kZWYgd2ViX3NvY2tldF9wYXNzaXZlX2Nsb3NpbmdfaGFu
ZHNoYWtlKHJlcXVlc3QpOgotICAgICMgU2ltcGx5IGVjaG8gYSBjbG9zZSBzdGF0dXMgY29kZQot
ICAgIGNvZGUsIHJlYXNvbiA9IHJlcXVlc3Qud3NfY2xvc2VfY29kZSwgcmVxdWVzdC53c19jbG9z
ZV9yZWFzb24KLQotICAgICMgcHl3ZWJzb2NrZXQgc2V0cyBwc2V1ZG8gY29kZSBmb3IgcmVjZWl2
aW5nIGFuIGVtcHR5IGJvZHkgY2xvc2UgZnJhbWUuCi0gICAgaWYgY29kZSA9PSBjb21tb24uU1RB
VFVTX05PX1NUQVRVU19SRUNFSVZFRDoKLSAgICAgICAgY29kZSA9IE5vbmUKLSAgICAgICAgcmVh
c29uID0gJycKLSAgICByZXR1cm4gY29kZSwgcmVhc29uCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2NvbnNvbGUuaHRtbCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4
YW1wbGUvY29uc29sZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjY2Q2ZDhm
ODA2NzZiOTk5MWUyMmRmYzdlYzg1MDgzNDExZGRkMGIzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvY29uc29sZS5odG1sCisr
KyAvZGV2L251bGwKQEAgLTEsMzE3ICswLDAgQEAKLTwhLS0KLUNvcHlyaWdodCAyMDExLCBHb29n
bGUgSW5jLgotQWxsIHJpZ2h0cyByZXNlcnZlZC4KLQotUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci1tb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
Ci1tZXQ6Ci0KLSAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci1ub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi1jb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi1pbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi1k
aXN0cmlidXRpb24uCi0gICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCi1jb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLQotVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLUxJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLU9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi1EQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLVRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLShJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LS0tPgotCi08IS0tCi1BIHNpbXBsZSBjb25zb2xlIGZvciB0ZXN0aW5nIFdlYlNvY2tldCBzZXJ2
ZXIuCi0KLVR5cGUgYW4gYWRkcmVzcyBpbnRvIHRoZSB0b3AgdGV4dCBpbnB1dCBhbmQgY2xpY2sg
Y29ubmVjdCB0byBlc3RhYmxpc2gKLVdlYlNvY2tldC4gVGhlbiwgdHlwZSBzb21lIG1lc3NhZ2Ug
aW50byB0aGUgYm90dG9tIHRleHQgaW5wdXQgYW5kIGNsaWNrIHNlbmQKLXRvIHNlbmQgdGhlIG1l
c3NhZ2UuIFJlY2VpdmVkL3NlbnQgbWVzc2FnZXMgYW5kIGNvbm5lY3Rpb24gc3RhdGUgd2lsbCBi
ZSBzaG93bgotb24gdGhlIG1pZGRsZSB0ZXh0YXJlYS4KLS0tPgotCi08aHRtbD4KLTxoZWFkPgot
PHRpdGxlPldlYlNvY2tldCBjb25zb2xlPC90aXRsZT4KLTxzY3JpcHQ+Ci12YXIgc29ja2V0ID0g
bnVsbDsKLQotdmFyIHNob3dUaW1lU3RhbXAgPSBmYWxzZTsKLQotdmFyIGFkZHJlc3NCb3ggPSBu
dWxsOwotdmFyIHByb3RvY29sc0JveCA9IG51bGw7Ci12YXIgbG9nQm94ID0gbnVsbDsKLXZhciBt
ZXNzYWdlQm94ID0gbnVsbDsKLXZhciBmaWxlQm94ID0gbnVsbDsKLXZhciBjb2RlQm94ID0gbnVs
bDsKLXZhciByZWFzb25Cb3ggPSBudWxsOwotCi1mdW5jdGlvbiBnZXRUaW1lU3RhbXAoKSB7Ci0g
IHJldHVybiBuZXcgRGF0ZSgpLmdldFRpbWUoKTsKLX0KLQotZnVuY3Rpb24gYWRkVG9Mb2cobG9n
KSB7Ci0gIGlmIChzaG93VGltZVN0YW1wKSB7Ci0gICAgbG9nQm94LnZhbHVlICs9ICdbJyArIGdl
dFRpbWVTdGFtcCgpICsgJ10gJzsKLSAgfQotICBsb2dCb3gudmFsdWUgKz0gbG9nICsgJ1xuJwot
ICAvLyBMYXJnZSBlbm91Z2ggdG8ga2VlcCBzaG93aW5nIHRoZSBsYXRlc3QgbWVzc2FnZS4KLSAg
bG9nQm94LnNjcm9sbFRvcCA9IDEwMDAwMDA7Ci19Ci0KLWZ1bmN0aW9uIHNldGJpbmFyeXR5cGUo
YmluYXJ5VHlwZSkgewotICBpZiAoIXNvY2tldCkgewotICAgIGFkZFRvTG9nKCdOb3QgY29ubmVj
dGVkJyk7Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAgc29ja2V0LmJpbmFyeVR5cGUgPSBiaW5hcnlU
eXBlOwotICBhZGRUb0xvZygnU2V0IGJpbmFyeVR5cGUgdG8gJyArIGJpbmFyeVR5cGUpOwotfQot
Ci1mdW5jdGlvbiBzZW5kKCkgewotICBpZiAoIXNvY2tldCkgewotICAgIGFkZFRvTG9nKCdOb3Qg
Y29ubmVjdGVkJyk7Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAgc29ja2V0LnNlbmQobWVzc2FnZUJv
eC52YWx1ZSk7Ci0gIGFkZFRvTG9nKCc+ICcgKyBtZXNzYWdlQm94LnZhbHVlKTsKLSAgbWVzc2Fn
ZUJveC52YWx1ZSA9ICcnOwotfQotCi1mdW5jdGlvbiBzZW5kZmlsZSgpIHsKLSAgaWYgKCFzb2Nr
ZXQpIHsKLSAgICBhZGRUb0xvZygnTm90IGNvbm5lY3RlZCcpOwotICAgIHJldHVybjsKLSAgfQot
Ci0gIHZhciBmaWxlcyA9IGZpbGVCb3guZmlsZXM7Ci0KLSAgaWYgKGZpbGVzLmxlbmd0aCA9PSAw
KSB7Ci0gICAgYWRkVG9Mb2coJ0ZpbGUgbm90IHNlbGVjdGVkJyk7Ci0gICAgcmV0dXJuOwotICB9
Ci0KLSAgc29ja2V0LnNlbmQoZmlsZXNbMF0pOwotICBhZGRUb0xvZygnPiBTZW5kICcgKyBmaWxl
c1swXS5uYW1lKTsKLX0KLQotZnVuY3Rpb24gcGFyc2VQcm90b2NvbHMocHJvdG9jb2xzVGV4dCkg
ewotICB2YXIgcHJvdG9jb2xzID0gcHJvdG9jb2xzVGV4dC5zcGxpdCgnLCcpOwotICBmb3IgKHZh
ciBpID0gMDsgaSA8IHByb3RvY29scy5sZW5ndGg7ICsraSkgewotICAgIHByb3RvY29sc1tpXSA9
IHByb3RvY29sc1tpXS50cmltKCk7Ci0gIH0KLQotICBpZiAocHJvdG9jb2xzLmxlbmd0aCA9PSAw
KSB7Ci0gICAgLy8gRG9uJ3QgcGFzcy4KLSAgICBwcm90b2NvbHMgPSBudWxsOwotICB9IGVsc2Ug
aWYgKHByb3RvY29scy5sZW5ndGggPT0gMSkgewotICAgIGlmIChwcm90b2NvbHNbMF0ubGVuZ3Ro
ID09IDApIHsKLSAgICAgIC8vIERvbid0IHBhc3MuCi0gICAgICBwcm90b2NvbHMgPSBudWxsOwot
ICAgIH0gZWxzZSB7Ci0gICAgICAvLyBQYXNzIGFzIGEgc3RyaW5nLgotICAgICAgcHJvdG9jb2xz
ID0gcHJvdG9jb2xzWzBdOwotICAgIH0KLSAgfQotCi0gIHJldHVybiBwcm90b2NvbHM7Ci19Ci0K
LWZ1bmN0aW9uIGNvbm5lY3QoKSB7Ci0gIHZhciB1cmwgPSBhZGRyZXNzQm94LnZhbHVlOwotICB2
YXIgcHJvdG9jb2xzID0gcGFyc2VQcm90b2NvbHMocHJvdG9jb2xzQm94LnZhbHVlKTsKLQotICBp
ZiAoJ1dlYlNvY2tldCcgaW4gd2luZG93KSB7Ci0gICAgaWYgKHByb3RvY29scykgewotICAgICAg
c29ja2V0ID0gbmV3IFdlYlNvY2tldCh1cmwsIHByb3RvY29scyk7Ci0gICAgfSBlbHNlIHsKLSAg
ICAgIHNvY2tldCA9IG5ldyBXZWJTb2NrZXQodXJsKTsKLSAgICB9Ci0gIH0gZWxzZSB7Ci0gICAg
cmV0dXJuOwotICB9Ci0KLSAgc29ja2V0Lm9ub3BlbiA9IGZ1bmN0aW9uICgpIHsKLSAgICB2YXIg
ZXh0cmFJbmZvID0gW107Ci0gICAgaWYgKCgncHJvdG9jb2wnIGluIHNvY2tldCkgJiYgc29ja2V0
LnByb3RvY29sKSB7Ci0gICAgICBleHRyYUluZm8ucHVzaCgncHJvdG9jb2wgPSAnICsgc29ja2V0
LnByb3RvY29sKTsKLSAgICB9Ci0gICAgaWYgKCgnZXh0ZW5zaW9ucycgaW4gc29ja2V0KSAmJiBz
b2NrZXQuZXh0ZW5zaW9ucykgewotICAgICAgZXh0cmFJbmZvLnB1c2goJ2V4dGVuc2lvbnMgPSAn
ICsgc29ja2V0LmV4dGVuc2lvbnMpOwotICAgIH0KLQotICAgIHZhciBsb2dNZXNzYWdlID0gJ09w
ZW5lZCc7Ci0gICAgaWYgKGV4dHJhSW5mby5sZW5ndGggPiAwKSB7Ci0gICAgICBsb2dNZXNzYWdl
ICs9ICcgKCcgKyBleHRyYUluZm8uam9pbignLCAnKSArICcpJzsKLSAgICB9Ci0gICAgYWRkVG9M
b2cobG9nTWVzc2FnZSk7Ci0gIH07Ci0gIHNvY2tldC5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZXZl
bnQpIHsKLSAgICBpZiAoKCdBcnJheUJ1ZmZlcicgaW4gd2luZG93KSAmJiAoZXZlbnQuZGF0YSBp
bnN0YW5jZW9mIEFycmF5QnVmZmVyKSkgewotICAgICAgYWRkVG9Mb2coJzwgUmVjZWl2ZWQgYW4g
QXJyYXlCdWZmZXIgb2YgJyArIGV2ZW50LmRhdGEuYnl0ZUxlbmd0aCArCi0gICAgICAgICAgICAg
ICAnIGJ5dGVzJykKLSAgICB9IGVsc2UgaWYgKCgnQmxvYicgaW4gd2luZG93KSAmJiAoZXZlbnQu
ZGF0YSBpbnN0YW5jZW9mIEJsb2IpKSB7Ci0gICAgICBhZGRUb0xvZygnPCBSZWNlaXZlZCBhIEJs
b2Igb2YgJyArIGV2ZW50LmRhdGEuc2l6ZSArICcgYnl0ZXMnKQotICAgIH0gZWxzZSB7Ci0gICAg
ICBhZGRUb0xvZygnPCAnICsgZXZlbnQuZGF0YSk7Ci0gICAgfQotICB9OwotICBzb2NrZXQub25l
cnJvciA9IGZ1bmN0aW9uICgpIHsKLSAgICBhZGRUb0xvZygnRXJyb3InKTsKLSAgfTsKLSAgc29j
a2V0Lm9uY2xvc2UgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICB2YXIgbG9nTWVzc2FnZSA9ICdD
bG9zZWQgKCc7Ci0gICAgaWYgKChhcmd1bWVudHMubGVuZ3RoID09IDEpICYmICgnQ2xvc2VFdmVu
dCcgaW4gd2luZG93KSAmJgotICAgICAgICAoZXZlbnQgaW5zdGFuY2VvZiBDbG9zZUV2ZW50KSkg
ewotICAgICAgbG9nTWVzc2FnZSArPSAnd2FzQ2xlYW4gPSAnICsgZXZlbnQud2FzQ2xlYW47Ci0g
ICAgICAvLyBjb2RlIGFuZCByZWFzb24gYXJlIHByZXNlbnQgb25seSBmb3IKLSAgICAgIC8vIGRy
YWZ0LWlldGYtaHliaS10aGV3ZWJzb2NrZXRwcm90b2NvbC0wNiBhbmQgbGF0ZXIKLSAgICAgIGlm
ICgnY29kZScgaW4gZXZlbnQpIHsKLSAgICAgICAgbG9nTWVzc2FnZSArPSAnLCBjb2RlID0gJyAr
IGV2ZW50LmNvZGU7Ci0gICAgICB9Ci0gICAgICBpZiAoJ3JlYXNvbicgaW4gZXZlbnQpIHsKLSAg
ICAgICAgbG9nTWVzc2FnZSArPSAnLCByZWFzb24gPSAnICsgZXZlbnQucmVhc29uOwotICAgICAg
fQotICAgIH0gZWxzZSB7Ci0gICAgICBsb2dNZXNzYWdlICs9ICdDbG9zZUV2ZW50IGlzIG5vdCBh
dmFpbGFibGUnOwotICAgIH0KLSAgICBhZGRUb0xvZyhsb2dNZXNzYWdlICsgJyknKTsKLSAgfTsK
LQotICBpZiAocHJvdG9jb2xzKSB7Ci0gICAgYWRkVG9Mb2coJ0Nvbm5lY3QgJyArIHVybCArICcg
KHByb3RvY29scyA9ICcgKyBwcm90b2NvbHMgKyAnKScpOwotICB9IGVsc2UgewotICAgIGFkZFRv
TG9nKCdDb25uZWN0ICcgKyB1cmwpOwotICB9Ci19Ci0KLWZ1bmN0aW9uIGNsb3NlU29ja2V0KCkg
ewotICBpZiAoIXNvY2tldCkgewotICAgIGFkZFRvTG9nKCdOb3QgY29ubmVjdGVkJyk7Ci0gICAg
cmV0dXJuOwotICB9Ci0KLSAgaWYgKGNvZGVCb3gudmFsdWUgfHwgcmVhc29uQm94LnZhbHVlKSB7
Ci0gICAgc29ja2V0LmNsb3NlKGNvZGVCb3gudmFsdWUsIHJlYXNvbkJveC52YWx1ZSk7Ci0gIH0g
ZWxzZSB7Ci0gICAgc29ja2V0LmNsb3NlKCk7Ci0gIH0KLX0KLQotZnVuY3Rpb24gcHJpbnRTdGF0
ZSgpIHsKLSAgaWYgKCFzb2NrZXQpIHsKLSAgICBhZGRUb0xvZygnTm90IGNvbm5lY3RlZCcpOwot
ICAgIHJldHVybjsKLSAgfQotCi0gIGFkZFRvTG9nKAotICAgICAgJ3VybCA9ICcgKyBzb2NrZXQu
dXJsICsKLSAgICAgICcsIHJlYWR5U3RhdGUgPSAnICsgc29ja2V0LnJlYWR5U3RhdGUgKwotICAg
ICAgJywgYnVmZmVyZWRBbW91bnQgPSAnICsgc29ja2V0LmJ1ZmZlcmVkQW1vdW50KTsKLX0KLQot
ZnVuY3Rpb24gaW5pdCgpIHsKLSAgdmFyIHNjaGVtZSA9IHdpbmRvdy5sb2NhdGlvbi5wcm90b2Nv
bCA9PSAnaHR0cHM6JyA/ICd3c3M6Ly8nIDogJ3dzOi8vJzsKLSAgdmFyIGRlZmF1bHRBZGRyZXNz
ID0gc2NoZW1lICsgd2luZG93LmxvY2F0aW9uLmhvc3QgKyAnL2VjaG8nOwotCi0gIGFkZHJlc3NC
b3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWRkcmVzcycpOwotICBwcm90b2NvbHNCb3gg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHJvdG9jb2xzJyk7Ci0gIGxvZ0JveCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdsb2cnKTsKLSAgbWVzc2FnZUJveCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdtZXNzYWdlJyk7Ci0gIGZpbGVCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnZmlsZScpOwotICBjb2RlQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvZGUnKTsK
LSAgcmVhc29uQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JlYXNvbicpOwotCi0gIGFk
ZHJlc3NCb3gudmFsdWUgPSBkZWZhdWx0QWRkcmVzczsKLQotICBpZiAoISgnV2ViU29ja2V0JyBp
biB3aW5kb3cpKSB7Ci0gICAgYWRkVG9Mb2coJ1dlYlNvY2tldCBpcyBub3QgYXZhaWxhYmxlJyk7
Ci0gIH0KLX0KLTwvc2NyaXB0PgotPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KLWZvcm0gewotICBt
YXJnaW46IDBweDsKLX0KLQotI2Nvbm5lY3RfZGl2LCAjbG9nX2RpdiwgI3NlbmRfZGl2LCAjc2Vu
ZGZpbGVfZGl2LCAjY2xvc2VfZGl2LCAjcHJpbnRzdGF0ZV9kaXYgewotICBwYWRkaW5nOiA1cHg7
Ci0gIG1hcmdpbjogNXB4OwotICBib3JkZXItd2lkdGg6IDBweCAwcHggMHB4IDEwcHg7Ci0gIGJv
cmRlci1zdHlsZTogc29saWQ7Ci0gIGJvcmRlci1jb2xvcjogc2lsdmVyOwotfQotPC9zdHlsZT4K
LTwvaGVhZD4KLTxib2R5IG9ubG9hZD0iaW5pdCgpIj4KLQotPGRpdj4KLQotPGRpdiBpZD0iY29u
bmVjdF9kaXYiPgotICA8Zm9ybSBhY3Rpb249IiMiIG9uc3VibWl0PSJjb25uZWN0KCk7IHJldHVy
biBmYWxzZTsiPgotICAgIHVybCA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImFkZHJlc3MiIHNpemU9
IjQwIj4KLSAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iY29ubmVjdCI+Ci0gICAgPGJy
Lz4KLSAgICBwcm90b2NvbHMgPGlucHV0IHR5cGU9InRleHQiIGlkPSJwcm90b2NvbHMiIHNpemU9
IjIwIj4KLSAgPC9mb3JtPgotPC9kaXY+Ci0KLTxkaXYgaWQ9ImxvZ19kaXYiPgotICA8dGV4dGFy
ZWEgaWQ9ImxvZyIgcm93cz0iMTAiIGNvbHM9IjQwIiByZWFkb25seT48L3RleHRhcmVhPgotICA8
YnIvPgotICA8aW5wdXQgdHlwZT0iY2hlY2tib3giCi0gICAgICAgICBuYW1lPSJzaG93dGltZXN0
YW1wIgotICAgICAgICAgdmFsdWU9InNob3d0aW1lc3RhbXAiCi0gICAgICAgICBvbmNsaWNrPSJz
aG93VGltZVN0YW1wID0gdGhpcy5jaGVja2VkIj5TaG93IHRpbWUgc3RhbXAKLTwvZGl2PgotCi08
ZGl2IGlkPSJzZW5kX2RpdiI+Ci0gIDxmb3JtIGFjdGlvbj0iIyIgb25zdWJtaXQ9InNlbmQoKTsg
cmV0dXJuIGZhbHNlOyI+Ci0gICAgZGF0YSA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9Im1lc3NhZ2Ui
IHNpemU9IjQwIj4KLSAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0ic2VuZCI+Ci0gIDwv
Zm9ybT4KLTwvZGl2PgotCi08ZGl2IGlkPSJzZW5kZmlsZV9kaXYiPgotICA8Zm9ybSBhY3Rpb249
IiMiIG9uc3VibWl0PSJzZW5kZmlsZSgpOyByZXR1cm4gZmFsc2U7Ij4KLSAgICA8aW5wdXQgdHlw
ZT0iZmlsZSIgaWQ9ImZpbGUiIHNpemU9IjQwIj4KLSAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiB2
YWx1ZT0ic2VuZCBmaWxlIj4KLSAgPC9mb3JtPgotCi0gIFNldCBiaW5hcnlUeXBlCi0gIDxpbnB1
dCB0eXBlPSJyYWRpbyIKLSAgICAgICAgIG5hbWU9ImJpbmFyeXR5cGUiCi0gICAgICAgICB2YWx1
ZT0iYmxvYiIKLSAgICAgICAgIG9uY2xpY2s9InNldGJpbmFyeXR5cGUoJ2Jsb2InKSIgY2hlY2tl
ZD5ibG9iCi0gIDxpbnB1dCB0eXBlPSJyYWRpbyIKLSAgICAgICAgIG5hbWU9ImJpbmFyeXR5cGUi
Ci0gICAgICAgICB2YWx1ZT0iYXJyYXlidWZmZXIiCi0gICAgICAgICBvbmNsaWNrPSJzZXRiaW5h
cnl0eXBlKCdhcnJheWJ1ZmZlcicpIj5hcnJheWJ1ZmZlcgotPC9kaXY+Ci0KLTxkaXYgaWQ9ImNs
b3NlX2RpdiI+Ci0gIDxmb3JtIGFjdGlvbj0iIyIgb25zdWJtaXQ9ImNsb3NlU29ja2V0KCk7IHJl
dHVybiBmYWxzZTsiPgotICAgIGNvZGUgPGlucHV0IHR5cGU9InRleHQiIGlkPSJjb2RlIiBzaXpl
PSIxMCI+Ci0gICAgcmVhc29uIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0icmVhc29uIiBzaXplPSIy
MCI+Ci0gICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9ImNsb3NlIj4KLSAgPC9mb3JtPgot
PC9kaXY+Ci0KLTxkaXYgaWQ9InByaW50c3RhdGVfZGl2Ij4KLSAgPGlucHV0IHR5cGU9ImJ1dHRv
biIgdmFsdWU9InByaW50IHN0YXRlIiBvbmNsaWNrPSJwcmludFN0YXRlKCk7Ij4KLTwvZGl2Pgot
Ci08L2Rpdj4KLQotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBs
ZS9jb29raWVfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS9jb29raWVfd3NoLnB5CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YjMyNzE1MmU3MDFmN2QyMDMxZDdjOWNlMDQ2MjRjZmE4
NGFjMTZkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvc3JjL2V4YW1wbGUvY29va2llX3dzaC5weQorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAg
QEAKLSMgQ29weXJpZ2h0IDIwMTQgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMK
LSMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUKLSMg
bGljZW5zZSB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgQ09QWUlORyBmaWxlIG9yIGF0Ci0jIGh0
dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL29wZW4tc291cmNlL2xpY2Vuc2VzL2JzZAotCi0K
LWltcG9ydCB1cmxwYXJzZQotCi0KLWRlZiBfYWRkX3NldF9jb29raWUocmVxdWVzdCwgdmFsdWUp
OgotICAgIHJlcXVlc3QuZXh0cmFfaGVhZGVycy5hcHBlbmQoKCdTZXQtQ29va2llJywgdmFsdWUp
KQotCi0KLWRlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKLSAgICBj
b21wb25lbnRzID0gdXJscGFyc2UudXJscGFyc2UocmVxdWVzdC51cmkpCi0gICAgY29tbWFuZCA9
IGNvbXBvbmVudHNbNF0KLQotICAgIE9ORV9EQVlfTElGRSA9ICdNYXgtQWdlPTg2NDAwJwotCi0g
ICAgaWYgY29tbWFuZCA9PSAnc2V0JzoKLSAgICAgICAgX2FkZF9zZXRfY29va2llKHJlcXVlc3Qs
ICc7ICcuam9pbihbJ2Zvbz1iYXInLCBPTkVfREFZX0xJRkVdKSkKLSAgICBlbGlmIGNvbW1hbmQg
PT0gJ3NldF9odHRwb25seSc6Ci0gICAgICAgIF9hZGRfc2V0X2Nvb2tpZShyZXF1ZXN0LAotICAg
ICAgICAgICAgJzsgJy5qb2luKFsnaHR0cE9ubHlGb289YmFyJywgT05FX0RBWV9MSUZFLCAnaHR0
cE9ubHknXSkpCi0gICAgZWxpZiBjb21tYW5kID09ICdjbGVhcic6Ci0gICAgICAgIF9hZGRfc2V0
X2Nvb2tpZShyZXF1ZXN0LCAnZm9vPTA7IE1heC1BZ2U9MCcpCi0gICAgICAgIF9hZGRfc2V0X2Nv
b2tpZShyZXF1ZXN0LCAnaHR0cE9ubHlGb289MDsgTWF4LUFnZT0wJykKLQotCi1kZWYgd2ViX3Nv
Y2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgotICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
c3JjL2V4YW1wbGUvZWNob19jbGllbnQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2VjaG9fY2xpZW50
LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NDNjZTY0ZThiODg2NTYyZmM2OTIw
OTgzNGJmOTJiMTM5OTE0MmY3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvZWNob19jbGllbnQucHkKKysrIC9kZXYvbnVsbApA
QCAtMSwxMTI4ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQg
MjAxMSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0KLQotIiIiU2ltcGxlIFdlYlNvY2tldCBjbGllbnQgbmFtZWQgZWNob19jbGllbnQganVz
dCBiZWNhdXNlIG9mIGhpc3RvcmljYWwgcmVhc29uLgotCi1tb2RfcHl3ZWJzb2NrZXQgZGlyZWN0
b3J5IG11c3QgYmUgaW4gUFlUSE9OUEFUSC4KLQotRXhhbXBsZSBVc2FnZToKLQotIyBzZXJ2ZXIg
c2V0dXAKLSAlIGNkICRweXdlYnNvY2tldAotICUgUFlUSE9OUEFUSD0kY3dkL3NyYyBweXRob24g
Li9tb2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5weSAtcCA4ODgwIFwKLSAgICAtZCAkY3dkL3Ny
Yy9leGFtcGxlCi0KLSMgcnVuIGNsaWVudAotICUgUFlUSE9OUEFUSD0kY3dkL3NyYyBweXRob24g
Li9zcmMvZXhhbXBsZS9lY2hvX2NsaWVudC5weSAtcCA4ODgwIFwKLSAgICAgLXMgbG9jYWxob3N0
IFwKLSAgICAgLW8gaHR0cDovL2xvY2FsaG9zdCAtciAvZWNobyAtbSB0ZXN0Ci0KLW9yCi0KLSMg
cnVuIGVjaG8gY2xpZW50IHRvIHRlc3QgSUVURiBIeUJpIDAwIHByb3RvY29sCi0gcnVuIHdpdGgg
LS1wcm90b2NvbC12ZXJzaW9uPWh5YmkwMAotIiIiCi0KLQotaW1wb3J0IGJhc2U2NAotaW1wb3J0
IGNvZGVjcwotaW1wb3J0IGxvZ2dpbmcKLWZyb20gb3B0cGFyc2UgaW1wb3J0IE9wdGlvblBhcnNl
cgotaW1wb3J0IG9zCi1pbXBvcnQgcmFuZG9tCi1pbXBvcnQgcmUKLWltcG9ydCBzb2NrZXQKLWlt
cG9ydCBzdHJ1Y3QKLWltcG9ydCBzeXMKLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNv
bW1vbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuZXh0ZW5zaW9ucyBpbXBvcnQgRGVmbGF0ZUZyYW1l
RXh0ZW5zaW9uUHJvY2Vzc29yCi1mcm9tIG1vZF9weXdlYnNvY2tldC5leHRlbnNpb25zIGltcG9y
dCBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcgotZnJvbSBtb2RfcHl3ZWJzb2Nr
ZXQuZXh0ZW5zaW9ucyBpbXBvcnQgX1Blck1lc3NhZ2VEZWZsYXRlRnJhbWVyCi1mcm9tIG1vZF9w
eXdlYnNvY2tldC5leHRlbnNpb25zIGltcG9ydCBfcGFyc2Vfd2luZG93X2JpdHMKLWZyb20gbW9k
X3B5d2Vic29ja2V0LnN0cmVhbSBpbXBvcnQgU3RyZWFtCi1mcm9tIG1vZF9weXdlYnNvY2tldC5z
dHJlYW0gaW1wb3J0IFN0cmVhbUhpeGllNzUKLWZyb20gbW9kX3B5d2Vic29ja2V0LnN0cmVhbSBp
bXBvcnQgU3RyZWFtT3B0aW9ucwotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHV0aWwKLQot
Ci1fVElNRU9VVF9TRUMgPSAxMAotX1VOREVGSU5FRF9QT1JUID0gLTEKLQotX1VQR1JBREVfSEVB
REVSID0gJ1VwZ3JhZGU6IHdlYnNvY2tldFxyXG4nCi1fVVBHUkFERV9IRUFERVJfSElYSUU3NSA9
ICdVcGdyYWRlOiBXZWJTb2NrZXRcclxuJwotX0NPTk5FQ1RJT05fSEVBREVSID0gJ0Nvbm5lY3Rp
b246IFVwZ3JhZGVcclxuJwotCi0jIFNwZWNpYWwgbWVzc2FnZSB0aGF0IHRlbGxzIHRoZSBlY2hv
IHNlcnZlciB0byBzdGFydCBjbG9zaW5nIGhhbmRzaGFrZQotX0dPT0RCWUVfTUVTU0FHRSA9ICdH
b29kYnllJwotCi1fUFJPVE9DT0xfVkVSU0lPTl9IWUJJMTMgPSAnaHliaTEzJwotX1BST1RPQ09M
X1ZFUlNJT05fSFlCSTA4ID0gJ2h5YmkwOCcKLV9QUk9UT0NPTF9WRVJTSU9OX0hZQkkwMCA9ICdo
eWJpMDAnCi1fUFJPVE9DT0xfVkVSU0lPTl9ISVhJRTc1ID0gJ2hpeGllNzUnCi0KLSMgQ29uc3Rh
bnRzIGZvciB0aGUgLS10bHNfbW9kdWxlIGZsYWcuCi1fVExTX0JZX1NUQU5EQVJEX01PRFVMRSA9
ICdzc2wnCi1fVExTX0JZX1BZT1BFTlNTTCA9ICdweW9wZW5zc2wnCi0KLSMgVmFsdWVzIHVzZWQg
YnkgdGhlIC0tdGxzLXZlcnNpb24gZmxhZy4KLV9UTFNfVkVSU0lPTl9TU0wyMyA9ICdzc2wyMycK
LV9UTFNfVkVSU0lPTl9TU0wzID0gJ3NzbDMnCi1fVExTX1ZFUlNJT05fVExTMSA9ICd0bHMxJwot
Ci0KLWNsYXNzIENsaWVudEhhbmRzaGFrZUVycm9yKEV4Y2VwdGlvbik6Ci0gICAgcGFzcwotCi0K
LWRlZiBfYnVpbGRfbWV0aG9kX2xpbmUocmVzb3VyY2UpOgotICAgIHJldHVybiAnR0VUICVzIEhU
VFAvMS4xXHJcbicgJSByZXNvdXJjZQotCi0KLWRlZiBfb3JpZ2luX2hlYWRlcihoZWFkZXIsIG9y
aWdpbik6Ci0gICAgIyA0LjEgMTMuIGNvbmNhdGVuYXRpb24gb2YgdGhlIHN0cmluZyAiT3JpZ2lu
OiIsIGEgVSswMDIwIFNQQUNFIGNoYXJhY3RlciwKLSAgICAjIGFuZCB0aGUgL29yaWdpbi8gdmFs
dWUsIGNvbnZlcnRlZCB0byBBU0NJSSBsb3dlcmNhc2UsIHRvIC9maWVsZHMvLgotICAgIHJldHVy
biAnJXM6ICVzXHJcbicgJSAoaGVhZGVyLCBvcmlnaW4ubG93ZXIoKSkKLQotCi1kZWYgX2Zvcm1h
dF9ob3N0X2hlYWRlcihob3N0LCBwb3J0LCBzZWN1cmUpOgotICAgICMgNC4xIDkuIExldCAvaG9z
dHBvcnQvIGJlIGFuIGVtcHR5IHN0cmluZy4KLSAgICAjIDQuMSAxMC4gQXBwZW5kIHRoZSAvaG9z
dC8gdmFsdWUsIGNvbnZlcnRlZCB0byBBU0NJSSBsb3dlcmNhc2UsIHRvCi0gICAgIyAvaG9zdHBv
cnQvCi0gICAgaG9zdHBvcnQgPSBob3N0Lmxvd2VyKCkKLSAgICAjIDQuMSAxMS4gSWYgL3NlY3Vy
ZS8gaXMgZmFsc2UsIGFuZCAvcG9ydC8gaXMgbm90IDgwLCBvciBpZiAvc2VjdXJlLwotICAgICMg
aXMgdHJ1ZSwgYW5kIC9wb3J0LyBpcyBub3QgNDQzLCB0aGVuIGFwcGVuZCBhIFUrMDAzQSBDT0xP
TiBjaGFyYWN0ZXIKLSAgICAjICg6KSBmb2xsb3dlZCBieSB0aGUgdmFsdWUgb2YgL3BvcnQvLCBl
eHByZXNzZWQgYXMgYSBiYXNlLXRlbiBpbnRlZ2VyLAotICAgICMgdG8gL2hvc3Rwb3J0LwotICAg
IGlmICgobm90IHNlY3VyZSBhbmQgcG9ydCAhPSBjb21tb24uREVGQVVMVF9XRUJfU09DS0VUX1BP
UlQpIG9yCi0gICAgICAgIChzZWN1cmUgYW5kIHBvcnQgIT0gY29tbW9uLkRFRkFVTFRfV0VCX1NP
Q0tFVF9TRUNVUkVfUE9SVCkpOgotICAgICAgICBob3N0cG9ydCArPSAnOicgKyBzdHIocG9ydCkK
LSAgICAjIDQuMSAxMi4gY29uY2F0ZW5hdGlvbiBvZiB0aGUgc3RyaW5nICJIb3N0OiIsIGEgVSsw
MDIwIFNQQUNFCi0gICAgIyBjaGFyYWN0ZXIsIGFuZCAvaG9zdHBvcnQvLCB0byAvZmllbGRzLy4K
LSAgICByZXR1cm4gJyVzOiAlc1xyXG4nICUgKGNvbW1vbi5IT1NUX0hFQURFUiwgaG9zdHBvcnQp
Ci0KLQotZGVmIF9yZWNlaXZlX2J5dGVzKHNvY2tldCwgbGVuZ3RoKToKLSAgICBieXRlcyA9IFtd
Ci0gICAgcmVtYWluaW5nID0gbGVuZ3RoCi0gICAgd2hpbGUgcmVtYWluaW5nID4gMDoKLSAgICAg
ICAgcmVjZWl2ZWRfYnl0ZXMgPSBzb2NrZXQucmVjdihyZW1haW5pbmcpCi0gICAgICAgIGlmIG5v
dCByZWNlaXZlZF9ieXRlczoKLSAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoCi0gICAgICAgICAg
ICAgICAgJ0Nvbm5lY3Rpb24gY2xvc2VkIGJlZm9yZSByZWNlaXZpbmcgcmVxdWVzdGVkIGxlbmd0
aCAnCi0gICAgICAgICAgICAgICAgJyhyZXF1ZXN0ZWQgJWQgYnl0ZXMgYnV0IHJlY2VpdmVkIG9u
bHkgJWQgYnl0ZXMpJyAlCi0gICAgICAgICAgICAgICAgKGxlbmd0aCwgbGVuZ3RoIC0gcmVtYWlu
aW5nKSkKLSAgICAgICAgYnl0ZXMuYXBwZW5kKHJlY2VpdmVkX2J5dGVzKQotICAgICAgICByZW1h
aW5pbmcgLT0gbGVuKHJlY2VpdmVkX2J5dGVzKQotICAgIHJldHVybiAnJy5qb2luKGJ5dGVzKQot
Ci0KLWRlZiBfZ2V0X21hbmRhdG9yeV9oZWFkZXIoZmllbGRzLCBuYW1lKToKLSAgICAiIiJHZXRz
IHRoZSB2YWx1ZSBvZiB0aGUgaGVhZGVyIHNwZWNpZmllZCBieSBuYW1lIGZyb20gZmllbGRzLgot
Ci0gICAgVGhpcyBmdW5jdGlvbiBleHBlY3RzIHRoYXQgdGhlcmUncyBvbmx5IG9uZSBoZWFkZXIg
d2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUKLSAgICBpbiBmaWVsZHMuIE90aGVyd2lzZSwgcmFpc2Vz
IGFuIENsaWVudEhhbmRzaGFrZUVycm9yLgotICAgICIiIgotCi0gICAgdmFsdWVzID0gZmllbGRz
LmdldChuYW1lLmxvd2VyKCkpCi0gICAgaWYgdmFsdWVzIGlzIE5vbmUgb3IgbGVuKHZhbHVlcykg
PT0gMDoKLSAgICAgICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCi0gICAgICAgICAgICAn
JXMgaGVhZGVyIG5vdCBmb3VuZDogJXInICUgKG5hbWUsIHZhbHVlcykpCi0gICAgaWYgbGVuKHZh
bHVlcykgPiAxOgotICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcigKLSAgICAgICAg
ICAgICdNdWx0aXBsZSAlcyBoZWFkZXJzIGZvdW5kOiAlcicgJSAobmFtZSwgdmFsdWVzKSkKLSAg
ICByZXR1cm4gdmFsdWVzWzBdCi0KLQotZGVmIF92YWxpZGF0ZV9tYW5kYXRvcnlfaGVhZGVyKGZp
ZWxkcywgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF92YWx1
ZSwgY2FzZV9zZW5zaXRpdmU9RmFsc2UpOgotICAgICIiIkdldHMgYW5kIHZhbGlkYXRlcyB0aGUg
dmFsdWUgb2YgdGhlIGhlYWRlciBzcGVjaWZpZWQgYnkgbmFtZSBmcm9tCi0gICAgZmllbGRzLgot
Ci0gICAgSWYgZXhwZWN0ZWRfdmFsdWUgaXMgc3BlY2lmaWVkLCBjb21wYXJlcyBleHBlY3RlZCB2
YWx1ZSBhbmQgYWN0dWFsIHZhbHVlCi0gICAgYW5kIHJhaXNlcyBhbiBDbGllbnRIYW5kc2hha2VF
cnJvciBvbiBmYWlsdXJlLiBZb3UgY2FuIHNwZWNpZnkgY2FzZQotICAgIHNlbnNpdGl2ZW5lc3Mg
aW4gdGhpcyBjb21wYXJpc29uIGJ5IGNhc2Vfc2Vuc2l0aXZlIHBhcmFtZXRlci4gVGhpcyBmdW5j
dGlvbgotICAgIGV4cGVjdHMgdGhhdCB0aGVyZSdzIG9ubHkgb25lIGhlYWRlciB3aXRoIHRoZSBz
cGVjaWZpZWQgbmFtZSBpbiBmaWVsZHMuCi0gICAgT3RoZXJ3aXNlLCByYWlzZXMgYW4gQ2xpZW50
SGFuZHNoYWtlRXJyb3IuCi0gICAgIiIiCi0KLSAgICB2YWx1ZSA9IF9nZXRfbWFuZGF0b3J5X2hl
YWRlcihmaWVsZHMsIG5hbWUpCi0KLSAgICBpZiAoKGNhc2Vfc2Vuc2l0aXZlIGFuZCB2YWx1ZSAh
PSBleHBlY3RlZF92YWx1ZSkgb3IKLSAgICAgICAgKG5vdCBjYXNlX3NlbnNpdGl2ZSBhbmQgdmFs
dWUubG93ZXIoKSAhPSBleHBlY3RlZF92YWx1ZS5sb3dlcigpKSk6Ci0gICAgICAgIHJhaXNlIENs
aWVudEhhbmRzaGFrZUVycm9yKAotICAgICAgICAgICAgJ0lsbGVnYWwgdmFsdWUgZm9yIGhlYWRl
ciAlczogJXIgKGV4cGVjdGVkKSB2cyAlciAoYWN0dWFsKScgJQotICAgICAgICAgICAgKG5hbWUs
IGV4cGVjdGVkX3ZhbHVlLCB2YWx1ZSkpCi0KLQotY2xhc3MgX1RMU1NvY2tldChvYmplY3QpOgot
ICAgICIiIldyYXBwZXIgZm9yIGEgVExTIGNvbm5lY3Rpb24uIiIiCi0KLSAgICBkZWYgX19pbml0
X18oc2VsZiwKLSAgICAgICAgICAgICAgICAgcmF3X3NvY2tldCwgdGxzX21vZHVsZSwgdGxzX3Zl
cnNpb24sIGRpc2FibGVfdGxzX2NvbXByZXNzaW9uKToKLSAgICAgICAgc2VsZi5fbG9nZ2VyID0g
dXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgaWYgdGxzX21vZHVsZSA9PSBf
VExTX0JZX1NUQU5EQVJEX01PRFVMRToKLSAgICAgICAgICAgIGlmIHRsc192ZXJzaW9uID09IF9U
TFNfVkVSU0lPTl9TU0wyMzoKLSAgICAgICAgICAgICAgICB2ZXJzaW9uID0gc3NsLlBST1RPQ09M
X1NTTHYyMwotICAgICAgICAgICAgZWxpZiB0bHNfdmVyc2lvbiA9PSBfVExTX1ZFUlNJT05fU1NM
MzoKLSAgICAgICAgICAgICAgICB2ZXJzaW9uID0gc3NsLlBST1RPQ09MX1NTTHYzCi0gICAgICAg
ICAgICBlbGlmIHRsc192ZXJzaW9uID09IF9UTFNfVkVSU0lPTl9UTFMxOgotICAgICAgICAgICAg
ICAgIHZlcnNpb24gPSBzc2wuUFJPVE9DT0xfVExTdjEKLSAgICAgICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKLSAgICAgICAgICAgICAgICAgICAgJ0ludmFs
aWQgLS10bHMtdmVyc2lvbiBmbGFnOiAlcicgJSB0bHNfdmVyc2lvbikKLQotICAgICAgICAgICAg
aWYgZGlzYWJsZV90bHNfY29tcHJlc3Npb246Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVF
cnJvcigKLSAgICAgICAgICAgICAgICAgICAgJy0tZGlzYWJsZS10bHMtY29tcHJlc3Npb24gaXMg
bm90IGF2YWlsYWJsZSBmb3Igc3NsICcKLSAgICAgICAgICAgICAgICAgICAgJ21vZHVsZScpCi0K
LSAgICAgICAgICAgIHNlbGYuX3Rsc19zb2NrZXQgPSBzc2wud3JhcF9zb2NrZXQocmF3X3NvY2tl
dCwgc3NsX3ZlcnNpb249dmVyc2lvbikKLQotICAgICAgICAgICAgIyBQcmludCBjaXBoZXIgaW4g
dXNlLiBIYW5kc2hha2UgaXMgZG9uZSBvbiB3cmFwX3NvY2tldCBjYWxsLgotICAgICAgICAgICAg
c2VsZi5fbG9nZ2VyLmluZm8oIkNpcGhlcjogJXMiLCBzZWxmLl90bHNfc29ja2V0LmNpcGhlcigp
KQotICAgICAgICBlbGlmIHRsc19tb2R1bGUgPT0gX1RMU19CWV9QWU9QRU5TU0w6Ci0gICAgICAg
ICAgICBpZiB0bHNfdmVyc2lvbiA9PSBfVExTX1ZFUlNJT05fU1NMMjM6Ci0gICAgICAgICAgICAg
ICAgdmVyc2lvbiA9IE9wZW5TU0wuU1NMLlNTTHYyM19NRVRIT0QKLSAgICAgICAgICAgIGVsaWYg
dGxzX3ZlcnNpb24gPT0gX1RMU19WRVJTSU9OX1NTTDM6Ci0gICAgICAgICAgICAgICAgdmVyc2lv
biA9IE9wZW5TU0wuU1NMLlNTTHYzX01FVEhPRAotICAgICAgICAgICAgZWxpZiB0bHNfdmVyc2lv
biA9PSBfVExTX1ZFUlNJT05fVExTMToKLSAgICAgICAgICAgICAgICB2ZXJzaW9uID0gT3BlblNT
TC5TU0wuVExTdjFfTUVUSE9ECi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJh
aXNlIFZhbHVlRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICdJbnZhbGlkIC0tdGxzLXZlcnNp
b24gZmxhZzogJXInICUgdGxzX3ZlcnNpb24pCi0KLSAgICAgICAgICAgIGNvbnRleHQgPSBPcGVu
U1NMLlNTTC5Db250ZXh0KHZlcnNpb24pCi0KLSAgICAgICAgICAgIGlmIGRpc2FibGVfdGxzX2Nv
bXByZXNzaW9uOgotICAgICAgICAgICAgICAgICMgT1BfTk9fQ09NUFJFU1NJT04gaXMgbm90IGRl
ZmluZWQgaW4gT3BlblNTTCBtb2R1bGUuCi0gICAgICAgICAgICAgICAgY29udGV4dC5zZXRfb3B0
aW9ucygweDAwMDIwMDAwKQotCi0gICAgICAgICAgICBzZWxmLl90bHNfc29ja2V0ID0gT3BlblNT
TC5TU0wuQ29ubmVjdGlvbihjb250ZXh0LCByYXdfc29ja2V0KQotICAgICAgICAgICAgIyBDbGll
bnQgbW9kZS4KLSAgICAgICAgICAgIHNlbGYuX3Rsc19zb2NrZXQuc2V0X2Nvbm5lY3Rfc3RhdGUo
KQotICAgICAgICAgICAgc2VsZi5fdGxzX3NvY2tldC5zZXRibG9ja2luZyhUcnVlKQotCi0gICAg
ICAgICAgICAjIERvIGhhbmRzaGFrZSBub3cgKG5vdCBuZWNlc3NhcnkpLgotICAgICAgICAgICAg
c2VsZi5fdGxzX3NvY2tldC5kb19oYW5kc2hha2UoKQotICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgcmFpc2UgVmFsdWVFcnJvcignTm8gVExTIHN1cHBvcnQgbW9kdWxlIGlzIGF2YWlsYWJsZScp
Ci0KLSAgICBkZWYgc2VuZChzZWxmLCBkYXRhKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3Rsc19z
b2NrZXQud3JpdGUoZGF0YSkKLQotICAgIGRlZiBzZW5kYWxsKHNlbGYsIGRhdGEpOgotICAgICAg
ICByZXR1cm4gc2VsZi5fdGxzX3NvY2tldC5zZW5kYWxsKGRhdGEpCi0KLSAgICBkZWYgcmVjdihz
ZWxmLCBzaXplPS0xKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3Rsc19zb2NrZXQucmVhZChzaXpl
KQotCi0gICAgZGVmIGNsb3NlKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fdGxzX3NvY2tl
dC5jbG9zZSgpCi0KLSAgICBkZWYgZ2V0cGVlcm5hbWUoc2VsZik6Ci0gICAgICAgIHJldHVybiBz
ZWxmLl90bHNfc29ja2V0LmdldHBlZXJuYW1lKCkKLQotCi1jbGFzcyBDbGllbnRIYW5kc2hha2VC
YXNlKG9iamVjdCk6Ci0gICAgIiIiQSBiYXNlIGNsYXNzIGZvciBXZWJTb2NrZXQgb3BlbmluZyBo
YW5kc2hha2UgcHJvY2Vzc29ycyBmb3IgZWFjaAotICAgIHByb3RvY29sIHZlcnNpb24uCi0gICAg
IiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0
aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQotCi0gICAgZGVmIF9yZWFkX2ZpZWxkcyhzZWxmKToK
LSAgICAgICAgIyA0LjEgMzIuIGxldCAvZmllbGRzLyBiZSBhIGxpc3Qgb2YgbmFtZS12YWx1ZSBw
YWlycywgaW5pdGlhbGx5IGVtcHR5LgotICAgICAgICBmaWVsZHMgPSB7fQotICAgICAgICB3aGls
ZSBUcnVlOiAgIyAiRmllbGQiCi0gICAgICAgICAgICAjIDQuMSAzMy4gbGV0IC9uYW1lLyBhbmQg
L3ZhbHVlLyBiZSBlbXB0eSBieXRlIGFycmF5cwotICAgICAgICAgICAgbmFtZSA9ICcnCi0gICAg
ICAgICAgICB2YWx1ZSA9ICcnCi0gICAgICAgICAgICAjIDQuMSAzNC4gcmVhZCAvbmFtZS8KLSAg
ICAgICAgICAgIG5hbWUgPSBzZWxmLl9yZWFkX25hbWUoKQotICAgICAgICAgICAgaWYgbmFtZSBp
cyBOb25lOgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAjIDQuMSAzNS4gcmVh
ZCBzcGFjZXMKLSAgICAgICAgICAgICMgVE9ETyh0eW9zaGlubyk6IFNraXAgb25seSBvbmUgc3Bh
Y2UgYXMgZGVzY3JpYmVkIGluIHRoZSBzcGVjLgotICAgICAgICAgICAgY2ggPSBzZWxmLl9za2lw
X3NwYWNlcygpCi0gICAgICAgICAgICAjIDQuMSAzNi4gcmVhZCAvdmFsdWUvCi0gICAgICAgICAg
ICB2YWx1ZSA9IHNlbGYuX3JlYWRfdmFsdWUoY2gpCi0gICAgICAgICAgICAjIDQuMSAzNy4gcmVh
ZCBhIGJ5dGUgZnJvbSB0aGUgc2VydmVyCi0gICAgICAgICAgICBjaCA9IF9yZWNlaXZlX2J5dGVz
KHNlbGYuX3NvY2tldCwgMSkKLSAgICAgICAgICAgIGlmIGNoICE9ICdcbic6ICAjIDB4MEEKLSAg
ICAgICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcigKLSAgICAgICAgICAgICAg
ICAgICAgJ0V4cGVjdGVkIExGIGJ1dCBmb3VuZCAlciB3aGlsZSByZWFkaW5nIHZhbHVlICVyIGZv
ciAnCi0gICAgICAgICAgICAgICAgICAgICdoZWFkZXIgJXInICUgKGNoLCB2YWx1ZSwgbmFtZSkp
Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1JlY2VpdmVkICVyIGhlYWRlcicsIG5h
bWUpCi0gICAgICAgICAgICAjIDQuMSAzOC4gYXBwZW5kIGFuIGVudHJ5IHRvIHRoZSAvZmllbGRz
LyBsaXN0IHRoYXQgaGFzIHRoZSBuYW1lCi0gICAgICAgICAgICAjIGdpdmVuIGJ5IHRoZSBzdHJp
bmcgb2J0YWluZWQgYnkgaW50ZXJwcmV0aW5nIHRoZSAvbmFtZS8gYnl0ZQotICAgICAgICAgICAg
IyBhcnJheSBhcyBhIFVURi04IHN0cmVhbSBhbmQgdGhlIHZhbHVlIGdpdmVuIGJ5IHRoZSBzdHJp
bmcKLSAgICAgICAgICAgICMgb2J0YWluZWQgYnkgaW50ZXJwcmV0aW5nIHRoZSAvdmFsdWUvIGJ5
dGUgYXJyYXkgYXMgYSBVVEYtOCBieXRlCi0gICAgICAgICAgICAjIHN0cmVhbS4KLSAgICAgICAg
ICAgIGZpZWxkcy5zZXRkZWZhdWx0KG5hbWUsIFtdKS5hcHBlbmQodmFsdWUpCi0gICAgICAgICAg
ICAjIDQuMSAzOS4gcmV0dXJuIHRvIHRoZSAiRmllbGQiIHN0ZXAgYWJvdmUKLSAgICAgICAgcmV0
dXJuIGZpZWxkcwotCi0gICAgZGVmIF9yZWFkX25hbWUoc2VsZik6Ci0gICAgICAgICMgNC4xIDMz
LiBsZXQgL25hbWUvIGJlIGVtcHR5IGJ5dGUgYXJyYXlzCi0gICAgICAgIG5hbWUgPSAnJwotICAg
ICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgIyA0LjEgMzQuIHJlYWQgYSBieXRlIGZyb20g
dGhlIHNlcnZlcgotICAgICAgICAgICAgY2ggPSBfcmVjZWl2ZV9ieXRlcyhzZWxmLl9zb2NrZXQs
IDEpCi0gICAgICAgICAgICBpZiBjaCA9PSAnXHInOiAgIyAweDBECi0gICAgICAgICAgICAgICAg
cmV0dXJuIE5vbmUKLSAgICAgICAgICAgIGVsaWYgY2ggPT0gJ1xuJzogICMgMHgwQQotICAgICAg
ICAgICAgICAgIHJhaXNlIENsaWVudEhhbmRzaGFrZUVycm9yKAotICAgICAgICAgICAgICAgICAg
ICAnVW5leHBlY3RlZCBMRiB3aGVuIHJlYWRpbmcgaGVhZGVyIG5hbWUgJXInICUgbmFtZSkKLSAg
ICAgICAgICAgIGVsaWYgY2ggPT0gJzonOiAgIyAweDNBCi0gICAgICAgICAgICAgICAgcmV0dXJu
IG5hbWUKLSAgICAgICAgICAgIGVsaWYgY2ggPj0gJ0EnIGFuZCBjaCA8PSAnWic6ICAjIFJhbmdl
IDB4MzEgdG8gMHg1QQotICAgICAgICAgICAgICAgIGNoID0gY2hyKG9yZChjaCkgKyAweDIwKQot
ICAgICAgICAgICAgICAgIG5hbWUgKz0gY2gKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICAgICAgbmFtZSArPSBjaAotCi0gICAgZGVmIF9za2lwX3NwYWNlcyhzZWxmKToKLSAgICAgICAg
IyA0LjEgMzUuIHJlYWQgYSBieXRlIGZyb20gdGhlIHNlcnZlcgotICAgICAgICB3aGlsZSBUcnVl
OgotICAgICAgICAgICAgY2ggPSBfcmVjZWl2ZV9ieXRlcyhzZWxmLl9zb2NrZXQsIDEpCi0gICAg
ICAgICAgICBpZiBjaCA9PSAnICc6ICAjIDB4MjAKLSAgICAgICAgICAgICAgICBjb250aW51ZQot
ICAgICAgICAgICAgcmV0dXJuIGNoCi0KLSAgICBkZWYgX3JlYWRfdmFsdWUoc2VsZiwgY2gpOgot
ICAgICAgICAjIDQuMSAzMy4gbGV0IC92YWx1ZS8gYmUgZW1wdHkgYnl0ZSBhcnJheXMKLSAgICAg
ICAgdmFsdWUgPSAnJwotICAgICAgICAjIDQuMSAzNi4gcmVhZCBhIGJ5dGUgZnJvbSBzZXJ2ZXIu
Ci0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICBpZiBjaCA9PSAnXHInOiAgIyAweDBE
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlCi0gICAgICAgICAgICBlbGlmIGNoID09ICdc
bic6ICAjIDB4MEEKLSAgICAgICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcigK
LSAgICAgICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgTEYgd2hlbiByZWFkaW5nIGhlYWRlciB2
YWx1ZSAlcicgJSB2YWx1ZSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdmFs
dWUgKz0gY2gKLSAgICAgICAgICAgIGNoID0gX3JlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCAx
KQotCi0KLWRlZiBfZ2V0X3Blcm1lc3NhZ2VfZGVmbGF0ZV9mcmFtZXIoZXh0ZW5zaW9uX3Jlc3Bv
bnNlKToKLSAgICAiIiJWYWxpZGF0ZSB0aGUgcmVzcG9uc2UgYW5kIHJldHVybiBhIGZyYW1lciBv
YmplY3QgdXNpbmcgdGhlIHBhcmFtZXRlcnMgaW4KLSAgICB0aGUgcmVzcG9uc2UuIFRoaXMgbWV0
aG9kIGRvZXNuJ3QgYWNjZXB0IHRoZSBzZXJ2ZXJfLiogcGFyYW1ldGVycy4KLSAgICAiIiIKLQot
ICAgIGNsaWVudF9tYXhfd2luZG93X2JpdHMgPSBOb25lCi0gICAgY2xpZW50X25vX2NvbnRleHRf
dGFrZW92ZXIgPSBOb25lCi0KLSAgICBjbGllbnRfbWF4X3dpbmRvd19iaXRzX25hbWUgPSAoCi0g
ICAgICAgICAgICBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3Nvci4KLSAgICAgICAg
ICAgICAgICAgICAgX0NMSUVOVF9NQVhfV0lORE9XX0JJVFNfUEFSQU0pCi0gICAgY2xpZW50X25v
X2NvbnRleHRfdGFrZW92ZXJfbmFtZSA9ICgKLSAgICAgICAgICAgIFBlck1lc3NhZ2VEZWZsYXRl
RXh0ZW5zaW9uUHJvY2Vzc29yLgotICAgICAgICAgICAgICAgICAgICBfQ0xJRU5UX05PX0NPTlRF
WFRfVEFLRU9WRVJfUEFSQU0pCi0KLSAgICAjIFdlIGRpZG4ndCBzZW5kIGFueSBzZXJ2ZXJfLiog
cGFyYW1ldGVyLgotICAgICMgSGFuZGxlIHRob3NlIHBhcmFtZXRlcnMgYXMgaW52YWxpZCBpZiBm
b3VuZCBpbiB0aGUgcmVzcG9uc2UuCi0KLSAgICBmb3IgcGFyYW1fbmFtZSwgcGFyYW1fdmFsdWUg
aW4gZXh0ZW5zaW9uX3Jlc3BvbnNlLmdldF9wYXJhbWV0ZXJzKCk6Ci0gICAgICAgIGlmIHBhcmFt
X25hbWUgPT0gY2xpZW50X21heF93aW5kb3dfYml0c19uYW1lOgotICAgICAgICAgICAgaWYgY2xp
ZW50X21heF93aW5kb3dfYml0cyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICByYWlzZSBD
bGllbnRIYW5kc2hha2VFcnJvcigKLSAgICAgICAgICAgICAgICAgICAgICAgICdNdWx0aXBsZSAl
cyBmb3VuZCcgJSBjbGllbnRfbWF4X3dpbmRvd19iaXRzX25hbWUpCi0KLSAgICAgICAgICAgIHBh
cnNlZF92YWx1ZSA9IF9wYXJzZV93aW5kb3dfYml0cyhwYXJhbV92YWx1ZSkKLSAgICAgICAgICAg
IGlmIHBhcnNlZF92YWx1ZSBpcyBOb25lOgotICAgICAgICAgICAgICAgIHJhaXNlIENsaWVudEhh
bmRzaGFrZUVycm9yKAotICAgICAgICAgICAgICAgICAgICAgICAgJ0JhZCAlczogJXInICUKLSAg
ICAgICAgICAgICAgICAgICAgICAgIChjbGllbnRfbWF4X3dpbmRvd19iaXRzX25hbWUsIHBhcmFt
X3ZhbHVlKSkKLSAgICAgICAgICAgIGNsaWVudF9tYXhfd2luZG93X2JpdHMgPSBwYXJzZWRfdmFs
dWUKLSAgICAgICAgZWxpZiBwYXJhbV9uYW1lID09IGNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVy
X25hbWU6Ci0gICAgICAgICAgICBpZiBjbGllbnRfbm9fY29udGV4dF90YWtlb3ZlciBpcyBub3Qg
Tm9uZToKLSAgICAgICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcigKLSAgICAg
ICAgICAgICAgICAgICAgICAgICdNdWx0aXBsZSAlcyBmb3VuZCcgJSBjbGllbnRfbm9fY29udGV4
dF90YWtlb3Zlcl9uYW1lKQotCi0gICAgICAgICAgICBpZiBwYXJhbV92YWx1ZSBpcyBub3QgTm9u
ZToKLSAgICAgICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcigKLSAgICAgICAg
ICAgICAgICAgICAgICAgICdCYWQgJXM6IEhhcyB2YWx1ZSAlcicgJQotICAgICAgICAgICAgICAg
ICAgICAgICAgKGNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyX25hbWUsIHBhcmFtX3ZhbHVlKSkK
LSAgICAgICAgICAgIGNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyID0gVHJ1ZQotCi0gICAgaWYg
Y2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIgaXMgTm9uZToKLSAgICAgICAgY2xpZW50X25vX2Nv
bnRleHRfdGFrZW92ZXIgPSBGYWxzZQotCi0gICAgcmV0dXJuIF9QZXJNZXNzYWdlRGVmbGF0ZUZy
YW1lcihjbGllbnRfbWF4X3dpbmRvd19iaXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIpCi0KLQotY2xhc3MgQ2xpZW50SGFu
ZHNoYWtlUHJvY2Vzc29yKENsaWVudEhhbmRzaGFrZUJhc2UpOgotICAgICIiIldlYlNvY2tldCBv
cGVuaW5nIGhhbmRzaGFrZSBwcm9jZXNzb3IgZm9yCi0gICAgZHJhZnQtaWV0Zi1oeWJpLXRoZXdl
YnNvY2tldHByb3RvY29sLTA2IGFuZCBsYXRlci4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBzb2NrZXQsIG9wdGlvbnMpOgotICAgICAgICBzdXBlcihDbGllbnRIYW5kc2hha2VQ
cm9jZXNzb3IsIHNlbGYpLl9faW5pdF9fKCkKLQotICAgICAgICBzZWxmLl9zb2NrZXQgPSBzb2Nr
ZXQKLSAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKLQotICAgICAgICBzZWxmLl9sb2dn
ZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKLQotICAgIGRlZiBoYW5kc2hha2Uoc2Vs
Zik6Ci0gICAgICAgICIiIlBlcmZvcm1zIG9wZW5pbmcgaGFuZHNoYWtlIG9uIHRoZSBzcGVjaWZp
ZWQgc29ja2V0LgotCi0gICAgICAgIFJhaXNlczoKLSAgICAgICAgICAgIENsaWVudEhhbmRzaGFr
ZUVycm9yOiBoYW5kc2hha2UgZmFpbGVkLgotICAgICAgICAiIiIKLQotICAgICAgICByZXF1ZXN0
X2xpbmUgPSBfYnVpbGRfbWV0aG9kX2xpbmUoc2VsZi5fb3B0aW9ucy5yZXNvdXJjZSkKLSAgICAg
ICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdDbGllbnRcJ3Mgb3BlbmluZyBoYW5kc2hha2UgUmVxdWVz
dC1MaW5lOiAlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0X2xpbmUpCi0g
ICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKHJlcXVlc3RfbGluZSkKLQotICAgICAgICBmaWVs
ZHMgPSBbXQotICAgICAgICBmaWVsZHMuYXBwZW5kKF9mb3JtYXRfaG9zdF9oZWFkZXIoCi0gICAg
ICAgICAgICBzZWxmLl9vcHRpb25zLnNlcnZlcl9ob3N0LAotICAgICAgICAgICAgc2VsZi5fb3B0
aW9ucy5zZXJ2ZXJfcG9ydCwKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMudXNlX3RscykpCi0g
ICAgICAgIGZpZWxkcy5hcHBlbmQoX1VQR1JBREVfSEVBREVSKQotICAgICAgICBmaWVsZHMuYXBw
ZW5kKF9DT05ORUNUSU9OX0hFQURFUikKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5vcmlnaW4g
aXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnByb3RvY29sX3ZlcnNp
b24gPT0gX1BST1RPQ09MX1ZFUlNJT05fSFlCSTA4OgotICAgICAgICAgICAgICAgIGZpZWxkcy5h
cHBlbmQoX29yaWdpbl9oZWFkZXIoCi0gICAgICAgICAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VC
U09DS0VUX09SSUdJTl9IRUFERVIsCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMu
b3JpZ2luKSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZmllbGRzLmFwcGVu
ZChfb3JpZ2luX2hlYWRlcihjb21tb24uT1JJR0lOX0hFQURFUiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMub3JpZ2luKSkKLQotICAg
ICAgICBvcmlnaW5hbF9rZXkgPSBvcy51cmFuZG9tKDE2KQotICAgICAgICBzZWxmLl9rZXkgPSBi
YXNlNjQuYjY0ZW5jb2RlKG9yaWdpbmFsX2tleSkKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVn
KAotICAgICAgICAgICAgJyVzOiAlciAoJXMpJywKLSAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VC
U09DS0VUX0tFWV9IRUFERVIsCi0gICAgICAgICAgICBzZWxmLl9rZXksCi0gICAgICAgICAgICB1
dGlsLmhleGlmeShvcmlnaW5hbF9rZXkpKQotICAgICAgICBmaWVsZHMuYXBwZW5kKAotICAgICAg
ICAgICAgJyVzOiAlc1xyXG4nICUgKGNvbW1vbi5TRUNfV0VCU09DS0VUX0tFWV9IRUFERVIsIHNl
bGYuX2tleSkpCi0KLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy52ZXJzaW9uX2hlYWRlciA+IDA6
Ci0gICAgICAgICAgICBmaWVsZHMuYXBwZW5kKCclczogJWRcclxuJyAlIChjb21tb24uU0VDX1dF
QlNPQ0tFVF9WRVJTSU9OX0hFQURFUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX29wdGlvbnMudmVyc2lvbl9oZWFkZXIpKQotICAgICAgICBlbGlmIHNl
bGYuX29wdGlvbnMucHJvdG9jb2xfdmVyc2lvbiA9PSBfUFJPVE9DT0xfVkVSU0lPTl9IWUJJMDg6
Ci0gICAgICAgICAgICBmaWVsZHMuYXBwZW5kKCclczogJWRcclxuJyAlIChjb21tb24uU0VDX1dF
QlNPQ0tFVF9WRVJTSU9OX0hFQURFUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbW1vbi5WRVJTSU9OX0hZQkkwOCkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICBmaWVsZHMuYXBwZW5kKCclczogJWRcclxuJyAlIChjb21tb24uU0VDX1dFQlNPQ0tFVF9W
RVJTSU9OX0hFQURFUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbW1vbi5WRVJTSU9OX0hZQklfTEFURVNUKSkKLQotICAgICAgICBleHRlbnNpb25zX3RvX3Jl
cXVlc3QgPSBbXQotCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMuZGVmbGF0ZV9mcmFtZToKLSAg
ICAgICAgICAgIGV4dGVuc2lvbnNfdG9fcmVxdWVzdC5hcHBlbmQoCi0gICAgICAgICAgICAgICAg
Y29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcihjb21tb24uREVGTEFURV9GUkFNRV9FWFRFTlNJT04p
KQotCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMudXNlX3Blcm1lc3NhZ2VfZGVmbGF0ZToKLSAg
ICAgICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCi0gICAgICAg
ICAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQotICAgICAg
ICAgICAgIyBBY2NlcHQgdGhlIGNsaWVudF9tYXhfd2luZG93X2JpdHMgZXh0ZW5zaW9uIHBhcmFt
ZXRlciBieSBkZWZhdWx0LgotICAgICAgICAgICAgZXh0ZW5zaW9uLmFkZF9wYXJhbWV0ZXIoCi0g
ICAgICAgICAgICAgICAgICAgIFBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yLgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9DTElFTlRfTUFYX1dJTkRPV19CSVRTX1BBUkFN
LAotICAgICAgICAgICAgICAgICAgICBOb25lKQotICAgICAgICAgICAgZXh0ZW5zaW9uc190b19y
ZXF1ZXN0LmFwcGVuZChleHRlbnNpb24pCi0KLSAgICAgICAgaWYgbGVuKGV4dGVuc2lvbnNfdG9f
cmVxdWVzdCkgIT0gMDoKLSAgICAgICAgICAgIGZpZWxkcy5hcHBlbmQoCi0gICAgICAgICAgICAg
ICAgJyVzOiAlc1xyXG4nICUKLSAgICAgICAgICAgICAgICAoY29tbW9uLlNFQ19XRUJTT0NLRVRf
RVhURU5TSU9OU19IRUFERVIsCi0gICAgICAgICAgICAgICAgIGNvbW1vbi5mb3JtYXRfZXh0ZW5z
aW9ucyhleHRlbnNpb25zX3RvX3JlcXVlc3QpKSkKLQotICAgICAgICBmb3IgZmllbGQgaW4gZmll
bGRzOgotICAgICAgICAgICAgc2VsZi5fc29ja2V0LnNlbmRhbGwoZmllbGQpCi0KLSAgICAgICAg
c2VsZi5fc29ja2V0LnNlbmRhbGwoJ1xyXG4nKQotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1
ZygnU2VudCBjbGllbnRcJ3Mgb3BlbmluZyBoYW5kc2hha2UgaGVhZGVyczogJXInLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmllbGRzKQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWco
J1N0YXJ0IHJlYWRpbmcgU3RhdHVzLUxpbmUnKQotCi0gICAgICAgIHN0YXR1c19saW5lID0gJycK
LSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIGNoID0gX3JlY2VpdmVfYnl0ZXMoc2Vs
Zi5fc29ja2V0LCAxKQotICAgICAgICAgICAgc3RhdHVzX2xpbmUgKz0gY2gKLSAgICAgICAgICAg
IGlmIGNoID09ICdcbic6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICBtID0gcmUu
bWF0Y2goJ0hUVFAvXFxkK1wuXFxkKyAoXFxkXFxkXFxkKSAuKlxyXG4nLCBzdGF0dXNfbGluZSkK
LSAgICAgICAgaWYgbSBpcyBOb25lOgotICAgICAgICAgICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtl
RXJyb3IoCi0gICAgICAgICAgICAgICAgJ1dyb25nIHN0YXR1cyBsaW5lIGZvcm1hdDogJXInICUg
c3RhdHVzX2xpbmUpCi0gICAgICAgIHN0YXR1c19jb2RlID0gbS5ncm91cCgxKQotICAgICAgICBp
ZiBzdGF0dXNfY29kZSAhPSAnMTAxJzoKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1Zygn
VW5leHBlY3RlZCBzdGF0dXMgY29kZSAlcyB3aXRoIGZvbGxvd2luZyAnCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ2hlYWRlcnM6ICVyJywgc3RhdHVzX2NvZGUsIHNlbGYuX3JlYWRf
ZmllbGRzKCkpCi0gICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcigKLSAgICAg
ICAgICAgICAgICAnRXhwZWN0ZWQgSFRUUCBzdGF0dXMgY29kZSAxMDEgYnV0IGZvdW5kICVyJyAl
IHN0YXR1c19jb2RlKQotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnUmVjZWl2ZWQgdmFs
aWQgU3RhdHVzLUxpbmUnKQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1N0YXJ0IHJlYWRp
bmcgaGVhZGVycyB1bnRpbCB3ZSBzZWUgYW4gZW1wdHkgbGluZScpCi0KLSAgICAgICAgZmllbGRz
ID0gc2VsZi5fcmVhZF9maWVsZHMoKQotCi0gICAgICAgIGNoID0gX3JlY2VpdmVfYnl0ZXMoc2Vs
Zi5fc29ja2V0LCAxKQotICAgICAgICBpZiBjaCAhPSAnXG4nOiAgIyAweDBBCi0gICAgICAgICAg
ICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcigKLSAgICAgICAgICAgICAgICAnRXhwZWN0ZWQg
TEYgYnV0IGZvdW5kICVyIHdoaWxlIHJlYWRpbmcgdmFsdWUgJXIgZm9yIGhlYWRlciAnCi0gICAg
ICAgICAgICAgICAgJ25hbWUgJXInICUgKGNoLCB2YWx1ZSwgbmFtZSkpCi0KLSAgICAgICAgc2Vs
Zi5fbG9nZ2VyLmRlYnVnKCdSZWNlaXZlZCBhbiBlbXB0eSBsaW5lJykKLSAgICAgICAgc2VsZi5f
bG9nZ2VyLmRlYnVnKCdTZXJ2ZXJcJ3Mgb3BlbmluZyBoYW5kc2hha2UgaGVhZGVyczogJXInLCBm
aWVsZHMpCi0KLSAgICAgICAgX3ZhbGlkYXRlX21hbmRhdG9yeV9oZWFkZXIoCi0gICAgICAgICAg
ICBmaWVsZHMsCi0gICAgICAgICAgICBjb21tb24uVVBHUkFERV9IRUFERVIsCi0gICAgICAgICAg
ICBjb21tb24uV0VCU09DS0VUX1VQR1JBREVfVFlQRSwKLSAgICAgICAgICAgIEZhbHNlKQotCi0g
ICAgICAgIF92YWxpZGF0ZV9tYW5kYXRvcnlfaGVhZGVyKAotICAgICAgICAgICAgZmllbGRzLAot
ICAgICAgICAgICAgY29tbW9uLkNPTk5FQ1RJT05fSEVBREVSLAotICAgICAgICAgICAgY29tbW9u
LlVQR1JBREVfQ09OTkVDVElPTl9UWVBFLAotICAgICAgICAgICAgRmFsc2UpCi0KLSAgICAgICAg
YWNjZXB0ID0gX2dldF9tYW5kYXRvcnlfaGVhZGVyKAotICAgICAgICAgICAgZmllbGRzLCBjb21t
b24uU0VDX1dFQlNPQ0tFVF9BQ0NFUFRfSEVBREVSKQotCi0gICAgICAgICMgVmFsaWRhdGUKLSAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgYmluYXJ5X2FjY2VwdCA9IGJhc2U2NC5iNjRkZWNvZGUo
YWNjZXB0KQotICAgICAgICBleGNlcHQgVHlwZUVycm9yLCBlOgotICAgICAgICAgICAgcmFpc2Ug
SGFuZHNoYWtlRXJyb3IoCi0gICAgICAgICAgICAgICAgJ0lsbGVnYWwgdmFsdWUgZm9yIGhlYWRl
ciAlczogJXInICUKLSAgICAgICAgICAgICAgICAoY29tbW9uLlNFQ19XRUJTT0NLRVRfQUNDRVBU
X0hFQURFUiwgYWNjZXB0KSkKLQotICAgICAgICBpZiBsZW4oYmluYXJ5X2FjY2VwdCkgIT0gMjA6
Ci0gICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcigKLSAgICAgICAgICAgICAg
ICAnRGVjb2RlZCB2YWx1ZSBvZiAlcyBpcyBub3QgMjAtYnl0ZSBsb25nJyAlCi0gICAgICAgICAg
ICAgICAgY29tbW9uLlNFQ19XRUJTT0NLRVRfQUNDRVBUX0hFQURFUikKLQotICAgICAgICBzZWxm
Ll9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAnUmVzcG9uc2UgZm9yIGNoYWxsZW5nZSA6ICVy
ICglcyknLAotICAgICAgICAgICAgYWNjZXB0LCB1dGlsLmhleGlmeShiaW5hcnlfYWNjZXB0KSkK
LQotICAgICAgICBiaW5hcnlfZXhwZWN0ZWRfYWNjZXB0ID0gdXRpbC5zaGExX2hhc2goCi0gICAg
ICAgICAgICBzZWxmLl9rZXkgKyBjb21tb24uV0VCU09DS0VUX0FDQ0VQVF9VVUlEKS5kaWdlc3Qo
KQotICAgICAgICBleHBlY3RlZF9hY2NlcHQgPSBiYXNlNjQuYjY0ZW5jb2RlKGJpbmFyeV9leHBl
Y3RlZF9hY2NlcHQpCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAgICAg
J0V4cGVjdGVkIHJlc3BvbnNlIGZvciBjaGFsbGVuZ2U6ICVyICglcyknLAotICAgICAgICAgICAg
ZXhwZWN0ZWRfYWNjZXB0LCB1dGlsLmhleGlmeShiaW5hcnlfZXhwZWN0ZWRfYWNjZXB0KSkKLQot
ICAgICAgICBpZiBhY2NlcHQgIT0gZXhwZWN0ZWRfYWNjZXB0OgotICAgICAgICAgICAgcmFpc2Ug
Q2xpZW50SGFuZHNoYWtlRXJyb3IoCi0gICAgICAgICAgICAgICAgJ0ludmFsaWQgJXMgaGVhZGVy
OiAlciAoZXhwZWN0ZWQ6ICVzKScgJQotICAgICAgICAgICAgICAgIChjb21tb24uU0VDX1dFQlNP
Q0tFVF9BQ0NFUFRfSEVBREVSLCBhY2NlcHQsIGV4cGVjdGVkX2FjY2VwdCkpCi0KLSAgICAgICAg
ZGVmbGF0ZV9mcmFtZV9hY2NlcHRlZCA9IEZhbHNlCi0gICAgICAgIHBlcm1lc3NhZ2VfZGVmbGF0
ZV9hY2NlcHRlZCA9IEZhbHNlCi0KLSAgICAgICAgZXh0ZW5zaW9uc19oZWFkZXIgPSBmaWVsZHMu
Z2V0KAotICAgICAgICAgICAgY29tbW9uLlNFQ19XRUJTT0NLRVRfRVhURU5TSU9OU19IRUFERVIu
bG93ZXIoKSkKLSAgICAgICAgYWNjZXB0ZWRfZXh0ZW5zaW9ucyA9IFtdCi0gICAgICAgIGlmIGV4
dGVuc2lvbnNfaGVhZGVyIGlzIG5vdCBOb25lIGFuZCBsZW4oZXh0ZW5zaW9uc19oZWFkZXIpICE9
IDA6Ci0gICAgICAgICAgICBhY2NlcHRlZF9leHRlbnNpb25zID0gY29tbW9uLnBhcnNlX2V4dGVu
c2lvbnMoZXh0ZW5zaW9uc19oZWFkZXJbMF0pCi0KLSAgICAgICAgIyBUT0RPKGJhc2hpKTogU3Vw
cG9ydCB0aGUgbmV3IHN0eWxlIHBlcmZyYW1lIGNvbXByZXNzaW9uIGV4dGVuc2lvbi4KLSAgICAg
ICAgZm9yIGV4dGVuc2lvbiBpbiBhY2NlcHRlZF9leHRlbnNpb25zOgotICAgICAgICAgICAgZXh0
ZW5zaW9uX25hbWUgPSBleHRlbnNpb24ubmFtZSgpCi0gICAgICAgICAgICBpZiAoZXh0ZW5zaW9u
X25hbWUgPT0gY29tbW9uLkRFRkxBVEVfRlJBTUVfRVhURU5TSU9OIGFuZAotICAgICAgICAgICAg
ICAgIHNlbGYuX29wdGlvbnMuZGVmbGF0ZV9mcmFtZSk6Ci0gICAgICAgICAgICAgICAgZGVmbGF0
ZV9mcmFtZV9hY2NlcHRlZCA9IFRydWUKLSAgICAgICAgICAgICAgICBwcm9jZXNzb3IgPSBEZWZs
YXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IoZXh0ZW5zaW9uKQotICAgICAgICAgICAgICAgIHVu
dXNlZF9leHRlbnNpb25fcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25z
ZSgpCi0gICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5kZWZsYXRlX2ZyYW1lID0gcHJvY2Vz
c29yCi0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGVsaWYgKGV4dGVuc2lv
bl9uYW1lID09IGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OIGFuZAotICAgICAg
ICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy51c2VfcGVybWVzc2FnZV9kZWZsYXRlKToKLSAgICAg
ICAgICAgICAgICBwZXJtZXNzYWdlX2RlZmxhdGVfYWNjZXB0ZWQgPSBUcnVlCi0KLSAgICAgICAg
ICAgICAgICBmcmFtZXIgPSBfZ2V0X3Blcm1lc3NhZ2VfZGVmbGF0ZV9mcmFtZXIoZXh0ZW5zaW9u
KQotICAgICAgICAgICAgICAgIGZyYW1lci5zZXRfY29tcHJlc3Nfb3V0Z29pbmdfZW5hYmxlZChU
cnVlKQotICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMudXNlX3Blcm1lc3NhZ2VfZGVmbGF0
ZSA9IGZyYW1lcgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgIHJhaXNl
IENsaWVudEhhbmRzaGFrZUVycm9yKAotICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIGV4dGVu
c2lvbiAlcicgJSBleHRlbnNpb25fbmFtZSkKLQotICAgICAgICBpZiAoc2VsZi5fb3B0aW9ucy5k
ZWZsYXRlX2ZyYW1lIGFuZCBub3QgZGVmbGF0ZV9mcmFtZV9hY2NlcHRlZCk6Ci0gICAgICAgICAg
ICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcigKLSAgICAgICAgICAgICAgICAnUmVxdWVzdGVk
ICVzLCBidXQgdGhlIHNlcnZlciByZWplY3RlZCBpdCcgJQotICAgICAgICAgICAgICAgIGNvbW1v
bi5ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTikKLQotICAgICAgICBpZiAoc2VsZi5fb3B0aW9ucy51
c2VfcGVybWVzc2FnZV9kZWZsYXRlIGFuZAotICAgICAgICAgICAgbm90IHBlcm1lc3NhZ2VfZGVm
bGF0ZV9hY2NlcHRlZCk6Ci0gICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcigK
LSAgICAgICAgICAgICAgICAgICAgJ1JlcXVlc3RlZCAlcywgYnV0IHRoZSBzZXJ2ZXIgcmVqZWN0
ZWQgaXQnICUKLSAgICAgICAgICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9F
WFRFTlNJT04pCi0KLSAgICAgICAgIyBUT0RPKHR5b3NoaW5vKTogSGFuZGxlIFNlYy1XZWJTb2Nr
ZXQtUHJvdG9jb2wKLSAgICAgICAgIyBUT0RPKHR5b3NoaW5vKTogSGFuZGxlIENvb2tpZSwgZXRj
LgotCi0KLWNsYXNzIENsaWVudEhhbmRzaGFrZVByb2Nlc3Nvckh5YmkwMChDbGllbnRIYW5kc2hh
a2VCYXNlKToKLSAgICAiIiJXZWJTb2NrZXQgb3BlbmluZyBoYW5kc2hha2UgcHJvY2Vzc29yIGZv
cgotICAgIGRyYWZ0LWlldGYtaHliaS10aGV3ZWJzb2NrZXRwcm90b2NvbC0wMCAoZXF1aXZhbGVu
dCB0bwotICAgIGRyYWZ0LWhpeGllLXRoZXdlYnNvY2tldHByb3RvY29sLTc2KS4KLSAgICAiIiIK
LQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb2NrZXQsIG9wdGlvbnMpOgotICAgICAgICBzdXBl
cihDbGllbnRIYW5kc2hha2VQcm9jZXNzb3JIeWJpMDAsIHNlbGYpLl9faW5pdF9fKCkKLQotICAg
ICAgICBzZWxmLl9zb2NrZXQgPSBzb2NrZXQKLSAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlv
bnMKLQotICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikK
LQotICAgICAgICBpZiAoc2VsZi5fb3B0aW9ucy5kZWZsYXRlX2ZyYW1lIG9yCi0gICAgICAgICAg
ICBzZWxmLl9vcHRpb25zLnVzZV9wZXJtZXNzYWdlX2RlZmxhdGUpOgotICAgICAgICAgICAgbG9n
Z2luZy5jcml0aWNhbCgnSHlCaSAwMCBkb2VzblwndCBzdXBwb3J0IGV4dGVuc2lvbnMuJykKLSAg
ICAgICAgICAgIHN5cy5leGl0KDEpCi0KLSAgICBkZWYgaGFuZHNoYWtlKHNlbGYpOgotICAgICAg
ICAiIiJQZXJmb3JtcyBvcGVuaW5nIGhhbmRzaGFrZSBvbiB0aGUgc3BlY2lmaWVkIHNvY2tldC4K
LQotICAgICAgICBSYWlzZXM6Ci0gICAgICAgICAgICBDbGllbnRIYW5kc2hha2VFcnJvcjogaGFu
ZHNoYWtlIGZhaWxlZC4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgIyA0LjEgNS4gc2VuZCByZXF1
ZXN0IGxpbmUuCi0gICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKF9idWlsZF9tZXRob2RfbGlu
ZShzZWxmLl9vcHRpb25zLnJlc291cmNlKSkKLSAgICAgICAgIyA0LjEgNi4gTGV0IC9maWVsZHMv
IGJlIGFuIGVtcHR5IGxpc3Qgb2Ygc3RyaW5ncy4KLSAgICAgICAgZmllbGRzID0gW10KLSAgICAg
ICAgIyA0LjEgNy4gQWRkIHRoZSBzdHJpbmcgIlVwZ3JhZGU6IFdlYlNvY2tldCIgdG8gL2ZpZWxk
cy8uCi0gICAgICAgIGZpZWxkcy5hcHBlbmQoX1VQR1JBREVfSEVBREVSX0hJWElFNzUpCi0gICAg
ICAgICMgNC4xIDguIEFkZCB0aGUgc3RyaW5nICJDb25uZWN0aW9uOiBVcGdyYWRlIiB0byAvZmll
bGRzLy4KLSAgICAgICAgZmllbGRzLmFwcGVuZChfQ09OTkVDVElPTl9IRUFERVIpCi0gICAgICAg
ICMgNC4xIDktMTIuIEFkZCBIb3N0OiBmaWVsZCB0byAvZmllbGRzLy4KLSAgICAgICAgZmllbGRz
LmFwcGVuZChfZm9ybWF0X2hvc3RfaGVhZGVyKAotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5z
ZXJ2ZXJfaG9zdCwKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuc2VydmVyX3BvcnQsCi0gICAg
ICAgICAgICBzZWxmLl9vcHRpb25zLnVzZV90bHMpKQotICAgICAgICAjIDQuMSAxMy4gQWRkIE9y
aWdpbjogZmllbGQgdG8gL2ZpZWxkcy8uCi0gICAgICAgIGlmIG5vdCBzZWxmLl9vcHRpb25zLm9y
aWdpbjoKLSAgICAgICAgICAgIHJhaXNlIENsaWVudEhhbmRzaGFrZUVycm9yKAotICAgICAgICAg
ICAgICAgICdTcGVjaWZ5IHRoZSBvcmlnaW4gb2YgdGhlIGNvbm5lY3Rpb24gYnkgLS1vcmlnaW4g
ZmxhZycpCi0gICAgICAgIGZpZWxkcy5hcHBlbmQoX29yaWdpbl9oZWFkZXIoY29tbW9uLk9SSUdJ
Tl9IRUFERVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0
aW9ucy5vcmlnaW4pKQotICAgICAgICAjIFRPRE86IDQuMSAxNCBBZGQgU2VjLVdlYlNvY2tldC1Q
cm90b2NvbDogZmllbGQgdG8gL2ZpZWxkcy8uCi0gICAgICAgICMgVE9ETzogNC4xIDE1IEFkZCBj
b29raWUgaGVhZGVycyB0byAvZmllbGRzLy4KLQotICAgICAgICAjIDQuMSAxNi0yMy4gQWRkIFNl
Yy1XZWJTb2NrZXQtS2V5PG4+IHRvIC9maWVsZHMvLgotICAgICAgICBzZWxmLl9udW1iZXIxLCBr
ZXkxID0gc2VsZi5fZ2VuZXJhdGVfc2VjX3dlYnNvY2tldF9rZXkoKQotICAgICAgICBzZWxmLl9s
b2dnZXIuZGVidWcoJ051bWJlcjE6ICVkJywgc2VsZi5fbnVtYmVyMSkKLSAgICAgICAgZmllbGRz
LmFwcGVuZCgnJXM6ICVzXHJcbicgJSAoY29tbW9uLlNFQ19XRUJTT0NLRVRfS0VZMV9IRUFERVIs
IGtleTEpKQotICAgICAgICBzZWxmLl9udW1iZXIyLCBrZXkyID0gc2VsZi5fZ2VuZXJhdGVfc2Vj
X3dlYnNvY2tldF9rZXkoKQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ051bWJlcjI6ICVk
Jywgc2VsZi5fbnVtYmVyMikKLSAgICAgICAgZmllbGRzLmFwcGVuZCgnJXM6ICVzXHJcbicgJSAo
Y29tbW9uLlNFQ19XRUJTT0NLRVRfS0VZMl9IRUFERVIsIGtleTIpKQotCi0gICAgICAgIGZpZWxk
cy5hcHBlbmQoJyVzOiAwXHJcbicgJSBjb21tb24uU0VDX1dFQlNPQ0tFVF9EUkFGVF9IRUFERVIp
Ci0KLSAgICAgICAgIyA0LjEgMjQuIEZvciBlYWNoIHN0cmluZyBpbiAvZmllbGRzLywgaW4gYSBy
YW5kb20gb3JkZXI6IHNlbmQgdGhlCi0gICAgICAgICMgc3RyaW5nLCBlbmNvZGVkIGFzIFVURi04
LCBmb2xsb3dlZCBieSBhIFVURi04IGVuY29kZWQgVSswMDBEIENBUlJJQUdFCi0gICAgICAgICMg
UkVUVVJOIFUrMDAwQSBMSU5FIEZFRUQgY2hhcmFjdGVyIHBhaXIgKENSTEYpLgotICAgICAgICBy
YW5kb20uc2h1ZmZsZShmaWVsZHMpCi0gICAgICAgIGZvciBmaWVsZCBpbiBmaWVsZHM6Ci0gICAg
ICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZGFsbChmaWVsZCkKLSAgICAgICAgIyA0LjEgMjUuIHNl
bmQgYSBVVEYtOC1lbmNvZGVkIFUrMDAwRCBDQVJSSUFHRSBSRVRVUk4gVSswMDBBIExJTkUgRkVF
RAotICAgICAgICAjIGNoYXJhY3RlciBwYWlyIChDUkxGKS4KLSAgICAgICAgc2VsZi5fc29ja2V0
LnNlbmRhbGwoJ1xyXG4nKQotICAgICAgICAjIDQuMSAyNi4gbGV0IC9rZXkzLyBiZSBhIHN0cmlu
ZyBjb25zaXN0aW5nIG9mIGVpZ2h0IHJhbmRvbSBieXRlcyAob3IKLSAgICAgICAgIyBlcXVpdmFs
ZW50bHksIGEgcmFuZG9tIDY0IGJpdCBpbnRlZ2VyIGVuY29kZWQgaW4gYSBiaWctZW5kaWFuIG9y
ZGVyKS4KLSAgICAgICAgc2VsZi5fa2V5MyA9IHNlbGYuX2dlbmVyYXRlX2tleTMoKQotICAgICAg
ICAjIDQuMSAyNy4gc2VuZCAva2V5My8gdG8gdGhlIHNlcnZlci4KLSAgICAgICAgc2VsZi5fc29j
a2V0LnNlbmRhbGwoc2VsZi5fa2V5MykKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAg
ICAgICAgICAgJ0tleTM6ICVyICglcyknLCBzZWxmLl9rZXkzLCB1dGlsLmhleGlmeShzZWxmLl9r
ZXkzKSkKLQotICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnU2VudCBoYW5kc2hha2UnKQotCi0g
ICAgICAgICMgNC4xIDI4LiBSZWFkIGJ5dGVzIGZyb20gdGhlIHNlcnZlciB1bnRpbCBlaXRoZXIg
dGhlIGNvbm5lY3Rpb24KLSAgICAgICAgIyBjbG9zZXMsIG9yIGEgMHgwQSBieXRlIGlzIHJlYWQu
IGxldCAvZmllbGQvIGJlIHRoZXNlIGJ5dGVzLCBpbmNsdWRpbmcKLSAgICAgICAgIyB0aGUgMHgw
QSBieXRlcy4KLSAgICAgICAgZmllbGQgPSAnJwotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAg
ICAgICAgY2ggPSBfcmVjZWl2ZV9ieXRlcyhzZWxmLl9zb2NrZXQsIDEpCi0gICAgICAgICAgICBm
aWVsZCArPSBjaAotICAgICAgICAgICAgaWYgY2ggPT0gJ1xuJzoKLSAgICAgICAgICAgICAgICBi
cmVhawotICAgICAgICAjIGlmIC9maWVsZC8gaXMgbm90IGF0IGxlYXN0IHNldmVuIGJ5dGVzIGxv
bmcsIG9yIGlmIHRoZSBsYXN0Ci0gICAgICAgICMgdHdvIGJ5dGVzIGFyZW4ndCAweDBEIGFuZCAw
eDBBIHJlc3BlY3RpdmVseSwgb3IgaWYgaXQgZG9lcyBub3QKLSAgICAgICAgIyBjb250YWluIGF0
IGxlYXN0IHR3byAweDIwIGJ5dGVzLCB0aGVuIGZhaWwgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9u
Ci0gICAgICAgICMgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgotICAgICAgICBpZiBsZW4oZmllbGQp
IDwgNyBvciBub3QgZmllbGQuZW5kc3dpdGgoJ1xyXG4nKToKLSAgICAgICAgICAgIHJhaXNlIENs
aWVudEhhbmRzaGFrZUVycm9yKCdXcm9uZyBzdGF0dXMgbGluZTogJXInICUgZmllbGQpCi0gICAg
ICAgIG0gPSByZS5tYXRjaCgnW14gXSogKFteIF0qKSAuKicsIGZpZWxkKQotICAgICAgICBpZiBt
IGlzIE5vbmU6Ci0gICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcigKLSAgICAg
ICAgICAgICAgICAnTm8gSFRUUCBzdGF0dXMgY29kZSBmb3VuZCBpbiBzdGF0dXMgbGluZTogJXIn
ICUgZmllbGQpCi0gICAgICAgICMgNC4xIDI5LiBsZXQgL2NvZGUvIGJlIHRoZSBzdWJzdHJpbmcg
b2YgL2ZpZWxkLyB0aGF0IHN0YXJ0cyBmcm9tIHRoZQotICAgICAgICAjIGJ5dGUgYWZ0ZXIgdGhl
IGZpcnN0IDB4MjAgYnl0ZSwgYW5kIGVuZHMgd2l0aCB0aGUgYnl0ZSBiZWZvcmUgdGhlCi0gICAg
ICAgICMgc2Vjb25kIDB4MjAgYnl0ZS4KLSAgICAgICAgY29kZSA9IG0uZ3JvdXAoMSkKLSAgICAg
ICAgIyA0LjEgMzAuIGlmIC9jb2RlLyBpcyBub3QgdGhyZWUgYnl0ZXMgbG9uZywgb3IgaWYgYW55
IG9mIHRoZSBieXRlcyBpbgotICAgICAgICAjIC9jb2RlLyBhcmUgbm90IGluIHRoZSByYW5nZSAw
eDMwIHRvIDB4OTAsIHRoZW4gZmFpbCB0aGUgV2ViU29ja2V0Ci0gICAgICAgICMgY29ubmVjdGlv
biBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCi0gICAgICAgIGlmIG5vdCByZS5tYXRjaCgnWzAtOV1b
MC05XVswLTldJywgY29kZSk6Ci0gICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJv
cigKLSAgICAgICAgICAgICAgICAnSFRUUCBzdGF0dXMgY29kZSAlciBpcyBub3QgdGhyZWUgZGln
aXQgaW4gc3RhdHVzIGxpbmU6ICVyJyAlCi0gICAgICAgICAgICAgICAgKGNvZGUsIGZpZWxkKSkK
LSAgICAgICAgIyA0LjEgMzEuIGlmIC9jb2RlLywgaW50ZXJwcmV0ZWQgYXMgVVRGLTgsIGlzICIx
MDEiLCB0aGVuIG1vdmUgdG8gdGhlCi0gICAgICAgICMgbmV4dCBzdGVwLgotICAgICAgICBpZiBj
b2RlICE9ICcxMDEnOgotICAgICAgICAgICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCi0g
ICAgICAgICAgICAgICAgJ0V4cGVjdGVkIEhUVFAgc3RhdHVzIGNvZGUgMTAxIGJ1dCBmb3VuZCAl
ciBpbiBzdGF0dXMgbGluZTogJwotICAgICAgICAgICAgICAgICclcicgJSAoY29kZSwgZmllbGQp
KQotICAgICAgICAjIDQuMSAzMi0zOS4gcmVhZCBmaWVsZHMgaW50byAvZmllbGRzLwotICAgICAg
ICBmaWVsZHMgPSBzZWxmLl9yZWFkX2ZpZWxkcygpCi0gICAgICAgICMgNC4xIDQwLiBfRmllbGRz
IHByb2Nlc3NpbmdfCi0gICAgICAgICMgcmVhZCBhIGJ5dGUgZnJvbSBzZXJ2ZXIKLSAgICAgICAg
Y2ggPSBfcmVjZWl2ZV9ieXRlcyhzZWxmLl9zb2NrZXQsIDEpCi0gICAgICAgIGlmIGNoICE9ICdc
bic6ICAjIDB4MEEKLSAgICAgICAgICAgIHJhaXNlIENsaWVudEhhbmRzaGFrZUVycm9yKCdFeHBl
Y3RlZCBMRiBidXQgZm91bmQgJXInICUgY2gpCi0gICAgICAgICMgNC4xIDQxLiBjaGVjayAvZmll
bGRzLwotICAgICAgICAjIFRPRE8odWthaSk6IHByb3RvY29sCi0gICAgICAgICMgaWYgdGhlIGVu
dHJ5J3MgbmFtZSBpcyAidXBncmFkZSIKLSAgICAgICAgIyAgaWYgdGhlIHZhbHVlIGlzIG5vdCBl
eGFjdGx5IGVxdWFsIHRvIHRoZSBzdHJpbmcgIldlYlNvY2tldCIsCi0gICAgICAgICMgIHRoZW4g
ZmFpbCB0aGUgV2ViU29ja2V0IGNvbm5lY3Rpb24gYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgotICAg
ICAgICBfdmFsaWRhdGVfbWFuZGF0b3J5X2hlYWRlcigKLSAgICAgICAgICAgIGZpZWxkcywKLSAg
ICAgICAgICAgIGNvbW1vbi5VUEdSQURFX0hFQURFUiwKLSAgICAgICAgICAgIGNvbW1vbi5XRUJT
T0NLRVRfVVBHUkFERV9UWVBFX0hJWElFNzUsCi0gICAgICAgICAgICBUcnVlKQotICAgICAgICAj
IGlmIHRoZSBlbnRyeSdzIG5hbWUgaXMgImNvbm5lY3Rpb24iCi0gICAgICAgICMgIGlmIHRoZSB2
YWx1ZSwgY29udmVydGVkIHRvIEFTQ0lJIGxvd2VyY2FzZSwgaXMgbm90IGV4YWN0bHkgZXF1YWwK
LSAgICAgICAgIyAgdG8gdGhlIHN0cmluZyAidXBncmFkZSIsIHRoZW4gZmFpbCB0aGUgV2ViU29j
a2V0IGNvbm5lY3Rpb24gYW5kCi0gICAgICAgICMgIGFib3J0IHRoZXNlIHN0ZXBzLgotICAgICAg
ICBfdmFsaWRhdGVfbWFuZGF0b3J5X2hlYWRlcigKLSAgICAgICAgICAgIGZpZWxkcywKLSAgICAg
ICAgICAgIGNvbW1vbi5DT05ORUNUSU9OX0hFQURFUiwKLSAgICAgICAgICAgIGNvbW1vbi5VUEdS
QURFX0NPTk5FQ1RJT05fVFlQRSwKLSAgICAgICAgICAgIEZhbHNlKQotCi0gICAgICAgIG9yaWdp
biA9IF9nZXRfbWFuZGF0b3J5X2hlYWRlcigKLSAgICAgICAgICAgIGZpZWxkcywgY29tbW9uLlNF
Q19XRUJTT0NLRVRfT1JJR0lOX0hFQURFUikKLQotICAgICAgICBsb2NhdGlvbiA9IF9nZXRfbWFu
ZGF0b3J5X2hlYWRlcigKLSAgICAgICAgICAgIGZpZWxkcywgY29tbW9uLlNFQ19XRUJTT0NLRVRf
TE9DQVRJT05fSEVBREVSKQotCi0gICAgICAgICMgVE9ETyh1a2FpKTogY2hlY2sgb3JpZ2luLCBs
b2NhdGlvbiwgY29va2llLCAuLgotCi0gICAgICAgICMgNC4xIDQyLiBsZXQgL2NoYWxsZW5nZS8g
YmUgdGhlIGNvbmNhdGVuYXRpb24gb2YgL251bWJlcl8xLywKLSAgICAgICAgIyBleHByZXNzZWQg
YXMgYSBiaWcgZW5kaWFuIDMyIGJpdCBpbnRlZ2VyLCAvbnVtYmVyXzIvLCBleHByZXNzZWQKLSAg
ICAgICAgIyBhcyBiaWcgZW5kaWFuIDMyIGJpdCBpbnRlZ2VyLCBhbmQgdGhlIGVpZ2h0IGJ5dGVz
IG9mIC9rZXlfMy8gaW4gdGhlCi0gICAgICAgICMgb3JkZXIgdGhleSB3ZXJlIHNlbnQgb24gdGhl
IHdpcmUuCi0gICAgICAgIGNoYWxsZW5nZSA9IHN0cnVjdC5wYWNrKCchSScsIHNlbGYuX251bWJl
cjEpCi0gICAgICAgIGNoYWxsZW5nZSArPSBzdHJ1Y3QucGFjaygnIUknLCBzZWxmLl9udW1iZXIy
KQotICAgICAgICBjaGFsbGVuZ2UgKz0gc2VsZi5fa2V5MwotCi0gICAgICAgIHNlbGYuX2xvZ2dl
ci5kZWJ1ZygKLSAgICAgICAgICAgICdDaGFsbGVuZ2U6ICVyICglcyknLCBjaGFsbGVuZ2UsIHV0
aWwuaGV4aWZ5KGNoYWxsZW5nZSkpCi0KLSAgICAgICAgIyA0LjEgNDMuIGxldCAvZXhwZWN0ZWQv
IGJlIHRoZSBNRDUgZmluZ2VycHJpbnQgb2YgL2NoYWxsZW5nZS8gYXMgYQotICAgICAgICAjIGJp
Zy1lbmRpYW4gMTI4IGJpdCBzdHJpbmcuCi0gICAgICAgIGV4cGVjdGVkID0gdXRpbC5tZDVfaGFz
aChjaGFsbGVuZ2UpLmRpZ2VzdCgpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAg
ICAgICAgICdFeHBlY3RlZCBjaGFsbGVuZ2UgcmVzcG9uc2U6ICVyICglcyknLAotICAgICAgICAg
ICAgZXhwZWN0ZWQsIHV0aWwuaGV4aWZ5KGV4cGVjdGVkKSkKLQotICAgICAgICAjIDQuMSA0NC4g
cmVhZCBzaXh0ZWVuIGJ5dGVzIGZyb20gdGhlIHNlcnZlci4KLSAgICAgICAgIyBsZXQgL3JlcGx5
LyBiZSB0aG9zZSBieXRlcy4KLSAgICAgICAgcmVwbHkgPSBfcmVjZWl2ZV9ieXRlcyhzZWxmLl9z
b2NrZXQsIDE2KQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAnQWN0
dWFsIGNoYWxsZW5nZSByZXNwb25zZTogJXIgKCVzKScsIHJlcGx5LCB1dGlsLmhleGlmeShyZXBs
eSkpCi0KLSAgICAgICAgIyA0LjEgNDUuIGlmIC9yZXBseS8gZG9lcyBub3QgZXhhY3RseSBlcXVh
bCAvZXhwZWN0ZWQvLCB0aGVuIGZhaWwKLSAgICAgICAgIyB0aGUgV2ViU29ja2V0IGNvbm5lY3Rp
b24gYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgotICAgICAgICBpZiBleHBlY3RlZCAhPSByZXBseToK
LSAgICAgICAgICAgIHJhaXNlIENsaWVudEhhbmRzaGFrZUVycm9yKAotICAgICAgICAgICAgICAg
ICdCYWQgY2hhbGxlbmdlIHJlc3BvbnNlOiAlciAoZXhwZWN0ZWQpICE9ICVyIChhY3R1YWwpJyAl
Ci0gICAgICAgICAgICAgICAgKGV4cGVjdGVkLCByZXBseSkpCi0gICAgICAgICMgNC4xIDQ2LiBU
aGUgKldlYlNvY2tldCBjb25uZWN0aW9uIGlzIGVzdGFibGlzaGVkKi4KLQotICAgIGRlZiBfZ2Vu
ZXJhdGVfc2VjX3dlYnNvY2tldF9rZXkoc2VsZik6Ci0gICAgICAgICMgNC4xIDE2LiBsZXQgL3Nw
YWNlc19uLyBiZSBhIHJhbmRvbSBpbnRlZ2VyIGZyb20gMSB0byAxMiBpbmNsdXNpdmUuCi0gICAg
ICAgIHNwYWNlcyA9IHJhbmRvbS5yYW5kaW50KDEsIDEyKQotICAgICAgICAjIDQuMSAxNy4gbGV0
IC9tYXhfbi8gYmUgdGhlIGxhcmdlc3QgaW50ZWdlciBub3QgZ3JlYXRlciB0aGFuCi0gICAgICAg
ICMgIDQsMjk0LDk2NywyOTUgZGl2aWRlZCBieSAvc3BhY2VzX24vLgotICAgICAgICBtYXhudW0g
PSA0Mjk0OTY3Mjk1IC8gc3BhY2VzCi0gICAgICAgICMgNC4xIDE4LiBsZXQgL251bWJlcl9uLyBi
ZSBhIHJhbmRvbSBpbnRlZ2VyIGZyb20gMCB0byAvbWF4X24vCi0gICAgICAgICMgaW5jbHVzaXZl
LgotICAgICAgICBudW1iZXIgPSByYW5kb20ucmFuZGludCgwLCBtYXhudW0pCi0gICAgICAgICMg
NC4xIDE5LiBsZXQgL3Byb2R1Y3Rfbi8gYmUgdGhlIHJlc3VsdCBvZiBtdWx0aXBseWluZyAvbnVt
YmVyX24vIGFuZAotICAgICAgICAjIC9zcGFjZXNfbi8gdG9nZXRoZXIuCi0gICAgICAgIHByb2R1
Y3QgPSBudW1iZXIgKiBzcGFjZXMKLSAgICAgICAgIyA0LjEgMjAuIGxldCAva2V5X24vIGJlIGEg
c3RyaW5nIGNvbnNpc3Rpbmcgb2YgL3Byb2R1Y3Rfbi8sIGV4cHJlc3NlZAotICAgICAgICAjIGlu
IGJhc2UgdGVuIHVzaW5nIHRoZSBudW1lcmFscyBpbiB0aGUgcmFuZ2UgVSswMDMwIERJR0lUIFpF
Uk8gKDApIHRvCi0gICAgICAgICMgVSswMDM5IERJR0lUIE5JTkUgKDkpLgotICAgICAgICBrZXkg
PSBzdHIocHJvZHVjdCkKLSAgICAgICAgIyA0LjEgMjEuIGluc2VydCBiZXR3ZWVuIG9uZSBhbmQg
dHdlbHZlIHJhbmRvbSBjaGFyYWN0ZXJzIGZyb20gdGhlCi0gICAgICAgICMgcmFuZ2UgVSswMDIx
IHRvIFUrMDAyRiBhbmQgVSswMDNBIHRvIFUrMDA3RSBpbnRvIC9rZXlfbi8gYXQgcmFuZG9tCi0g
ICAgICAgICMgcG9zaXRpb25zLgotICAgICAgICBhdmFpbGFibGVfY2hhcnMgPSByYW5nZSgweDIx
LCAweDJmICsgMSkgKyByYW5nZSgweDNhLCAweDdlICsgMSkKLSAgICAgICAgbiA9IHJhbmRvbS5y
YW5kaW50KDEsIDEyKQotICAgICAgICBmb3IgXyBpbiB4cmFuZ2Uobik6Ci0gICAgICAgICAgICBj
aCA9IHJhbmRvbS5jaG9pY2UoYXZhaWxhYmxlX2NoYXJzKQotICAgICAgICAgICAgcG9zID0gcmFu
ZG9tLnJhbmRpbnQoMCwgbGVuKGtleSkpCi0gICAgICAgICAgICBrZXkgPSBrZXlbMDpwb3NdICsg
Y2hyKGNoKSArIGtleVtwb3M6XQotICAgICAgICAjIDQuMSAyMi4gaW5zZXJ0IC9zcGFjZXNfbi8g
VSswMDIwIFNQQUNFIGNoYXJhY3RlcnMgaW50byAva2V5X24vIGF0Ci0gICAgICAgICMgcmFuZG9t
IHBvc2l0aW9ucyBvdGhlciB0aGFuIHN0YXJ0IG9yIGVuZCBvZiB0aGUgc3RyaW5nLgotICAgICAg
ICBmb3IgXyBpbiB4cmFuZ2Uoc3BhY2VzKToKLSAgICAgICAgICAgIHBvcyA9IHJhbmRvbS5yYW5k
aW50KDEsIGxlbihrZXkpIC0gMSkKLSAgICAgICAgICAgIGtleSA9IGtleVswOnBvc10gKyAnICcg
KyBrZXlbcG9zOl0KLSAgICAgICAgcmV0dXJuIG51bWJlciwga2V5Ci0KLSAgICBkZWYgX2dlbmVy
YXRlX2tleTMoc2VsZik6Ci0gICAgICAgICMgNC4xIDI2LiBsZXQgL2tleTMvIGJlIGEgc3RyaW5n
IGNvbnNpc3Rpbmcgb2YgZWlnaHQgcmFuZG9tIGJ5dGVzIChvcgotICAgICAgICAjIGVxdWl2YWxl
bnRseSwgYSByYW5kb20gNjQgYml0IGludGVnZXIgZW5jb2RlZCBpbiBhIGJpZy1lbmRpYW4gb3Jk
ZXIpLgotICAgICAgICByZXR1cm4gJycuam9pbihbY2hyKHJhbmRvbS5yYW5kaW50KDAsIDI1NSkp
IGZvciBfIGluIHhyYW5nZSg4KV0pCi0KLQotY2xhc3MgQ2xpZW50Q29ubmVjdGlvbihvYmplY3Qp
OgotICAgICIiIkEgd3JhcHBlciBmb3Igc29ja2V0IG9iamVjdCB0byBwcm92aWRlIHRoZSBtcF9j
b25uIGludGVyZmFjZS4KLSAgICBtb2RfcHl3ZWJzb2NrZXQgbGlicmFyeSBpcyBkZXNpZ25lZCB0
byBiZSB3b3JraW5nIG9uIEFwYWNoZSBtb2RfcHl0aG9uJ3MKLSAgICBtcF9jb25uIG9iamVjdC4K
LSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb2NrZXQpOgotICAgICAgICBzZWxm
Ll9zb2NrZXQgPSBzb2NrZXQKLQotICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKLSAgICAgICAg
c2VsZi5fc29ja2V0LnNlbmRhbGwoZGF0YSkKLQotICAgIGRlZiByZWFkKHNlbGYsIG4pOgotICAg
ICAgICByZXR1cm4gc2VsZi5fc29ja2V0LnJlY3YobikKLQotICAgIGRlZiBnZXRfcmVtb3RlX2Fk
ZHIoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9zb2NrZXQuZ2V0cGVlcm5hbWUoKQotICAg
IHJlbW90ZV9hZGRyID0gcHJvcGVydHkoZ2V0X3JlbW90ZV9hZGRyKQotCi0KLWNsYXNzIENsaWVu
dFJlcXVlc3Qob2JqZWN0KToKLSAgICAiIiJBIHdyYXBwZXIgY2xhc3MganVzdCB0byBtYWtlIGl0
IGFibGUgdG8gcGFzcyBhIHNvY2tldCBvYmplY3QgdG8KLSAgICBmdW5jdGlvbnMgdGhhdCBleHBl
Y3QgYSBtcF9yZXF1ZXN0IG9iamVjdC4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBzb2NrZXQpOgotICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIo
c2VsZikKLQotICAgICAgICBzZWxmLl9zb2NrZXQgPSBzb2NrZXQKLSAgICAgICAgc2VsZi5jb25u
ZWN0aW9uID0gQ2xpZW50Q29ubmVjdGlvbihzb2NrZXQpCi0KLQotZGVmIF9pbXBvcnRfc3NsKCk6
Ci0gICAgZ2xvYmFsIHNzbAotICAgIHRyeToKLSAgICAgICAgaW1wb3J0IHNzbAotICAgICAgICBy
ZXR1cm4gVHJ1ZQotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgcmV0dXJuIEZhbHNl
Ci0KLQotZGVmIF9pbXBvcnRfcHlvcGVuc3NsKCk6Ci0gICAgZ2xvYmFsIE9wZW5TU0wKLSAgICB0
cnk6Ci0gICAgICAgIGltcG9ydCBPcGVuU1NMLlNTTAotICAgICAgICByZXR1cm4gVHJ1ZQotICAg
IGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLQotY2xhc3MgRWNo
b0NsaWVudChvYmplY3QpOgotICAgICIiIldlYlNvY2tldCBlY2hvIGNsaWVudC4iIiIKLQotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25zKToKLSAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9w
dGlvbnMKLSAgICAgICAgc2VsZi5fc29ja2V0ID0gTm9uZQotCi0gICAgICAgIHNlbGYuX2xvZ2dl
ciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQotCi0gICAgZGVmIHJ1bihzZWxmKToKLSAg
ICAgICAgIiIiUnVuIHRoZSBjbGllbnQuCi0KLSAgICAgICAgU2hha2UgaGFuZHMgYW5kIHRoZW4g
cmVwZWF0IHNlbmRpbmcgbWVzc2FnZSBhbmQgcmVjZWl2aW5nIGl0cyBlY2hvLgotICAgICAgICAi
IiIKLQotICAgICAgICBzZWxmLl9zb2NrZXQgPSBzb2NrZXQuc29ja2V0KCkKLSAgICAgICAgc2Vs
Zi5fc29ja2V0LnNldHRpbWVvdXQoc2VsZi5fb3B0aW9ucy5zb2NrZXRfdGltZW91dCkKLSAgICAg
ICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fc29ja2V0LmNvbm5lY3QoKHNlbGYuX29wdGlvbnMu
c2VydmVyX2hvc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0
aW9ucy5zZXJ2ZXJfcG9ydCkpCi0gICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnVzZV90bHM6
Ci0gICAgICAgICAgICAgICAgc2VsZi5fc29ja2V0ID0gX1RMU1NvY2tldCgKLSAgICAgICAgICAg
ICAgICAgICAgc2VsZi5fc29ja2V0LAotICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25z
LnRsc19tb2R1bGUsCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMudGxzX3ZlcnNp
b24sCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuZGlzYWJsZV90bHNfY29tcHJl
c3Npb24pCi0KLSAgICAgICAgICAgIHZlcnNpb24gPSBzZWxmLl9vcHRpb25zLnByb3RvY29sX3Zl
cnNpb24KLQotICAgICAgICAgICAgaWYgKHZlcnNpb24gPT0gX1BST1RPQ09MX1ZFUlNJT05fSFlC
STA4IG9yCi0gICAgICAgICAgICAgICAgdmVyc2lvbiA9PSBfUFJPVE9DT0xfVkVSU0lPTl9IWUJJ
MTMpOgotICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRzaGFrZSA9IENsaWVudEhhbmRzaGFrZVBy
b2Nlc3NvcigKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fc29ja2V0LCBzZWxmLl9vcHRpb25z
KQotICAgICAgICAgICAgZWxpZiB2ZXJzaW9uID09IF9QUk9UT0NPTF9WRVJTSU9OX0hZQkkwMDoK
LSAgICAgICAgICAgICAgICBzZWxmLl9oYW5kc2hha2UgPSBDbGllbnRIYW5kc2hha2VQcm9jZXNz
b3JIeWJpMDAoCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3NvY2tldCwgc2VsZi5fb3B0aW9u
cykKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigK
LSAgICAgICAgICAgICAgICAgICAgJ0ludmFsaWQgLS1wcm90b2NvbC12ZXJzaW9uIGZsYWc6ICVy
JyAlIHZlcnNpb24pCi0KLSAgICAgICAgICAgIHNlbGYuX2hhbmRzaGFrZS5oYW5kc2hha2UoKQot
Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnQ29ubmVjdGlvbiBlc3RhYmxpc2hlZCcp
Ci0KLSAgICAgICAgICAgIHJlcXVlc3QgPSBDbGllbnRSZXF1ZXN0KHNlbGYuX3NvY2tldCkKLQot
ICAgICAgICAgICAgdmVyc2lvbl9tYXAgPSB7Ci0gICAgICAgICAgICAgICAgX1BST1RPQ09MX1ZF
UlNJT05fSFlCSTA4OiBjb21tb24uVkVSU0lPTl9IWUJJMDgsCi0gICAgICAgICAgICAgICAgX1BS
T1RPQ09MX1ZFUlNJT05fSFlCSTEzOiBjb21tb24uVkVSU0lPTl9IWUJJMTMsCi0gICAgICAgICAg
ICAgICAgX1BST1RPQ09MX1ZFUlNJT05fSFlCSTAwOiBjb21tb24uVkVSU0lPTl9IWUJJMDB9Ci0g
ICAgICAgICAgICByZXF1ZXN0LndzX3ZlcnNpb24gPSB2ZXJzaW9uX21hcFt2ZXJzaW9uXQotCi0g
ICAgICAgICAgICBpZiAodmVyc2lvbiA9PSBfUFJPVE9DT0xfVkVSU0lPTl9IWUJJMDggb3IKLSAg
ICAgICAgICAgICAgICB2ZXJzaW9uID09IF9QUk9UT0NPTF9WRVJTSU9OX0hZQkkxMyk6Ci0gICAg
ICAgICAgICAgICAgc3RyZWFtX29wdGlvbiA9IFN0cmVhbU9wdGlvbnMoKQotICAgICAgICAgICAg
ICAgIHN0cmVhbV9vcHRpb24ubWFza19zZW5kID0gVHJ1ZQotICAgICAgICAgICAgICAgIHN0cmVh
bV9vcHRpb24udW5tYXNrX3JlY2VpdmUgPSBGYWxzZQotCi0gICAgICAgICAgICAgICAgaWYgc2Vs
Zi5fb3B0aW9ucy5kZWZsYXRlX2ZyYW1lIGlzIG5vdCBGYWxzZToKLSAgICAgICAgICAgICAgICAg
ICAgcHJvY2Vzc29yID0gc2VsZi5fb3B0aW9ucy5kZWZsYXRlX2ZyYW1lCi0gICAgICAgICAgICAg
ICAgICAgIHByb2Nlc3Nvci5zZXR1cF9zdHJlYW1fb3B0aW9ucyhzdHJlYW1fb3B0aW9uKQotCi0g
ICAgICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy51c2VfcGVybWVzc2FnZV9kZWZsYXRlIGlz
IG5vdCBGYWxzZToKLSAgICAgICAgICAgICAgICAgICAgZnJhbWVyID0gc2VsZi5fb3B0aW9ucy51
c2VfcGVybWVzc2FnZV9kZWZsYXRlCi0gICAgICAgICAgICAgICAgICAgIGZyYW1lci5zZXR1cF9z
dHJlYW1fb3B0aW9ucyhzdHJlYW1fb3B0aW9uKQotCi0gICAgICAgICAgICAgICAgc2VsZi5fc3Ry
ZWFtID0gU3RyZWFtKHJlcXVlc3QsIHN0cmVhbV9vcHRpb24pCi0gICAgICAgICAgICBlbGlmIHZl
cnNpb24gPT0gX1BST1RPQ09MX1ZFUlNJT05fSFlCSTAwOgotICAgICAgICAgICAgICAgIHNlbGYu
X3N0cmVhbSA9IFN0cmVhbUhpeGllNzUocmVxdWVzdCwgVHJ1ZSkKLQotICAgICAgICAgICAgZm9y
IGxpbmUgaW4gc2VsZi5fb3B0aW9ucy5tZXNzYWdlLnNwbGl0KCcsJyk6Ci0gICAgICAgICAgICAg
ICAgc2VsZi5fc3RyZWFtLnNlbmRfbWVzc2FnZShsaW5lKQotICAgICAgICAgICAgICAgIGlmIHNl
bGYuX29wdGlvbnMudmVyYm9zZToKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgJ1NlbmQ6ICVz
JyAlIGxpbmUKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHJlY2Vp
dmVkID0gc2VsZi5fc3RyZWFtLnJlY2VpdmVfbWVzc2FnZSgpCi0KLSAgICAgICAgICAgICAgICAg
ICAgaWYgc2VsZi5fb3B0aW9ucy52ZXJib3NlOgotICAgICAgICAgICAgICAgICAgICAgICAgcHJp
bnQgJ1JlY3Y6ICVzJyAlIHJlY2VpdmVkCi0gICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlv
biwgZToKLSAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy52ZXJib3NlOgotICAg
ICAgICAgICAgICAgICAgICAgICAgcHJpbnQgJ0Vycm9yOiAlcycgJSBlCi0gICAgICAgICAgICAg
ICAgICAgIHJhaXNlCi0KLSAgICAgICAgICAgIHNlbGYuX2RvX2Nsb3NpbmdfaGFuZHNoYWtlKCkK
LSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX3NvY2tldC5jbG9zZSgpCi0KLSAg
ICBkZWYgX2RvX2Nsb3NpbmdfaGFuZHNoYWtlKHNlbGYpOgotICAgICAgICAiIiJQZXJmb3JtIGNs
b3NpbmcgaGFuZHNoYWtlIHVzaW5nIHRoZSBzcGVjaWZpZWQgY2xvc2luZyBmcmFtZS4iIiIKLQot
ICAgICAgICBpZiBzZWxmLl9vcHRpb25zLm1lc3NhZ2Uuc3BsaXQoJywnKVstMV0gPT0gX0dPT0RC
WUVfTUVTU0FHRToKLSAgICAgICAgICAgICMgcmVxdWVzdGVkIHNlcnZlciBpbml0aWF0ZWQgY2xv
c2luZyBoYW5kc2hha2UsIHNvCi0gICAgICAgICAgICAjIGV4cGVjdGluZyBjbG9zaW5nIGhhbmRz
aGFrZSBtZXNzYWdlIGZyb20gc2VydmVyLgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8o
J1dhaXQgZm9yIHNlcnZlci1pbml0aWF0ZWQgY2xvc2luZyBoYW5kc2hha2UnKQotICAgICAgICAg
ICAgbWVzc2FnZSA9IHNlbGYuX3N0cmVhbS5yZWNlaXZlX21lc3NhZ2UoKQotICAgICAgICAgICAg
aWYgbWVzc2FnZSBpcyBOb25lOgotICAgICAgICAgICAgICAgIHByaW50ICdSZWN2IGNsb3NlJwot
ICAgICAgICAgICAgICAgIHByaW50ICdTZW5kIGFjaycKLSAgICAgICAgICAgICAgICBzZWxmLl9s
b2dnZXIuaW5mbygKLSAgICAgICAgICAgICAgICAgICAgJ1JlY2VpdmVkIGNsb3NpbmcgaGFuZHNo
YWtlIGFuZCBzZW50IGFjaycpCi0gICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHByaW50
ICdTZW5kIGNsb3NlJwotICAgICAgICBzZWxmLl9zdHJlYW0uY2xvc2VfY29ubmVjdGlvbigpCi0g
ICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdTZW50IGNsb3NpbmcgaGFuZHNoYWtlJykKLSAgICAg
ICAgcHJpbnQgJ1JlY3YgYWNrJwotICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnUmVjZWl2ZWQg
YWNrJykKLQotCi1kZWYgbWFpbigpOgotICAgIHN5cy5zdGRvdXQgPSBjb2RlY3MuZ2V0d3JpdGVy
KCd1dGYtOCcpKHN5cy5zdGRvdXQpCi0KLSAgICBwYXJzZXIgPSBPcHRpb25QYXJzZXIoKQotICAg
ICMgV2UgYWNjZXB0IC0tY29tbWFuZF9saW5lX2ZsYWcgc3R5bGUgZmxhZ3Mgd2hpY2ggaXMgdGhl
IHNhbWUgYXMgR29vZ2xlCi0gICAgIyBnZmxhZ3MgaW4gYWRkaXRpb24gdG8gY29tbW9uIC0tY29t
bWFuZC1saW5lLWZsYWcgc3R5bGUgZmxhZ3MuCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy1zJywg
Jy0tc2VydmVyLWhvc3QnLCAnLS1zZXJ2ZXJfaG9zdCcsCi0gICAgICAgICAgICAgICAgICAgICAg
ZGVzdD0nc2VydmVyX2hvc3QnLCB0eXBlPSdzdHJpbmcnLAotICAgICAgICAgICAgICAgICAgICAg
IGRlZmF1bHQ9J2xvY2FsaG9zdCcsIGhlbHA9J3NlcnZlciBob3N0JykKLSAgICBwYXJzZXIuYWRk
X29wdGlvbignLXAnLCAnLS1zZXJ2ZXItcG9ydCcsICctLXNlcnZlcl9wb3J0JywKLSAgICAgICAg
ICAgICAgICAgICAgICBkZXN0PSdzZXJ2ZXJfcG9ydCcsIHR5cGU9J2ludCcsCi0gICAgICAgICAg
ICAgICAgICAgICAgZGVmYXVsdD1fVU5ERUZJTkVEX1BPUlQsIGhlbHA9J3NlcnZlciBwb3J0JykK
LSAgICBwYXJzZXIuYWRkX29wdGlvbignLW8nLCAnLS1vcmlnaW4nLCBkZXN0PSdvcmlnaW4nLCB0
eXBlPSdzdHJpbmcnLAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwgaGVscD0n
b3JpZ2luJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLXInLCAnLS1yZXNvdXJjZScsIGRlc3Q9
J3Jlc291cmNlJywgdHlwZT0nc3RyaW5nJywKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0
PScvZWNobycsIGhlbHA9J3Jlc291cmNlIHBhdGgnKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCct
bScsICctLW1lc3NhZ2UnLCBkZXN0PSdtZXNzYWdlJywgdHlwZT0nc3RyaW5nJywKLSAgICAgICAg
ICAgICAgICAgICAgICBoZWxwPSgnY29tbWEtc2VwYXJhdGVkIG1lc3NhZ2VzIHRvIHNlbmQuICcK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICclcyB3aWxsIGZvcmNlIGNsb3NlIHRoZSBjb25u
ZWN0aW9uIGZyb20gc2VydmVyLicgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9HT09E
QllFX01FU1NBR0UpKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctcScsICctLXF1aWV0JywgZGVz
dD0ndmVyYm9zZScsIGFjdGlvbj0nc3RvcmVfZmFsc2UnLAotICAgICAgICAgICAgICAgICAgICAg
IGRlZmF1bHQ9VHJ1ZSwgaGVscD0nc3VwcHJlc3MgbWVzc2FnZXMnKQotICAgIHBhcnNlci5hZGRf
b3B0aW9uKCctdCcsICctLXRscycsIGRlc3Q9J3VzZV90bHMnLCBhY3Rpb249J3N0b3JlX3RydWUn
LAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsIGhlbHA9J3VzZSBUTFMgKHdz
czovLykuIEJ5IGRlZmF1bHQsICcKLSAgICAgICAgICAgICAgICAgICAgICAnaXQgbG9va3MgZm9y
IHNzbCBhbmQgcHlPcGVuU1NMIG1vZHVsZSBhbmQgdXNlcyBmb3VuZCAnCi0gICAgICAgICAgICAg
ICAgICAgICAgJ29uZS4gVXNlIC0tdGxzLW1vZHVsZSBvcHRpb24gdG8gc3BlY2lmeSB3aGljaCBt
b2R1bGUgJwotICAgICAgICAgICAgICAgICAgICAgICd0byB1c2UnKQotICAgIHBhcnNlci5hZGRf
b3B0aW9uKCctLXRscy1tb2R1bGUnLCAnLS10bHNfbW9kdWxlJywgZGVzdD0ndGxzX21vZHVsZScs
Ci0gICAgICAgICAgICAgICAgICAgICAgdHlwZT0nY2hvaWNlJywKLSAgICAgICAgICAgICAgICAg
ICAgICBjaG9pY2VzPVtfVExTX0JZX1NUQU5EQVJEX01PRFVMRSwgX1RMU19CWV9QWU9QRU5TU0xd
LAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1VzZSBzc2wgbW9kdWxlIGlmICIlcyIgaXMg
c3BlY2lmaWVkLiAnCi0gICAgICAgICAgICAgICAgICAgICAgJ1VzZSBweU9wZW5TU0wgbW9kdWxl
IGlmICIlcyIgaXMgc3BlY2lmaWVkJyAlCi0gICAgICAgICAgICAgICAgICAgICAgKF9UTFNfQllf
U1RBTkRBUkRfTU9EVUxFLCBfVExTX0JZX1BZT1BFTlNTTCkpCi0gICAgcGFyc2VyLmFkZF9vcHRp
b24oJy0tdGxzLXZlcnNpb24nLCAnLS10bHNfdmVyc2lvbicsCi0gICAgICAgICAgICAgICAgICAg
ICAgZGVzdD0ndGxzX3ZlcnNpb24nLAotICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J3N0cmlu
ZycsIGRlZmF1bHQ9X1RMU19WRVJTSU9OX1NTTDIzLAotICAgICAgICAgICAgICAgICAgICAgIGhl
bHA9J1RMUy9TU0wgdmVyc2lvbiB0byB1c2UuIE9uZSBvZiBcJycgKwotICAgICAgICAgICAgICAg
ICAgICAgIF9UTFNfVkVSU0lPTl9TU0wyMyArICdcJyAoU1NMIHZlcnNpb24gMiBvciAzKSwgXCcn
ICsKLSAgICAgICAgICAgICAgICAgICAgICBfVExTX1ZFUlNJT05fU1NMMyArICdcJyAoU1NMIHZl
cnNpb24gMyksIFwnJyArCi0gICAgICAgICAgICAgICAgICAgICAgX1RMU19WRVJTSU9OX1RMUzEg
KyAnXCcgKFRMUyB2ZXJzaW9uIDEpJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLS1kaXNhYmxl
LXRscy1jb21wcmVzc2lvbicsICctLWRpc2FibGVfdGxzX2NvbXByZXNzaW9uJywKLSAgICAgICAg
ICAgICAgICAgICAgICBkZXN0PSdkaXNhYmxlX3Rsc19jb21wcmVzc2lvbicsCi0gICAgICAgICAg
ICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAg
ICAgICAgICAgICAgICBoZWxwPSdEaXNhYmxlIFRMUyBjb21wcmVzc2lvbi4gQXZhaWxhYmxlIG9u
bHkgd2hlbiAnCi0gICAgICAgICAgICAgICAgICAgICAgJ3B5T3BlblNTTCBtb2R1bGUgaXMgdXNl
ZC4nKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctaycsICctLXNvY2tldC10aW1lb3V0JywgJy0t
c29ja2V0X3RpbWVvdXQnLAotICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3NvY2tldF90aW1l
b3V0JywgdHlwZT0naW50JywgZGVmYXVsdD1fVElNRU9VVF9TRUMsCi0gICAgICAgICAgICAgICAg
ICAgICAgaGVscD0nVGltZW91dChzZWMpIGZvciBzb2NrZXRzJykKLSAgICBwYXJzZXIuYWRkX29w
dGlvbignLS1kcmFmdDc1JywgZGVzdD0nZHJhZnQ3NScsCi0gICAgICAgICAgICAgICAgICAgICAg
YWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAg
ICBoZWxwPSdPYnNvbGV0ZSBvcHRpb24uIERvblwndCB1c2UgdGhpcy4nKQotICAgIHBhcnNlci5h
ZGRfb3B0aW9uKCctLXByb3RvY29sLXZlcnNpb24nLCAnLS1wcm90b2NvbF92ZXJzaW9uJywKLSAg
ICAgICAgICAgICAgICAgICAgICBkZXN0PSdwcm90b2NvbF92ZXJzaW9uJywKLSAgICAgICAgICAg
ICAgICAgICAgICB0eXBlPSdzdHJpbmcnLCBkZWZhdWx0PV9QUk9UT0NPTF9WRVJTSU9OX0hZQkkx
MywKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdXZWJTb2NrZXQgcHJvdG9jb2wgdmVyc2lv
biB0byB1c2UuIE9uZSBvZiBcJycgKwotICAgICAgICAgICAgICAgICAgICAgIF9QUk9UT0NPTF9W
RVJTSU9OX0hZQkkxMyArICdcJywgXCcnICsKLSAgICAgICAgICAgICAgICAgICAgICBfUFJPVE9D
T0xfVkVSU0lPTl9IWUJJMDggKyAnXCcsIFwnJyArCi0gICAgICAgICAgICAgICAgICAgICAgX1BS
T1RPQ09MX1ZFUlNJT05fSFlCSTAwICsgJ1wnJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLS12
ZXJzaW9uLWhlYWRlcicsICctLXZlcnNpb25faGVhZGVyJywKLSAgICAgICAgICAgICAgICAgICAg
ICBkZXN0PSd2ZXJzaW9uX2hlYWRlcicsCi0gICAgICAgICAgICAgICAgICAgICAgdHlwZT0naW50
JywgZGVmYXVsdD0tMSwKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdTcGVjaWZ5IFNlYy1X
ZWJTb2NrZXQtVmVyc2lvbiBoZWFkZXIgdmFsdWUnKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCct
LWRlZmxhdGUtZnJhbWUnLCAnLS1kZWZsYXRlX2ZyYW1lJywKLSAgICAgICAgICAgICAgICAgICAg
ICBkZXN0PSdkZWZsYXRlX2ZyYW1lJywKLSAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0
b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1Vz
ZSB0aGUgZGVmbGF0ZS1mcmFtZSBleHRlbnNpb24uJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbign
LS11c2UtcGVybWVzc2FnZS1kZWZsYXRlJywgJy0tdXNlX3Blcm1lc3NhZ2VfZGVmbGF0ZScsCi0g
ICAgICAgICAgICAgICAgICAgICAgZGVzdD0ndXNlX3Blcm1lc3NhZ2VfZGVmbGF0ZScsCi0gICAg
ICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwKLSAg
ICAgICAgICAgICAgICAgICAgICBoZWxwPSdVc2UgdGhlIHBlcm1lc3NhZ2UtZGVmbGF0ZSBleHRl
bnNpb24uJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLS1sb2ctbGV2ZWwnLCAnLS1sb2dfbGV2
ZWwnLCB0eXBlPSdjaG9pY2UnLAotICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J2xvZ19sZXZl
bCcsIGRlZmF1bHQ9J3dhcm4nLAotICAgICAgICAgICAgICAgICAgICAgIGNob2ljZXM9WydkZWJ1
ZycsICdpbmZvJywgJ3dhcm4nLCAnZXJyb3InLCAnY3JpdGljYWwnXSwKLSAgICAgICAgICAgICAg
ICAgICAgICBoZWxwPSdMb2cgbGV2ZWwuJykKLQotICAgIChvcHRpb25zLCB1bnVzZWRfYXJncykg
PSBwYXJzZXIucGFyc2VfYXJncygpCi0KLSAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKGxldmVsPWxv
Z2dpbmcuZ2V0TGV2ZWxOYW1lKG9wdGlvbnMubG9nX2xldmVsLnVwcGVyKCkpKQotCi0gICAgaWYg
b3B0aW9ucy5kcmFmdDc1OgotICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKCctLWRyYWZ0NzUgb3B0
aW9uIGlzIG9ic29sZXRlLicpCi0gICAgICAgIHN5cy5leGl0KDEpCi0KLSAgICBpZiBvcHRpb25z
LnByb3RvY29sX3ZlcnNpb24gPT0gX1BST1RPQ09MX1ZFUlNJT05fSElYSUU3NToKLSAgICAgICAg
bG9nZ2luZy5jcml0aWNhbCgKLSAgICAgICAgICAgICdWYWx1ZSAlcyBpcyBvYnNvbGV0ZSBmb3Ig
LS1wcm90b2NvbF92ZXJzaW9uIG9wdGlvbnMnICUKLSAgICAgICAgICAgIF9QUk9UT0NPTF9WRVJT
SU9OX0hJWElFNzUpCi0gICAgICAgIHN5cy5leGl0KDEpCi0KLSAgICBpZiBvcHRpb25zLnVzZV90
bHM6Ci0gICAgICAgIGlmIG9wdGlvbnMudGxzX21vZHVsZSBpcyBOb25lOgotICAgICAgICAgICAg
aWYgX2ltcG9ydF9zc2woKToKLSAgICAgICAgICAgICAgICBvcHRpb25zLnRsc19tb2R1bGUgPSBf
VExTX0JZX1NUQU5EQVJEX01PRFVMRQotICAgICAgICAgICAgICAgIGxvZ2dpbmcuZGVidWcoJ1Vz
aW5nIHNzbCBtb2R1bGUnKQotICAgICAgICAgICAgZWxpZiBfaW1wb3J0X3B5b3BlbnNzbCgpOgot
ICAgICAgICAgICAgICAgIG9wdGlvbnMudGxzX21vZHVsZSA9IF9UTFNfQllfUFlPUEVOU1NMCi0g
ICAgICAgICAgICAgICAgbG9nZ2luZy5kZWJ1ZygnVXNpbmcgcHlPcGVuU1NMIG1vZHVsZScpCi0g
ICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoCi0gICAg
ICAgICAgICAgICAgICAgICAgICAnVExTIHN1cHBvcnQgcmVxdWlyZXMgc3NsIG9yIHB5T3BlblNT
TCBtb2R1bGUuJykKLSAgICAgICAgICAgICAgICBzeXMuZXhpdCgxKQotICAgICAgICBlbGlmIG9w
dGlvbnMudGxzX21vZHVsZSA9PSBfVExTX0JZX1NUQU5EQVJEX01PRFVMRToKLSAgICAgICAgICAg
IGlmIG5vdCBfaW1wb3J0X3NzbCgpOgotICAgICAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwo
J3NzbCBtb2R1bGUgaXMgbm90IGF2YWlsYWJsZScpCi0gICAgICAgICAgICAgICAgc3lzLmV4aXQo
MSkKLSAgICAgICAgZWxpZiBvcHRpb25zLnRsc19tb2R1bGUgPT0gX1RMU19CWV9QWU9QRU5TU0w6
Ci0gICAgICAgICAgICBpZiBub3QgX2ltcG9ydF9weW9wZW5zc2woKToKLSAgICAgICAgICAgICAg
ICBsb2dnaW5nLmNyaXRpY2FsKCdweU9wZW5TU0wgbW9kdWxlIGlzIG5vdCBhdmFpbGFibGUnKQot
ICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBs
b2dnaW5nLmNyaXRpY2FsKCdJbnZhbGlkIC0tdGxzLW1vZHVsZSBvcHRpb246ICVyJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy50bHNfbW9kdWxlKQotICAgICAgICAgICAg
c3lzLmV4aXQoMSkKLQotICAgICAgICBpZiAob3B0aW9ucy5kaXNhYmxlX3Rsc19jb21wcmVzc2lv
biBhbmQKLSAgICAgICAgICAgIG9wdGlvbnMudGxzX21vZHVsZSAhPSBfVExTX0JZX1BZT1BFTlNT
TCk6Ci0gICAgICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKCdZb3UgY2FuIGRpc2FibGUgVExTIGNv
bXByZXNzaW9uIG9ubHkgd2hlbiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdweU9w
ZW5TU0wgbW9kdWxlIGlzIHVzZWQuJykKLSAgICAgICAgICAgIHN5cy5leGl0KDEpCi0gICAgZWxz
ZToKLSAgICAgICAgaWYgb3B0aW9ucy50bHNfbW9kdWxlIGlzIG5vdCBOb25lOgotICAgICAgICAg
ICAgbG9nZ2luZy5jcml0aWNhbCgnVXNlIC0tdGxzLW1vZHVsZSBvcHRpb24gb25seSB0b2dldGhl
ciB3aXRoICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tdXNlLXRscyBvcHRpb24u
JykKLSAgICAgICAgICAgIHN5cy5leGl0KDEpCi0KLSAgICAgICAgaWYgb3B0aW9ucy5kaXNhYmxl
X3Rsc19jb21wcmVzc2lvbjoKLSAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoJ1VzZSAtLWRp
c2FibGUtdGxzLWNvbXByZXNzaW9uIG9ubHkgdG9nZXRoZXIgJwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnd2l0aCAtLXVzZS10bHMgb3B0aW9uLicpCi0gICAgICAgICAgICBzeXMuZXhp
dCgxKQotCi0gICAgIyBEZWZhdWx0IHBvcnQgbnVtYmVyIGRlcGVuZHMgb24gd2hldGhlciBUTFMg
aXMgdXNlZC4KLSAgICBpZiBvcHRpb25zLnNlcnZlcl9wb3J0ID09IF9VTkRFRklORURfUE9SVDoK
LSAgICAgICAgaWYgb3B0aW9ucy51c2VfdGxzOgotICAgICAgICAgICAgb3B0aW9ucy5zZXJ2ZXJf
cG9ydCA9IGNvbW1vbi5ERUZBVUxUX1dFQl9TT0NLRVRfU0VDVVJFX1BPUlQKLSAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgIG9wdGlvbnMuc2VydmVyX3BvcnQgPSBjb21tb24uREVGQVVMVF9XRUJf
U09DS0VUX1BPUlQKLQotICAgICMgb3B0cGFyc2UgZG9lc24ndCBzZWVtIHRvIGhhbmRsZSBub24t
YXNjaWkgZGVmYXVsdCB2YWx1ZXMuCi0gICAgIyBTZXQgZGVmYXVsdCBtZXNzYWdlIGhlcmUuCi0g
ICAgaWYgbm90IG9wdGlvbnMubWVzc2FnZToKLSAgICAgICAgb3B0aW9ucy5tZXNzYWdlID0gdSdI
ZWxsbyxcdTY1ZTVcdTY3MmMnICAgIyAiSmFwYW4iIGluIEphcGFuZXNlCi0KLSAgICBFY2hvQ2xp
ZW50KG9wdGlvbnMpLnJ1bigpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBt
YWluKCkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1w
bGUvZWNob19ub2V4dF93c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2VjaG9fbm9leHRfd3NoLnB5
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZGY1MTUxMjI3MTExZTExNDQyNGM1NTg2
YTE0MmE5YWRiN2Q2MDRkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvZWNob19ub2V4dF93c2gucHkKKysrIC9kZXYvbnVsbApA
QCAtMSw2MSArMCwwIEBACi0jIENvcHlyaWdodCAyMDEzLCBHb29nbGUgSW5jLgotIyBBbGwgcmln
aHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0j
Ci0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi1fR09PREJZRV9NRVNTQUdFID0g
dSdHb29kYnllJwotCi0KLWRlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0
KToKLSAgICAiIiJSZWNlaXZlZCBTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgaGVhZGVyIHZhbHVl
IGlzIHBhcnNlZCBpbnRvCi0gICAgcmVxdWVzdC53c19yZXF1ZXN0ZWRfZXh0ZW5zaW9ucy4gcHl3
ZWJzb2NrZXQgY3JlYXRlcyBleHRlbnNpb24KLSAgICBwcm9jZXNzb3JzIHVzaW5nIGl0IGJlZm9y
ZSBkb19leHRyYV9oYW5kc2hha2UgY2FsbCBhbmQgbmV2ZXIgbG9va3MgYXQgaXQKLSAgICBhZnRl
ciB0aGUgY2FsbC4KLQotICAgIFRvIHJlamVjdCByZXF1ZXN0ZWQgZXh0ZW5zaW9ucywgY2xlYXIg
dGhlIHByb2Nlc3NvciBsaXN0LgotICAgICIiIgotCi0gICAgcmVxdWVzdC53c19leHRlbnNpb25f
cHJvY2Vzc29ycyA9IFtdCi0KLQotZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0
KToKLSAgICAiIiJFY2hvLiBTYW1lIGFzIGVjaG9fd3NoLnB5LiIiIgotCi0gICAgd2hpbGUgVHJ1
ZToKLSAgICAgICAgbGluZSA9IHJlcXVlc3Qud3Nfc3RyZWFtLnJlY2VpdmVfbWVzc2FnZSgpCi0g
ICAgICAgIGlmIGxpbmUgaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBpZiBp
c2luc3RhbmNlKGxpbmUsIHVuaWNvZGUpOgotICAgICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0u
c2VuZF9tZXNzYWdlKGxpbmUsIGJpbmFyeT1GYWxzZSkKLSAgICAgICAgICAgIGlmIGxpbmUgPT0g
X0dPT0RCWUVfTUVTU0FHRToKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgZWxzZToK
LSAgICAgICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRfbWVzc2FnZShsaW5lLCBiaW5hcnk9
VHJ1ZSkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1w
bGUvZWNob193c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2VjaG9fd3NoLnB5CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAzODY0NmMzMmNlYjUxNWYxNWRkNTcyNjIyNjg5Yzc5ZWU2MWU1
NDNmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
c3JjL2V4YW1wbGUvZWNob193c2gucHkKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi0j
IENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwot
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0j
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgot
IyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLQotCi1fR09PREJZRV9NRVNTQUdFID0gdSdHb29kYnllJwotCi0KLWRl
ZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKLSAgICAjIFRoaXMgZXhh
bXBsZSBoYW5kbGVyIGFjY2VwdHMgYW55IHJlcXVlc3QuIFNlZSBvcmlnaW5fY2hlY2tfd3NoLnB5
IGZvciBob3cKLSAgICAjIHRvIHJlamVjdCBhY2Nlc3MgZnJvbSB1bnRydXN0ZWQgc2NyaXB0cyBi
YXNlZCBvbiBvcmlnaW4gdmFsdWUuCi0KLSAgICBwYXNzICAjIEFsd2F5cyBhY2NlcHQuCi0KLQot
ZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKLSAgICB3aGlsZSBUcnVlOgot
ICAgICAgICBsaW5lID0gcmVxdWVzdC53c19zdHJlYW0ucmVjZWl2ZV9tZXNzYWdlKCkKLSAgICAg
ICAgaWYgbGluZSBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGlmIGlzaW5z
dGFuY2UobGluZSwgdW5pY29kZSk6Ci0gICAgICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5zZW5k
X21lc3NhZ2UobGluZSwgYmluYXJ5PUZhbHNlKQotICAgICAgICAgICAgaWYgbGluZSA9PSBfR09P
REJZRV9NRVNTQUdFOgotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKGxpbmUsIGJpbmFyeT1UcnVl
KQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS9l
dmVudHNvdXJjZS5jZ2kgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2V2ZW50c291cmNlLmNnaQpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWRkZGYyMzdjZjdkNDc2NDk3MzQ3ZDA5NWExMjI5OTQx
NzdlMTQwOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29j
a2V0L3NyYy9leGFtcGxlL2V2ZW50c291cmNlLmNnaQorKysgL2Rldi9udWxsCkBAIC0xLDU0ICsw
LDAgQEAKLSMhL3Vzci9iaW4vcHl0aG9uCi0KLSMgQ29weXJpZ2h0IDIwMTMsIEdvb2dsZSBJbmMu
Ci0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
Ci0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMg
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
IyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIlRoaXMg
Q0dJIHNjcmlwdCBnZW5lcmF0ZXMgdGV4dC9ldmVudC1zdHJlYW0gdHlwZSBkYXRhIHN0cmVhbSBm
b3IgdGVzdGluZwotdGhlIFNlcnZlci1TZW50IEV2ZW50cy4KLQotSXQgd2lsbCBvbmx5IHdvcmsg
Y29ycmVjdGx5IHdpdGggSFRUUCBzZXJ2ZXJzIHRoYXQgZG8gbm90IGJ1ZmZlciB0aGUgb3V0cHV0
IG9mCi1DR0kgc2NyaXB0cy4KLSIiIgotCi0KLWltcG9ydCBzeXMKLWltcG9ydCB0aW1lCi0KLXN5
cy5zdGRvdXQud3JpdGUoJ0NvbnRlbnQtdHlwZTogdGV4dC9ldmVudC1zdHJlYW1cclxuXHJcbicp
Ci0KLWlkID0gMAotCi13aGlsZSBUcnVlOgotICBzeXMuc3Rkb3V0LndyaXRlKCdkYXRhOiBIZWxs
b1xyXG5pZDogJWRcclxuXHJcbicgJSBpZCkKLSAgc3lzLnN0ZG91dC5mbHVzaCgpCi0KLSAgaWQg
PSBpZCArIDEKLQotICB0aW1lLnNsZWVwKDEpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxl
L2V2ZW50c291cmNlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2V2ZW50c291cmNlLmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1OThhODgwN2QxZmZjY2VjZjU4NWYxYmI2NTZm
ZDJkOTAyZmNkMzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC9zcmMvZXhhbXBsZS9ldmVudHNvdXJjZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
NzQgKzAsMCBAQAotPCEtLQotQ29weXJpZ2h0IDIwMTMsIEdvb2dsZSBJbmMuCi1BbGwgcmlnaHRz
IHJlc2VydmVkLgotCi1SZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLW1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLW1ldDoKLQotICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLW5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLWNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLWluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLWRpc3RyaWJ1dGlvbi4KLSAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLWNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi10aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotCi1USElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0iQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi1BIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi1TUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi1MSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLURBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi1PRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLS0+Ci0KLTwhLS0KLVNpbXBs
ZSBleGFtcGxlIG9mIHRoZSBTZXJ2ZXItU2VudCBFdmVudHMKLWh0dHA6Ly9kZXYudzMub3JnL2h0
bWw1L2V2ZW50c291cmNlLwotCi1Gb3IgY29tcGFyaXNvbiB3aXRoIHRoZSBXZWJTb2NrZXQgUHJv
dG9jb2wgJiBBUEkuCi0KLVJ1biB0aGUgcHl3ZWJzb2NrZXQgd2l0aCB0aGUgLS1jZ2lfcGF0aCBw
YXJhbWV0ZXIuCi0tLT4KLQotPGh0bWw+Ci08aGVhZD4KLTx0aXRsZT5TZXJ2ZXItU2VudCBFdmVu
dHMgRXhhbXBsZTwvdGl0bGU+Ci08c2NyaXB0PgotdmFyIGV2ZW50U291cmNlID0gbnVsbDsKLQot
ZnVuY3Rpb24gYWRkVG9Mb2coZGF0YSkgewotICBsb2dCb3gudmFsdWUgKz0gZGF0YSArICdcbic7
Ci0gIGxvZ0JveC5zY3JvbGxUb3AgPSAxMDAwMDAwOwotfQotCi1mdW5jdGlvbiBpbml0KCkgewot
ICBsb2dCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nJyk7Ci0KLSAgZXZlbnRTb3Vy
Y2UgID0gbmV3IEV2ZW50U291cmNlKCcvZXZlbnRzb3VyY2UuY2dpJyk7Ci0gIGV2ZW50U291cmNl
Lm9ub3BlbiA9IGZ1bmN0aW9uKCkgewotICAgIGFkZFRvTG9nKCdvbm9wZW4gKHJlYWR5U3RhdGUg
PSAnICsgZXZlbnRTb3VyY2UucmVhZHlTdGF0ZSArICcpJyk7Ci0gIH0KLSAgZXZlbnRTb3VyY2Uu
b25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICBhZGRUb0xvZyhldmVudC5kYXRhKTsK
LSAgfQotICBldmVudFNvdXJjZS5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICBhZGRU
b0xvZygnb25lcnJvciAocmVhZHlTdGF0ZSA9ICcgKyBldmVudFNvdXJjZS5yZWFkeVN0YXRlICsg
JyknKTsKLSAgfQotfQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9ImluaXQoKSI+
Ci08dGV4dGFyZWEgaWQ9ImxvZyIgcm93cz0iMTAiIGNvbHM9IjQwIiByZWFkb25seT48L3RleHRh
cmVhPgotPHAgc3R5bGU9ImZvbnQtc2l6ZTogc21hbGwiPgotICBNYWtlIHN1cmUgdGhhdCBweXdl
YnNvY2tldCBpcyBydW4gd2l0aCAtLWNnaV9wYXRoIHBhcmFtZXRlci4KLTwvcD4KLTwvYm9keT4K
LTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvaGFuZGxlcl9tYXAudHh0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNv
Y2tldC9zcmMvZXhhbXBsZS9oYW5kbGVyX21hcC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDIxYzRjMDlhYTAwOTFkOGJhZjI5MDg5NTk5MDU4Njc4NDJhZWI4NjUuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS9o
YW5kbGVyX21hcC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0jIHdlYnNvY2tl
dCBoYW5kbGVyIG1hcCBmaWxlLCB1c2VkIGJ5IHN0YW5kYWxvbmUucHkgLW0gb3B0aW9uLgotIyBB
IGxpbmUgc3RhcnRpbmcgd2l0aCAnIycgaXMgYSBjb21tZW50IGxpbmUuCi0jIEVhY2ggbGluZSBj
b25zaXN0cyBvZiAnYWxpYXNfcmVzb3VyY2VfcGF0aCcgYW5kICdleGlzdGluZ19yZXNvdXJjZV9w
YXRoJwotIyBzZXBhcmF0ZWQgYnkgc3BhY2VzLgotIyBBbGlhc2luZyBpcyBwcm9jZXNzZWQgZnJv
bSB0aGUgdG9wIHRvIHRoZSBib3R0b20gb2YgdGhlIGxpbmUsIGFuZAotIyAnZXhpc3RpbmdfcmVz
b3VyY2VfcGF0aCcgbXVzdCBleGlzdCBiZWZvcmUgaXQgaXMgYWxpYXNlZC4KLSMgRm9yIGV4YW1w
bGUsCi0jICAvIC9lY2hvCi0jIG1lYW5zIHRoYXQgYSByZXF1ZXN0IHRvICcvJyB3aWxsIGJlIGhh
bmRsZWQgYnkgaGFuZGxlcnMgZm9yICcvZWNobycuCi0vIC9lY2hvCi0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvc3JjL2V4YW1wbGUvaHN0c193c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2hzdHNfd3NoLnB5
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlODYxOTQ2OTIxYWYwNDU5NGQ2MjAyNmI0
NmYwNzc1OGRkZmU0MDJhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvaHN0c193c2gucHkKKysrIC9kZXYvbnVsbApAQCAtMSw0
MCArMCwwIEBACi0jIENvcHlyaWdodCAyMDEzLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJl
c2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlz
dHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi1kZWYgd2ViX3NvY2tldF9kb19leHRyYV9o
YW5kc2hha2UocmVxdWVzdCk6Ci0gICAgcmVxdWVzdC5leHRyYV9oZWFkZXJzLmFwcGVuZCgKLSAg
ICAgICAgKCdTdHJpY3QtVHJhbnNwb3J0LVNlY3VyaXR5JywgJ21heC1hZ2U9ODY0MDAnKSkKLQot
Ci1kZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgotICAgIHJlcXVlc3Qud3Nf
c3RyZWFtLnNlbmRfbWVzc2FnZSgnSGVsbG8nLCBiaW5hcnk9RmFsc2UpCi0KLQotIyB2aTpzdHM9
NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2ludGVybmFsX2Vycm9yX3dz
aC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvaW50ZXJuYWxfZXJyb3Jfd3NoLnB5CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBmZTU4MWI1NGE2NDhjMDlhMjJmMjU0NTEyN2Q3MGRmMDUxMzQ5
MjM0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
c3JjL2V4YW1wbGUvaW50ZXJuYWxfZXJyb3Jfd3NoLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDIg
KzAsMCBAQAotIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3Ry
aWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0
IG1zZ3V0aWwKLQotCi1kZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6
Ci0gICAgcGFzcwotCi0KLWRlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6Ci0g
ICAgcmFpc2UgbXNndXRpbC5CYWRPcGVyYXRpb25FeGNlcHRpb24oJ0ludGVudGlvbmFsJykKLQot
Ci0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvb3JpZ2lu
X2NoZWNrX3dzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvb3JpZ2luX2NoZWNrX3dzaC5weQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTA1NzY3YWI5MzJmYjU4MjgyNGFhZjFhNTdkOTI0
OWMzMDRiZDUxZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L3NyYy9leGFtcGxlL29yaWdpbl9jaGVja193c2gucHkKKysrIC9kZXYvbnVsbApAQCAt
MSw0NCArMCwwIEBACi0jIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRz
IHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0j
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMg
ZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMg
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
IyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
IyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIyBUaGlzIGV4YW1wbGUgaXMgZGVyaXZl
ZCBmcm9tIHRlc3QvdGVzdGRhdGEvaGFuZGxlcnMvb3JpZ2luX2NoZWNrX3dzaC5weS4KLQotCi1k
ZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6Ci0gICAgaWYgcmVxdWVz
dC53c19vcmlnaW4gPT0gJ2h0dHA6Ly9leGFtcGxlLmNvbSc6Ci0gICAgICAgIHJldHVybgotICAg
IHJhaXNlIFZhbHVlRXJyb3IoJ1VuYWNjZXB0YWJsZSBvcmlnaW46ICVyJyAlIHJlcXVlc3Qud3Nf
b3JpZ2luKQotCi0KLWRlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6Ci0gICAg
cmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKCdvcmlnaW5fY2hlY2tfd3NoLnB5IGlzIGNhbGxlZCBm
b3IgJXMsICVzJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXF1ZXN0LndzX3Jl
c291cmNlLCByZXF1ZXN0LndzX3Byb3RvY29sKSkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvcHl3ZWJzb2NrZXQuY29uZiBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4
YW1wbGUvcHl3ZWJzb2NrZXQuY29uZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzM1
ZDEzMGE1Yzg0ZjY5ZGU0ZjgxZDM1OGZiMmNkYjViZGU0YWY2ZC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL3B5d2Vic29ja2V0
LmNvbmYKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0jIENvcHlyaWdodCAyMDExLCBH
b29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
Ci0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQot
IwotIyBTYW1wbGUgY29uZmlndXJhdGlvbiBmaWxlIGZvciBhcGFjaGUyCi0jCi1Mb2dMZXZlbCBk
ZWJ1ZwotPElmTW9kdWxlIHB5dGhvbl9tb2R1bGU+Ci0gIFB5dGhvblBhdGggInN5cy5wYXRoK1sn
L21vZF9weXdlYnNvY2tldCddIgotICBQeXRob25PcHRpb24gbW9kX3B5d2Vic29ja2V0LmhhbmRs
ZXJfcm9vdCAvdmFyL3d3dwotICBQeXRob25PcHRpb24gbW9kX3B5d2Vic29ja2V0LmhhbmRsZXJf
c2NhbiAvdmFyL3d3dy93cwotICAjUHl0aG9uT3B0aW9uIG1vZF9weXdlYnNvY2tldC5hbGxvd19k
cmFmdDc1IE9uCi0gIDxMb2NhdGlvbiAvd3M+Ci0gICAgUHl0aG9uSGVhZGVyUGFyc2VySGFuZGxl
ciBtb2RfcHl3ZWJzb2NrZXQuaGVhZGVycGFyc2VyaGFuZGxlcgotICA8L0xvY2F0aW9uPgotPC9J
Zk1vZHVsZT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvc3BlY2lhbF9oZWFkZXJzLmNn
aSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3
ZWJzb2NrZXQvc3JjL2V4YW1wbGUvc3BlY2lhbF9oZWFkZXJzLmNnaQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZWE1MDgwZjFmMWFlYTNhMzdhN2U3MjljNjc4ZDZhMTIzMzdiZWRiNy4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9l
eGFtcGxlL3NwZWNpYWxfaGVhZGVycy5jZ2kKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBA
Ci0jIS91c3IvYmluL3B5dGhvbgotCi0jIENvcHlyaWdodCAyMDE0IEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlCi0jIGxpY2Vuc2UgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIENPUFlJ
TkcgZmlsZSBvciBhdAotIyBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9vcGVuLXNvdXJj
ZS9saWNlbnNlcy9ic2QKLQotIiIiQ0dJIHNjcmlwdCBzYW1wbGUgZm9yIHRlc3RpbmcgZWZmZWN0
IG9mIEhUVFAgaGVhZGVycyBvbiB0aGUgb3JpZ2luIHBhZ2UuCi0KLU5vdGUgdGhhdCBDR0kgc2Ny
aXB0cyBkb24ndCB3b3JrIG9uIHRoZSBzdGFuZGFsb25lIHB5d2Vic29ja2V0IHJ1bm5pbmcgaW4g
VExTCi1tb2RlLgotIiIiCi0KLQotcHJpbnQgIiIiQ29udGVudC10eXBlOiB0ZXh0L2h0bWwKLUNv
bnRlbnQtU2VjdXJpdHktUG9saWN5OiBjb25uZWN0LXNyYyBzZWxmCi0KLTxodG1sPgotPGhlYWQ+
Ci08dGl0bGU+PC90aXRsZT4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLXZhciBzb2NrZXQg
PSBuZXcgV2ViU29ja2V0KCJ3czovL2V4YW1wbGUuY29tIik7Ci08L3NjcmlwdD4KLTwvYm9keT4K
LTwvaHRtbD4iIiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvdXRpbC5qcyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
c3JjL2V4YW1wbGUvdXRpbC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTFjYWQ0
OTc1ZWUwY2VhZWM2YTg5ODJlMjk1NGNmOTY0ZmRlNTJlOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL3V0aWwuanMKKysrIC9k
ZXYvbnVsbApAQCAtMSwxNzcgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMTMsIEdvb2dsZSBJbmMu
Ci0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0vLyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0v
LyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotCi0KLS8vIFV0aWxpdGllcyBmb3IgZXhhbXBsZSBhcHBsaWNhdGlvbnMg
KGZvciBib3RoIG1haW4gYW5kIHdvcmtlciB0aHJlYWQpLgotCi12YXIgcmVzdWx0cyA9IHt9Owot
Ci1mdW5jdGlvbiBnZXRUaW1lU3RhbXAoKSB7Ci0gIHJldHVybiBEYXRlLm5vdygpOwotfQotCi1m
dW5jdGlvbiBmb3JtYXRSZXN1bHRJbktpQihzaXplLCB0aW1lUGVyTWVzc2FnZUluTXMsIHN0ZGRl
dlRpbWVQZXJNZXNzYWdlSW5NcywKLSAgICBzcGVlZCwgcHJpbnRTaXplKSB7Ci0gIGlmIChwcmlu
dFNpemUpIHsKLSAgICByZXR1cm4gKHNpemUgLyAxMDI0KSArCi0gICAgICAgICdcdCcgKyB0aW1l
UGVyTWVzc2FnZUluTXMudG9GaXhlZCgzKSArCi0gICAgICAgIChzdGRkZXZUaW1lUGVyTWVzc2Fn
ZUluTXMgPT0gLTEgPwotICAgICAgICAgICAgJycgOgotICAgICAgICAgICAgJ1x0JyArIHN0ZGRl
dlRpbWVQZXJNZXNzYWdlSW5Ncy50b0ZpeGVkKDMpKSArCi0gICAgICAgICdcdCcgKyBzcGVlZC50
b0ZpeGVkKDMpOwotICB9IGVsc2UgewotICAgIHJldHVybiBzcGVlZC50b1N0cmluZygpOwotICB9
Ci19Ci0KLWZ1bmN0aW9uIGNsZWFyQXZlcmFnZURhdGEoKSB7Ci0gIHJlc3VsdHMgPSB7fTsKLX0K
LQotZnVuY3Rpb24gcmVwb3J0QXZlcmFnZURhdGEoY29uZmlnKSB7Ci0gIGNvbmZpZy5hZGRUb1N1
bW1hcnkoCi0gICAgICAnU2l6ZVtLaUJdXHRBdmVyYWdlIHRpbWVbbXNdXHRTdGRkZXYgdGltZVtt
c11cdFNwZWVkW0tCL3NdJyk7Ci0gIGZvciAodmFyIHNpemUgaW4gcmVzdWx0cykgewotICAgIHZh
ciBhdmVyYWdlVGltZVBlck1lc3NhZ2VJbk1zID0gcmVzdWx0c1tzaXplXS5zdW1fdCAvIHJlc3Vs
dHNbc2l6ZV0ubjsKLSAgICB2YXIgc3BlZWQgPSBjYWxjdWxhdGVTcGVlZEluS0Ioc2l6ZSwgYXZl
cmFnZVRpbWVQZXJNZXNzYWdlSW5Ncyk7Ci0gICAgLy8gQ2FsY3VsYXRlIHNhbXBsZSBzdGFuZGFy
ZCBkZXZpYXRpb24KLSAgICB2YXIgc3RkZGV2VGltZVBlck1lc3NhZ2VJbk1zID0gTWF0aC5zcXJ0
KAotICAgICAgICAocmVzdWx0c1tzaXplXS5zdW1fdDIgLyByZXN1bHRzW3NpemVdLm4gLQotICAg
ICAgICAgICAgYXZlcmFnZVRpbWVQZXJNZXNzYWdlSW5NcyAqIGF2ZXJhZ2VUaW1lUGVyTWVzc2Fn
ZUluTXMpICoKLSAgICAgICAgcmVzdWx0c1tzaXplXS5uIC8KLSAgICAgICAgKHJlc3VsdHNbc2l6
ZV0ubiAtIDEpKTsKLSAgICBjb25maWcuYWRkVG9TdW1tYXJ5KGZvcm1hdFJlc3VsdEluS2lCKAot
ICAgICAgICBzaXplLCBhdmVyYWdlVGltZVBlck1lc3NhZ2VJbk1zLCBzdGRkZXZUaW1lUGVyTWVz
c2FnZUluTXMsIHNwZWVkLAotICAgICAgICB0cnVlKSk7Ci0gIH0KLX0KLQotZnVuY3Rpb24gY2Fs
Y3VsYXRlU3BlZWRJbktCKHNpemUsIHRpbWVTcGVudEluTXMpIHsKLSAgcmV0dXJuIE1hdGgucm91
bmQoc2l6ZSAvIHRpbWVTcGVudEluTXMgKiAxMDAwKSAvIDEwMDA7Ci19Ci0KLWZ1bmN0aW9uIGNh
bGN1bGF0ZUFuZExvZ1Jlc3VsdChjb25maWcsIHNpemUsIHN0YXJ0VGltZUluTXMsIHRvdGFsU2l6
ZSkgewotICB2YXIgdGltZVNwZW50SW5NcyA9IGdldFRpbWVTdGFtcCgpIC0gc3RhcnRUaW1lSW5N
czsKLSAgdmFyIHNwZWVkID0gY2FsY3VsYXRlU3BlZWRJbktCKHRvdGFsU2l6ZSwgdGltZVNwZW50
SW5Ncyk7Ci0gIHZhciB0aW1lUGVyTWVzc2FnZUluTXMgPSB0aW1lU3BlbnRJbk1zIC8gKHRvdGFs
U2l6ZSAvIHNpemUpOwotICBpZiAoIXJlc3VsdHNbc2l6ZV0pIHsKLSAgICByZXN1bHRzW3NpemVd
ID0ge246IDAsIHN1bV90OiAwLCBzdW1fdDI6IDB9OwotICB9Ci0gIGNvbmZpZy5tZWFzdXJlVmFs
dWUodGltZVBlck1lc3NhZ2VJbk1zKTsKLSAgcmVzdWx0c1tzaXplXS5uICsrOwotICByZXN1bHRz
W3NpemVdLnN1bV90ICs9IHRpbWVQZXJNZXNzYWdlSW5NczsKLSAgcmVzdWx0c1tzaXplXS5zdW1f
dDIgKz0gdGltZVBlck1lc3NhZ2VJbk1zICogdGltZVBlck1lc3NhZ2VJbk1zOwotICBjb25maWcu
YWRkVG9Mb2coZm9ybWF0UmVzdWx0SW5LaUIoc2l6ZSwgdGltZVBlck1lc3NhZ2VJbk1zLCAtMSwg
c3BlZWQsCi0gICAgICBjb25maWcucHJpbnRTaXplKSk7Ci19Ci0KLWZ1bmN0aW9uIGZpbGxBcnJh
eUJ1ZmZlcihidWZmZXIsIGMpIHsKLSAgdmFyIGk7Ci0KLSAgdmFyIHUzMkNvbnRlbnQgPSBjICog
MHgwMTAxMDEwMTsKLQotICB2YXIgdTMyQmxvY2tzID0gTWF0aC5mbG9vcihidWZmZXIuYnl0ZUxl
bmd0aCAvIDQpOwotICB2YXIgdTMyVmlldyA9IG5ldyBVaW50MzJBcnJheShidWZmZXIsIDAsIHUz
MkJsb2Nrcyk7Ci0gIC8vIGxlbmd0aCBhdHRyaWJ1dGUgaXMgc2xvdyBvbiBDaHJvbWUuIERvbid0
IHVzZSBpdCBmb3IgbG9vcCBjb25kaXRpb24uCi0gIGZvciAoaSA9IDA7IGkgPCB1MzJCbG9ja3M7
ICsraSkgewotICAgIHUzMlZpZXdbaV0gPSB1MzJDb250ZW50OwotICB9Ci0KLSAgLy8gRnJhY3Rp
b24KLSAgdmFyIHU4QmxvY2tzID0gYnVmZmVyLmJ5dGVMZW5ndGggLSB1MzJCbG9ja3MgKiA0Owot
ICB2YXIgdThWaWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyLCB1MzJCbG9ja3MgKiA0LCB1OEJs
b2Nrcyk7Ci0gIGZvciAoaSA9IDA7IGkgPCB1OEJsb2NrczsgKytpKSB7Ci0gICAgdThWaWV3W2ld
ID0gYzsKLSAgfQotfQotCi1mdW5jdGlvbiB2ZXJpZnlBcnJheUJ1ZmZlcihidWZmZXIsIGV4cGVj
dGVkQ2hhcikgewotICB2YXIgaTsKLQotICB2YXIgZXhwZWN0ZWRVMzJWYWx1ZSA9IGV4cGVjdGVk
Q2hhciAqIDB4MDEwMTAxMDE7Ci0KLSAgdmFyIHUzMkJsb2NrcyA9IE1hdGguZmxvb3IoYnVmZmVy
LmJ5dGVMZW5ndGggLyA0KTsKLSAgdmFyIHUzMlZpZXcgPSBuZXcgVWludDMyQXJyYXkoYnVmZmVy
LCAwLCB1MzJCbG9ja3MpOwotICBmb3IgKGkgPSAwOyBpIDwgdTMyQmxvY2tzOyArK2kpIHsKLSAg
ICBpZiAodTMyVmlld1tpXSAhPSBleHBlY3RlZFUzMlZhbHVlKSB7Ci0gICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQotICB9Ci0KLSAgdmFyIHU4QmxvY2tzID0gYnVmZmVyLmJ5dGVMZW5ndGggLSB1
MzJCbG9ja3MgKiA0OwotICB2YXIgdThWaWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyLCB1MzJC
bG9ja3MgKiA0LCB1OEJsb2Nrcyk7Ci0gIGZvciAoaSA9IDA7IGkgPCB1OEJsb2NrczsgKytpKSB7
Ci0gICAgaWYgKHU4Vmlld1tpXSAhPSBleHBlY3RlZENoYXIpIHsKLSAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9Ci0gIH0KLQotICByZXR1cm4gdHJ1ZTsKLX0KLQotZnVuY3Rpb24gdmVyaWZ5Qmxv
Yihjb25maWcsIGJsb2IsIGV4cGVjdGVkQ2hhciwgZG9uZUNhbGxiYWNrKSB7Ci0gIHZhciByZWFk
ZXIgPSBuZXcgRmlsZVJlYWRlcihibG9iKTsKLSAgcmVhZGVyLm9uZXJyb3IgPSBmdW5jdGlvbigp
IHsKLSAgICBjb25maWcuYWRkVG9Mb2coJ0ZpbGVSZWFkZXIgRXJyb3I6ICcgKyByZWFkZXIuZXJy
b3IubWVzc2FnZSk7Ci0gICAgZG9uZUNhbGxiYWNrKGJsb2Iuc2l6ZSwgZmFsc2UpOwotICB9Ci0g
IHJlYWRlci5vbmxvYWRlbmQgPSBmdW5jdGlvbigpIHsKLSAgICB2YXIgcmVzdWx0ID0gdmVyaWZ5
QXJyYXlCdWZmZXIocmVhZGVyLnJlc3VsdCwgZXhwZWN0ZWRDaGFyKTsKLSAgICBkb25lQ2FsbGJh
Y2soYmxvYi5zaXplLCByZXN1bHQpOwotICB9Ci0gIHJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcihi
bG9iKTsKLX0KLQotZnVuY3Rpb24gdmVyaWZ5QWNrbm93bGVkZ2VtZW50KGNvbmZpZywgbWVzc2Fn
ZSwgc2l6ZSkgewotICBpZiAodHlwZW9mIG1lc3NhZ2UgIT0gJ3N0cmluZycpIHsKLSAgICBjb25m
aWcuYWRkVG9Mb2coJ0ludmFsaWQgYWNrIHR5cGU6ICcgKyB0eXBlb2YgbWVzc2FnZSk7Ci0gICAg
cmV0dXJuIGZhbHNlOwotICB9Ci0gIHZhciBwYXJzZWRBY2sgPSBwYXJzZUludChtZXNzYWdlKTsK
LSAgaWYgKGlzTmFOKHBhcnNlZEFjaykpIHsKLSAgICBjb25maWcuYWRkVG9Mb2coJ0ludmFsaWQg
YWNrIHZhbHVlOiAnICsgbWVzc2FnZSk7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gIGlmIChw
YXJzZWRBY2sgIT0gc2l6ZSkgewotICAgIGNvbmZpZy5hZGRUb0xvZygKLSAgICAgICAgJ0V4cGVj
dGVkIGFjayBmb3IgJyArIHNpemUgKyAnQiBidXQgcmVjZWl2ZWQgb25lIGZvciAnICsgcGFyc2Vk
QWNrICsKLSAgICAgICAgJ0InKTsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICByZXR1cm4g
dHJ1ZTsKLX0KLQotZnVuY3Rpb24gY2xvbmVDb25maWcob2JqKSB7Ci0gIHZhciBuZXdPYmogPSB7
fTsKLSAgZm9yIChrZXkgaW4gb2JqKSB7Ci0gICAgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsKLSAg
fQotICByZXR1cm4gbmV3T2JqOwotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS91dGls
X21haW4uanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL3V0aWxfbWFpbi5qcwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYjAzZDFjMmJkYzQ2MmM2NTRmNjAzNWJhOTZlNGViOGEyYmFhN2I4NC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9l
eGFtcGxlL3V0aWxfbWFpbi5qcworKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLS8vIENv
cHlyaWdodCAyMDE0IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUKLS8vIGxpY2Vu
c2UgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIENPUFlJTkcgZmlsZSBvciBhdAotLy8gaHR0cHM6
Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vb3Blbi1zb3VyY2UvbGljZW5zZXMvYnNkCi0KLS8vIFV0
aWxpdGllcyBmb3IgZXhhbXBsZSBhcHBsaWNhdGlvbnMgKGZvciB0aGUgbWFpbiB0aHJlYWQgb25s
eSkuCi0KLXZhciBsb2dCb3ggPSBudWxsOwotdmFyIHF1ZXVlZExvZyA9ICcnOwotCi12YXIgc3Vt
bWFyeUJveCA9IG51bGw7Ci0KLWZ1bmN0aW9uIHF1ZXVlTG9nKGxvZykgewotICBxdWV1ZWRMb2cg
Kz0gbG9nICsgJ1xuJzsKLX0KLQotZnVuY3Rpb24gYWRkVG9Mb2cobG9nKSB7Ci0gIGxvZ0JveC52
YWx1ZSArPSBxdWV1ZWRMb2c7Ci0gIHF1ZXVlZExvZyA9ICcnOwotICBsb2dCb3gudmFsdWUgKz0g
bG9nICsgJ1xuJzsKLSAgbG9nQm94LnNjcm9sbFRvcCA9IDEwMDAwMDA7Ci19Ci0KLWZ1bmN0aW9u
IGFkZFRvU3VtbWFyeShsb2cpIHsKLSAgc3VtbWFyeUJveC52YWx1ZSArPSBsb2cgKyAnXG4nOwot
ICBzdW1tYXJ5Qm94LnNjcm9sbFRvcCA9IDEwMDAwMDA7Ci19Ci0KLS8vIHZhbHVlOiBleGVjdXRp
b24gdGltZSBpbiBtaWxsaXNlY29uZHMuCi0vLyBjb25maWcubWVhc3VyZVZhbHVlIGlzIGludGVu
ZGVkIHRvIGJlIHVzZWQgaW4gUGVyZm9ybWFuY2UgVGVzdHMuCi0vLyBEbyBub3RoaW5nIGhlcmUg
aW4gbm9uLVBlcmZvcm1hbmNlVGVzdC4KLWZ1bmN0aW9uIG1lYXN1cmVWYWx1ZSh2YWx1ZSkgewot
fQotCi1mdW5jdGlvbiBnZXRJbnRGcm9tSW5wdXQoaWQpIHsKLSAgcmV0dXJuIHBhcnNlSW50KGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKS52YWx1ZSk7Ci19Ci0KLWZ1bmN0aW9uIGdldFN0cmlu
Z0Zyb21SYWRpb0JveChuYW1lKSB7Ci0gIHZhciBsaXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2JlbmNobWFya19mb3JtJylbbmFtZV07Ci0gIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdC5s
ZW5ndGg7ICsraSkKLSAgICBpZiAobGlzdC5pdGVtKGkpLmNoZWNrZWQpCi0gICAgICByZXR1cm4g
bGlzdC5pdGVtKGkpLnZhbHVlOwotICByZXR1cm4gdW5kZWZpbmVkOwotfQotZnVuY3Rpb24gZ2V0
Qm9vbEZyb21DaGVja0JveChpZCkgewotICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
aWQpLmNoZWNrZWQ7Ci19Ci0KLWZ1bmN0aW9uIGdldEludEFycmF5RnJvbUlucHV0KGlkKSB7Ci0g
IHZhciBzdHJBcnJheSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKS52YWx1ZS5zcGxpdCgn
LCcpOwotICByZXR1cm4gc3RyQXJyYXkubWFwKGZ1bmN0aW9uKHN0cikgeyByZXR1cm4gcGFyc2VJ
bnQoc3RyLCAxMCk7IH0pOwotfQotCi1mdW5jdGlvbiBvbk1lc3NhZ2UobWVzc2FnZSkgewotICBp
ZiAobWVzc2FnZS5kYXRhLnR5cGUgPT09ICdhZGRUb0xvZycpCi0gICAgYWRkVG9Mb2cobWVzc2Fn
ZS5kYXRhLmRhdGEpOwotICBlbHNlIGlmIChtZXNzYWdlLmRhdGEudHlwZSA9PT0gJ2FkZFRvU3Vt
bWFyeScpCi0gICAgYWRkVG9TdW1tYXJ5KG1lc3NhZ2UuZGF0YS5kYXRhKTsKLSAgZWxzZSBpZiAo
bWVzc2FnZS5kYXRhLnR5cGUgPT09ICdtZWFzdXJlVmFsdWUnKQotICAgIG1lYXN1cmVWYWx1ZSht
ZXNzYWdlLmRhdGEuZGF0YSk7Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL3V0aWxf
d29ya2VyLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS91dGlsX3dvcmtlci5qcwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYjY0Zjc4MjlkNTJkODUwNjQ5ODg5ZjliMGFjZTk5ODVjN2I2MjEx
ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Ny
Yy9leGFtcGxlL3V0aWxfd29ya2VyLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAot
Ly8gQ29weXJpZ2h0IDIwMTQgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0v
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZQotLy8g
bGljZW5zZSB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgQ09QWUlORyBmaWxlIG9yIGF0Ci0vLyBo
dHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9vcGVuLXNvdXJjZS9saWNlbnNlcy9ic2QKLQot
Ly8gVXRpbGl0aWVzIGZvciBleGFtcGxlIGFwcGxpY2F0aW9ucyAoZm9yIHRoZSB3b3JrZXIgdGhy
ZWFkcyBvbmx5KS4KLQotZnVuY3Rpb24gd29ya2VyQWRkVG9Mb2codGV4dCkgewotICBwb3N0TWVz
c2FnZSh7dHlwZTogJ2FkZFRvTG9nJywgZGF0YTogdGV4dH0pOwotfQotCi1mdW5jdGlvbiB3b3Jr
ZXJBZGRUb1N1bW1hcnkodGV4dCkgewotICBwb3N0TWVzc2FnZSh7dHlwZTogJ2FkZFRvU3VtbWFy
eScsIGRhdGE6IHRleHR9KTsKLX0KLQotZnVuY3Rpb24gd29ya2VyTWVhc3VyZVZhbHVlKHZhbHVl
KSB7Ci0gIHBvc3RNZXNzYWdlKHt0eXBlOiAnbWVhc3VyZVZhbHVlJywgZGF0YTogdmFsdWV9KTsK
LX0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Ny
Yy9leGFtcGxlL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBk
ZjFmNzk5YmM0MWM0YWMxMGM1ODZjNzFiY2EzY2JiMzA5YzFiOWE2Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvdzNjLWltcG9y
dC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBk
aXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBt
b2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEg
cHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzCi0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13
M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3Zl
IHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9l
eGFtcGxlL2Fib3J0X2hhbmRzaGFrZV93c2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2Fib3J0X3dz
aC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvYXJyYXlidWZmZXJfYmVuY2htYXJrLmh0bWwKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0
L3NyYy9leGFtcGxlL2JlbmNoX3dzaC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvYmVuY2htYXJrLmh0
bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L3NyYy9leGFtcGxlL2JlbmNobWFyay5qcwotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvYmVu
Y2htYXJrX2hlbHBlcl93c2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2Nsb3NlX3dzaC5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvc3JjL2V4YW1wbGUvY29uc29sZS5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS9jb29raWVfd3No
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC9zcmMvZXhhbXBsZS9lY2hvX2NsaWVudC5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUv
ZWNob19ub2V4dF93c2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2VjaG9fd3NoLnB5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9z
cmMvZXhhbXBsZS9ldmVudHNvdXJjZS5jZ2kKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2V2ZW50c291cmNl
Lmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2hhbmRsZXJfbWFwLnR4dAotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1w
bGUvaHN0c193c2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2ludGVybmFsX2Vycm9yX3dzaC5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvc3JjL2V4YW1wbGUvb3JpZ2luX2NoZWNrX3dzaC5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUv
cHl3ZWJzb2NrZXQuY29uZgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvc3BlY2lhbF9oZWFkZXJzLmNnaQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvc3JjL2V4YW1wbGUvdXRpbC5qcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvdXRpbF9tYWluLmpz
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC9zcmMvZXhhbXBsZS91dGlsX3dvcmtlci5qcwotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUveGhy
X2JlbmNobWFyay5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS94aHJfYmVuY2htYXJrLmpzCi0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tl
dC9zcmMvZXhhbXBsZS94aHJfZXZlbnRfbG9nZ2VyLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3Jj
L2V4YW1wbGUveGhyX2JlbmNobWFyay5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS94aHJfYmVuY2ht
YXJrLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4NjIyOTc3NWY1YWMwODJh
MWZkZDMyN2E0NTk1ZGY5MWQxZmJkNTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS94aHJfYmVuY2htYXJrLmh0bWwKKysrIC9k
ZXYvbnVsbApAQCAtMSwyMjIgKzAsMCBAQAotPCEtLQotQ29weXJpZ2h0IDIwMTMsIEdvb2dsZSBJ
bmMuCi1BbGwgcmlnaHRzIHJlc2VydmVkLgotCi1SZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLW1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLW1l
dDoKLQotICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLW5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLWNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLWluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLWRpc3Ry
aWJ1dGlvbi4KLSAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLWNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi10aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotCi1USElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0iQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi1BIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi1TUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi1MSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LURBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi1PRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLS0+
Ci0KLTxodG1sPgotPGhlYWQ+Ci08dGl0bGU+WE1MSHR0cFJlcXVlc3QgYmVuY2htYXJrPC90aXRs
ZT4KLTxzY3JpcHQgc3JjPSJ1dGlsX21haW4uanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InV0
aWwuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Inhocl9iZW5jaG1hcmsuanMiPjwvc2NyaXB0
PgotPHNjcmlwdD4KLXZhciBhZGRyZXNzQm94ID0gbnVsbDsKLQotZnVuY3Rpb24gZ2V0Q29uZmln
KCkgewotICByZXR1cm4gewotICAgIHByZWZpeFVybDogYWRkcmVzc0JveC52YWx1ZSwKLSAgICBw
cmludFNpemU6IGdldEJvb2xGcm9tQ2hlY2tCb3goJ3ByaW50c2l6ZScpLAotICAgIG51bVhIUnM6
IGdldEludEZyb21JbnB1dCgnbnVtWEhScycpLAotICAgIGFzeW5jOiBnZXRCb29sRnJvbUNoZWNr
Qm94KCdhc3luYycpLAotICAgIC8vIEluaXRpYWwgc2l6ZSBvZiBtZXNzYWdlcy4KLSAgICBudW1J
dGVyYXRpb25zOiBnZXRJbnRGcm9tSW5wdXQoJ251bWl0ZXJhdGlvbnMnKSwKLSAgICBudW1XYXJt
VXBJdGVyYXRpb25zOiBnZXRJbnRGcm9tSW5wdXQoJ251bXdhcm11cGl0ZXJhdGlvbnMnKSwKLSAg
ICBzdGFydFNpemU6IGdldEludEZyb21JbnB1dCgnc3RhcnRzaXplJyksCi0gICAgLy8gU3RvcHMg
YmVuY2htYXJrIHdoZW4gdGhlIHNpemUgb2YgbWVzc2FnZSBleGNlZWRzIHRoaXMgdGhyZXNob2xk
LgotICAgIHN0b3BUaHJlc2hvbGQ6IGdldEludEZyb21JbnB1dCgnc3RvcHRocmVzaG9sZCcpLAot
ICAgIC8vIElmIHRoZSBzaXplIG9mIGVhY2ggbWVzc2FnZSBpcyBzbWFsbCwgc2VuZC9yZWNlaXZl
IG11bHRpcGxlIG1lc3NhZ2VzCi0gICAgLy8gdW50aWwgdGhlIHN1bSBvZiBzaXplcyByZWFjaGVz
IHRoaXMgdGhyZXNob2xkLgotICAgIC8vIG1pblRvdGFsOiBnZXRJbnRGcm9tSW5wdXQoJ21pbnRv
dGFsJyksCi0gICAgLy8gbWluVG90YWwgaXMgbm90IHlldCBpbXBsZW1lbnRlZCBvbiBYSFIgYmVu
Y2htYXJrCi0gICAgbXVsdGlwbGllcnM6IGdldEludEFycmF5RnJvbUlucHV0KCdtdWx0aXBsaWVy
cycpLAotICAgIHZlcmlmeURhdGE6IGdldEJvb2xGcm9tQ2hlY2tCb3goJ3ZlcmlmeWRhdGEnKQot
ICB9OwotfQotCi12YXIgd29ya2VyID0gbmV3IFdvcmtlcigneGhyX2JlbmNobWFyay5qcycpOwot
d29ya2VyLm9ubWVzc2FnZSA9IG9uTWVzc2FnZTsKLQotZnVuY3Rpb24gb25TZW5kQmVuY2htYXJr
KCkgewotICB2YXIgY29uZmlnID0gZ2V0Q29uZmlnKCk7Ci0gIGNvbmZpZy5kYXRhVHlwZSA9IGdl
dFN0cmluZ0Zyb21SYWRpb0JveCgnZGF0YXR5cGVyYWRpbycpOwotCi0gIGlmIChnZXRCb29sRnJv
bUNoZWNrQm94KCd3b3JrZXInKSkgewotICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7dHlwZTogJ3Nl
bmRCZW5jaG1hcmsnLCBjb25maWc6IGNvbmZpZ30pOwotICB9IGVsc2UgewotICAgIGNvbmZpZy5h
ZGRUb0xvZyA9IGFkZFRvTG9nOwotICAgIGNvbmZpZy5hZGRUb1N1bW1hcnkgPSBhZGRUb1N1bW1h
cnk7Ci0gICAgY29uZmlnLm1lYXN1cmVWYWx1ZSA9IG1lYXN1cmVWYWx1ZTsKLSAgICBzZW5kQmVu
Y2htYXJrKGNvbmZpZyk7Ci0gIH0KLX0KLQotZnVuY3Rpb24gb25SZWNlaXZlQmVuY2htYXJrKCkg
ewotICB2YXIgY29uZmlnID0gZ2V0Q29uZmlnKCk7Ci0gIGNvbmZpZy5kYXRhVHlwZSA9IGdldFN0
cmluZ0Zyb21SYWRpb0JveCgnZGF0YXR5cGVyYWRpbycpOwotCi0gIGlmIChnZXRCb29sRnJvbUNo
ZWNrQm94KCd3b3JrZXInKSkgewotICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7dHlwZTogJ3JlY2Vp
dmVCZW5jaG1hcmsnLCBjb25maWc6IGNvbmZpZ30pOwotICB9IGVsc2UgewotICAgIGNvbmZpZy5h
ZGRUb0xvZyA9IGFkZFRvTG9nOwotICAgIGNvbmZpZy5hZGRUb1N1bW1hcnkgPSBhZGRUb1N1bW1h
cnk7Ci0gICAgY29uZmlnLm1lYXN1cmVWYWx1ZSA9IG1lYXN1cmVWYWx1ZTsKLSAgICByZWNlaXZl
QmVuY2htYXJrKGNvbmZpZyk7Ci0gIH0KLX0KLQotZnVuY3Rpb24gb25CYXRjaEJlbmNobWFyaygp
IHsKLSAgdmFyIGNvbmZpZyA9IGdldENvbmZpZygpOwotCi0gIGlmIChnZXRCb29sRnJvbUNoZWNr
Qm94KCd3b3JrZXInKSkgewotICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7dHlwZTogJ2JhdGNoQmVu
Y2htYXJrJywgY29uZmlnOiBjb25maWd9KTsKLSAgfSBlbHNlIHsKLSAgICBjb25maWcuYWRkVG9M
b2cgPSBhZGRUb0xvZzsKLSAgICBjb25maWcuYWRkVG9TdW1tYXJ5ID0gYWRkVG9TdW1tYXJ5Owot
ICAgIGNvbmZpZy5tZWFzdXJlVmFsdWUgPSBtZWFzdXJlVmFsdWU7Ci0gICAgYmF0Y2hCZW5jaG1h
cmsoY29uZmlnKTsKLSAgfQotfQotCi1mdW5jdGlvbiBvblN0b3AoKSB7Ci0gIHZhciBjb25maWcg
PSBnZXRDb25maWcoKTsKLQotICBpZiAoZ2V0Qm9vbEZyb21DaGVja0JveCgnd29ya2VyJykpIHsK
LSAgICB3b3JrZXIucG9zdE1lc3NhZ2Uoe3R5cGU6ICdzdG9wJywgY29uZmlnOiBjb25maWd9KTsK
LSAgfSBlbHNlIHsKLSAgICBjb25maWcuYWRkVG9Mb2cgPSBhZGRUb0xvZzsKLSAgICBjb25maWcu
YWRkVG9TdW1tYXJ5ID0gYWRkVG9TdW1tYXJ5OwotICAgIGNvbmZpZy5tZWFzdXJlVmFsdWUgPSBt
ZWFzdXJlVmFsdWU7Ci0gICAgc3RvcChjb25maWcpOwotICB9Ci19Ci0KLWZ1bmN0aW9uIGluaXQo
KSB7Ci0gIGFkZHJlc3NCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWRkcmVzcycpOwot
ICBsb2dCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nJyk7Ci0KLSAgc3VtbWFyeUJv
eCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdW1tYXJ5Jyk7Ci0KLSAgLy8gU3BlY2lhbCBh
ZGRyZXNzIG9mIHB5d2Vic29ja2V0IGZvciBYSFIgYmVuY2htYXJrLgotICBhZGRyZXNzQm94LnZh
bHVlID0gJy8wNzNiZTAwMWUxMDk1MDY5MmNjYmYzYTJhZDIxYzI0NSc7Ci0KLSAgYWRkVG9Mb2co
d2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSk7Ci0gIGFkZFRvU3VtbWFy
eSh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpKTsKLX0KLTwvc2NyaXB0
PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJpbml0KCkiPgotCi08Zm9ybSBpZD0iYmVuY2htYXJr
X2Zvcm0iPgotICB1cmwgcHJlZml4IDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iYWRkcmVzcyIgc2l6
ZT0iNDAiPgotICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0ic2VuZCIgb25jbGljaz0ib25T
ZW5kQmVuY2htYXJrKCkiPgotICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0icmVjZWl2ZSIg
b25jbGljaz0ib25SZWNlaXZlQmVuY2htYXJrKCkiPgotICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2
YWx1ZT0iYmF0Y2giIG9uY2xpY2s9Im9uQmF0Y2hCZW5jaG1hcmsoKSI+Ci0gIDxpbnB1dCB0eXBl
PSJidXR0b24iIHZhbHVlPSJzdG9wIiBvbmNsaWNrPSJvblN0b3AoKSI+Ci0KLSAgPGJyLz4KLQot
ICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJwcmludHNpemUiIGNoZWNrZWQ+Ci0gIDxsYWJl
bCBmb3I9InByaW50c2l6ZSI+UHJpbnQgc2l6ZSBhbmQgdGltZSBwZXIgbWVzc2FnZTwvbGFiZWw+
Ci0gIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9InZlcmlmeWRhdGEiIGNoZWNrZWQ+Ci0gIDxs
YWJlbCBmb3I9InZlcmlmeWRhdGEiPlZlcmlmeSBkYXRhPC9sYWJlbD4KLSAgPGlucHV0IHR5cGU9
ImNoZWNrYm94IiBpZD0id29ya2VyIj4KLSAgPGxhYmVsIGZvcj0id29ya2VyIj5SdW4gb24gd29y
a2VyPC9sYWJlbD4KLSAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iYXN5bmMiIGNoZWNrZWQ+
Ci0gIDxsYWJlbCBmb3I9ImFzeW5jIj5Bc3luYzwvbGFiZWw+PGJyPgotICAoUmVjZWl2ZSAmYW1w
OyZhbXA7IE5vbi1Xb3JrZXIgJmFtcDsmYW1wOyBTeW5jIGlzIG5vdCBzdXBwb3J0ZWQgYnkgc3Bl
YykKLQotICA8YnIvPgotCi0gIFBhcmFtZXRlcnM6Ci0KLSAgPGJyLz4KLQotICA8dGFibGU+Ci0g
ICAgPHRyPgotICAgICAgPHRkPk51bSBYSFJzPC90ZD4KLSAgICAgIDx0ZD48aW5wdXQgdHlwZT0i
dGV4dCIgaWQ9Im51bVhIUnMiIHZhbHVlPSIxIj48L3RkPgotICAgIDwvdHI+Ci0gICAgPHRyPgot
ICAgICAgPHRkPk51bWJlciBvZiBpdGVyYXRpb25zPC90ZD4KLSAgICAgIDx0ZD48aW5wdXQgdHlw
ZT0idGV4dCIgaWQ9Im51bWl0ZXJhdGlvbnMiIHZhbHVlPSIxIj48L3RkPgotICAgIDwvdHI+Ci0g
ICAgPHRyPgotICAgICAgPHRkPk51bWJlciBvZiB3YXJtLXVwIGl0ZXJhdGlvbnM8L3RkPgotICAg
ICAgPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ibnVtd2FybXVwaXRlcmF0aW9ucyIgdmFsdWU9
IjAiPjwvdGQ+Ci0gICAgPC90cj4KLSAgICA8dHI+Ci0gICAgICA8dGQ+U3RhcnQgc2l6ZTwvdGQ+
Ci0gICAgICA8dGQ+PGlucHV0IHR5cGU9InRleHQiIGlkPSJzdGFydHNpemUiIHZhbHVlPSIxMDI0
MCI+PC90ZD4KLSAgICA8L3RyPgotICAgIDx0cj4KLSAgICAgIDx0ZD5TdG9wIHRocmVzaG9sZDwv
dGQ+Ci0gICAgICA8dGQ+PGlucHV0IHR5cGU9InRleHQiIGlkPSJzdG9wdGhyZXNob2xkIiB2YWx1
ZT0iMTAyNDAwMDAwIj48L3RkPgotICAgIDwvdHI+Ci0gICAgPHRyPgotICAgICAgPHRkPk1pbmlt
dW0gdG90YWw8L3RkPgotICAgICAgPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ibWludG90YWwi
IHZhbHVlPSIxMDI0MDAwMDAiPjwvdGQ+Ci0gICAgPC90cj4KLSAgICA8dHI+Ci0gICAgICA8dGQ+
TXVsdGlwbGllcnM8L3RkPgotICAgICAgPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ibXVsdGlw
bGllcnMiIHZhbHVlPSI1LCAyIj48L3RkPgotICAgIDwvdHI+Ci0gIDwvdGFibGU+Ci0KLSAgU2V0
IGRhdGEgdHlwZQotICA8aW5wdXQgdHlwZT0icmFkaW8iCi0gICAgICAgICBuYW1lPSJkYXRhdHlw
ZXJhZGlvIgotICAgICAgICAgaWQ9ImRhdGF0eXBlcmFkaW90ZXh0IgotICAgICAgICAgdmFsdWU9
InRleHQiCi0gICAgICAgICBjaGVja2VkPjxsYWJlbCBmb3I9ImRhdGF0eXBlcmFkaW90ZXh0Ij50
ZXh0PC9sYWJlbD4KLSAgPGlucHV0IHR5cGU9InJhZGlvIgotICAgICAgICAgbmFtZT0iZGF0YXR5
cGVyYWRpbyIKLSAgICAgICAgIGlkPSJkYXRhdHlwZXJhZGlvYmxvYiIKLSAgICAgICAgIHZhbHVl
PSJibG9iIgotICAgICAgICAgPjxsYWJlbCBmb3I9ImRhdGF0eXBlcmFkaW9ibG9iIj5ibG9iPC9s
YWJlbD4KLSAgPGlucHV0IHR5cGU9InJhZGlvIgotICAgICAgICAgbmFtZT0iZGF0YXR5cGVyYWRp
byIKLSAgICAgICAgIGlkPSJkYXRhdHlwZXJhZGlvYXJyYXlidWZmZXIiCi0gICAgICAgICB2YWx1
ZT0iYXJyYXlidWZmZXIiCi0gICAgICAgICA+PGxhYmVsIGZvcj0iZGF0YXR5cGVyYWRpb2FycmF5
YnVmZmVyIj5hcnJheWJ1ZmZlcjwvbGFiZWw+Ci08L2Zvcm0+Ci0KLTxkaXYgaWQ9ImxvZ19kaXYi
PgotICA8dGV4dGFyZWEKLSAgICAgIGlkPSJsb2ciIHJvd3M9IjIwIiBzdHlsZT0id2lkdGg6IDEw
MCUiIHJlYWRvbmx5PjwvdGV4dGFyZWE+Ci08L2Rpdj4KLTxkaXYgaWQ9InN1bW1hcnlfZGl2Ij4K
LSAgU3VtbWFyeQotICA8dGV4dGFyZWEKLSAgICAgIGlkPSJzdW1tYXJ5IiByb3dzPSIyMCIgc3R5
bGU9IndpZHRoOiAxMDAlIiByZWFkb25seT48L3RleHRhcmVhPgotPC9kaXY+Ci0KLU5vdGU6IEVm
ZmVjdCBvZiBSVFQgYW5kIHRpbWUgc3BlbnQgZm9yIEFycmF5QnVmZmVyIGNyZWF0aW9uIGluIHJl
Y2VpdmUgYmVuY2htYXJrcyBhcmUgbm90IGVsaW1pbmF0ZWQuCi0KLTwvYm9keT4KLTwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUveGhyX2JlbmNobWFyay5qcyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3Jj
L2V4YW1wbGUveGhyX2JlbmNobWFyay5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MjMzYzdjYjM4YzQ5ZTE1OWRiNWE0MTZkOWFmZGEwOWIyZWYzODZjYi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL3hocl9iZW5j
aG1hcmsuanMKKysrIC9kZXYvbnVsbApAQCAtMSwzODkgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIw
MTQgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZQotLy8gbGljZW5zZSB0aGF0IGNh
biBiZSBmb3VuZCBpbiB0aGUgQ09QWUlORyBmaWxlIG9yIGF0Ci0vLyBodHRwczovL2RldmVsb3Bl
cnMuZ29vZ2xlLmNvbS9vcGVuLXNvdXJjZS9saWNlbnNlcy9ic2QKLQotdmFyIGlzV29ya2VyID0g
dHlwZW9mIGltcG9ydFNjcmlwdHMgIT09ICJ1bmRlZmluZWQiOwotCi1pZiAoaXNXb3JrZXIpIHsK
LSAgLy8gUnVubmluZyBvbiBhIHdvcmtlcgotICBpbXBvcnRTY3JpcHRzKCd1dGlsLmpzJywgJ3V0
aWxfd29ya2VyLmpzJyk7Ci19Ci0KLS8vIE5hbWVzcGFjZSBmb3IgaG9sZGluZyBnbG9iYWxzLgot
dmFyIGJlbmNobWFyayA9IHt9OwotYmVuY2htYXJrLnN0YXJ0VGltZUluTXMgPSAwOwotCi12YXIg
eGhycyA9IFtdOwotCi12YXIgdGltZXJJRCA9IG51bGw7Ci0KLWZ1bmN0aW9uIGRlc3Ryb3lBbGxY
SFJzKCkgewotICBmb3IgKHZhciBpID0gMDsgaSA8IHhocnMubGVuZ3RoOyArK2kpIHsKLSAgICB4
aHJzW2ldLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IG51bGw7Ci0gICAgLy8gQWJvcnQgWEhScyBpZiB0
aGV5IGFyZSBub3QgeWV0IERPTkUgc3RhdGUuCi0gICAgLy8gQ2FsbGluZyBhYm9ydCgpIGhlcmUg
KGkuZS4gaW4gb25yZWFkeXN0YXRlY2hhbmdlIGhhbmRsZXIpIAotICAgIC8vIGNhdXNlcyAiTmV0
d29ya0Vycm9yIiBtZXNzYWdlcyBpbiBEZXZUb29scyBpbiBzeW5jIG1vZGUsCi0gICAgLy8gZXZl
biBpZiBpdCBpcyBhZnRlciB0cmFuc2l0aW9uIHRvIERPTkUgc3RhdGUuCi0gICAgaWYgKHhocnNb
aV0ucmVhZHlTdGF0ZSAhPSBYTUxIdHRwUmVxdWVzdC5ET05FKQotICAgICAgeGhyc1tpXS5hYm9y
dCgpOwotICB9Ci0gIHhocnMgPSBbXTsKLSAgLy8gZ2MoKSBtaWdodCBiZSBuZWVkZWQgZm9yIENo
cm9tZS9CbG9iCi19Ci0KLWZ1bmN0aW9uIHJlcGVhdFN0cmluZyhzdHIsIGNvdW50KSB7Ci0gIHZh
ciBkYXRhID0gJyc7Ci0gIHZhciBleHBDaHVuayA9IHN0cjsKLSAgdmFyIHJlbWFpbiA9IGNvdW50
OwotICB3aGlsZSAodHJ1ZSkgewotICAgIGlmIChyZW1haW4gJSAyKSB7Ci0gICAgICBkYXRhICs9
IGV4cENodW5rOwotICAgICAgcmVtYWluID0gKHJlbWFpbiAtIDEpIC8gMjsKLSAgICB9IGVsc2Ug
ewotICAgICAgcmVtYWluIC89IDI7Ci0gICAgfQotCi0gICAgaWYgKHJlbWFpbiA9PSAwKQotICAg
ICAgYnJlYWs7Ci0KLSAgICBleHBDaHVuayA9IGV4cENodW5rICsgZXhwQ2h1bms7Ci0gIH0KLSAg
cmV0dXJuIGRhdGE7Ci19Ci0KLWZ1bmN0aW9uIHNlbmRCZW5jaG1hcmtTdGVwKHNpemUsIGNvbmZp
ZykgewotICB0aW1lcklEID0gbnVsbDsKLQotICBiZW5jaG1hcmsuc3RhcnRUaW1lSW5NcyA9IG51
bGw7Ci0gIHZhciB0b3RhbFNpemUgPSAwOwotICB2YXIgdG90YWxSZXBsaWVkID0gMDsKLQotICB2
YXIgb25SZWFkeVN0YXRlQ2hhbmdlSGFuZGxlciA9IGZ1bmN0aW9uICgpIHsKLSAgICBpZiAodGhp
cy5yZWFkeVN0YXRlICE9IHRoaXMuRE9ORSkgewotICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGlmICh0aGlzLnN0YXR1cyAhPSAyMDApIHsKLSAgICAgIGNvbmZpZy5hZGRUb0xvZygnRmFpbGVk
IChzdGF0dXM9JyArIHRoaXMuc3RhdHVzICsgJyknKTsKLSAgICAgIGRlc3Ryb3lBbGxYSFJzKCk7
Ci0gICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGNvbmZpZy52ZXJpZnlEYXRhICYmCi0g
ICAgICAgICF2ZXJpZnlBY2tub3dsZWRnZW1lbnQoY29uZmlnLCB0aGlzLnJlc3BvbnNlLCBzaXpl
KSkgewotICAgICAgZGVzdHJveUFsbFhIUnMoKTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICB0b3RhbFJlcGxpZWQgKz0gc2l6ZTsKLQotICAgIGlmICh0b3RhbFJlcGxpZWQgPCB0b3RhbFNp
emUpIHsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYmVuY2htYXJrLnN0YXJ0VGlt
ZUluTXMgPT0gbnVsbCkgewotICAgICAgY29uZmlnLmFkZFRvTG9nKCdzdGFydFRpbWVJbk1zIG5v
dCBzZXQnKTsKLSAgICAgIGRlc3Ryb3lBbGxYSFJzKCk7Ci0gICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgY2FsY3VsYXRlQW5kTG9nUmVzdWx0KGNvbmZpZywgc2l6ZSwgYmVuY2htYXJrLnN0YXJ0
VGltZUluTXMsIHRvdGFsU2l6ZSk7Ci0KLSAgICBkZXN0cm95QWxsWEhScygpOwotCi0gICAgcnVu
TmV4dFRhc2soY29uZmlnKTsKLSAgfTsKLQotICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbmZpZy5u
dW1YSFJzOyArK2kpIHsKLSAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7Ci0gICAg
eGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IG9uUmVhZHlTdGF0ZUNoYW5nZUhhbmRsZXI7Ci0gICAg
eGhycy5wdXNoKHhocik7Ci0gIH0KLQotICB2YXIgZGF0YUFycmF5ID0gW107Ci0KLSAgZm9yICh2
YXIgaSA9IDA7IGkgPCB4aHJzLmxlbmd0aDsgKytpKSB7Ci0gICAgdmFyIGRhdGEgPSBudWxsOwot
ICAgIGlmIChjb25maWcuZGF0YVR5cGUgPT0gJ2FycmF5YnVmZmVyJyB8fAotICAgICAgICBjb25m
aWcuZGF0YVR5cGUgPT0gJ2Jsb2InKSB7Ci0gICAgICBkYXRhID0gbmV3IEFycmF5QnVmZmVyKHNp
emUpOwotCi0gICAgICBmaWxsQXJyYXlCdWZmZXIoZGF0YSwgMHg2MSk7Ci0KLSAgICAgIGlmIChj
b25maWcuZGF0YVR5cGUgPT0gJ2Jsb2InKSB7Ci0gICAgICAgIGRhdGEgPSBuZXcgQmxvYihbZGF0
YV0pOwotICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICBkYXRhID0gcmVwZWF0U3RyaW5nKCdh
Jywgc2l6ZSk7Ci0gICAgfQotCi0gICAgZGF0YUFycmF5LnB1c2goZGF0YSk7Ci0gIH0KLQotCi0g
IGJlbmNobWFyay5zdGFydFRpbWVJbk1zID0gZ2V0VGltZVN0YW1wKCk7Ci0gIHRvdGFsU2l6ZSA9
IHNpemUgKiB4aHJzLmxlbmd0aDsKLQotICBmb3IgKHZhciBpID0gMDsgaSA8IHhocnMubGVuZ3Ro
OyArK2kpIHsKLSAgICB2YXIgZGF0YSA9IGRhdGFBcnJheVtpXTsKLSAgICB2YXIgeGhyID0geGhy
c1tpXTsKLSAgICB4aHIub3BlbignUE9TVCcsIGNvbmZpZy5wcmVmaXhVcmwgKyAnX3NlbmQnLCBj
b25maWcuYXN5bmMpOwotICAgIHhoci5zZW5kKGRhdGEpOwotICB9Ci19Ci0KLWZ1bmN0aW9uIHJl
Y2VpdmVCZW5jaG1hcmtTdGVwKHNpemUsIGNvbmZpZykgewotICB0aW1lcklEID0gbnVsbDsKLQot
ICBiZW5jaG1hcmsuc3RhcnRUaW1lSW5NcyA9IG51bGw7Ci0gIHZhciB0b3RhbFNpemUgPSAwOwot
ICB2YXIgdG90YWxSZXBsaWVkID0gMDsKLQotICB2YXIgY2hlY2tSZXN1bHRBbmRDb250aW51ZSA9
IGZ1bmN0aW9uIChieXRlc1JlY2VpdmVkLCB2ZXJpZmljYXRpb25SZXN1bHQpIHsKLSAgICBpZiAo
IXZlcmlmaWNhdGlvblJlc3VsdCkgewotICAgICAgY29uZmlnLmFkZFRvTG9nKCdSZXNwb25zZSB2
ZXJpZmljYXRpb24gZmFpbGVkJyk7Ci0gICAgICBkZXN0cm95QWxsWEhScygpOwotICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIHRvdGFsUmVwbGllZCArPSBieXRlc1JlY2VpdmVkOwotCi0gICAg
aWYgKHRvdGFsUmVwbGllZCA8IHRvdGFsU2l6ZSkgewotICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGlmIChiZW5jaG1hcmsuc3RhcnRUaW1lSW5NcyA9PSBudWxsKSB7Ci0gICAgICBjb25maWcu
YWRkVG9Mb2coJ3N0YXJ0VGltZUluTXMgbm90IHNldCcpOwotICAgICAgZGVzdHJveUFsbFhIUnMo
KTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjYWxjdWxhdGVBbmRMb2dSZXN1bHQoY29u
ZmlnLCBzaXplLCBiZW5jaG1hcmsuc3RhcnRUaW1lSW5NcywgdG90YWxTaXplKTsKLQotICAgIGRl
c3Ryb3lBbGxYSFJzKCk7Ci0KLSAgICBydW5OZXh0VGFzayhjb25maWcpOwotICB9Ci0KLSAgdmFy
IG9uUmVhZHlTdGF0ZUNoYW5nZUhhbmRsZXIgPSBmdW5jdGlvbiAoKSB7Ci0gICAgaWYgKHRoaXMu
cmVhZHlTdGF0ZSAhPSB0aGlzLkRPTkUpIHsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAodGhpcy5zdGF0dXMgIT0gMjAwKSB7Ci0gICAgICBjb25maWcuYWRkVG9Mb2coJ0ZhaWxlZCAo
c3RhdHVzPScgKyB0aGlzLnN0YXR1cyArICcpJyk7Ci0gICAgICBkZXN0cm95QWxsWEhScygpOwot
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHZhciBieXRlc1JlY2VpdmVkID0gLTE7Ci0gICAg
aWYgKHRoaXMucmVzcG9uc2VUeXBlID09ICdhcnJheWJ1ZmZlcicpIHsKLSAgICAgIGJ5dGVzUmVj
ZWl2ZWQgPSB0aGlzLnJlc3BvbnNlLmJ5dGVMZW5ndGg7Ci0gICAgfSBlbHNlIGlmICh0aGlzLnJl
c3BvbnNlVHlwZSA9PSAnYmxvYicpIHsKLSAgICAgIGJ5dGVzUmVjZWl2ZWQgPSB0aGlzLnJlc3Bv
bnNlLnNpemU7Ci0gICAgfSBlbHNlIHsKLSAgICAgIGJ5dGVzUmVjZWl2ZWQgPSB0aGlzLnJlc3Bv
bnNlLmxlbmd0aDsKLSAgICB9Ci0gICAgaWYgKGJ5dGVzUmVjZWl2ZWQgIT0gc2l6ZSkgewotICAg
ICAgY29uZmlnLmFkZFRvTG9nKCdFeHBlY3RlZCAnICsgc2l6ZSArCi0gICAgICAgICAgJ0IgYnV0
IHJlY2VpdmVkICcgKyBieXRlc1JlY2VpdmVkICsgJ0InKTsKLSAgICAgIGRlc3Ryb3lBbGxYSFJz
KCk7Ci0gICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKHRoaXMucmVzcG9uc2VUeXBlID09
ICdhcnJheWJ1ZmZlcicpIHsKLSAgICAgIGNoZWNrUmVzdWx0QW5kQ29udGludWUoYnl0ZXNSZWNl
aXZlZCwKLSAgICAgICAgICAhY29uZmlnLnZlcmlmeURhdGEgfHwgdmVyaWZ5QXJyYXlCdWZmZXIo
dGhpcy5yZXNwb25zZSwgMHg2MSkpOwotICAgIH0gZWxzZSBpZiAodGhpcy5yZXNwb25zZVR5cGUg
PT0gJ2Jsb2InKSB7Ci0gICAgICBpZiAoY29uZmlnLnZlcmlmeURhdGEpCi0gICAgICAgIHZlcmlm
eUJsb2IoY29uZmlnLCB0aGlzLnJlc3BvbnNlLCAweDYxLCBjaGVja1Jlc3VsdEFuZENvbnRpbnVl
KTsKLSAgICAgIGVsc2UKLSAgICAgICAgY2hlY2tSZXN1bHRBbmRDb250aW51ZShieXRlc1JlY2Vp
dmVkLCB0cnVlKTsKLSAgICB9IGVsc2UgewotICAgICAgY2hlY2tSZXN1bHRBbmRDb250aW51ZSgK
LSAgICAgICAgICBieXRlc1JlY2VpdmVkLAotICAgICAgICAgICFjb25maWcudmVyaWZ5RGF0YSB8
fAotICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlID09IHJlcGVhdFN0cmluZygnYScsIHRoaXMu
cmVzcG9uc2UubGVuZ3RoKSk7Ci0gICAgfQotICB9OwotCi0gIGZvciAodmFyIGkgPSAwOyBpIDwg
Y29uZmlnLm51bVhIUnM7ICsraSkgewotICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3Qo
KTsKLSAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gb25SZWFkeVN0YXRlQ2hhbmdlSGFuZGxl
cjsKLSAgICB4aHJzLnB1c2goeGhyKTsKLSAgfQotCi0gIGJlbmNobWFyay5zdGFydFRpbWVJbk1z
ID0gZ2V0VGltZVN0YW1wKCk7Ci0gIHRvdGFsU2l6ZSA9IHNpemUgKiB4aHJzLmxlbmd0aDsKLQot
ICBmb3IgKHZhciBpID0gMDsgaSA8IHhocnMubGVuZ3RoOyArK2kpIHsKLSAgICB2YXIgeGhyID0g
eGhyc1tpXTsKLSAgICB4aHIub3BlbignUE9TVCcsIGNvbmZpZy5wcmVmaXhVcmwgKyAnX3JlY2Vp
dmUnLCBjb25maWcuYXN5bmMpOwotICAgIHhoci5yZXNwb25zZVR5cGUgPSBjb25maWcuZGF0YVR5
cGU7Ci0gICAgeGhyLnNlbmQoc2l6ZSArICcgbm9uZScpOwotICB9Ci19Ci0KLQotZnVuY3Rpb24g
Z2V0Q29uZmlnU3RyaW5nKGNvbmZpZykgewotICByZXR1cm4gJygnICsgY29uZmlnLmRhdGFUeXBl
ICsKLSAgICAnLCB2ZXJpZnlEYXRhPScgKyBjb25maWcudmVyaWZ5RGF0YSArCi0gICAgJywgJyAr
IChpc1dvcmtlciA/ICdXb3JrZXInIDogJ01haW4nKSArCi0gICAgJywgJyArIChjb25maWcuYXN5
bmMgPyAnQXN5bmMnIDogJ1N5bmMnKSArCi0gICAgJywgbnVtWEhScz0nICsgY29uZmlnLm51bVhI
UnMgKwotICAgICcsIG51bUl0ZXJhdGlvbnM9JyArIGNvbmZpZy5udW1JdGVyYXRpb25zICsKLSAg
ICAnLCBudW1XYXJtVXBJdGVyYXRpb25zPScgKyBjb25maWcubnVtV2FybVVwSXRlcmF0aW9ucyAr
Ci0gICAgJyknOwotfQotCi1mdW5jdGlvbiBzdGFydEJlbmNobWFyayhjb25maWcpIHsKLSAgY2xl
YXJUaW1lb3V0KHRpbWVySUQpOwotICBkZXN0cm95QWxsWEhScygpOwotCi0gIHJ1bk5leHRUYXNr
KGNvbmZpZyk7Ci19Ci0KLS8vIFRPRE8oaGlyb3NoaWdlKTogdGhlIGZvbGxvd2luZyBjb2RlIGlz
IHRoZSBzYW1lIGFzIGJlbmNobWFyay5odG1sCi0vLyBhbmQgc29tZSBvZiB0aGVtIHNob3VsZCBi
ZSBtZXJnZWQgaW50byBlLmcuIHV0aWwuanMKLQotdmFyIHRhc2tzID0gW107Ci0KLWZ1bmN0aW9u
IHJ1bk5leHRUYXNrKGNvbmZpZykgewotICB2YXIgdGFzayA9IHRhc2tzLnNoaWZ0KCk7Ci0gIGlm
ICh0YXNrID09IHVuZGVmaW5lZCkgewotICAgIGNvbmZpZy5hZGRUb0xvZygnRmluaXNoZWQnKTsK
LSAgICBkZXN0cm95QWxsWEhScygpOwotICAgIHJldHVybjsKLSAgfQotICB0aW1lcklEID0gc2V0
VGltZW91dCh0YXNrLCAwKTsKLX0KLQotZnVuY3Rpb24gYnVpbGRMZWdlbmRTdHJpbmcoY29uZmln
KSB7Ci0gIHZhciBsZWdlbmQgPSAnJwotICBpZiAoY29uZmlnLnByaW50U2l6ZSkKLSAgICBsZWdl
bmQgPSAnTWVzc2FnZSBzaXplIGluIEtpQiwgVGltZS9tZXNzYWdlIGluIG1zLCAnOwotICBsZWdl
bmQgKz0gJ1NwZWVkIGluIGtCL3MnOwotICByZXR1cm4gbGVnZW5kOwotfQotCi1mdW5jdGlvbiBh
ZGRUYXNrcyhjb25maWcsIHN0ZXBGdW5jKSB7Ci0gIGZvciAodmFyIGkgPSAwOwotICAgICAgaSA8
IGNvbmZpZy5udW1XYXJtVXBJdGVyYXRpb25zICsgY29uZmlnLm51bUl0ZXJhdGlvbnM7ICsraSkg
ewotICAgIC8vIElnbm9yZSB0aGUgZmlyc3QgfGNvbmZpZy5udW1XYXJtVXBJdGVyYXRpb25zfCBp
dGVyYXRpb25zLgotICAgIGlmIChpID09IGNvbmZpZy5udW1XYXJtVXBJdGVyYXRpb25zKQotICAg
ICAgYWRkUmVzdWx0Q2xlYXJpbmdUYXNrKGNvbmZpZyk7Ci0KLSAgICB2YXIgbXVsdGlwbGllcklu
ZGV4ID0gMDsKLSAgICBmb3IgKHZhciBzaXplID0gY29uZmlnLnN0YXJ0U2l6ZTsKLSAgICAgICAg
IHNpemUgPD0gY29uZmlnLnN0b3BUaHJlc2hvbGQ7Ci0gICAgICAgICArK211bHRpcGxpZXJJbmRl
eCkgewotICAgICAgdmFyIHRhc2sgPSBzdGVwRnVuYy5iaW5kKAotICAgICAgICAgIG51bGwsCi0g
ICAgICAgICAgc2l6ZSwKLSAgICAgICAgICBjb25maWcpOwotICAgICAgdGFza3MucHVzaCh0YXNr
KTsKLSAgICAgIHNpemUgKj0gY29uZmlnLm11bHRpcGxpZXJzWwotICAgICAgICAgIG11bHRpcGxp
ZXJJbmRleCAlIGNvbmZpZy5tdWx0aXBsaWVycy5sZW5ndGhdOwotICAgIH0KLSAgfQotfQotCi1m
dW5jdGlvbiBhZGRSZXN1bHRSZXBvcnRpbmdUYXNrKGNvbmZpZywgdGl0bGUpIHsKLSAgdGFza3Mu
cHVzaChmdW5jdGlvbigpewotICAgICAgdGltZXJJRCA9IG51bGw7Ci0gICAgICBjb25maWcuYWRk
VG9TdW1tYXJ5KHRpdGxlKTsKLSAgICAgIHJlcG9ydEF2ZXJhZ2VEYXRhKGNvbmZpZyk7Ci0gICAg
ICBjbGVhckF2ZXJhZ2VEYXRhKCk7Ci0gICAgICBydW5OZXh0VGFzayhjb25maWcpOwotICB9KTsK
LX0KLQotZnVuY3Rpb24gYWRkUmVzdWx0Q2xlYXJpbmdUYXNrKGNvbmZpZykgewotICB0YXNrcy5w
dXNoKGZ1bmN0aW9uKCl7Ci0gICAgICB0aW1lcklEID0gbnVsbDsKLSAgICAgIGNsZWFyQXZlcmFn
ZURhdGEoKTsKLSAgICAgIHJ1bk5leHRUYXNrKGNvbmZpZyk7Ci0gIH0pOwotfQotCi0vLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1mdW5jdGlvbiBzZW5kQmVuY2htYXJrKGNv
bmZpZykgewotICBjb25maWcuYWRkVG9Mb2coJ1NlbmQgYmVuY2htYXJrJyk7Ci0gIGNvbmZpZy5h
ZGRUb0xvZyhidWlsZExlZ2VuZFN0cmluZyhjb25maWcpKTsKLQotICB0YXNrcyA9IFtdOwotICBj
bGVhckF2ZXJhZ2VEYXRhKCk7Ci0gIGFkZFRhc2tzKGNvbmZpZywgc2VuZEJlbmNobWFya1N0ZXAp
OwotICBhZGRSZXN1bHRSZXBvcnRpbmdUYXNrKGNvbmZpZywgJ1NlbmQgQmVuY2htYXJrICcgKyBn
ZXRDb25maWdTdHJpbmcoY29uZmlnKSk7Ci0gIHN0YXJ0QmVuY2htYXJrKGNvbmZpZyk7Ci19Ci0K
LWZ1bmN0aW9uIHJlY2VpdmVCZW5jaG1hcmsoY29uZmlnKSB7Ci0gIGNvbmZpZy5hZGRUb0xvZygn
UmVjZWl2ZSBiZW5jaG1hcmsnKTsKLSAgY29uZmlnLmFkZFRvTG9nKGJ1aWxkTGVnZW5kU3RyaW5n
KGNvbmZpZykpOwotCi0gIHRhc2tzID0gW107Ci0gIGNsZWFyQXZlcmFnZURhdGEoKTsKLSAgYWRk
VGFza3MoY29uZmlnLCByZWNlaXZlQmVuY2htYXJrU3RlcCk7Ci0gIGFkZFJlc3VsdFJlcG9ydGlu
Z1Rhc2soY29uZmlnLAotICAgICAgJ1JlY2VpdmUgQmVuY2htYXJrICcgKyBnZXRDb25maWdTdHJp
bmcoY29uZmlnKSk7Ci0gIHN0YXJ0QmVuY2htYXJrKGNvbmZpZyk7Ci19Ci0KLWZ1bmN0aW9uIGJh
dGNoQmVuY2htYXJrKG9yaWdpbmFsQ29uZmlnKSB7Ci0gIG9yaWdpbmFsQ29uZmlnLmFkZFRvTG9n
KCdCYXRjaCBiZW5jaG1hcmsnKTsKLQotICB0YXNrcyA9IFtdOwotICBjbGVhckF2ZXJhZ2VEYXRh
KCk7Ci0KLSAgdmFyIGRhdGFUeXBlcyA9IFsndGV4dCcsICdibG9iJywgJ2FycmF5YnVmZmVyJ107
Ci0gIHZhciBzdGVwRnVuY3MgPSBbc2VuZEJlbmNobWFya1N0ZXAsIHJlY2VpdmVCZW5jaG1hcmtT
dGVwXTsKLSAgdmFyIG5hbWVzID0gWydTZW5kJywgJ1JlY2VpdmUnXTsKLSAgdmFyIGFzeW5jID0g
W3RydWUsIGZhbHNlXTsKLSAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdGVwRnVuY3MubGVuZ3RoOyAr
K2kpIHsKLSAgICBmb3IgKHZhciBqID0gMDsgaiA8IGRhdGFUeXBlcy5sZW5ndGg7ICsraikgewot
ICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCBhc3luYy5sZW5ndGg7ICsraykgewotICAgICAgICB2
YXIgY29uZmlnID0gY2xvbmVDb25maWcob3JpZ2luYWxDb25maWcpOwotICAgICAgICBjb25maWcu
ZGF0YVR5cGUgPSBkYXRhVHlwZXNbal07Ci0gICAgICAgIGNvbmZpZy5hc3luYyA9IGFzeW5jW2td
OwotCi0gICAgICAgIC8vIFJlY2VpdmUgJiYgTm9uLVdvcmtlciAmJiBTeW5jIGlzIG5vdCBzdXBw
b3J0ZWQgYnkgdGhlIHNwZWMKLSAgICAgICAgaWYgKHN0ZXBGdW5jc1tpXSA9PT0gcmVjZWl2ZUJl
bmNobWFya1N0ZXAgJiYgIWlzV29ya2VyICYmCi0gICAgICAgICAgICAhY29uZmlnLmFzeW5jKQot
ICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGFkZFRhc2tzKGNvbmZpZywgc3RlcEZ1bmNz
W2ldKTsKLSAgICAgICAgYWRkUmVzdWx0UmVwb3J0aW5nVGFzayhjb25maWcsCi0gICAgICAgICAg
ICBuYW1lc1tpXSArICcgYmVuY2htYXJrICcgKyBnZXRDb25maWdTdHJpbmcoY29uZmlnKSk7Ci0g
ICAgICB9Ci0gICAgfQotICB9Ci0KLSAgc3RhcnRCZW5jaG1hcmsoY29uZmlnKTsKLX0KLQotCi1m
dW5jdGlvbiBzdG9wKGNvbmZpZykgewotICBkZXN0cm95QWxsWEhScygpOwotICBjbGVhclRpbWVv
dXQodGltZXJJRCk7Ci0gIHRpbWVySUQgPSBudWxsOwotICBjb25maWcuYWRkVG9Mb2coJ1N0b3Bw
ZWQnKTsKLX0KLQotb25tZXNzYWdlID0gZnVuY3Rpb24gKG1lc3NhZ2UpIHsKLSAgdmFyIGNvbmZp
ZyA9IG1lc3NhZ2UuZGF0YS5jb25maWc7Ci0gIGNvbmZpZy5hZGRUb0xvZyA9IHdvcmtlckFkZFRv
TG9nOwotICBjb25maWcuYWRkVG9TdW1tYXJ5ID0gd29ya2VyQWRkVG9TdW1tYXJ5OwotICBjb25m
aWcubWVhc3VyZVZhbHVlID0gd29ya2VyTWVhc3VyZVZhbHVlOwotICBpZiAobWVzc2FnZS5kYXRh
LnR5cGUgPT09ICdzZW5kQmVuY2htYXJrJykKLSAgICBzZW5kQmVuY2htYXJrKGNvbmZpZyk7Ci0g
IGVsc2UgaWYgKG1lc3NhZ2UuZGF0YS50eXBlID09PSAncmVjZWl2ZUJlbmNobWFyaycpCi0gICAg
cmVjZWl2ZUJlbmNobWFyayhjb25maWcpOwotICBlbHNlIGlmIChtZXNzYWdlLmRhdGEudHlwZSA9
PT0gJ2JhdGNoQmVuY2htYXJrJykKLSAgICBiYXRjaEJlbmNobWFyayhjb25maWcpOwotICBlbHNl
IGlmIChtZXNzYWdlLmRhdGEudHlwZSA9PT0gJ3N0b3AnKQotICAgIHN0b3AoY29uZmlnKTsKLX07
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL3hocl9ldmVudF9sb2dnZXIuaHRtbCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvc3JjL2V4YW1wbGUveGhyX2V2ZW50X2xvZ2dlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA2OTgzNTUzYjhhYzgwMzU5ZWU4NWJhOTgxZTUwMDU4ZWNlNDM3YzhhLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1w
bGUveGhyX2V2ZW50X2xvZ2dlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTEwICswLDAgQEAK
LTwhLS0KLUNvcHlyaWdodCAyMDE0IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0K
LVVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlCi1saWNl
bnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBDT1BZSU5HIGZpbGUgb3IgYXQKLWh0dHBzOi8v
ZGV2ZWxvcGVycy5nb29nbGUuY29tL29wZW4tc291cmNlL2xpY2Vuc2VzL2JzZAotLS0+Ci0KLTxo
dG1sPgotPGhlYWQ+Ci08dGl0bGU+WEhSIGV2ZW50IGxvZ2dlcjwvdGl0bGU+Ci08c2NyaXB0IHNy
Yz0idXRpbF9tYWluLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci12YXIgZXZlbnRzID0gW107Ci0K
LWZ1bmN0aW9uIHJ1bigpIHsKLSAgZXZlbnRzID0gW107Ci0KLSAgZnVuY3Rpb24gcHVzaFRvTG9n
KHR5cGUpIHsKLSAgICBpZiAoZXZlbnRzLmxlbmd0aCAhPSAwICYmIHR5cGUgPT09IGV2ZW50c1tl
dmVudHMubGVuZ3RoIC0gMV0udHlwZSkgewotICAgICAgZXZlbnRzW2V2ZW50cy5sZW5ndGggLSAx
XS5jb3VudCArPSAxOwotICAgIH0gZWxzZSB7Ci0gICAgICBldmVudHMucHVzaCh7dHlwZTogdHlw
ZSwgY291bnQ6IDF9KTsKLSAgICB9Ci0gIH0KLQotICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1
ZXN0KCk7Ci0KLSAgZnVuY3Rpb24gZ2V0UHJvZ3Jlc3NFdmVudER1bXAoZSkgewotICAgIHJldHVy
biAnKCcgKyBlLmxlbmd0aENvbXB1dGFibGUgKyAnLCAnICsgZS5sb2FkZWQgKyAnLCAnICsgZS50
b3RhbCArICcpJzsKLSAgfQotCi0gIHZhciBkdW1wUHJvZ3Jlc3NFdmVudCA9IGdldEJvb2xGcm9t
Q2hlY2tCb3goJ2R1bXBwcm9ncmVzc2V2ZW50Jyk7Ci0KLSAgZnVuY3Rpb24gbG9nKGUpIHsKLSAg
ICB2YXIgdHlwZSA9IGUudHlwZTsKLSAgICBpZiAodHlwZSA9PT0gJ3JlYWR5c3RhdGVjaGFuZ2Un
KSB7Ci0gICAgICB0eXBlICs9IGUudGFyZ2V0LnJlYWR5U3RhdGU7Ci0gICAgfQotICAgIGlmIChk
dW1wUHJvZ3Jlc3NFdmVudCAmJiAoZSBpbnN0YW5jZW9mIFByb2dyZXNzRXZlbnQpKSB7Ci0gICAg
ICB0eXBlICs9IGdldFByb2dyZXNzRXZlbnREdW1wKGUpOwotICAgIH0KLSAgICBwdXNoVG9Mb2co
dHlwZSk7Ci0gIH07Ci0KLSAgZnVuY3Rpb24gbG9nVXBsb2FkKGUpIHsKLSAgICB2YXIgdHlwZSA9
IGUudHlwZTsKLSAgICBpZiAoZHVtcFByb2dyZXNzRXZlbnQgJiYgKGUgaW5zdGFuY2VvZiBQcm9n
cmVzc0V2ZW50KSkgewotICAgICAgdHlwZSArPSBnZXRQcm9ncmVzc0V2ZW50RHVtcChlKTsKLSAg
ICB9Ci0gICAgcHVzaFRvTG9nKCd1cGxvYWQnICsgdHlwZSk7Ci0gIH0KLQotICBpZiAoZ2V0Qm9v
bEZyb21DaGVja0JveCgndXBsb2FkJykpIHsKLSAgICB2YXIgdXBsb2FkID0geGhyLnVwbG9hZDsK
LSAgICB1cGxvYWQub25sb2Fkc3RhcnQgPSBsb2dVcGxvYWQ7Ci0gICAgdXBsb2FkLm9ucHJvZ3Jl
c3MgPSBsb2dVcGxvYWQ7Ci0gICAgdXBsb2FkLm9uYWJvcnQgPSBsb2dVcGxvYWQ7Ci0gICAgdXBs
b2FkLm9uZXJyb3IgPSBsb2dVcGxvYWQ7Ci0gICAgdXBsb2FkLm9ubG9hZCA9IGxvZ1VwbG9hZDsK
LSAgICB1cGxvYWQub250aW1lb3V0ID0gbG9nVXBsb2FkOwotICAgIHVwbG9hZC5vbmxvYWRlbmQg
PSBsb2dVcGxvYWQ7Ci0gIH0KLQotICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gbG9nOwotICB4
aHIub25sb2Fkc3RhcnQgPSBsb2c7Ci0gIHhoci5vbnByb2dyZXNzID0gbG9nOwotICB4aHIub25h
Ym9ydCA9IGxvZzsKLSAgeGhyLm9uZXJyb3IgPSBsb2c7Ci0gIHhoci5vbmxvYWQgPSBsb2c7Ci0g
IHhoci5vbnRpbWVvdXQgPSBsb2c7Ci0gIHhoci5vbmxvYWRlbmQgPSBsb2c7Ci0KLSAgeGhyLm9w
ZW4oJ1BPU1QnLCAnLzA3M2JlMDAxZTEwOTUwNjkyY2NiZjNhMmFkMjFjMjQ1X3JlY2VpdmUnLAot
ICAgICAgICAgICBnZXRCb29sRnJvbUNoZWNrQm94KCdhc3luYycpKTsKLSAgdmFyIHNpemUgPSBn
ZXRJbnRGcm9tSW5wdXQoJ3NpemUnKTsKLSAgdmFyIGNodW5rZWRNb2RlID0gJ25vbmUnOwotICBp
ZiAoZ2V0Qm9vbEZyb21DaGVja0JveCgnY2h1bmtlZHJlc3BvbnNlJykpIHsKLSAgICBjaHVua2Vk
TW9kZSA9ICdjaHVua2VkJzsKLSAgfQotICB4aHIuc2VuZChzaXplICsgJyAnICsgY2h1bmtlZE1v
ZGUpOwotfQotCi1mdW5jdGlvbiBwcmludCgpIHsKLSAgdmFyIHJlc3VsdCA9ICcnOwotICBmb3Ig
KHZhciBpID0gMDsgaSA8IGV2ZW50cy5sZW5ndGg7ICsraSkgewotICAgIHZhciBldmVudCA9IGV2
ZW50c1tpXTsKLSAgICByZXN1bHQgKz0gZXZlbnQudHlwZSArICcgKiAnICsgZXZlbnQuY291bnQg
KyAnXG4nOwotICB9Ci0gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2cnKS52YWx1ZSA9IHJl
c3VsdDsKLX0KLTwvc2NyaXB0PgotCi08Ym9keT4KLSAgPHRleHRhcmVhIGlkPSJsb2ciIHJvd3M9
IjEwIiBjb2xzPSI0MCIgcmVhZG9ubHk+PC90ZXh0YXJlYT4KLSAgPGJyLz4KLSAgU2l6ZTogPGlu
cHV0IHR5cGU9InRleHQiIGlkPSJzaXplIiB2YWx1ZT0iNjU1MzYiPjxici8+Ci0gIDxpbnB1dCB0
eXBlPSJjaGVja2JveCIgaWQ9ImNodW5rZWRyZXNwb25zZSI+Ci0gIDxsYWJlbCBmb3I9ImNodW5r
ZWRyZXNwb25zZSI+VXNlIENodW5rZWQgVC1FIGZvciByZXNwb25zZTwvbGFiZWw+PGJyLz4KLSAg
PGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0idXBsb2FkIj4KLSAgPGxhYmVsIGZvcj0idXBsb2Fk
Ij5VcGxvYWQgcHJvZ3Jlc3M8L2xhYmVsPjxici8+Ci0gIDxpbnB1dCB0eXBlPSJjaGVja2JveCIg
aWQ9ImR1bXBwcm9ncmVzc2V2ZW50Ij4KLSAgPGxhYmVsIGZvcj0iZHVtcHByb2dyZXNzZXZlbnQi
PgotICAgIER1bXAgbGVuZ3RoQ29tcHV0YWJsZS9sb2FkZWQvdG90YWw8L2xhYmVsPjxici8+Ci0g
IDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9ImFzeW5jIiBjaGVja2VkPgotICA8bGFiZWwgZm9y
PSJhc3luYyI+QXN5bmM8L2xhYmVsPjxici8+Ci0gIDxpbnB1dCB0eXBlPSJidXR0b24iIG9uY2xp
Y2s9InJ1bigpIiB2YWx1ZT0iUnVuIFhIUiI+Ci0gIDxpbnB1dCB0eXBlPSJidXR0b24iIG9uY2xp
Y2s9InByaW50KCkiIHZhbHVlPSJQcmludCBsb2ciPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9k
X3B5d2Vic29ja2V0L19faW5pdF9fLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3
MDkzM2EyMjA0NTFmYWRiNmEwMWE1YzFkNDVjMjU1MTQ2OGQ3ZDg1Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC9f
X2luaXRfXy5weQorKysgL2Rldi9udWxsCkBAIC0xLDIyNCArMCwwIEBACi0jIENvcHlyaWdodCAy
MDExLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0j
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
IyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLQotCi0iIiJXZWJTb2NrZXQgZXh0ZW5zaW9uIGZvciBBcGFjaGUgSFRUUCBTZXJ2ZXIuCi0K
LW1vZF9weXdlYnNvY2tldCBpcyBhIFdlYlNvY2tldCBleHRlbnNpb24gZm9yIEFwYWNoZSBIVFRQ
IFNlcnZlcgotaW50ZW5kZWQgZm9yIHRlc3Rpbmcgb3IgZXhwZXJpbWVudGFsIHB1cnBvc2VzLiBt
b2RfcHl0aG9uIGlzIHJlcXVpcmVkLgotCi0KLUluc3RhbGxhdGlvbgotPT09PT09PT09PT09Ci0K
LTAuIFByZXBhcmUgYW4gQXBhY2hlIEhUVFAgU2VydmVyIGZvciB3aGljaCBtb2RfcHl0aG9uIGlz
IGVuYWJsZWQuCi0KLTEuIFNwZWNpZnkgdGhlIGZvbGxvd2luZyBBcGFjaGUgSFRUUCBTZXJ2ZXIg
ZGlyZWN0aXZlcyB0byBzdWl0IHlvdXIKLSAgIGNvbmZpZ3VyYXRpb24uCi0KLSAgIElmIG1vZF9w
eXdlYnNvY2tldCBpcyBub3QgaW4gdGhlIFB5dGhvbiBwYXRoLCBzcGVjaWZ5IHRoZSBmb2xsb3dp
bmcuCi0gICA8d2Vic29ja19saWI+IGlzIHRoZSBkaXJlY3Rvcnkgd2hlcmUgbW9kX3B5d2Vic29j
a2V0IGlzIGluc3RhbGxlZC4KLQotICAgICAgIFB5dGhvblBhdGggInN5cy5wYXRoK1snPHdlYnNv
Y2tfbGliPiddIgotCi0gICBBbHdheXMgc3BlY2lmeSB0aGUgZm9sbG93aW5nLiA8d2Vic29ja19o
YW5kbGVycz4gaXMgdGhlIGRpcmVjdG9yeSB3aGVyZQotICAgdXNlci13cml0dGVuIFdlYlNvY2tl
dCBoYW5kbGVycyBhcmUgcGxhY2VkLgotCi0gICAgICAgUHl0aG9uT3B0aW9uIG1vZF9weXdlYnNv
Y2tldC5oYW5kbGVyX3Jvb3QgPHdlYnNvY2tfaGFuZGxlcnM+Ci0gICAgICAgUHl0aG9uSGVhZGVy
UGFyc2VySGFuZGxlciBtb2RfcHl3ZWJzb2NrZXQuaGVhZGVycGFyc2VyaGFuZGxlcgotCi0gICBU
byBsaW1pdCB0aGUgc2VhcmNoIGZvciBXZWJTb2NrZXQgaGFuZGxlcnMgdG8gYSBkaXJlY3Rvcnkg
PHNjYW5fZGlyPgotICAgdW5kZXIgPHdlYnNvY2tfaGFuZGxlcnM+LCBjb25maWd1cmUgYXMgZm9s
bG93czoKLQotICAgICAgIFB5dGhvbk9wdGlvbiBtb2RfcHl3ZWJzb2NrZXQuaGFuZGxlcl9zY2Fu
IDxzY2FuX2Rpcj4KLQotICAgPHNjYW5fZGlyPiBpcyB1c2VmdWwgaW4gc2F2aW5nIHNjYW4gdGlt
ZSB3aGVuIDx3ZWJzb2NrX2hhbmRsZXJzPgotICAgY29udGFpbnMgbWFueSBub24tV2ViU29ja2V0
IGhhbmRsZXIgZmlsZXMuCi0KLSAgIElmIHlvdSB3YW50IHRvIGFsbG93IGhhbmRsZXJzIHdob3Nl
IGNhbm9uaWNhbCBwYXRoIGlzIG5vdCB1bmRlciB0aGUgcm9vdAotICAgZGlyZWN0b3J5IChpLmUu
IHN5bWJvbGljIGxpbmsgaXMgaW4gcm9vdCBkaXJlY3RvcnkgYnV0IGl0cyB0YXJnZXQgaXMgbm90
KSwKLSAgIGNvbmZpZ3VyZSBhcyBmb2xsb3dzOgotCi0gICAgICAgUHl0aG9uT3B0aW9uIG1vZF9w
eXdlYnNvY2tldC5hbGxvd19oYW5kbGVyc19vdXRzaWRlX3Jvb3RfZGlyIE9uCi0KLSAgIEV4YW1w
bGUgc25pcHBldCBvZiBodHRwZC5jb25mOgotICAgKG1vZF9weXdlYnNvY2tldCBpcyBpbiAvd2Vi
c29ja19saWIsIFdlYlNvY2tldCBoYW5kbGVycyBhcmUgaW4KLSAgIC93ZWJzb2NrX2hhbmRsZXJz
LCBwb3J0IGlzIDgwIGZvciB3cywgNDQzIGZvciB3c3MuKQotCi0gICAgICAgPElmTW9kdWxlIHB5
dGhvbl9tb2R1bGU+Ci0gICAgICAgICBQeXRob25QYXRoICJzeXMucGF0aCtbJy93ZWJzb2NrX2xp
YiddIgotICAgICAgICAgUHl0aG9uT3B0aW9uIG1vZF9weXdlYnNvY2tldC5oYW5kbGVyX3Jvb3Qg
L3dlYnNvY2tfaGFuZGxlcnMKLSAgICAgICAgIFB5dGhvbkhlYWRlclBhcnNlckhhbmRsZXIgbW9k
X3B5d2Vic29ja2V0LmhlYWRlcnBhcnNlcmhhbmRsZXIKLSAgICAgICA8L0lmTW9kdWxlPgotCi0y
LiBUdW5lIEFwYWNoZSBwYXJhbWV0ZXJzIGZvciBzZXJ2aW5nIFdlYlNvY2tldC4gV2UnZCBsaWtl
IHRvIG5vdGUgdGhhdCBhdAotICAgbGVhc3QgVGltZU91dCBkaXJlY3RpdmUgZnJvbSBjb3JlIGZl
YXR1cmVzIGFuZCBSZXF1ZXN0UmVhZFRpbWVvdXQKLSAgIGRpcmVjdGl2ZSBmcm9tIG1vZF9yZXF0
aW1lb3V0IHNob3VsZCBiZSBtb2RpZmllZCBub3QgdG8ga2lsbCBjb25uZWN0aW9ucwotICAgaW4g
b25seSBhIGZldyBzZWNvbmRzIG9mIGlkbGUgdGltZS4KLQotMy4gVmVyaWZ5IGluc3RhbGxhdGlv
bi4gWW91IGNhbiB1c2UgZXhhbXBsZS9jb25zb2xlLmh0bWwgdG8gcG9rZSB0aGUgc2VydmVyLgot
Ci0KLVdyaXRpbmcgV2ViU29ja2V0IGhhbmRsZXJzCi09PT09PT09PT09PT09PT09PT09PT09PT09
PQotCi1XaGVuIGEgV2ViU29ja2V0IHJlcXVlc3QgY29tZXMgaW4sIHRoZSByZXNvdXJjZSBuYW1l
Ci1zcGVjaWZpZWQgaW4gdGhlIGhhbmRzaGFrZSBpcyBjb25zaWRlcmVkIGFzIGlmIGl0IGlzIGEg
ZmlsZSBwYXRoIHVuZGVyCi08d2Vic29ja19oYW5kbGVycz4gYW5kIHRoZSBoYW5kbGVyIGRlZmlu
ZWQgaW4KLTx3ZWJzb2NrX2hhbmRsZXJzPi88cmVzb3VyY2VfbmFtZT5fd3NoLnB5IGlzIGludm9r
ZWQuCi0KLUZvciBleGFtcGxlLCBpZiB0aGUgcmVzb3VyY2UgbmFtZSBpcyAvZXhhbXBsZS9jaGF0
LCB0aGUgaGFuZGxlciBkZWZpbmVkIGluCi08d2Vic29ja19oYW5kbGVycz4vZXhhbXBsZS9jaGF0
X3dzaC5weSBpcyBpbnZva2VkLgotCi1BIFdlYlNvY2tldCBoYW5kbGVyIGlzIGNvbXBvc2VkIG9m
IHRoZSBmb2xsb3dpbmcgdGhyZWUgZnVuY3Rpb25zOgotCi0gICAgd2ViX3NvY2tldF9kb19leHRy
YV9oYW5kc2hha2UocmVxdWVzdCkKLSAgICB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVz
dCkKLSAgICB3ZWJfc29ja2V0X3Bhc3NpdmVfY2xvc2luZ19oYW5kc2hha2UocmVxdWVzdCkKLQot
d2hlcmU6Ci0gICAgcmVxdWVzdDogbW9kX3B5dGhvbiByZXF1ZXN0LgotCi13ZWJfc29ja2V0X2Rv
X2V4dHJhX2hhbmRzaGFrZSBpcyBjYWxsZWQgZHVyaW5nIHRoZSBoYW5kc2hha2UgYWZ0ZXIgdGhl
Ci1oZWFkZXJzIGFyZSBzdWNjZXNzZnVsbHkgcGFyc2VkIGFuZCBXZWJTb2NrZXQgcHJvcGVydGll
cyAod3NfbG9jYXRpb24sCi13c19vcmlnaW4sIGFuZCB3c19yZXNvdXJjZSkgYXJlIGFkZGVkIHRv
IHJlcXVlc3QuIEEgaGFuZGxlcgotY2FuIHJlamVjdCB0aGUgcmVxdWVzdCBieSByYWlzaW5nIGFu
IGV4Y2VwdGlvbi4KLQotQSByZXF1ZXN0IG9iamVjdCBoYXMgdGhlIGZvbGxvd2luZyBwcm9wZXJ0
aWVzIHRoYXQgeW91IGNhbiB1c2UgZHVyaW5nIHRoZQotZXh0cmEgaGFuZHNoYWtlICh3ZWJfc29j
a2V0X2RvX2V4dHJhX2hhbmRzaGFrZSk6Ci0tIHdzX3Jlc291cmNlCi0tIHdzX29yaWdpbgotLSB3
c192ZXJzaW9uCi0tIHdzX2xvY2F0aW9uIChIeUJpIDAwIG9ubHkpCi0tIHdzX2V4dGVuc2lvbnMg
KEh5QmkgMDYgYW5kIGxhdGVyKQotLSB3c19kZWZsYXRlIChIeUJpIDA2IGFuZCBsYXRlcikKLS0g
d3NfcHJvdG9jb2wKLS0gd3NfcmVxdWVzdGVkX3Byb3RvY29scyAoSHlCaSAwNiBhbmQgbGF0ZXIp
Ci0KLVRoZSBsYXN0IHR3byBhcmUgYSBiaXQgdHJpY2t5LiBTZWUgdGhlIG5leHQgc3Vic2VjdGlv
bi4KLQotCi1TdWJwcm90b2NvbCBOZWdvdGlhdGlvbgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LQotRm9yIEh5QmkgMDYgYW5kIGxhdGVyLCB3c19wcm90b2NvbCBpcyBhbHdheXMgc2V0IHRvIE5v
bmUgd2hlbgotd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UgaXMgY2FsbGVkLiBJZiB3c19y
ZXF1ZXN0ZWRfcHJvdG9jb2xzIGlzIG5vdAotTm9uZSwgeW91IG11c3QgY2hvb3NlIG9uZSBzdWJw
cm90b2NvbCBmcm9tIHRoaXMgbGlzdCBhbmQgc2V0IGl0IHRvCi13c19wcm90b2NvbC4KLQotRm9y
IEh5QmkgMDAsIHdoZW4gd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UgaXMgY2FsbGVkLAot
d3NfcHJvdG9jb2wgaXMgc2V0IHRvIHRoZSB2YWx1ZSBnaXZlbiBieSB0aGUgY2xpZW50IGluCi1T
ZWMtV2ViU29ja2V0LVByb3RvY29sIGhlYWRlciBvciBOb25lIGlmCi1zdWNoIGhlYWRlciB3YXMg
bm90IGZvdW5kIGluIHRoZSBvcGVuaW5nIGhhbmRzaGFrZSByZXF1ZXN0LiBGaW5pc2ggZXh0cmEK
LWhhbmRzaGFrZSB3aXRoIHdzX3Byb3RvY29sIHVudG91Y2hlZCB0byBhY2NlcHQgdGhlIHJlcXVl
c3Qgc3VicHJvdG9jb2wuCi1UaGVuLCBTZWMtV2ViU29ja2V0LVByb3RvY29sIGhlYWRlciB3aWxs
IGJlIHNlbnQgdG8KLXRoZSBjbGllbnQgaW4gcmVzcG9uc2Ugd2l0aCB0aGUgc2FtZSB2YWx1ZSBh
cyByZXF1ZXN0ZWQuIFJhaXNlIGFuIGV4Y2VwdGlvbgotaW4gd2ViX3NvY2tldF9kb19leHRyYV9o
YW5kc2hha2UgdG8gcmVqZWN0IHRoZSByZXF1ZXN0ZWQgc3VicHJvdG9jb2wuCi0KLQotRGF0YSBU
cmFuc2ZlcgotLS0tLS0tLS0tLS0tLQotCi13ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEgaXMgY2Fs
bGVkIGFmdGVyIHRoZSBoYW5kc2hha2UgY29tcGxldGVkCi1zdWNjZXNzZnVsbHkuIEEgaGFuZGxl
ciBjYW4gcmVjZWl2ZS9zZW5kIG1lc3NhZ2VzIGZyb20vdG8gdGhlIGNsaWVudAotdXNpbmcgcmVx
dWVzdC4gbW9kX3B5d2Vic29ja2V0Lm1zZ3V0aWwgbW9kdWxlIHByb3ZpZGVzIHV0aWxpdGllcwot
Zm9yIGRhdGEgdHJhbnNmZXIuCi0KLVlvdSBjYW4gcmVjZWl2ZSBhIG1lc3NhZ2UgYnkgdGhlIGZv
bGxvd2luZyBzdGF0ZW1lbnQuCi0KLSAgICBtZXNzYWdlID0gcmVxdWVzdC53c19zdHJlYW0ucmVj
ZWl2ZV9tZXNzYWdlKCkKLQotVGhpcyBjYWxsIGJsb2NrcyB1bnRpbCBhbnkgY29tcGxldGUgdGV4
dCBmcmFtZSBhcnJpdmVzLCBhbmQgdGhlIHBheWxvYWQgZGF0YQotb2YgdGhlIGluY29taW5nIGZy
YW1lIHdpbGwgYmUgc3RvcmVkIGludG8gbWVzc2FnZS4gV2hlbiB5b3UncmUgdXNpbmcgSUVURgot
SHlCaSAwMCBvciBsYXRlciBwcm90b2NvbCwgcmVjZWl2ZV9tZXNzYWdlKCkgd2lsbCByZXR1cm4g
Tm9uZSBvbiByZWNlaXZpbmcKLWNsaWVudC1pbml0aWF0ZWQgY2xvc2luZyBoYW5kc2hha2UuIFdo
ZW4gYW55IGVycm9yIG9jY3VycywgcmVjZWl2ZV9tZXNzYWdlKCkKLXdpbGwgcmFpc2Ugc29tZSBl
eGNlcHRpb24uCi0KLVlvdSBjYW4gc2VuZCBhIG1lc3NhZ2UgYnkgdGhlIGZvbGxvd2luZyBzdGF0
ZW1lbnQuCi0KLSAgICByZXF1ZXN0LndzX3N0cmVhbS5zZW5kX21lc3NhZ2UobWVzc2FnZSkKLQot
Ci1DbG9zaW5nIENvbm5lY3Rpb24KLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1FeGVjdXRpbmcgdGhl
IGZvbGxvd2luZyBzdGF0ZW1lbnQgb3IganVzdCByZXR1cm4taW5nIGZyb20KLXdlYl9zb2NrZXRf
dHJhbnNmZXJfZGF0YSBjYXVzZSBjb25uZWN0aW9uIGNsb3NlLgotCi0gICAgcmVxdWVzdC53c19z
dHJlYW0uY2xvc2VfY29ubmVjdGlvbigpCi0KLWNsb3NlX2Nvbm5lY3Rpb24gd2lsbCB3YWl0Ci1m
b3IgY2xvc2luZyBoYW5kc2hha2UgYWNrbm93bGVkZ2VtZW50IGNvbWluZyBmcm9tIHRoZSBjbGll
bnQuIFdoZW4gaXQKLWNvdWxkbid0IHJlY2VpdmUgYSB2YWxpZCBhY2tub3dsZWRnZW1lbnQsIHJh
aXNlcyBhbiBleGNlcHRpb24uCi0KLXdlYl9zb2NrZXRfcGFzc2l2ZV9jbG9zaW5nX2hhbmRzaGFr
ZSBpcyBjYWxsZWQgYWZ0ZXIgdGhlIHNlcnZlciByZWNlaXZlcwotaW5jb21pbmcgY2xvc2luZyBm
cmFtZSBmcm9tIHRoZSBjbGllbnQgcGVlciBpbW1lZGlhdGVseS4gWW91IGNhbiBzcGVjaWZ5Ci1j
b2RlIGFuZCByZWFzb24gYnkgcmV0dXJuIHZhbHVlcy4gVGhleSBhcmUgc2VudCBhcyBhIG91dGdv
aW5nIGNsb3NpbmcgZnJhbWUKLWZyb20gdGhlIHNlcnZlci4gQSByZXF1ZXN0IG9iamVjdCBoYXMg
dGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzIHRoYXQgeW91IGNhbgotdXNlIGluIHdlYl9zb2NrZXRf
cGFzc2l2ZV9jbG9zaW5nX2hhbmRzaGFrZS4KLS0gd3NfY2xvc2VfY29kZQotLSB3c19jbG9zZV9y
ZWFzb24KLQotCi1UaHJlYWRpbmcKLS0tLS0tLS0tLQotCi1BIFdlYlNvY2tldCBoYW5kbGVyIG11
c3QgYmUgdGhyZWFkLXNhZmUgaWYgdGhlIHNlcnZlciAoQXBhY2hlIG9yCi1zdGFuZGFsb25lLnB5
KSBpcyBjb25maWd1cmVkIHRvIHVzZSB0aHJlYWRzLgotCi0KLUNvbmZpZ3VyaW5nIFdlYlNvY2tl
dCBFeHRlbnNpb24gUHJvY2Vzc29ycwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0KLVNlZSBleHRlbnNpb25zLnB5IGZvciBzdXBwb3J0ZWQgV2ViU29ja2V0IGV4
dGVuc2lvbnMuIE5vdGUgdGhhdCB0aGV5IGFyZQotdW5zdGFibGUgYW5kIHRoZWlyIEFQSXMgYXJl
IHN1YmplY3QgdG8gY2hhbmdlIHN1YnN0YW50aWFsbHkuCi0KLUEgcmVxdWVzdCBvYmplY3QgaGFz
IHRoZXNlIGV4dGVuc2lvbiBwcm9jZXNzaW5nIHJlbGF0ZWQgYXR0cmlidXRlcy4KLQotLSB3c19y
ZXF1ZXN0ZWRfZXh0ZW5zaW9uczoKLQotICBBIGxpc3Qgb2YgY29tbW9uLkV4dGVuc2lvblBhcmFt
ZXRlciBpbnN0YW5jZXMgcmVwcmVzZW50aW5nIGV4dGVuc2lvbgotICBwYXJhbWV0ZXJzIHJlY2Vp
dmVkIGZyb20gdGhlIGNsaWVudCBpbiB0aGUgY2xpZW50J3Mgb3BlbmluZyBoYW5kc2hha2UuCi0g
IFlvdSBzaG91bGRuJ3QgbW9kaWZ5IGl0IG1hbnVhbGx5LgotCi0tIHdzX2V4dGVuc2lvbnM6Ci0K
LSAgQSBsaXN0IG9mIGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIgaW5zdGFuY2VzIHJlcHJlc2Vu
dGluZyBleHRlbnNpb24KLSAgcGFyYW1ldGVycyB0byBzZW5kIGJhY2sgdG8gdGhlIGNsaWVudCBp
biB0aGUgc2VydmVyJ3Mgb3BlbmluZyBoYW5kc2hha2UuCi0gIFlvdSBzaG91bGRuJ3QgdG91Y2gg
aXQgZGlyZWN0bHkuIEluc3RlYWQsIGNhbGwgbWV0aG9kcyBvbiBleHRlbnNpb24KLSAgcHJvY2Vz
c29ycy4KLQotLSB3c19leHRlbnNpb25fcHJvY2Vzc29yczoKLQotICBBIGxpc3Qgb2YgbG9hZGVk
IGV4dGVuc2lvbiBwcm9jZXNzb3JzLiBGaW5kIHRoZSBwcm9jZXNzb3IgZm9yIHRoZQotICBleHRl
bnNpb24geW91IHdhbnQgdG8gY29uZmlndXJlIGZyb20gaXQsIGFuZCBjYWxsIGl0cyBtZXRob2Rz
LgotIiIiCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0IHR3PTcyCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Ny
Yy9tb2RfcHl3ZWJzb2NrZXQvX3N0cmVhbV9iYXNlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29j
a2V0L19zdHJlYW1fYmFzZS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODIzNTY2
NmJiYjFkNTFjMTBkYjNmOTFiZGE0YWJjZDdhZmViMjY4Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvX3N0cmVh
bV9iYXNlLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTgxICswLDAgQEAKLSMgQ29weXJpZ2h0IDIw
MTEsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMg
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0j
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotCi0KLSIiIkJhc2Ugc3RyZWFtIGNsYXNzLgotIiIiCi0KLQotIyBOb3RlOiByZXF1ZXN0LmNv
bm5lY3Rpb24ud3JpdGUvcmVhZCBhcmUgdXNlZCBpbiB0aGlzIG1vZHVsZSwgZXZlbiB0aG91Z2gK
LSMgbW9kX3B5dGhvbiBkb2N1bWVudCBzYXlzIHRoYXQgdGhleSBzaG91bGQgYmUgdXNlZCBvbmx5
IGluIGNvbm5lY3Rpb24KLSMgaGFuZGxlcnMuIFVuZm9ydHVuYXRlbHksIHdlIGhhdmUgbm8gb3Ro
ZXIgb3B0aW9ucy4gRm9yIGV4YW1wbGUsCi0jIHJlcXVlc3Qud3JpdGUvcmVhZCBhcmUgbm90IHN1
aXRhYmxlIGJlY2F1c2UgdGhleSBkb24ndCBhbGxvdyBkaXJlY3QgcmF3IGJ5dGVzCi0jIHdyaXRp
bmcvcmVhZGluZy4KLQotCi1pbXBvcnQgc29ja2V0Ci0KLWZyb20gbW9kX3B5d2Vic29ja2V0IGlt
cG9ydCB1dGlsCi0KLQotIyBFeGNlcHRpb25zCi0KLQotY2xhc3MgQ29ubmVjdGlvblRlcm1pbmF0
ZWRFeGNlcHRpb24oRXhjZXB0aW9uKToKLSAgICAiIiJUaGlzIGV4Y2VwdGlvbiB3aWxsIGJlIHJh
aXNlZCB3aGVuIGEgY29ubmVjdGlvbiBpcyB0ZXJtaW5hdGVkCi0gICAgdW5leHBlY3RlZGx5Lgot
ICAgICIiIgotCi0gICAgcGFzcwotCi0KLWNsYXNzIEludmFsaWRGcmFtZUV4Y2VwdGlvbihDb25u
ZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbik6Ci0gICAgIiIiVGhpcyBleGNlcHRpb24gd2lsbCBi
ZSByYWlzZWQgd2hlbiB3ZSByZWNlaXZlZCBhbiBpbnZhbGlkIGZyYW1lIHdlCi0gICAgY2Fubm90
IHBhcnNlLgotICAgICIiIgotCi0gICAgcGFzcwotCi0KLWNsYXNzIEJhZE9wZXJhdGlvbkV4Y2Vw
dGlvbihFeGNlcHRpb24pOgotICAgICIiIlRoaXMgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkIHdo
ZW4gc2VuZF9tZXNzYWdlKCkgaXMgY2FsbGVkIG9uCi0gICAgc2VydmVyLXRlcm1pbmF0ZWQgY29u
bmVjdGlvbiBvciByZWNlaXZlX21lc3NhZ2UoKSBpcyBjYWxsZWQgb24KLSAgICBjbGllbnQtdGVy
bWluYXRlZCBjb25uZWN0aW9uLgotICAgICIiIgotCi0gICAgcGFzcwotCi0KLWNsYXNzIFVuc3Vw
cG9ydGVkRnJhbWVFeGNlcHRpb24oRXhjZXB0aW9uKToKLSAgICAiIiJUaGlzIGV4Y2VwdGlvbiB3
aWxsIGJlIHJhaXNlZCB3aGVuIHdlIHJlY2VpdmUgYSBmcmFtZSB3aXRoIGZsYWcsIG9wY29kZQot
ICAgIHdlIGNhbm5vdCBoYW5kbGUuIEhhbmRsZXJzIGNhbiBqdXN0IGNhdGNoIGFuZCBpZ25vcmUg
dGhpcyBleGNlcHRpb24gYW5kCi0gICAgY2FsbCByZWNlaXZlX21lc3NhZ2UoKSBhZ2FpbiB0byBj
b250aW51ZSBwcm9jZXNzaW5nIHRoZSBuZXh0IGZyYW1lLgotICAgICIiIgotCi0gICAgcGFzcwot
Ci0KLWNsYXNzIEludmFsaWRVVEY4RXhjZXB0aW9uKEV4Y2VwdGlvbik6Ci0gICAgIiIiVGhpcyBl
eGNlcHRpb24gd2lsbCBiZSByYWlzZWQgd2hlbiB3ZSByZWNlaXZlIGEgdGV4dCBmcmFtZSB3aGlj
aAotICAgIGNvbnRhaW5zIGludmFsaWQgVVRGLTggc3RyaW5ncy4KLSAgICAiIiIKLQotICAgIHBh
c3MKLQotCi1jbGFzcyBTdHJlYW1CYXNlKG9iamVjdCk6Ci0gICAgIiIiQmFzZSBzdHJlYW0gY2xh
c3MuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCk6Ci0gICAgICAgICIiIkNv
bnN0cnVjdCBhbiBpbnN0YW5jZS4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgcmVxdWVz
dDogbW9kX3B5dGhvbiByZXF1ZXN0LgotICAgICAgICAiIiIKLQotICAgICAgICBzZWxmLl9sb2dn
ZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKLQotICAgICAgICBzZWxmLl9yZXF1ZXN0
ID0gcmVxdWVzdAotCi0gICAgZGVmIF9yZWFkKHNlbGYsIGxlbmd0aCk6Ci0gICAgICAgICIiIlJl
YWRzIGxlbmd0aCBieXRlcyBmcm9tIGNvbm5lY3Rpb24uIEluIGNhc2Ugd2UgY2F0Y2ggYW55IGV4
Y2VwdGlvbiwKLSAgICAgICAgcHJlcGVuZHMgcmVtb3RlIGFkZHJlc3MgdG8gdGhlIGV4Y2VwdGlv
biBtZXNzYWdlIGFuZCByYWlzZSBhZ2Fpbi4KLQotICAgICAgICBSYWlzZXM6Ci0gICAgICAgICAg
ICBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbjogd2hlbiByZWFkIHJldHVybnMgZW1wdHkg
c3RyaW5nLgotICAgICAgICAiIiIKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZWFkX2J5
dGVzID0gc2VsZi5fcmVxdWVzdC5jb25uZWN0aW9uLnJlYWQobGVuZ3RoKQotICAgICAgICAgICAg
aWYgbm90IHJlYWRfYnl0ZXM6Ci0gICAgICAgICAgICAgICAgcmFpc2UgQ29ubmVjdGlvblRlcm1p
bmF0ZWRFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICAgICdSZWNlaXZpbmcgJWQgYnl0ZSBm
YWlsZWQuIFBlZXIgKCVyKSBjbG9zZWQgY29ubmVjdGlvbicgJQotICAgICAgICAgICAgICAgICAg
ICAobGVuZ3RoLCAoc2VsZi5fcmVxdWVzdC5jb25uZWN0aW9uLnJlbW90ZV9hZGRyLCkpKQotICAg
ICAgICAgICAgcmV0dXJuIHJlYWRfYnl0ZXMKLSAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciwg
ZToKLSAgICAgICAgICAgICMgQ2F0Y2ggYSBzb2NrZXQuZXJyb3IuIEJlY2F1c2UgaXQncyBub3Qg
YSBjaGlsZCBjbGFzcyBvZiB0aGUKLSAgICAgICAgICAgICMgSU9FcnJvciBwcmlvciB0byBQeXRo
b24gMi42LCB3ZSBjYW5ub3Qgb21pdCB0aGlzIGV4Y2VwdCBjbGF1c2UuCi0gICAgICAgICAgICAj
IFVzZSAlcyByYXRoZXIgdGhhbiAlciBmb3IgdGhlIGV4Y2VwdGlvbiB0byB1c2UgaHVtYW4gZnJp
ZW5kbHkKLSAgICAgICAgICAgICMgZm9ybWF0LgotICAgICAgICAgICAgcmFpc2UgQ29ubmVjdGlv
blRlcm1pbmF0ZWRFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ1JlY2VpdmluZyAlZCBieXRl
IGZhaWxlZC4gc29ja2V0LmVycm9yICglcykgb2NjdXJyZWQnICUKLSAgICAgICAgICAgICAgICAo
bGVuZ3RoLCBlKSkKLSAgICAgICAgZXhjZXB0IElPRXJyb3IsIGU6Ci0gICAgICAgICAgICAjIEFs
c28gY2F0Y2ggYW4gSU9FcnJvciBiZWNhdXNlIG1vZF9weXRob24gdGhyb3dzIGl0LgotICAgICAg
ICAgICAgcmFpc2UgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24oCi0gICAgICAgICAgICAg
ICAgJ1JlY2VpdmluZyAlZCBieXRlIGZhaWxlZC4gSU9FcnJvciAoJXMpIG9jY3VycmVkJyAlCi0g
ICAgICAgICAgICAgICAgKGxlbmd0aCwgZSkpCi0KLSAgICBkZWYgX3dyaXRlKHNlbGYsIGJ5dGVz
X3RvX3dyaXRlKToKLSAgICAgICAgIiIiV3JpdGVzIGdpdmVuIGJ5dGVzIHRvIGNvbm5lY3Rpb24u
IEluIGNhc2Ugd2UgY2F0Y2ggYW55IGV4Y2VwdGlvbiwKLSAgICAgICAgcHJlcGVuZHMgcmVtb3Rl
IGFkZHJlc3MgdG8gdGhlIGV4Y2VwdGlvbiBtZXNzYWdlIGFuZCByYWlzZSBhZ2Fpbi4KLSAgICAg
ICAgIiIiCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC5jb25uZWN0
aW9uLndyaXRlKGJ5dGVzX3RvX3dyaXRlKQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgot
ICAgICAgICAgICAgdXRpbC5wcmVwZW5kX21lc3NhZ2VfdG9fZXhjZXB0aW9uKAotICAgICAgICAg
ICAgICAgICAgICAnRmFpbGVkIHRvIHNlbmQgbWVzc2FnZSB0byAlcjogJyAlCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKHNlbGYuX3JlcXVlc3QuY29ubmVjdGlvbi5yZW1vdGVfYWRkciwp
LAotICAgICAgICAgICAgICAgICAgICBlKQotICAgICAgICAgICAgcmFpc2UKLQotICAgIGRlZiBy
ZWNlaXZlX2J5dGVzKHNlbGYsIGxlbmd0aCk6Ci0gICAgICAgICIiIlJlY2VpdmVzIG11bHRpcGxl
IGJ5dGVzLiBSZXRyaWVzIHJlYWQgd2hlbiB3ZSBjb3VsZG4ndCByZWNlaXZlIHRoZQotICAgICAg
ICBzcGVjaWZpZWQgYW1vdW50LgotCi0gICAgICAgIFJhaXNlczoKLSAgICAgICAgICAgIENvbm5l
Y3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uOiB3aGVuIHJlYWQgcmV0dXJucyBlbXB0eSBzdHJpbmcu
Ci0gICAgICAgICIiIgotCi0gICAgICAgIHJlYWRfYnl0ZXMgPSBbXQotICAgICAgICB3aGlsZSBs
ZW5ndGggPiAwOgotICAgICAgICAgICAgbmV3X3JlYWRfYnl0ZXMgPSBzZWxmLl9yZWFkKGxlbmd0
aCkKLSAgICAgICAgICAgIHJlYWRfYnl0ZXMuYXBwZW5kKG5ld19yZWFkX2J5dGVzKQotICAgICAg
ICAgICAgbGVuZ3RoIC09IGxlbihuZXdfcmVhZF9ieXRlcykKLSAgICAgICAgcmV0dXJuICcnLmpv
aW4ocmVhZF9ieXRlcykKLQotICAgIGRlZiBfcmVhZF91bnRpbChzZWxmLCBkZWxpbV9jaGFyKToK
LSAgICAgICAgIiIiUmVhZHMgYnl0ZXMgdW50aWwgd2UgZW5jb3VudGVyIGRlbGltX2NoYXIuIFRo
ZSByZXN1bHQgd2lsbCBub3QKLSAgICAgICAgY29udGFpbiBkZWxpbV9jaGFyLgotCi0gICAgICAg
IFJhaXNlczoKLSAgICAgICAgICAgIENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uOiB3aGVu
IHJlYWQgcmV0dXJucyBlbXB0eSBzdHJpbmcuCi0gICAgICAgICIiIgotCi0gICAgICAgIHJlYWRf
Ynl0ZXMgPSBbXQotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgY2ggPSBzZWxmLl9y
ZWFkKDEpCi0gICAgICAgICAgICBpZiBjaCA9PSBkZWxpbV9jaGFyOgotICAgICAgICAgICAgICAg
IGJyZWFrCi0gICAgICAgICAgICByZWFkX2J5dGVzLmFwcGVuZChjaCkKLSAgICAgICAgcmV0dXJu
ICcnLmpvaW4ocmVhZF9ieXRlcykKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC9fc3RyZWFtX2hpeGllNzUucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9t
b2RfcHl3ZWJzb2NrZXQvX3N0cmVhbV9oaXhpZTc1LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA5NGNmNWIzMWJhMGZjM2MzYTM0NzdkZTgyMjk3YTBjMjZkYTFjNDhjLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdl
YnNvY2tldC9fc3RyZWFtX2hpeGllNzUucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyMjkgKzAsMCBA
QAotIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlv
bi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0j
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
IyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiVGhpcyBmaWxlIHByb3ZpZGVzIGEgY2xhc3MgZm9y
IHBhcnNpbmcvYnVpbGRpbmcgZnJhbWVzIG9mIHRoZSBXZWJTb2NrZXQKLXByb3RvY29sIHZlcnNp
b24gSHlCaSAwMCBhbmQgSGl4aWUgNzUuCi0KLVNwZWNpZmljYXRpb246Ci0tIEh5QmkgMDAgaHR0
cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtaWV0Zi1oeWJpLXRoZXdlYnNvY2tldHByb3Rv
Y29sLTAwCi0tIEhpeGllIDc1IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWhpeGll
LXRoZXdlYnNvY2tldHByb3RvY29sLTc1Ci0iIiIKLQotCi1mcm9tIG1vZF9weXdlYnNvY2tldCBp
bXBvcnQgY29tbW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2Jhc2UgaW1wb3J0IEJh
ZE9wZXJhdGlvbkV4Y2VwdGlvbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9iYXNlIGlt
cG9ydCBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQu
X3N0cmVhbV9iYXNlIGltcG9ydCBJbnZhbGlkRnJhbWVFeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vi
c29ja2V0Ll9zdHJlYW1fYmFzZSBpbXBvcnQgU3RyZWFtQmFzZQotZnJvbSBtb2RfcHl3ZWJzb2Nr
ZXQuX3N0cmVhbV9iYXNlIGltcG9ydCBVbnN1cHBvcnRlZEZyYW1lRXhjZXB0aW9uCi1mcm9tIG1v
ZF9weXdlYnNvY2tldCBpbXBvcnQgdXRpbAotCi0KLWNsYXNzIFN0cmVhbUhpeGllNzUoU3RyZWFt
QmFzZSk6Ci0gICAgIiIiQSBjbGFzcyBmb3IgcGFyc2luZy9idWlsZGluZyBmcmFtZXMgb2YgdGhl
IFdlYlNvY2tldCBwcm90b2NvbCB2ZXJzaW9uCi0gICAgSHlCaSAwMCBhbmQgSGl4aWUgNzUuCi0g
ICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCwgZW5hYmxlX2Nsb3Npbmdf
aGFuZHNoYWtlPUZhbHNlKToKLSAgICAgICAgIiIiQ29uc3RydWN0IGFuIGluc3RhbmNlLgotCi0g
ICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICByZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3QuCi0g
ICAgICAgICAgICBlbmFibGVfY2xvc2luZ19oYW5kc2hha2U6IHRvIGxldCBTdHJlYW1IaXhpZTc1
IHBlcmZvcm0gY2xvc2luZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBo
YW5kc2hha2UgYXMgc3BlY2lmaWVkIGluIEh5QmkgMDAsIHNldAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0aGlzIG9wdGlvbiB0byBUcnVlLgotICAgICAgICAiIiIKLQot
ICAgICAgICBTdHJlYW1CYXNlLl9faW5pdF9fKHNlbGYsIHJlcXVlc3QpCi0KLSAgICAgICAgc2Vs
Zi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgc2VsZi5f
ZW5hYmxlX2Nsb3NpbmdfaGFuZHNoYWtlID0gZW5hYmxlX2Nsb3NpbmdfaGFuZHNoYWtlCi0KLSAg
ICAgICAgc2VsZi5fcmVxdWVzdC5jbGllbnRfdGVybWluYXRlZCA9IEZhbHNlCi0gICAgICAgIHNl
bGYuX3JlcXVlc3Quc2VydmVyX3Rlcm1pbmF0ZWQgPSBGYWxzZQotCi0gICAgZGVmIHNlbmRfbWVz
c2FnZShzZWxmLCBtZXNzYWdlLCBlbmQ9VHJ1ZSwgYmluYXJ5PUZhbHNlKToKLSAgICAgICAgIiIi
U2VuZCBtZXNzYWdlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBtZXNzYWdlOiB1bmlj
b2RlIHN0cmluZyB0byBzZW5kLgotICAgICAgICAgICAgYmluYXJ5OiBub3QgdXNlZCBpbiBoaXhp
ZTc1LgotCi0gICAgICAgIFJhaXNlczoKLSAgICAgICAgICAgIEJhZE9wZXJhdGlvbkV4Y2VwdGlv
bjogd2hlbiBjYWxsZWQgb24gYSBzZXJ2ZXItdGVybWluYXRlZAotICAgICAgICAgICAgICAgIGNv
bm5lY3Rpb24uCi0gICAgICAgICIiIgotCi0gICAgICAgIGlmIG5vdCBlbmQ6Ci0gICAgICAgICAg
ICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ1N0cmVhbUhp
eGllNzUgZG9lc25cJ3Qgc3VwcG9ydCBzZW5kX21lc3NhZ2Ugd2l0aCBlbmQ9RmFsc2UnKQotCi0g
ICAgICAgIGlmIGJpbmFyeToKLSAgICAgICAgICAgIHJhaXNlIEJhZE9wZXJhdGlvbkV4Y2VwdGlv
bigKLSAgICAgICAgICAgICAgICAnU3RyZWFtSGl4aWU3NSBkb2VzblwndCBzdXBwb3J0IHNlbmRf
bWVzc2FnZSB3aXRoIGJpbmFyeT1UcnVlJykKLQotICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0LnNl
cnZlcl90ZXJtaW5hdGVkOgotICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0aW9u
KAotICAgICAgICAgICAgICAgICdSZXF1ZXN0ZWQgc2VuZF9tZXNzYWdlIGFmdGVyIHNlbmRpbmcg
b3V0IGEgY2xvc2luZyBoYW5kc2hha2UnKQotCi0gICAgICAgIHNlbGYuX3dyaXRlKCcnLmpvaW4o
WydceDAwJywgbWVzc2FnZS5lbmNvZGUoJ3V0Zi04JyksICdceGZmJ10pKQotCi0gICAgZGVmIF9y
ZWFkX3BheWxvYWRfbGVuZ3RoX2hpeGllNzUoc2VsZik6Ci0gICAgICAgICIiIlJlYWRzIGEgbGVu
Z3RoIGhlYWRlciBpbiBhIEhpeGllNzUgdmVyc2lvbiBmcmFtZSB3aXRoIGxlbmd0aC4KLQotICAg
ICAgICBSYWlzZXM6Ci0gICAgICAgICAgICBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbjog
d2hlbiByZWFkIHJldHVybnMgZW1wdHkgc3RyaW5nLgotICAgICAgICAiIiIKLQotICAgICAgICBs
ZW5ndGggPSAwCi0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICBiX3N0ciA9IHNlbGYu
X3JlYWQoMSkKLSAgICAgICAgICAgIGIgPSBvcmQoYl9zdHIpCi0gICAgICAgICAgICBsZW5ndGgg
PSBsZW5ndGggKiAxMjggKyAoYiAmIDB4N2YpCi0gICAgICAgICAgICBpZiAoYiAmIDB4ODApID09
IDA6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgcmV0dXJuIGxlbmd0aAotCi0gICAg
ZGVmIHJlY2VpdmVfbWVzc2FnZShzZWxmKToKLSAgICAgICAgIiIiUmVjZWl2ZSBhIFdlYlNvY2tl
dCBmcmFtZSBhbmQgcmV0dXJuIGl0cyBwYXlsb2FkIGFuIHVuaWNvZGUgc3RyaW5nLgotCi0gICAg
ICAgIFJldHVybnM6Ci0gICAgICAgICAgICBwYXlsb2FkIHVuaWNvZGUgc3RyaW5nIGluIGEgV2Vi
U29ja2V0IGZyYW1lLgotCi0gICAgICAgIFJhaXNlczoKLSAgICAgICAgICAgIENvbm5lY3Rpb25U
ZXJtaW5hdGVkRXhjZXB0aW9uOiB3aGVuIHJlYWQgcmV0dXJucyBlbXB0eQotICAgICAgICAgICAg
ICAgIHN0cmluZy4KLSAgICAgICAgICAgIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbjogd2hlbiBjYWxs
ZWQgb24gYSBjbGllbnQtdGVybWluYXRlZAotICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uCi0g
ICAgICAgICIiIgotCi0gICAgICAgIGlmIHNlbGYuX3JlcXVlc3QuY2xpZW50X3Rlcm1pbmF0ZWQ6
Ci0gICAgICAgICAgICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oCi0gICAgICAgICAgICAg
ICAgJ1JlcXVlc3RlZCByZWNlaXZlX21lc3NhZ2UgYWZ0ZXIgcmVjZWl2aW5nIGEgY2xvc2luZyAn
Ci0gICAgICAgICAgICAgICAgJ2hhbmRzaGFrZScpCi0KLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAg
ICAgICAgICAgICMgUmVhZCAxIGJ5dGUuCi0gICAgICAgICAgICAjIG1wX2Nvbm4ucmVhZCB3aWxs
IGJsb2NrIGlmIG5vIGJ5dGVzIGFyZSBhdmFpbGFibGUuCi0gICAgICAgICAgICAjIFRpbWVvdXQg
aXMgY29udHJvbGxlZCBieSBUaW1lT3V0IGRpcmVjdGl2ZSBvZiBBcGFjaGUuCi0gICAgICAgICAg
ICBmcmFtZV90eXBlX3N0ciA9IHNlbGYucmVjZWl2ZV9ieXRlcygxKQotICAgICAgICAgICAgZnJh
bWVfdHlwZSA9IG9yZChmcmFtZV90eXBlX3N0cikKLSAgICAgICAgICAgIGlmIChmcmFtZV90eXBl
ICYgMHg4MCkgPT0gMHg4MDoKLSAgICAgICAgICAgICAgICAjIFRoZSBwYXlsb2FkIGxlbmd0aCBp
cyBzcGVjaWZpZWQgaW4gdGhlIGZyYW1lLgotICAgICAgICAgICAgICAgICMgUmVhZCBhbmQgZGlz
Y2FyZC4KLSAgICAgICAgICAgICAgICBsZW5ndGggPSBzZWxmLl9yZWFkX3BheWxvYWRfbGVuZ3Ro
X2hpeGllNzUoKQotICAgICAgICAgICAgICAgIGlmIGxlbmd0aCA+IDA6Ci0gICAgICAgICAgICAg
ICAgICAgIF8gPSBzZWxmLnJlY2VpdmVfYnl0ZXMobGVuZ3RoKQotICAgICAgICAgICAgICAgICMg
NS4zIDMuIDEyLiBpZiAvdHlwZS8gaXMgMHhGRiBhbmQgL2xlbmd0aC8gaXMgMCwgdGhlbiBzZXQg
dGhlCi0gICAgICAgICAgICAgICAgIyAvY2xpZW50IHRlcm1pbmF0ZWQvIGZsYWcgYW5kIGFib3J0
IHRoZXNlIHN0ZXBzLgotICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9lbmFibGVfY2xvc2lu
Z19oYW5kc2hha2U6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAg
ICAgICBpZiBmcmFtZV90eXBlID09IDB4RkYgYW5kIGxlbmd0aCA9PSAwOgotICAgICAgICAgICAg
ICAgICAgICBzZWxmLl9yZXF1ZXN0LmNsaWVudF90ZXJtaW5hdGVkID0gVHJ1ZQotCi0gICAgICAg
ICAgICAgICAgICAgIGlmIHNlbGYuX3JlcXVlc3Quc2VydmVyX3Rlcm1pbmF0ZWQ6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ1JlY2VpdmVkIGFjayBmb3Igc2VydmVyLWluaXRpYXRlZCBjbG9zaW5nICcKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFuZHNoYWtlJykKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRl
YnVnKAotICAgICAgICAgICAgICAgICAgICAgICAgJ1JlY2VpdmVkIGNsaWVudC1pbml0aWF0ZWQg
Y2xvc2luZyBoYW5kc2hha2UnKQotCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfY2xv
c2luZ19oYW5kc2hha2UoKQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWco
Ci0gICAgICAgICAgICAgICAgICAgICAgICAnU2VudCBhY2sgZm9yIGNsaWVudC1pbml0aWF0ZWQg
Y2xvc2luZyBoYW5kc2hha2UnKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAg
ICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIFRoZSBwYXlsb2FkIGlzIGRlbGltaXRl
ZCB3aXRoIFx4ZmYuCi0gICAgICAgICAgICAgICAgYnl0ZXMgPSBzZWxmLl9yZWFkX3VudGlsKCdc
eGZmJykKLSAgICAgICAgICAgICAgICAjIFRoZSBXZWJTb2NrZXQgcHJvdG9jb2wgc2VjdGlvbiA0
LjQgc3BlY2lmaWVzIHRoYXQgaW52YWxpZAotICAgICAgICAgICAgICAgICMgY2hhcmFjdGVycyBt
dXN0IGJlIHJlcGxhY2VkIHdpdGggVStmZmZkIFJFUExBQ0VNRU5UCi0gICAgICAgICAgICAgICAg
IyBDSEFSQUNURVIuCi0gICAgICAgICAgICAgICAgbWVzc2FnZSA9IGJ5dGVzLmRlY29kZSgndXRm
LTgnLCAncmVwbGFjZScpCi0gICAgICAgICAgICAgICAgaWYgZnJhbWVfdHlwZSA9PSAweDAwOgot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVzc2FnZQotICAgICAgICAgICAgICAgICMgRGlz
Y2FyZCBkYXRhIG9mIG90aGVyIHR5cGVzLgotCi0gICAgZGVmIF9zZW5kX2Nsb3NpbmdfaGFuZHNo
YWtlKHNlbGYpOgotICAgICAgICBpZiBub3Qgc2VsZi5fZW5hYmxlX2Nsb3NpbmdfaGFuZHNoYWtl
OgotICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0aW9uKAotICAgICAgICAgICAg
ICAgICdDbG9zaW5nIGhhbmRzaGFrZSBpcyBub3Qgc3VwcG9ydGVkIGluIEhpeGllIDc1IHByb3Rv
Y29sJykKLQotICAgICAgICBzZWxmLl9yZXF1ZXN0LnNlcnZlcl90ZXJtaW5hdGVkID0gVHJ1ZQot
Ci0gICAgICAgICMgNS4zIHRoZSBzZXJ2ZXIgbWF5IGRlY2lkZSB0byB0ZXJtaW5hdGUgdGhlIFdl
YlNvY2tldCBjb25uZWN0aW9uIGJ5Ci0gICAgICAgICMgcnVubmluZyB0aHJvdWdoIHRoZSBmb2xs
b3dpbmcgc3RlcHM6Ci0gICAgICAgICMgMS4gc2VuZCBhIDB4RkYgYnl0ZSBhbmQgYSAweDAwIGJ5
dGUgdG8gdGhlIGNsaWVudCB0byBpbmRpY2F0ZSB0aGUKLSAgICAgICAgIyBzdGFydCBvZiB0aGUg
Y2xvc2luZyBoYW5kc2hha2UuCi0gICAgICAgIHNlbGYuX3dyaXRlKCdceGZmXHgwMCcpCi0KLSAg
ICBkZWYgY2xvc2VfY29ubmVjdGlvbihzZWxmLCB1bnVzZWRfY29kZT0nJywgdW51c2VkX3JlYXNv
bj0nJyk6Ci0gICAgICAgICIiIkNsb3NlcyBhIFdlYlNvY2tldCBjb25uZWN0aW9uLgotCi0gICAg
ICAgIFJhaXNlczoKLSAgICAgICAgICAgIENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uOiB3
aGVuIGNsb3NpbmcgaGFuZHNoYWtlIHdhcwotICAgICAgICAgICAgICAgIG5vdCBzdWNjZXNzZnVs
bC4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC5zZXJ2ZXJfdGVybWlu
YXRlZDoKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICAgICAn
UmVxdWVzdGVkIGNsb3NlX2Nvbm5lY3Rpb24gYnV0IHNlcnZlciBpcyBhbHJlYWR5IHRlcm1pbmF0
ZWQnKQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgaWYgbm90IHNlbGYuX2VuYWJsZV9j
bG9zaW5nX2hhbmRzaGFrZToKLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Quc2VydmVyX3Rlcm1p
bmF0ZWQgPSBUcnVlCi0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0Nvbm5lY3Rpb24g
Y2xvc2VkJykKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIHNlbGYuX3NlbmRfY2xvc2lu
Z19oYW5kc2hha2UoKQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1NlbnQgc2VydmVyLWlu
aXRpYXRlZCBjbG9zaW5nIGhhbmRzaGFrZScpCi0KLSAgICAgICAgIyBUT0RPKHVrYWkpOiAyLiB3
YWl0IHVudGlsIHRoZSAvY2xpZW50IHRlcm1pbmF0ZWQvIGZsYWcgaGFzIGJlZW4gc2V0LAotICAg
ICAgICAjIG9yIHVudGlsIGEgc2VydmVyLWRlZmluZWQgdGltZW91dCBleHBpcmVzLgotICAgICAg
ICAjCi0gICAgICAgICMgRm9yIG5vdywgd2UgZXhwZWN0IHJlY2VpdmluZyBjbG9zaW5nIGhhbmRz
aGFrZSByaWdodCBhZnRlciBzZW5kaW5nCi0gICAgICAgICMgb3V0IGNsb3NpbmcgaGFuZHNoYWtl
LCBhbmQgaWYgd2UgY291bGRuJ3QgcmVjZWl2ZSBub24taGFuZHNoYWtlCi0gICAgICAgICMgZnJh
bWUsIHdlIHRha2UgaXQgYXMgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24uCi0gICAgICAg
IG1lc3NhZ2UgPSBzZWxmLnJlY2VpdmVfbWVzc2FnZSgpCi0gICAgICAgIGlmIG1lc3NhZ2UgaXMg
bm90IE5vbmU6Ci0gICAgICAgICAgICByYWlzZSBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlv
bigKLSAgICAgICAgICAgICAgICAnRGlkblwndCByZWNlaXZlIHZhbGlkIGFjayBmb3IgY2xvc2lu
ZyBoYW5kc2hha2UnKQotICAgICAgICAjIFRPRE86IDMuIGNsb3NlIHRoZSBXZWJTb2NrZXQgY29u
bmVjdGlvbi4KLSAgICAgICAgIyBub3RlOiBtb2RfcHl0aG9uIENvbm5lY3Rpb24gKG1wX2Nvbm4p
IGRvZXNuJ3QgaGF2ZSBjbG9zZSBtZXRob2QuCi0KLSAgICBkZWYgc2VuZF9waW5nKHNlbGYsIGJv
ZHkpOgotICAgICAgICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oCi0gICAgICAgICAgICAn
U3RyZWFtSGl4aWU3NSBkb2VzblwndCBzdXBwb3J0IHNlbmRfcGluZycpCi0KLQotIyB2aTpzdHM9
NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvX3N0cmVhbV9o
eWJpLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L19zdHJlYW1faHliaS5weQpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYThhNDllM2MzZGM5NWJhOWY3ZmQ0MTI4OTM4M2ZlMDdh
ZmRkNTc3Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29j
a2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvX3N0cmVhbV9oeWJpLnB5CisrKyAvZGV2L251bGwKQEAg
LTEsODg3ICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMK
LSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot
IyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
IyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
Ci0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIlRoaXMgZmlsZSBwcm92aWRl
cyBjbGFzc2VzIGFuZCBoZWxwZXIgZnVuY3Rpb25zIGZvciBwYXJzaW5nL2J1aWxkaW5nIGZyYW1l
cwotb2YgdGhlIFdlYlNvY2tldCBwcm90b2NvbCAoUkZDIDY0NTUpLgotCi1TcGVjaWZpY2F0aW9u
OgotaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjQ1NQotIiIiCi0KLQotZnJvbSBjb2xs
ZWN0aW9ucyBpbXBvcnQgZGVxdWUKLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgb3MKLWltcG9ydCBz
dHJ1Y3QKLWltcG9ydCB0aW1lCi0KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24K
LWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCi1mcm9tIG1vZF9weXdlYnNvY2tldC5f
c3RyZWFtX2Jhc2UgaW1wb3J0IEJhZE9wZXJhdGlvbkV4Y2VwdGlvbgotZnJvbSBtb2RfcHl3ZWJz
b2NrZXQuX3N0cmVhbV9iYXNlIGltcG9ydCBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbgot
ZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9iYXNlIGltcG9ydCBJbnZhbGlkRnJhbWVFeGNl
cHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fYmFzZSBpbXBvcnQgSW52YWxpZFVU
RjhFeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fYmFzZSBpbXBvcnQgU3Ry
ZWFtQmFzZQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9iYXNlIGltcG9ydCBVbnN1cHBv
cnRlZEZyYW1lRXhjZXB0aW9uCi0KLQotX05PT1BfTUFTS0VSID0gdXRpbC5Ob29wTWFza2VyKCkK
LQotCi1jbGFzcyBGcmFtZShvYmplY3QpOgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbj0x
LCByc3YxPTAsIHJzdjI9MCwgcnN2Mz0wLAotICAgICAgICAgICAgICAgICBvcGNvZGU9Tm9uZSwg
cGF5bG9hZD0nJyk6Ci0gICAgICAgIHNlbGYuZmluID0gZmluCi0gICAgICAgIHNlbGYucnN2MSA9
IHJzdjEKLSAgICAgICAgc2VsZi5yc3YyID0gcnN2MgotICAgICAgICBzZWxmLnJzdjMgPSByc3Yz
Ci0gICAgICAgIHNlbGYub3Bjb2RlID0gb3Bjb2RlCi0gICAgICAgIHNlbGYucGF5bG9hZCA9IHBh
eWxvYWQKLQotCi0jIEhlbHBlciBmdW5jdGlvbnMgbWFkZSBwdWJsaWMgdG8gYmUgdXNlZCBmb3Ig
d3JpdGluZyB1bml0dGVzdHMgZm9yIFdlYlNvY2tldAotIyBjbGllbnRzLgotCi0KLWRlZiBjcmVh
dGVfbGVuZ3RoX2hlYWRlcihsZW5ndGgsIG1hc2spOgotICAgICIiIkNyZWF0ZXMgYSBsZW5ndGgg
aGVhZGVyLgotCi0gICAgQXJnczoKLSAgICAgICAgbGVuZ3RoOiBGcmFtZSBsZW5ndGguIE11c3Qg
YmUgbGVzcyB0aGFuIDJeNjMuCi0gICAgICAgIG1hc2s6IE1hc2sgYml0LiBNdXN0IGJlIGJvb2xl
YW4uCi0KLSAgICBSYWlzZXM6Ci0gICAgICAgIFZhbHVlRXJyb3I6IHdoZW4gYmFkIGRhdGEgaXMg
Z2l2ZW4uCi0gICAgIiIiCi0KLSAgICBpZiBtYXNrOgotICAgICAgICBtYXNrX2JpdCA9IDEgPDwg
NwotICAgIGVsc2U6Ci0gICAgICAgIG1hc2tfYml0ID0gMAotCi0gICAgaWYgbGVuZ3RoIDwgMDoK
LSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignbGVuZ3RoIG11c3QgYmUgbm9uIG5lZ2F0aXZlIGlu
dGVnZXInKQotICAgIGVsaWYgbGVuZ3RoIDw9IDEyNToKLSAgICAgICAgcmV0dXJuIGNocihtYXNr
X2JpdCB8IGxlbmd0aCkKLSAgICBlbGlmIGxlbmd0aCA8ICgxIDw8IDE2KToKLSAgICAgICAgcmV0
dXJuIGNocihtYXNrX2JpdCB8IDEyNikgKyBzdHJ1Y3QucGFjaygnIUgnLCBsZW5ndGgpCi0gICAg
ZWxpZiBsZW5ndGggPCAoMSA8PCA2Myk6Ci0gICAgICAgIHJldHVybiBjaHIobWFza19iaXQgfCAx
MjcpICsgc3RydWN0LnBhY2soJyFRJywgbGVuZ3RoKQotICAgIGVsc2U6Ci0gICAgICAgIHJhaXNl
IFZhbHVlRXJyb3IoJ1BheWxvYWQgaXMgdG9vIGJpZyBmb3Igb25lIGZyYW1lJykKLQotCi1kZWYg
Y3JlYXRlX2hlYWRlcihvcGNvZGUsIHBheWxvYWRfbGVuZ3RoLCBmaW4sIHJzdjEsIHJzdjIsIHJz
djMsIG1hc2spOgotICAgICIiIkNyZWF0ZXMgYSBmcmFtZSBoZWFkZXIuCi0KLSAgICBSYWlzZXM6
Ci0gICAgICAgIEV4Y2VwdGlvbjogd2hlbiBiYWQgZGF0YSBpcyBnaXZlbi4KLSAgICAiIiIKLQot
ICAgIGlmIG9wY29kZSA8IDAgb3IgMHhmIDwgb3Bjb2RlOgotICAgICAgICByYWlzZSBWYWx1ZUVy
cm9yKCdPcGNvZGUgb3V0IG9mIHJhbmdlJykKLQotICAgIGlmIHBheWxvYWRfbGVuZ3RoIDwgMCBv
ciAoMSA8PCA2MykgPD0gcGF5bG9hZF9sZW5ndGg6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3Io
J3BheWxvYWRfbGVuZ3RoIG91dCBvZiByYW5nZScpCi0KLSAgICBpZiAoZmluIHwgcnN2MSB8IHJz
djIgfCByc3YzKSAmIH4xOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdGSU4gYml0IGFuZCBS
ZXNlcnZlZCBiaXQgcGFyYW1ldGVyIG11c3QgYmUgMCBvciAxJykKLQotICAgIGhlYWRlciA9ICcn
Ci0KLSAgICBmaXJzdF9ieXRlID0gKChmaW4gPDwgNykKLSAgICAgICAgICAgICAgICAgIHwgKHJz
djEgPDwgNikgfCAocnN2MiA8PCA1KSB8IChyc3YzIDw8IDQpCi0gICAgICAgICAgICAgICAgICB8
IG9wY29kZSkKLSAgICBoZWFkZXIgKz0gY2hyKGZpcnN0X2J5dGUpCi0gICAgaGVhZGVyICs9IGNy
ZWF0ZV9sZW5ndGhfaGVhZGVyKHBheWxvYWRfbGVuZ3RoLCBtYXNrKQotCi0gICAgcmV0dXJuIGhl
YWRlcgotCi0KLWRlZiBfYnVpbGRfZnJhbWUoaGVhZGVyLCBib2R5LCBtYXNrKToKLSAgICBpZiBu
b3QgbWFzazoKLSAgICAgICAgcmV0dXJuIGhlYWRlciArIGJvZHkKLQotICAgIG1hc2tpbmdfbm9u
Y2UgPSBvcy51cmFuZG9tKDQpCi0gICAgbWFza2VyID0gdXRpbC5SZXBlYXRlZFhvck1hc2tlciht
YXNraW5nX25vbmNlKQotCi0gICAgcmV0dXJuIGhlYWRlciArIG1hc2tpbmdfbm9uY2UgKyBtYXNr
ZXIubWFzayhib2R5KQotCi0KLWRlZiBfZmlsdGVyX2FuZF9mb3JtYXRfZnJhbWVfb2JqZWN0KGZy
YW1lLCBtYXNrLCBmcmFtZV9maWx0ZXJzKToKLSAgICBmb3IgZnJhbWVfZmlsdGVyIGluIGZyYW1l
X2ZpbHRlcnM6Ci0gICAgICAgIGZyYW1lX2ZpbHRlci5maWx0ZXIoZnJhbWUpCi0KLSAgICBoZWFk
ZXIgPSBjcmVhdGVfaGVhZGVyKAotICAgICAgICBmcmFtZS5vcGNvZGUsIGxlbihmcmFtZS5wYXls
b2FkKSwgZnJhbWUuZmluLAotICAgICAgICBmcmFtZS5yc3YxLCBmcmFtZS5yc3YyLCBmcmFtZS5y
c3YzLCBtYXNrKQotICAgIHJldHVybiBfYnVpbGRfZnJhbWUoaGVhZGVyLCBmcmFtZS5wYXlsb2Fk
LCBtYXNrKQotCi0KLWRlZiBjcmVhdGVfYmluYXJ5X2ZyYW1lKAotICAgIG1lc3NhZ2UsIG9wY29k
ZT1jb21tb24uT1BDT0RFX0JJTkFSWSwgZmluPTEsIG1hc2s9RmFsc2UsIGZyYW1lX2ZpbHRlcnM9
W10pOgotICAgICIiIkNyZWF0ZXMgYSBzaW1wbGUgYmluYXJ5IGZyYW1lIHdpdGggbm8gZXh0ZW5z
aW9uLCByZXNlcnZlZCBiaXQuIiIiCi0KLSAgICBmcmFtZSA9IEZyYW1lKGZpbj1maW4sIG9wY29k
ZT1vcGNvZGUsIHBheWxvYWQ9bWVzc2FnZSkKLSAgICByZXR1cm4gX2ZpbHRlcl9hbmRfZm9ybWF0
X2ZyYW1lX29iamVjdChmcmFtZSwgbWFzaywgZnJhbWVfZmlsdGVycykKLQotCi1kZWYgY3JlYXRl
X3RleHRfZnJhbWUoCi0gICAgbWVzc2FnZSwgb3Bjb2RlPWNvbW1vbi5PUENPREVfVEVYVCwgZmlu
PTEsIG1hc2s9RmFsc2UsIGZyYW1lX2ZpbHRlcnM9W10pOgotICAgICIiIkNyZWF0ZXMgYSBzaW1w
bGUgdGV4dCBmcmFtZSB3aXRoIG5vIGV4dGVuc2lvbiwgcmVzZXJ2ZWQgYml0LiIiIgotCi0gICAg
ZW5jb2RlZF9tZXNzYWdlID0gbWVzc2FnZS5lbmNvZGUoJ3V0Zi04JykKLSAgICByZXR1cm4gY3Jl
YXRlX2JpbmFyeV9mcmFtZShlbmNvZGVkX21lc3NhZ2UsIG9wY29kZSwgZmluLCBtYXNrLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lX2ZpbHRlcnMpCi0KLQotZGVmIHBhcnNl
X2ZyYW1lKHJlY2VpdmVfYnl0ZXMsIGxvZ2dlcj1Ob25lLAotICAgICAgICAgICAgICAgIHdzX3Zl
cnNpb249Y29tbW9uLlZFUlNJT05fSFlCSV9MQVRFU1QsCi0gICAgICAgICAgICAgICAgdW5tYXNr
X3JlY2VpdmU9VHJ1ZSk6Ci0gICAgIiIiUGFyc2VzIGEgZnJhbWUuIFJldHVybnMgYSB0dXBsZSBj
b250YWluaW5nIGVhY2ggaGVhZGVyIGZpZWxkIGFuZAotICAgIHBheWxvYWQuCi0KLSAgICBBcmdz
OgotICAgICAgICByZWNlaXZlX2J5dGVzOiBhIGZ1bmN0aW9uIHRoYXQgcmVhZHMgZnJhbWUgZGF0
YSBmcm9tIGEgc3RyZWFtIG9yCi0gICAgICAgICAgICBzb21ldGhpbmcgc2ltaWxhci4gVGhlIGZ1
bmN0aW9uIHRha2VzIGxlbmd0aCBvZiB0aGUgYnl0ZXMgdG8gYmUKLSAgICAgICAgICAgIHJlYWQu
IFRoZSBmdW5jdGlvbiBtdXN0IHJhaXNlIENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uIGlm
Ci0gICAgICAgICAgICB0aGVyZSBpcyBub3QgZW5vdWdoIGRhdGEgdG8gYmUgcmVhZC4KLSAgICAg
ICAgbG9nZ2VyOiBhIGxvZ2dpbmcgb2JqZWN0LgotICAgICAgICB3c192ZXJzaW9uOiB0aGUgdmVy
c2lvbiBvZiBXZWJTb2NrZXQgcHJvdG9jb2wuCi0gICAgICAgIHVubWFza19yZWNlaXZlOiB1bm1h
c2sgcmVjZWl2ZWQgZnJhbWVzLiBXaGVuIHJlY2VpdmVkIHVubWFza2VkCi0gICAgICAgICAgICBm
cmFtZSwgcmFpc2VzIEludmFsaWRGcmFtZUV4Y2VwdGlvbi4KLQotICAgIFJhaXNlczoKLSAgICAg
ICAgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb246IHdoZW4gcmVjZWl2ZV9ieXRlcyByYWlz
ZXMgaXQuCi0gICAgICAgIEludmFsaWRGcmFtZUV4Y2VwdGlvbjogd2hlbiB0aGUgZnJhbWUgY29u
dGFpbnMgaW52YWxpZCBkYXRhLgotICAgICIiIgotCi0gICAgaWYgbm90IGxvZ2dlcjoKLSAgICAg
ICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoKQotCi0gICAgbG9nZ2VyLmxvZyhjb21tb24u
TE9HTEVWRUxfRklORSwgJ1JlY2VpdmUgdGhlIGZpcnN0IDIgb2N0ZXRzIG9mIGEgZnJhbWUnKQot
Ci0gICAgcmVjZWl2ZWQgPSByZWNlaXZlX2J5dGVzKDIpCi0KLSAgICBmaXJzdF9ieXRlID0gb3Jk
KHJlY2VpdmVkWzBdKQotICAgIGZpbiA9IChmaXJzdF9ieXRlID4+IDcpICYgMQotICAgIHJzdjEg
PSAoZmlyc3RfYnl0ZSA+PiA2KSAmIDEKLSAgICByc3YyID0gKGZpcnN0X2J5dGUgPj4gNSkgJiAx
Ci0gICAgcnN2MyA9IChmaXJzdF9ieXRlID4+IDQpICYgMQotICAgIG9wY29kZSA9IGZpcnN0X2J5
dGUgJiAweGYKLQotICAgIHNlY29uZF9ieXRlID0gb3JkKHJlY2VpdmVkWzFdKQotICAgIG1hc2sg
PSAoc2Vjb25kX2J5dGUgPj4gNykgJiAxCi0gICAgcGF5bG9hZF9sZW5ndGggPSBzZWNvbmRfYnl0
ZSAmIDB4N2YKLQotICAgIGxvZ2dlci5sb2coY29tbW9uLkxPR0xFVkVMX0ZJTkUsCi0gICAgICAg
ICAgICAgICAnRklOPSVzLCBSU1YxPSVzLCBSU1YyPSVzLCBSU1YzPSVzLCBvcGNvZGU9JXMsICcK
LSAgICAgICAgICAgICAgICdNYXNrPSVzLCBQYXlsb2FkX2xlbmd0aD0lcycsCi0gICAgICAgICAg
ICAgICBmaW4sIHJzdjEsIHJzdjIsIHJzdjMsIG9wY29kZSwgbWFzaywgcGF5bG9hZF9sZW5ndGgp
Ci0KLSAgICBpZiAobWFzayA9PSAxKSAhPSB1bm1hc2tfcmVjZWl2ZToKLSAgICAgICAgcmFpc2Ug
SW52YWxpZEZyYW1lRXhjZXB0aW9uKAotICAgICAgICAgICAgJ01hc2sgYml0IG9uIHRoZSByZWNl
aXZlZCBmcmFtZSBkaWRcJ250IG1hdGNoIG1hc2tpbmcgJwotICAgICAgICAgICAgJ2NvbmZpZ3Vy
YXRpb24gZm9yIHJlY2VpdmVkIGZyYW1lcycpCi0KLSAgICAjIFRoZSBIeUJpIGFuZCBsYXRlciBz
cGVjcyBkaXNhbGxvdyBwdXR0aW5nIGEgdmFsdWUgaW4gMHgwLTB4RkZGRgotICAgICMgaW50byB0
aGUgOC1vY3RldCBleHRlbmRlZCBwYXlsb2FkIGxlbmd0aCBmaWVsZCAob3IgMHgwLTB4RkQgaW4K
LSAgICAjIDItb2N0ZXQgZmllbGQpLgotICAgIHZhbGlkX2xlbmd0aF9lbmNvZGluZyA9IFRydWUK
LSAgICBsZW5ndGhfZW5jb2RpbmdfYnl0ZXMgPSAxCi0gICAgaWYgcGF5bG9hZF9sZW5ndGggPT0g
MTI3OgotICAgICAgICBsb2dnZXIubG9nKGNvbW1vbi5MT0dMRVZFTF9GSU5FLAotICAgICAgICAg
ICAgICAgICAgICdSZWNlaXZlIDgtb2N0ZXQgZXh0ZW5kZWQgcGF5bG9hZCBsZW5ndGgnKQotCi0g
ICAgICAgIGV4dGVuZGVkX3BheWxvYWRfbGVuZ3RoID0gcmVjZWl2ZV9ieXRlcyg4KQotICAgICAg
ICBwYXlsb2FkX2xlbmd0aCA9IHN0cnVjdC51bnBhY2soCi0gICAgICAgICAgICAnIVEnLCBleHRl
bmRlZF9wYXlsb2FkX2xlbmd0aClbMF0KLSAgICAgICAgaWYgcGF5bG9hZF9sZW5ndGggPiAweDdG
RkZGRkZGRkZGRkZGRkY6Ci0gICAgICAgICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24o
Ci0gICAgICAgICAgICAgICAgJ0V4dGVuZGVkIHBheWxvYWQgbGVuZ3RoID49IDJeNjMnKQotICAg
ICAgICBpZiB3c192ZXJzaW9uID49IDEzIGFuZCBwYXlsb2FkX2xlbmd0aCA8IDB4MTAwMDA6Ci0g
ICAgICAgICAgICB2YWxpZF9sZW5ndGhfZW5jb2RpbmcgPSBGYWxzZQotICAgICAgICAgICAgbGVu
Z3RoX2VuY29kaW5nX2J5dGVzID0gOAotCi0gICAgICAgIGxvZ2dlci5sb2coY29tbW9uLkxPR0xF
VkVMX0ZJTkUsCi0gICAgICAgICAgICAgICAgICAgJ0RlY29kZWRfcGF5bG9hZF9sZW5ndGg9JXMn
LCBwYXlsb2FkX2xlbmd0aCkKLSAgICBlbGlmIHBheWxvYWRfbGVuZ3RoID09IDEyNjoKLSAgICAg
ICAgbG9nZ2VyLmxvZyhjb21tb24uTE9HTEVWRUxfRklORSwKLSAgICAgICAgICAgICAgICAgICAn
UmVjZWl2ZSAyLW9jdGV0IGV4dGVuZGVkIHBheWxvYWQgbGVuZ3RoJykKLQotICAgICAgICBleHRl
bmRlZF9wYXlsb2FkX2xlbmd0aCA9IHJlY2VpdmVfYnl0ZXMoMikKLSAgICAgICAgcGF5bG9hZF9s
ZW5ndGggPSBzdHJ1Y3QudW5wYWNrKAotICAgICAgICAgICAgJyFIJywgZXh0ZW5kZWRfcGF5bG9h
ZF9sZW5ndGgpWzBdCi0gICAgICAgIGlmIHdzX3ZlcnNpb24gPj0gMTMgYW5kIHBheWxvYWRfbGVu
Z3RoIDwgMTI2OgotICAgICAgICAgICAgdmFsaWRfbGVuZ3RoX2VuY29kaW5nID0gRmFsc2UKLSAg
ICAgICAgICAgIGxlbmd0aF9lbmNvZGluZ19ieXRlcyA9IDIKLQotICAgICAgICBsb2dnZXIubG9n
KGNvbW1vbi5MT0dMRVZFTF9GSU5FLAotICAgICAgICAgICAgICAgICAgICdEZWNvZGVkX3BheWxv
YWRfbGVuZ3RoPSVzJywgcGF5bG9hZF9sZW5ndGgpCi0KLSAgICBpZiBub3QgdmFsaWRfbGVuZ3Ro
X2VuY29kaW5nOgotICAgICAgICBsb2dnZXIud2FybmluZygKLSAgICAgICAgICAgICdQYXlsb2Fk
IGxlbmd0aCBpcyBub3QgZW5jb2RlZCB1c2luZyB0aGUgbWluaW1hbCBudW1iZXIgb2YgJwotICAg
ICAgICAgICAgJ2J5dGVzICglZCBpcyBlbmNvZGVkIHVzaW5nICVkIGJ5dGVzKScsCi0gICAgICAg
ICAgICBwYXlsb2FkX2xlbmd0aCwKLSAgICAgICAgICAgIGxlbmd0aF9lbmNvZGluZ19ieXRlcykK
LQotICAgIGlmIG1hc2sgPT0gMToKLSAgICAgICAgbG9nZ2VyLmxvZyhjb21tb24uTE9HTEVWRUxf
RklORSwgJ1JlY2VpdmUgbWFzaycpCi0KLSAgICAgICAgbWFza2luZ19ub25jZSA9IHJlY2VpdmVf
Ynl0ZXMoNCkKLSAgICAgICAgbWFza2VyID0gdXRpbC5SZXBlYXRlZFhvck1hc2tlcihtYXNraW5n
X25vbmNlKQotCi0gICAgICAgIGxvZ2dlci5sb2coY29tbW9uLkxPR0xFVkVMX0ZJTkUsICdNYXNr
PSVyJywgbWFza2luZ19ub25jZSkKLSAgICBlbHNlOgotICAgICAgICBtYXNrZXIgPSBfTk9PUF9N
QVNLRVIKLQotICAgIGxvZ2dlci5sb2coY29tbW9uLkxPR0xFVkVMX0ZJTkUsICdSZWNlaXZlIHBh
eWxvYWQgZGF0YScpCi0gICAgaWYgbG9nZ2VyLmlzRW5hYmxlZEZvcihjb21tb24uTE9HTEVWRUxf
RklORSk6Ci0gICAgICAgIHJlY2VpdmVfc3RhcnQgPSB0aW1lLnRpbWUoKQotCi0gICAgcmF3X3Bh
eWxvYWRfYnl0ZXMgPSByZWNlaXZlX2J5dGVzKHBheWxvYWRfbGVuZ3RoKQotCi0gICAgaWYgbG9n
Z2VyLmlzRW5hYmxlZEZvcihjb21tb24uTE9HTEVWRUxfRklORSk6Ci0gICAgICAgIGxvZ2dlci5s
b2coCi0gICAgICAgICAgICBjb21tb24uTE9HTEVWRUxfRklORSwKLSAgICAgICAgICAgICdEb25l
IHJlY2VpdmluZyBwYXlsb2FkIGRhdGEgYXQgJXMgTUIvcycsCi0gICAgICAgICAgICBwYXlsb2Fk
X2xlbmd0aCAvICh0aW1lLnRpbWUoKSAtIHJlY2VpdmVfc3RhcnQpIC8gMTAwMCAvIDEwMDApCi0g
ICAgbG9nZ2VyLmxvZyhjb21tb24uTE9HTEVWRUxfRklORSwgJ1VubWFzayBwYXlsb2FkIGRhdGEn
KQotCi0gICAgaWYgbG9nZ2VyLmlzRW5hYmxlZEZvcihjb21tb24uTE9HTEVWRUxfRklORSk6Ci0g
ICAgICAgIHVubWFza19zdGFydCA9IHRpbWUudGltZSgpCi0KLSAgICB1bm1hc2tlZF9ieXRlcyA9
IG1hc2tlci5tYXNrKHJhd19wYXlsb2FkX2J5dGVzKQotCi0gICAgaWYgbG9nZ2VyLmlzRW5hYmxl
ZEZvcihjb21tb24uTE9HTEVWRUxfRklORSk6Ci0gICAgICAgIGxvZ2dlci5sb2coCi0gICAgICAg
ICAgICBjb21tb24uTE9HTEVWRUxfRklORSwKLSAgICAgICAgICAgICdEb25lIHVubWFza2luZyBw
YXlsb2FkIGRhdGEgYXQgJXMgTUIvcycsCi0gICAgICAgICAgICBwYXlsb2FkX2xlbmd0aCAvICh0
aW1lLnRpbWUoKSAtIHVubWFza19zdGFydCkgLyAxMDAwIC8gMTAwMCkKLQotICAgIHJldHVybiBv
cGNvZGUsIHVubWFza2VkX2J5dGVzLCBmaW4sIHJzdjEsIHJzdjIsIHJzdjMKLQotCi1jbGFzcyBG
cmFnbWVudGVkRnJhbWVCdWlsZGVyKG9iamVjdCk6Ci0gICAgIiIiQSBzdGF0ZWZ1bCBjbGFzcyB0
byBzZW5kIGEgbWVzc2FnZSBhcyBmcmFnbWVudHMuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgbWFzaywgZnJhbWVfZmlsdGVycz1bXSwgZW5jb2RlX3V0Zjg9VHJ1ZSk6Ci0gICAgICAgICIi
IkNvbnN0cnVjdHMgYW4gaW5zdGFuY2UuIiIiCi0KLSAgICAgICAgc2VsZi5fbWFzayA9IG1hc2sK
LSAgICAgICAgc2VsZi5fZnJhbWVfZmlsdGVycyA9IGZyYW1lX2ZpbHRlcnMKLSAgICAgICAgIyBU
aGlzIGlzIGZvciBza2lwcGluZyBVVEYtOCBlbmNvZGluZyB3aGVuIGJ1aWxkaW5nIHRleHQgdHlw
ZSBmcmFtZXMKLSAgICAgICAgIyBmcm9tIGNvbXByZXNzZWQgZGF0YS4KLSAgICAgICAgc2VsZi5f
ZW5jb2RlX3V0ZjggPSBlbmNvZGVfdXRmOAotCi0gICAgICAgIHNlbGYuX3N0YXJ0ZWQgPSBGYWxz
ZQotCi0gICAgICAgICMgSG9sZCBvcGNvZGUgb2YgdGhlIGZpcnN0IGZyYW1lIGluIG1lc3NhZ2Vz
IHRvIHZlcmlmeSB0eXBlcyBvZiBvdGhlcgotICAgICAgICAjIGZyYW1lcyBpbiB0aGUgbWVzc2Fn
ZSBhcmUgYWxsIHRoZSBzYW1lLgotICAgICAgICBzZWxmLl9vcGNvZGUgPSBjb21tb24uT1BDT0RF
X1RFWFQKLQotICAgIGRlZiBidWlsZChzZWxmLCBwYXlsb2FkX2RhdGEsIGVuZCwgYmluYXJ5KToK
LSAgICAgICAgaWYgYmluYXJ5OgotICAgICAgICAgICAgZnJhbWVfdHlwZSA9IGNvbW1vbi5PUENP
REVfQklOQVJZCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmcmFtZV90eXBlID0gY29tbW9u
Lk9QQ09ERV9URVhUCi0gICAgICAgIGlmIHNlbGYuX3N0YXJ0ZWQ6Ci0gICAgICAgICAgICBpZiBz
ZWxmLl9vcGNvZGUgIT0gZnJhbWVfdHlwZToKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVy
cm9yKCdNZXNzYWdlIHR5cGVzIGFyZSBkaWZmZXJlbnQgaW4gZnJhbWVzIGZvciAnCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAndGhlIHNhbWUgbWVzc2FnZScpCi0gICAgICAgICAg
ICBvcGNvZGUgPSBjb21tb24uT1BDT0RFX0NPTlRJTlVBVElPTgotICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgb3Bjb2RlID0gZnJhbWVfdHlwZQotICAgICAgICAgICAgc2VsZi5fb3Bjb2RlID0g
ZnJhbWVfdHlwZQotCi0gICAgICAgIGlmIGVuZDoKLSAgICAgICAgICAgIHNlbGYuX3N0YXJ0ZWQg
PSBGYWxzZQotICAgICAgICAgICAgZmluID0gMQotICAgICAgICBlbHNlOgotICAgICAgICAgICAg
c2VsZi5fc3RhcnRlZCA9IFRydWUKLSAgICAgICAgICAgIGZpbiA9IDAKLQotICAgICAgICBpZiBi
aW5hcnkgb3Igbm90IHNlbGYuX2VuY29kZV91dGY4OgotICAgICAgICAgICAgcmV0dXJuIGNyZWF0
ZV9iaW5hcnlfZnJhbWUoCi0gICAgICAgICAgICAgICAgcGF5bG9hZF9kYXRhLCBvcGNvZGUsIGZp
biwgc2VsZi5fbWFzaywgc2VsZi5fZnJhbWVfZmlsdGVycykKLSAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIHJldHVybiBjcmVhdGVfdGV4dF9mcmFtZSgKLSAgICAgICAgICAgICAgICBwYXlsb2Fk
X2RhdGEsIG9wY29kZSwgZmluLCBzZWxmLl9tYXNrLCBzZWxmLl9mcmFtZV9maWx0ZXJzKQotCi0K
LWRlZiBfY3JlYXRlX2NvbnRyb2xfZnJhbWUob3Bjb2RlLCBib2R5LCBtYXNrLCBmcmFtZV9maWx0
ZXJzKToKLSAgICBmcmFtZSA9IEZyYW1lKG9wY29kZT1vcGNvZGUsIHBheWxvYWQ9Ym9keSkKLQot
ICAgIGZvciBmcmFtZV9maWx0ZXIgaW4gZnJhbWVfZmlsdGVyczoKLSAgICAgICAgZnJhbWVfZmls
dGVyLmZpbHRlcihmcmFtZSkKLQotICAgIGlmIGxlbihmcmFtZS5wYXlsb2FkKSA+IDEyNToKLSAg
ICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0aW9uKAotICAgICAgICAgICAgJ1BheWxvYWQg
ZGF0YSBzaXplIG9mIGNvbnRyb2wgZnJhbWVzIG11c3QgYmUgMTI1IGJ5dGVzIG9yIGxlc3MnKQot
Ci0gICAgaGVhZGVyID0gY3JlYXRlX2hlYWRlcigKLSAgICAgICAgZnJhbWUub3Bjb2RlLCBsZW4o
ZnJhbWUucGF5bG9hZCksIGZyYW1lLmZpbiwKLSAgICAgICAgZnJhbWUucnN2MSwgZnJhbWUucnN2
MiwgZnJhbWUucnN2MywgbWFzaykKLSAgICByZXR1cm4gX2J1aWxkX2ZyYW1lKGhlYWRlciwgZnJh
bWUucGF5bG9hZCwgbWFzaykKLQotCi1kZWYgY3JlYXRlX3BpbmdfZnJhbWUoYm9keSwgbWFzaz1G
YWxzZSwgZnJhbWVfZmlsdGVycz1bXSk6Ci0gICAgcmV0dXJuIF9jcmVhdGVfY29udHJvbF9mcmFt
ZShjb21tb24uT1BDT0RFX1BJTkcsIGJvZHksIG1hc2ssIGZyYW1lX2ZpbHRlcnMpCi0KLQotZGVm
IGNyZWF0ZV9wb25nX2ZyYW1lKGJvZHksIG1hc2s9RmFsc2UsIGZyYW1lX2ZpbHRlcnM9W10pOgot
ICAgIHJldHVybiBfY3JlYXRlX2NvbnRyb2xfZnJhbWUoY29tbW9uLk9QQ09ERV9QT05HLCBib2R5
LCBtYXNrLCBmcmFtZV9maWx0ZXJzKQotCi0KLWRlZiBjcmVhdGVfY2xvc2VfZnJhbWUoYm9keSwg
bWFzaz1GYWxzZSwgZnJhbWVfZmlsdGVycz1bXSk6Ci0gICAgcmV0dXJuIF9jcmVhdGVfY29udHJv
bF9mcmFtZSgKLSAgICAgICAgY29tbW9uLk9QQ09ERV9DTE9TRSwgYm9keSwgbWFzaywgZnJhbWVf
ZmlsdGVycykKLQotCi1kZWYgY3JlYXRlX2Nsb3NpbmdfaGFuZHNoYWtlX2JvZHkoY29kZSwgcmVh
c29uKToKLSAgICBib2R5ID0gJycKLSAgICBpZiBjb2RlIGlzIG5vdCBOb25lOgotICAgICAgICBp
ZiAoY29kZSA+IGNvbW1vbi5TVEFUVVNfVVNFUl9QUklWQVRFX01BWCBvcgotICAgICAgICAgICAg
Y29kZSA8IGNvbW1vbi5TVEFUVVNfTk9STUFMX0NMT1NVUkUpOgotICAgICAgICAgICAgcmFpc2Ug
QmFkT3BlcmF0aW9uRXhjZXB0aW9uKCdTdGF0dXMgY29kZSBpcyBvdXQgb2YgcmFuZ2UnKQotICAg
ICAgICBpZiAoY29kZSA9PSBjb21tb24uU1RBVFVTX05PX1NUQVRVU19SRUNFSVZFRCBvcgotICAg
ICAgICAgICAgY29kZSA9PSBjb21tb24uU1RBVFVTX0FCTk9STUFMX0NMT1NVUkUgb3IKLSAgICAg
ICAgICAgIGNvZGUgPT0gY29tbW9uLlNUQVRVU19UTFNfSEFORFNIQUtFKToKLSAgICAgICAgICAg
IHJhaXNlIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbignU3RhdHVzIGNvZGUgaXMgcmVzZXJ2ZWQgcHNl
dWRvICcKLSAgICAgICAgICAgICAgICAnY29kZScpCi0gICAgICAgIGVuY29kZWRfcmVhc29uID0g
cmVhc29uLmVuY29kZSgndXRmLTgnKQotICAgICAgICBib2R5ID0gc3RydWN0LnBhY2soJyFIJywg
Y29kZSkgKyBlbmNvZGVkX3JlYXNvbgotICAgIHJldHVybiBib2R5Ci0KLQotY2xhc3MgU3RyZWFt
T3B0aW9ucyhvYmplY3QpOgotICAgICIiIkhvbGRzIG9wdGlvbiB2YWx1ZXMgdG8gY29uZmlndXJl
IFN0cmVhbSBvYmplY3RzLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICAi
IiJDb25zdHJ1Y3RzIFN0cmVhbU9wdGlvbnMuIiIiCi0KLSAgICAgICAgIyBGaWx0ZXJzIGFwcGxp
ZWQgdG8gZnJhbWVzLgotICAgICAgICBzZWxmLm91dGdvaW5nX2ZyYW1lX2ZpbHRlcnMgPSBbXQot
ICAgICAgICBzZWxmLmluY29taW5nX2ZyYW1lX2ZpbHRlcnMgPSBbXQotCi0gICAgICAgICMgRmls
dGVycyBhcHBsaWVkIHRvIG1lc3NhZ2VzLiBDb250cm9sIGZyYW1lcyBhcmUgbm90IGFmZmVjdGVk
IGJ5IHRoZW0uCi0gICAgICAgIHNlbGYub3V0Z29pbmdfbWVzc2FnZV9maWx0ZXJzID0gW10KLSAg
ICAgICAgc2VsZi5pbmNvbWluZ19tZXNzYWdlX2ZpbHRlcnMgPSBbXQotCi0gICAgICAgIHNlbGYu
ZW5jb2RlX3RleHRfbWVzc2FnZV90b191dGY4ID0gVHJ1ZQotICAgICAgICBzZWxmLm1hc2tfc2Vu
ZCA9IEZhbHNlCi0gICAgICAgIHNlbGYudW5tYXNrX3JlY2VpdmUgPSBUcnVlCi0KLQotY2xhc3Mg
U3RyZWFtKFN0cmVhbUJhc2UpOgotICAgICIiIkEgY2xhc3MgZm9yIHBhcnNpbmcvYnVpbGRpbmcg
ZnJhbWVzIG9mIHRoZSBXZWJTb2NrZXQgcHJvdG9jb2wKLSAgICAoUkZDIDY0NTUpLgotICAgICIi
IgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3QsIG9wdGlvbnMpOgotICAgICAgICAi
IiJDb25zdHJ1Y3RzIGFuIGluc3RhbmNlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBy
ZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3QuCi0gICAgICAgICIiIgotCi0gICAgICAgIFN0cmVh
bUJhc2UuX19pbml0X18oc2VsZiwgcmVxdWVzdCkKLQotICAgICAgICBzZWxmLl9sb2dnZXIgPSB1
dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKLQotICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0
aW9ucwotCi0gICAgICAgIHNlbGYuX3JlcXVlc3QuY2xpZW50X3Rlcm1pbmF0ZWQgPSBGYWxzZQot
ICAgICAgICBzZWxmLl9yZXF1ZXN0LnNlcnZlcl90ZXJtaW5hdGVkID0gRmFsc2UKLQotICAgICAg
ICAjIEhvbGRzIGJvZHkgb2YgcmVjZWl2ZWQgZnJhZ21lbnRzLgotICAgICAgICBzZWxmLl9yZWNl
aXZlZF9mcmFnbWVudHMgPSBbXQotICAgICAgICAjIEhvbGRzIHRoZSBvcGNvZGUgb2YgdGhlIGZp
cnN0IGZyYWdtZW50LgotICAgICAgICBzZWxmLl9vcmlnaW5hbF9vcGNvZGUgPSBOb25lCi0KLSAg
ICAgICAgc2VsZi5fd3JpdGVyID0gRnJhZ21lbnRlZEZyYW1lQnVpbGRlcigKLSAgICAgICAgICAg
IHNlbGYuX29wdGlvbnMubWFza19zZW5kLCBzZWxmLl9vcHRpb25zLm91dGdvaW5nX2ZyYW1lX2Zp
bHRlcnMsCi0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLmVuY29kZV90ZXh0X21lc3NhZ2VfdG9f
dXRmOCkKLQotICAgICAgICBzZWxmLl9waW5nX3F1ZXVlID0gZGVxdWUoKQotCi0gICAgZGVmIF9y
ZWNlaXZlX2ZyYW1lKHNlbGYpOgotICAgICAgICAiIiJSZWNlaXZlcyBhIGZyYW1lIGFuZCByZXR1
cm4gZGF0YSBpbiB0aGUgZnJhbWUgYXMgYSB0dXBsZSBjb250YWluaW5nCi0gICAgICAgIGVhY2gg
aGVhZGVyIGZpZWxkIGFuZCBwYXlsb2FkIHNlcGFyYXRlbHkuCi0KLSAgICAgICAgUmFpc2VzOgot
ICAgICAgICAgICAgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb246IHdoZW4gcmVhZCByZXR1
cm5zIGVtcHR5Ci0gICAgICAgICAgICAgICAgc3RyaW5nLgotICAgICAgICAgICAgSW52YWxpZEZy
YW1lRXhjZXB0aW9uOiB3aGVuIHRoZSBmcmFtZSBjb250YWlucyBpbnZhbGlkIGRhdGEuCi0gICAg
ICAgICIiIgotCi0gICAgICAgIGRlZiBfcmVjZWl2ZV9ieXRlcyhsZW5ndGgpOgotICAgICAgICAg
ICAgcmV0dXJuIHNlbGYucmVjZWl2ZV9ieXRlcyhsZW5ndGgpCi0KLSAgICAgICAgcmV0dXJuIHBh
cnNlX2ZyYW1lKHJlY2VpdmVfYnl0ZXM9X3JlY2VpdmVfYnl0ZXMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICBsb2dnZXI9c2VsZi5fbG9nZ2VyLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgd3NfdmVyc2lvbj1zZWxmLl9yZXF1ZXN0LndzX3ZlcnNpb24sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bm1hc2tfcmVjZWl2ZT1zZWxmLl9vcHRpb25zLnVubWFza19yZWNlaXZlKQot
Ci0gICAgZGVmIF9yZWNlaXZlX2ZyYW1lX2FzX2ZyYW1lX29iamVjdChzZWxmKToKLSAgICAgICAg
b3Bjb2RlLCB1bm1hc2tlZF9ieXRlcywgZmluLCByc3YxLCByc3YyLCByc3YzID0gc2VsZi5fcmVj
ZWl2ZV9mcmFtZSgpCi0KLSAgICAgICAgcmV0dXJuIEZyYW1lKGZpbj1maW4sIHJzdjE9cnN2MSwg
cnN2Mj1yc3YyLCByc3YzPXJzdjMsCi0gICAgICAgICAgICAgICAgICAgICBvcGNvZGU9b3Bjb2Rl
LCBwYXlsb2FkPXVubWFza2VkX2J5dGVzKQotCi0gICAgZGVmIHJlY2VpdmVfZmlsdGVyZWRfZnJh
bWUoc2VsZik6Ci0gICAgICAgICIiIlJlY2VpdmVzIGEgZnJhbWUgYW5kIGFwcGxpZXMgZnJhbWUg
ZmlsdGVycyBhbmQgbWVzc2FnZSBmaWx0ZXJzLgotICAgICAgICBUaGUgZnJhbWUgdG8gYmUgcmVj
ZWl2ZWQgbXVzdCBzYXRpc2Z5IGZvbGxvd2luZyBjb25kaXRpb25zOgotICAgICAgICAtIFRoZSBm
cmFtZSBpcyBub3QgZnJhZ21lbnRlZC4KLSAgICAgICAgLSBUaGUgb3Bjb2RlIG9mIHRoZSBmcmFt
ZSBpcyBURVhUIG9yIEJJTkFSWS4KLQotICAgICAgICBETyBOT1QgVVNFIHRoaXMgbWV0aG9kIGV4
Y2VwdCBmb3IgdGVzdGluZyBwdXJwb3NlLgotICAgICAgICAiIiIKLQotICAgICAgICBmcmFtZSA9
IHNlbGYuX3JlY2VpdmVfZnJhbWVfYXNfZnJhbWVfb2JqZWN0KCkKLSAgICAgICAgaWYgbm90IGZy
YW1lLmZpbjoKLSAgICAgICAgICAgIHJhaXNlIEludmFsaWRGcmFtZUV4Y2VwdGlvbigKLSAgICAg
ICAgICAgICAgICAnU2VnbWVudGVkIGZyYW1lcyBtdXN0IG5vdCBiZSByZWNlaXZlZCB2aWEgJwot
ICAgICAgICAgICAgICAgICdyZWNlaXZlX2ZpbHRlcmVkX2ZyYW1lKCknKQotICAgICAgICBpZiAo
ZnJhbWUub3Bjb2RlICE9IGNvbW1vbi5PUENPREVfVEVYVCBhbmQKLSAgICAgICAgICAgIGZyYW1l
Lm9wY29kZSAhPSBjb21tb24uT1BDT0RFX0JJTkFSWSk6Ci0gICAgICAgICAgICByYWlzZSBJbnZh
bGlkRnJhbWVFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ0NvbnRyb2wgZnJhbWVzIG11c3Qg
bm90IGJlIHJlY2VpdmVkIHZpYSAnCi0gICAgICAgICAgICAgICAgJ3JlY2VpdmVfZmlsdGVyZWRf
ZnJhbWUoKScpCi0KLSAgICAgICAgZm9yIGZyYW1lX2ZpbHRlciBpbiBzZWxmLl9vcHRpb25zLmlu
Y29taW5nX2ZyYW1lX2ZpbHRlcnM6Ci0gICAgICAgICAgICBmcmFtZV9maWx0ZXIuZmlsdGVyKGZy
YW1lKQotICAgICAgICBmb3IgbWVzc2FnZV9maWx0ZXIgaW4gc2VsZi5fb3B0aW9ucy5pbmNvbWlu
Z19tZXNzYWdlX2ZpbHRlcnM6Ci0gICAgICAgICAgICBmcmFtZS5wYXlsb2FkID0gbWVzc2FnZV9m
aWx0ZXIuZmlsdGVyKGZyYW1lLnBheWxvYWQpCi0gICAgICAgIHJldHVybiBmcmFtZQotCi0gICAg
ZGVmIHNlbmRfbWVzc2FnZShzZWxmLCBtZXNzYWdlLCBlbmQ9VHJ1ZSwgYmluYXJ5PUZhbHNlKToK
LSAgICAgICAgIiIiU2VuZCBtZXNzYWdlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBt
ZXNzYWdlOiB0ZXh0IGluIHVuaWNvZGUgb3IgYmluYXJ5IGluIHN0ciB0byBzZW5kLgotICAgICAg
ICAgICAgYmluYXJ5OiBzZW5kIG1lc3NhZ2UgYXMgYmluYXJ5IGZyYW1lLgotCi0gICAgICAgIFJh
aXNlczoKLSAgICAgICAgICAgIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbjogd2hlbiBjYWxsZWQgb24g
YSBzZXJ2ZXItdGVybWluYXRlZAotICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24gb3IgY2FsbGVk
IHdpdGggaW5jb25zaXN0ZW50IG1lc3NhZ2UgdHlwZSBvcgotICAgICAgICAgICAgICAgIGJpbmFy
eSBwYXJhbWV0ZXIuCi0gICAgICAgICIiIgotCi0gICAgICAgIGlmIHNlbGYuX3JlcXVlc3Quc2Vy
dmVyX3Rlcm1pbmF0ZWQ6Ci0gICAgICAgICAgICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24o
Ci0gICAgICAgICAgICAgICAgJ1JlcXVlc3RlZCBzZW5kX21lc3NhZ2UgYWZ0ZXIgc2VuZGluZyBv
dXQgYSBjbG9zaW5nIGhhbmRzaGFrZScpCi0KLSAgICAgICAgaWYgYmluYXJ5IGFuZCBpc2luc3Rh
bmNlKG1lc3NhZ2UsIHVuaWNvZGUpOgotICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhj
ZXB0aW9uKAotICAgICAgICAgICAgICAgICdNZXNzYWdlIGZvciBiaW5hcnkgZnJhbWUgbXVzdCBi
ZSBpbnN0YW5jZSBvZiBzdHInKQotCi0gICAgICAgIGZvciBtZXNzYWdlX2ZpbHRlciBpbiBzZWxm
Ll9vcHRpb25zLm91dGdvaW5nX21lc3NhZ2VfZmlsdGVyczoKLSAgICAgICAgICAgIG1lc3NhZ2Ug
PSBtZXNzYWdlX2ZpbHRlci5maWx0ZXIobWVzc2FnZSwgZW5kLCBiaW5hcnkpCi0KLSAgICAgICAg
dHJ5OgotICAgICAgICAgICAgIyBTZXQgdGhpcyB0byBhbnkgcG9zaXRpdmUgaW50ZWdlciB0byBs
aW1pdCBtYXhpbXVtIHNpemUgb2YgZGF0YSBpbgotICAgICAgICAgICAgIyBwYXlsb2FkIGRhdGEg
b2YgZWFjaCBmcmFtZS4KLSAgICAgICAgICAgIE1BWF9QQVlMT0FEX0RBVEFfU0laRSA9IC0xCi0K
LSAgICAgICAgICAgIGlmIE1BWF9QQVlMT0FEX0RBVEFfU0laRSA8PSAwOgotICAgICAgICAgICAg
ICAgIHNlbGYuX3dyaXRlKHNlbGYuX3dyaXRlci5idWlsZChtZXNzYWdlLCBlbmQsIGJpbmFyeSkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgICAgIGJ5dGVzX3dyaXR0ZW4gPSAw
Ci0gICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgIGVuZF9mb3JfdGhpc19m
cmFtZSA9IGVuZAotICAgICAgICAgICAgICAgIGJ5dGVzX3RvX3dyaXRlID0gbGVuKG1lc3NhZ2Up
IC0gYnl0ZXNfd3JpdHRlbgotICAgICAgICAgICAgICAgIGlmIChNQVhfUEFZTE9BRF9EQVRBX1NJ
WkUgPiAwIGFuZAotICAgICAgICAgICAgICAgICAgICBieXRlc190b193cml0ZSA+IE1BWF9QQVlM
T0FEX0RBVEFfU0laRSk6Ci0gICAgICAgICAgICAgICAgICAgIGVuZF9mb3JfdGhpc19mcmFtZSA9
IEZhbHNlCi0gICAgICAgICAgICAgICAgICAgIGJ5dGVzX3RvX3dyaXRlID0gTUFYX1BBWUxPQURf
REFUQV9TSVpFCi0KLSAgICAgICAgICAgICAgICBmcmFtZSA9IHNlbGYuX3dyaXRlci5idWlsZCgK
LSAgICAgICAgICAgICAgICAgICAgbWVzc2FnZVtieXRlc193cml0dGVuOmJ5dGVzX3dyaXR0ZW4g
KyBieXRlc190b193cml0ZV0sCi0gICAgICAgICAgICAgICAgICAgIGVuZF9mb3JfdGhpc19mcmFt
ZSwKLSAgICAgICAgICAgICAgICAgICAgYmluYXJ5KQotICAgICAgICAgICAgICAgIHNlbGYuX3dy
aXRlKGZyYW1lKQotCi0gICAgICAgICAgICAgICAgYnl0ZXNfd3JpdHRlbiArPSBieXRlc190b193
cml0ZQotCi0gICAgICAgICAgICAgICAgIyBUaGlzIGlmIG11c3QgYmUgcGxhY2VkIGhlcmUgKHRo
ZSBlbmQgb2Ygd2hpbGUgYmxvY2spIHNvIHRoYXQKLSAgICAgICAgICAgICAgICAjIGF0IGxlYXN0
IG9uZSBmcmFtZSBpcyBzZW50LgotICAgICAgICAgICAgICAgIGlmIGxlbihtZXNzYWdlKSA8PSBi
eXRlc193cml0dGVuOgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBleGNlcHQg
VmFsdWVFcnJvciwgZToKLSAgICAgICAgICAgIHJhaXNlIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbihl
KQotCi0gICAgZGVmIF9nZXRfbWVzc2FnZV9mcm9tX2ZyYW1lKHNlbGYsIGZyYW1lKToKLSAgICAg
ICAgIiIiR2V0cyBhIG1lc3NhZ2UgZnJvbSBmcmFtZS4gSWYgdGhlIG1lc3NhZ2UgaXMgY29tcG9z
ZWQgb2YgZnJhZ21lbnRlZAotICAgICAgICBmcmFtZXMgYW5kIHRoZSBmcmFtZSBpcyBub3QgdGhl
IGxhc3QgZnJhZ21lbnRlZCBmcmFtZSwgdGhpcyBtZXRob2QKLSAgICAgICAgcmV0dXJucyBOb25l
LiBUaGUgd2hvbGUgbWVzc2FnZSB3aWxsIGJlIHJldHVybmVkIHdoZW4gdGhlIGxhc3QKLSAgICAg
ICAgZnJhZ21lbnRlZCBmcmFtZSBpcyBwYXNzZWQgdG8gdGhpcyBtZXRob2QuCi0KLSAgICAgICAg
UmFpc2VzOgotICAgICAgICAgICAgSW52YWxpZEZyYW1lRXhjZXB0aW9uOiB3aGVuIHRoZSBmcmFt
ZSBkb2Vzbid0IG1hdGNoIGRlZnJhZ21lbnRhdGlvbgotICAgICAgICAgICAgICAgIGNvbnRleHQs
IG9yIHRoZSBmcmFtZSBjb250YWlucyBpbnZhbGlkIGRhdGEuCi0gICAgICAgICIiIgotCi0gICAg
ICAgIGlmIGZyYW1lLm9wY29kZSA9PSBjb21tb24uT1BDT0RFX0NPTlRJTlVBVElPTjoKLSAgICAg
ICAgICAgIGlmIG5vdCBzZWxmLl9yZWNlaXZlZF9mcmFnbWVudHM6Ci0gICAgICAgICAgICAgICAg
aWYgZnJhbWUuZmluOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNl
cHRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAnUmVjZWl2ZWQgYSB0ZXJtaW5hdGlvbiBm
cmFtZSBidXQgZnJhZ21lbnRhdGlvbiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAnbm90IHN0
YXJ0ZWQnKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNl
IEludmFsaWRGcmFtZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICdSZWNlaXZl
ZCBhbiBpbnRlcm1lZGlhdGUgZnJhbWUgYnV0ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICdm
cmFnbWVudGF0aW9uIG5vdCBzdGFydGVkJykKLQotICAgICAgICAgICAgaWYgZnJhbWUuZmluOgot
ICAgICAgICAgICAgICAgICMgRW5kIG9mIGZyYWdtZW50YXRpb24gZnJhbWUKLSAgICAgICAgICAg
ICAgICBzZWxmLl9yZWNlaXZlZF9mcmFnbWVudHMuYXBwZW5kKGZyYW1lLnBheWxvYWQpCi0gICAg
ICAgICAgICAgICAgbWVzc2FnZSA9ICcnLmpvaW4oc2VsZi5fcmVjZWl2ZWRfZnJhZ21lbnRzKQot
ICAgICAgICAgICAgICAgIHNlbGYuX3JlY2VpdmVkX2ZyYWdtZW50cyA9IFtdCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIG1lc3NhZ2UKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAg
IyBJbnRlcm1lZGlhdGUgZnJhbWUKLSAgICAgICAgICAgICAgICBzZWxmLl9yZWNlaXZlZF9mcmFn
bWVudHMuYXBwZW5kKGZyYW1lLnBheWxvYWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUK
LSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIHNlbGYuX3JlY2VpdmVkX2ZyYWdtZW50czoK
LSAgICAgICAgICAgICAgICBpZiBmcmFtZS5maW46Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNl
IEludmFsaWRGcmFtZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICdSZWNlaXZl
ZCBhbiB1bmZyYWdtZW50ZWQgZnJhbWUgd2l0aG91dCAnCi0gICAgICAgICAgICAgICAgICAgICAg
ICAndGVybWluYXRpbmcgZXhpc3RpbmcgZnJhZ21lbnRhdGlvbicpCi0gICAgICAgICAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW52YWxpZEZyYW1lRXhjZXB0aW9uKAot
ICAgICAgICAgICAgICAgICAgICAgICAgJ05ldyBmcmFnbWVudGF0aW9uIHN0YXJ0ZWQgd2l0aG91
dCB0ZXJtaW5hdGluZyAnCi0gICAgICAgICAgICAgICAgICAgICAgICAnZXhpc3RpbmcgZnJhZ21l
bnRhdGlvbicpCi0KLSAgICAgICAgICAgIGlmIGZyYW1lLmZpbjoKLSAgICAgICAgICAgICAgICAj
IFVuZnJhZ21lbnRlZCBmcmFtZQotCi0gICAgICAgICAgICAgICAgc2VsZi5fb3JpZ2luYWxfb3Bj
b2RlID0gZnJhbWUub3Bjb2RlCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZyYW1lLnBheWxvYWQK
LSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyBTdGFydCBvZiBmcmFnbWVudGF0
aW9uIGZyYW1lCi0KLSAgICAgICAgICAgICAgICBpZiBjb21tb24uaXNfY29udHJvbF9vcGNvZGUo
ZnJhbWUub3Bjb2RlKToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW52YWxpZEZyYW1lRXhj
ZXB0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRyb2wgZnJhbWVzIG11c3Qgbm90
IGJlIGZyYWdtZW50ZWQnKQotCi0gICAgICAgICAgICAgICAgc2VsZi5fb3JpZ2luYWxfb3Bjb2Rl
ID0gZnJhbWUub3Bjb2RlCi0gICAgICAgICAgICAgICAgc2VsZi5fcmVjZWl2ZWRfZnJhZ21lbnRz
LmFwcGVuZChmcmFtZS5wYXlsb2FkKQotICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAg
ICBkZWYgX3Byb2Nlc3NfY2xvc2VfbWVzc2FnZShzZWxmLCBtZXNzYWdlKToKLSAgICAgICAgIiIi
UHJvY2Vzc2VzIGNsb3NlIG1lc3NhZ2UuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIG1l
c3NhZ2U6IGNsb3NlIG1lc3NhZ2UuCi0KLSAgICAgICAgUmFpc2VzOgotICAgICAgICAgICAgSW52
YWxpZEZyYW1lRXhjZXB0aW9uOiB3aGVuIHRoZSBtZXNzYWdlIGlzIGludmFsaWQuCi0gICAgICAg
ICIiIgotCi0gICAgICAgIHNlbGYuX3JlcXVlc3QuY2xpZW50X3Rlcm1pbmF0ZWQgPSBUcnVlCi0K
LSAgICAgICAgIyBTdGF0dXMgY29kZSBpcyBvcHRpb25hbC4gV2UgY2FuIGhhdmUgc3RhdHVzIHJl
YXNvbiBvbmx5IGlmIHdlCi0gICAgICAgICMgaGF2ZSBzdGF0dXMgY29kZS4gU3RhdHVzIHJlYXNv
biBjYW4gYmUgZW1wdHkgc3RyaW5nLiBTbywKLSAgICAgICAgIyBhbGxvd2VkIGNhc2VzIGFyZQot
ICAgICAgICAjIC0gbm8gYXBwbGljYXRpb24gZGF0YTogbm8gY29kZSBubyByZWFzb24KLSAgICAg
ICAgIyAtIDIgb2N0ZXQgb2YgYXBwbGljYXRpb24gZGF0YTogaGFzIGNvZGUgYnV0IG5vIHJlYXNv
bgotICAgICAgICAjIC0gMyBvciBtb3JlIG9jdGV0IG9mIGFwcGxpY2F0aW9uIGRhdGE6IGJvdGgg
Y29kZSBhbmQgcmVhc29uCi0gICAgICAgIGlmIGxlbihtZXNzYWdlKSA9PSAwOgotICAgICAgICAg
ICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdSZWNlaXZlZCBjbG9zZSBmcmFtZSAoZW1wdHkgYm9keSkn
KQotICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19jbG9zZV9jb2RlID0gKAotICAgICAgICAg
ICAgICAgIGNvbW1vbi5TVEFUVVNfTk9fU1RBVFVTX1JFQ0VJVkVEKQotICAgICAgICBlbGlmIGxl
bihtZXNzYWdlKSA9PSAxOgotICAgICAgICAgICAgcmFpc2UgSW52YWxpZEZyYW1lRXhjZXB0aW9u
KAotICAgICAgICAgICAgICAgICdJZiBhIGNsb3NlIGZyYW1lIGhhcyBzdGF0dXMgY29kZSwgdGhl
IGxlbmd0aCBvZiAnCi0gICAgICAgICAgICAgICAgJ3N0YXR1cyBjb2RlIG11c3QgYmUgMiBvY3Rl
dCcpCi0gICAgICAgIGVsaWYgbGVuKG1lc3NhZ2UpID49IDI6Ci0gICAgICAgICAgICBzZWxmLl9y
ZXF1ZXN0LndzX2Nsb3NlX2NvZGUgPSBzdHJ1Y3QudW5wYWNrKAotICAgICAgICAgICAgICAgICch
SCcsIG1lc3NhZ2VbMDoyXSlbMF0KLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfY2xvc2Vf
cmVhc29uID0gbWVzc2FnZVsyOl0uZGVjb2RlKAotICAgICAgICAgICAgICAgICd1dGYtOCcsICdy
ZXBsYWNlJykKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICAg
ICAnUmVjZWl2ZWQgY2xvc2UgZnJhbWUgKGNvZGU9JWQsIHJlYXNvbj0lciknLAotICAgICAgICAg
ICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfY2xvc2VfY29kZSwKLSAgICAgICAgICAgICAgICBzZWxm
Ll9yZXF1ZXN0LndzX2Nsb3NlX3JlYXNvbikKLQotICAgICAgICAjIEFzIHdlJ3ZlIHJlY2VpdmVk
IGEgY2xvc2UgZnJhbWUsIG5vIG1vcmUgZGF0YSBpcyBjb21pbmcgb3ZlciB0aGUKLSAgICAgICAg
IyBzb2NrZXQuIFdlIGNhbiBub3cgc2FmZWx5IGNsb3NlIHRoZSBzb2NrZXQgd2l0aG91dCB3b3Jy
eWluZyBhYm91dAotICAgICAgICAjIFJTVCBzZW5kaW5nLgotCi0gICAgICAgIGlmIHNlbGYuX3Jl
cXVlc3Quc2VydmVyX3Rlcm1pbmF0ZWQ6Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWco
Ci0gICAgICAgICAgICAgICAgJ1JlY2VpdmVkIGFjayBmb3Igc2VydmVyLWluaXRpYXRlZCBjbG9z
aW5nIGhhbmRzaGFrZScpCi0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBzZWxmLl9sb2dn
ZXIuZGVidWcoCi0gICAgICAgICAgICAnUmVjZWl2ZWQgY2xpZW50LWluaXRpYXRlZCBjbG9zaW5n
IGhhbmRzaGFrZScpCi0KLSAgICAgICAgY29kZSA9IGNvbW1vbi5TVEFUVVNfTk9STUFMX0NMT1NV
UkUKLSAgICAgICAgcmVhc29uID0gJycKLSAgICAgICAgaWYgaGFzYXR0cihzZWxmLl9yZXF1ZXN0
LCAnX2Rpc3BhdGNoZXInKToKLSAgICAgICAgICAgIGRpc3BhdGNoZXIgPSBzZWxmLl9yZXF1ZXN0
Ll9kaXNwYXRjaGVyCi0gICAgICAgICAgICBjb2RlLCByZWFzb24gPSBkaXNwYXRjaGVyLnBhc3Np
dmVfY2xvc2luZ19oYW5kc2hha2UoCi0gICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVzdCkKLSAg
ICAgICAgICAgIGlmIGNvZGUgaXMgTm9uZSBhbmQgcmVhc29uIGlzIG5vdCBOb25lIGFuZCBsZW4o
cmVhc29uKSA+IDA6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLndhcm5pbmcoCi0gICAg
ICAgICAgICAgICAgICAgICdIYW5kbGVyIHNwZWNpZmllZCByZWFzb24gZGVzcGl0ZSBjb2RlIGJl
aW5nIE5vbmUnKQotICAgICAgICAgICAgICAgIHJlYXNvbiA9ICcnCi0gICAgICAgICAgICBpZiBy
ZWFzb24gaXMgTm9uZToKLSAgICAgICAgICAgICAgICByZWFzb24gPSAnJwotICAgICAgICBzZWxm
Ll9zZW5kX2Nsb3NpbmdfaGFuZHNoYWtlKGNvZGUsIHJlYXNvbikKLSAgICAgICAgc2VsZi5fbG9n
Z2VyLmRlYnVnKAotICAgICAgICAgICAgJ0Fja25vd2xlZGdlZCBjbG9zaW5nIGhhbmRzaGFrZSBp
bml0aWF0ZWQgYnkgdGhlIHBlZXIgJwotICAgICAgICAgICAgJyhjb2RlPSVyLCByZWFzb249JXIp
JywgY29kZSwgcmVhc29uKQotCi0gICAgZGVmIF9wcm9jZXNzX3BpbmdfbWVzc2FnZShzZWxmLCBt
ZXNzYWdlKToKLSAgICAgICAgIiIiUHJvY2Vzc2VzIHBpbmcgbWVzc2FnZS4KLQotICAgICAgICBB
cmdzOgotICAgICAgICAgICAgbWVzc2FnZTogcGluZyBtZXNzYWdlLgotICAgICAgICAiIiIKLQot
ICAgICAgICB0cnk6Ci0gICAgICAgICAgICBoYW5kbGVyID0gc2VsZi5fcmVxdWVzdC5vbl9waW5n
X2hhbmRsZXIKLSAgICAgICAgICAgIGlmIGhhbmRsZXI6Ci0gICAgICAgICAgICAgICAgaGFuZGxl
cihzZWxmLl9yZXF1ZXN0LCBtZXNzYWdlKQotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAg
ICBleGNlcHQgQXR0cmlidXRlRXJyb3IsIGU6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIHNl
bGYuX3NlbmRfcG9uZyhtZXNzYWdlKQotCi0gICAgZGVmIF9wcm9jZXNzX3BvbmdfbWVzc2FnZShz
ZWxmLCBtZXNzYWdlKToKLSAgICAgICAgIiIiUHJvY2Vzc2VzIHBvbmcgbWVzc2FnZS4KLQotICAg
ICAgICBBcmdzOgotICAgICAgICAgICAgbWVzc2FnZTogcG9uZyBtZXNzYWdlLgotICAgICAgICAi
IiIKLQotICAgICAgICAjIFRPRE8odHlvc2hpbm8pOiBBZGQgcGluZyB0aW1lb3V0IGhhbmRsaW5n
LgotCi0gICAgICAgIGluZmxpZ2h0X3BpbmdzID0gZGVxdWUoKQotCi0gICAgICAgIHdoaWxlIFRy
dWU6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZXhwZWN0ZWRfYm9keSA9IHNl
bGYuX3BpbmdfcXVldWUucG9wbGVmdCgpCi0gICAgICAgICAgICAgICAgaWYgZXhwZWN0ZWRfYm9k
eSA9PSBtZXNzYWdlOgotICAgICAgICAgICAgICAgICAgICAjIGluZmxpZ2h0X3BpbmdzIGNvbnRh
aW5zIHBpbmdzIGlnbm9yZWQgYnkgdGhlCi0gICAgICAgICAgICAgICAgICAgICMgb3RoZXIgcGVl
ci4gSnVzdCBmb3JnZXQgdGhlbS4KLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRl
YnVnKAotICAgICAgICAgICAgICAgICAgICAgICAgJ1BpbmcgJXIgaXMgYWNrZWQgKCVkIHBpbmdz
IHdlcmUgaWdub3JlZCknLAotICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfYm9keSwg
bGVuKGluZmxpZ2h0X3BpbmdzKSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAg
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBpbmZsaWdodF9waW5ncy5hcHBlbmQo
ZXhwZWN0ZWRfYm9keSkKLSAgICAgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yLCBlOgotICAgICAg
ICAgICAgICAgICMgVGhlIHJlY2VpdmVkIHBvbmcgd2FzIHVuc29saWNpdGVkIHBvbmcuIEtlZXAg
dGhlCi0gICAgICAgICAgICAgICAgIyBwaW5nIHF1ZXVlIGFzIGlzLgotICAgICAgICAgICAgICAg
IHNlbGYuX3BpbmdfcXVldWUgPSBpbmZsaWdodF9waW5ncwotICAgICAgICAgICAgICAgIHNlbGYu
X2xvZ2dlci5kZWJ1ZygnUmVjZWl2ZWQgYSB1bnNvbGljaXRlZCBwb25nJykKLSAgICAgICAgICAg
ICAgICBicmVhawotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGhhbmRsZXIgPSBzZWxmLl9y
ZXF1ZXN0Lm9uX3BvbmdfaGFuZGxlcgotICAgICAgICAgICAgaWYgaGFuZGxlcjoKLSAgICAgICAg
ICAgICAgICBoYW5kbGVyKHNlbGYuX3JlcXVlc3QsIG1lc3NhZ2UpCi0gICAgICAgIGV4Y2VwdCBB
dHRyaWJ1dGVFcnJvciwgZToKLSAgICAgICAgICAgIHBhc3MKLQotICAgIGRlZiByZWNlaXZlX21l
c3NhZ2Uoc2VsZik6Ci0gICAgICAgICIiIlJlY2VpdmUgYSBXZWJTb2NrZXQgZnJhbWUgYW5kIHJl
dHVybiBpdHMgcGF5bG9hZCBhcyBhIHRleHQgaW4KLSAgICAgICAgdW5pY29kZSBvciBhIGJpbmFy
eSBpbiBzdHIuCi0KLSAgICAgICAgUmV0dXJuczoKLSAgICAgICAgICAgIHBheWxvYWQgZGF0YSBv
ZiB0aGUgZnJhbWUKLSAgICAgICAgICAgIC0gYXMgdW5pY29kZSBpbnN0YW5jZSBpZiByZWNlaXZl
ZCB0ZXh0IGZyYW1lCi0gICAgICAgICAgICAtIGFzIHN0ciBpbnN0YW5jZSBpZiByZWNlaXZlZCBi
aW5hcnkgZnJhbWUKLSAgICAgICAgICAgIG9yIE5vbmUgaWZmIHJlY2VpdmVkIGNsb3NpbmcgaGFu
ZHNoYWtlLgotICAgICAgICBSYWlzZXM6Ci0gICAgICAgICAgICBCYWRPcGVyYXRpb25FeGNlcHRp
b246IHdoZW4gY2FsbGVkIG9uIGEgY2xpZW50LXRlcm1pbmF0ZWQKLSAgICAgICAgICAgICAgICBj
b25uZWN0aW9uLgotICAgICAgICAgICAgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb246IHdo
ZW4gcmVhZCByZXR1cm5zIGVtcHR5Ci0gICAgICAgICAgICAgICAgc3RyaW5nLgotICAgICAgICAg
ICAgSW52YWxpZEZyYW1lRXhjZXB0aW9uOiB3aGVuIHRoZSBmcmFtZSBjb250YWlucyBpbnZhbGlk
Ci0gICAgICAgICAgICAgICAgZGF0YS4KLSAgICAgICAgICAgIFVuc3VwcG9ydGVkRnJhbWVFeGNl
cHRpb246IHdoZW4gdGhlIHJlY2VpdmVkIGZyYW1lIGhhcwotICAgICAgICAgICAgICAgIGZsYWdz
LCBvcGNvZGUgd2UgY2Fubm90IGhhbmRsZS4gWW91IGNhbiBpZ25vcmUgdGhpcwotICAgICAgICAg
ICAgICAgIGV4Y2VwdGlvbiBhbmQgY29udGludWUgcmVjZWl2aW5nIHRoZSBuZXh0IGZyYW1lLgot
ICAgICAgICAiIiIKLQotICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0LmNsaWVudF90ZXJtaW5hdGVk
OgotICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0aW9uKAotICAgICAgICAgICAg
ICAgICdSZXF1ZXN0ZWQgcmVjZWl2ZV9tZXNzYWdlIGFmdGVyIHJlY2VpdmluZyBhIGNsb3Npbmcg
JwotICAgICAgICAgICAgICAgICdoYW5kc2hha2UnKQotCi0gICAgICAgIHdoaWxlIFRydWU6Ci0g
ICAgICAgICAgICAjIG1wX2Nvbm4ucmVhZCB3aWxsIGJsb2NrIGlmIG5vIGJ5dGVzIGFyZSBhdmFp
bGFibGUuCi0gICAgICAgICAgICAjIFRpbWVvdXQgaXMgY29udHJvbGxlZCBieSBUaW1lT3V0IGRp
cmVjdGl2ZSBvZiBBcGFjaGUuCi0KLSAgICAgICAgICAgIGZyYW1lID0gc2VsZi5fcmVjZWl2ZV9m
cmFtZV9hc19mcmFtZV9vYmplY3QoKQotCi0gICAgICAgICAgICAjIENoZWNrIHRoZSBjb25zdHJh
aW50IG9uIHRoZSBwYXlsb2FkIHNpemUgZm9yIGNvbnRyb2wgZnJhbWVzCi0gICAgICAgICAgICAj
IGJlZm9yZSBleHRlbnNpb24gcHJvY2Vzc2VzIHRoZSBmcmFtZS4KLSAgICAgICAgICAgICMgU2Vl
IGFsc28gaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjQ1NSNzZWN0aW9uLTUuNQotICAg
ICAgICAgICAgaWYgKGNvbW1vbi5pc19jb250cm9sX29wY29kZShmcmFtZS5vcGNvZGUpIGFuZAot
ICAgICAgICAgICAgICAgIGxlbihmcmFtZS5wYXlsb2FkKSA+IDEyNSk6Ci0gICAgICAgICAgICAg
ICAgcmFpc2UgSW52YWxpZEZyYW1lRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICAgICAnUGF5
bG9hZCBkYXRhIHNpemUgb2YgY29udHJvbCBmcmFtZXMgbXVzdCBiZSAxMjUgYnl0ZXMgb3IgJwot
ICAgICAgICAgICAgICAgICAgICAnbGVzcycpCi0KLSAgICAgICAgICAgIGZvciBmcmFtZV9maWx0
ZXIgaW4gc2VsZi5fb3B0aW9ucy5pbmNvbWluZ19mcmFtZV9maWx0ZXJzOgotICAgICAgICAgICAg
ICAgIGZyYW1lX2ZpbHRlci5maWx0ZXIoZnJhbWUpCi0KLSAgICAgICAgICAgIGlmIGZyYW1lLnJz
djEgb3IgZnJhbWUucnN2MiBvciBmcmFtZS5yc3YzOgotICAgICAgICAgICAgICAgIHJhaXNlIFVu
c3VwcG9ydGVkRnJhbWVFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICAgICdVbnN1cHBvcnRl
ZCBmbGFnIGlzIHNldCAocnN2ID0gJWQlZCVkKScgJQotICAgICAgICAgICAgICAgICAgICAoZnJh
bWUucnN2MSwgZnJhbWUucnN2MiwgZnJhbWUucnN2MykpCi0KLSAgICAgICAgICAgIG1lc3NhZ2Ug
PSBzZWxmLl9nZXRfbWVzc2FnZV9mcm9tX2ZyYW1lKGZyYW1lKQotICAgICAgICAgICAgaWYgbWVz
c2FnZSBpcyBOb25lOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgIGZv
ciBtZXNzYWdlX2ZpbHRlciBpbiBzZWxmLl9vcHRpb25zLmluY29taW5nX21lc3NhZ2VfZmlsdGVy
czoKLSAgICAgICAgICAgICAgICBtZXNzYWdlID0gbWVzc2FnZV9maWx0ZXIuZmlsdGVyKG1lc3Nh
Z2UpCi0KLSAgICAgICAgICAgIGlmIHNlbGYuX29yaWdpbmFsX29wY29kZSA9PSBjb21tb24uT1BD
T0RFX1RFWFQ6Ci0gICAgICAgICAgICAgICAgIyBUaGUgV2ViU29ja2V0IHByb3RvY29sIHNlY3Rp
b24gNC40IHNwZWNpZmllcyB0aGF0IGludmFsaWQKLSAgICAgICAgICAgICAgICAjIGNoYXJhY3Rl
cnMgbXVzdCBiZSByZXBsYWNlZCB3aXRoIFUrZmZmZCBSRVBMQUNFTUVOVAotICAgICAgICAgICAg
ICAgICMgQ0hBUkFDVEVSLgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG1lc3NhZ2UuZGVjb2RlKCd1dGYtOCcpCi0gICAgICAgICAgICAgICAgZXhjZXB0
IFVuaWNvZGVEZWNvZGVFcnJvciwgZToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW52YWxp
ZFVURjhFeGNlcHRpb24oZSkKLSAgICAgICAgICAgIGVsaWYgc2VsZi5fb3JpZ2luYWxfb3Bjb2Rl
ID09IGNvbW1vbi5PUENPREVfQklOQVJZOgotICAgICAgICAgICAgICAgIHJldHVybiBtZXNzYWdl
Ci0gICAgICAgICAgICBlbGlmIHNlbGYuX29yaWdpbmFsX29wY29kZSA9PSBjb21tb24uT1BDT0RF
X0NMT1NFOgotICAgICAgICAgICAgICAgIHNlbGYuX3Byb2Nlc3NfY2xvc2VfbWVzc2FnZShtZXNz
YWdlKQotICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgICAgICBlbGlmIHNlbGYu
X29yaWdpbmFsX29wY29kZSA9PSBjb21tb24uT1BDT0RFX1BJTkc6Ci0gICAgICAgICAgICAgICAg
c2VsZi5fcHJvY2Vzc19waW5nX21lc3NhZ2UobWVzc2FnZSkKLSAgICAgICAgICAgIGVsaWYgc2Vs
Zi5fb3JpZ2luYWxfb3Bjb2RlID09IGNvbW1vbi5PUENPREVfUE9ORzoKLSAgICAgICAgICAgICAg
ICBzZWxmLl9wcm9jZXNzX3BvbmdfbWVzc2FnZShtZXNzYWdlKQotICAgICAgICAgICAgZWxzZToK
LSAgICAgICAgICAgICAgICByYWlzZSBVbnN1cHBvcnRlZEZyYW1lRXhjZXB0aW9uKAotICAgICAg
ICAgICAgICAgICAgICAnT3Bjb2RlICVkIGlzIG5vdCBzdXBwb3J0ZWQnICUgc2VsZi5fb3JpZ2lu
YWxfb3Bjb2RlKQotCi0gICAgZGVmIF9zZW5kX2Nsb3NpbmdfaGFuZHNoYWtlKHNlbGYsIGNvZGUs
IHJlYXNvbik6Ci0gICAgICAgIGJvZHkgPSBjcmVhdGVfY2xvc2luZ19oYW5kc2hha2VfYm9keShj
b2RlLCByZWFzb24pCi0gICAgICAgIGZyYW1lID0gY3JlYXRlX2Nsb3NlX2ZyYW1lKAotICAgICAg
ICAgICAgYm9keSwgbWFzaz1zZWxmLl9vcHRpb25zLm1hc2tfc2VuZCwKLSAgICAgICAgICAgIGZy
YW1lX2ZpbHRlcnM9c2VsZi5fb3B0aW9ucy5vdXRnb2luZ19mcmFtZV9maWx0ZXJzKQotCi0gICAg
ICAgIHNlbGYuX3JlcXVlc3Quc2VydmVyX3Rlcm1pbmF0ZWQgPSBUcnVlCi0KLSAgICAgICAgc2Vs
Zi5fd3JpdGUoZnJhbWUpCi0KLSAgICBkZWYgY2xvc2VfY29ubmVjdGlvbihzZWxmLCBjb2RlPWNv
bW1vbi5TVEFUVVNfTk9STUFMX0NMT1NVUkUsIHJlYXNvbj0nJywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICB3YWl0X3Jlc3BvbnNlPVRydWUpOgotICAgICAgICAiIiJDbG9zZXMgYSBXZWJTb2Nr
ZXQgY29ubmVjdGlvbi4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgY29kZTogU3RhdHVz
IGNvZGUgZm9yIGNsb3NlIGZyYW1lLiBJZiBjb2RlIGlzIE5vbmUsIGEgY2xvc2UKLSAgICAgICAg
ICAgICAgICBmcmFtZSB3aXRoIGVtcHR5IGJvZHkgd2lsbCBiZSBzZW50LgotICAgICAgICAgICAg
cmVhc29uOiBzdHJpbmcgcmVwcmVzZW50aW5nIGNsb3NlIHJlYXNvbi4KLSAgICAgICAgICAgIHdh
aXRfcmVzcG9uc2U6IFRydWUgd2hlbiBjYWxsZXIgd2FudCB0byB3YWl0IHRoZSByZXNwb25zZS4K
LSAgICAgICAgUmFpc2VzOgotICAgICAgICAgICAgQmFkT3BlcmF0aW9uRXhjZXB0aW9uOiB3aGVu
IHJlYXNvbiBpcyBzcGVjaWZpZWQgd2l0aCBjb2RlIE5vbmUKLSAgICAgICAgICAgIG9yIHJlYXNv
biBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgYm90aCBzdHIgYW5kIHVuaWNvZGUuCi0gICAgICAgICIi
IgotCi0gICAgICAgIGlmIHNlbGYuX3JlcXVlc3Quc2VydmVyX3Rlcm1pbmF0ZWQ6Ci0gICAgICAg
ICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAgICAgJ1JlcXVlc3RlZCBjbG9z
ZV9jb25uZWN0aW9uIGJ1dCBzZXJ2ZXIgaXMgYWxyZWFkeSB0ZXJtaW5hdGVkJykKLSAgICAgICAg
ICAgIHJldHVybgotCi0gICAgICAgIGlmIGNvZGUgaXMgTm9uZToKLSAgICAgICAgICAgIGlmIHJl
YXNvbiBpcyBub3QgTm9uZSBhbmQgbGVuKHJlYXNvbikgPiAwOgotICAgICAgICAgICAgICAgIHJh
aXNlIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgJ2Nsb3NlIHJl
YXNvbiBtdXN0IG5vdCBiZSBzcGVjaWZpZWQgaWYgY29kZSBpcyBOb25lJykKLSAgICAgICAgICAg
IHJlYXNvbiA9ICcnCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5j
ZShyZWFzb24sIHN0cikgYW5kIG5vdCBpc2luc3RhbmNlKHJlYXNvbiwgdW5pY29kZSk6Ci0gICAg
ICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0aW9uKAotICAgICAgICAgICAgICAg
ICAgICAnY2xvc2UgcmVhc29uIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2Ygc3RyIG9yIHVuaWNvZGUn
KQotCi0gICAgICAgIHNlbGYuX3NlbmRfY2xvc2luZ19oYW5kc2hha2UoY29kZSwgcmVhc29uKQot
ICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAnSW5pdGlhdGVkIGNsb3Np
bmcgaGFuZHNoYWtlIChjb2RlPSVyLCByZWFzb249JXIpJywKLSAgICAgICAgICAgIGNvZGUsIHJl
YXNvbikKLQotICAgICAgICBpZiAoY29kZSA9PSBjb21tb24uU1RBVFVTX0dPSU5HX0FXQVkgb3IK
LSAgICAgICAgICAgIGNvZGUgPT0gY29tbW9uLlNUQVRVU19QUk9UT0NPTF9FUlJPUikgb3Igbm90
IHdhaXRfcmVzcG9uc2U6Ci0gICAgICAgICAgICAjIEl0IGRvZXNuJ3QgbWFrZSBzZW5zZSB0byB3
YWl0IGZvciBhIGNsb3NlIGZyYW1lIGlmIHRoZSByZWFzb24gaXMKLSAgICAgICAgICAgICMgcHJv
dG9jb2wgZXJyb3Igb3IgdGhhdCB0aGUgc2VydmVyIGlzIGdvaW5nIGF3YXkuIEZvciBzb21lIG9m
Ci0gICAgICAgICAgICAjIG90aGVyIHJlYXNvbnMsIGl0IG1pZ2h0IG5vdCBtYWtlIHNlbnNlIHRv
IHdhaXQgZm9yIGEgY2xvc2UgZnJhbWUsCi0gICAgICAgICAgICAjIGJ1dCBpdCdzIG5vdCBjbGVh
ciwgeWV0LgotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgIyBUT0RPKHVrYWkpOiAyLiB3
YWl0IHVudGlsIHRoZSAvY2xpZW50IHRlcm1pbmF0ZWQvIGZsYWcgaGFzIGJlZW4gc2V0LAotICAg
ICAgICAjIG9yIHVudGlsIGEgc2VydmVyLWRlZmluZWQgdGltZW91dCBleHBpcmVzLgotICAgICAg
ICAjCi0gICAgICAgICMgRm9yIG5vdywgd2UgZXhwZWN0IHJlY2VpdmluZyBjbG9zaW5nIGhhbmRz
aGFrZSByaWdodCBhZnRlciBzZW5kaW5nCi0gICAgICAgICMgb3V0IGNsb3NpbmcgaGFuZHNoYWtl
LgotICAgICAgICBtZXNzYWdlID0gc2VsZi5yZWNlaXZlX21lc3NhZ2UoKQotICAgICAgICBpZiBt
ZXNzYWdlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcmFpc2UgQ29ubmVjdGlvblRlcm1pbmF0
ZWRFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ0RpZG5cJ3QgcmVjZWl2ZSB2YWxpZCBhY2sg
Zm9yIGNsb3NpbmcgaGFuZHNoYWtlJykKLSAgICAgICAgIyBUT0RPOiAzLiBjbG9zZSB0aGUgV2Vi
U29ja2V0IGNvbm5lY3Rpb24uCi0gICAgICAgICMgbm90ZTogbW9kX3B5dGhvbiBDb25uZWN0aW9u
IChtcF9jb25uKSBkb2Vzbid0IGhhdmUgY2xvc2UgbWV0aG9kLgotCi0gICAgZGVmIHNlbmRfcGlu
ZyhzZWxmLCBib2R5PScnKToKLSAgICAgICAgZnJhbWUgPSBjcmVhdGVfcGluZ19mcmFtZSgKLSAg
ICAgICAgICAgIGJvZHksCi0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLm1hc2tfc2VuZCwKLSAg
ICAgICAgICAgIHNlbGYuX29wdGlvbnMub3V0Z29pbmdfZnJhbWVfZmlsdGVycykKLSAgICAgICAg
c2VsZi5fd3JpdGUoZnJhbWUpCi0KLSAgICAgICAgc2VsZi5fcGluZ19xdWV1ZS5hcHBlbmQoYm9k
eSkKLQotICAgIGRlZiBfc2VuZF9wb25nKHNlbGYsIGJvZHkpOgotICAgICAgICBmcmFtZSA9IGNy
ZWF0ZV9wb25nX2ZyYW1lKAotICAgICAgICAgICAgYm9keSwKLSAgICAgICAgICAgIHNlbGYuX29w
dGlvbnMubWFza19zZW5kLAotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5vdXRnb2luZ19mcmFt
ZV9maWx0ZXJzKQotICAgICAgICBzZWxmLl93cml0ZShmcmFtZSkKLQotICAgIGRlZiBnZXRfbGFz
dF9yZWNlaXZlZF9vcGNvZGUoc2VsZik6Ci0gICAgICAgICIiIlJldHVybnMgdGhlIG9wY29kZSBv
ZiB0aGUgV2ViU29ja2V0IG1lc3NhZ2Ugd2hpY2ggdGhlIGxhc3QgcmVjZWl2ZWQKLSAgICAgICAg
ZnJhbWUgYmVsb25ncyB0by4gVGhlIHJldHVybiB2YWx1ZSBpcyB2YWxpZCBpZmYgaW1tZWRpYXRl
bHkgYWZ0ZXIKLSAgICAgICAgcmVjZWl2ZV9tZXNzYWdlIGNhbGwuCi0gICAgICAgICIiIgotCi0g
ICAgICAgIHJldHVybiBzZWxmLl9vcmlnaW5hbF9vcGNvZGUKLQotCi0jIHZpOnN0cz00IHN3PTQg
ZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC9jb21tb24ucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0
L3NyYy9tb2RfcHl3ZWJzb2NrZXQvY29tbW9uLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAyZmMyZWFkNjQ4MWJlNTdiN2FlNGM2NjhjMjJlY2IxZWM0YmJjYjJiLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNv
Y2tldC9jb21tb24ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzMDMgKzAsMCBAQAotIyBDb3B5cmln
aHQgMjAxMiwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0j
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0KLQotIiIiVGhpcyBmaWxlIG11c3Qgbm90IGRlcGVuZCBvbiBhbnkgbW9kdWxlIHNw
ZWNpZmljIHRvIHRoZSBXZWJTb2NrZXQgcHJvdG9jb2wuCi0iIiIKLQotCi1mcm9tIG1vZF9weXdl
YnNvY2tldCBpbXBvcnQgaHR0cF9oZWFkZXJfdXRpbAotCi0KLSMgQWRkaXRpb25hbCBsb2cgbGV2
ZWwgZGVmaW5pdGlvbnMuCi1MT0dMRVZFTF9GSU5FID0gOQotCi0jIENvbnN0YW50cyBpbmRpY2F0
aW5nIFdlYlNvY2tldCBwcm90b2NvbCB2ZXJzaW9uLgotVkVSU0lPTl9ISVhJRTc1ID0gLTEKLVZF
UlNJT05fSFlCSTAwID0gMAotVkVSU0lPTl9IWUJJMDEgPSAxCi1WRVJTSU9OX0hZQkkwMiA9IDIK
LVZFUlNJT05fSFlCSTAzID0gMgotVkVSU0lPTl9IWUJJMDQgPSA0Ci1WRVJTSU9OX0hZQkkwNSA9
IDUKLVZFUlNJT05fSFlCSTA2ID0gNgotVkVSU0lPTl9IWUJJMDcgPSA3Ci1WRVJTSU9OX0hZQkkw
OCA9IDgKLVZFUlNJT05fSFlCSTA5ID0gOAotVkVSU0lPTl9IWUJJMTAgPSA4Ci1WRVJTSU9OX0hZ
QkkxMSA9IDgKLVZFUlNJT05fSFlCSTEyID0gOAotVkVSU0lPTl9IWUJJMTMgPSAxMwotVkVSU0lP
Tl9IWUJJMTQgPSAxMwotVkVSU0lPTl9IWUJJMTUgPSAxMwotVkVSU0lPTl9IWUJJMTYgPSAxMwot
VkVSU0lPTl9IWUJJMTcgPSAxMwotCi0jIENvbnN0YW50cyBpbmRpY2F0aW5nIFdlYlNvY2tldCBw
cm90b2NvbCBsYXRlc3QgdmVyc2lvbi4KLVZFUlNJT05fSFlCSV9MQVRFU1QgPSBWRVJTSU9OX0hZ
QkkxMwotCi0jIFBvcnQgbnVtYmVycwotREVGQVVMVF9XRUJfU09DS0VUX1BPUlQgPSA4MAotREVG
QVVMVF9XRUJfU09DS0VUX1NFQ1VSRV9QT1JUID0gNDQzCi0KLSMgU2NoZW1lcwotV0VCX1NPQ0tF
VF9TQ0hFTUUgPSAnd3MnCi1XRUJfU09DS0VUX1NFQ1VSRV9TQ0hFTUUgPSAnd3NzJwotCi0jIEZy
YW1lIG9wY29kZXMgZGVmaW5lZCBpbiB0aGUgc3BlYy4KLU9QQ09ERV9DT05USU5VQVRJT04gPSAw
eDAKLU9QQ09ERV9URVhUID0gMHgxCi1PUENPREVfQklOQVJZID0gMHgyCi1PUENPREVfQ0xPU0Ug
PSAweDgKLU9QQ09ERV9QSU5HID0gMHg5Ci1PUENPREVfUE9ORyA9IDB4YQotCi0jIFVVSURzIHVz
ZWQgYnkgSHlCaSAwNCBhbmQgbGF0ZXIgb3BlbmluZyBoYW5kc2hha2UgYW5kIGZyYW1lIG1hc2tp
bmcuCi1XRUJTT0NLRVRfQUNDRVBUX1VVSUQgPSAnMjU4RUFGQTUtRTkxNC00N0RBLTk1Q0EtQzVB
QjBEQzg1QjExJwotCi0jIE9wZW5pbmcgaGFuZHNoYWtlIGhlYWRlciBuYW1lcyBhbmQgZXhwZWN0
ZWQgdmFsdWVzLgotVVBHUkFERV9IRUFERVIgPSAnVXBncmFkZScKLVdFQlNPQ0tFVF9VUEdSQURF
X1RZUEUgPSAnd2Vic29ja2V0JwotV0VCU09DS0VUX1VQR1JBREVfVFlQRV9ISVhJRTc1ID0gJ1dl
YlNvY2tldCcKLUNPTk5FQ1RJT05fSEVBREVSID0gJ0Nvbm5lY3Rpb24nCi1VUEdSQURFX0NPTk5F
Q1RJT05fVFlQRSA9ICdVcGdyYWRlJwotSE9TVF9IRUFERVIgPSAnSG9zdCcKLU9SSUdJTl9IRUFE
RVIgPSAnT3JpZ2luJwotU0VDX1dFQlNPQ0tFVF9PUklHSU5fSEVBREVSID0gJ1NlYy1XZWJTb2Nr
ZXQtT3JpZ2luJwotU0VDX1dFQlNPQ0tFVF9LRVlfSEVBREVSID0gJ1NlYy1XZWJTb2NrZXQtS2V5
JwotU0VDX1dFQlNPQ0tFVF9BQ0NFUFRfSEVBREVSID0gJ1NlYy1XZWJTb2NrZXQtQWNjZXB0Jwot
U0VDX1dFQlNPQ0tFVF9WRVJTSU9OX0hFQURFUiA9ICdTZWMtV2ViU29ja2V0LVZlcnNpb24nCi1T
RUNfV0VCU09DS0VUX1BST1RPQ09MX0hFQURFUiA9ICdTZWMtV2ViU29ja2V0LVByb3RvY29sJwot
U0VDX1dFQlNPQ0tFVF9FWFRFTlNJT05TX0hFQURFUiA9ICdTZWMtV2ViU29ja2V0LUV4dGVuc2lv
bnMnCi1TRUNfV0VCU09DS0VUX0RSQUZUX0hFQURFUiA9ICdTZWMtV2ViU29ja2V0LURyYWZ0Jwot
U0VDX1dFQlNPQ0tFVF9LRVkxX0hFQURFUiA9ICdTZWMtV2ViU29ja2V0LUtleTEnCi1TRUNfV0VC
U09DS0VUX0tFWTJfSEVBREVSID0gJ1NlYy1XZWJTb2NrZXQtS2V5MicKLVNFQ19XRUJTT0NLRVRf
TE9DQVRJT05fSEVBREVSID0gJ1NlYy1XZWJTb2NrZXQtTG9jYXRpb24nCi0KLSMgRXh0ZW5zaW9u
cwotREVGTEFURV9GUkFNRV9FWFRFTlNJT04gPSAnZGVmbGF0ZS1mcmFtZScKLVBFUk1FU1NBR0Vf
Q09NUFJFU1NJT05fRVhURU5TSU9OID0gJ3Blcm1lc3NhZ2UtY29tcHJlc3MnCi1QRVJNRVNTQUdF
X0RFRkxBVEVfRVhURU5TSU9OID0gJ3Blcm1lc3NhZ2UtZGVmbGF0ZScKLVhfV0VCS0lUX0RFRkxB
VEVfRlJBTUVfRVhURU5TSU9OID0gJ3gtd2Via2l0LWRlZmxhdGUtZnJhbWUnCi1YX1dFQktJVF9Q
RVJNRVNTQUdFX0NPTVBSRVNTSU9OX0VYVEVOU0lPTiA9ICd4LXdlYmtpdC1wZXJtZXNzYWdlLWNv
bXByZXNzJwotTVVYX0VYVEVOU0lPTiA9ICdtdXhfRE9fTk9UX1VTRScKLQotIyBTdGF0dXMgY29k
ZXMKLSMgQ29kZSBTVEFUVVNfTk9fU1RBVFVTX1JFQ0VJVkVELCBTVEFUVVNfQUJOT1JNQUxfQ0xP
U1VSRSwgYW5kCi0jIFNUQVRVU19UTFNfSEFORFNIQUtFIGFyZSBwc2V1ZG8gY29kZXMgdG8gaW5k
aWNhdGUgc3BlY2lmaWMgZXJyb3IgY2FzZXMuCi0jIENvdWxkIG5vdCBiZSB1c2VkIGZvciBjb2Rl
cyBpbiBhY3R1YWwgY2xvc2luZyBmcmFtZXMuCi0jIEFwcGxpY2F0aW9uIGxldmVsIGVycm9ycyBt
dXN0IHVzZSBjb2RlcyBpbiB0aGUgcmFuZ2UKLSMgU1RBVFVTX1VTRVJfUkVHSVNURVJFRF9CQVNF
IHRvIFNUQVRVU19VU0VSX1BSSVZBVEVfTUFYLiBUaGUgY29kZXMgaW4gdGhlCi0jIHJhbmdlIFNU
QVRVU19VU0VSX1JFR0lTVEVSRURfQkFTRSB0byBTVEFUVVNfVVNFUl9SRUdJU1RFUkVEX01BWCBh
cmUgbWFuYWdlZAotIyBieSBJQU5BLiBVc3VhbGx5IGFwcGxpY2F0aW9uIG11c3QgZGVmaW5lIHVz
ZXIgcHJvdG9jb2wgbGV2ZWwgZXJyb3JzIGluIHRoZQotIyByYW5nZSBTVEFUVVNfVVNFUl9QUklW
QVRFX0JBU0UgdG8gU1RBVFVTX1VTRVJfUFJJVkFURV9NQVguCi1TVEFUVVNfTk9STUFMX0NMT1NV
UkUgPSAxMDAwCi1TVEFUVVNfR09JTkdfQVdBWSA9IDEwMDEKLVNUQVRVU19QUk9UT0NPTF9FUlJP
UiA9IDEwMDIKLVNUQVRVU19VTlNVUFBPUlRFRF9EQVRBID0gMTAwMwotU1RBVFVTX05PX1NUQVRV
U19SRUNFSVZFRCA9IDEwMDUKLVNUQVRVU19BQk5PUk1BTF9DTE9TVVJFID0gMTAwNgotU1RBVFVT
X0lOVkFMSURfRlJBTUVfUEFZTE9BRF9EQVRBID0gMTAwNwotU1RBVFVTX1BPTElDWV9WSU9MQVRJ
T04gPSAxMDA4Ci1TVEFUVVNfTUVTU0FHRV9UT09fQklHID0gMTAwOQotU1RBVFVTX01BTkRBVE9S
WV9FWFRFTlNJT04gPSAxMDEwCi1TVEFUVVNfSU5URVJOQUxfRU5EUE9JTlRfRVJST1IgPSAxMDEx
Ci1TVEFUVVNfVExTX0hBTkRTSEFLRSA9IDEwMTUKLVNUQVRVU19VU0VSX1JFR0lTVEVSRURfQkFT
RSA9IDMwMDAKLVNUQVRVU19VU0VSX1JFR0lTVEVSRURfTUFYID0gMzk5OQotU1RBVFVTX1VTRVJf
UFJJVkFURV9CQVNFID0gNDAwMAotU1RBVFVTX1VTRVJfUFJJVkFURV9NQVggPSA0OTk5Ci0jIEZv
bGxvd2luZyBkZWZpbml0aW9ucyBhcmUgYWxpYXNlcyB0byBrZWVwIGNvbXBhdGliaWxpdHkuIEFw
cGxpY2F0aW9ucyBtdXN0Ci0jIG5vdCB1c2UgdGhlc2Ugb2Jzb2xldGVkIGRlZmluaXRpb25zIGFu
eW1vcmUuCi1TVEFUVVNfTk9STUFMID0gU1RBVFVTX05PUk1BTF9DTE9TVVJFCi1TVEFUVVNfVU5T
VVBQT1JURUQgPSBTVEFUVVNfVU5TVVBQT1JURURfREFUQQotU1RBVFVTX0NPREVfTk9UX0FWQUlM
QUJMRSA9IFNUQVRVU19OT19TVEFUVVNfUkVDRUlWRUQKLVNUQVRVU19BQk5PUk1BTF9DTE9TRSA9
IFNUQVRVU19BQk5PUk1BTF9DTE9TVVJFCi1TVEFUVVNfSU5WQUxJRF9GUkFNRV9QQVlMT0FEID0g
U1RBVFVTX0lOVkFMSURfRlJBTUVfUEFZTE9BRF9EQVRBCi1TVEFUVVNfTUFOREFUT1JZX0VYVCA9
IFNUQVRVU19NQU5EQVRPUllfRVhURU5TSU9OCi0KLSMgSFRUUCBzdGF0dXMgY29kZXMKLUhUVFBf
U1RBVFVTX0JBRF9SRVFVRVNUID0gNDAwCi1IVFRQX1NUQVRVU19GT1JCSURERU4gPSA0MDMKLUhU
VFBfU1RBVFVTX05PVF9GT1VORCA9IDQwNAotCi0KLWRlZiBpc19jb250cm9sX29wY29kZShvcGNv
ZGUpOgotICAgIHJldHVybiAob3Bjb2RlID4+IDMpID09IDEKLQotCi1jbGFzcyBFeHRlbnNpb25Q
YXJhbWV0ZXIob2JqZWN0KToKLSAgICAiIiJIb2xkcyBpbmZvcm1hdGlvbiBhYm91dCBhbiBleHRl
bnNpb24gd2hpY2ggaXMgZXhjaGFuZ2VkIG9uIGV4dGVuc2lvbgotICAgIG5lZ290aWF0aW9uIGlu
IG9wZW5pbmcgaGFuZHNoYWtlLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5h
bWUpOgotICAgICAgICBzZWxmLl9uYW1lID0gbmFtZQotICAgICAgICAjIFRPRE8odHlvc2hpbm8p
OiBDaGFuZ2UgdGhlIGRhdGEgc3RydWN0dXJlIHRvIG1vcmUgZWZmaWNpZW50IG9uZSBzdWNoCi0g
ICAgICAgICMgYXMgZGljdCB3aGVuIHRoZSBzcGVjIGNoYW5nZXMgdG8gc2F5IGxpa2UKLSAgICAg
ICAgIyAtIFBhcmFtZXRlciBuYW1lcyBtdXN0IGJlIHVuaXF1ZQotICAgICAgICAjIC0gVGhlIG9y
ZGVyIG9mIHBhcmFtZXRlcnMgaXMgbm90IHNpZ25pZmljYW50Ci0gICAgICAgIHNlbGYuX3BhcmFt
ZXRlcnMgPSBbXQotCi0gICAgZGVmIG5hbWUoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9u
YW1lCi0KLSAgICBkZWYgYWRkX3BhcmFtZXRlcihzZWxmLCBuYW1lLCB2YWx1ZSk6Ci0gICAgICAg
IHNlbGYuX3BhcmFtZXRlcnMuYXBwZW5kKChuYW1lLCB2YWx1ZSkpCi0KLSAgICBkZWYgZ2V0X3Bh
cmFtZXRlcnMoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9wYXJhbWV0ZXJzCi0KLSAgICBk
ZWYgZ2V0X3BhcmFtZXRlcl9uYW1lcyhzZWxmKToKLSAgICAgICAgcmV0dXJuIFtuYW1lIGZvciBu
YW1lLCB1bnVzZWRfdmFsdWUgaW4gc2VsZi5fcGFyYW1ldGVyc10KLQotICAgIGRlZiBoYXNfcGFy
YW1ldGVyKHNlbGYsIG5hbWUpOgotICAgICAgICBmb3IgcGFyYW1fbmFtZSwgcGFyYW1fdmFsdWUg
aW4gc2VsZi5fcGFyYW1ldGVyczoKLSAgICAgICAgICAgIGlmIHBhcmFtX25hbWUgPT0gbmFtZToK
LSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAg
IGRlZiBnZXRfcGFyYW1ldGVyX3ZhbHVlKHNlbGYsIG5hbWUpOgotICAgICAgICBmb3IgcGFyYW1f
bmFtZSwgcGFyYW1fdmFsdWUgaW4gc2VsZi5fcGFyYW1ldGVyczoKLSAgICAgICAgICAgIGlmIHBh
cmFtX25hbWUgPT0gbmFtZToKLSAgICAgICAgICAgICAgICByZXR1cm4gcGFyYW1fdmFsdWUKLQot
Ci1jbGFzcyBFeHRlbnNpb25QYXJzaW5nRXhjZXB0aW9uKEV4Y2VwdGlvbik6Ci0gICAgZGVmIF9f
aW5pdF9fKHNlbGYsIG5hbWUpOgotICAgICAgICBzdXBlcihFeHRlbnNpb25QYXJzaW5nRXhjZXB0
aW9uLCBzZWxmKS5fX2luaXRfXyhuYW1lKQotCi0KLWRlZiBfcGFyc2VfZXh0ZW5zaW9uX3BhcmFt
KHN0YXRlLCBkZWZpbml0aW9uKToKLSAgICBwYXJhbV9uYW1lID0gaHR0cF9oZWFkZXJfdXRpbC5j
b25zdW1lX3Rva2VuKHN0YXRlKQotCi0gICAgaWYgcGFyYW1fbmFtZSBpcyBOb25lOgotICAgICAg
ICByYWlzZSBFeHRlbnNpb25QYXJzaW5nRXhjZXB0aW9uKCdObyB2YWxpZCBwYXJhbWV0ZXIgbmFt
ZSBmb3VuZCcpCi0KLSAgICBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfbHdzZXMoc3RhdGUpCi0K
LSAgICBpZiBub3QgaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX3N0cmluZyhzdGF0ZSwgJz0nKToK
LSAgICAgICAgZGVmaW5pdGlvbi5hZGRfcGFyYW1ldGVyKHBhcmFtX25hbWUsIE5vbmUpCi0gICAg
ICAgIHJldHVybgotCi0gICAgaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX2x3c2VzKHN0YXRlKQot
Ci0gICAgIyBUT0RPKHR5b3NoaW5vKTogQWRkIGNvZGUgdG8gdmFsaWRhdGUgdGhhdCBwYXJzZWQg
cGFyYW1fdmFsdWUgaXMgdG9rZW4KLSAgICBwYXJhbV92YWx1ZSA9IGh0dHBfaGVhZGVyX3V0aWwu
Y29uc3VtZV90b2tlbl9vcl9xdW90ZWRfc3RyaW5nKHN0YXRlKQotICAgIGlmIHBhcmFtX3ZhbHVl
IGlzIE5vbmU6Ci0gICAgICAgIHJhaXNlIEV4dGVuc2lvblBhcnNpbmdFeGNlcHRpb24oCi0gICAg
ICAgICAgICAnTm8gdmFsaWQgcGFyYW1ldGVyIHZhbHVlIGZvdW5kIG9uIHRoZSByaWdodC1oYW5k
IHNpZGUgb2YgJwotICAgICAgICAgICAgJ3BhcmFtZXRlciAlcicgJSBwYXJhbV9uYW1lKQotCi0g
ICAgZGVmaW5pdGlvbi5hZGRfcGFyYW1ldGVyKHBhcmFtX25hbWUsIHBhcmFtX3ZhbHVlKQotCi0K
LWRlZiBfcGFyc2VfZXh0ZW5zaW9uKHN0YXRlKToKLSAgICBleHRlbnNpb25fdG9rZW4gPSBodHRw
X2hlYWRlcl91dGlsLmNvbnN1bWVfdG9rZW4oc3RhdGUpCi0gICAgaWYgZXh0ZW5zaW9uX3Rva2Vu
IGlzIE5vbmU6Ci0gICAgICAgIHJldHVybiBOb25lCi0KLSAgICBleHRlbnNpb24gPSBFeHRlbnNp
b25QYXJhbWV0ZXIoZXh0ZW5zaW9uX3Rva2VuKQotCi0gICAgd2hpbGUgVHJ1ZToKLSAgICAgICAg
aHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX2x3c2VzKHN0YXRlKQotCi0gICAgICAgIGlmIG5vdCBo
dHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfc3RyaW5nKHN0YXRlLCAnOycpOgotICAgICAgICAgICAg
YnJlYWsKLQotICAgICAgICBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfbHdzZXMoc3RhdGUpCi0K
LSAgICAgICAgdHJ5OgotICAgICAgICAgICAgX3BhcnNlX2V4dGVuc2lvbl9wYXJhbShzdGF0ZSwg
ZXh0ZW5zaW9uKQotICAgICAgICBleGNlcHQgRXh0ZW5zaW9uUGFyc2luZ0V4Y2VwdGlvbiwgZToK
LSAgICAgICAgICAgIHJhaXNlIEV4dGVuc2lvblBhcnNpbmdFeGNlcHRpb24oCi0gICAgICAgICAg
ICAgICAgJ0ZhaWxlZCB0byBwYXJzZSBwYXJhbWV0ZXIgZm9yICVyICglciknICUKLSAgICAgICAg
ICAgICAgICAoZXh0ZW5zaW9uX3Rva2VuLCBlKSkKLQotICAgIHJldHVybiBleHRlbnNpb24KLQot
Ci1kZWYgcGFyc2VfZXh0ZW5zaW9ucyhkYXRhKToKLSAgICAiIiJQYXJzZXMgU2VjLVdlYlNvY2tl
dC1FeHRlbnNpb25zIGhlYWRlciB2YWx1ZSByZXR1cm5zIGEgbGlzdCBvZgotICAgIEV4dGVuc2lv
blBhcmFtZXRlciBvYmplY3RzLgotCi0gICAgTGVhZGluZyBMV1NlcyBtdXN0IGJlIHRyaW1tZWQu
Ci0gICAgIiIiCi0KLSAgICBzdGF0ZSA9IGh0dHBfaGVhZGVyX3V0aWwuUGFyc2luZ1N0YXRlKGRh
dGEpCi0KLSAgICBleHRlbnNpb25fbGlzdCA9IFtdCi0gICAgd2hpbGUgVHJ1ZToKLSAgICAgICAg
ZXh0ZW5zaW9uID0gX3BhcnNlX2V4dGVuc2lvbihzdGF0ZSkKLSAgICAgICAgaWYgZXh0ZW5zaW9u
IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgZXh0ZW5zaW9uX2xpc3QuYXBwZW5kKGV4dGVuc2lv
bikKLQotICAgICAgICBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfbHdzZXMoc3RhdGUpCi0KLSAg
ICAgICAgaWYgaHR0cF9oZWFkZXJfdXRpbC5wZWVrKHN0YXRlKSBpcyBOb25lOgotICAgICAgICAg
ICAgYnJlYWsKLQotICAgICAgICBpZiBub3QgaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX3N0cmlu
ZyhzdGF0ZSwgJywnKToKLSAgICAgICAgICAgIHJhaXNlIEV4dGVuc2lvblBhcnNpbmdFeGNlcHRp
b24oCi0gICAgICAgICAgICAgICAgJ0ZhaWxlZCB0byBwYXJzZSBTZWMtV2ViU29ja2V0LUV4dGVu
c2lvbnMgaGVhZGVyOiAnCi0gICAgICAgICAgICAgICAgJ0V4cGVjdGVkIGEgY29tbWEgYnV0IGZv
dW5kICVyJyAlCi0gICAgICAgICAgICAgICAgaHR0cF9oZWFkZXJfdXRpbC5wZWVrKHN0YXRlKSkK
LQotICAgICAgICBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfbHdzZXMoc3RhdGUpCi0KLSAgICBp
ZiBsZW4oZXh0ZW5zaW9uX2xpc3QpID09IDA6Ci0gICAgICAgIHJhaXNlIEV4dGVuc2lvblBhcnNp
bmdFeGNlcHRpb24oCi0gICAgICAgICAgICAnTm8gdmFsaWQgZXh0ZW5zaW9uIGVudHJ5IGZvdW5k
JykKLQotICAgIHJldHVybiBleHRlbnNpb25fbGlzdAotCi0KLWRlZiBmb3JtYXRfZXh0ZW5zaW9u
KGV4dGVuc2lvbik6Ci0gICAgIiIiRm9ybWF0cyBhbiBFeHRlbnNpb25QYXJhbWV0ZXIgb2JqZWN0
LiIiIgotCi0gICAgZm9ybWF0dGVkX3BhcmFtcyA9IFtleHRlbnNpb24ubmFtZSgpXQotICAgIGZv
ciBwYXJhbV9uYW1lLCBwYXJhbV92YWx1ZSBpbiBleHRlbnNpb24uZ2V0X3BhcmFtZXRlcnMoKToK
LSAgICAgICAgaWYgcGFyYW1fdmFsdWUgaXMgTm9uZToKLSAgICAgICAgICAgIGZvcm1hdHRlZF9w
YXJhbXMuYXBwZW5kKHBhcmFtX25hbWUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBxdW90
ZWRfdmFsdWUgPSBodHRwX2hlYWRlcl91dGlsLnF1b3RlX2lmX25lY2Vzc2FyeShwYXJhbV92YWx1
ZSkKLSAgICAgICAgICAgIGZvcm1hdHRlZF9wYXJhbXMuYXBwZW5kKCclcz0lcycgJSAocGFyYW1f
bmFtZSwgcXVvdGVkX3ZhbHVlKSkKLSAgICByZXR1cm4gJzsgJy5qb2luKGZvcm1hdHRlZF9wYXJh
bXMpCi0KLQotZGVmIGZvcm1hdF9leHRlbnNpb25zKGV4dGVuc2lvbl9saXN0KToKLSAgICAiIiJG
b3JtYXRzIGEgbGlzdCBvZiBFeHRlbnNpb25QYXJhbWV0ZXIgb2JqZWN0cy4iIiIKLQotICAgIGZv
cm1hdHRlZF9leHRlbnNpb25fbGlzdCA9IFtdCi0gICAgZm9yIGV4dGVuc2lvbiBpbiBleHRlbnNp
b25fbGlzdDoKLSAgICAgICAgZm9ybWF0dGVkX2V4dGVuc2lvbl9saXN0LmFwcGVuZChmb3JtYXRf
ZXh0ZW5zaW9uKGV4dGVuc2lvbikpCi0gICAgcmV0dXJuICcsICcuam9pbihmb3JtYXR0ZWRfZXh0
ZW5zaW9uX2xpc3QpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Ny
Yy9tb2RfcHl3ZWJzb2NrZXQvZGlzcGF0Y2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQv
ZGlzcGF0Y2gucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2YzkxZTBjOTBlNzQy
OWQwZjc2MGMwZTljN2I5ODEyMDQwOTJhMGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L2Rpc3BhdGNoLnB5Cisr
KyAvZGV2L251bGwKQEAgLTEsMzkzICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJ
bmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMK
LSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIkRp
c3BhdGNoIFdlYlNvY2tldCByZXF1ZXN0LgotIiIiCi0KLQotaW1wb3J0IGxvZ2dpbmcKLWltcG9y
dCBvcwotaW1wb3J0IHJlCi0KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KLWZy
b20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBoYW5kc2hha2UKLWZyb20gbW9kX3B5d2Vic29ja2V0
IGltcG9ydCBtc2d1dGlsCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgbXV4Ci1mcm9tIG1v
ZF9weXdlYnNvY2tldCBpbXBvcnQgc3RyZWFtCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQg
dXRpbAotCi0KLV9TT1VSQ0VfUEFUSF9QQVRURVJOID0gcmUuY29tcGlsZShyJyg/aSlfd3NoXC5w
eSQnKQotX1NPVVJDRV9TVUZGSVggPSAnX3dzaC5weScKLV9ET19FWFRSQV9IQU5EU0hBS0VfSEFO
RExFUl9OQU1FID0gJ3dlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlJwotX1RSQU5TRkVSX0RB
VEFfSEFORExFUl9OQU1FID0gJ3dlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YScKLV9QQVNTSVZFX0NM
T1NJTkdfSEFORFNIQUtFX0hBTkRMRVJfTkFNRSA9ICgKLSAgICAnd2ViX3NvY2tldF9wYXNzaXZl
X2Nsb3NpbmdfaGFuZHNoYWtlJykKLQotCi1jbGFzcyBEaXNwYXRjaEV4Y2VwdGlvbihFeGNlcHRp
b24pOgotICAgICIiIkV4Y2VwdGlvbiBpbiBkaXNwYXRjaGluZyBXZWJTb2NrZXQgcmVxdWVzdC4i
IiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBzdGF0dXM9Y29tbW9uLkhUVFBfU1RB
VFVTX05PVF9GT1VORCk6Ci0gICAgICAgIHN1cGVyKERpc3BhdGNoRXhjZXB0aW9uLCBzZWxmKS5f
X2luaXRfXyhuYW1lKQotICAgICAgICBzZWxmLnN0YXR1cyA9IHN0YXR1cwotCi0KLWRlZiBfZGVm
YXVsdF9wYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlX2hhbmRsZXIocmVxdWVzdCk6Ci0gICAgIiIi
RGVmYXVsdCB3ZWJfc29ja2V0X3Bhc3NpdmVfY2xvc2luZ19oYW5kc2hha2UgaGFuZGxlci4iIiIK
LQotICAgIHJldHVybiBjb21tb24uU1RBVFVTX05PUk1BTF9DTE9TVVJFLCAnJwotCi0KLWRlZiBf
bm9ybWFsaXplX3BhdGgocGF0aCk6Ci0gICAgIiIiTm9ybWFsaXplIHBhdGguCi0KLSAgICBBcmdz
OgotICAgICAgICBwYXRoOiB0aGUgcGF0aCB0byBub3JtYWxpemUuCi0KLSAgICBQYXRoIGlzIGNv
bnZlcnRlZCB0byB0aGUgYWJzb2x1dGUgcGF0aC4KLSAgICBUaGUgaW5wdXQgcGF0aCBjYW4gdXNl
IGVpdGhlciAnXFwnIG9yICcvJyBhcyB0aGUgc2VwYXJhdG9yLgotICAgIFRoZSBub3JtYWxpemVk
IHBhdGggYWx3YXlzIHVzZXMgJy8nIHJlZ2FyZGxlc3Mgb2YgdGhlIHBsYXRmb3JtLgotICAgICIi
IgotCi0gICAgcGF0aCA9IHBhdGgucmVwbGFjZSgnXFwnLCBvcy5wYXRoLnNlcCkKLSAgICBwYXRo
ID0gb3MucGF0aC5yZWFscGF0aChwYXRoKQotICAgIHBhdGggPSBwYXRoLnJlcGxhY2UoJ1xcJywg
Jy8nKQotICAgIHJldHVybiBwYXRoCi0KLQotZGVmIF9jcmVhdGVfcGF0aF90b19yZXNvdXJjZV9j
b252ZXJ0ZXIoYmFzZV9kaXIpOgotICAgICIiIlJldHVybnMgYSBmdW5jdGlvbiB0aGF0IGNvbnZl
cnRzIHRoZSBwYXRoIG9mIGEgV2ViU29ja2V0IGhhbmRsZXIgc291cmNlCi0gICAgZmlsZSB0byBh
IHJlc291cmNlIHN0cmluZyBieSByZW1vdmluZyB0aGUgcGF0aCB0byB0aGUgYmFzZSBkaXJlY3Rv
cnkgZnJvbQotICAgIGl0cyBoZWFkLCByZW1vdmluZyBfU09VUkNFX1NVRkZJWCBmcm9tIGl0cyB0
YWlsLCBhbmQgcmVwbGFjaW5nIHBhdGgKLSAgICBzZXBhcmF0b3JzIGluIGl0IHdpdGggJy8nLgot
Ci0gICAgQXJnczoKLSAgICAgICAgYmFzZV9kaXI6IHRoZSBwYXRoIHRvIHRoZSBiYXNlIGRpcmVj
dG9yeS4KLSAgICAiIiIKLQotICAgIGJhc2VfZGlyID0gX25vcm1hbGl6ZV9wYXRoKGJhc2VfZGly
KQotCi0gICAgYmFzZV9sZW4gPSBsZW4oYmFzZV9kaXIpCi0gICAgc3VmZml4X2xlbiA9IGxlbihf
U09VUkNFX1NVRkZJWCkKLQotICAgIGRlZiBjb252ZXJ0ZXIocGF0aCk6Ci0gICAgICAgIGlmIG5v
dCBwYXRoLmVuZHN3aXRoKF9TT1VSQ0VfU1VGRklYKToKLSAgICAgICAgICAgIHJldHVybiBOb25l
Ci0gICAgICAgICMgX25vcm1hbGl6ZV9wYXRoIG11c3Qgbm90IGJlIHVzZWQgYmVjYXVzZSByZXNv
bHZpbmcgc3ltbGluayBicmVha3MKLSAgICAgICAgIyBmb2xsb3dpbmcgcGF0aCBjaGVjay4KLSAg
ICAgICAgcGF0aCA9IHBhdGgucmVwbGFjZSgnXFwnLCAnLycpCi0gICAgICAgIGlmIG5vdCBwYXRo
LnN0YXJ0c3dpdGgoYmFzZV9kaXIpOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAg
cmV0dXJuIHBhdGhbYmFzZV9sZW46LXN1ZmZpeF9sZW5dCi0KLSAgICByZXR1cm4gY29udmVydGVy
Ci0KLQotZGVmIF9lbnVtZXJhdGVfaGFuZGxlcl9maWxlX3BhdGhzKGRpcmVjdG9yeSk6Ci0gICAg
IiIiUmV0dXJucyBhIGdlbmVyYXRvciB0aGF0IGVudW1lcmF0ZXMgV2ViU29ja2V0IEhhbmRsZXIg
c291cmNlIGZpbGUgbmFtZXMKLSAgICBpbiB0aGUgZ2l2ZW4gZGlyZWN0b3J5LgotICAgICIiIgot
Ci0gICAgZm9yIHJvb3QsIHVudXNlZF9kaXJzLCBmaWxlcyBpbiBvcy53YWxrKGRpcmVjdG9yeSk6
Ci0gICAgICAgIGZvciBiYXNlIGluIGZpbGVzOgotICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGgu
am9pbihyb290LCBiYXNlKQotICAgICAgICAgICAgaWYgX1NPVVJDRV9QQVRIX1BBVFRFUk4uc2Vh
cmNoKHBhdGgpOgotICAgICAgICAgICAgICAgIHlpZWxkIHBhdGgKLQotCi1jbGFzcyBfSGFuZGxl
clN1aXRlKG9iamVjdCk6Ci0gICAgIiIiQSBoYW5kbGVyIHN1aXRlIGhvbGRlciBjbGFzcy4iIiIK
LQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkb19leHRyYV9oYW5kc2hha2UsIHRyYW5zZmVyX2Rh
dGEsCi0gICAgICAgICAgICAgICAgIHBhc3NpdmVfY2xvc2luZ19oYW5kc2hha2UpOgotICAgICAg
ICBzZWxmLmRvX2V4dHJhX2hhbmRzaGFrZSA9IGRvX2V4dHJhX2hhbmRzaGFrZQotICAgICAgICBz
ZWxmLnRyYW5zZmVyX2RhdGEgPSB0cmFuc2Zlcl9kYXRhCi0gICAgICAgIHNlbGYucGFzc2l2ZV9j
bG9zaW5nX2hhbmRzaGFrZSA9IHBhc3NpdmVfY2xvc2luZ19oYW5kc2hha2UKLQotCi1kZWYgX3Nv
dXJjZV9oYW5kbGVyX2ZpbGUoaGFuZGxlcl9kZWZpbml0aW9uKToKLSAgICAiIiJTb3VyY2UgYSBo
YW5kbGVyIGRlZmluaXRpb24gc3RyaW5nLgotCi0gICAgQXJnczoKLSAgICAgICAgaGFuZGxlcl9k
ZWZpbml0aW9uOiBhIHN0cmluZyBjb250YWluaW5nIFB5dGhvbiBzdGF0ZW1lbnRzIHRoYXQgZGVm
aW5lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlciBmdW5jdGlvbnMuCi0gICAg
IiIiCi0KLSAgICBnbG9iYWxfZGljID0ge30KLSAgICB0cnk6Ci0gICAgICAgIGV4ZWMgaGFuZGxl
cl9kZWZpbml0aW9uIGluIGdsb2JhbF9kaWMKLSAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAg
ICByYWlzZSBEaXNwYXRjaEV4Y2VwdGlvbignRXJyb3IgaW4gc291cmNpbmcgaGFuZGxlcjonICsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbC5nZXRfc3RhY2tfdHJhY2UoKSkK
LSAgICBwYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlX2hhbmRsZXIgPSBOb25lCi0gICAgdHJ5Ogot
ICAgICAgICBwYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlX2hhbmRsZXIgPSBfZXh0cmFjdF9oYW5k
bGVyKAotICAgICAgICAgICAgZ2xvYmFsX2RpYywgX1BBU1NJVkVfQ0xPU0lOR19IQU5EU0hBS0Vf
SEFORExFUl9OQU1FKQotICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgIHBhc3NpdmVfY2xv
c2luZ19oYW5kc2hha2VfaGFuZGxlciA9ICgKLSAgICAgICAgICAgIF9kZWZhdWx0X3Bhc3NpdmVf
Y2xvc2luZ19oYW5kc2hha2VfaGFuZGxlcikKLSAgICByZXR1cm4gX0hhbmRsZXJTdWl0ZSgKLSAg
ICAgICAgX2V4dHJhY3RfaGFuZGxlcihnbG9iYWxfZGljLCBfRE9fRVhUUkFfSEFORFNIQUtFX0hB
TkRMRVJfTkFNRSksCi0gICAgICAgIF9leHRyYWN0X2hhbmRsZXIoZ2xvYmFsX2RpYywgX1RSQU5T
RkVSX0RBVEFfSEFORExFUl9OQU1FKSwKLSAgICAgICAgcGFzc2l2ZV9jbG9zaW5nX2hhbmRzaGFr
ZV9oYW5kbGVyKQotCi0KLWRlZiBfZXh0cmFjdF9oYW5kbGVyKGRpYywgbmFtZSk6Ci0gICAgIiIi
RXh0cmFjdHMgYSBjYWxsYWJsZSB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZSBmcm9tIHRoZSBnaXZl
biBkaWN0aW9uYXJ5Ci0gICAgZGljLgotICAgICIiIgotCi0gICAgaWYgbmFtZSBub3QgaW4gZGlj
OgotICAgICAgICByYWlzZSBEaXNwYXRjaEV4Y2VwdGlvbignJXMgaXMgbm90IGRlZmluZWQuJyAl
IG5hbWUpCi0gICAgaGFuZGxlciA9IGRpY1tuYW1lXQotICAgIGlmIG5vdCBjYWxsYWJsZShoYW5k
bGVyKToKLSAgICAgICAgcmFpc2UgRGlzcGF0Y2hFeGNlcHRpb24oJyVzIGlzIG5vdCBjYWxsYWJs
ZS4nICUgbmFtZSkKLSAgICByZXR1cm4gaGFuZGxlcgotCi0KLWNsYXNzIERpc3BhdGNoZXIob2Jq
ZWN0KToKLSAgICAiIiJEaXNwYXRjaGVzIFdlYlNvY2tldCByZXF1ZXN0cy4KLQotICAgIFRoaXMg
Y2xhc3MgbWFpbnRhaW5zIGEgbWFwIGZyb20gcmVzb3VyY2UgbmFtZSB0byBoYW5kbGVycy4KLSAg
ICAiIiIKLQotICAgIGRlZiBfX2luaXRfXygKLSAgICAgICAgc2VsZiwgcm9vdF9kaXIsIHNjYW5f
ZGlyPU5vbmUsCi0gICAgICAgIGFsbG93X2hhbmRsZXJzX291dHNpZGVfcm9vdF9kaXI9VHJ1ZSk6
Ci0gICAgICAgICIiIkNvbnN0cnVjdCBhbiBpbnN0YW5jZS4KLQotICAgICAgICBBcmdzOgotICAg
ICAgICAgICAgcm9vdF9kaXI6IFRoZSBkaXJlY3Rvcnkgd2hlcmUgaGFuZGxlciBkZWZpbml0aW9u
IGZpbGVzIGFyZQotICAgICAgICAgICAgICAgICAgICAgIHBsYWNlZC4KLSAgICAgICAgICAgIHNj
YW5fZGlyOiBUaGUgZGlyZWN0b3J5IHdoZXJlIGhhbmRsZXIgZGVmaW5pdGlvbiBmaWxlcyBhcmUK
LSAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hlZC4gc2Nhbl9kaXIgbXVzdCBiZSBhIGRpcmVj
dG9yeSB1bmRlciByb290X2RpciwKLSAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgcm9v
dF9kaXIgaXRzZWxmLiAgSWYgc2Nhbl9kaXIgaXMgTm9uZSwKLSAgICAgICAgICAgICAgICAgICAg
ICByb290X2RpciBpcyB1c2VkIGFzIHNjYW5fZGlyLiBzY2FuX2RpciBjYW4gYmUgdXNlZnVsCi0g
ICAgICAgICAgICAgICAgICAgICAgaW4gc2F2aW5nIHNjYW4gdGltZSB3aGVuIHJvb3RfZGlyIGNv
bnRhaW5zIG1hbnkKLSAgICAgICAgICAgICAgICAgICAgICBzdWJkaXJlY3Rvcmllcy4KLSAgICAg
ICAgICAgIGFsbG93X2hhbmRsZXJzX291dHNpZGVfcm9vdF9kaXI6IFNjYW5zIGhhbmRsZXIgZmls
ZXMgZXZlbiBpZiB0aGVpcgotICAgICAgICAgICAgICAgICAgICAgIGNhbm9uaWNhbCBwYXRoIGlz
IG5vdCB1bmRlciByb290X2Rpci4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi5fbG9nZ2Vy
ID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgc2VsZi5faGFuZGxlcl9z
dWl0ZV9tYXAgPSB7fQotICAgICAgICBzZWxmLl9zb3VyY2Vfd2FybmluZ3MgPSBbXQotICAgICAg
ICBpZiBzY2FuX2RpciBpcyBOb25lOgotICAgICAgICAgICAgc2Nhbl9kaXIgPSByb290X2Rpcgot
ICAgICAgICBpZiBub3Qgb3MucGF0aC5yZWFscGF0aChzY2FuX2Rpcikuc3RhcnRzd2l0aCgKLSAg
ICAgICAgICAgICAgICBvcy5wYXRoLnJlYWxwYXRoKHJvb3RfZGlyKSk6Ci0gICAgICAgICAgICBy
YWlzZSBEaXNwYXRjaEV4Y2VwdGlvbignc2Nhbl9kaXI6JXMgbXVzdCBiZSBhIGRpcmVjdG9yeSB1
bmRlciAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncm9vdF9kaXI6JXMu
JyAlIChzY2FuX2Rpciwgcm9vdF9kaXIpKQotICAgICAgICBzZWxmLl9zb3VyY2VfaGFuZGxlcl9m
aWxlc19pbl9kaXIoCi0gICAgICAgICAgICByb290X2Rpciwgc2Nhbl9kaXIsIGFsbG93X2hhbmRs
ZXJzX291dHNpZGVfcm9vdF9kaXIpCi0KLSAgICBkZWYgYWRkX3Jlc291cmNlX3BhdGhfYWxpYXMo
c2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpYXNfcmVzb3VyY2VfcGF0
aCwgZXhpc3RpbmdfcmVzb3VyY2VfcGF0aCk6Ci0gICAgICAgICIiIkFkZCByZXNvdXJjZSBwYXRo
IGFsaWFzLgotCi0gICAgICAgIE9uY2UgYWRkZWQsIHJlcXVlc3QgdG8gYWxpYXNfcmVzb3VyY2Vf
cGF0aCB3b3VsZCBiZSBoYW5kbGVkIGJ5Ci0gICAgICAgIGhhbmRsZXIgcmVnaXN0ZXJlZCBmb3Ig
ZXhpc3RpbmdfcmVzb3VyY2VfcGF0aC4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgYWxp
YXNfcmVzb3VyY2VfcGF0aDogYWxpYXMgcmVzb3VyY2UgcGF0aAotICAgICAgICAgICAgZXhpc3Rp
bmdfcmVzb3VyY2VfcGF0aDogZXhpc3RpbmcgcmVzb3VyY2UgcGF0aAotICAgICAgICAiIiIKLSAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgaGFuZGxlcl9zdWl0ZSA9IHNlbGYuX2hhbmRsZXJfc3Vp
dGVfbWFwW2V4aXN0aW5nX3Jlc291cmNlX3BhdGhdCi0gICAgICAgICAgICBzZWxmLl9oYW5kbGVy
X3N1aXRlX21hcFthbGlhc19yZXNvdXJjZV9wYXRoXSA9IGhhbmRsZXJfc3VpdGUKLSAgICAgICAg
ZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgcmFpc2UgRGlzcGF0Y2hFeGNlcHRpb24oJ05v
IGhhbmRsZXIgZm9yOiAlcicgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXhpc3RpbmdfcmVzb3VyY2VfcGF0aCkKLQotICAgIGRlZiBzb3VyY2Vfd2FybmluZ3Moc2VsZik6
Ci0gICAgICAgICIiIlJldHVybiB3YXJuaW5ncyBpbiBzb3VyY2luZyBoYW5kbGVycy4iIiIKLQot
ICAgICAgICByZXR1cm4gc2VsZi5fc291cmNlX3dhcm5pbmdzCi0KLSAgICBkZWYgZG9fZXh0cmFf
aGFuZHNoYWtlKHNlbGYsIHJlcXVlc3QpOgotICAgICAgICAiIiJEbyBleHRyYSBjaGVja2luZyBp
biBXZWJTb2NrZXQgaGFuZHNoYWtlLgotCi0gICAgICAgIFNlbGVjdCBhIGhhbmRsZXIgYmFzZWQg
b24gcmVxdWVzdC51cmkgYW5kIGNhbGwgaXRzCi0gICAgICAgIHdlYl9zb2NrZXRfZG9fZXh0cmFf
aGFuZHNoYWtlIGZ1bmN0aW9uLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICByZXF1ZXN0
OiBtb2RfcHl0aG9uIHJlcXVlc3QuCi0KLSAgICAgICAgUmFpc2VzOgotICAgICAgICAgICAgRGlz
cGF0Y2hFeGNlcHRpb246IHdoZW4gaGFuZGxlciB3YXMgbm90IGZvdW5kCi0gICAgICAgICAgICBB
Ym9ydGVkQnlVc2VyRXhjZXB0aW9uOiB3aGVuIHVzZXIgaGFuZGxlciBhYm9ydCBjb25uZWN0aW9u
Ci0gICAgICAgICAgICBIYW5kc2hha2VFeGNlcHRpb246IHdoZW4gb3BlbmluZyBoYW5kc2hha2Ug
ZmFpbGVkCi0gICAgICAgICIiIgotCi0gICAgICAgIGhhbmRsZXJfc3VpdGUgPSBzZWxmLmdldF9o
YW5kbGVyX3N1aXRlKHJlcXVlc3Qud3NfcmVzb3VyY2UpCi0gICAgICAgIGlmIGhhbmRsZXJfc3Vp
dGUgaXMgTm9uZToKLSAgICAgICAgICAgIHJhaXNlIERpc3BhdGNoRXhjZXB0aW9uKCdObyBoYW5k
bGVyIGZvcjogJXInICUgcmVxdWVzdC53c19yZXNvdXJjZSkKLSAgICAgICAgZG9fZXh0cmFfaGFu
ZHNoYWtlXyA9IGhhbmRsZXJfc3VpdGUuZG9fZXh0cmFfaGFuZHNoYWtlCi0gICAgICAgIHRyeToK
LSAgICAgICAgICAgIGRvX2V4dHJhX2hhbmRzaGFrZV8ocmVxdWVzdCkKLSAgICAgICAgZXhjZXB0
IGhhbmRzaGFrZS5BYm9ydGVkQnlVc2VyRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgIyBSZS1y
YWlzZSB0byB0ZWxsIHRoZSBjYWxsZXIgb2YgdGhpcyBmdW5jdGlvbiB0byBmaW5pc2ggdGhpcwot
ICAgICAgICAgICAgIyBjb25uZWN0aW9uIHdpdGhvdXQgc2VuZGluZyBhbnkgZXJyb3IuCi0gICAg
ICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVzJywgdXRpbC5nZXRfc3RhY2tfdHJhY2UoKSkK
LSAgICAgICAgICAgIHJhaXNlCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAg
ICAgICB1dGlsLnByZXBlbmRfbWVzc2FnZV90b19leGNlcHRpb24oCi0gICAgICAgICAgICAgICAg
ICAgICclcyByYWlzZWQgZXhjZXB0aW9uIGZvciAlczogJyAlICgKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfRE9fRVhUUkFfSEFORFNIQUtFX0hBTkRMRVJfTkFNRSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXF1ZXN0LndzX3Jlc291cmNlKSwKLSAgICAgICAgICAgICAgICAg
ICAgZSkKLSAgICAgICAgICAgIHJhaXNlIGhhbmRzaGFrZS5IYW5kc2hha2VFeGNlcHRpb24oZSwg
Y29tbW9uLkhUVFBfU1RBVFVTX0ZPUkJJRERFTikKLQotICAgIGRlZiB0cmFuc2Zlcl9kYXRhKHNl
bGYsIHJlcXVlc3QpOgotICAgICAgICAiIiJMZXQgYSBoYW5kbGVyIHRyYW5zZmVyX2RhdGEgd2l0
aCBhIFdlYlNvY2tldCBjbGllbnQuCi0KLSAgICAgICAgU2VsZWN0IGEgaGFuZGxlciBiYXNlZCBv
biByZXF1ZXN0LndzX3Jlc291cmNlIGFuZCBjYWxsIGl0cwotICAgICAgICB3ZWJfc29ja2V0X3Ry
YW5zZmVyX2RhdGEgZnVuY3Rpb24uCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIHJlcXVl
c3Q6IG1vZF9weXRob24gcmVxdWVzdC4KLQotICAgICAgICBSYWlzZXM6Ci0gICAgICAgICAgICBE
aXNwYXRjaEV4Y2VwdGlvbjogd2hlbiBoYW5kbGVyIHdhcyBub3QgZm91bmQKLSAgICAgICAgICAg
IEFib3J0ZWRCeVVzZXJFeGNlcHRpb246IHdoZW4gdXNlciBoYW5kbGVyIGFib3J0IGNvbm5lY3Rp
b24KLSAgICAgICAgIiIiCi0KLSAgICAgICAgIyBUT0RPKHR5b3NoaW5vKTogVGVybWluYXRlIHVu
ZGVybHlpbmcgVENQIGNvbm5lY3Rpb24gaWYgcG9zc2libGUuCi0gICAgICAgIHRyeToKLSAgICAg
ICAgICAgIGlmIG11eC51c2VfbXV4KHJlcXVlc3QpOgotICAgICAgICAgICAgICAgIG11eC5zdGFy
dChyZXF1ZXN0LCBzZWxmKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBoYW5k
bGVyX3N1aXRlID0gc2VsZi5nZXRfaGFuZGxlcl9zdWl0ZShyZXF1ZXN0LndzX3Jlc291cmNlKQot
ICAgICAgICAgICAgICAgIGlmIGhhbmRsZXJfc3VpdGUgaXMgTm9uZToKLSAgICAgICAgICAgICAg
ICAgICAgcmFpc2UgRGlzcGF0Y2hFeGNlcHRpb24oJ05vIGhhbmRsZXIgZm9yOiAlcicgJQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LndzX3Jlc291
cmNlKQotICAgICAgICAgICAgICAgIHRyYW5zZmVyX2RhdGFfID0gaGFuZGxlcl9zdWl0ZS50cmFu
c2Zlcl9kYXRhCi0gICAgICAgICAgICAgICAgdHJhbnNmZXJfZGF0YV8ocmVxdWVzdCkKLQotICAg
ICAgICAgICAgaWYgbm90IHJlcXVlc3Quc2VydmVyX3Rlcm1pbmF0ZWQ6Ci0gICAgICAgICAgICAg
ICAgcmVxdWVzdC53c19zdHJlYW0uY2xvc2VfY29ubmVjdGlvbigpCi0gICAgICAgICMgQ2F0Y2gg
bm9uLWNyaXRpY2FsIGV4Y2VwdGlvbnMgdGhlIGhhbmRsZXIgZGlkbid0IGhhbmRsZS4KLSAgICAg
ICAgZXhjZXB0IGhhbmRzaGFrZS5BYm9ydGVkQnlVc2VyRXhjZXB0aW9uLCBlOgotICAgICAgICAg
ICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCclcycsIHV0aWwuZ2V0X3N0YWNrX3RyYWNlKCkpCi0gICAg
ICAgICAgICByYWlzZQotICAgICAgICBleGNlcHQgbXNndXRpbC5CYWRPcGVyYXRpb25FeGNlcHRp
b24sIGU6Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVzJywgZSkKLSAgICAgICAg
ICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oCi0gICAgICAgICAgICAgICAg
Y29tbW9uLlNUQVRVU19JTlRFUk5BTF9FTkRQT0lOVF9FUlJPUikKLSAgICAgICAgZXhjZXB0IG1z
Z3V0aWwuSW52YWxpZEZyYW1lRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgIyBJbnZhbGlkRnJh
bWVFeGNlcHRpb24gbXVzdCBiZSBjYXVnaHQgYmVmb3JlCi0gICAgICAgICAgICAjIENvbm5lY3Rp
b25UZXJtaW5hdGVkRXhjZXB0aW9uIHRoYXQgY2F0Y2hlcyBJbnZhbGlkRnJhbWVFeGNlcHRpb24u
Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVzJywgZSkKLSAgICAgICAgICAgIHJl
cXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oY29tbW9uLlNUQVRVU19QUk9UT0NPTF9F
UlJPUikKLSAgICAgICAgZXhjZXB0IG1zZ3V0aWwuVW5zdXBwb3J0ZWRGcmFtZUV4Y2VwdGlvbiwg
ZToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXMnLCBlKQotICAgICAgICAgICAg
cmVxdWVzdC53c19zdHJlYW0uY2xvc2VfY29ubmVjdGlvbihjb21tb24uU1RBVFVTX1VOU1VQUE9S
VEVEX0RBVEEpCi0gICAgICAgIGV4Y2VwdCBzdHJlYW0uSW52YWxpZFVURjhFeGNlcHRpb24sIGU6
Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVzJywgZSkKLSAgICAgICAgICAgIHJl
cXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oCi0gICAgICAgICAgICAgICAgY29tbW9u
LlNUQVRVU19JTlZBTElEX0ZSQU1FX1BBWUxPQURfREFUQSkKLSAgICAgICAgZXhjZXB0IG1zZ3V0
aWwuQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICBzZWxmLl9s
b2dnZXIuZGVidWcoJyVzJywgZSkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAg
ICAgICAgICMgQW55IG90aGVyIGV4Y2VwdGlvbnMgYXJlIGZvcndhcmRlZCB0byB0aGUgY2FsbGVy
IG9mIHRoaXMKLSAgICAgICAgICAgICMgZnVuY3Rpb24uCi0gICAgICAgICAgICB1dGlsLnByZXBl
bmRfbWVzc2FnZV90b19leGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJyVzIHJhaXNlZCBleGNl
cHRpb24gZm9yICVzOiAnICUgKAotICAgICAgICAgICAgICAgICAgICBfVFJBTlNGRVJfREFUQV9I
QU5ETEVSX05BTUUsIHJlcXVlc3Qud3NfcmVzb3VyY2UpLAotICAgICAgICAgICAgICAgIGUpCi0g
ICAgICAgICAgICByYWlzZQotCi0gICAgZGVmIHBhc3NpdmVfY2xvc2luZ19oYW5kc2hha2Uoc2Vs
ZiwgcmVxdWVzdCk6Ci0gICAgICAgICIiIlByZXBhcmUgY29kZSBhbmQgcmVhc29uIGZvciByZXNw
b25kaW5nIGNsaWVudCBpbml0aWF0ZWQgY2xvc2luZwotICAgICAgICBoYW5kc2hha2UuCi0gICAg
ICAgICIiIgotCi0gICAgICAgIGhhbmRsZXJfc3VpdGUgPSBzZWxmLmdldF9oYW5kbGVyX3N1aXRl
KHJlcXVlc3Qud3NfcmVzb3VyY2UpCi0gICAgICAgIGlmIGhhbmRsZXJfc3VpdGUgaXMgTm9uZToK
LSAgICAgICAgICAgIHJldHVybiBfZGVmYXVsdF9wYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlX2hh
bmRsZXIocmVxdWVzdCkKLSAgICAgICAgcmV0dXJuIGhhbmRsZXJfc3VpdGUucGFzc2l2ZV9jbG9z
aW5nX2hhbmRzaGFrZShyZXF1ZXN0KQotCi0gICAgZGVmIGdldF9oYW5kbGVyX3N1aXRlKHNlbGYs
IHJlc291cmNlKToKLSAgICAgICAgIiIiUmV0cmlldmVzIHR3byBoYW5kbGVycyAob25lIGZvciBl
eHRyYSBoYW5kc2hha2UgcHJvY2Vzc2luZywgYW5kIG9uZQotICAgICAgICBmb3IgZGF0YSB0cmFu
c2ZlcikgZm9yIHRoZSBnaXZlbiByZXF1ZXN0IGFzIGEgSGFuZGxlclN1aXRlIG9iamVjdC4KLSAg
ICAgICAgIiIiCi0KLSAgICAgICAgZnJhZ21lbnQgPSBOb25lCi0gICAgICAgIGlmICcjJyBpbiBy
ZXNvdXJjZToKLSAgICAgICAgICAgIHJlc291cmNlLCBmcmFnbWVudCA9IHJlc291cmNlLnNwbGl0
KCcjJywgMSkKLSAgICAgICAgaWYgJz8nIGluIHJlc291cmNlOgotICAgICAgICAgICAgcmVzb3Vy
Y2UgPSByZXNvdXJjZS5zcGxpdCgnPycsIDEpWzBdCi0gICAgICAgIGhhbmRsZXJfc3VpdGUgPSBz
ZWxmLl9oYW5kbGVyX3N1aXRlX21hcC5nZXQocmVzb3VyY2UpCi0gICAgICAgIGlmIGhhbmRsZXJf
c3VpdGUgYW5kIGZyYWdtZW50OgotICAgICAgICAgICAgcmFpc2UgRGlzcGF0Y2hFeGNlcHRpb24o
J0ZyYWdtZW50IGlkZW50aWZpZXJzIE1VU1QgTk9UIGJlIHVzZWQgb24gJwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ1dlYlNvY2tldCBVUklzJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbi5IVFRQX1NUQVRVU19CQURfUkVRVUVTVCkKLSAg
ICAgICAgcmV0dXJuIGhhbmRsZXJfc3VpdGUKLQotICAgIGRlZiBfc291cmNlX2hhbmRsZXJfZmls
ZXNfaW5fZGlyKAotICAgICAgICBzZWxmLCByb290X2Rpciwgc2Nhbl9kaXIsIGFsbG93X2hhbmRs
ZXJzX291dHNpZGVfcm9vdF9kaXIpOgotICAgICAgICAiIiJTb3VyY2UgYWxsIHRoZSBoYW5kbGVy
IHNvdXJjZSBmaWxlcyBpbiB0aGUgc2Nhbl9kaXIgZGlyZWN0b3J5LgotCi0gICAgICAgIFRoZSBy
ZXNvdXJjZSBwYXRoIGlzIGRldGVybWluZWQgcmVsYXRpdmUgdG8gcm9vdF9kaXIuCi0gICAgICAg
ICIiIgotCi0gICAgICAgICMgV2UgYnVpbGQgYSBtYXAgZnJvbSByZXNvdXJjZSB0byBoYW5kbGVy
IGNvZGUgYXNzdW1pbmcgdGhhdCB0aGVyZSdzCi0gICAgICAgICMgb25seSBvbmUgcGF0aCBmcm9t
IHJvb3RfZGlyIHRvIHNjYW5fZGlyIGFuZCBpdCBjYW4gYmUgb2J0YWluZWQgYnkKLSAgICAgICAg
IyBjb21wYXJpbmcgcmVhbHBhdGggb2YgdGhlbS4KLQotICAgICAgICAjIEhlcmUgd2UgY2Fubm90
IHVzZSBhYnNwYXRoLiBTZWUKLSAgICAgICAgIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzE2MDMKLQotICAgICAgICBjb252ZXJ0ID0gX2NyZWF0ZV9wYXRoX3RvX3Jl
c291cmNlX2NvbnZlcnRlcihyb290X2RpcikKLSAgICAgICAgc2Nhbl9yZWFscGF0aCA9IG9zLnBh
dGgucmVhbHBhdGgoc2Nhbl9kaXIpCi0gICAgICAgIHJvb3RfcmVhbHBhdGggPSBvcy5wYXRoLnJl
YWxwYXRoKHJvb3RfZGlyKQotICAgICAgICBmb3IgcGF0aCBpbiBfZW51bWVyYXRlX2hhbmRsZXJf
ZmlsZV9wYXRocyhzY2FuX3JlYWxwYXRoKToKLSAgICAgICAgICAgIGlmIChub3QgYWxsb3dfaGFu
ZGxlcnNfb3V0c2lkZV9yb290X2RpciBhbmQKLSAgICAgICAgICAgICAgICAobm90IG9zLnBhdGgu
cmVhbHBhdGgocGF0aCkuc3RhcnRzd2l0aChyb290X3JlYWxwYXRoKSkpOgotICAgICAgICAgICAg
ICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICAgICAgICAgJ0Nhbm9uaWNhbCBw
YXRoIG9mICVzIGlzIG5vdCB1bmRlciByb290IGRpcmVjdG9yeScgJQotICAgICAgICAgICAgICAg
ICAgICBwYXRoKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICB0cnk6Ci0g
ICAgICAgICAgICAgICAgaGFuZGxlcl9zdWl0ZSA9IF9zb3VyY2VfaGFuZGxlcl9maWxlKG9wZW4o
cGF0aCkucmVhZCgpKQotICAgICAgICAgICAgZXhjZXB0IERpc3BhdGNoRXhjZXB0aW9uLCBlOgot
ICAgICAgICAgICAgICAgIHNlbGYuX3NvdXJjZV93YXJuaW5ncy5hcHBlbmQoJyVzOiAlcycgJSAo
cGF0aCwgZSkpCi0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIHJlc291cmNl
ID0gY29udmVydChwYXRoKQotICAgICAgICAgICAgaWYgcmVzb3VyY2UgaXMgTm9uZToKLSAgICAg
ICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAgICAgICAgICdQYXRo
IHRvIHJlc291cmNlIGNvbnZlcnNpb24gb24gJXMgZmFpbGVkJyAlIHBhdGgpCi0gICAgICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZXJfc3VpdGVfbWFwW2NvbnZlcnQo
cGF0aCldID0gaGFuZGxlcl9zdWl0ZQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L2V4dGVuc2lvbnMucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2Rf
cHl3ZWJzb2NrZXQvZXh0ZW5zaW9ucy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NDlhOWZkY2Y5NDc5ODZhMWI0Y2FjYmU0NmYzZDUzZTAxNThkYjdjYS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQv
ZXh0ZW5zaW9ucy5weQorKysgL2Rldi9udWxsCkBAIC0xLDg4NSArMCwwIEBACi0jIENvcHlyaWdo
dCAyMDEyLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMg
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLQotCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCi1mcm9tIG1vZF9w
eXdlYnNvY2tldCBpbXBvcnQgdXRpbAotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaHR0cF9oZWFkZXJf
dXRpbCBpbXBvcnQgcXVvdGVfaWZfbmVjZXNzYXJ5Ci0KLQotIyBUaGUgbGlzdCBvZiBhdmFpbGFi
bGUgc2VydmVyIHNpZGUgZXh0ZW5zaW9uIHByb2Nlc3NvciBjbGFzc2VzLgotX2F2YWlsYWJsZV9w
cm9jZXNzb3JzID0ge30KLV9jb21wcmVzc2lvbl9leHRlbnNpb25fbmFtZXMgPSBbXQotCi0KLWNs
YXNzIEV4dGVuc2lvblByb2Nlc3NvckludGVyZmFjZShvYmplY3QpOgotCi0gICAgZGVmIF9faW5p
dF9fKHNlbGYsIHJlcXVlc3QpOgotICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFz
c19sb2dnZXIoc2VsZikKLQotICAgICAgICBzZWxmLl9yZXF1ZXN0ID0gcmVxdWVzdAotICAgICAg
ICBzZWxmLl9hY3RpdmUgPSBUcnVlCi0KLSAgICBkZWYgcmVxdWVzdChzZWxmKToKLSAgICAgICAg
cmV0dXJuIHNlbGYuX3JlcXVlc3QKLQotICAgIGRlZiBuYW1lKHNlbGYpOgotICAgICAgICByZXR1
cm4gTm9uZQotCi0gICAgZGVmIGNoZWNrX2NvbnNpc3RlbmN5X3dpdGhfb3RoZXJfcHJvY2Vzc29y
cyhzZWxmLCBwcm9jZXNzb3JzKToKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIHNldF9hY3RpdmUo
c2VsZiwgYWN0aXZlKToKLSAgICAgICAgc2VsZi5fYWN0aXZlID0gYWN0aXZlCi0KLSAgICBkZWYg
aXNfYWN0aXZlKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fYWN0aXZlCi0KLSAgICBkZWYg
X2dldF9leHRlbnNpb25fcmVzcG9uc2VfaW50ZXJuYWwoc2VsZik6Ci0gICAgICAgIHJldHVybiBO
b25lCi0KLSAgICBkZWYgZ2V0X2V4dGVuc2lvbl9yZXNwb25zZShzZWxmKToKLSAgICAgICAgaWYg
bm90IHNlbGYuX2FjdGl2ZToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnRXh0ZW5z
aW9uICVzIGlzIGRlYWN0aXZhdGVkJywgc2VsZi5uYW1lKCkpCi0gICAgICAgICAgICByZXR1cm4g
Tm9uZQotCi0gICAgICAgIHJlc3BvbnNlID0gc2VsZi5fZ2V0X2V4dGVuc2lvbl9yZXNwb25zZV9p
bnRlcm5hbCgpCi0gICAgICAgIGlmIHJlc3BvbnNlIGlzIE5vbmU6Ci0gICAgICAgICAgICBzZWxm
Ll9hY3RpdmUgPSBGYWxzZQotICAgICAgICByZXR1cm4gcmVzcG9uc2UKLQotICAgIGRlZiBfc2V0
dXBfc3RyZWFtX29wdGlvbnNfaW50ZXJuYWwoc2VsZiwgc3RyZWFtX29wdGlvbnMpOgotICAgICAg
ICBwYXNzCi0KLSAgICBkZWYgc2V0dXBfc3RyZWFtX29wdGlvbnMoc2VsZiwgc3RyZWFtX29wdGlv
bnMpOgotICAgICAgICBpZiBzZWxmLl9hY3RpdmU6Ci0gICAgICAgICAgICBzZWxmLl9zZXR1cF9z
dHJlYW1fb3B0aW9uc19pbnRlcm5hbChzdHJlYW1fb3B0aW9ucykKLQotCi1kZWYgX2xvZ19vdXRn
b2luZ19jb21wcmVzc2lvbl9yYXRpbygKLSAgICAgICAgbG9nZ2VyLCBvcmlnaW5hbF9ieXRlcywg
ZmlsdGVyZWRfYnl0ZXMsIGF2ZXJhZ2VfcmF0aW8pOgotICAgICMgUHJpbnQgaW5mIHdoZW4gcmF0
aW8gaXMgbm90IGF2YWlsYWJsZS4KLSAgICByYXRpbyA9IGZsb2F0KCdpbmYnKQotICAgIGlmIG9y
aWdpbmFsX2J5dGVzICE9IDA6Ci0gICAgICAgIHJhdGlvID0gZmxvYXQoZmlsdGVyZWRfYnl0ZXMp
IC8gb3JpZ2luYWxfYnl0ZXMKLQotICAgIGxvZ2dlci5kZWJ1ZygnT3V0Z29pbmcgY29tcHJlc3Np
b24gcmF0aW86ICVmIChhdmVyYWdlOiAlZiknICUKLSAgICAgICAgICAgIChyYXRpbywgYXZlcmFn
ZV9yYXRpbykpCi0KLQotZGVmIF9sb2dfaW5jb21pbmdfY29tcHJlc3Npb25fcmF0aW8oCi0gICAg
ICAgIGxvZ2dlciwgcmVjZWl2ZWRfYnl0ZXMsIGZpbHRlcmVkX2J5dGVzLCBhdmVyYWdlX3JhdGlv
KToKLSAgICAjIFByaW50IGluZiB3aGVuIHJhdGlvIGlzIG5vdCBhdmFpbGFibGUuCi0gICAgcmF0
aW8gPSBmbG9hdCgnaW5mJykKLSAgICBpZiBmaWx0ZXJlZF9ieXRlcyAhPSAwOgotICAgICAgICBy
YXRpbyA9IGZsb2F0KHJlY2VpdmVkX2J5dGVzKSAvIGZpbHRlcmVkX2J5dGVzCi0KLSAgICBsb2dn
ZXIuZGVidWcoJ0luY29taW5nIGNvbXByZXNzaW9uIHJhdGlvOiAlZiAoYXZlcmFnZTogJWYpJyAl
Ci0gICAgICAgICAgICAocmF0aW8sIGF2ZXJhZ2VfcmF0aW8pKQotCi0KLWRlZiBfcGFyc2Vfd2lu
ZG93X2JpdHMoYml0cyk6Ci0gICAgIiIiUmV0dXJuIHBhcnNlZCBpbnRlZ2VyIHZhbHVlIGlmZiB0
aGUgZ2l2ZW4gc3RyaW5nIGNvbmZvcm1zIHRvIHRoZQotICAgIGdyYW1tYXIgb2YgdGhlIHdpbmRv
dyBiaXRzIGV4dGVuc2lvbiBwYXJhbWV0ZXJzLgotICAgICIiIgotCi0gICAgaWYgYml0cyBpcyBO
b25lOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdWYWx1ZSBpcyByZXF1aXJlZCcpCi0KLSAg
ICAjIEZvciBub24gaW50ZWdlciB2YWx1ZXMgc3VjaCBhcyAiMTAuMCIsIFZhbHVlRXJyb3Igd2ls
bCBiZSByYWlzZWQuCi0gICAgaW50X2JpdHMgPSBpbnQoYml0cykKLQotICAgICMgRmlyc3QgY29u
ZGl0aW9uIGlzIHRvIGRyb3AgbGVhZGluZyB6ZXJvIGNhc2UgZS5nLiAiMDgiLgotICAgIGlmIGJp
dHMgIT0gc3RyKGludF9iaXRzKSBvciBpbnRfYml0cyA8IDggb3IgaW50X2JpdHMgPiAxNToKLSAg
ICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW52YWxpZCB2YWx1ZTogJXInICUgYml0cykKLQotICAg
IHJldHVybiBpbnRfYml0cwotCi0KLWNsYXNzIF9BdmVyYWdlUmF0aW9DYWxjdWxhdG9yKG9iamVj
dCk6Ci0gICAgIiIiU3RvcmVzIHRvdGFsIGJ5dGVzIG9mIG9yaWdpbmFsIGFuZCByZXN1bHQgZGF0
YSwgYW5kIGNhbGN1bGF0ZXMgYXZlcmFnZQotICAgIHJlc3VsdCAvIG9yaWdpbmFsIHJhdGlvLgot
ICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLl90b3RhbF9v
cmlnaW5hbF9ieXRlcyA9IDAKLSAgICAgICAgc2VsZi5fdG90YWxfcmVzdWx0X2J5dGVzID0gMAot
Ci0gICAgZGVmIGFkZF9vcmlnaW5hbF9ieXRlcyhzZWxmLCB2YWx1ZSk6Ci0gICAgICAgIHNlbGYu
X3RvdGFsX29yaWdpbmFsX2J5dGVzICs9IHZhbHVlCi0KLSAgICBkZWYgYWRkX3Jlc3VsdF9ieXRl
cyhzZWxmLCB2YWx1ZSk6Ci0gICAgICAgIHNlbGYuX3RvdGFsX3Jlc3VsdF9ieXRlcyArPSB2YWx1
ZQotCi0gICAgZGVmIGdldF9hdmVyYWdlX3JhdGlvKHNlbGYpOgotICAgICAgICBpZiBzZWxmLl90
b3RhbF9vcmlnaW5hbF9ieXRlcyAhPSAwOgotICAgICAgICAgICAgcmV0dXJuIChmbG9hdChzZWxm
Ll90b3RhbF9yZXN1bHRfYnl0ZXMpIC8KLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fdG90YWxf
b3JpZ2luYWxfYnl0ZXMpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gZmxvYXQo
J2luZicpCi0KLQotY2xhc3MgRGVmbGF0ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yKEV4dGVuc2lv
blByb2Nlc3NvckludGVyZmFjZSk6Ci0gICAgIiIiZGVmbGF0ZS1mcmFtZSBleHRlbnNpb24gcHJv
Y2Vzc29yLgotCi0gICAgU3BlY2lmaWNhdGlvbjoKLSAgICBodHRwOi8vdG9vbHMuaWV0Zi5vcmcv
aHRtbC9kcmFmdC10eW9zaGluby1oeWJpLXdlYnNvY2tldC1wZXJmcmFtZS1kZWZsYXRlCi0gICAg
IiIiCi0KLSAgICBfV0lORE9XX0JJVFNfUEFSQU0gPSAnbWF4X3dpbmRvd19iaXRzJwotICAgIF9O
T19DT05URVhUX1RBS0VPVkVSX1BBUkFNID0gJ25vX2NvbnRleHRfdGFrZW92ZXInCi0KLSAgICBk
ZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCk6Ci0gICAgICAgIEV4dGVuc2lvblByb2Nlc3Nvcklu
dGVyZmFjZS5fX2luaXRfXyhzZWxmLCByZXF1ZXN0KQotICAgICAgICBzZWxmLl9sb2dnZXIgPSB1
dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKLQotICAgICAgICBzZWxmLl9yZXNwb25zZV93aW5k
b3dfYml0cyA9IE5vbmUKLSAgICAgICAgc2VsZi5fcmVzcG9uc2Vfbm9fY29udGV4dF90YWtlb3Zl
ciA9IEZhbHNlCi0gICAgICAgIHNlbGYuX2JmaW5hbCA9IEZhbHNlCi0KLSAgICAgICAgIyBDYWxj
dWxhdGVzCi0gICAgICAgICMgICAgIChUb3RhbCBvdXRnb2luZyBieXRlcyBzdXBwbGllZCB0byB0
aGlzIGZpbHRlcikgLwotICAgICAgICAjICAgICAoVG90YWwgYnl0ZXMgc2VudCB0byB0aGUgbmV0
d29yayBhZnRlciBhcHBseWluZyB0aGlzIGZpbHRlcikKLSAgICAgICAgc2VsZi5fb3V0Z29pbmdf
YXZlcmFnZV9yYXRpb19jYWxjdWxhdG9yID0gX0F2ZXJhZ2VSYXRpb0NhbGN1bGF0b3IoKQotCi0g
ICAgICAgICMgQ2FsY3VsYXRlcwotICAgICAgICAjICAgICAoVG90YWwgYnl0ZXMgcmVjZWl2ZWQg
ZnJvbSB0aGUgbmV0d29yaykgLwotICAgICAgICAjICAgICAoVG90YWwgaW5jb21pbmcgYnl0ZXMg
b2J0YWluZWQgYWZ0ZXIgYXBwbHlpbmcgdGhpcyBmaWx0ZXIpCi0gICAgICAgIHNlbGYuX2luY29t
aW5nX2F2ZXJhZ2VfcmF0aW9fY2FsY3VsYXRvciA9IF9BdmVyYWdlUmF0aW9DYWxjdWxhdG9yKCkK
LQotICAgIGRlZiBuYW1lKHNlbGYpOgotICAgICAgICByZXR1cm4gY29tbW9uLkRFRkxBVEVfRlJB
TUVfRVhURU5TSU9OCi0KLSAgICBkZWYgX2dldF9leHRlbnNpb25fcmVzcG9uc2VfaW50ZXJuYWwo
c2VsZik6Ci0gICAgICAgICMgQW55IHVua25vd24gcGFyYW1ldGVyIHdpbGwgYmUganVzdCBpZ25v
cmVkLgotCi0gICAgICAgIHdpbmRvd19iaXRzID0gTm9uZQotICAgICAgICBpZiBzZWxmLl9yZXF1
ZXN0Lmhhc19wYXJhbWV0ZXIoc2VsZi5fV0lORE9XX0JJVFNfUEFSQU0pOgotICAgICAgICAgICAg
d2luZG93X2JpdHMgPSBzZWxmLl9yZXF1ZXN0LmdldF9wYXJhbWV0ZXJfdmFsdWUoCi0gICAgICAg
ICAgICAgICAgc2VsZi5fV0lORE9XX0JJVFNfUEFSQU0pCi0gICAgICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICAgICAgd2luZG93X2JpdHMgPSBfcGFyc2Vfd2luZG93X2JpdHMod2luZG93X2JpdHMp
Ci0gICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvciwgZToKLSAgICAgICAgICAgICAgICByZXR1
cm4gTm9uZQotCi0gICAgICAgIG5vX2NvbnRleHRfdGFrZW92ZXIgPSBzZWxmLl9yZXF1ZXN0Lmhh
c19wYXJhbWV0ZXIoCi0gICAgICAgICAgICBzZWxmLl9OT19DT05URVhUX1RBS0VPVkVSX1BBUkFN
KQotICAgICAgICBpZiAobm9fY29udGV4dF90YWtlb3ZlciBhbmQKLSAgICAgICAgICAgIHNlbGYu
X3JlcXVlc3QuZ2V0X3BhcmFtZXRlcl92YWx1ZSgKLSAgICAgICAgICAgICAgICBzZWxmLl9OT19D
T05URVhUX1RBS0VPVkVSX1BBUkFNKSBpcyBub3QgTm9uZSk6Ci0gICAgICAgICAgICByZXR1cm4g
Tm9uZQotCi0gICAgICAgIHNlbGYuX3JmYzE5NzlfZGVmbGF0ZXIgPSB1dGlsLl9SRkMxOTc5RGVm
bGF0ZXIoCi0gICAgICAgICAgICB3aW5kb3dfYml0cywgbm9fY29udGV4dF90YWtlb3ZlcikKLQot
ICAgICAgICBzZWxmLl9yZmMxOTc5X2luZmxhdGVyID0gdXRpbC5fUkZDMTk3OUluZmxhdGVyKCkK
LQotICAgICAgICBzZWxmLl9jb21wcmVzc19vdXRnb2luZyA9IFRydWUKLQotICAgICAgICByZXNw
b25zZSA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoc2VsZi5fcmVxdWVzdC5uYW1lKCkpCi0K
LSAgICAgICAgaWYgc2VsZi5fcmVzcG9uc2Vfd2luZG93X2JpdHMgaXMgbm90IE5vbmU6Ci0gICAg
ICAgICAgICByZXNwb25zZS5hZGRfcGFyYW1ldGVyKAotICAgICAgICAgICAgICAgIHNlbGYuX1dJ
TkRPV19CSVRTX1BBUkFNLCBzdHIoc2VsZi5fcmVzcG9uc2Vfd2luZG93X2JpdHMpKQotICAgICAg
ICBpZiBzZWxmLl9yZXNwb25zZV9ub19jb250ZXh0X3Rha2VvdmVyOgotICAgICAgICAgICAgcmVz
cG9uc2UuYWRkX3BhcmFtZXRlcigKLSAgICAgICAgICAgICAgICBzZWxmLl9OT19DT05URVhUX1RB
S0VPVkVSX1BBUkFNLCBOb25lKQotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAg
ICAgICAgICdFbmFibGUgJXMgZXh0ZW5zaW9uICgnCi0gICAgICAgICAgICAncmVxdWVzdDogd2lu
ZG93X2JpdHM9JXM7IG5vX2NvbnRleHRfdGFrZW92ZXI9JXIsICcKLSAgICAgICAgICAgICdyZXNw
b25zZTogd2luZG93X3diaXRzPSVzOyBub19jb250ZXh0X3Rha2VvdmVyPSVyKScgJQotICAgICAg
ICAgICAgKHNlbGYuX3JlcXVlc3QubmFtZSgpLAotICAgICAgICAgICAgIHdpbmRvd19iaXRzLAot
ICAgICAgICAgICAgIG5vX2NvbnRleHRfdGFrZW92ZXIsCi0gICAgICAgICAgICAgc2VsZi5fcmVz
cG9uc2Vfd2luZG93X2JpdHMsCi0gICAgICAgICAgICAgc2VsZi5fcmVzcG9uc2Vfbm9fY29udGV4
dF90YWtlb3ZlcikpCi0KLSAgICAgICAgcmV0dXJuIHJlc3BvbnNlCi0KLSAgICBkZWYgX3NldHVw
X3N0cmVhbV9vcHRpb25zX2ludGVybmFsKHNlbGYsIHN0cmVhbV9vcHRpb25zKToKLQotICAgICAg
ICBjbGFzcyBfT3V0Z29pbmdGaWx0ZXIob2JqZWN0KToKLQotICAgICAgICAgICAgZGVmIF9faW5p
dF9fKHNlbGYsIHBhcmVudCk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fcGFyZW50ID0gcGFyZW50
Ci0KLSAgICAgICAgICAgIGRlZiBmaWx0ZXIoc2VsZiwgZnJhbWUpOgotICAgICAgICAgICAgICAg
IHNlbGYuX3BhcmVudC5fb3V0Z29pbmdfZmlsdGVyKGZyYW1lKQotCi0gICAgICAgIGNsYXNzIF9J
bmNvbWluZ0ZpbHRlcihvYmplY3QpOgotCi0gICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwg
cGFyZW50KToKLSAgICAgICAgICAgICAgICBzZWxmLl9wYXJlbnQgPSBwYXJlbnQKLQotICAgICAg
ICAgICAgZGVmIGZpbHRlcihzZWxmLCBmcmFtZSk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fcGFy
ZW50Ll9pbmNvbWluZ19maWx0ZXIoZnJhbWUpCi0KLSAgICAgICAgc3RyZWFtX29wdGlvbnMub3V0
Z29pbmdfZnJhbWVfZmlsdGVycy5hcHBlbmQoCi0gICAgICAgICAgICBfT3V0Z29pbmdGaWx0ZXIo
c2VsZikpCi0gICAgICAgIHN0cmVhbV9vcHRpb25zLmluY29taW5nX2ZyYW1lX2ZpbHRlcnMuaW5z
ZXJ0KAotICAgICAgICAgICAgMCwgX0luY29taW5nRmlsdGVyKHNlbGYpKQotCi0gICAgZGVmIHNl
dF9yZXNwb25zZV93aW5kb3dfYml0cyhzZWxmLCB2YWx1ZSk6Ci0gICAgICAgIHNlbGYuX3Jlc3Bv
bnNlX3dpbmRvd19iaXRzID0gdmFsdWUKLQotICAgIGRlZiBzZXRfcmVzcG9uc2Vfbm9fY29udGV4
dF90YWtlb3ZlcihzZWxmLCB2YWx1ZSk6Ci0gICAgICAgIHNlbGYuX3Jlc3BvbnNlX25vX2NvbnRl
eHRfdGFrZW92ZXIgPSB2YWx1ZQotCi0gICAgZGVmIHNldF9iZmluYWwoc2VsZiwgdmFsdWUpOgot
ICAgICAgICBzZWxmLl9iZmluYWwgPSB2YWx1ZQotCi0gICAgZGVmIGVuYWJsZV9vdXRnb2luZ19j
b21wcmVzc2lvbihzZWxmKToKLSAgICAgICAgc2VsZi5fY29tcHJlc3Nfb3V0Z29pbmcgPSBUcnVl
Ci0KLSAgICBkZWYgZGlzYWJsZV9vdXRnb2luZ19jb21wcmVzc2lvbihzZWxmKToKLSAgICAgICAg
c2VsZi5fY29tcHJlc3Nfb3V0Z29pbmcgPSBGYWxzZQotCi0gICAgZGVmIF9vdXRnb2luZ19maWx0
ZXIoc2VsZiwgZnJhbWUpOgotICAgICAgICAiIiJUcmFuc2Zvcm0gb3V0Z29pbmcgZnJhbWVzLiBU
aGlzIG1ldGhvZCBpcyBjYWxsZWQgb25seSBieQotICAgICAgICBhbiBfT3V0Z29pbmdGaWx0ZXIg
aW5zdGFuY2UuCi0gICAgICAgICIiIgotCi0gICAgICAgIG9yaWdpbmFsX3BheWxvYWRfc2l6ZSA9
IGxlbihmcmFtZS5wYXlsb2FkKQotICAgICAgICBzZWxmLl9vdXRnb2luZ19hdmVyYWdlX3JhdGlv
X2NhbGN1bGF0b3IuYWRkX29yaWdpbmFsX2J5dGVzKAotICAgICAgICAgICAgICAgIG9yaWdpbmFs
X3BheWxvYWRfc2l6ZSkKLQotICAgICAgICBpZiAobm90IHNlbGYuX2NvbXByZXNzX291dGdvaW5n
IG9yCi0gICAgICAgICAgICBjb21tb24uaXNfY29udHJvbF9vcGNvZGUoZnJhbWUub3Bjb2RlKSk6
Ci0gICAgICAgICAgICBzZWxmLl9vdXRnb2luZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IuYWRk
X3Jlc3VsdF9ieXRlcygKLSAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxfcGF5bG9hZF9zaXpl
KQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgZnJhbWUucGF5bG9hZCA9IHNlbGYuX3Jm
YzE5NzlfZGVmbGF0ZXIuZmlsdGVyKAotICAgICAgICAgICAgZnJhbWUucGF5bG9hZCwgYmZpbmFs
PXNlbGYuX2JmaW5hbCkKLSAgICAgICAgZnJhbWUucnN2MSA9IDEKLQotICAgICAgICBmaWx0ZXJl
ZF9wYXlsb2FkX3NpemUgPSBsZW4oZnJhbWUucGF5bG9hZCkKLSAgICAgICAgc2VsZi5fb3V0Z29p
bmdfYXZlcmFnZV9yYXRpb19jYWxjdWxhdG9yLmFkZF9yZXN1bHRfYnl0ZXMoCi0gICAgICAgICAg
ICAgICAgZmlsdGVyZWRfcGF5bG9hZF9zaXplKQotCi0gICAgICAgIF9sb2dfb3V0Z29pbmdfY29t
cHJlc3Npb25fcmF0aW8oCi0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLAotICAgICAgICAg
ICAgICAgIG9yaWdpbmFsX3BheWxvYWRfc2l6ZSwKLSAgICAgICAgICAgICAgICBmaWx0ZXJlZF9w
YXlsb2FkX3NpemUsCi0gICAgICAgICAgICAgICAgc2VsZi5fb3V0Z29pbmdfYXZlcmFnZV9yYXRp
b19jYWxjdWxhdG9yLmdldF9hdmVyYWdlX3JhdGlvKCkpCi0KLSAgICBkZWYgX2luY29taW5nX2Zp
bHRlcihzZWxmLCBmcmFtZSk6Ci0gICAgICAgICIiIlRyYW5zZm9ybSBpbmNvbWluZyBmcmFtZXMu
IFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbmx5IGJ5Ci0gICAgICAgIGFuIF9JbmNvbWluZ0ZpbHRl
ciBpbnN0YW5jZS4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgcmVjZWl2ZWRfcGF5bG9hZF9zaXpl
ID0gbGVuKGZyYW1lLnBheWxvYWQpCi0gICAgICAgIHNlbGYuX2luY29taW5nX2F2ZXJhZ2VfcmF0
aW9fY2FsY3VsYXRvci5hZGRfcmVzdWx0X2J5dGVzKAotICAgICAgICAgICAgICAgIHJlY2VpdmVk
X3BheWxvYWRfc2l6ZSkKLQotICAgICAgICBpZiBmcmFtZS5yc3YxICE9IDEgb3IgY29tbW9uLmlz
X2NvbnRyb2xfb3Bjb2RlKGZyYW1lLm9wY29kZSk6Ci0gICAgICAgICAgICBzZWxmLl9pbmNvbWlu
Z19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IuYWRkX29yaWdpbmFsX2J5dGVzKAotICAgICAgICAg
ICAgICAgICAgICByZWNlaXZlZF9wYXlsb2FkX3NpemUpCi0gICAgICAgICAgICByZXR1cm4KLQot
ICAgICAgICBmcmFtZS5wYXlsb2FkID0gc2VsZi5fcmZjMTk3OV9pbmZsYXRlci5maWx0ZXIoZnJh
bWUucGF5bG9hZCkKLSAgICAgICAgZnJhbWUucnN2MSA9IDAKLQotICAgICAgICBmaWx0ZXJlZF9w
YXlsb2FkX3NpemUgPSBsZW4oZnJhbWUucGF5bG9hZCkKLSAgICAgICAgc2VsZi5faW5jb21pbmdf
YXZlcmFnZV9yYXRpb19jYWxjdWxhdG9yLmFkZF9vcmlnaW5hbF9ieXRlcygKLSAgICAgICAgICAg
ICAgICBmaWx0ZXJlZF9wYXlsb2FkX3NpemUpCi0KLSAgICAgICAgX2xvZ19pbmNvbWluZ19jb21w
cmVzc2lvbl9yYXRpbygKLSAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIsCi0gICAgICAgICAg
ICAgICAgcmVjZWl2ZWRfcGF5bG9hZF9zaXplLAotICAgICAgICAgICAgICAgIGZpbHRlcmVkX3Bh
eWxvYWRfc2l6ZSwKLSAgICAgICAgICAgICAgICBzZWxmLl9pbmNvbWluZ19hdmVyYWdlX3JhdGlv
X2NhbGN1bGF0b3IuZ2V0X2F2ZXJhZ2VfcmF0aW8oKSkKLQotCi1fYXZhaWxhYmxlX3Byb2Nlc3Nv
cnNbY29tbW9uLkRFRkxBVEVfRlJBTUVfRVhURU5TSU9OXSA9ICgKLSAgICBEZWZsYXRlRnJhbWVF
eHRlbnNpb25Qcm9jZXNzb3IpCi1fY29tcHJlc3Npb25fZXh0ZW5zaW9uX25hbWVzLmFwcGVuZChj
b21tb24uREVGTEFURV9GUkFNRV9FWFRFTlNJT04pCi0KLV9hdmFpbGFibGVfcHJvY2Vzc29yc1tj
b21tb24uWF9XRUJLSVRfREVGTEFURV9GUkFNRV9FWFRFTlNJT05dID0gKAotICAgIERlZmxhdGVG
cmFtZUV4dGVuc2lvblByb2Nlc3NvcikKLV9jb21wcmVzc2lvbl9leHRlbnNpb25fbmFtZXMuYXBw
ZW5kKGNvbW1vbi5YX1dFQktJVF9ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTikKLQotCi1kZWYgX3Bh
cnNlX2NvbXByZXNzaW9uX21ldGhvZChkYXRhKToKLSAgICAiIiJQYXJzZXMgdGhlIHZhbHVlIG9m
ICJtZXRob2QiIGV4dGVuc2lvbiBwYXJhbWV0ZXIuIiIiCi0KLSAgICByZXR1cm4gY29tbW9uLnBh
cnNlX2V4dGVuc2lvbnMoZGF0YSkKLQotCi1kZWYgX2NyZWF0ZV9hY2NlcHRlZF9tZXRob2RfZGVz
YyhtZXRob2RfbmFtZSwgbWV0aG9kX3BhcmFtcyk6Ci0gICAgIiIiQ3JlYXRlcyBhY2NlcHRlZC1t
ZXRob2QtZGVzYyBmcm9tIGdpdmVuIG1ldGhvZCBuYW1lIGFuZCBwYXJhbWV0ZXJzIiIiCi0KLSAg
ICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKG1ldGhvZF9uYW1lKQotICAg
IGZvciBuYW1lLCB2YWx1ZSBpbiBtZXRob2RfcGFyYW1zOgotICAgICAgICBleHRlbnNpb24uYWRk
X3BhcmFtZXRlcihuYW1lLCB2YWx1ZSkKLSAgICByZXR1cm4gY29tbW9uLmZvcm1hdF9leHRlbnNp
b24oZXh0ZW5zaW9uKQotCi0KLWNsYXNzIENvbXByZXNzaW9uRXh0ZW5zaW9uUHJvY2Vzc29yQmFz
ZShFeHRlbnNpb25Qcm9jZXNzb3JJbnRlcmZhY2UpOgotICAgICIiIkJhc2UgY2xhc3MgZm9yIHBl
cmZyYW1lLWNvbXByZXNzIGFuZCBwZXJtZXNzYWdlLWNvbXByZXNzIGV4dGVuc2lvbi4iIiIKLQot
ICAgIF9NRVRIT0RfUEFSQU0gPSAnbWV0aG9kJwotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJl
cXVlc3QpOgotICAgICAgICBFeHRlbnNpb25Qcm9jZXNzb3JJbnRlcmZhY2UuX19pbml0X18oc2Vs
ZiwgcmVxdWVzdCkKLSAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2Vy
KHNlbGYpCi0gICAgICAgIHNlbGYuX2NvbXByZXNzaW9uX21ldGhvZF9uYW1lID0gTm9uZQotICAg
ICAgICBzZWxmLl9jb21wcmVzc2lvbl9wcm9jZXNzb3IgPSBOb25lCi0gICAgICAgIHNlbGYuX2Nv
bXByZXNzaW9uX3Byb2Nlc3Nvcl9ob29rID0gTm9uZQotCi0gICAgZGVmIG5hbWUoc2VsZik6Ci0g
ICAgICAgIHJldHVybiAnJwotCi0gICAgZGVmIF9sb29rdXBfY29tcHJlc3Npb25fcHJvY2Vzc29y
KHNlbGYsIG1ldGhvZF9kZXNjKToKLSAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgIGRlZiBfZ2V0
X2NvbXByZXNzaW9uX3Byb2Nlc3Nvcl9yZXNwb25zZShzZWxmKToKLSAgICAgICAgIiIiTG9va3Mg
dXAgdGhlIGNvbXByZXNzaW9uIHByb2Nlc3NvciBiYXNlZCBvbiB0aGUgc2VsZi5fcmVxdWVzdCBh
bmQKLSAgICAgICAgICAgcmV0dXJucyB0aGUgY29tcHJlc3Npb24gcHJvY2Vzc29yJ3MgcmVzcG9u
c2UuCi0gICAgICAgICIiIgotCi0gICAgICAgIG1ldGhvZF9saXN0ID0gc2VsZi5fcmVxdWVzdC5n
ZXRfcGFyYW1ldGVyX3ZhbHVlKHNlbGYuX01FVEhPRF9QQVJBTSkKLSAgICAgICAgaWYgbWV0aG9k
X2xpc3QgaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIG1ldGhvZHMg
PSBfcGFyc2VfY29tcHJlc3Npb25fbWV0aG9kKG1ldGhvZF9saXN0KQotICAgICAgICBpZiBtZXRo
b2RzIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBjb21yZXNzaW9u
X3Byb2Nlc3NvciA9IE5vbmUKLSAgICAgICAgIyBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiB0
cmllcyBvbmx5IHRoZSBmaXJzdCBtZXRob2QgdGhhdCBtYXRjaGVzCi0gICAgICAgICMgc3VwcG9y
dGVkIGFsZ29yaXRobS4gRm9sbG93aW5nIG1ldGhvZHMgYXJlbid0IHRyaWVkIGV2ZW4gaWYgdGhl
Ci0gICAgICAgICMgZmlyc3Qgb25lIGlzIHJlamVjdGVkLgotICAgICAgICAjIFRPRE8oYmFzaGkp
OiBOZWVkIHRvIGNsYXJpZnkgdGhpcyBiZWhhdmlvci4KLSAgICAgICAgZm9yIG1ldGhvZF9kZXNj
IGluIG1ldGhvZHM6Ci0gICAgICAgICAgICBjb21wcmVzc2lvbl9wcm9jZXNzb3IgPSBzZWxmLl9s
b29rdXBfY29tcHJlc3Npb25fcHJvY2Vzc29yKAotICAgICAgICAgICAgICAgIG1ldGhvZF9kZXNj
KQotICAgICAgICAgICAgaWYgY29tcHJlc3Npb25fcHJvY2Vzc29yIGlzIG5vdCBOb25lOgotICAg
ICAgICAgICAgICAgIHNlbGYuX2NvbXByZXNzaW9uX21ldGhvZF9uYW1lID0gbWV0aG9kX2Rlc2Mu
bmFtZSgpCi0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgaWYgY29tcHJlc3Npb25fcHJv
Y2Vzc29yIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgIGlmIHNl
bGYuX2NvbXByZXNzaW9uX3Byb2Nlc3Nvcl9ob29rOgotICAgICAgICAgICAgc2VsZi5fY29tcHJl
c3Npb25fcHJvY2Vzc29yX2hvb2soY29tcHJlc3Npb25fcHJvY2Vzc29yKQotCi0gICAgICAgIHBy
b2Nlc3Nvcl9yZXNwb25zZSA9IGNvbXByZXNzaW9uX3Byb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jl
c3BvbnNlKCkKLSAgICAgICAgaWYgcHJvY2Vzc29yX3Jlc3BvbnNlIGlzIE5vbmU6Ci0gICAgICAg
ICAgICByZXR1cm4gTm9uZQotICAgICAgICBzZWxmLl9jb21wcmVzc2lvbl9wcm9jZXNzb3IgPSBj
b21wcmVzc2lvbl9wcm9jZXNzb3IKLSAgICAgICAgcmV0dXJuIHByb2Nlc3Nvcl9yZXNwb25zZQot
Ci0gICAgZGVmIF9nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlX2ludGVybmFsKHNlbGYpOgotICAgICAg
ICBwcm9jZXNzb3JfcmVzcG9uc2UgPSBzZWxmLl9nZXRfY29tcHJlc3Npb25fcHJvY2Vzc29yX3Jl
c3BvbnNlKCkKLSAgICAgICAgaWYgcHJvY2Vzc29yX3Jlc3BvbnNlIGlzIE5vbmU6Ci0gICAgICAg
ICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgIHJlc3BvbnNlID0gY29tbW9uLkV4dGVuc2lvblBh
cmFtZXRlcihzZWxmLl9yZXF1ZXN0Lm5hbWUoKSkKLSAgICAgICAgYWNjZXB0ZWRfbWV0aG9kX2Rl
c2MgPSBfY3JlYXRlX2FjY2VwdGVkX21ldGhvZF9kZXNjKAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9jb21wcmVzc2lvbl9tZXRob2RfbmFtZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc29yX3Jlc3BvbnNlLmdldF9wYXJhbWV0ZXJz
KCkpCi0gICAgICAgIHJlc3BvbnNlLmFkZF9wYXJhbWV0ZXIoc2VsZi5fTUVUSE9EX1BBUkFNLCBh
Y2NlcHRlZF9tZXRob2RfZGVzYykKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAgICAg
ICAgICAgJ0VuYWJsZSAlcyBleHRlbnNpb24gKG1ldGhvZDogJXMpJyAlCi0gICAgICAgICAgICAo
c2VsZi5fcmVxdWVzdC5uYW1lKCksIHNlbGYuX2NvbXByZXNzaW9uX21ldGhvZF9uYW1lKSkKLSAg
ICAgICAgcmV0dXJuIHJlc3BvbnNlCi0KLSAgICBkZWYgX3NldHVwX3N0cmVhbV9vcHRpb25zX2lu
dGVybmFsKHNlbGYsIHN0cmVhbV9vcHRpb25zKToKLSAgICAgICAgaWYgc2VsZi5fY29tcHJlc3Np
b25fcHJvY2Vzc29yIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgc2VsZi5f
Y29tcHJlc3Npb25fcHJvY2Vzc29yLnNldHVwX3N0cmVhbV9vcHRpb25zKHN0cmVhbV9vcHRpb25z
KQotCi0gICAgZGVmIHNldF9jb21wcmVzc2lvbl9wcm9jZXNzb3JfaG9vayhzZWxmLCBob29rKToK
LSAgICAgICAgc2VsZi5fY29tcHJlc3Npb25fcHJvY2Vzc29yX2hvb2sgPSBob29rCi0KLSAgICBk
ZWYgZ2V0X2NvbXByZXNzaW9uX3Byb2Nlc3NvcihzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYu
X2NvbXByZXNzaW9uX3Byb2Nlc3NvcgotCi0KLWNsYXNzIFBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5z
aW9uUHJvY2Vzc29yKEV4dGVuc2lvblByb2Nlc3NvckludGVyZmFjZSk6Ci0gICAgIiIicGVybWVz
c2FnZS1kZWZsYXRlIGV4dGVuc2lvbiBwcm9jZXNzb3IuIEl0J3MgYWxzbyB1c2VkIGZvcgotICAg
IHBlcm1lc3NhZ2UtY29tcHJlc3MgZXh0ZW5zaW9uIHdoZW4gdGhlIGRlZmxhdGUgbWV0aG9kIGlz
IGNob3Nlbi4KLQotICAgIFNwZWNpZmljYXRpb246Ci0gICAgaHR0cDovL3Rvb2xzLmlldGYub3Jn
L2h0bWwvZHJhZnQtaWV0Zi1oeWJpLXBlcm1lc3NhZ2UtY29tcHJlc3Npb24tMDgKLSAgICAiIiIK
LQotICAgIF9TRVJWRVJfTUFYX1dJTkRPV19CSVRTX1BBUkFNID0gJ3NlcnZlcl9tYXhfd2luZG93
X2JpdHMnCi0gICAgX1NFUlZFUl9OT19DT05URVhUX1RBS0VPVkVSX1BBUkFNID0gJ3NlcnZlcl9u
b19jb250ZXh0X3Rha2VvdmVyJwotICAgIF9DTElFTlRfTUFYX1dJTkRPV19CSVRTX1BBUkFNID0g
J2NsaWVudF9tYXhfd2luZG93X2JpdHMnCi0gICAgX0NMSUVOVF9OT19DT05URVhUX1RBS0VPVkVS
X1BBUkFNID0gJ2NsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyJwotCi0gICAgZGVmIF9faW5pdF9f
KHNlbGYsIHJlcXVlc3QsIGRyYWZ0MDg9VHJ1ZSk6Ci0gICAgICAgICIiIkNvbnN0cnVjdCBQZXJN
ZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAg
ICAgICBkcmFmdDA4OiBGb2xsb3cgdGhlIGNvbnN0cmFpbnRzIG9uIHRoZSBwYXJhbWV0ZXJzIHRo
YXQgd2VyZSBub3QKLSAgICAgICAgICAgICAgICBzcGVjaWZpZWQgZm9yIHBlcm1lc3NhZ2UtY29t
cHJlc3MgYnV0IGFyZSBzcGVjaWZpZWQgZm9yCi0gICAgICAgICAgICAgICAgcGVybWVzc2FnZS1k
ZWZsYXRlIGFzIG9uCi0gICAgICAgICAgICAgICAgZHJhZnQtaWV0Zi1oeWJpLXBlcm1lc3NhZ2Ut
Y29tcHJlc3Npb24tMDguCi0gICAgICAgICIiIgotCi0gICAgICAgIEV4dGVuc2lvblByb2Nlc3Nv
ckludGVyZmFjZS5fX2luaXRfXyhzZWxmLCByZXF1ZXN0KQotICAgICAgICBzZWxmLl9sb2dnZXIg
PSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKLQotICAgICAgICBzZWxmLl9wcmVmZXJyZWRf
Y2xpZW50X21heF93aW5kb3dfYml0cyA9IE5vbmUKLSAgICAgICAgc2VsZi5fY2xpZW50X25vX2Nv
bnRleHRfdGFrZW92ZXIgPSBGYWxzZQotCi0gICAgICAgIHNlbGYuX2RyYWZ0MDggPSBkcmFmdDA4
Ci0KLSAgICBkZWYgbmFtZShzZWxmKToKLSAgICAgICAgcmV0dXJuICdkZWZsYXRlJwotCi0gICAg
ZGVmIF9nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlX2ludGVybmFsKHNlbGYpOgotICAgICAgICBpZiBz
ZWxmLl9kcmFmdDA4OgotICAgICAgICAgICAgZm9yIG5hbWUgaW4gc2VsZi5fcmVxdWVzdC5nZXRf
cGFyYW1ldGVyX25hbWVzKCk6Ci0gICAgICAgICAgICAgICAgaWYgbmFtZSBub3QgaW4gW3NlbGYu
X1NFUlZFUl9NQVhfV0lORE9XX0JJVFNfUEFSQU0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbGYuX1NFUlZFUl9OT19DT05URVhUX1RBS0VPVkVSX1BBUkFNLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9DTElFTlRfTUFYX1dJTkRPV19CSVRTX1BBUkFN
XToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdVbmtub3duIHBhcmFt
ZXRlcjogJXInLCBuYW1lKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgIyBBbnkgdW5rbm93biBwYXJhbWV0ZXIgd2lsbCBiZSBqdXN0
IGlnbm9yZWQuCi0gICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgc2VydmVyX21heF93aW5kb3df
Yml0cyA9IE5vbmUKLSAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC5oYXNfcGFyYW1ldGVyKHNlbGYu
X1NFUlZFUl9NQVhfV0lORE9XX0JJVFNfUEFSQU0pOgotICAgICAgICAgICAgc2VydmVyX21heF93
aW5kb3dfYml0cyA9IHNlbGYuX3JlcXVlc3QuZ2V0X3BhcmFtZXRlcl92YWx1ZSgKLSAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fU0VSVkVSX01BWF9XSU5ET1dfQklUU19QQVJBTSkKLSAgICAgICAg
ICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzID0gX3BhcnNl
X3dpbmRvd19iaXRzKAotICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRz
KQotICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IsIGU6Ci0gICAgICAgICAgICAgICAgc2Vs
Zi5fbG9nZ2VyLmRlYnVnKCdCYWQgJXMgcGFyYW1ldGVyOiAlcicsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbGYuX1NFUlZFUl9NQVhfV0lORE9XX0JJVFNfUEFSQU0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIE5vbmUKLQotICAgICAgICBzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlciA9IHNlbGYuX3Jl
cXVlc3QuaGFzX3BhcmFtZXRlcigKLSAgICAgICAgICAgIHNlbGYuX1NFUlZFUl9OT19DT05URVhU
X1RBS0VPVkVSX1BBUkFNKQotICAgICAgICBpZiAoc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXIg
YW5kCi0gICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LmdldF9wYXJhbWV0ZXJfdmFsdWUoCi0gICAg
ICAgICAgICAgICAgc2VsZi5fU0VSVkVSX05PX0NPTlRFWFRfVEFLRU9WRVJfUEFSQU0pIGlzIG5v
dCBOb25lKToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXMgcGFyYW1ldGVyIG11
c3Qgbm90IGhhdmUgYSB2YWx1ZTogJXInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNlbGYuX1NFUlZFUl9OT19DT05URVhUX1RBS0VPVkVSX1BBUkFNLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyKQotICAgICAgICAgICAg
cmV0dXJuIE5vbmUKLQotICAgICAgICAjIGNsaWVudF9tYXhfd2luZG93X2JpdHMgZnJvbSBhIGNs
aWVudCBpbmRpY2F0ZXMgd2hldGhlciB0aGUgY2xpZW50IGNhbgotICAgICAgICAjIGFjY2VwdCBj
bGllbnRfbWF4X3dpbmRvd19iaXRzIGZyb20gYSBzZXJ2ZXIgb3Igbm90LgotICAgICAgICBjbGll
bnRfY2xpZW50X21heF93aW5kb3dfYml0cyA9IHNlbGYuX3JlcXVlc3QuaGFzX3BhcmFtZXRlcigK
LSAgICAgICAgICAgIHNlbGYuX0NMSUVOVF9NQVhfV0lORE9XX0JJVFNfUEFSQU0pCi0gICAgICAg
IGlmIChzZWxmLl9kcmFmdDA4IGFuZAotICAgICAgICAgICAgY2xpZW50X2NsaWVudF9tYXhfd2lu
ZG93X2JpdHMgYW5kCi0gICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LmdldF9wYXJhbWV0ZXJfdmFs
dWUoCi0gICAgICAgICAgICAgICAgc2VsZi5fQ0xJRU5UX01BWF9XSU5ET1dfQklUU19QQVJBTSkg
aXMgbm90IE5vbmUpOgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCclcyBwYXJhbWV0
ZXIgbXVzdCBub3QgaGF2ZSBhIHZhbHVlIGluIGEgJwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdjbGllbnRcJ3Mgb3BlbmluZyBoYW5kc2hha2U6ICVyJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZWxmLl9DTElFTlRfTUFYX1dJTkRPV19CSVRTX1BBUkFNLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9jbGllbnRfbWF4X3dpbmRvd19iaXRz
KQotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICBzZWxmLl9yZmMxOTc5X2RlZmxh
dGVyID0gdXRpbC5fUkZDMTk3OURlZmxhdGVyKAotICAgICAgICAgICAgc2VydmVyX21heF93aW5k
b3dfYml0cywgc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXIpCi0KLSAgICAgICAgIyBOb3RlIHRo
YXQgd2UgcHJlcGFyZSBmb3IgaW5jb21pbmcgbWVzc2FnZXMgY29tcHJlc3NlZCB3aXRoIHdpbmRv
dwotICAgICAgICAjIGJpdHMgdXB0byAxNSByZWdhcmRsZXNzIG9mIHRoZSBjbGllbnRfbWF4X3dp
bmRvd19iaXRzIHZhbHVlIHRvIGJlCi0gICAgICAgICMgc2VudCB0byB0aGUgY2xpZW50LgotICAg
ICAgICBzZWxmLl9yZmMxOTc5X2luZmxhdGVyID0gdXRpbC5fUkZDMTk3OUluZmxhdGVyKCkKLQot
ICAgICAgICBzZWxmLl9mcmFtZXIgPSBfUGVyTWVzc2FnZURlZmxhdGVGcmFtZXIoCi0gICAgICAg
ICAgICBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzLCBzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcikK
LSAgICAgICAgc2VsZi5fZnJhbWVyLnNldF9iZmluYWwoRmFsc2UpCi0gICAgICAgIHNlbGYuX2Zy
YW1lci5zZXRfY29tcHJlc3Nfb3V0Z29pbmdfZW5hYmxlZChUcnVlKQotCi0gICAgICAgIHJlc3Bv
bnNlID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcihzZWxmLl9yZXF1ZXN0Lm5hbWUoKSkKLQot
ICAgICAgICBpZiBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzIGlzIG5vdCBOb25lOgotICAgICAgICAg
ICAgcmVzcG9uc2UuYWRkX3BhcmFtZXRlcigKLSAgICAgICAgICAgICAgICBzZWxmLl9TRVJWRVJf
TUFYX1dJTkRPV19CSVRTX1BBUkFNLAotICAgICAgICAgICAgICAgIHN0cihzZXJ2ZXJfbWF4X3dp
bmRvd19iaXRzKSkKLQotICAgICAgICBpZiBzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcjoKLSAg
ICAgICAgICAgIHJlc3BvbnNlLmFkZF9wYXJhbWV0ZXIoCi0gICAgICAgICAgICAgICAgc2VsZi5f
U0VSVkVSX05PX0NPTlRFWFRfVEFLRU9WRVJfUEFSQU0sIE5vbmUpCi0KLSAgICAgICAgaWYgc2Vs
Zi5fcHJlZmVycmVkX2NsaWVudF9tYXhfd2luZG93X2JpdHMgaXMgbm90IE5vbmU6Ci0gICAgICAg
ICAgICBpZiBzZWxmLl9kcmFmdDA4IGFuZCBub3QgY2xpZW50X2NsaWVudF9tYXhfd2luZG93X2Jp
dHM6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdQcm9jZXNzb3IgaXMgY29u
ZmlndXJlZCB0byB1c2UgJXMgYnV0ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ3RoZSBjbGllbnQgY2Fubm90IGFjY2VwdCBpdCcsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbGYuX0NMSUVOVF9NQVhfV0lORE9XX0JJVFNfUEFSQU0pCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAgIHJlc3BvbnNlLmFkZF9wYXJhbWV0ZXIo
Ci0gICAgICAgICAgICAgICAgc2VsZi5fQ0xJRU5UX01BWF9XSU5ET1dfQklUU19QQVJBTSwKLSAg
ICAgICAgICAgICAgICBzdHIoc2VsZi5fcHJlZmVycmVkX2NsaWVudF9tYXhfd2luZG93X2JpdHMp
KQotCi0gICAgICAgIGlmIHNlbGYuX2NsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyOgotICAgICAg
ICAgICAgcmVzcG9uc2UuYWRkX3BhcmFtZXRlcigKLSAgICAgICAgICAgICAgICBzZWxmLl9DTElF
TlRfTk9fQ09OVEVYVF9UQUtFT1ZFUl9QQVJBTSwgTm9uZSkKLQotICAgICAgICBzZWxmLl9sb2dn
ZXIuZGVidWcoCi0gICAgICAgICAgICAnRW5hYmxlICVzIGV4dGVuc2lvbiAoJwotICAgICAgICAg
ICAgJ3JlcXVlc3Q6IHNlcnZlcl9tYXhfd2luZG93X2JpdHM9JXM7ICcKLSAgICAgICAgICAgICdz
ZXJ2ZXJfbm9fY29udGV4dF90YWtlb3Zlcj0lciwgJwotICAgICAgICAgICAgJ3Jlc3BvbnNlOiBj
bGllbnRfbWF4X3dpbmRvd19iaXRzPSVzOyAnCi0gICAgICAgICAgICAnY2xpZW50X25vX2NvbnRl
eHRfdGFrZW92ZXI9JXIpJyAlCi0gICAgICAgICAgICAoc2VsZi5fcmVxdWVzdC5uYW1lKCksCi0g
ICAgICAgICAgICAgc2VydmVyX21heF93aW5kb3dfYml0cywKLSAgICAgICAgICAgICBzZXJ2ZXJf
bm9fY29udGV4dF90YWtlb3ZlciwKLSAgICAgICAgICAgICBzZWxmLl9wcmVmZXJyZWRfY2xpZW50
X21heF93aW5kb3dfYml0cywKLSAgICAgICAgICAgICBzZWxmLl9jbGllbnRfbm9fY29udGV4dF90
YWtlb3ZlcikpCi0KLSAgICAgICAgcmV0dXJuIHJlc3BvbnNlCi0KLSAgICBkZWYgX3NldHVwX3N0
cmVhbV9vcHRpb25zX2ludGVybmFsKHNlbGYsIHN0cmVhbV9vcHRpb25zKToKLSAgICAgICAgc2Vs
Zi5fZnJhbWVyLnNldHVwX3N0cmVhbV9vcHRpb25zKHN0cmVhbV9vcHRpb25zKQotCi0gICAgZGVm
IHNldF9jbGllbnRfbWF4X3dpbmRvd19iaXRzKHNlbGYsIHZhbHVlKToKLSAgICAgICAgIiIiSWYg
dGhpcyBvcHRpb24gaXMgc3BlY2lmaWVkLCB0aGlzIGNsYXNzIGFkZHMgdGhlCi0gICAgICAgIGNs
aWVudF9tYXhfd2luZG93X2JpdHMgZXh0ZW5zaW9uIHBhcmFtZXRlciB0byB0aGUgaGFuZHNoYWtl
IHJlc3BvbnNlLAotICAgICAgICBidXQgZG9lc24ndCByZWR1Y2UgdGhlIExaNzcgc2xpZGluZyB3
aW5kb3cgc2l6ZSBvZiBpdHMgaW5mbGF0ZXIuCi0gICAgICAgIEkuZS4sIHlvdSBjYW4gdXNlIHRo
aXMgZm9yIHRlc3RpbmcgY2xpZW50IGltcGxlbWVudGF0aW9uIGJ1dCBjYW5ub3QKLSAgICAgICAg
cmVkdWNlIG1lbW9yeSB1c2FnZSBvZiB0aGlzIGNsYXNzLgotCi0gICAgICAgIElmIHRoaXMgbWV0
aG9kIGhhcyBiZWVuIGNhbGxlZCB3aXRoIFRydWUgYW5kIGFuIG9mZmVyIHdpdGhvdXQgdGhlCi0g
ICAgICAgIGNsaWVudF9tYXhfd2luZG93X2JpdHMgZXh0ZW5zaW9uIHBhcmFtZXRlciBpcyByZWNl
aXZlZCwKLSAgICAgICAgLSAoV2hlbiBwcm9jZXNzaW5nIHRoZSBwZXJtZXNzYWdlLWRlZmxhdGUg
ZXh0ZW5zaW9uKSB0aGlzIHByb2Nlc3NvcgotICAgICAgICAgIGRlY2xpbmVzIHRoZSByZXF1ZXN0
LgotICAgICAgICAtIChXaGVuIHByb2Nlc3NpbmcgdGhlIHBlcm1lc3NhZ2UtY29tcHJlc3MgZXh0
ZW5zaW9uKSB0aGlzIHByb2Nlc3NvcgotICAgICAgICAgIGFjY2VwdHMgdGhlIHJlcXVlc3QuCi0g
ICAgICAgICIiIgotCi0gICAgICAgIHNlbGYuX3ByZWZlcnJlZF9jbGllbnRfbWF4X3dpbmRvd19i
aXRzID0gdmFsdWUKLQotICAgIGRlZiBzZXRfY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIoc2Vs
ZiwgdmFsdWUpOgotICAgICAgICAiIiJJZiB0aGlzIG9wdGlvbiBpcyBzcGVjaWZpZWQsIHRoaXMg
Y2xhc3MgYWRkcyB0aGUKLSAgICAgICAgY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIgZXh0ZW5z
aW9uIHBhcmFtZXRlciB0byB0aGUgaGFuZHNoYWtlCi0gICAgICAgIHJlc3BvbnNlLCBidXQgZG9l
c24ndCByZXNldCBpbmZsYXRlciBmb3IgZWFjaCBtZXNzYWdlLiBJLmUuLCB5b3UgY2FuCi0gICAg
ICAgIHVzZSB0aGlzIGZvciB0ZXN0aW5nIGNsaWVudCBpbXBsZW1lbnRhdGlvbiBidXQgY2Fubm90
IHJlZHVjZSBtZW1vcnkKLSAgICAgICAgdXNhZ2Ugb2YgdGhpcyBjbGFzcy4KLSAgICAgICAgIiIi
Ci0KLSAgICAgICAgc2VsZi5fY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIgPSB2YWx1ZQotCi0g
ICAgZGVmIHNldF9iZmluYWwoc2VsZiwgdmFsdWUpOgotICAgICAgICBzZWxmLl9mcmFtZXIuc2V0
X2JmaW5hbCh2YWx1ZSkKLQotICAgIGRlZiBlbmFibGVfb3V0Z29pbmdfY29tcHJlc3Npb24oc2Vs
Zik6Ci0gICAgICAgIHNlbGYuX2ZyYW1lci5zZXRfY29tcHJlc3Nfb3V0Z29pbmdfZW5hYmxlZChU
cnVlKQotCi0gICAgZGVmIGRpc2FibGVfb3V0Z29pbmdfY29tcHJlc3Npb24oc2VsZik6Ci0gICAg
ICAgIHNlbGYuX2ZyYW1lci5zZXRfY29tcHJlc3Nfb3V0Z29pbmdfZW5hYmxlZChGYWxzZSkKLQot
Ci1jbGFzcyBfUGVyTWVzc2FnZURlZmxhdGVGcmFtZXIob2JqZWN0KToKLSAgICAiIiJBIGZyYW1l
ciBmb3IgZXh0ZW5zaW9ucyB3aXRoIHBlci1tZXNzYWdlIERFRkxBVEUgZmVhdHVyZS4iIiIKLQot
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkZWZsYXRlX21heF93aW5kb3dfYml0cywgZGVmbGF0ZV9u
b19jb250ZXh0X3Rha2VvdmVyKToKLSAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xh
c3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgc2VsZi5fcmZjMTk3OV9kZWZsYXRlciA9IHV0aWwu
X1JGQzE5NzlEZWZsYXRlcigKLSAgICAgICAgICAgIGRlZmxhdGVfbWF4X3dpbmRvd19iaXRzLCBk
ZWZsYXRlX25vX2NvbnRleHRfdGFrZW92ZXIpCi0KLSAgICAgICAgc2VsZi5fcmZjMTk3OV9pbmZs
YXRlciA9IHV0aWwuX1JGQzE5NzlJbmZsYXRlcigpCi0KLSAgICAgICAgc2VsZi5fYmZpbmFsID0g
RmFsc2UKLQotICAgICAgICBzZWxmLl9jb21wcmVzc19vdXRnb2luZ19lbmFibGVkID0gRmFsc2UK
LQotICAgICAgICAjIFRydWUgaWYgYSBtZXNzYWdlIGlzIGZyYWdtZW50ZWQgYW5kIGNvbXByZXNz
aW9uIGlzIG9uZ29pbmcuCi0gICAgICAgIHNlbGYuX2NvbXByZXNzX29uZ29pbmcgPSBGYWxzZQot
Ci0gICAgICAgICMgQ2FsY3VsYXRlcwotICAgICAgICAjICAgICAoVG90YWwgb3V0Z29pbmcgYnl0
ZXMgc3VwcGxpZWQgdG8gdGhpcyBmaWx0ZXIpIC8KLSAgICAgICAgIyAgICAgKFRvdGFsIGJ5dGVz
IHNlbnQgdG8gdGhlIG5ldHdvcmsgYWZ0ZXIgYXBwbHlpbmcgdGhpcyBmaWx0ZXIpCi0gICAgICAg
IHNlbGYuX291dGdvaW5nX2F2ZXJhZ2VfcmF0aW9fY2FsY3VsYXRvciA9IF9BdmVyYWdlUmF0aW9D
YWxjdWxhdG9yKCkKLQotICAgICAgICAjIENhbGN1bGF0ZXMKLSAgICAgICAgIyAgICAgKFRvdGFs
IGJ5dGVzIHJlY2VpdmVkIGZyb20gdGhlIG5ldHdvcmspIC8KLSAgICAgICAgIyAgICAgKFRvdGFs
IGluY29taW5nIGJ5dGVzIG9idGFpbmVkIGFmdGVyIGFwcGx5aW5nIHRoaXMgZmlsdGVyKQotICAg
ICAgICBzZWxmLl9pbmNvbWluZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IgPSBfQXZlcmFnZVJh
dGlvQ2FsY3VsYXRvcigpCi0KLSAgICBkZWYgc2V0X2JmaW5hbChzZWxmLCB2YWx1ZSk6Ci0gICAg
ICAgIHNlbGYuX2JmaW5hbCA9IHZhbHVlCi0KLSAgICBkZWYgc2V0X2NvbXByZXNzX291dGdvaW5n
X2VuYWJsZWQoc2VsZiwgdmFsdWUpOgotICAgICAgICBzZWxmLl9jb21wcmVzc19vdXRnb2luZ19l
bmFibGVkID0gdmFsdWUKLQotICAgIGRlZiBfcHJvY2Vzc19pbmNvbWluZ19tZXNzYWdlKHNlbGYs
IG1lc3NhZ2UsIGRlY29tcHJlc3MpOgotICAgICAgICBpZiBub3QgZGVjb21wcmVzczoKLSAgICAg
ICAgICAgIHJldHVybiBtZXNzYWdlCi0KLSAgICAgICAgcmVjZWl2ZWRfcGF5bG9hZF9zaXplID0g
bGVuKG1lc3NhZ2UpCi0gICAgICAgIHNlbGYuX2luY29taW5nX2F2ZXJhZ2VfcmF0aW9fY2FsY3Vs
YXRvci5hZGRfcmVzdWx0X2J5dGVzKAotICAgICAgICAgICAgICAgIHJlY2VpdmVkX3BheWxvYWRf
c2l6ZSkKLQotICAgICAgICBtZXNzYWdlID0gc2VsZi5fcmZjMTk3OV9pbmZsYXRlci5maWx0ZXIo
bWVzc2FnZSkKLQotICAgICAgICBmaWx0ZXJlZF9wYXlsb2FkX3NpemUgPSBsZW4obWVzc2FnZSkK
LSAgICAgICAgc2VsZi5faW5jb21pbmdfYXZlcmFnZV9yYXRpb19jYWxjdWxhdG9yLmFkZF9vcmln
aW5hbF9ieXRlcygKLSAgICAgICAgICAgICAgICBmaWx0ZXJlZF9wYXlsb2FkX3NpemUpCi0KLSAg
ICAgICAgX2xvZ19pbmNvbWluZ19jb21wcmVzc2lvbl9yYXRpbygKLSAgICAgICAgICAgICAgICBz
ZWxmLl9sb2dnZXIsCi0gICAgICAgICAgICAgICAgcmVjZWl2ZWRfcGF5bG9hZF9zaXplLAotICAg
ICAgICAgICAgICAgIGZpbHRlcmVkX3BheWxvYWRfc2l6ZSwKLSAgICAgICAgICAgICAgICBzZWxm
Ll9pbmNvbWluZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IuZ2V0X2F2ZXJhZ2VfcmF0aW8oKSkK
LQotICAgICAgICByZXR1cm4gbWVzc2FnZQotCi0gICAgZGVmIF9wcm9jZXNzX291dGdvaW5nX21l
c3NhZ2Uoc2VsZiwgbWVzc2FnZSwgZW5kLCBiaW5hcnkpOgotICAgICAgICBpZiBub3QgYmluYXJ5
OgotICAgICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UuZW5jb2RlKCd1dGYtOCcpCi0KLSAgICAg
ICAgaWYgbm90IHNlbGYuX2NvbXByZXNzX291dGdvaW5nX2VuYWJsZWQ6Ci0gICAgICAgICAgICBy
ZXR1cm4gbWVzc2FnZQotCi0gICAgICAgIG9yaWdpbmFsX3BheWxvYWRfc2l6ZSA9IGxlbihtZXNz
YWdlKQotICAgICAgICBzZWxmLl9vdXRnb2luZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IuYWRk
X29yaWdpbmFsX2J5dGVzKAotICAgICAgICAgICAgb3JpZ2luYWxfcGF5bG9hZF9zaXplKQotCi0g
ICAgICAgIG1lc3NhZ2UgPSBzZWxmLl9yZmMxOTc5X2RlZmxhdGVyLmZpbHRlcigKLSAgICAgICAg
ICAgIG1lc3NhZ2UsIGVuZD1lbmQsIGJmaW5hbD1zZWxmLl9iZmluYWwpCi0KLSAgICAgICAgZmls
dGVyZWRfcGF5bG9hZF9zaXplID0gbGVuKG1lc3NhZ2UpCi0gICAgICAgIHNlbGYuX291dGdvaW5n
X2F2ZXJhZ2VfcmF0aW9fY2FsY3VsYXRvci5hZGRfcmVzdWx0X2J5dGVzKAotICAgICAgICAgICAg
ZmlsdGVyZWRfcGF5bG9hZF9zaXplKQotCi0gICAgICAgIF9sb2dfb3V0Z29pbmdfY29tcHJlc3Np
b25fcmF0aW8oCi0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLAotICAgICAgICAgICAgICAg
IG9yaWdpbmFsX3BheWxvYWRfc2l6ZSwKLSAgICAgICAgICAgICAgICBmaWx0ZXJlZF9wYXlsb2Fk
X3NpemUsCi0gICAgICAgICAgICAgICAgc2VsZi5fb3V0Z29pbmdfYXZlcmFnZV9yYXRpb19jYWxj
dWxhdG9yLmdldF9hdmVyYWdlX3JhdGlvKCkpCi0KLSAgICAgICAgaWYgbm90IHNlbGYuX2NvbXBy
ZXNzX29uZ29pbmc6Ci0gICAgICAgICAgICBzZWxmLl9vdXRnb2luZ19mcmFtZV9maWx0ZXIuc2V0
X2NvbXByZXNzaW9uX2JpdCgpCi0gICAgICAgIHNlbGYuX2NvbXByZXNzX29uZ29pbmcgPSBub3Qg
ZW5kCi0gICAgICAgIHJldHVybiBtZXNzYWdlCi0KLSAgICBkZWYgX3Byb2Nlc3NfaW5jb21pbmdf
ZnJhbWUoc2VsZiwgZnJhbWUpOgotICAgICAgICBpZiBmcmFtZS5yc3YxID09IDEgYW5kIG5vdCBj
b21tb24uaXNfY29udHJvbF9vcGNvZGUoZnJhbWUub3Bjb2RlKToKLSAgICAgICAgICAgIHNlbGYu
X2luY29taW5nX21lc3NhZ2VfZmlsdGVyLmRlY29tcHJlc3NfbmV4dF9tZXNzYWdlKCkKLSAgICAg
ICAgICAgIGZyYW1lLnJzdjEgPSAwCi0KLSAgICBkZWYgX3Byb2Nlc3Nfb3V0Z29pbmdfZnJhbWUo
c2VsZiwgZnJhbWUsIGNvbXByZXNzaW9uX2JpdCk6Ci0gICAgICAgIGlmIChub3QgY29tcHJlc3Np
b25fYml0IG9yCi0gICAgICAgICAgICBjb21tb24uaXNfY29udHJvbF9vcGNvZGUoZnJhbWUub3Bj
b2RlKSk6Ci0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBmcmFtZS5yc3YxID0gMQotCi0g
ICAgZGVmIHNldHVwX3N0cmVhbV9vcHRpb25zKHNlbGYsIHN0cmVhbV9vcHRpb25zKToKLSAgICAg
ICAgIiIiQ3JlYXRlcyBmaWx0ZXJzIGFuZCBzZXRzIHRoZW0gdG8gdGhlIFN0cmVhbU9wdGlvbnMu
IiIiCi0KLSAgICAgICAgY2xhc3MgX091dGdvaW5nTWVzc2FnZUZpbHRlcihvYmplY3QpOgotCi0g
ICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50KToKLSAgICAgICAgICAgICAgICBz
ZWxmLl9wYXJlbnQgPSBwYXJlbnQKLQotICAgICAgICAgICAgZGVmIGZpbHRlcihzZWxmLCBtZXNz
YWdlLCBlbmQ9VHJ1ZSwgYmluYXJ5PUZhbHNlKToKLSAgICAgICAgICAgICAgICByZXR1cm4gc2Vs
Zi5fcGFyZW50Ll9wcm9jZXNzX291dGdvaW5nX21lc3NhZ2UoCi0gICAgICAgICAgICAgICAgICAg
IG1lc3NhZ2UsIGVuZCwgYmluYXJ5KQotCi0gICAgICAgIGNsYXNzIF9JbmNvbWluZ01lc3NhZ2VG
aWx0ZXIob2JqZWN0KToKLQotICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCk6
Ci0gICAgICAgICAgICAgICAgc2VsZi5fcGFyZW50ID0gcGFyZW50Ci0gICAgICAgICAgICAgICAg
c2VsZi5fZGVjb21wcmVzc19uZXh0X21lc3NhZ2UgPSBGYWxzZQotCi0gICAgICAgICAgICBkZWYg
ZGVjb21wcmVzc19uZXh0X21lc3NhZ2Uoc2VsZik6Ci0gICAgICAgICAgICAgICAgc2VsZi5fZGVj
b21wcmVzc19uZXh0X21lc3NhZ2UgPSBUcnVlCi0KLSAgICAgICAgICAgIGRlZiBmaWx0ZXIoc2Vs
ZiwgbWVzc2FnZSk6Ci0gICAgICAgICAgICAgICAgbWVzc2FnZSA9IHNlbGYuX3BhcmVudC5fcHJv
Y2Vzc19pbmNvbWluZ19tZXNzYWdlKAotICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLCBzZWxm
Ll9kZWNvbXByZXNzX25leHRfbWVzc2FnZSkKLSAgICAgICAgICAgICAgICBzZWxmLl9kZWNvbXBy
ZXNzX25leHRfbWVzc2FnZSA9IEZhbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1lc3NhZ2UK
LQotICAgICAgICBzZWxmLl9vdXRnb2luZ19tZXNzYWdlX2ZpbHRlciA9IF9PdXRnb2luZ01lc3Nh
Z2VGaWx0ZXIoc2VsZikKLSAgICAgICAgc2VsZi5faW5jb21pbmdfbWVzc2FnZV9maWx0ZXIgPSBf
SW5jb21pbmdNZXNzYWdlRmlsdGVyKHNlbGYpCi0gICAgICAgIHN0cmVhbV9vcHRpb25zLm91dGdv
aW5nX21lc3NhZ2VfZmlsdGVycy5hcHBlbmQoCi0gICAgICAgICAgICBzZWxmLl9vdXRnb2luZ19t
ZXNzYWdlX2ZpbHRlcikKLSAgICAgICAgc3RyZWFtX29wdGlvbnMuaW5jb21pbmdfbWVzc2FnZV9m
aWx0ZXJzLmFwcGVuZCgKLSAgICAgICAgICAgIHNlbGYuX2luY29taW5nX21lc3NhZ2VfZmlsdGVy
KQotCi0gICAgICAgIGNsYXNzIF9PdXRnb2luZ0ZyYW1lRmlsdGVyKG9iamVjdCk6Ci0KLSAgICAg
ICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQpOgotICAgICAgICAgICAgICAgIHNlbGYu
X3BhcmVudCA9IHBhcmVudAotICAgICAgICAgICAgICAgIHNlbGYuX3NldF9jb21wcmVzc2lvbl9i
aXQgPSBGYWxzZQotCi0gICAgICAgICAgICBkZWYgc2V0X2NvbXByZXNzaW9uX2JpdChzZWxmKToK
LSAgICAgICAgICAgICAgICBzZWxmLl9zZXRfY29tcHJlc3Npb25fYml0ID0gVHJ1ZQotCi0gICAg
ICAgICAgICBkZWYgZmlsdGVyKHNlbGYsIGZyYW1lKToKLSAgICAgICAgICAgICAgICBzZWxmLl9w
YXJlbnQuX3Byb2Nlc3Nfb3V0Z29pbmdfZnJhbWUoCi0gICAgICAgICAgICAgICAgICAgIGZyYW1l
LCBzZWxmLl9zZXRfY29tcHJlc3Npb25fYml0KQotICAgICAgICAgICAgICAgIHNlbGYuX3NldF9j
b21wcmVzc2lvbl9iaXQgPSBGYWxzZQotCi0gICAgICAgIGNsYXNzIF9JbmNvbWluZ0ZyYW1lRmls
dGVyKG9iamVjdCk6Ci0KLSAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQpOgot
ICAgICAgICAgICAgICAgIHNlbGYuX3BhcmVudCA9IHBhcmVudAotCi0gICAgICAgICAgICBkZWYg
ZmlsdGVyKHNlbGYsIGZyYW1lKToKLSAgICAgICAgICAgICAgICBzZWxmLl9wYXJlbnQuX3Byb2Nl
c3NfaW5jb21pbmdfZnJhbWUoZnJhbWUpCi0KLSAgICAgICAgc2VsZi5fb3V0Z29pbmdfZnJhbWVf
ZmlsdGVyID0gX091dGdvaW5nRnJhbWVGaWx0ZXIoc2VsZikKLSAgICAgICAgc2VsZi5faW5jb21p
bmdfZnJhbWVfZmlsdGVyID0gX0luY29taW5nRnJhbWVGaWx0ZXIoc2VsZikKLSAgICAgICAgc3Ry
ZWFtX29wdGlvbnMub3V0Z29pbmdfZnJhbWVfZmlsdGVycy5hcHBlbmQoCi0gICAgICAgICAgICBz
ZWxmLl9vdXRnb2luZ19mcmFtZV9maWx0ZXIpCi0gICAgICAgIHN0cmVhbV9vcHRpb25zLmluY29t
aW5nX2ZyYW1lX2ZpbHRlcnMuYXBwZW5kKAotICAgICAgICAgICAgc2VsZi5faW5jb21pbmdfZnJh
bWVfZmlsdGVyKQotCi0gICAgICAgIHN0cmVhbV9vcHRpb25zLmVuY29kZV90ZXh0X21lc3NhZ2Vf
dG9fdXRmOCA9IEZhbHNlCi0KLQotX2F2YWlsYWJsZV9wcm9jZXNzb3JzW2NvbW1vbi5QRVJNRVNT
QUdFX0RFRkxBVEVfRVhURU5TSU9OXSA9ICgKLSAgICAgICAgUGVyTWVzc2FnZURlZmxhdGVFeHRl
bnNpb25Qcm9jZXNzb3IpCi0jIFRPRE8odHlvc2hpbm8pOiBSZW9yZ2FuaXplIGNsYXNzIG5hbWVz
LgotX2NvbXByZXNzaW9uX2V4dGVuc2lvbl9uYW1lcy5hcHBlbmQoJ2RlZmxhdGUnKQotCi0KLWNs
YXNzIFBlck1lc3NhZ2VDb21wcmVzc0V4dGVuc2lvblByb2Nlc3NvcigKLSAgICBDb21wcmVzc2lv
bkV4dGVuc2lvblByb2Nlc3NvckJhc2UpOgotICAgICIiInBlcm1lc3NhZ2UtY29tcHJlc3MgZXh0
ZW5zaW9uIHByb2Nlc3Nvci4KLQotICAgIFNwZWNpZmljYXRpb246Ci0gICAgaHR0cDovL3Rvb2xz
LmlldGYub3JnL2h0bWwvZHJhZnQtaWV0Zi1oeWJpLXBlcm1lc3NhZ2UtY29tcHJlc3Npb24KLSAg
ICAiIiIKLQotICAgIF9ERUZMQVRFX01FVEhPRCA9ICdkZWZsYXRlJwotCi0gICAgZGVmIF9faW5p
dF9fKHNlbGYsIHJlcXVlc3QpOgotICAgICAgICBDb21wcmVzc2lvbkV4dGVuc2lvblByb2Nlc3Nv
ckJhc2UuX19pbml0X18oc2VsZiwgcmVxdWVzdCkKLQotICAgIGRlZiBuYW1lKHNlbGYpOgotICAg
ICAgICByZXR1cm4gY29tbW9uLlBFUk1FU1NBR0VfQ09NUFJFU1NJT05fRVhURU5TSU9OCi0KLSAg
ICBkZWYgX2xvb2t1cF9jb21wcmVzc2lvbl9wcm9jZXNzb3Ioc2VsZiwgbWV0aG9kX2Rlc2MpOgot
ICAgICAgICBpZiBtZXRob2RfZGVzYy5uYW1lKCkgPT0gc2VsZi5fREVGTEFURV9NRVRIT0Q6Ci0g
ICAgICAgICAgICByZXR1cm4gUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IobWV0
aG9kX2Rlc2MsIEZhbHNlKQotICAgICAgICByZXR1cm4gTm9uZQotCi0KLV9hdmFpbGFibGVfcHJv
Y2Vzc29yc1tjb21tb24uUEVSTUVTU0FHRV9DT01QUkVTU0lPTl9FWFRFTlNJT05dID0gKAotICAg
IFBlck1lc3NhZ2VDb21wcmVzc0V4dGVuc2lvblByb2Nlc3NvcikKLV9jb21wcmVzc2lvbl9leHRl
bnNpb25fbmFtZXMuYXBwZW5kKGNvbW1vbi5QRVJNRVNTQUdFX0NPTVBSRVNTSU9OX0VYVEVOU0lP
TikKLQotCi1jbGFzcyBNdXhFeHRlbnNpb25Qcm9jZXNzb3IoRXh0ZW5zaW9uUHJvY2Vzc29ySW50
ZXJmYWNlKToKLSAgICAiIiJXZWJTb2NrZXQgbXVsdGlwbGV4aW5nIGV4dGVuc2lvbiBwcm9jZXNz
b3IuIiIiCi0KLSAgICBfUVVPVEFfUEFSQU0gPSAncXVvdGEnCi0KLSAgICBkZWYgX19pbml0X18o
c2VsZiwgcmVxdWVzdCk6Ci0gICAgICAgIEV4dGVuc2lvblByb2Nlc3NvckludGVyZmFjZS5fX2lu
aXRfXyhzZWxmLCByZXF1ZXN0KQotICAgICAgICBzZWxmLl9xdW90YSA9IDAKLSAgICAgICAgc2Vs
Zi5fZXh0ZW5zaW9ucyA9IFtdCi0KLSAgICBkZWYgbmFtZShzZWxmKToKLSAgICAgICAgcmV0dXJu
IGNvbW1vbi5NVVhfRVhURU5TSU9OCi0KLSAgICBkZWYgY2hlY2tfY29uc2lzdGVuY3lfd2l0aF9v
dGhlcl9wcm9jZXNzb3JzKHNlbGYsIHByb2Nlc3NvcnMpOgotICAgICAgICBiZWZvcmVfbXV4ID0g
VHJ1ZQotICAgICAgICBmb3IgcHJvY2Vzc29yIGluIHByb2Nlc3NvcnM6Ci0gICAgICAgICAgICBu
YW1lID0gcHJvY2Vzc29yLm5hbWUoKQotICAgICAgICAgICAgaWYgbmFtZSA9PSBzZWxmLm5hbWUo
KToKLSAgICAgICAgICAgICAgICBiZWZvcmVfbXV4ID0gRmFsc2UKLSAgICAgICAgICAgICAgICBj
b250aW51ZQotICAgICAgICAgICAgaWYgbm90IHByb2Nlc3Nvci5pc19hY3RpdmUoKToKLSAgICAg
ICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgaWYgYmVmb3JlX211eDoKLSAgICAgICAg
ICAgICAgICAjIE11eCBleHRlbnNpb24gY2Fubm90IGJlIHVzZWQgYWZ0ZXIgZXh0ZW5zaW9ucwot
ICAgICAgICAgICAgICAgICMgdGhhdCBkZXBlbmQgb24gZnJhbWUgYm91bmRhcnksIGV4dGVuc2lv
biBkYXRhIGZpZWxkLCBvciBhbnkKLSAgICAgICAgICAgICAgICAjIHJlc2VydmVkIGJpdHMgd2hp
Y2ggYXJlIGF0dHJpYnV0ZWQgdG8gZWFjaCBmcmFtZS4KLSAgICAgICAgICAgICAgICBpZiAobmFt
ZSA9PSBjb21tb24uREVGTEFURV9GUkFNRV9FWFRFTlNJT04gb3IKLSAgICAgICAgICAgICAgICAg
ICAgbmFtZSA9PSBjb21tb24uWF9XRUJLSVRfREVGTEFURV9GUkFNRV9FWFRFTlNJT04pOgotICAg
ICAgICAgICAgICAgICAgICBzZWxmLnNldF9hY3RpdmUoRmFsc2UpCi0gICAgICAgICAgICAgICAg
ICAgIHJldHVybgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIE11eCBleHRl
bnNpb24gc2hvdWxkIG5vdCBiZSBhcHBsaWVkIGJlZm9yZSBhbnkgaGlzdG9yeS1iYXNlZAotICAg
ICAgICAgICAgICAgICMgY29tcHJlc3Npb24gZXh0ZW5zaW9uLgotICAgICAgICAgICAgICAgIGlm
IChuYW1lID09IGNvbW1vbi5ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTiBvcgotICAgICAgICAgICAg
ICAgICAgICBuYW1lID09IGNvbW1vbi5YX1dFQktJVF9ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTiBv
cgotICAgICAgICAgICAgICAgICAgICBuYW1lID09IGNvbW1vbi5QRVJNRVNTQUdFX0NPTVBSRVNT
SU9OX0VYVEVOU0lPTiBvcgotICAgICAgICAgICAgICAgICAgICBuYW1lID09IGNvbW1vbi5YX1dF
QktJVF9QRVJNRVNTQUdFX0NPTVBSRVNTSU9OX0VYVEVOU0lPTik6Ci0gICAgICAgICAgICAgICAg
ICAgIHNlbGYuc2V0X2FjdGl2ZShGYWxzZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuCi0K
LSAgICBkZWYgX2dldF9leHRlbnNpb25fcmVzcG9uc2VfaW50ZXJuYWwoc2VsZik6Ci0gICAgICAg
IHNlbGYuX2FjdGl2ZSA9IEZhbHNlCi0gICAgICAgIHF1b3RhID0gc2VsZi5fcmVxdWVzdC5nZXRf
cGFyYW1ldGVyX3ZhbHVlKHNlbGYuX1FVT1RBX1BBUkFNKQotICAgICAgICBpZiBxdW90YSBpcyBu
b3QgTm9uZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBxdW90YSA9IGludChx
dW90YSkKLSAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yLCBlOgotICAgICAgICAgICAgICAg
IHJldHVybiBOb25lCi0gICAgICAgICAgICBpZiBxdW90YSA8IDAgb3IgcXVvdGEgPj0gMiAqKiAz
MjoKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICAgICAgc2VsZi5fcXVvdGEg
PSBxdW90YQotCi0gICAgICAgIHNlbGYuX2FjdGl2ZSA9IFRydWUKLSAgICAgICAgcmV0dXJuIGNv
bW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoY29tbW9uLk1VWF9FWFRFTlNJT04pCi0KLSAgICBkZWYg
X3NldHVwX3N0cmVhbV9vcHRpb25zX2ludGVybmFsKHNlbGYsIHN0cmVhbV9vcHRpb25zKToKLSAg
ICAgICAgcGFzcwotCi0gICAgZGVmIHNldF9xdW90YShzZWxmLCBxdW90YSk6Ci0gICAgICAgIHNl
bGYuX3F1b3RhID0gcXVvdGEKLQotICAgIGRlZiBxdW90YShzZWxmKToKLSAgICAgICAgcmV0dXJu
IHNlbGYuX3F1b3RhCi0KLSAgICBkZWYgc2V0X2V4dGVuc2lvbnMoc2VsZiwgZXh0ZW5zaW9ucyk6
Ci0gICAgICAgIHNlbGYuX2V4dGVuc2lvbnMgPSBleHRlbnNpb25zCi0KLSAgICBkZWYgZXh0ZW5z
aW9ucyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2V4dGVuc2lvbnMKLQotCi1fYXZhaWxh
YmxlX3Byb2Nlc3NvcnNbY29tbW9uLk1VWF9FWFRFTlNJT05dID0gTXV4RXh0ZW5zaW9uUHJvY2Vz
c29yCi0KLQotZGVmIGdldF9leHRlbnNpb25fcHJvY2Vzc29yKGV4dGVuc2lvbl9yZXF1ZXN0KToK
LSAgICAiIiJHaXZlbiBhbiBFeHRlbnNpb25QYXJhbWV0ZXIgcmVwcmVzZW50aW5nIGFuIGV4dGVu
c2lvbiBvZmZlciByZWNlaXZlZAotICAgIGZyb20gYSBjbGllbnQsIGNvbmZpZ3VyZXMgYW5kIHJl
dHVybnMgYW4gaW5zdGFuY2Ugb2YgdGhlIGNvcnJlc3BvbmRpbmcKLSAgICBleHRlbnNpb24gcHJv
Y2Vzc29yIGNsYXNzLgotICAgICIiIgotCi0gICAgcHJvY2Vzc29yX2NsYXNzID0gX2F2YWlsYWJs
ZV9wcm9jZXNzb3JzLmdldChleHRlbnNpb25fcmVxdWVzdC5uYW1lKCkpCi0gICAgaWYgcHJvY2Vz
c29yX2NsYXNzIGlzIE5vbmU6Ci0gICAgICAgIHJldHVybiBOb25lCi0gICAgcmV0dXJuIHByb2Nl
c3Nvcl9jbGFzcyhleHRlbnNpb25fcmVxdWVzdCkKLQotCi1kZWYgaXNfY29tcHJlc3Npb25fZXh0
ZW5zaW9uKGV4dGVuc2lvbl9uYW1lKToKLSAgICByZXR1cm4gZXh0ZW5zaW9uX25hbWUgaW4gX2Nv
bXByZXNzaW9uX2V4dGVuc2lvbl9uYW1lcwotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L2Zhc3RfbWFza2luZy5pIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMv
bW9kX3B5d2Vic29ja2V0L2Zhc3RfbWFza2luZy5pCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBkZGFhZDI3ZjUzYzQ2YmUyYTcxYzcwNGM3MDhmYmIzZjQyZjFhM2QxLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNv
Y2tldC9mYXN0X21hc2tpbmcuaQorKysgL2Rldi9udWxsCkBAIC0xLDk4ICswLDAgQEAKLS8vIENv
cHlyaWdodCAyMDEzLCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0v
LyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8gZGlzdHJp
YnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotLy8g
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8vIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0lbW9kdWxlIGZhc3Rf
bWFza2luZwotCi0laW5jbHVkZSAiY3N0cmluZy5pIgotCi0lewotI2luY2x1ZGUgPGNzdHJpbmc+
Ci0KLSNpZmRlZiBfX1NTRTJfXwotI2luY2x1ZGUgPGVtbWludHJpbi5oPgotI2VuZGlmCi0lfQot
Ci0lYXBwbHkgKGNoYXIgKlNUUklORywgaW50IExFTkdUSCkgewotICAgIChjb25zdCBjaGFyKiBw
YXlsb2FkLCBpbnQgcGF5bG9hZF9sZW5ndGgpLAotICAgIChjb25zdCBjaGFyKiBtYXNraW5nX2tl
eSwgaW50IG1hc2tpbmdfa2V5X2xlbmd0aCkgfTsKLSVjc3RyaW5nX291dHB1dF9hbGxvY2F0ZV9z
aXplKAotICAgIGNoYXIqKiByZXN1bHQsIGludCogcmVzdWx0X2xlbmd0aCwgZGVsZXRlIFtdICok
MSk7Ci0KLSVpbmxpbmUgJXsKLQotdm9pZCBtYXNrKAotICAgIGNvbnN0IGNoYXIqIHBheWxvYWQs
IGludCBwYXlsb2FkX2xlbmd0aCwKLSAgICBjb25zdCBjaGFyKiBtYXNraW5nX2tleSwgaW50IG1h
c2tpbmdfa2V5X2xlbmd0aCwKLSAgICBpbnQgbWFza2luZ19rZXlfaW5kZXgsCi0gICAgY2hhcioq
IHJlc3VsdCwgaW50KiByZXN1bHRfbGVuZ3RoKSB7Ci0gICpyZXN1bHQgPSBuZXcgY2hhcltwYXls
b2FkX2xlbmd0aF07Ci0gICpyZXN1bHRfbGVuZ3RoID0gcGF5bG9hZF9sZW5ndGg7Ci0gIG1lbWNw
eSgqcmVzdWx0LCBwYXlsb2FkLCBwYXlsb2FkX2xlbmd0aCk7Ci0KLSAgY2hhciogY3Vyc29yID0g
KnJlc3VsdDsKLSAgY2hhciogY3Vyc29yX2VuZCA9ICpyZXN1bHQgKyAqcmVzdWx0X2xlbmd0aDsK
LQotI2lmZGVmIF9fU1NFMl9fCi0gIHdoaWxlICgoY3Vyc29yIDwgY3Vyc29yX2VuZCkgJiYKLSAg
ICAgICAgIChyZWludGVycHJldF9jYXN0PHNpemVfdD4oY3Vyc29yKSAmIDB4ZikpIHsKLSAgICAq
Y3Vyc29yIF49IG1hc2tpbmdfa2V5W21hc2tpbmdfa2V5X2luZGV4XTsKLSAgICArK2N1cnNvcjsK
LSAgICBtYXNraW5nX2tleV9pbmRleCA9IChtYXNraW5nX2tleV9pbmRleCArIDEpICUgbWFza2lu
Z19rZXlfbGVuZ3RoOwotICB9Ci0gIGlmIChjdXJzb3IgPT0gY3Vyc29yX2VuZCkgewotICAgIHJl
dHVybjsKLSAgfQotCi0gIGNvbnN0IGludCBrQmxvY2tTaXplID0gMTY7Ci0gIF9fbTEyOGkgbWFz
a2luZ19rZXlfYmxvY2s7Ci0gIGZvciAoaW50IGkgPSAwOyBpIDwga0Jsb2NrU2l6ZTsgKytpKSB7
Ci0gICAgKihyZWludGVycHJldF9jYXN0PGNoYXIqPigmbWFza2luZ19rZXlfYmxvY2spICsgaSkg
PQotICAgICAgICBtYXNraW5nX2tleVttYXNraW5nX2tleV9pbmRleF07Ci0gICAgbWFza2luZ19r
ZXlfaW5kZXggPSAobWFza2luZ19rZXlfaW5kZXggKyAxKSAlIG1hc2tpbmdfa2V5X2xlbmd0aDsK
LSAgfQotCi0gIHdoaWxlIChjdXJzb3IgKyBrQmxvY2tTaXplIDw9IGN1cnNvcl9lbmQpIHsKLSAg
ICBfX20xMjhpIHBheWxvYWRfYmxvY2sgPQotICAgICAgICBfbW1fbG9hZF9zaTEyOChyZWludGVy
cHJldF9jYXN0PF9fbTEyOGkqPihjdXJzb3IpKTsKLSAgICBfbW1fc3RyZWFtX3NpMTI4KHJlaW50
ZXJwcmV0X2Nhc3Q8X19tMTI4aSo+KGN1cnNvciksCi0gICAgICAgICAgICAgICAgICAgICBfbW1f
eG9yX3NpMTI4KHBheWxvYWRfYmxvY2ssIG1hc2tpbmdfa2V5X2Jsb2NrKSk7Ci0gICAgY3Vyc29y
ICs9IGtCbG9ja1NpemU7Ci0gIH0KLSNlbmRpZgotCi0gIHdoaWxlIChjdXJzb3IgPCBjdXJzb3Jf
ZW5kKSB7Ci0gICAgKmN1cnNvciBePSBtYXNraW5nX2tleVttYXNraW5nX2tleV9pbmRleF07Ci0g
ICAgKytjdXJzb3I7Ci0gICAgbWFza2luZ19rZXlfaW5kZXggPSAobWFza2luZ19rZXlfaW5kZXgg
KyAxKSAlIG1hc2tpbmdfa2V5X2xlbmd0aDsKLSAgfQotfQotCi0lfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tl
dC9zcmMvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9fX2luaXRfXy5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21v
ZF9weXdlYnNvY2tldC9oYW5kc2hha2UvX19pbml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDE5NGY2YjM5NWFlMjNiM2ExMzY0MWNkNGI5MDRmNTkzNWQxZmExZjIuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5
d2Vic29ja2V0L2hhbmRzaGFrZS9fX2luaXRfXy5weQorKysgL2Rldi9udWxsCkBAIC0xLDExMCAr
MCwwIEBACi0jIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJp
YnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJXZWJTb2NrZXQgb3BlbmluZyBoYW5kc2hh
a2UgcHJvY2Vzc29yLiBUaGlzIGNsYXNzIHRyeSB0byBhcHBseSBhdmFpbGFibGUKLW9wZW5pbmcg
aGFuZHNoYWtlIHByb2Nlc3NvcnMgZm9yIGVhY2ggcHJvdG9jb2wgdmVyc2lvbiB1bnRpbCBhIGNv
bm5lY3Rpb24gaXMKLXN1Y2Nlc3NmdWxseSBlc3RhYmxpc2hlZC4KLSIiIgotCi0KLWltcG9ydCBs
b2dnaW5nCi0KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KLWZyb20gbW9kX3B5
d2Vic29ja2V0LmhhbmRzaGFrZSBpbXBvcnQgaHliaTAwCi1mcm9tIG1vZF9weXdlYnNvY2tldC5o
YW5kc2hha2UgaW1wb3J0IGh5YmkKLSMgRXhwb3J0IEFib3J0ZWRCeVVzZXJFeGNlcHRpb24sIEhh
bmRzaGFrZUV4Y2VwdGlvbiwgYW5kIFZlcnNpb25FeGNlcHRpb24KLSMgc3ltYm9sIGZyb20gdGhp
cyBtb2R1bGUuCi1mcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IEFi
b3J0ZWRCeVVzZXJFeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFz
ZSBpbXBvcnQgSGFuZHNoYWtlRXhjZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hh
a2UuX2Jhc2UgaW1wb3J0IFZlcnNpb25FeGNlcHRpb24KLQotCi1fTE9HR0VSID0gbG9nZ2luZy5n
ZXRMb2dnZXIoX19uYW1lX18pCi0KLQotZGVmIGRvX2hhbmRzaGFrZShyZXF1ZXN0LCBkaXNwYXRj
aGVyLCBhbGxvd0RyYWZ0NzU9RmFsc2UsIHN0cmljdD1GYWxzZSk6Ci0gICAgIiIiUGVyZm9ybXMg
V2ViU29ja2V0IGhhbmRzaGFrZS4KLQotICAgIEFyZ3M6Ci0gICAgICAgIHJlcXVlc3Q6IG1vZF9w
eXRob24gcmVxdWVzdC4KLSAgICAgICAgZGlzcGF0Y2hlcjogRGlzcGF0Y2hlciAoZGlzcGF0Y2gu
RGlzcGF0Y2hlcikuCi0gICAgICAgIGFsbG93RHJhZnQ3NTogb2Jzb2xldGUgYXJndW1lbnQuIGln
bm9yZWQuCi0gICAgICAgIHN0cmljdDogb2Jzb2xldGUgYXJndW1lbnQuIGlnbm9yZWQuCi0KLSAg
ICBIYW5kc2hha2VyIHdpbGwgYWRkIGF0dHJpYnV0ZXMgc3VjaCBhcyB3c19yZXNvdXJjZSBpbiBw
ZXJmb3JtaW5nCi0gICAgaGFuZHNoYWtlLgotICAgICIiIgotCi0gICAgX0xPR0dFUi5kZWJ1Zygn
Q2xpZW50XCdzIG9wZW5pbmcgaGFuZHNoYWtlIHJlc291cmNlOiAlcicsIHJlcXVlc3QudXJpKQot
ICAgICMgVG8gcHJpbnQgbWltZXRvb2xzLk1lc3NhZ2UgYXMgZXNjYXBlZCBvbmUtbGluZSBzdHJp
bmcsIHdlIGNvbnZlcnRzCi0gICAgIyBoZWFkZXJzX2luIHRvIGRpY3Qgb2JqZWN0LiBXaXRob3V0
IGNvbnZlcnNpb24sIGlmIHdlIHVzZSAlciwgaXQganVzdAotICAgICMgcHJpbnRzIHRoZSB0eXBl
IGFuZCBhZGRyZXNzLCBhbmQgaWYgd2UgdXNlICVzLCBpdCBwcmludHMgdGhlIG9yaWdpbmFsCi0g
ICAgIyBoZWFkZXIgc3RyaW5nIGFzIG11bHRpcGxlIGxpbmVzLgotICAgICMKLSAgICAjIEJvdGgg
bWltZXRvb2xzLk1lc3NhZ2UgYW5kIE1wVGFibGVfVHlwZSBvZiBtb2RfcHl0aG9uIGNhbiBiZQot
ICAgICMgY29udmVydGVkIHRvIGRpY3QuCi0gICAgIwotICAgICMgbWltZXRvb2xzLk1lc3NhZ2Uu
X19zdHJfXyByZXR1cm5zIHRoZSBvcmlnaW5hbCBoZWFkZXIgc3RyaW5nLgotICAgICMgZGljdCht
aW1ldG9vbHMuTWVzc2FnZSBvYmplY3QpIHJldHVybnMgdGhlIG1hcCBmcm9tIGhlYWRlciBuYW1l
cyB0bwotICAgICMgaGVhZGVyIHZhbHVlcy4gV2hpbGUgTXBUYWJsZV9UeXBlIGRvZXNuJ3QgaGF2
ZSBzdWNoIF9fc3RyX18gYnV0IGp1c3QKLSAgICAjIF9fcmVwcl9fIHdoaWNoIGZvcm1hdHMgaXRz
ZWxmIGFzIHdlbGwgYXMgZGljdGlvbmFyeSBvYmplY3QuCi0gICAgX0xPR0dFUi5kZWJ1ZygKLSAg
ICAgICAgJ0NsaWVudFwncyBvcGVuaW5nIGhhbmRzaGFrZSBoZWFkZXJzOiAlcicsIGRpY3QocmVx
dWVzdC5oZWFkZXJzX2luKSkKLQotICAgIGhhbmRzaGFrZXJzID0gW10KLSAgICBoYW5kc2hha2Vy
cy5hcHBlbmQoCi0gICAgICAgICgnUkZDIDY0NTUnLCBoeWJpLkhhbmRzaGFrZXIocmVxdWVzdCwg
ZGlzcGF0Y2hlcikpKQotICAgIGhhbmRzaGFrZXJzLmFwcGVuZCgKLSAgICAgICAgKCdIeUJpIDAw
JywgaHliaTAwLkhhbmRzaGFrZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikpKQotCi0gICAgZm9yIG5h
bWUsIGhhbmRzaGFrZXIgaW4gaGFuZHNoYWtlcnM6Ci0gICAgICAgIF9MT0dHRVIuZGVidWcoJ1Ry
eWluZyBwcm90b2NvbCB2ZXJzaW9uICVzJywgbmFtZSkKLSAgICAgICAgdHJ5OgotICAgICAgICAg
ICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQotICAgICAgICAgICAgX0xPR0dFUi5pbmZvKCdF
c3RhYmxpc2hlZCAoJXMgcHJvdG9jb2wpJywgbmFtZSkKLSAgICAgICAgICAgIHJldHVybgotICAg
ICAgICBleGNlcHQgSGFuZHNoYWtlRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgX0xPR0dFUi5k
ZWJ1ZygKLSAgICAgICAgICAgICAgICAnRmFpbGVkIHRvIGNvbXBsZXRlIG9wZW5pbmcgaGFuZHNo
YWtlIGFzICVzIHByb3RvY29sOiAlcicsCi0gICAgICAgICAgICAgICAgbmFtZSwgZSkKLSAgICAg
ICAgICAgIGlmIGUuc3RhdHVzOgotICAgICAgICAgICAgICAgIHJhaXNlIGUKLSAgICAgICAgZXhj
ZXB0IEFib3J0ZWRCeVVzZXJFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICByYWlzZQotICAgICAg
ICBleGNlcHQgVmVyc2lvbkV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgIHJhaXNlCi0KLSAgICAj
IFRPRE8odG95b3NoaW0pOiBBZGQgYSB0ZXN0IHRvIGNvdmVyIHRoZSBjYXNlIGFsbCBoYW5kc2hh
a2VycyBmYWlsLgotICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKLSAgICAgICAgJ0ZhaWxl
ZCB0byBjb21wbGV0ZSBvcGVuaW5nIGhhbmRzaGFrZSBmb3IgYWxsIGF2YWlsYWJsZSBwcm90b2Nv
bHMnLAotICAgICAgICBzdGF0dXM9Y29tbW9uLkhUVFBfU1RBVFVTX0JBRF9SRVFVRVNUKQotCi0K
LSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0
L2hhbmRzaGFrZS9fYmFzZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC9oYW5kc2hha2Uv
X2Jhc2UucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5OTNhNTg0YjdiM2U1MmI2
MDdiNjViZjM4YWZkY2FkZGNhMmZlNzguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9fYmFzZS5w
eQorKysgL2Rldi9udWxsCkBAIC0xLDE4MiArMCwwIEBACi0jIENvcHlyaWdodCAyMDEyLCBHb29n
bGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0j
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0i
IiJDb21tb24gZnVuY3Rpb25zIGFuZCBleGNlcHRpb25zIHVzZWQgYnkgV2ViU29ja2V0IG9wZW5p
bmcgaGFuZHNoYWtlCi1wcm9jZXNzb3JzLgotIiIiCi0KLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQg
aW1wb3J0IGNvbW1vbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGh0dHBfaGVhZGVyX3V0
aWwKLQotCi1jbGFzcyBBYm9ydGVkQnlVc2VyRXhjZXB0aW9uKEV4Y2VwdGlvbik6Ci0gICAgIiIi
RXhjZXB0aW9uIGZvciBhYm9ydGluZyBhIGNvbm5lY3Rpb24gaW50ZW50aW9uYWxseS4KLQotICAg
IElmIHRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZCBpbiBkb19leHRyYV9oYW5kc2hha2UgaGFuZGxl
ciwgdGhlIGNvbm5lY3Rpb24KLSAgICB3aWxsIGJlIGFiYW5kb25lZC4gTm8gb3RoZXIgV2ViU29j
a2V0IG9yIEhUVFAoUykgaGFuZGxlciB3aWxsIGJlIGludm9rZWQuCi0KLSAgICBJZiB0aGlzIGV4
Y2VwdGlvbiBpcyByYWlzZWQgaW4gdHJhbnNmZXJfZGF0YV9oYW5kbGVyLCB0aGUgY29ubmVjdGlv
biB3aWxsCi0gICAgYmUgY2xvc2VkIHdpdGhvdXQgY2xvc2luZyBoYW5kc2hha2UuIE5vIG90aGVy
IFdlYlNvY2tldCBvciBIVFRQKFMpIGhhbmRsZXIKLSAgICB3aWxsIGJlIGludm9rZWQuCi0gICAg
IiIiCi0KLSAgICBwYXNzCi0KLQotY2xhc3MgSGFuZHNoYWtlRXhjZXB0aW9uKEV4Y2VwdGlvbik6
Ci0gICAgIiIiVGhpcyBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQgd2hlbiBhbiBlcnJvciBvY2N1
cnJlZCB3aGlsZSBwcm9jZXNzaW5nCi0gICAgV2ViU29ja2V0IGluaXRpYWwgaGFuZHNoYWtlLgot
ICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHN0YXR1cz1Ob25lKToKLSAg
ICAgICAgc3VwZXIoSGFuZHNoYWtlRXhjZXB0aW9uLCBzZWxmKS5fX2luaXRfXyhuYW1lKQotICAg
ICAgICBzZWxmLnN0YXR1cyA9IHN0YXR1cwotCi0KLWNsYXNzIFZlcnNpb25FeGNlcHRpb24oRXhj
ZXB0aW9uKToKLSAgICAiIiJUaGlzIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZCB3aGVuIGEgdmVy
c2lvbiBvZiBjbGllbnQgcmVxdWVzdCBkb2VzIG5vdAotICAgIG1hdGNoIHdpdGggdmVyc2lvbiB0
aGUgc2VydmVyIHN1cHBvcnRzLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5h
bWUsIHN1cHBvcnRlZF92ZXJzaW9ucz0nJyk6Ci0gICAgICAgICIiIkNvbnN0cnVjdCBhbiBpbnN0
YW5jZS4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgc3VwcG9ydGVkX3ZlcnNpb246IGEg
c3RyIG9iamVjdCB0byBzaG93IHN1cHBvcnRlZCBoeWJpIHZlcnNpb25zLgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChlLmcuICc4LCAxMycpCi0gICAgICAgICIiIgotICAgICAgICBz
dXBlcihWZXJzaW9uRXhjZXB0aW9uLCBzZWxmKS5fX2luaXRfXyhuYW1lKQotICAgICAgICBzZWxm
LnN1cHBvcnRlZF92ZXJzaW9ucyA9IHN1cHBvcnRlZF92ZXJzaW9ucwotCi0KLWRlZiBnZXRfZGVm
YXVsdF9wb3J0KGlzX3NlY3VyZSk6Ci0gICAgaWYgaXNfc2VjdXJlOgotICAgICAgICByZXR1cm4g
Y29tbW9uLkRFRkFVTFRfV0VCX1NPQ0tFVF9TRUNVUkVfUE9SVAotICAgIGVsc2U6Ci0gICAgICAg
IHJldHVybiBjb21tb24uREVGQVVMVF9XRUJfU09DS0VUX1BPUlQKLQotCi1kZWYgdmFsaWRhdGVf
c3VicHJvdG9jb2woc3VicHJvdG9jb2wpOgotICAgICIiIlZhbGlkYXRlIGEgdmFsdWUgaW4gdGhl
IFNlYy1XZWJTb2NrZXQtUHJvdG9jb2wgZmllbGQuCi0KLSAgICBTZWUgdGhlIFNlY3Rpb24gNC4x
LiwgNC4yLjIuLCBhbmQgNC4zLiBvZiBSRkMgNjQ1NS4KLSAgICAiIiIKLQotICAgIGlmIG5vdCBz
dWJwcm90b2NvbDoKLSAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9uKCdJbnZhbGlkIHN1
YnByb3RvY29sIG5hbWU6IGVtcHR5JykKLQotICAgICMgUGFyYW1ldGVyIHNob3VsZCBiZSBlbmNv
ZGVkIEhUVFAgdG9rZW4uCi0gICAgc3RhdGUgPSBodHRwX2hlYWRlcl91dGlsLlBhcnNpbmdTdGF0
ZShzdWJwcm90b2NvbCkKLSAgICB0b2tlbiA9IGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV90b2tl
bihzdGF0ZSkKLSAgICByZXN0ID0gaHR0cF9oZWFkZXJfdXRpbC5wZWVrKHN0YXRlKQotICAgICMg
SWYgfHJlc3R8IGlzIG5vdCBOb25lLCB8c3VicHJvdG9jb2x8IGlzIG5vdCBvbmUgdG9rZW4gb3Ig
aW52YWxpZC4gSWYKLSAgICAjIHxyZXN0fCBpcyBOb25lLCB8dG9rZW58IG11c3Qgbm90IGJlIE5v
bmUgYmVjYXVzZSB8c3VicHJvdG9jb2x8IGlzCi0gICAgIyBjb25jYXRlbmF0aW9uIG9mIHx0b2tl
bnwgYW5kIHxyZXN0fCBhbmQgaXMgbm90IE5vbmUuCi0gICAgaWYgcmVzdCBpcyBub3QgTm9uZToK
LSAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9uKCdJbnZhbGlkIG5vbi10b2tlbiBzdHJp
bmcgaW4gc3VicHJvdG9jb2wgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25h
bWU6ICVyJyAlIHJlc3QpCi0KLQotZGVmIHBhcnNlX2hvc3RfaGVhZGVyKHJlcXVlc3QpOgotICAg
IGZpZWxkcyA9IHJlcXVlc3QuaGVhZGVyc19pbltjb21tb24uSE9TVF9IRUFERVJdLnNwbGl0KCc6
JywgMSkKLSAgICBpZiBsZW4oZmllbGRzKSA9PSAxOgotICAgICAgICByZXR1cm4gZmllbGRzWzBd
LCBnZXRfZGVmYXVsdF9wb3J0KHJlcXVlc3QuaXNfaHR0cHMoKSkKLSAgICB0cnk6Ci0gICAgICAg
IHJldHVybiBmaWVsZHNbMF0sIGludChmaWVsZHNbMV0pCi0gICAgZXhjZXB0IFZhbHVlRXJyb3Is
IGU6Ci0gICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbignSW52YWxpZCBwb3J0IG51bWJl
ciBmb3JtYXQ6ICVyJyAlIGUpCi0KLQotZGVmIGZvcm1hdF9oZWFkZXIobmFtZSwgdmFsdWUpOgot
ICAgIHJldHVybiAnJXM6ICVzXHJcbicgJSAobmFtZSwgdmFsdWUpCi0KLQotZGVmIGdldF9tYW5k
YXRvcnlfaGVhZGVyKHJlcXVlc3QsIGtleSk6Ci0gICAgdmFsdWUgPSByZXF1ZXN0LmhlYWRlcnNf
aW4uZ2V0KGtleSkKLSAgICBpZiB2YWx1ZSBpcyBOb25lOgotICAgICAgICByYWlzZSBIYW5kc2hh
a2VFeGNlcHRpb24oJ0hlYWRlciAlcyBpcyBub3QgZGVmaW5lZCcgJSBrZXkpCi0gICAgcmV0dXJu
IHZhbHVlCi0KLQotZGVmIHZhbGlkYXRlX21hbmRhdG9yeV9oZWFkZXIocmVxdWVzdCwga2V5LCBl
eHBlY3RlZF92YWx1ZSwgZmFpbF9zdGF0dXM9Tm9uZSk6Ci0gICAgdmFsdWUgPSBnZXRfbWFuZGF0
b3J5X2hlYWRlcihyZXF1ZXN0LCBrZXkpCi0KLSAgICBpZiB2YWx1ZS5sb3dlcigpICE9IGV4cGVj
dGVkX3ZhbHVlLmxvd2VyKCk6Ci0gICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKLSAg
ICAgICAgICAgICdFeHBlY3RlZCAlciBmb3IgaGVhZGVyICVzIGJ1dCBmb3VuZCAlciAoY2FzZS1p
bnNlbnNpdGl2ZSknICUKLSAgICAgICAgICAgIChleHBlY3RlZF92YWx1ZSwga2V5LCB2YWx1ZSks
IHN0YXR1cz1mYWlsX3N0YXR1cykKLQotCi1kZWYgY2hlY2tfcmVxdWVzdF9saW5lKHJlcXVlc3Qp
OgotICAgICMgNS4xIDEuIFRoZSB0aHJlZSBjaGFyYWN0ZXIgVVRGLTggc3RyaW5nICJHRVQiLgot
ICAgICMgNS4xIDIuIEEgVVRGLTgtZW5jb2RlZCBVKzAwMjAgU1BBQ0UgY2hhcmFjdGVyICgweDIw
IGJ5dGUpLgotICAgIGlmIHJlcXVlc3QubWV0aG9kICE9ICdHRVQnOgotICAgICAgICByYWlzZSBI
YW5kc2hha2VFeGNlcHRpb24oJ01ldGhvZCBpcyBub3QgR0VUOiAlcicgJSByZXF1ZXN0Lm1ldGhv
ZCkKLQotICAgIGlmIHJlcXVlc3QucHJvdG9jb2wgIT0gJ0hUVFAvMS4xJzoKLSAgICAgICAgcmFp
c2UgSGFuZHNoYWtlRXhjZXB0aW9uKCdWZXJzaW9uIGlzIG5vdCBIVFRQLzEuMTogJXInICUKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QucHJvdG9jb2wpCi0KLQotZGVm
IHBhcnNlX3Rva2VuX2xpc3QoZGF0YSk6Ci0gICAgIiIiUGFyc2VzIGEgaGVhZGVyIHZhbHVlIHdo
aWNoIGZvbGxvd3MgMSN0b2tlbiBhbmQgcmV0dXJucyBwYXJzZWQgZWxlbWVudHMKLSAgICBhcyBh
IGxpc3Qgb2Ygc3RyaW5ncy4KLQotICAgIExlYWRpbmcgTFdTZXMgbXVzdCBiZSB0cmltbWVkLgot
ICAgICIiIgotCi0gICAgc3RhdGUgPSBodHRwX2hlYWRlcl91dGlsLlBhcnNpbmdTdGF0ZShkYXRh
KQotCi0gICAgdG9rZW5fbGlzdCA9IFtdCi0KLSAgICB3aGlsZSBUcnVlOgotICAgICAgICB0b2tl
biA9IGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV90b2tlbihzdGF0ZSkKLSAgICAgICAgaWYgdG9r
ZW4gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICB0b2tlbl9saXN0LmFwcGVuZCh0b2tlbikKLQot
ICAgICAgICBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfbHdzZXMoc3RhdGUpCi0KLSAgICAgICAg
aWYgaHR0cF9oZWFkZXJfdXRpbC5wZWVrKHN0YXRlKSBpcyBOb25lOgotICAgICAgICAgICAgYnJl
YWsKLQotICAgICAgICBpZiBub3QgaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX3N0cmluZyhzdGF0
ZSwgJywnKToKLSAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKLSAgICAgICAg
ICAgICAgICAnRXhwZWN0ZWQgYSBjb21tYSBidXQgZm91bmQgJXInICUgaHR0cF9oZWFkZXJfdXRp
bC5wZWVrKHN0YXRlKSkKLQotICAgICAgICBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfbHdzZXMo
c3RhdGUpCi0KLSAgICBpZiBsZW4odG9rZW5fbGlzdCkgPT0gMDoKLSAgICAgICAgcmFpc2UgSGFu
ZHNoYWtlRXhjZXB0aW9uKCdObyB2YWxpZCB0b2tlbiBmb3VuZCcpCi0KLSAgICByZXR1cm4gdG9r
ZW5fbGlzdAotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9k
X3B5d2Vic29ja2V0L2hhbmRzaGFrZS9oeWJpLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0
L2hhbmRzaGFrZS9oeWJpLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYWQxMGVh
MzcyODI5ZDA5M2Q2NmU2YWM2MGFjY2NkOWMxY2FlZmI2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC9oYW5kc2hh
a2UvaHliaS5weQorKysgL2Rldi9udWxsCkBAIC0xLDQyMCArMCwwIEBACi0jIENvcHlyaWdodCAy
MDEyLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0j
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
IyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLQotCi0iIiJUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIG9wZW5pbmcgaGFuZHNoYWtlIHByb2Nl
c3NvciBmb3IgdGhlIFdlYlNvY2tldAotcHJvdG9jb2wgKFJGQyA2NDU1KS4KLQotU3BlY2lmaWNh
dGlvbjoKLWh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY0NTUKLSIiIgotCi0KLSMgTm90
ZTogcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlIGlzIHVzZWQgaW4gdGhpcyBtb2R1bGUsIGV2ZW4g
dGhvdWdoIG1vZF9weXRob24KLSMgZG9jdW1lbnQgc2F5cyB0aGF0IGl0IHNob3VsZCBiZSB1c2Vk
IG9ubHkgaW4gY29ubmVjdGlvbiBoYW5kbGVycy4KLSMgVW5mb3J0dW5hdGVseSwgd2UgaGF2ZSBu
byBvdGhlciBvcHRpb25zLiBGb3IgZXhhbXBsZSwgcmVxdWVzdC53cml0ZSBpcyBub3QKLSMgc3Vp
dGFibGUgYmVjYXVzZSBpdCBkb2Vzbid0IGFsbG93IGRpcmVjdCByYXcgYnl0ZXMgd3JpdGluZy4K
LQotCi1pbXBvcnQgYmFzZTY0Ci1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IG9zCi1pbXBvcnQgcmUK
LQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgotZnJvbSBtb2RfcHl3ZWJzb2Nr
ZXQuZXh0ZW5zaW9ucyBpbXBvcnQgZ2V0X2V4dGVuc2lvbl9wcm9jZXNzb3IKLWZyb20gbW9kX3B5
d2Vic29ja2V0LmV4dGVuc2lvbnMgaW1wb3J0IGlzX2NvbXByZXNzaW9uX2V4dGVuc2lvbgotZnJv
bSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBjaGVja19yZXF1ZXN0X2xp
bmUKLWZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgZm9ybWF0X2hl
YWRlcgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBnZXRfbWFu
ZGF0b3J5X2hlYWRlcgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9y
dCBIYW5kc2hha2VFeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFz
ZSBpbXBvcnQgcGFyc2VfdG9rZW5fbGlzdAotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtl
Ll9iYXNlIGltcG9ydCB2YWxpZGF0ZV9tYW5kYXRvcnlfaGVhZGVyCi1mcm9tIG1vZF9weXdlYnNv
Y2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IHZhbGlkYXRlX3N1YnByb3RvY29sCi1mcm9tIG1v
ZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IFZlcnNpb25FeGNlcHRpb24KLWZy
b20gbW9kX3B5d2Vic29ja2V0LnN0cmVhbSBpbXBvcnQgU3RyZWFtCi1mcm9tIG1vZF9weXdlYnNv
Y2tldC5zdHJlYW0gaW1wb3J0IFN0cmVhbU9wdGlvbnMKLWZyb20gbW9kX3B5d2Vic29ja2V0IGlt
cG9ydCB1dGlsCi0KLQotIyBVc2VkIHRvIHZhbGlkYXRlIHRoZSB2YWx1ZSBpbiB0aGUgU2VjLVdl
YlNvY2tldC1LZXkgaGVhZGVyIHN0cmljdGx5LiBSRkMgNDY0OAotIyBkaXNhbGxvd3Mgbm9uLXpl
cm8gcGFkZGluZywgc28gdGhlIGNoYXJhY3RlciByaWdodCBiZWZvcmUgPT0gbXVzdCBiZSBhbnkg
b2YKLSMgQSwgUSwgZyBhbmQgdy4KLV9TRUNfV0VCU09DS0VUX0tFWV9SRUdFWCA9IHJlLmNvbXBp
bGUoJ15bKy8wLTlBLVphLXpdezIxfVtBUWd3XT09JCcpCi0KLSMgRGVmaW5pbmcgYWxpYXNlcyBm
b3IgdmFsdWVzIHVzZWQgZnJlcXVlbnRseS4KLV9WRVJTSU9OX0xBVEVTVCA9IGNvbW1vbi5WRVJT
SU9OX0hZQklfTEFURVNUCi1fVkVSU0lPTl9MQVRFU1RfU1RSSU5HID0gc3RyKF9WRVJTSU9OX0xB
VEVTVCkKLV9TVVBQT1JURURfVkVSU0lPTlMgPSBbCi0gICAgX1ZFUlNJT05fTEFURVNULAotXQot
Ci0KLWRlZiBjb21wdXRlX2FjY2VwdChrZXkpOgotICAgICIiIkNvbXB1dGVzIHZhbHVlIGZvciB0
aGUgU2VjLVdlYlNvY2tldC1BY2NlcHQgaGVhZGVyIGZyb20gdmFsdWUgb2YgdGhlCi0gICAgU2Vj
LVdlYlNvY2tldC1LZXkgaGVhZGVyLgotICAgICIiIgotCi0gICAgYWNjZXB0X2JpbmFyeSA9IHV0
aWwuc2hhMV9oYXNoKAotICAgICAgICBrZXkgKyBjb21tb24uV0VCU09DS0VUX0FDQ0VQVF9VVUlE
KS5kaWdlc3QoKQotICAgIGFjY2VwdCA9IGJhc2U2NC5iNjRlbmNvZGUoYWNjZXB0X2JpbmFyeSkK
LQotICAgIHJldHVybiAoYWNjZXB0LCBhY2NlcHRfYmluYXJ5KQotCi0KLWNsYXNzIEhhbmRzaGFr
ZXIob2JqZWN0KToKLSAgICAiIiJPcGVuaW5nIGhhbmRzaGFrZSBwcm9jZXNzb3IgZm9yIHRoZSBX
ZWJTb2NrZXQgcHJvdG9jb2wgKFJGQyA2NDU1KS4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxm
LCByZXF1ZXN0LCBkaXNwYXRjaGVyKToKLSAgICAgICAgIiIiQ29uc3RydWN0IGFuIGluc3RhbmNl
LgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICByZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVl
c3QuCi0gICAgICAgICAgICBkaXNwYXRjaGVyOiBEaXNwYXRjaGVyIChkaXNwYXRjaC5EaXNwYXRj
aGVyKS4KLQotICAgICAgICBIYW5kc2hha2VyIHdpbGwgYWRkIGF0dHJpYnV0ZXMgc3VjaCBhcyB3
c19yZXNvdXJjZSBkdXJpbmcgaGFuZHNoYWtlLgotICAgICAgICAiIiIKLQotICAgICAgICBzZWxm
Ll9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKLQotICAgICAgICBzZWxmLl9y
ZXF1ZXN0ID0gcmVxdWVzdAotICAgICAgICBzZWxmLl9kaXNwYXRjaGVyID0gZGlzcGF0Y2hlcgot
Ci0gICAgZGVmIF92YWxpZGF0ZV9jb25uZWN0aW9uX2hlYWRlcihzZWxmKToKLSAgICAgICAgY29u
bmVjdGlvbiA9IGdldF9tYW5kYXRvcnlfaGVhZGVyKAotICAgICAgICAgICAgc2VsZi5fcmVxdWVz
dCwgY29tbW9uLkNPTk5FQ1RJT05fSEVBREVSKQotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAg
IGNvbm5lY3Rpb25fdG9rZW5zID0gcGFyc2VfdG9rZW5fbGlzdChjb25uZWN0aW9uKQotICAgICAg
ICBleGNlcHQgSGFuZHNoYWtlRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgcmFpc2UgSGFuZHNo
YWtlRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdGYWlsZWQgdG8gcGFyc2UgJXM6ICVzJyAl
IChjb21tb24uQ09OTkVDVElPTl9IRUFERVIsIGUpKQotCi0gICAgICAgIGNvbm5lY3Rpb25faXNf
dmFsaWQgPSBGYWxzZQotICAgICAgICBmb3IgdG9rZW4gaW4gY29ubmVjdGlvbl90b2tlbnM6Ci0g
ICAgICAgICAgICBpZiB0b2tlbi5sb3dlcigpID09IGNvbW1vbi5VUEdSQURFX0NPTk5FQ1RJT05f
VFlQRS5sb3dlcigpOgotICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25faXNfdmFsaWQgPSBUcnVl
Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgaWYgbm90IGNvbm5lY3Rpb25faXNfdmFs
aWQ6Ci0gICAgICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oCi0gICAgICAgICAgICAg
ICAgJyVzIGhlYWRlciBkb2VzblwndCBjb250YWluICIlcyInICUKLSAgICAgICAgICAgICAgICAo
Y29tbW9uLkNPTk5FQ1RJT05fSEVBREVSLCBjb21tb24uVVBHUkFERV9DT05ORUNUSU9OX1RZUEUp
KQotCi0gICAgZGVmIGRvX2hhbmRzaGFrZShzZWxmKToKLSAgICAgICAgc2VsZi5fcmVxdWVzdC53
c19jbG9zZV9jb2RlID0gTm9uZQotICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX2Nsb3NlX3JlYXNv
biA9IE5vbmUKLQotICAgICAgICAjIFBhcnNpbmcuCi0KLSAgICAgICAgY2hlY2tfcmVxdWVzdF9s
aW5lKHNlbGYuX3JlcXVlc3QpCi0KLSAgICAgICAgdmFsaWRhdGVfbWFuZGF0b3J5X2hlYWRlcigK
LSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3QsCi0gICAgICAgICAgICBjb21tb24uVVBHUkFERV9I
RUFERVIsCi0gICAgICAgICAgICBjb21tb24uV0VCU09DS0VUX1VQR1JBREVfVFlQRSkKLQotICAg
ICAgICBzZWxmLl92YWxpZGF0ZV9jb25uZWN0aW9uX2hlYWRlcigpCi0KLSAgICAgICAgc2VsZi5f
cmVxdWVzdC53c19yZXNvdXJjZSA9IHNlbGYuX3JlcXVlc3QudXJpCi0KLSAgICAgICAgdW51c2Vk
X2hvc3QgPSBnZXRfbWFuZGF0b3J5X2hlYWRlcihzZWxmLl9yZXF1ZXN0LCBjb21tb24uSE9TVF9I
RUFERVIpCi0KLSAgICAgICAgc2VsZi5fcmVxdWVzdC53c192ZXJzaW9uID0gc2VsZi5fY2hlY2tf
dmVyc2lvbigpCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fZ2V0X29yaWdpbigp
Ci0gICAgICAgICAgICBzZWxmLl9zZXRfcHJvdG9jb2woKQotICAgICAgICAgICAgc2VsZi5fcGFy
c2VfZXh0ZW5zaW9ucygpCi0KLSAgICAgICAgICAgICMgS2V5IHZhbGlkYXRpb24sIHJlc3BvbnNl
IGdlbmVyYXRpb24uCi0KLSAgICAgICAgICAgIGtleSA9IHNlbGYuX2dldF9rZXkoKQotICAgICAg
ICAgICAgKGFjY2VwdCwgYWNjZXB0X2JpbmFyeSkgPSBjb21wdXRlX2FjY2VwdChrZXkpCi0gICAg
ICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAgICAgJyVzOiAlciAoJXMp
JywKLSAgICAgICAgICAgICAgICBjb21tb24uU0VDX1dFQlNPQ0tFVF9BQ0NFUFRfSEVBREVSLAot
ICAgICAgICAgICAgICAgIGFjY2VwdCwKLSAgICAgICAgICAgICAgICB1dGlsLmhleGlmeShhY2Nl
cHRfYmluYXJ5KSkKLQotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdQcm90b2NvbCB2
ZXJzaW9uIGlzIFJGQyA2NDU1JykKLQotICAgICAgICAgICAgIyBTZXR1cCBleHRlbnNpb24gcHJv
Y2Vzc29ycy4KLQotICAgICAgICAgICAgcHJvY2Vzc29ycyA9IFtdCi0gICAgICAgICAgICBpZiBz
ZWxmLl9yZXF1ZXN0LndzX3JlcXVlc3RlZF9leHRlbnNpb25zIGlzIG5vdCBOb25lOgotICAgICAg
ICAgICAgICAgIGZvciBleHRlbnNpb25fcmVxdWVzdCBpbiBzZWxmLl9yZXF1ZXN0LndzX3JlcXVl
c3RlZF9leHRlbnNpb25zOgotICAgICAgICAgICAgICAgICAgICBwcm9jZXNzb3IgPSBnZXRfZXh0
ZW5zaW9uX3Byb2Nlc3NvcihleHRlbnNpb25fcmVxdWVzdCkKLSAgICAgICAgICAgICAgICAgICAg
IyBVbmtub3duIGV4dGVuc2lvbiByZXF1ZXN0cyBhcmUganVzdCBpZ25vcmVkLgotICAgICAgICAg
ICAgICAgICAgICBpZiBwcm9jZXNzb3IgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBwcm9jZXNzb3JzLmFwcGVuZChwcm9jZXNzb3IpCi0gICAgICAgICAgICBzZWxmLl9yZXF1
ZXN0LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzID0gcHJvY2Vzc29ycwotCi0gICAgICAgICAgICAj
IExpc3Qgb2YgZXh0cmEgaGVhZGVycy4gVGhlIGV4dHJhIGhhbmRzaGFrZSBoYW5kbGVyIG1heSBh
ZGQgaGVhZGVyCi0gICAgICAgICAgICAjIGRhdGEgYXMgbmFtZS92YWx1ZSBwYWlycyB0byB0aGlz
IGxpc3QgYW5kIHB5d2Vic29ja2V0IGFwcGVuZHMKLSAgICAgICAgICAgICMgdGhlbSB0byB0aGUg
V2ViU29ja2V0IGhhbmRzaGFrZS4KLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3QuZXh0cmFfaGVh
ZGVycyA9IFtdCi0KLSAgICAgICAgICAgICMgRXh0cmEgaGFuZHNoYWtlIGhhbmRsZXIgbWF5IG1v
ZGlmeS9yZW1vdmUgcHJvY2Vzc29ycy4KLSAgICAgICAgICAgIHNlbGYuX2Rpc3BhdGNoZXIuZG9f
ZXh0cmFfaGFuZHNoYWtlKHNlbGYuX3JlcXVlc3QpCi0gICAgICAgICAgICBwcm9jZXNzb3JzID0g
ZmlsdGVyKGxhbWJkYSBwcm9jZXNzb3I6IHByb2Nlc3NvciBpcyBub3QgTm9uZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vz
c29ycykKLQotICAgICAgICAgICAgIyBBc2sgZWFjaCBwcm9jZXNzb3IgaWYgdGhlcmUgYXJlIGV4
dGVuc2lvbnMgb24gdGhlIHJlcXVlc3Qgd2hpY2gKLSAgICAgICAgICAgICMgY2Fubm90IGNvLWV4
aXN0LiBXaGVuIHByb2Nlc3NvciBkZWNpZGVkIG90aGVyIHByb2Nlc3NvcnMgY2Fubm90Ci0gICAg
ICAgICAgICAjIGNvLWV4aXN0IHdpdGggaXQsIHRoZSBwcm9jZXNzb3IgbWFya3MgdGhlbSAob3Ig
aXRzZWxmKSBhcwotICAgICAgICAgICAgIyAiaW5hY3RpdmUiLiBUaGUgZmlyc3QgZXh0ZW5zaW9u
IHByb2Nlc3NvciBoYXMgdGhlIHJpZ2h0IHRvCi0gICAgICAgICAgICAjIG1ha2UgdGhlIGZpbmFs
IGNhbGwuCi0gICAgICAgICAgICBmb3IgcHJvY2Vzc29yIGluIHJldmVyc2VkKHByb2Nlc3NvcnMp
OgotICAgICAgICAgICAgICAgIGlmIHByb2Nlc3Nvci5pc19hY3RpdmUoKToKLSAgICAgICAgICAg
ICAgICAgICAgcHJvY2Vzc29yLmNoZWNrX2NvbnNpc3RlbmN5X3dpdGhfb3RoZXJfcHJvY2Vzc29y
cygKLSAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NvcnMpCi0gICAgICAgICAgICBwcm9j
ZXNzb3JzID0gZmlsdGVyKGxhbWJkYSBwcm9jZXNzb3I6IHByb2Nlc3Nvci5pc19hY3RpdmUoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc29ycykKLQotICAgICAgICAg
ICAgYWNjZXB0ZWRfZXh0ZW5zaW9ucyA9IFtdCi0KLSAgICAgICAgICAgICMgV2UgbmVlZCB0byB0
YWtlIGludG8gYWNjb3VudCBvZiBtdXggZXh0ZW5zaW9uIGhlcmUuCi0gICAgICAgICAgICAjIElm
IG11eCBleHRlbnNpb24gZXhpc3RzOgotICAgICAgICAgICAgIyAtIFJlbW92ZSBwcm9jZXNzb3Jz
IG9mIGV4dGVuc2lvbnMgZm9yIGxvZ2ljYWwgY2hhbm5lbCwKLSAgICAgICAgICAgICMgICB3aGlj
aCBhcmUgcHJvY2Vzc29ycyBsb2NhdGVkIGJlZm9yZSB0aGUgbXV4IHByb2Nlc3NvcgotICAgICAg
ICAgICAgIyAtIFBhc3MgZXh0ZW5zaW9uIHJlcXVlc3RzIGZvciBsb2dpY2FsIGNoYW5uZWwgdG8g
bXV4IHByb2Nlc3NvcgotICAgICAgICAgICAgIyAtIEF0dGFjaCB0aGUgbXV4IHByb2Nlc3NvciB0
byB0aGUgcmVxdWVzdC4gSXQgd2lsbCBiZSByZWZlcnJlZAotICAgICAgICAgICAgIyAgIGJ5IGRp
c3BhdGNoZXIgdG8gc2VlIHdoZXRoZXIgdGhlIGRpc3BhdGNoZXIgc2hvdWxkIHVzZSBtdXgKLSAg
ICAgICAgICAgICMgICBoYW5kbGVyIG9yIG5vdC4KLSAgICAgICAgICAgIG11eF9pbmRleCA9IC0x
Ci0gICAgICAgICAgICBmb3IgaSwgcHJvY2Vzc29yIGluIGVudW1lcmF0ZShwcm9jZXNzb3JzKToK
LSAgICAgICAgICAgICAgICBpZiBwcm9jZXNzb3IubmFtZSgpID09IGNvbW1vbi5NVVhfRVhURU5T
SU9OOgotICAgICAgICAgICAgICAgICAgICBtdXhfaW5kZXggPSBpCi0gICAgICAgICAgICAgICAg
ICAgIGJyZWFrCi0gICAgICAgICAgICBpZiBtdXhfaW5kZXggPj0gMDoKLSAgICAgICAgICAgICAg
ICBsb2dpY2FsX2NoYW5uZWxfZXh0ZW5zaW9ucyA9IFtdCi0gICAgICAgICAgICAgICAgZm9yIHBy
b2Nlc3NvciBpbiBwcm9jZXNzb3JzWzptdXhfaW5kZXhdOgotICAgICAgICAgICAgICAgICAgICBs
b2dpY2FsX2NoYW5uZWxfZXh0ZW5zaW9ucy5hcHBlbmQocHJvY2Vzc29yLnJlcXVlc3QoKSkKLSAg
ICAgICAgICAgICAgICAgICAgcHJvY2Vzc29yLnNldF9hY3RpdmUoRmFsc2UpCi0gICAgICAgICAg
ICAgICAgc2VsZi5fcmVxdWVzdC5tdXhfcHJvY2Vzc29yID0gcHJvY2Vzc29yc1ttdXhfaW5kZXhd
Ci0gICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC5tdXhfcHJvY2Vzc29yLnNldF9leHRlbnNp
b25zKAotICAgICAgICAgICAgICAgICAgICBsb2dpY2FsX2NoYW5uZWxfZXh0ZW5zaW9ucykKLSAg
ICAgICAgICAgICAgICBwcm9jZXNzb3JzID0gZmlsdGVyKGxhbWJkYSBwcm9jZXNzb3I6IHByb2Nl
c3Nvci5pc19hY3RpdmUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBy
b2Nlc3NvcnMpCi0KLSAgICAgICAgICAgIHN0cmVhbV9vcHRpb25zID0gU3RyZWFtT3B0aW9ucygp
Ci0KLSAgICAgICAgICAgIGZvciBpbmRleCwgcHJvY2Vzc29yIGluIGVudW1lcmF0ZShwcm9jZXNz
b3JzKToKLSAgICAgICAgICAgICAgICBpZiBub3QgcHJvY2Vzc29yLmlzX2FjdGl2ZSgpOgotICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICAgICAgZXh0ZW5zaW9uX3Jl
c3BvbnNlID0gcHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoKQotICAgICAgICAgICAg
ICAgIGlmIGV4dGVuc2lvbl9yZXNwb25zZSBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICAj
IFJlamVjdGVkLgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICAg
ICAgYWNjZXB0ZWRfZXh0ZW5zaW9ucy5hcHBlbmQoZXh0ZW5zaW9uX3Jlc3BvbnNlKQotCi0gICAg
ICAgICAgICAgICAgcHJvY2Vzc29yLnNldHVwX3N0cmVhbV9vcHRpb25zKHN0cmVhbV9vcHRpb25z
KQotCi0gICAgICAgICAgICAgICAgaWYgbm90IGlzX2NvbXByZXNzaW9uX2V4dGVuc2lvbihwcm9j
ZXNzb3IubmFtZSgpKToKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICAg
ICAgICAgICMgSW5hY3RpdmF0ZSBhbGwgb2YgdGhlIGZvbGxvd2luZyBjb21wcmVzc2lvbiBleHRl
bnNpb25zLgotICAgICAgICAgICAgICAgIGZvciBqIGluIHhyYW5nZShpbmRleCArIDEsIGxlbihw
cm9jZXNzb3JzKSk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGlzX2NvbXByZXNzaW9uX2V4dGVu
c2lvbihwcm9jZXNzb3JzW2pdLm5hbWUoKSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcm9j
ZXNzb3JzW2pdLnNldF9hY3RpdmUoRmFsc2UpCi0KLSAgICAgICAgICAgIGlmIGxlbihhY2NlcHRl
ZF9leHRlbnNpb25zKSA+IDA6Ci0gICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19leHRl
bnNpb25zID0gYWNjZXB0ZWRfZXh0ZW5zaW9ucwotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dl
ci5kZWJ1ZygKLSAgICAgICAgICAgICAgICAgICAgJ0V4dGVuc2lvbnMgYWNjZXB0ZWQ6ICVyJywK
LSAgICAgICAgICAgICAgICAgICAgbWFwKGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIubmFtZSwg
YWNjZXB0ZWRfZXh0ZW5zaW9ucykpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAg
IHNlbGYuX3JlcXVlc3Qud3NfZXh0ZW5zaW9ucyA9IE5vbmUKLQotICAgICAgICAgICAgc2VsZi5f
cmVxdWVzdC53c19zdHJlYW0gPSBzZWxmLl9jcmVhdGVfc3RyZWFtKHN0cmVhbV9vcHRpb25zKQot
Ci0gICAgICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0LndzX3JlcXVlc3RlZF9wcm90b2NvbHMgaXMg
bm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC53c19wcm90b2NvbCBp
cyBOb25lOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oCi0g
ICAgICAgICAgICAgICAgICAgICAgICAnZG9fZXh0cmFfaGFuZHNoYWtlIG11c3QgY2hvb3NlIG9u
ZSBzdWJwcm90b2NvbCBmcm9tICcKLSAgICAgICAgICAgICAgICAgICAgICAgICd3c19yZXF1ZXN0
ZWRfcHJvdG9jb2xzIGFuZCBzZXQgaXQgdG8gd3NfcHJvdG9jb2wnKQotICAgICAgICAgICAgICAg
IHZhbGlkYXRlX3N1YnByb3RvY29sKHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wpCi0KLSAgICAg
ICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAgICAgICAgICdTdWJw
cm90b2NvbCBhY2NlcHRlZDogJXInLAotICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0
LndzX3Byb3RvY29sKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBpZiBzZWxm
Ll9yZXF1ZXN0LndzX3Byb3RvY29sIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICBy
YWlzZSBIYW5kc2hha2VFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAnd3NfcHJv
dG9jb2wgbXVzdCBiZSBOb25lIHdoZW4gdGhlIGNsaWVudCBkaWRuXCd0ICcKLSAgICAgICAgICAg
ICAgICAgICAgICAgICdyZXF1ZXN0IGFueSBzdWJwcm90b2NvbCcpCi0KLSAgICAgICAgICAgIHNl
bGYuX3NlbmRfaGFuZHNoYWtlKGFjY2VwdCkKLSAgICAgICAgZXhjZXB0IEhhbmRzaGFrZUV4Y2Vw
dGlvbiwgZToKLSAgICAgICAgICAgIGlmIG5vdCBlLnN0YXR1czoKLSAgICAgICAgICAgICAgICAj
IEZhbGxiYWNrIHRvIDQwMCBiYWQgcmVxdWVzdCBieSBkZWZhdWx0LgotICAgICAgICAgICAgICAg
IGUuc3RhdHVzID0gY29tbW9uLkhUVFBfU1RBVFVTX0JBRF9SRVFVRVNUCi0gICAgICAgICAgICBy
YWlzZSBlCi0KLSAgICBkZWYgX2dldF9vcmlnaW4oc2VsZik6Ci0gICAgICAgIG9yaWdpbl9oZWFk
ZXIgPSBjb21tb24uT1JJR0lOX0hFQURFUgotICAgICAgICBvcmlnaW4gPSBzZWxmLl9yZXF1ZXN0
LmhlYWRlcnNfaW4uZ2V0KG9yaWdpbl9oZWFkZXIpCi0gICAgICAgIGlmIG9yaWdpbiBpcyBOb25l
OgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdDbGllbnQgcmVxdWVzdCBkb2VzIG5v
dCBoYXZlIG9yaWdpbiBoZWFkZXInKQotICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX29yaWdpbiA9
IG9yaWdpbgotCi0gICAgZGVmIF9jaGVja192ZXJzaW9uKHNlbGYpOgotICAgICAgICB2ZXJzaW9u
ID0gZ2V0X21hbmRhdG9yeV9oZWFkZXIoc2VsZi5fcmVxdWVzdCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VCU09DS0VUX1ZFUlNJT05fSEVBREVS
KQotICAgICAgICBpZiB2ZXJzaW9uID09IF9WRVJTSU9OX0xBVEVTVF9TVFJJTkc6Ci0gICAgICAg
ICAgICByZXR1cm4gX1ZFUlNJT05fTEFURVNUCi0KLSAgICAgICAgaWYgdmVyc2lvbi5maW5kKCcs
JykgPj0gMDoKLSAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKLSAgICAgICAg
ICAgICAgICAnTXVsdGlwbGUgdmVyc2lvbnMgKCVyKSBhcmUgbm90IGFsbG93ZWQgZm9yIGhlYWRl
ciAlcycgJQotICAgICAgICAgICAgICAgICh2ZXJzaW9uLCBjb21tb24uU0VDX1dFQlNPQ0tFVF9W
RVJTSU9OX0hFQURFUiksCi0gICAgICAgICAgICAgICAgc3RhdHVzPWNvbW1vbi5IVFRQX1NUQVRV
U19CQURfUkVRVUVTVCkKLSAgICAgICAgcmFpc2UgVmVyc2lvbkV4Y2VwdGlvbigKLSAgICAgICAg
ICAgICdVbnN1cHBvcnRlZCB2ZXJzaW9uICVyIGZvciBoZWFkZXIgJXMnICUKLSAgICAgICAgICAg
ICh2ZXJzaW9uLCBjb21tb24uU0VDX1dFQlNPQ0tFVF9WRVJTSU9OX0hFQURFUiksCi0gICAgICAg
ICAgICBzdXBwb3J0ZWRfdmVyc2lvbnM9JywgJy5qb2luKG1hcChzdHIsIF9TVVBQT1JURURfVkVS
U0lPTlMpKSkKLQotICAgIGRlZiBfc2V0X3Byb3RvY29sKHNlbGYpOgotICAgICAgICBzZWxmLl9y
ZXF1ZXN0LndzX3Byb3RvY29sID0gTm9uZQotCi0gICAgICAgIHByb3RvY29sX2hlYWRlciA9IHNl
bGYuX3JlcXVlc3QuaGVhZGVyc19pbi5nZXQoCi0gICAgICAgICAgICBjb21tb24uU0VDX1dFQlNP
Q0tFVF9QUk9UT0NPTF9IRUFERVIpCi0KLSAgICAgICAgaWYgcHJvdG9jb2xfaGVhZGVyIGlzIE5v
bmU6Ci0gICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX3JlcXVlc3RlZF9wcm90b2NvbHMgPSBO
b25lCi0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX3JlcXVl
c3RlZF9wcm90b2NvbHMgPSBwYXJzZV90b2tlbl9saXN0KAotICAgICAgICAgICAgcHJvdG9jb2xf
aGVhZGVyKQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1N1YnByb3RvY29scyByZXF1ZXN0
ZWQ6ICVyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcmVx
dWVzdGVkX3Byb3RvY29scykKLQotICAgIGRlZiBfcGFyc2VfZXh0ZW5zaW9ucyhzZWxmKToKLSAg
ICAgICAgZXh0ZW5zaW9uc19oZWFkZXIgPSBzZWxmLl9yZXF1ZXN0LmhlYWRlcnNfaW4uZ2V0KAot
ICAgICAgICAgICAgY29tbW9uLlNFQ19XRUJTT0NLRVRfRVhURU5TSU9OU19IRUFERVIpCi0gICAg
ICAgIGlmIG5vdCBleHRlbnNpb25zX2hlYWRlcjoKLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qu
d3NfcmVxdWVzdGVkX2V4dGVuc2lvbnMgPSBOb25lCi0gICAgICAgICAgICByZXR1cm4KLQotICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX3JlcXVlc3RlZF9leHRlbnNp
b25zID0gY29tbW9uLnBhcnNlX2V4dGVuc2lvbnMoCi0gICAgICAgICAgICAgICAgZXh0ZW5zaW9u
c19oZWFkZXIpCi0gICAgICAgIGV4Y2VwdCBjb21tb24uRXh0ZW5zaW9uUGFyc2luZ0V4Y2VwdGlv
biwgZToKLSAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKLSAgICAgICAgICAg
ICAgICAnRmFpbGVkIHRvIHBhcnNlIFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXI6ICVy
JyAlIGUpCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAgICAgJ0V4dGVu
c2lvbnMgcmVxdWVzdGVkOiAlcicsCi0gICAgICAgICAgICBtYXAoY29tbW9uLkV4dGVuc2lvblBh
cmFtZXRlci5uYW1lLAotICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcmVxdWVzdGVk
X2V4dGVuc2lvbnMpKQotCi0gICAgZGVmIF92YWxpZGF0ZV9rZXkoc2VsZiwga2V5KToKLSAgICAg
ICAgaWYga2V5LmZpbmQoJywnKSA+PSAwOgotICAgICAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhj
ZXB0aW9uKCdSZXF1ZXN0IGhhcyBtdWx0aXBsZSAlcyBoZWFkZXIgbGluZXMgb3IgJwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb250YWlucyBpbGxlZ2FsIGNoYXJhY3Rl
ciBcJyxcJzogJXInICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29t
bW9uLlNFQ19XRUJTT0NLRVRfS0VZX0hFQURFUiwga2V5KSkKLQotICAgICAgICAjIFZhbGlkYXRl
Ci0gICAgICAgIGtleV9pc192YWxpZCA9IEZhbHNlCi0gICAgICAgIHRyeToKLSAgICAgICAgICAg
ICMgVmFsaWRhdGUga2V5IGJ5IHF1aWNrIHJlZ2V4IG1hdGNoIGJlZm9yZSBwYXJzaW5nIGJ5IGJh
c2U2NAotICAgICAgICAgICAgIyBtb2R1bGUuIEJlY2F1c2UgYmFzZTY0IG1vZHVsZSBza2lwcyBp
bnZhbGlkIGNoYXJhY3RlcnMsIHdlIGhhdmUKLSAgICAgICAgICAgICMgdG8gZG8gdGhpcyBpbiBh
ZHZhbmNlIHRvIG1ha2UgdGhpcyBzZXJ2ZXIgc3RyaWN0bHkgcmVqZWN0IGlsbGVnYWwKLSAgICAg
ICAgICAgICMga2V5cy4KLSAgICAgICAgICAgIGlmIF9TRUNfV0VCU09DS0VUX0tFWV9SRUdFWC5t
YXRjaChrZXkpOgotICAgICAgICAgICAgICAgIGRlY29kZWRfa2V5ID0gYmFzZTY0LmI2NGRlY29k
ZShrZXkpCi0gICAgICAgICAgICAgICAgaWYgbGVuKGRlY29kZWRfa2V5KSA9PSAxNjoKLSAgICAg
ICAgICAgICAgICAgICAga2V5X2lzX3ZhbGlkID0gVHJ1ZQotICAgICAgICBleGNlcHQgVHlwZUVy
cm9yLCBlOgotICAgICAgICAgICAgcGFzcwotCi0gICAgICAgIGlmIG5vdCBrZXlfaXNfdmFsaWQ6
Ci0gICAgICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAg
J0lsbGVnYWwgdmFsdWUgZm9yIGhlYWRlciAlczogJXInICUKLSAgICAgICAgICAgICAgICAoY29t
bW9uLlNFQ19XRUJTT0NLRVRfS0VZX0hFQURFUiwga2V5KSkKLQotICAgICAgICByZXR1cm4gZGVj
b2RlZF9rZXkKLQotICAgIGRlZiBfZ2V0X2tleShzZWxmKToKLSAgICAgICAga2V5ID0gZ2V0X21h
bmRhdG9yeV9oZWFkZXIoCi0gICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LCBjb21tb24uU0VDX1dF
QlNPQ0tFVF9LRVlfSEVBREVSKQotCi0gICAgICAgIGRlY29kZWRfa2V5ID0gc2VsZi5fdmFsaWRh
dGVfa2V5KGtleSkKLQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAn
JXM6ICVyICglcyknLAotICAgICAgICAgICAgY29tbW9uLlNFQ19XRUJTT0NLRVRfS0VZX0hFQURF
UiwKLSAgICAgICAgICAgIGtleSwKLSAgICAgICAgICAgIHV0aWwuaGV4aWZ5KGRlY29kZWRfa2V5
KSkKLQotICAgICAgICByZXR1cm4ga2V5Ci0KLSAgICBkZWYgX2NyZWF0ZV9zdHJlYW0oc2VsZiwg
c3RyZWFtX29wdGlvbnMpOgotICAgICAgICByZXR1cm4gU3RyZWFtKHNlbGYuX3JlcXVlc3QsIHN0
cmVhbV9vcHRpb25zKQotCi0gICAgZGVmIF9jcmVhdGVfaGFuZHNoYWtlX3Jlc3BvbnNlKHNlbGYs
IGFjY2VwdCk6Ci0gICAgICAgIHJlc3BvbnNlID0gW10KLQotICAgICAgICByZXNwb25zZS5hcHBl
bmQoJ0hUVFAvMS4xIDEwMSBTd2l0Y2hpbmcgUHJvdG9jb2xzXHJcbicpCi0KLSAgICAgICAgIyBX
ZWJTb2NrZXQgaGVhZGVycwotICAgICAgICByZXNwb25zZS5hcHBlbmQoZm9ybWF0X2hlYWRlcigK
LSAgICAgICAgICAgIGNvbW1vbi5VUEdSQURFX0hFQURFUiwgY29tbW9uLldFQlNPQ0tFVF9VUEdS
QURFX1RZUEUpKQotICAgICAgICByZXNwb25zZS5hcHBlbmQoZm9ybWF0X2hlYWRlcigKLSAgICAg
ICAgICAgIGNvbW1vbi5DT05ORUNUSU9OX0hFQURFUiwgY29tbW9uLlVQR1JBREVfQ09OTkVDVElP
Tl9UWVBFKSkKLSAgICAgICAgcmVzcG9uc2UuYXBwZW5kKGZvcm1hdF9oZWFkZXIoCi0gICAgICAg
ICAgICBjb21tb24uU0VDX1dFQlNPQ0tFVF9BQ0NFUFRfSEVBREVSLCBhY2NlcHQpKQotICAgICAg
ICBpZiBzZWxmLl9yZXF1ZXN0LndzX3Byb3RvY29sIGlzIG5vdCBOb25lOgotICAgICAgICAgICAg
cmVzcG9uc2UuYXBwZW5kKGZvcm1hdF9oZWFkZXIoCi0gICAgICAgICAgICAgICAgY29tbW9uLlNF
Q19XRUJTT0NLRVRfUFJPVE9DT0xfSEVBREVSLAotICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVl
c3Qud3NfcHJvdG9jb2wpKQotICAgICAgICBpZiAoc2VsZi5fcmVxdWVzdC53c19leHRlbnNpb25z
IGlzIG5vdCBOb25lIGFuZAotICAgICAgICAgICAgbGVuKHNlbGYuX3JlcXVlc3Qud3NfZXh0ZW5z
aW9ucykgIT0gMCk6Ci0gICAgICAgICAgICByZXNwb25zZS5hcHBlbmQoZm9ybWF0X2hlYWRlcigK
LSAgICAgICAgICAgICAgICBjb21tb24uU0VDX1dFQlNPQ0tFVF9FWFRFTlNJT05TX0hFQURFUiwK
LSAgICAgICAgICAgICAgICBjb21tb24uZm9ybWF0X2V4dGVuc2lvbnMoc2VsZi5fcmVxdWVzdC53
c19leHRlbnNpb25zKSkpCi0KLSAgICAgICAgIyBIZWFkZXJzIG5vdCBzcGVjaWZpYyBmb3IgV2Vi
U29ja2V0Ci0gICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBzZWxmLl9yZXF1ZXN0LmV4dHJhX2hl
YWRlcnM6Ci0gICAgICAgICAgICByZXNwb25zZS5hcHBlbmQoZm9ybWF0X2hlYWRlcihuYW1lLCB2
YWx1ZSkpCi0KLSAgICAgICAgcmVzcG9uc2UuYXBwZW5kKCdcclxuJykKLQotICAgICAgICByZXR1
cm4gJycuam9pbihyZXNwb25zZSkKLQotICAgIGRlZiBfc2VuZF9oYW5kc2hha2Uoc2VsZiwgYWNj
ZXB0KToKLSAgICAgICAgcmF3X3Jlc3BvbnNlID0gc2VsZi5fY3JlYXRlX2hhbmRzaGFrZV9yZXNw
b25zZShhY2NlcHQpCi0gICAgICAgIHNlbGYuX3JlcXVlc3QuY29ubmVjdGlvbi53cml0ZShyYXdf
cmVzcG9uc2UpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnU2VudCBzZXJ2ZXJcJ3Mgb3Bl
bmluZyBoYW5kc2hha2U6ICVyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhd19yZXNw
b25zZSkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9w
eXdlYnNvY2tldC9oYW5kc2hha2UvaHliaTAwLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0
L2hhbmRzaGFrZS9oeWJpMDAucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3NTc3
MTdhNjM5YmFjM2RiMDVkNGNiMzAyN2UwNTVmZGJmN2YzY2YuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L2hhbmRz
aGFrZS9oeWJpMDAucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyOTMgKzAsMCBAQAotIyBDb3B5cmln
aHQgMjAxMSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0j
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0KLQotIiIiVGhpcyBmaWxlIHByb3ZpZGVzIHRoZSBvcGVuaW5nIGhhbmRzaGFrZSBw
cm9jZXNzb3IgZm9yIHRoZSBXZWJTb2NrZXQKLXByb3RvY29sIHZlcnNpb24gSHlCaSAwMC4KLQot
U3BlY2lmaWNhdGlvbjoKLWh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWlldGYtaHli
aS10aGV3ZWJzb2NrZXRwcm90b2NvbC0wMAotIiIiCi0KLQotIyBOb3RlOiByZXF1ZXN0LmNvbm5l
Y3Rpb24ud3JpdGUvcmVhZCBhcmUgdXNlZCBpbiB0aGlzIG1vZHVsZSwgZXZlbiB0aG91Z2gKLSMg
bW9kX3B5dGhvbiBkb2N1bWVudCBzYXlzIHRoYXQgdGhleSBzaG91bGQgYmUgdXNlZCBvbmx5IGlu
IGNvbm5lY3Rpb24KLSMgaGFuZGxlcnMuIFVuZm9ydHVuYXRlbHksIHdlIGhhdmUgbm8gb3RoZXIg
b3B0aW9ucy4gRm9yIGV4YW1wbGUsCi0jIHJlcXVlc3Qud3JpdGUvcmVhZCBhcmUgbm90IHN1aXRh
YmxlIGJlY2F1c2UgdGhleSBkb24ndCBhbGxvdyBkaXJlY3QgcmF3IGJ5dGVzCi0jIHdyaXRpbmcv
cmVhZGluZy4KLQotCi1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IHJlCi1pbXBvcnQgc3RydWN0Ci0K
LWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KLWZyb20gbW9kX3B5d2Vic29ja2V0
LnN0cmVhbSBpbXBvcnQgU3RyZWFtSGl4aWU3NQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0
IHV0aWwKLWZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgSGFuZHNo
YWtlRXhjZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0
IGNoZWNrX3JlcXVlc3RfbGluZQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNl
IGltcG9ydCBmb3JtYXRfaGVhZGVyCi1mcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jh
c2UgaW1wb3J0IGdldF9kZWZhdWx0X3BvcnQKLWZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFr
ZS5fYmFzZSBpbXBvcnQgZ2V0X21hbmRhdG9yeV9oZWFkZXIKLWZyb20gbW9kX3B5d2Vic29ja2V0
LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgcGFyc2VfaG9zdF9oZWFkZXIKLWZyb20gbW9kX3B5d2Vi
c29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgdmFsaWRhdGVfbWFuZGF0b3J5X2hlYWRlcgot
Ci0KLV9NQU5EQVRPUllfSEVBREVSUyA9IFsKLSAgICAjIGtleSwgZXhwZWN0ZWQgdmFsdWUgb3Ig
Tm9uZQotICAgIFtjb21tb24uVVBHUkFERV9IRUFERVIsIGNvbW1vbi5XRUJTT0NLRVRfVVBHUkFE
RV9UWVBFX0hJWElFNzVdLAotICAgIFtjb21tb24uQ09OTkVDVElPTl9IRUFERVIsIGNvbW1vbi5V
UEdSQURFX0NPTk5FQ1RJT05fVFlQRV0sCi1dCi0KLQotZGVmIF92YWxpZGF0ZV9zdWJwcm90b2Nv
bChzdWJwcm90b2NvbCk6Ci0gICAgIiIiQ2hlY2tzIGlmIGNoYXJhY3RlcnMgaW4gc3VicHJvdG9j
b2wgYXJlIGluIHJhbmdlIGJldHdlZW4gVSswMDIwIGFuZAotICAgIFUrMDA3RS4gQSB2YWx1ZSBp
biB0aGUgU2VjLVdlYlNvY2tldC1Qcm90b2NvbCBmaWVsZCBuZWVkIHRvIHNhdGlzZnkgdGhpcwot
ICAgIHJlcXVpcmVtZW50LgotCi0gICAgU2VlIHRoZSBTZWN0aW9uIDQuMS4gT3BlbmluZyBoYW5k
c2hha2Ugb2YgdGhlIHNwZWMuCi0gICAgIiIiCi0KLSAgICBpZiBub3Qgc3VicHJvdG9jb2w6Ci0g
ICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbignSW52YWxpZCBzdWJwcm90b2NvbCBuYW1l
OiBlbXB0eScpCi0KLSAgICAjIFBhcmFtZXRlciBzaG91bGQgYmUgaW4gdGhlIHJhbmdlIFUrMDAy
MCB0byBVKzAwN0UuCi0gICAgZm9yIGMgaW4gc3VicHJvdG9jb2w6Ci0gICAgICAgIGlmIG5vdCAw
eDIwIDw9IG9yZChjKSA8PSAweDdlOgotICAgICAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0
aW9uKAotICAgICAgICAgICAgICAgICdJbGxlZ2FsIGNoYXJhY3RlciBpbiBzdWJwcm90b2NvbCBu
YW1lOiAlcicgJSBjKQotCi0KLWRlZiBfY2hlY2tfaGVhZGVyX2xpbmVzKHJlcXVlc3QsIG1hbmRh
dG9yeV9oZWFkZXJzKToKLSAgICBjaGVja19yZXF1ZXN0X2xpbmUocmVxdWVzdCkKLQotICAgICMg
VGhlIGV4cGVjdGVkIGZpZWxkIG5hbWVzLCBhbmQgdGhlIG1lYW5pbmcgb2YgdGhlaXIgY29ycmVz
cG9uZGluZwotICAgICMgdmFsdWVzLCBhcmUgYXMgZm9sbG93cy4KLSAgICAjICB8VXBncmFkZXwg
YW5kIHxDb25uZWN0aW9ufAotICAgIGZvciBrZXksIGV4cGVjdGVkX3ZhbHVlIGluIG1hbmRhdG9y
eV9oZWFkZXJzOgotICAgICAgICB2YWxpZGF0ZV9tYW5kYXRvcnlfaGVhZGVyKHJlcXVlc3QsIGtl
eSwgZXhwZWN0ZWRfdmFsdWUpCi0KLQotZGVmIF9idWlsZF9sb2NhdGlvbihyZXF1ZXN0KToKLSAg
ICAiIiJCdWlsZCBXZWJTb2NrZXQgbG9jYXRpb24gZm9yIHJlcXVlc3QuIiIiCi0KLSAgICBsb2Nh
dGlvbl9wYXJ0cyA9IFtdCi0gICAgaWYgcmVxdWVzdC5pc19odHRwcygpOgotICAgICAgICBsb2Nh
dGlvbl9wYXJ0cy5hcHBlbmQoY29tbW9uLldFQl9TT0NLRVRfU0VDVVJFX1NDSEVNRSkKLSAgICBl
bHNlOgotICAgICAgICBsb2NhdGlvbl9wYXJ0cy5hcHBlbmQoY29tbW9uLldFQl9TT0NLRVRfU0NI
RU1FKQotICAgIGxvY2F0aW9uX3BhcnRzLmFwcGVuZCgnOi8vJykKLSAgICBob3N0LCBwb3J0ID0g
cGFyc2VfaG9zdF9oZWFkZXIocmVxdWVzdCkKLSAgICBjb25uZWN0aW9uX3BvcnQgPSByZXF1ZXN0
LmNvbm5lY3Rpb24ubG9jYWxfYWRkclsxXQotICAgIGlmIHBvcnQgIT0gY29ubmVjdGlvbl9wb3J0
OgotICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oJ0hlYWRlci9jb25uZWN0aW9uIHBv
cnQgbWlzbWF0Y2g6ICVkLyVkJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
cG9ydCwgY29ubmVjdGlvbl9wb3J0KSkKLSAgICBsb2NhdGlvbl9wYXJ0cy5hcHBlbmQoaG9zdCkK
LSAgICBpZiAocG9ydCAhPSBnZXRfZGVmYXVsdF9wb3J0KHJlcXVlc3QuaXNfaHR0cHMoKSkpOgot
ICAgICAgICBsb2NhdGlvbl9wYXJ0cy5hcHBlbmQoJzonKQotICAgICAgICBsb2NhdGlvbl9wYXJ0
cy5hcHBlbmQoc3RyKHBvcnQpKQotICAgIGxvY2F0aW9uX3BhcnRzLmFwcGVuZChyZXF1ZXN0LnVu
cGFyc2VkX3VyaSkKLSAgICByZXR1cm4gJycuam9pbihsb2NhdGlvbl9wYXJ0cykKLQotCi1jbGFz
cyBIYW5kc2hha2VyKG9iamVjdCk6Ci0gICAgIiIiT3BlbmluZyBoYW5kc2hha2UgcHJvY2Vzc29y
IGZvciB0aGUgV2ViU29ja2V0IHByb3RvY29sIHZlcnNpb24gSHlCaSAwMC4KLSAgICAiIiIKLQot
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0LCBkaXNwYXRjaGVyKToKLSAgICAgICAgIiIi
Q29uc3RydWN0IGFuIGluc3RhbmNlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICByZXF1
ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3QuCi0gICAgICAgICAgICBkaXNwYXRjaGVyOiBEaXNwYXRj
aGVyIChkaXNwYXRjaC5EaXNwYXRjaGVyKS4KLQotICAgICAgICBIYW5kc2hha2VyIHdpbGwgYWRk
IGF0dHJpYnV0ZXMgc3VjaCBhcyB3c19yZXNvdXJjZSBpbiBwZXJmb3JtaW5nCi0gICAgICAgIGhh
bmRzaGFrZS4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRf
Y2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgc2VsZi5fcmVxdWVzdCA9IHJlcXVlc3QKLSAg
ICAgICAgc2VsZi5fZGlzcGF0Y2hlciA9IGRpc3BhdGNoZXIKLQotICAgIGRlZiBkb19oYW5kc2hh
a2Uoc2VsZik6Ci0gICAgICAgICIiIlBlcmZvcm0gV2ViU29ja2V0IEhhbmRzaGFrZS4KLQotICAg
ICAgICBPbiBfcmVxdWVzdCwgd2Ugc2V0Ci0gICAgICAgICAgICB3c19yZXNvdXJjZSwgd3NfcHJv
dG9jb2wsIHdzX2xvY2F0aW9uLCB3c19vcmlnaW4sIHdzX2NoYWxsZW5nZSwKLSAgICAgICAgICAg
IHdzX2NoYWxsZW5nZV9tZDU6IFdlYlNvY2tldCBoYW5kc2hha2UgaW5mb3JtYXRpb24uCi0gICAg
ICAgICAgICB3c19zdHJlYW06IEZyYW1lIGdlbmVyYXRpb24vcGFyc2luZyBjbGFzcy4KLSAgICAg
ICAgICAgIHdzX3ZlcnNpb246IFByb3RvY29sIHZlcnNpb24uCi0KLSAgICAgICAgUmFpc2VzOgot
ICAgICAgICAgICAgSGFuZHNoYWtlRXhjZXB0aW9uOiB3aGVuIGFueSBlcnJvciBoYXBwZW5lZCBp
biBwYXJzaW5nIHRoZSBvcGVuaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhh
bmRzaGFrZSByZXF1ZXN0LgotICAgICAgICAiIiIKLQotICAgICAgICAjIDUuMSBSZWFkaW5nIHRo
ZSBjbGllbnQncyBvcGVuaW5nIGhhbmRzaGFrZS4KLSAgICAgICAgIyBkaXNwYXRjaGVyIHNldHMg
aXQgaW4gc2VsZi5fcmVxdWVzdC4KLSAgICAgICAgX2NoZWNrX2hlYWRlcl9saW5lcyhzZWxmLl9y
ZXF1ZXN0LCBfTUFOREFUT1JZX0hFQURFUlMpCi0gICAgICAgIHNlbGYuX3NldF9yZXNvdXJjZSgp
Ci0gICAgICAgIHNlbGYuX3NldF9zdWJwcm90b2NvbCgpCi0gICAgICAgIHNlbGYuX3NldF9sb2Nh
dGlvbigpCi0gICAgICAgIHNlbGYuX3NldF9vcmlnaW4oKQotICAgICAgICBzZWxmLl9zZXRfY2hh
bGxlbmdlX3Jlc3BvbnNlKCkKLSAgICAgICAgc2VsZi5fc2V0X3Byb3RvY29sX3ZlcnNpb24oKQot
Ci0gICAgICAgIHNlbGYuX2Rpc3BhdGNoZXIuZG9fZXh0cmFfaGFuZHNoYWtlKHNlbGYuX3JlcXVl
c3QpCi0KLSAgICAgICAgc2VsZi5fc2VuZF9oYW5kc2hha2UoKQotCi0gICAgZGVmIF9zZXRfcmVz
b3VyY2Uoc2VsZik6Ci0gICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcmVzb3VyY2UgPSBzZWxmLl9y
ZXF1ZXN0LnVyaQotCi0gICAgZGVmIF9zZXRfc3VicHJvdG9jb2woc2VsZik6Ci0gICAgICAgICMg
fFNlYy1XZWJTb2NrZXQtUHJvdG9jb2x8Ci0gICAgICAgIHN1YnByb3RvY29sID0gc2VsZi5fcmVx
dWVzdC5oZWFkZXJzX2luLmdldCgKLSAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VCU09DS0VUX1BS
T1RPQ09MX0hFQURFUikKLSAgICAgICAgaWYgc3VicHJvdG9jb2wgaXMgbm90IE5vbmU6Ci0gICAg
ICAgICAgICBfdmFsaWRhdGVfc3VicHJvdG9jb2woc3VicHJvdG9jb2wpCi0gICAgICAgIHNlbGYu
X3JlcXVlc3Qud3NfcHJvdG9jb2wgPSBzdWJwcm90b2NvbAotCi0gICAgZGVmIF9zZXRfbG9jYXRp
b24oc2VsZik6Ci0gICAgICAgICMgfEhvc3R8Ci0gICAgICAgIGhvc3QgPSBzZWxmLl9yZXF1ZXN0
LmhlYWRlcnNfaW4uZ2V0KGNvbW1vbi5IT1NUX0hFQURFUikKLSAgICAgICAgaWYgaG9zdCBpcyBu
b3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfbG9jYXRpb24gPSBfYnVpbGRf
bG9jYXRpb24oc2VsZi5fcmVxdWVzdCkKLSAgICAgICAgIyBUT0RPKHVrYWkpOiBjaGVjayBob3N0
IGlzIHRoaXMgaG9zdC4KLQotICAgIGRlZiBfc2V0X29yaWdpbihzZWxmKToKLSAgICAgICAgIyB8
T3JpZ2lufAotICAgICAgICBvcmlnaW4gPSBzZWxmLl9yZXF1ZXN0LmhlYWRlcnNfaW4uZ2V0KGNv
bW1vbi5PUklHSU5fSEVBREVSKQotICAgICAgICBpZiBvcmlnaW4gaXMgbm90IE5vbmU6Ci0gICAg
ICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX29yaWdpbiA9IG9yaWdpbgotCi0gICAgZGVmIF9zZXRf
cHJvdG9jb2xfdmVyc2lvbihzZWxmKToKLSAgICAgICAgIyB8U2VjLVdlYlNvY2tldC1EcmFmdHwK
LSAgICAgICAgZHJhZnQgPSBzZWxmLl9yZXF1ZXN0LmhlYWRlcnNfaW4uZ2V0KGNvbW1vbi5TRUNf
V0VCU09DS0VUX0RSQUZUX0hFQURFUikKLSAgICAgICAgaWYgZHJhZnQgaXMgbm90IE5vbmUgYW5k
IGRyYWZ0ICE9ICcwJzoKLSAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbignSWxs
ZWdhbCB2YWx1ZSBmb3IgJXM6ICVzJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKGNvbW1vbi5TRUNfV0VCU09DS0VUX0RSQUZUX0hFQURFUiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZHJhZnQpKQotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5k
ZWJ1ZygnUHJvdG9jb2wgdmVyc2lvbiBpcyBIeUJpIDAwJykKLSAgICAgICAgc2VsZi5fcmVxdWVz
dC53c192ZXJzaW9uID0gY29tbW9uLlZFUlNJT05fSFlCSTAwCi0gICAgICAgIHNlbGYuX3JlcXVl
c3Qud3Nfc3RyZWFtID0gU3RyZWFtSGl4aWU3NShzZWxmLl9yZXF1ZXN0LCBUcnVlKQotCi0gICAg
ZGVmIF9zZXRfY2hhbGxlbmdlX3Jlc3BvbnNlKHNlbGYpOgotICAgICAgICAjIDUuMiA0LTguCi0g
ICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfY2hhbGxlbmdlID0gc2VsZi5fZ2V0X2NoYWxsZW5nZSgp
Ci0gICAgICAgICMgNS4yIDkuIGxldCAvcmVzcG9uc2UvIGJlIHRoZSBNRDUgZmludGVycHJpbnQg
b2YgL2NoYWxsZW5nZS8KLSAgICAgICAgc2VsZi5fcmVxdWVzdC53c19jaGFsbGVuZ2VfbWQ1ID0g
dXRpbC5tZDVfaGFzaCgKLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfY2hhbGxlbmdlKS5k
aWdlc3QoKQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAnQ2hhbGxl
bmdlOiAlciAoJXMpJywKLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfY2hhbGxlbmdlLAot
ICAgICAgICAgICAgdXRpbC5oZXhpZnkoc2VsZi5fcmVxdWVzdC53c19jaGFsbGVuZ2UpKQotICAg
ICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAnQ2hhbGxlbmdlIHJlc3BvbnNl
OiAlciAoJXMpJywKLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfY2hhbGxlbmdlX21kNSwK
LSAgICAgICAgICAgIHV0aWwuaGV4aWZ5KHNlbGYuX3JlcXVlc3Qud3NfY2hhbGxlbmdlX21kNSkp
Ci0KLSAgICBkZWYgX2dldF9rZXlfdmFsdWUoc2VsZiwga2V5X2ZpZWxkKToKLSAgICAgICAga2V5
X3ZhbHVlID0gZ2V0X21hbmRhdG9yeV9oZWFkZXIoc2VsZi5fcmVxdWVzdCwga2V5X2ZpZWxkKQot
Ci0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXM6ICVyJywga2V5X2ZpZWxkLCBrZXlfdmFs
dWUpCi0KLSAgICAgICAgIyA1LjIgNC4gbGV0IC9rZXktbnVtYmVyX24vIGJlIHRoZSBkaWdpdHMg
KGNoYXJhY3RlcnMgaW4gdGhlIHJhbmdlCi0gICAgICAgICMgVSswMDMwIERJR0lUIFpFUk8gKDAp
IHRvIFUrMDAzOSBESUdJVCBOSU5FICg5KSkgaW4gL2tleV9uLywKLSAgICAgICAgIyBpbnRlcnBy
ZXRlZCBhcyBhIGJhc2UgdGVuIGludGVnZXIsIGlnbm9yaW5nIGFsbCBvdGhlciBjaGFyYWN0ZXJz
Ci0gICAgICAgICMgaW4gL2tleV9uLy4KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAga2V5X251
bWJlciA9IGludChyZS5zdWIoIlxcRCIsICIiLCBrZXlfdmFsdWUpKQotICAgICAgICBleGNlcHQ6
Ci0gICAgICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oJyVzIGZpZWxkIGNvbnRhaW5z
IG5vIGRpZ2l0JyAlIGtleV9maWVsZCkKLSAgICAgICAgIyA1LjIgNS4gbGV0IC9zcGFjZXNfbi8g
YmUgdGhlIG51bWJlciBvZiBVKzAwMjAgU1BBQ0UgY2hhcmFjdGVycwotICAgICAgICAjIGluIC9r
ZXlfbi8uCi0gICAgICAgIHNwYWNlcyA9IHJlLnN1Ym4oIiAiLCAiIiwga2V5X3ZhbHVlKVsxXQot
ICAgICAgICBpZiBzcGFjZXMgPT0gMDoKLSAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2Vw
dGlvbignJXMgZmllbGQgY29udGFpbnMgbm8gc3BhY2UnICUga2V5X2ZpZWxkKQotCi0gICAgICAg
IHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICclczogS2V5LW51bWJlciBpcyAlZCBh
bmQgbnVtYmVyIG9mIHNwYWNlcyBpcyAlZCcsCi0gICAgICAgICAgICBrZXlfZmllbGQsIGtleV9u
dW1iZXIsIHNwYWNlcykKLQotICAgICAgICAjIDUuMiA2LiBpZiAva2V5LW51bWJlcl9uLyBpcyBu
b3QgYW4gaW50ZWdyYWwgbXVsdGlwbGUgb2YgL3NwYWNlc19uLwotICAgICAgICAjIHRoZW4gYWJv
cnQgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uLgotICAgICAgICBpZiBrZXlfbnVtYmVyICUgc3Bh
Y2VzICE9IDA6Ci0gICAgICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oCi0gICAgICAg
ICAgICAgICAgJyVzOiBLZXktbnVtYmVyICglZCkgaXMgbm90IGFuIGludGVncmFsIG11bHRpcGxl
IG9mIHNwYWNlcyAnCi0gICAgICAgICAgICAgICAgJyglZCknICUgKGtleV9maWVsZCwga2V5X251
bWJlciwgc3BhY2VzKSkKLSAgICAgICAgIyA1LjIgNy4gbGV0IC9wYXJ0X24vIGJlIC9rZXktbnVt
YmVyX24vIGRpdmlkZWQgYnkgL3NwYWNlc19uLy4KLSAgICAgICAgcGFydCA9IGtleV9udW1iZXIg
LyBzcGFjZXMKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCclczogUGFydCBpcyAlZCcsIGtl
eV9maWVsZCwgcGFydCkKLSAgICAgICAgcmV0dXJuIHBhcnQKLQotICAgIGRlZiBfZ2V0X2NoYWxs
ZW5nZShzZWxmKToKLSAgICAgICAgIyA1LjIgNC03LgotICAgICAgICBrZXkxID0gc2VsZi5fZ2V0
X2tleV92YWx1ZShjb21tb24uU0VDX1dFQlNPQ0tFVF9LRVkxX0hFQURFUikKLSAgICAgICAga2V5
MiA9IHNlbGYuX2dldF9rZXlfdmFsdWUoY29tbW9uLlNFQ19XRUJTT0NLRVRfS0VZMl9IRUFERVIp
Ci0gICAgICAgICMgNS4yIDguIGxldCAvY2hhbGxlbmdlLyBiZSB0aGUgY29uY2F0ZW5hdGlvbiBv
ZiAvcGFydF8xLywKLSAgICAgICAgY2hhbGxlbmdlID0gJycKLSAgICAgICAgY2hhbGxlbmdlICs9
IHN0cnVjdC5wYWNrKCchSScsIGtleTEpICAjIG5ldHdvcmsgYnl0ZW9yZGVyIGludAotICAgICAg
ICBjaGFsbGVuZ2UgKz0gc3RydWN0LnBhY2soJyFJJywga2V5MikgICMgbmV0d29yayBieXRlb3Jk
ZXIgaW50Ci0gICAgICAgIGNoYWxsZW5nZSArPSBzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24ucmVh
ZCg4KQotICAgICAgICByZXR1cm4gY2hhbGxlbmdlCi0KLSAgICBkZWYgX3NlbmRfaGFuZHNoYWtl
KHNlbGYpOgotICAgICAgICByZXNwb25zZSA9IFtdCi0KLSAgICAgICAgIyA1LjIgMTAuIHNlbmQg
dGhlIGZvbGxvd2luZyBsaW5lLgotICAgICAgICByZXNwb25zZS5hcHBlbmQoJ0hUVFAvMS4xIDEw
MSBXZWJTb2NrZXQgUHJvdG9jb2wgSGFuZHNoYWtlXHJcbicpCi0KLSAgICAgICAgIyA1LjIgMTEu
IHNlbmQgdGhlIGZvbGxvd2luZyBmaWVsZHMgdG8gdGhlIGNsaWVudC4KLSAgICAgICAgcmVzcG9u
c2UuYXBwZW5kKGZvcm1hdF9oZWFkZXIoCi0gICAgICAgICAgICBjb21tb24uVVBHUkFERV9IRUFE
RVIsIGNvbW1vbi5XRUJTT0NLRVRfVVBHUkFERV9UWVBFX0hJWElFNzUpKQotICAgICAgICByZXNw
b25zZS5hcHBlbmQoZm9ybWF0X2hlYWRlcigKLSAgICAgICAgICAgIGNvbW1vbi5DT05ORUNUSU9O
X0hFQURFUiwgY29tbW9uLlVQR1JBREVfQ09OTkVDVElPTl9UWVBFKSkKLSAgICAgICAgcmVzcG9u
c2UuYXBwZW5kKGZvcm1hdF9oZWFkZXIoCi0gICAgICAgICAgICBjb21tb24uU0VDX1dFQlNPQ0tF
VF9MT0NBVElPTl9IRUFERVIsIHNlbGYuX3JlcXVlc3Qud3NfbG9jYXRpb24pKQotICAgICAgICBy
ZXNwb25zZS5hcHBlbmQoZm9ybWF0X2hlYWRlcigKLSAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VC
U09DS0VUX09SSUdJTl9IRUFERVIsIHNlbGYuX3JlcXVlc3Qud3Nfb3JpZ2luKSkKLSAgICAgICAg
aWYgc2VsZi5fcmVxdWVzdC53c19wcm90b2NvbDoKLSAgICAgICAgICAgIHJlc3BvbnNlLmFwcGVu
ZChmb3JtYXRfaGVhZGVyKAotICAgICAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VCU09DS0VUX1BS
T1RPQ09MX0hFQURFUiwKLSAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX3Byb3RvY29s
KSkKLSAgICAgICAgIyA1LjIgMTIuIHNlbmQgdHdvIGJ5dGVzIDB4MEQgMHgwQS4KLSAgICAgICAg
cmVzcG9uc2UuYXBwZW5kKCdcclxuJykKLSAgICAgICAgIyA1LjIgMTMuIHNlbmQgL3Jlc3BvbnNl
LwotICAgICAgICByZXNwb25zZS5hcHBlbmQoc2VsZi5fcmVxdWVzdC53c19jaGFsbGVuZ2VfbWQ1
KQotCi0gICAgICAgIHJhd19yZXNwb25zZSA9ICcnLmpvaW4ocmVzcG9uc2UpCi0gICAgICAgIHNl
bGYuX3JlcXVlc3QuY29ubmVjdGlvbi53cml0ZShyYXdfcmVzcG9uc2UpCi0gICAgICAgIHNlbGYu
X2xvZ2dlci5kZWJ1ZygnU2VudCBzZXJ2ZXJcJ3Mgb3BlbmluZyBoYW5kc2hha2U6ICVyJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJhd19yZXNwb25zZSkKLQotCi0jIHZpOnN0cz00IHN3
PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvdzNj
LWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL3czYy1pbXBv
cnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTBkZDc1NGE0OTAzNjhiOWU3
YTU5MzM2NWYyZmQwYzA0MTdkMmQyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvdzNjLWltcG9y
dC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBk
aXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBt
b2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEg
cHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzCi0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13
M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3Zl
IHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9t
b2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vi
c29ja2V0L2hhbmRzaGFrZS9fYmFzZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC9oYW5k
c2hha2UvaHliaS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvaHliaTAw
LnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvaGVhZGVycGFyc2VyaGFu
ZGxlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC9oZWFkZXJwYXJzZXJoYW5kbGVyLnB5
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMjQ0NDIxY2Y3OWJjZGQ3MzdkY2I1N2Y5
ZjQzMzZiZTBlODRjYTU0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC9oZWFkZXJwYXJzZXJoYW5kbGVyLnB5Cisr
KyAvZGV2L251bGwKQEAgLTEsMjU0ICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJ
bmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMK
LSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIlB5
dGhvbkhlYWRlclBhcnNlckhhbmRsZXIgZm9yIG1vZF9weXdlYnNvY2tldC4KLQotQXBhY2hlIEhU
VFAgU2VydmVyIGFuZCBtb2RfcHl0aG9uIG11c3QgYmUgY29uZmlndXJlZCBzdWNoIHRoYXQgdGhp
cwotZnVuY3Rpb24gaXMgY2FsbGVkIHRvIGhhbmRsZSBXZWJTb2NrZXQgcmVxdWVzdC4KLSIiIgot
Ci0KLWltcG9ydCBsb2dnaW5nCi0KLWZyb20gbW9kX3B5dGhvbiBpbXBvcnQgYXBhY2hlCi0KLWZy
b20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KLWZyb20gbW9kX3B5d2Vic29ja2V0IGlt
cG9ydCBkaXNwYXRjaAotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGhhbmRzaGFrZQotZnJv
bSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHV0aWwKLQotCi0jIFB5dGhvbk9wdGlvbiB0byBzcGVj
aWZ5IHRoZSBoYW5kbGVyIHJvb3QgZGlyZWN0b3J5LgotX1BZT1BUX0hBTkRMRVJfUk9PVCA9ICdt
b2RfcHl3ZWJzb2NrZXQuaGFuZGxlcl9yb290JwotCi0jIFB5dGhvbk9wdGlvbiB0byBzcGVjaWZ5
IHRoZSBoYW5kbGVyIHNjYW4gZGlyZWN0b3J5LgotIyBUaGlzIG11c3QgYmUgYSBkaXJlY3Rvcnkg
dW5kZXIgdGhlIHJvb3QgZGlyZWN0b3J5LgotIyBUaGUgZGVmYXVsdCBpcyB0aGUgcm9vdCBkaXJl
Y3RvcnkuCi1fUFlPUFRfSEFORExFUl9TQ0FOID0gJ21vZF9weXdlYnNvY2tldC5oYW5kbGVyX3Nj
YW4nCi0KLSMgUHl0aG9uT3B0aW9uIHRvIGFsbG93IGhhbmRsZXJzIHdob3NlIGNhbm9uaWNhbCBw
YXRoIGlzCi0jIG5vdCB1bmRlciB0aGUgcm9vdCBkaXJlY3RvcnkuIEl0J3MgZGlzYWxsb3dlZCBi
eSBkZWZhdWx0LgotIyBTZXQgdGhpcyBvcHRpb24gd2l0aCB2YWx1ZSBvZiAneWVzJyB0byBhbGxv
dy4KLV9QWU9QVF9BTExPV19IQU5ETEVSU19PVVRTSURFX1JPT1QgPSAoCi0gICAgJ21vZF9weXdl
YnNvY2tldC5hbGxvd19oYW5kbGVyc19vdXRzaWRlX3Jvb3RfZGlyJykKLSMgTWFwIGZyb20gdmFs
dWVzIHRvIHRoZWlyIG1lYW5pbmdzLiAnWWVzJyBhbmQgJ05vJyBhcmUgYWxsb3dlZCBqdXN0IGZv
cgotIyBjb21wYXRpYmlsaXR5LgotX1BZT1BUX0FMTE9XX0hBTkRMRVJTX09VVFNJREVfUk9PVF9E
RUZJTklUSU9OID0gewotICAgICdvZmYnOiBGYWxzZSwgJ25vJzogRmFsc2UsICdvbic6IFRydWUs
ICd5ZXMnOiBUcnVlfQotCi0jIChPYnNvbGV0ZSBvcHRpb24uIElnbm9yZWQuKQotIyBQeXRob25P
cHRpb24gdG8gc3BlY2lmeSB0byBhbGxvdyBoYW5kc2hha2UgZGVmaW5lZCBpbiBIaXhpZSA3NSB2
ZXJzaW9uCi0jIHByb3RvY29sLiBUaGUgZGVmYXVsdCBpcyBOb25lIChPZmYpCi1fUFlPUFRfQUxM
T1dfRFJBRlQ3NSA9ICdtb2RfcHl3ZWJzb2NrZXQuYWxsb3dfZHJhZnQ3NScKLSMgTWFwIGZyb20g
dmFsdWVzIHRvIHRoZWlyIG1lYW5pbmdzLgotX1BZT1BUX0FMTE9XX0RSQUZUNzVfREVGSU5JVElP
TiA9IHsnb2ZmJzogRmFsc2UsICdvbic6IFRydWV9Ci0KLQotY2xhc3MgQXBhY2hlTG9nSGFuZGxl
cihsb2dnaW5nLkhhbmRsZXIpOgotICAgICIiIldyYXBwZXIgbG9nZ2luZy5IYW5kbGVyIHRvIGVt
aXQgbG9nIG1lc3NhZ2UgdG8gYXBhY2hlJ3MgZXJyb3IubG9nLiIiIgotCi0gICAgX0xFVkVMUyA9
IHsKLSAgICAgICAgbG9nZ2luZy5ERUJVRzogYXBhY2hlLkFQTE9HX0RFQlVHLAotICAgICAgICBs
b2dnaW5nLklORk86IGFwYWNoZS5BUExPR19JTkZPLAotICAgICAgICBsb2dnaW5nLldBUk5JTkc6
IGFwYWNoZS5BUExPR19XQVJOSU5HLAotICAgICAgICBsb2dnaW5nLkVSUk9SOiBhcGFjaGUuQVBM
T0dfRVJSLAotICAgICAgICBsb2dnaW5nLkNSSVRJQ0FMOiBhcGFjaGUuQVBMT0dfQ1JJVCwKLSAg
ICAgICAgfQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3Q9Tm9uZSk6Ci0gICAgICAg
IGxvZ2dpbmcuSGFuZGxlci5fX2luaXRfXyhzZWxmKQotICAgICAgICBzZWxmLl9sb2dfZXJyb3Ig
PSBhcGFjaGUubG9nX2Vycm9yCi0gICAgICAgIGlmIHJlcXVlc3QgaXMgbm90IE5vbmU6Ci0gICAg
ICAgICAgICBzZWxmLl9sb2dfZXJyb3IgPSByZXF1ZXN0LmxvZ19lcnJvcgotCi0gICAgICAgICMg
VGltZSBhbmQgbGV2ZWwgd2lsbCBiZSBwcmludGVkIGJ5IEFwYWNoZS4KLSAgICAgICAgc2VsZi5f
Zm9ybWF0dGVyID0gbG9nZ2luZy5Gb3JtYXR0ZXIoJyUobmFtZSlzOiAlKG1lc3NhZ2UpcycpCi0K
LSAgICBkZWYgZW1pdChzZWxmLCByZWNvcmQpOgotICAgICAgICBhcGFjaGVfbGV2ZWwgPSBhcGFj
aGUuQVBMT0dfREVCVUcKLSAgICAgICAgaWYgcmVjb3JkLmxldmVsbm8gaW4gQXBhY2hlTG9nSGFu
ZGxlci5fTEVWRUxTOgotICAgICAgICAgICAgYXBhY2hlX2xldmVsID0gQXBhY2hlTG9nSGFuZGxl
ci5fTEVWRUxTW3JlY29yZC5sZXZlbG5vXQotCi0gICAgICAgIG1zZyA9IHNlbGYuX2Zvcm1hdHRl
ci5mb3JtYXQocmVjb3JkKQotCi0gICAgICAgICMgInNlcnZlciIgcGFyYW1ldGVyIG11c3QgYmUg
cGFzc2VkIHRvIGhhdmUgImxldmVsIiBwYXJhbWV0ZXIgd29yay4KLSAgICAgICAgIyBJZiBvbmx5
ICJsZXZlbCIgcGFyYW1ldGVyIGlzIHBhc3NlZCwgbm90aGluZyBzaG93cyB1cCBvbiBBcGFjaGUn
cwotICAgICAgICAjIGxvZy4gSG93ZXZlciwgYXQgdGhpcyBwb2ludCwgd2UgY2Fubm90IGdldCB0
aGUgc2VydmVyIG9iamVjdCBvZiB0aGUKLSAgICAgICAgIyB2aXJ0dWFsIGhvc3Qgd2hpY2ggd2ls
bCBwcm9jZXNzIFdlYlNvY2tldCByZXF1ZXN0cy4gVGhlIG9ubHkgc2VydmVyCi0gICAgICAgICMg
b2JqZWN0IHdlIGNhbiBnZXQgaGVyZSBpcyBhcGFjaGUubWFpbl9zZXJ2ZXIuIEJ1dCBXaGVyZXZl
ciAoc2VydmVyCi0gICAgICAgICMgY29uZmlndXJhdGlvbiBjb250ZXh0IG9yIHZpcnR1YWwgaG9z
dCBjb250ZXh0KSB3ZSBwdXQKLSAgICAgICAgIyBQeXRob25IZWFkZXJQYXJzZXJIYW5kbGVyIGRp
cmVjdGl2ZSwgYXBhY2hlLm1haW5fc2VydmVyIGp1c3QgcG9pbnRzCi0gICAgICAgICMgdGhlIG1h
aW4gc2VydmVyIGluc3RhbmNlIChub3QgYW55IG9mIHZpcnR1YWwgc2VydmVyIGluc3RhbmNlKS4g
VGhlbiwKLSAgICAgICAgIyBBcGFjaGUgZm9sbG93cyBMb2dMZXZlbCBkaXJlY3RpdmUgaW4gdGhl
IHNlcnZlciBjb25maWd1cmF0aW9uIGNvbnRleHQKLSAgICAgICAgIyB0byBmaWx0ZXIgbG9ncy4g
U28sIHdlIG5lZWQgdG8gc3BlY2lmeSBMb2dMZXZlbCBpbiB0aGUgc2VydmVyCi0gICAgICAgICMg
Y29uZmlndXJhdGlvbiBjb250ZXh0LiBFdmVuIGlmIHdlIHNwZWNpZnkgIkxvZ0xldmVsIGRlYnVn
IiBpbiB0aGUKLSAgICAgICAgIyB2aXJ0dWFsIGhvc3QgY29udGV4dCB3aGljaCBhY3R1YWxseSBo
YW5kbGVzIFdlYlNvY2tldCBjb25uZWN0aW9ucywKLSAgICAgICAgIyBERUJVRyBsZXZlbCBsb2dz
IG5ldmVyIHNob3cgdXAgdW5sZXNzICJMb2dMZXZlbCBkZWJ1ZyIgaXMgc3BlY2lmaWVkCi0gICAg
ICAgICMgaW4gdGhlIHNlcnZlciBjb25maWd1cmF0aW9uIGNvbnRleHQuCi0gICAgICAgICMKLSAg
ICAgICAgIyBUT0RPKHR5b3NoaW5vKTogUHJvdmlkZSBsb2dnaW5nIG1ldGhvZHMgb24gcmVxdWVz
dCBvYmplY3QuIFdoZW4KLSAgICAgICAgIyByZXF1ZXN0IGlzIG1wX3JlcXVlc3Qgb2JqZWN0ICh3
aGVuIHVzZWQgdG9nZXRoZXIgd2l0aCBBcGFjaGUpLCB0aGUKLSAgICAgICAgIyBtZXRob2RzIGNh
bGwgcmVxdWVzdC5sb2dfZXJyb3IgaW5kaXJlY3RseS4gV2hlbiByZXF1ZXN0IGlzCi0gICAgICAg
ICMgX1N0YW5kYWxvbmVSZXF1ZXN0LCB0aGUgbWV0aG9kcyBjYWxsIFB5dGhvbidzIGxvZ2dpbmcg
ZmFjaWxpdHkgd2hpY2gKLSAgICAgICAgIyB3ZSBjcmVhdGUgaW4gc3RhbmRhbG9uZS5weS4KLSAg
ICAgICAgc2VsZi5fbG9nX2Vycm9yKG1zZywgYXBhY2hlX2xldmVsLCBhcGFjaGUubWFpbl9zZXJ2
ZXIpCi0KLQotZGVmIF9jb25maWd1cmVfbG9nZ2luZygpOgotICAgIGxvZ2dlciA9IGxvZ2dpbmcu
Z2V0TG9nZ2VyKCkKLSAgICAjIExvZ3MgYXJlIGZpbHRlcmVkIGJ5IEFwYWNoZSBiYXNlZCBvbiBM
b2dMZXZlbCBkaXJlY3RpdmUgaW4gQXBhY2hlCi0gICAgIyBjb25maWd1cmF0aW9uIGZpbGUuIFdl
IG11c3QganVzdCBwYXNzIGxvZ3MgZm9yIGFsbCBsZXZlbHMgdG8KLSAgICAjIEFwYWNoZUxvZ0hh
bmRsZXIuCi0gICAgbG9nZ2VyLnNldExldmVsKGxvZ2dpbmcuREVCVUcpCi0gICAgbG9nZ2VyLmFk
ZEhhbmRsZXIoQXBhY2hlTG9nSGFuZGxlcigpKQotCi0KLV9jb25maWd1cmVfbG9nZ2luZygpCi0K
LV9MT0dHRVIgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKLQotCi1kZWYgX3BhcnNlX29w
dGlvbihuYW1lLCB2YWx1ZSwgZGVmaW5pdGlvbik6Ci0gICAgaWYgdmFsdWUgaXMgTm9uZToKLSAg
ICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBtZWFuaW5nID0gZGVmaW5pdGlvbi5nZXQodmFsdWUu
bG93ZXIoKSkKLSAgICBpZiBtZWFuaW5nIGlzIE5vbmU6Ci0gICAgICAgIHJhaXNlIEV4Y2VwdGlv
bignSW52YWxpZCB2YWx1ZSBmb3IgUHl0aG9uT3B0aW9uICVzOiAlcicgJQotICAgICAgICAgICAg
ICAgICAgICAgICAgKG5hbWUsIHZhbHVlKSkKLSAgICByZXR1cm4gbWVhbmluZwotCi0KLWRlZiBf
Y3JlYXRlX2Rpc3BhdGNoZXIoKToKLSAgICBfTE9HR0VSLmluZm8oJ0luaXRpYWxpemluZyBEaXNw
YXRjaGVyJykKLQotICAgIG9wdGlvbnMgPSBhcGFjaGUubWFpbl9zZXJ2ZXIuZ2V0X29wdGlvbnMo
KQotCi0gICAgaGFuZGxlcl9yb290ID0gb3B0aW9ucy5nZXQoX1BZT1BUX0hBTkRMRVJfUk9PVCwg
Tm9uZSkKLSAgICBpZiBub3QgaGFuZGxlcl9yb290OgotICAgICAgICByYWlzZSBFeGNlcHRpb24o
J1B5dGhvbk9wdGlvbiAlcyBpcyBub3QgZGVmaW5lZCcgJSBfUFlPUFRfSEFORExFUl9ST09ULAot
ICAgICAgICAgICAgICAgICAgICAgICAgYXBhY2hlLkFQTE9HX0VSUikKLQotICAgIGhhbmRsZXJf
c2NhbiA9IG9wdGlvbnMuZ2V0KF9QWU9QVF9IQU5ETEVSX1NDQU4sIGhhbmRsZXJfcm9vdCkKLQot
ICAgIGFsbG93X2hhbmRsZXJzX291dHNpZGVfcm9vdCA9IF9wYXJzZV9vcHRpb24oCi0gICAgICAg
IF9QWU9QVF9BTExPV19IQU5ETEVSU19PVVRTSURFX1JPT1QsCi0gICAgICAgIG9wdGlvbnMuZ2V0
KF9QWU9QVF9BTExPV19IQU5ETEVSU19PVVRTSURFX1JPT1QpLAotICAgICAgICBfUFlPUFRfQUxM
T1dfSEFORExFUlNfT1VUU0lERV9ST09UX0RFRklOSVRJT04pCi0KLSAgICBkaXNwYXRjaGVyID0g
ZGlzcGF0Y2guRGlzcGF0Y2hlcigKLSAgICAgICAgaGFuZGxlcl9yb290LCBoYW5kbGVyX3NjYW4s
IGFsbG93X2hhbmRsZXJzX291dHNpZGVfcm9vdCkKLQotICAgIGZvciB3YXJuaW5nIGluIGRpc3Bh
dGNoZXIuc291cmNlX3dhcm5pbmdzKCk6Ci0gICAgICAgIGFwYWNoZS5sb2dfZXJyb3IoCi0gICAg
ICAgICAgICAnbW9kX3B5d2Vic29ja2V0OiBXYXJuaW5nIGluIHNvdXJjZSBsb2FkaW5nOiAlcycg
JSB3YXJuaW5nLAotICAgICAgICAgICAgYXBhY2hlLkFQTE9HX1dBUk5JTkcpCi0KLSAgICByZXR1
cm4gZGlzcGF0Y2hlcgotCi0KLSMgSW5pdGlhbGl6ZQotX2Rpc3BhdGNoZXIgPSBfY3JlYXRlX2Rp
c3BhdGNoZXIoKQotCi0KLWRlZiBoZWFkZXJwYXJzZXJoYW5kbGVyKHJlcXVlc3QpOgotICAgICIi
IkhhbmRsZSByZXF1ZXN0LgotCi0gICAgQXJnczoKLSAgICAgICAgcmVxdWVzdDogbW9kX3B5dGhv
biByZXF1ZXN0LgotCi0gICAgVGhpcyBmdW5jdGlvbiBpcyBuYW1lZCBoZWFkZXJwYXJzZXJoYW5k
bGVyIGJlY2F1c2UgaXQgaXMgdGhlIGRlZmF1bHQKLSAgICBuYW1lIGZvciBhIFB5dGhvbkhlYWRl
clBhcnNlckhhbmRsZXIuCi0gICAgIiIiCi0KLSAgICBoYW5kc2hha2VfaXNfZG9uZSA9IEZhbHNl
Ci0gICAgdHJ5OgotICAgICAgICAjIEZhbGxiYWNrIHRvIGRlZmF1bHQgaHR0cCBoYW5kbGVyIGZv
ciByZXF1ZXN0IHBhdGhzIGZvciB3aGljaAotICAgICAgICAjIHdlIGRvbid0IGhhdmUgcmVxdWVz
dCBoYW5kbGVycy4KLSAgICAgICAgaWYgbm90IF9kaXNwYXRjaGVyLmdldF9oYW5kbGVyX3N1aXRl
KHJlcXVlc3QudXJpKToKLSAgICAgICAgICAgIHJlcXVlc3QubG9nX2Vycm9yKAotICAgICAgICAg
ICAgICAgICdtb2RfcHl3ZWJzb2NrZXQ6IE5vIGhhbmRsZXIgZm9yIHJlc291cmNlOiAlcicgJSBy
ZXF1ZXN0LnVyaSwKLSAgICAgICAgICAgICAgICBhcGFjaGUuQVBMT0dfSU5GTykKLSAgICAgICAg
ICAgIHJlcXVlc3QubG9nX2Vycm9yKAotICAgICAgICAgICAgICAgICdtb2RfcHl3ZWJzb2NrZXQ6
IEZhbGxiYWNrIHRvIEFwYWNoZScsIGFwYWNoZS5BUExPR19JTkZPKQotICAgICAgICAgICAgcmV0
dXJuIGFwYWNoZS5ERUNMSU5FRAotICAgIGV4Y2VwdCBkaXNwYXRjaC5EaXNwYXRjaEV4Y2VwdGlv
biwgZToKLSAgICAgICAgcmVxdWVzdC5sb2dfZXJyb3IoCi0gICAgICAgICAgICAnbW9kX3B5d2Vi
c29ja2V0OiBEaXNwYXRjaCBmYWlsZWQgZm9yIGVycm9yOiAlcycgJSBlLAotICAgICAgICAgICAg
YXBhY2hlLkFQTE9HX0lORk8pCi0gICAgICAgIGlmIG5vdCBoYW5kc2hha2VfaXNfZG9uZToKLSAg
ICAgICAgICAgIHJldHVybiBlLnN0YXR1cwotCi0gICAgdHJ5OgotICAgICAgICBhbGxvd19kcmFm
dDc1ID0gX3BhcnNlX29wdGlvbigKLSAgICAgICAgICAgIF9QWU9QVF9BTExPV19EUkFGVDc1LAot
ICAgICAgICAgICAgYXBhY2hlLm1haW5fc2VydmVyLmdldF9vcHRpb25zKCkuZ2V0KF9QWU9QVF9B
TExPV19EUkFGVDc1KSwKLSAgICAgICAgICAgIF9QWU9QVF9BTExPV19EUkFGVDc1X0RFRklOSVRJ
T04pCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaGFuZHNoYWtlLmRvX2hhbmRzaGFrZSgK
LSAgICAgICAgICAgICAgICByZXF1ZXN0LCBfZGlzcGF0Y2hlciwgYWxsb3dEcmFmdDc1PWFsbG93
X2RyYWZ0NzUpCi0gICAgICAgIGV4Y2VwdCBoYW5kc2hha2UuVmVyc2lvbkV4Y2VwdGlvbiwgZToK
LSAgICAgICAgICAgIHJlcXVlc3QubG9nX2Vycm9yKAotICAgICAgICAgICAgICAgICdtb2RfcHl3
ZWJzb2NrZXQ6IEhhbmRzaGFrZSBmYWlsZWQgZm9yIHZlcnNpb24gZXJyb3I6ICVzJyAlIGUsCi0g
ICAgICAgICAgICAgICAgYXBhY2hlLkFQTE9HX0lORk8pCi0gICAgICAgICAgICByZXF1ZXN0LmVy
cl9oZWFkZXJzX291dC5hZGQoY29tbW9uLlNFQ19XRUJTT0NLRVRfVkVSU0lPTl9IRUFERVIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5zdXBwb3J0ZWRfdmVyc2lv
bnMpCi0gICAgICAgICAgICByZXR1cm4gYXBhY2hlLkhUVFBfQkFEX1JFUVVFU1QKLSAgICAgICAg
ZXhjZXB0IGhhbmRzaGFrZS5IYW5kc2hha2VFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICAjIEhh
bmRzaGFrZSBmb3Igd3Mvd3NzIGZhaWxlZC4KLSAgICAgICAgICAgICMgU2VuZCBodHRwIHJlc3Bv
bnNlIHdpdGggZXJyb3Igc3RhdHVzLgotICAgICAgICAgICAgcmVxdWVzdC5sb2dfZXJyb3IoCi0g
ICAgICAgICAgICAgICAgJ21vZF9weXdlYnNvY2tldDogSGFuZHNoYWtlIGZhaWxlZCBmb3IgZXJy
b3I6ICVzJyAlIGUsCi0gICAgICAgICAgICAgICAgYXBhY2hlLkFQTE9HX0lORk8pCi0gICAgICAg
ICAgICByZXR1cm4gZS5zdGF0dXMKLQotICAgICAgICBoYW5kc2hha2VfaXNfZG9uZSA9IFRydWUK
LSAgICAgICAgcmVxdWVzdC5fZGlzcGF0Y2hlciA9IF9kaXNwYXRjaGVyCi0gICAgICAgIF9kaXNw
YXRjaGVyLnRyYW5zZmVyX2RhdGEocmVxdWVzdCkKLSAgICBleGNlcHQgaGFuZHNoYWtlLkFib3J0
ZWRCeVVzZXJFeGNlcHRpb24sIGU6Ci0gICAgICAgIHJlcXVlc3QubG9nX2Vycm9yKCdtb2RfcHl3
ZWJzb2NrZXQ6IEFib3J0ZWQ6ICVzJyAlIGUsIGFwYWNoZS5BUExPR19JTkZPKQotICAgIGV4Y2Vw
dCBFeGNlcHRpb24sIGU6Ci0gICAgICAgICMgRGlzcGF0Y2hFeGNlcHRpb24gY2FuIGFsc28gYmUg
dGhyb3duIGlmIHNvbWV0aGluZyBpcyB3cm9uZyBpbgotICAgICAgICAjIHB5d2Vic29ja2V0IGNv
ZGUuIEl0J3MgY2F1Z2h0IGhlcmUsIHRoZW4uCi0KLSAgICAgICAgcmVxdWVzdC5sb2dfZXJyb3Io
J21vZF9weXdlYnNvY2tldDogRXhjZXB0aW9uIG9jY3VycmVkOiAlc1xuJXMnICUKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgKGUsIHV0aWwuZ2V0X3N0YWNrX3RyYWNlKCkpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICBhcGFjaGUuQVBMT0dfRVJSKQotICAgICAgICAjIFVua25vd24gZXhj
ZXB0aW9ucyBiZWZvcmUgaGFuZHNoYWtlIG1lYW4gQXBhY2hlIG11c3QgaGFuZGxlIGl0cwotICAg
ICAgICAjIHJlcXVlc3Qgd2l0aCBhbm90aGVyIGhhbmRsZXIuCi0gICAgICAgIGlmIG5vdCBoYW5k
c2hha2VfaXNfZG9uZToKLSAgICAgICAgICAgIHJldHVybiBhcGFjaGUuREVDTElORUQKLSAgICAj
IFNldCBhc3NiYWNrd2FyZHMgdG8gc3VwcHJlc3MgcmVzcG9uc2UgaGVhZGVyIGdlbmVyYXRpb24g
YnkgQXBhY2hlLgotICAgIHJlcXVlc3QuYXNzYmFja3dhcmRzID0gMQotICAgIHJldHVybiBhcGFj
aGUuRE9ORSAgIyBSZXR1cm4gRE9ORSBzdWNoIHRoYXQgbm8gb3RoZXIgaGFuZGxlcnMgYXJlIGlu
dm9rZWQuCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2Rf
cHl3ZWJzb2NrZXQvaHR0cF9oZWFkZXJfdXRpbC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tl
dC9odHRwX2hlYWRlcl91dGlsLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNzc0
NjUzOTMyODVmZjFiZDZiZjhkOTk0MDFjYzY3NDQyMTI1ZTBiLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC9odHRw
X2hlYWRlcl91dGlsLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjYzICswLDAgQEAKLSMgQ29weXJp
Z2h0IDIwMTEsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotCi0KLSIiIlV0aWxpdGllcyBmb3IgcGFyc2luZyBhbmQgZm9ybWF0dGluZyBoZWFk
ZXJzIHRoYXQgZm9sbG93IHRoZSBncmFtbWFyIGRlZmluZWQKLWluIEhUVFAgUkZDIGh0dHA6Ly93
d3cuaWV0Zi5vcmcvcmZjL3JmYzI2MTYudHh0LgotIiIiCi0KLQotaW1wb3J0IHVybHBhcnNlCi0K
LQotX1NFUEFSQVRPUlMgPSAnKCk8PkAsOzpcXCIvW10/PXt9IFx0JwotCi0KLWRlZiBfaXNfY2hh
cihjKToKLSAgICAiIiJSZXR1cm5zIHRydWUgaWZmIGMgaXMgaW4gQ0hBUiBhcyBzcGVjaWZpZWQg
aW4gSFRUUCBSRkMuIiIiCi0KLSAgICByZXR1cm4gb3JkKGMpIDw9IDEyNwotCi0KLWRlZiBfaXNf
Y3RsKGMpOgotICAgICIiIlJldHVybnMgdHJ1ZSBpZmYgYyBpcyBpbiBDVEwgYXMgc3BlY2lmaWVk
IGluIEhUVFAgUkZDLiIiIgotCi0gICAgcmV0dXJuIG9yZChjKSA8PSAzMSBvciBvcmQoYykgPT0g
MTI3Ci0KLQotY2xhc3MgUGFyc2luZ1N0YXRlKG9iamVjdCk6Ci0KLSAgICBkZWYgX19pbml0X18o
c2VsZiwgZGF0YSk6Ci0gICAgICAgIHNlbGYuZGF0YSA9IGRhdGEKLSAgICAgICAgc2VsZi5oZWFk
ID0gMAotCi0KLWRlZiBwZWVrKHN0YXRlLCBwb3M9MCk6Ci0gICAgIiIiUGVla3MgdGhlIGNoYXJh
Y3RlciBhdCBwb3MgZnJvbSB0aGUgaGVhZCBvZiBkYXRhLiIiIgotCi0gICAgaWYgc3RhdGUuaGVh
ZCArIHBvcyA+PSBsZW4oc3RhdGUuZGF0YSk6Ci0gICAgICAgIHJldHVybiBOb25lCi0KLSAgICBy
ZXR1cm4gc3RhdGUuZGF0YVtzdGF0ZS5oZWFkICsgcG9zXQotCi0KLWRlZiBjb25zdW1lKHN0YXRl
LCBhbW91bnQ9MSk6Ci0gICAgIiIiQ29uc3VtZXMgc3BlY2lmaWVkIGFtb3VudCBvZiBieXRlcyBm
cm9tIHRoZSBoZWFkIGFuZCByZXR1cm5zIHRoZQotICAgIGNvbnN1bWVkIGJ5dGVzLiBJZiB0aGVy
ZSdzIG5vdCBlbm91Z2ggYnl0ZXMgdG8gY29uc3VtZSwgcmV0dXJucyBOb25lLgotICAgICIiIgot
Ci0gICAgaWYgc3RhdGUuaGVhZCArIGFtb3VudCA+IGxlbihzdGF0ZS5kYXRhKToKLSAgICAgICAg
cmV0dXJuIE5vbmUKLQotICAgIHJlc3VsdCA9IHN0YXRlLmRhdGFbc3RhdGUuaGVhZDpzdGF0ZS5o
ZWFkICsgYW1vdW50XQotICAgIHN0YXRlLmhlYWQgPSBzdGF0ZS5oZWFkICsgYW1vdW50Ci0gICAg
cmV0dXJuIHJlc3VsdAotCi0KLWRlZiBjb25zdW1lX3N0cmluZyhzdGF0ZSwgZXhwZWN0ZWQpOgot
ICAgICIiIkdpdmVuIGEgcGFyc2luZyBzdGF0ZSBhbmQgYSBleHBlY3RlZCBzdHJpbmcsIGNvbnN1
bWVzIHRoZSBzdHJpbmcgZnJvbQotICAgIHRoZSBoZWFkLiBSZXR1cm5zIFRydWUgaWYgY29uc3Vt
ZWQgc3VjY2Vzc2Z1bGx5LiBPdGhlcndpc2UsIHJldHVybnMKLSAgICBGYWxzZS4KLSAgICAiIiIK
LQotICAgIHBvcyA9IDAKLQotICAgIGZvciBjIGluIGV4cGVjdGVkOgotICAgICAgICBpZiBjICE9
IHBlZWsoc3RhdGUsIHBvcyk6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgcG9z
ICs9IDEKLQotICAgIGNvbnN1bWUoc3RhdGUsIHBvcykKLSAgICByZXR1cm4gVHJ1ZQotCi0KLWRl
ZiBjb25zdW1lX2x3cyhzdGF0ZSk6Ci0gICAgIiIiQ29uc3VtZXMgYSBMV1MgZnJvbSB0aGUgaGVh
ZC4gUmV0dXJucyBUcnVlIGlmIGFueSBMV1MgaXMgY29uc3VtZWQuCi0gICAgT3RoZXJ3aXNlLCBy
ZXR1cm5zIEZhbHNlLgotCi0gICAgTFdTID0gW0NSTEZdIDEqKCBTUCB8IEhUICkKLSAgICAiIiIK
LQotICAgIG9yaWdpbmFsX2hlYWQgPSBzdGF0ZS5oZWFkCi0KLSAgICBjb25zdW1lX3N0cmluZyhz
dGF0ZSwgJ1xyXG4nKQotCi0gICAgcG9zID0gMAotCi0gICAgd2hpbGUgVHJ1ZToKLSAgICAgICAg
YyA9IHBlZWsoc3RhdGUsIHBvcykKLSAgICAgICAgaWYgYyA9PSAnICcgb3IgYyA9PSAnXHQnOgot
ICAgICAgICAgICAgcG9zICs9IDEKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIHBvcyA9
PSAwOgotICAgICAgICAgICAgICAgIHN0YXRlLmhlYWQgPSBvcmlnaW5hbF9oZWFkCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAg
IGNvbnN1bWUoc3RhdGUsIHBvcykKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotCi0KLWRl
ZiBjb25zdW1lX2x3c2VzKHN0YXRlKToKLSAgICAiIiJDb25zdW1lcyAqTFdTIGZyb20gdGhlIGhl
YWQuIiIiCi0KLSAgICB3aGlsZSBjb25zdW1lX2x3cyhzdGF0ZSk6Ci0gICAgICAgIHBhc3MKLQot
Ci1kZWYgY29uc3VtZV90b2tlbihzdGF0ZSk6Ci0gICAgIiIiQ29uc3VtZXMgYSB0b2tlbiBmcm9t
IHRoZSBoZWFkLiBSZXR1cm5zIHRoZSB0b2tlbiBvciBOb25lIGlmIG5vIHRva2VuCi0gICAgd2Fz
IGZvdW5kLgotICAgICIiIgotCi0gICAgcG9zID0gMAotCi0gICAgd2hpbGUgVHJ1ZToKLSAgICAg
ICAgYyA9IHBlZWsoc3RhdGUsIHBvcykKLSAgICAgICAgaWYgYyBpcyBOb25lIG9yIGMgaW4gX1NF
UEFSQVRPUlMgb3IgX2lzX2N0bChjKSBvciBub3QgX2lzX2NoYXIoYyk6Ci0gICAgICAgICAgICBp
ZiBwb3MgPT0gMDoKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgICAgICBy
ZXR1cm4gY29uc3VtZShzdGF0ZSwgcG9zKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcG9z
ICs9IDEKLQotCi1kZWYgY29uc3VtZV90b2tlbl9vcl9xdW90ZWRfc3RyaW5nKHN0YXRlKToKLSAg
ICAiIiJDb25zdW1lcyBhIHRva2VuIG9yIGEgcXVvdGVkLXN0cmluZywgYW5kIHJldHVybnMgdGhl
IHRva2VuIG9yIHVucXVvdGVkCi0gICAgc3RyaW5nLiBJZiBubyB0b2tlbiBvciBxdW90ZWQtc3Ry
aW5nIHdhcyBmb3VuZCwgcmV0dXJucyBOb25lLgotICAgICIiIgotCi0gICAgb3JpZ2luYWxfaGVh
ZCA9IHN0YXRlLmhlYWQKLQotICAgIGlmIG5vdCBjb25zdW1lX3N0cmluZyhzdGF0ZSwgJyInKToK
LSAgICAgICAgcmV0dXJuIGNvbnN1bWVfdG9rZW4oc3RhdGUpCi0KLSAgICByZXN1bHQgPSBbXQot
Ci0gICAgZXhwZWN0X3F1b3RlZF9wYWlyID0gRmFsc2UKLQotICAgIHdoaWxlIFRydWU6Ci0gICAg
ICAgIGlmIG5vdCBleHBlY3RfcXVvdGVkX3BhaXIgYW5kIGNvbnN1bWVfbHdzKHN0YXRlKToKLSAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKQotICAgICAgICAgICAgY29udGludWUKLQotICAg
ICAgICBjID0gY29uc3VtZShzdGF0ZSkKLSAgICAgICAgaWYgYyBpcyBOb25lOgotICAgICAgICAg
ICAgIyBxdW90ZWQtc3RyaW5nIGlzIG5vdCBlbmNsb3NlZCB3aXRoIGRvdWJsZSBxdW90YXRpb24K
LSAgICAgICAgICAgIHN0YXRlLmhlYWQgPSBvcmlnaW5hbF9oZWFkCi0gICAgICAgICAgICByZXR1
cm4gTm9uZQotICAgICAgICBlbGlmIGV4cGVjdF9xdW90ZWRfcGFpcjoKLSAgICAgICAgICAgIGV4
cGVjdF9xdW90ZWRfcGFpciA9IEZhbHNlCi0gICAgICAgICAgICBpZiBfaXNfY2hhcihjKToKLSAg
ICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGMpCi0gICAgICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgICAgICMgTm9uIENIQVIgY2hhcmFjdGVyIGZvdW5kIGluIHF1b3RlZC1wYWlyCi0gICAg
ICAgICAgICAgICAgc3RhdGUuaGVhZCA9IG9yaWdpbmFsX2hlYWQKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gTm9uZQotICAgICAgICBlbGlmIGMgPT0gJ1xcJzoKLSAgICAgICAgICAgIGV4cGVjdF9x
dW90ZWRfcGFpciA9IFRydWUKLSAgICAgICAgZWxpZiBjID09ICciJzoKLSAgICAgICAgICAgIHJl
dHVybiAnJy5qb2luKHJlc3VsdCkKLSAgICAgICAgZWxpZiBfaXNfY3RsKGMpOgotICAgICAgICAg
ICAgIyBJbnZhbGlkIGNoYXJhY3RlciAlciBmb3VuZCBpbiBxZHRleHQKLSAgICAgICAgICAgIHN0
YXRlLmhlYWQgPSBvcmlnaW5hbF9oZWFkCi0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjKQotCi0KLWRlZiBxdW90ZV9pZl9u
ZWNlc3Nhcnkocyk6Ci0gICAgIiIiUXVvdGVzIGFyYml0cmFyeSBzdHJpbmcgaW50byBxdW90ZWQt
c3RyaW5nLiIiIgotCi0gICAgcXVvdGUgPSBGYWxzZQotICAgIGlmIHMgPT0gJyc6Ci0gICAgICAg
IHJldHVybiAnIiInCi0KLSAgICByZXN1bHQgPSBbXQotICAgIGZvciBjIGluIHM6Ci0gICAgICAg
IGlmIGMgPT0gJyInIG9yIGMgaW4gX1NFUEFSQVRPUlMgb3IgX2lzX2N0bChjKSBvciBub3QgX2lz
X2NoYXIoYyk6Ci0gICAgICAgICAgICBxdW90ZSA9IFRydWUKLQotICAgICAgICBpZiBjID09ICci
JyBvciBfaXNfY3RsKGMpOgotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXFwnICsgYykKLSAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoYykKLQotICAgIGlmIHF1b3Rl
OgotICAgICAgICByZXR1cm4gJyInICsgJycuam9pbihyZXN1bHQpICsgJyInCi0gICAgZWxzZToK
LSAgICAgICAgcmV0dXJuICcnLmpvaW4ocmVzdWx0KQotCi0KLWRlZiBwYXJzZV91cmkodXJpKToK
LSAgICAiIiJQYXJzZSBhYnNvbHV0ZSBVUkkgdGhlbiByZXR1cm4gaG9zdCwgcG9ydCBhbmQgcmVz
b3VyY2UuIiIiCi0KLSAgICBwYXJzZWQgPSB1cmxwYXJzZS51cmxzcGxpdCh1cmkpCi0gICAgaWYg
cGFyc2VkLnNjaGVtZSAhPSAnd3NzJyBhbmQgcGFyc2VkLnNjaGVtZSAhPSAnd3MnOgotICAgICAg
ICAjIHx1cml8IG11c3QgYmUgYSByZWxhdGl2ZSBVUkkuCi0gICAgICAgICMgVE9ETyh0b3lvc2hp
bSk6IFNob3VsZCB2YWxpZGF0ZSB8dXJpfC4KLSAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUsIHVy
aQotCi0gICAgaWYgcGFyc2VkLmhvc3RuYW1lIGlzIE5vbmU6Ci0gICAgICAgIHJldHVybiBOb25l
LCBOb25lLCBOb25lCi0KLSAgICBwb3J0ID0gTm9uZQotICAgIHRyeToKLSAgICAgICAgcG9ydCA9
IHBhcnNlZC5wb3J0Ci0gICAgZXhjZXB0IFZhbHVlRXJyb3IsIGU6Ci0gICAgICAgICMgcG9ydCBw
cm9wZXJ0eSBjYXVzZSBWYWx1ZUVycm9yIG9uIGludmFsaWQgbnVsbCBwb3J0IGRlc2NyaXB0aW9u
IGxpa2UKLSAgICAgICAgIyAnd3M6Ly9ob3N0Oi9wYXRoJy4KLSAgICAgICAgcmV0dXJuIE5vbmUs
IE5vbmUsIE5vbmUKLQotICAgIGlmIHBvcnQgaXMgTm9uZToKLSAgICAgICAgaWYgcGFyc2VkLnNj
aGVtZSA9PSAnd3MnOgotICAgICAgICAgICAgcG9ydCA9IDgwCi0gICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICBwb3J0ID0gNDQzCi0KLSAgICBwYXRoID0gcGFyc2VkLnBhdGgKLSAgICBpZiBub3Qg
cGF0aDoKLSAgICAgICAgcGF0aCArPSAnLycKLSAgICBpZiBwYXJzZWQucXVlcnk6Ci0gICAgICAg
IHBhdGggKz0gJz8nICsgcGFyc2VkLnF1ZXJ5Ci0gICAgaWYgcGFyc2VkLmZyYWdtZW50OgotICAg
ICAgICBwYXRoICs9ICcjJyArIHBhcnNlZC5mcmFnbWVudAotCi0gICAgcmV0dXJuIHBhcnNlZC5o
b3N0bmFtZSwgcG9ydCwgcGF0aAotCi0KLXRyeToKLSAgICB1cmxwYXJzZS51c2VzX25ldGxvYy5p
bmRleCgnd3MnKQotZXhjZXB0IFZhbHVlRXJyb3IsIGU6Ci0gICAgIyB1cmxwYXJzZSBpbiBQeXRo
b24yLjUuMSBkb2Vzbid0IGhhdmUgJ3dzJyBhbmQgJ3dzcycgZW50cmllcy4KLSAgICB1cmxwYXJz
ZS51c2VzX25ldGxvYy5hcHBlbmQoJ3dzJykKLSAgICB1cmxwYXJzZS51c2VzX25ldGxvYy5hcHBl
bmQoJ3dzcycpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9t
b2RfcHl3ZWJzb2NrZXQvbWVtb3JpemluZ2ZpbGUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2Nr
ZXQvbWVtb3JpemluZ2ZpbGUucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkNGNk
OTU4NTk1YWJkZmMwYzQwZDQzMDg0ODg3MDBiN2I5M2M2YjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L21lbW9y
aXppbmdmaWxlLnB5CisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotIyEvdXNyL2Jpbi9l
bnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRz
IHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0j
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMg
ZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMg
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
IyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
IyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJNZW1vcml6aW5nIGZpbGUuCi0K
LUEgbWVtb3JpemluZyBmaWxlIHdyYXBzIGEgZmlsZSBhbmQgbWVtb3JpemVzIGxpbmVzIHJlYWQg
YnkgcmVhZGxpbmUuCi0iIiIKLQotCi1pbXBvcnQgc3lzCi0KLQotY2xhc3MgTWVtb3JpemluZ0Zp
bGUob2JqZWN0KToKLSAgICAiIiJNZW1vcml6aW5nRmlsZSB3cmFwcyBhIGZpbGUgYW5kIG1lbW9y
aXplcyBsaW5lcyByZWFkIGJ5IHJlYWRsaW5lLgotCi0gICAgTm90ZSB0aGF0IGRhdGEgcmVhZCBi
eSBvdGhlciBtZXRob2RzIGFyZSBub3QgbWVtb3JpemVkLiBUaGlzIGJlaGF2aW9yCi0gICAgaXMg
Z29vZCBlbm91Z2ggZm9yIG1lbW9yaXppbmcgbGluZXMgU2ltcGxlSFRUUFNlcnZlciByZWFkcyBi
ZWZvcmUKLSAgICB0aGUgY29udHJvbCByZWFjaGVzIFdlYlNvY2tldFJlcXVlc3RIYW5kbGVyLgot
ICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVfLCBtYXhfbWVtb3JpemVkX2xp
bmVzPXN5cy5tYXhpbnQpOgotICAgICAgICAiIiJDb25zdHJ1Y3QgYW4gaW5zdGFuY2UuCi0KLSAg
ICAgICAgQXJnczoKLSAgICAgICAgICAgIGZpbGVfOiB0aGUgZmlsZSBvYmplY3QgdG8gd3JhcC4K
LSAgICAgICAgICAgIG1heF9tZW1vcml6ZWRfbGluZXM6IHRoZSBtYXhpbXVtIG51bWJlciBvZiBs
aW5lcyB0byBtZW1vcml6ZS4KLSAgICAgICAgICAgICAgICBPbmx5IHRoZSBmaXJzdCBtYXhfbWVt
b3JpemVkX2xpbmVzIGFyZSBtZW1vcml6ZWQuCi0gICAgICAgICAgICAgICAgRGVmYXVsdDogc3lz
Lm1heGludC4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi5fZmlsZSA9IGZpbGVfCi0gICAg
ICAgIHNlbGYuX21lbW9yaXplZF9saW5lcyA9IFtdCi0gICAgICAgIHNlbGYuX21heF9tZW1vcml6
ZWRfbGluZXMgPSBtYXhfbWVtb3JpemVkX2xpbmVzCi0gICAgICAgIHNlbGYuX2J1ZmZlcmVkID0g
RmFsc2UKLSAgICAgICAgc2VsZi5fYnVmZmVyZWRfbGluZSA9IE5vbmUKLQotICAgIGRlZiBfX2dl
dGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpOgotICAgICAgICBpZiBuYW1lIGluICgnX2ZpbGUnLCAn
X21lbW9yaXplZF9saW5lcycsICdfbWF4X21lbW9yaXplZF9saW5lcycsCi0gICAgICAgICAgICAg
ICAgICAgICdfYnVmZmVyZWQnLCAnX2J1ZmZlcmVkX2xpbmUnLCAncmVhZGxpbmUnLAotICAgICAg
ICAgICAgICAgICAgICAnZ2V0X21lbW9yaXplZF9saW5lcycpOgotICAgICAgICAgICAgcmV0dXJu
IG9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpCi0gICAgICAgIHJldHVybiBzZWxm
Ll9maWxlLl9fZ2V0YXR0cmlidXRlX18obmFtZSkKLQotICAgIGRlZiByZWFkbGluZShzZWxmLCBz
aXplPS0xKToKLSAgICAgICAgIiIiT3ZlcnJpZGUgZmlsZS5yZWFkbGluZSBhbmQgbWVtb3JpemUg
dGhlIGxpbmUgcmVhZC4KLQotICAgICAgICBOb3RlIHRoYXQgZXZlbiBpZiBzaXplIGlzIHNwZWNp
ZmllZCBhbmQgc21hbGxlciB0aGFuIGFjdHVhbCBzaXplLAotICAgICAgICB0aGUgd2hvbGUgbGlu
ZSB3aWxsIGJlIHJlYWQgb3V0IGZyb20gdW5kZXJseWluZyBmaWxlIG9iamVjdCBieQotICAgICAg
ICBzdWJzZXF1ZW50IHJlYWRsaW5lIGNhbGxzLgotICAgICAgICAiIiIKLQotICAgICAgICBpZiBz
ZWxmLl9idWZmZXJlZDoKLSAgICAgICAgICAgIGxpbmUgPSBzZWxmLl9idWZmZXJlZF9saW5lCi0g
ICAgICAgICAgICBzZWxmLl9idWZmZXJlZCA9IEZhbHNlCi0gICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICBsaW5lID0gc2VsZi5fZmlsZS5yZWFkbGluZSgpCi0gICAgICAgICAgICBpZiBsaW5lIGFu
ZCBsZW4oc2VsZi5fbWVtb3JpemVkX2xpbmVzKSA8IHNlbGYuX21heF9tZW1vcml6ZWRfbGluZXM6
Ci0gICAgICAgICAgICAgICAgc2VsZi5fbWVtb3JpemVkX2xpbmVzLmFwcGVuZChsaW5lKQotICAg
ICAgICBpZiBzaXplID49IDAgYW5kIHNpemUgPCBsZW4obGluZSk6Ci0gICAgICAgICAgICBzZWxm
Ll9idWZmZXJlZCA9IFRydWUKLSAgICAgICAgICAgIHNlbGYuX2J1ZmZlcmVkX2xpbmUgPSBsaW5l
W3NpemU6XQotICAgICAgICAgICAgcmV0dXJuIGxpbmVbOnNpemVdCi0gICAgICAgIHJldHVybiBs
aW5lCi0KLSAgICBkZWYgZ2V0X21lbW9yaXplZF9saW5lcyhzZWxmKToKLSAgICAgICAgIiIiR2V0
IGxpbmVzIG1lbW9yaXplZCBzbyBmYXIuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9tZW1vcml6
ZWRfbGluZXMKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21v
ZF9weXdlYnNvY2tldC9tc2d1dGlsLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L21zZ3V0
aWwucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjMWEwMTE0YjRiYzQxOGIyMGU2
YTE1NTY1OWU5MjU3YWFiNzM2ZWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L21zZ3V0aWwucHkKKysrIC9kZXYv
bnVsbApAQCAtMSwyMTkgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KLSMg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMg
bWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
IyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiTWVzc2FnZSBy
ZWxhdGVkIHV0aWxpdGllcy4KLQotTm90ZTogcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlL3JlYWQg
YXJlIHVzZWQgaW4gdGhpcyBtb2R1bGUsIGV2ZW4gdGhvdWdoCi1tb2RfcHl0aG9uIGRvY3VtZW50
IHNheXMgdGhhdCB0aGV5IHNob3VsZCBiZSB1c2VkIG9ubHkgaW4gY29ubmVjdGlvbgotaGFuZGxl
cnMuIFVuZm9ydHVuYXRlbHksIHdlIGhhdmUgbm8gb3RoZXIgb3B0aW9ucy4gRm9yIGV4YW1wbGUs
Ci1yZXF1ZXN0LndyaXRlL3JlYWQgYXJlIG5vdCBzdWl0YWJsZSBiZWNhdXNlIHRoZXkgZG9uJ3Qg
YWxsb3cgZGlyZWN0IHJhdwotYnl0ZXMgd3JpdGluZy9yZWFkaW5nLgotIiIiCi0KLQotaW1wb3J0
IFF1ZXVlCi1pbXBvcnQgdGhyZWFkaW5nCi0KLQotIyBFeHBvcnQgRXhjZXB0aW9uIHN5bWJvbHMg
ZnJvbSBtc2d1dGlsIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5Ci1mcm9tIG1vZF9weXdlYnNv
Y2tldC5fc3RyZWFtX2Jhc2UgaW1wb3J0IENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uCi1m
cm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2Jhc2UgaW1wb3J0IEludmFsaWRGcmFtZUV4Y2Vw
dGlvbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9iYXNlIGltcG9ydCBCYWRPcGVyYXRp
b25FeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fYmFzZSBpbXBvcnQgVW5z
dXBwb3J0ZWRGcmFtZUV4Y2VwdGlvbgotCi0KLSMgQW4gQVBJIGZvciBoYW5kbGVyIHRvIHNlbmQv
cmVjZWl2ZSBXZWJTb2NrZXQgbWVzc2FnZXMuCi1kZWYgY2xvc2VfY29ubmVjdGlvbihyZXF1ZXN0
KToKLSAgICAiIiJDbG9zZSBjb25uZWN0aW9uLgotCi0gICAgQXJnczoKLSAgICAgICAgcmVxdWVz
dDogbW9kX3B5dGhvbiByZXF1ZXN0LgotICAgICIiIgotICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNs
b3NlX2Nvbm5lY3Rpb24oKQotCi0KLWRlZiBzZW5kX21lc3NhZ2UocmVxdWVzdCwgcGF5bG9hZF9k
YXRhLCBlbmQ9VHJ1ZSwgYmluYXJ5PUZhbHNlKToKLSAgICAiIiJTZW5kIGEgbWVzc2FnZSAob3Ig
cGFydCBvZiBhIG1lc3NhZ2UpLgotCi0gICAgQXJnczoKLSAgICAgICAgcmVxdWVzdDogbW9kX3B5
dGhvbiByZXF1ZXN0LgotICAgICAgICBwYXlsb2FkX2RhdGE6IHVuaWNvZGUgdGV4dCBvciBzdHIg
YmluYXJ5IHRvIHNlbmQuCi0gICAgICAgIGVuZDogVHJ1ZSB0byB0ZXJtaW5hdGUgYSBtZXNzYWdl
LgotICAgICAgICAgICAgIEZhbHNlIHRvIHNlbmQgcGF5bG9hZF9kYXRhIGFzIHBhcnQgb2YgYSBt
ZXNzYWdlIHRoYXQgaXMgdG8gYmUKLSAgICAgICAgICAgICB0ZXJtaW5hdGVkIGJ5IG5leHQgb3Ig
bGF0ZXIgc2VuZF9tZXNzYWdlIGNhbGwgd2l0aCBlbmQ9VHJ1ZS4KLSAgICAgICAgYmluYXJ5OiBz
ZW5kIHBheWxvYWRfZGF0YSBhcyBiaW5hcnkgZnJhbWUocykuCi0gICAgUmFpc2VzOgotICAgICAg
ICBCYWRPcGVyYXRpb25FeGNlcHRpb246IHdoZW4gc2VydmVyIGFscmVhZHkgdGVybWluYXRlZC4K
LSAgICAiIiIKLSAgICByZXF1ZXN0LndzX3N0cmVhbS5zZW5kX21lc3NhZ2UocGF5bG9hZF9kYXRh
LCBlbmQsIGJpbmFyeSkKLQotCi1kZWYgcmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpOgotICAgICIi
IlJlY2VpdmUgYSBXZWJTb2NrZXQgZnJhbWUgYW5kIHJldHVybiBpdHMgcGF5bG9hZCBhcyBhIHRl
eHQgaW4KLSAgICB1bmljb2RlIG9yIGEgYmluYXJ5IGluIHN0ci4KLQotICAgIEFyZ3M6Ci0gICAg
ICAgIHJlcXVlc3Q6IG1vZF9weXRob24gcmVxdWVzdC4KLSAgICBSYWlzZXM6Ci0gICAgICAgIElu
dmFsaWRGcmFtZUV4Y2VwdGlvbjogICAgIHdoZW4gY2xpZW50IHNlbmQgaW52YWxpZCBmcmFtZS4K
LSAgICAgICAgVW5zdXBwb3J0ZWRGcmFtZUV4Y2VwdGlvbjogd2hlbiBjbGllbnQgc2VuZCB1bnN1
cHBvcnRlZCBmcmFtZSBlLmcuIHNvbWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb2YgcmVzZXJ2ZWQgYml0IGlzIHNldCBidXQgbm8gZXh0ZW5zaW9uIGNhbgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvZ25pemUgaXQuCi0gICAgICAgIEludmFsaWRV
VEY4RXhjZXB0aW9uOiAgICAgIHdoZW4gY2xpZW50IHNlbmQgYSB0ZXh0IGZyYW1lIGNvbnRhaW5p
bmcgYW55Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludmFsaWQgVVRGLTgg
c3RyaW5nLgotICAgICAgICBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbjogd2hlbiB0aGUg
Y29ubmVjdGlvbiBpcyBjbG9zZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5leHBlY3RlZGx5LgotICAgICAgICBCYWRPcGVyYXRpb25FeGNlcHRpb246ICAgICB3aGVuIGNs
aWVudCBhbHJlYWR5IHRlcm1pbmF0ZWQuCi0gICAgIiIiCi0gICAgcmV0dXJuIHJlcXVlc3Qud3Nf
c3RyZWFtLnJlY2VpdmVfbWVzc2FnZSgpCi0KLQotZGVmIHNlbmRfcGluZyhyZXF1ZXN0LCBib2R5
PScnKToKLSAgICByZXF1ZXN0LndzX3N0cmVhbS5zZW5kX3BpbmcoYm9keSkKLQotCi1jbGFzcyBN
ZXNzYWdlUmVjZWl2ZXIodGhyZWFkaW5nLlRocmVhZCk6Ci0gICAgIiIiVGhpcyBjbGFzcyByZWNl
aXZlcyBtZXNzYWdlcyBmcm9tIHRoZSBjbGllbnQuCi0KLSAgICBUaGlzIGNsYXNzIHByb3ZpZGVz
IHRocmVlIHdheXMgdG8gcmVjZWl2ZSBtZXNzYWdlczogYmxvY2tpbmcsCi0gICAgbm9uLWJsb2Nr
aW5nLCBhbmQgdmlhIGNhbGxiYWNrLiBDYWxsYmFjayBoYXMgdGhlIGhpZ2hlc3QgcHJlY2VkZW5j
ZS4KLQotICAgIE5vdGU6IFRoaXMgY2xhc3Mgc2hvdWxkIG5vdCBiZSB1c2VkIHdpdGggdGhlIHN0
YW5kYWxvbmUgc2VydmVyIGZvciB3c3MKLSAgICBiZWNhdXNlIHB5T3BlblNTTCB1c2VkIGJ5IHRo
ZSBzZXJ2ZXIgcmFpc2VzIGEgZmF0YWwgZXJyb3IgaWYgdGhlIHNvY2tldAotICAgIGlzIGFjY2Vz
c2VkIGZyb20gbXVsdGlwbGUgdGhyZWFkcy4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCByZXF1ZXN0LCBvbm1lc3NhZ2U9Tm9uZSk6Ci0gICAgICAgICIiIkNvbnN0cnVjdCBhbiBp
bnN0YW5jZS4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgcmVxdWVzdDogbW9kX3B5dGhv
biByZXF1ZXN0LgotICAgICAgICAgICAgb25tZXNzYWdlOiBhIGZ1bmN0aW9uIHRvIGJlIGNhbGxl
ZCB3aGVuIGEgbWVzc2FnZSBpcyByZWNlaXZlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgTWF5
IGJlIE5vbmUuIElmIG5vdCBOb25lLCB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkIG9uCi0gICAgICAg
ICAgICAgICAgICAgICAgIGFub3RoZXIgdGhyZWFkLiBJbiB0aGF0IGNhc2UsIE1lc3NhZ2VSZWNl
aXZlci5yZWNlaXZlCi0gICAgICAgICAgICAgICAgICAgICAgIGFuZCBNZXNzYWdlUmVjZWl2ZXIu
cmVjZWl2ZV9ub3dhaXQgYXJlIHVzZWxlc3MKLSAgICAgICAgICAgICAgICAgICAgICAgYmVjYXVz
ZSB0aGV5IHdpbGwgbmV2ZXIgcmV0dXJuIGFueSBtZXNzYWdlcy4KLSAgICAgICAgIiIiCi0KLSAg
ICAgICAgdGhyZWFkaW5nLlRocmVhZC5fX2luaXRfXyhzZWxmKQotICAgICAgICBzZWxmLl9yZXF1
ZXN0ID0gcmVxdWVzdAotICAgICAgICBzZWxmLl9xdWV1ZSA9IFF1ZXVlLlF1ZXVlKCkKLSAgICAg
ICAgc2VsZi5fb25tZXNzYWdlID0gb25tZXNzYWdlCi0gICAgICAgIHNlbGYuX3N0b3BfcmVxdWVz
dGVkID0gRmFsc2UKLSAgICAgICAgc2VsZi5zZXREYWVtb24oVHJ1ZSkKLSAgICAgICAgc2VsZi5z
dGFydCgpCi0KLSAgICBkZWYgcnVuKHNlbGYpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3
aGlsZSBub3Qgc2VsZi5fc3RvcF9yZXF1ZXN0ZWQ6Ci0gICAgICAgICAgICAgICAgbWVzc2FnZSA9
IHJlY2VpdmVfbWVzc2FnZShzZWxmLl9yZXF1ZXN0KQotICAgICAgICAgICAgICAgIGlmIHNlbGYu
X29ubWVzc2FnZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fb25tZXNzYWdlKG1lc3NhZ2Up
Ci0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fcXVldWUu
cHV0KG1lc3NhZ2UpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBjbG9zZV9jb25uZWN0
aW9uKHNlbGYuX3JlcXVlc3QpCi0KLSAgICBkZWYgcmVjZWl2ZShzZWxmKToKLSAgICAgICAgIiIi
IFJlY2VpdmUgYSBtZXNzYWdlIGZyb20gdGhlIGNoYW5uZWwsIGJsb2NraW5nLgotCi0gICAgICAg
IFJldHVybnM6Ci0gICAgICAgICAgICBtZXNzYWdlIGFzIGEgdW5pY29kZSBzdHJpbmcuCi0gICAg
ICAgICIiIgotICAgICAgICByZXR1cm4gc2VsZi5fcXVldWUuZ2V0KCkKLQotICAgIGRlZiByZWNl
aXZlX25vd2FpdChzZWxmKToKLSAgICAgICAgIiIiIFJlY2VpdmUgYSBtZXNzYWdlIGZyb20gdGhl
IGNoYW5uZWwsIG5vbi1ibG9ja2luZy4KLQotICAgICAgICBSZXR1cm5zOgotICAgICAgICAgICAg
bWVzc2FnZSBhcyBhIHVuaWNvZGUgc3RyaW5nIGlmIGF2YWlsYWJsZS4gTm9uZSBvdGhlcndpc2Uu
Ci0gICAgICAgICIiIgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBtZXNzYWdlID0gc2VsZi5f
cXVldWUuZ2V0X25vd2FpdCgpCi0gICAgICAgIGV4Y2VwdCBRdWV1ZS5FbXB0eToKLSAgICAgICAg
ICAgIG1lc3NhZ2UgPSBOb25lCi0gICAgICAgIHJldHVybiBtZXNzYWdlCi0KLSAgICBkZWYgc3Rv
cChzZWxmKToKLSAgICAgICAgIiIiUmVxdWVzdCB0byBzdG9wIHRoaXMgaW5zdGFuY2UuCi0KLSAg
ICAgICAgVGhlIGluc3RhbmNlIHdpbGwgYmUgc3RvcHBlZCBhZnRlciByZWNlaXZpbmcgdGhlIG5l
eHQgbWVzc2FnZS4KLSAgICAgICAgVGhpcyBtZXRob2QgbWF5IG5vdCBiZSB2ZXJ5IHVzZWZ1bCwg
YnV0IHRoZXJlIGlzIG5vIGNsZWFuIHdheQotICAgICAgICBpbiBQeXRob24gdG8gZm9yY2VmdWxs
eSBzdG9wIGEgcnVubmluZyB0aHJlYWQuCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLl9zdG9w
X3JlcXVlc3RlZCA9IFRydWUKLQotCi1jbGFzcyBNZXNzYWdlU2VuZGVyKHRocmVhZGluZy5UaHJl
YWQpOgotICAgICIiIlRoaXMgY2xhc3Mgc2VuZHMgbWVzc2FnZXMgdG8gdGhlIGNsaWVudC4KLQot
ICAgIFRoaXMgY2xhc3MgcHJvdmlkZXMgYm90aCBzeW5jaHJvbm91cyBhbmQgYXN5bmNocm9ub3Vz
IHdheXMgdG8gc2VuZAotICAgIG1lc3NhZ2VzLgotCi0gICAgTm90ZTogVGhpcyBjbGFzcyBzaG91
bGQgbm90IGJlIHVzZWQgd2l0aCB0aGUgc3RhbmRhbG9uZSBzZXJ2ZXIgZm9yIHdzcwotICAgIGJl
Y2F1c2UgcHlPcGVuU1NMIHVzZWQgYnkgdGhlIHNlcnZlciByYWlzZXMgYSBmYXRhbCBlcnJvciBp
ZiB0aGUgc29ja2V0Ci0gICAgaXMgYWNjZXNzZWQgZnJvbSBtdWx0aXBsZSB0aHJlYWRzLgotICAg
ICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3QpOgotICAgICAgICAiIiJDb25z
dHJ1Y3QgYW4gaW5zdGFuY2UuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIHJlcXVlc3Q6
IG1vZF9weXRob24gcmVxdWVzdC4KLSAgICAgICAgIiIiCi0gICAgICAgIHRocmVhZGluZy5UaHJl
YWQuX19pbml0X18oc2VsZikKLSAgICAgICAgc2VsZi5fcmVxdWVzdCA9IHJlcXVlc3QKLSAgICAg
ICAgc2VsZi5fcXVldWUgPSBRdWV1ZS5RdWV1ZSgpCi0gICAgICAgIHNlbGYuc2V0RGFlbW9uKFRy
dWUpCi0gICAgICAgIHNlbGYuc3RhcnQoKQotCi0gICAgZGVmIHJ1bihzZWxmKToKLSAgICAgICAg
d2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIG1lc3NhZ2UsIGNvbmRpdGlvbiA9IHNlbGYuX3F1ZXVl
LmdldCgpCi0gICAgICAgICAgICBjb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgICAgICBzZW5k
X21lc3NhZ2Uoc2VsZi5fcmVxdWVzdCwgbWVzc2FnZSkKLSAgICAgICAgICAgIGNvbmRpdGlvbi5u
b3RpZnkoKQotICAgICAgICAgICAgY29uZGl0aW9uLnJlbGVhc2UoKQotCi0gICAgZGVmIHNlbmQo
c2VsZiwgbWVzc2FnZSk6Ci0gICAgICAgICIiIlNlbmQgYSBtZXNzYWdlLCBibG9ja2luZy4iIiIK
LQotICAgICAgICBjb25kaXRpb24gPSB0aHJlYWRpbmcuQ29uZGl0aW9uKCkKLSAgICAgICAgY29u
ZGl0aW9uLmFjcXVpcmUoKQotICAgICAgICBzZWxmLl9xdWV1ZS5wdXQoKG1lc3NhZ2UsIGNvbmRp
dGlvbikpCi0gICAgICAgIGNvbmRpdGlvbi53YWl0KCkKLQotICAgIGRlZiBzZW5kX25vd2FpdChz
ZWxmLCBtZXNzYWdlKToKLSAgICAgICAgIiIiU2VuZCBhIG1lc3NhZ2UsIG5vbi1ibG9ja2luZy4i
IiIKLQotICAgICAgICBzZWxmLl9xdWV1ZS5wdXQoKG1lc3NhZ2UsIHRocmVhZGluZy5Db25kaXRp
b24oKSkpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2Rf
cHl3ZWJzb2NrZXQvbXV4LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L211eC5weQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzYzMzQ2ODViMzExMjI1ZTM4NzNiOWI4MjhlZDAz
MWE3ZTkwNzgwMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvbXV4LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTg4
OSArMCwwIEBACi0jIENvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJl
c2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlz
dHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJUaGlzIGZpbGUgcHJvdmlkZXMgY2xh
c3NlcyBhbmQgaGVscGVyIGZ1bmN0aW9ucyBmb3IgbXVsdGlwbGV4aW5nIGV4dGVuc2lvbi4KLQot
U3BlY2lmaWNhdGlvbjoKLWh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWlldGYtaHli
aS13ZWJzb2NrZXQtbXVsdGlwbGV4aW5nLTA2Ci0iIiIKLQotCi1pbXBvcnQgY29sbGVjdGlvbnMK
LWltcG9ydCBjb3B5Ci1pbXBvcnQgZW1haWwKLWltcG9ydCBlbWFpbC5wYXJzZXIKLWltcG9ydCBs
b2dnaW5nCi1pbXBvcnQgbWF0aAotaW1wb3J0IHN0cnVjdAotaW1wb3J0IHRocmVhZGluZwotaW1w
b3J0IHRyYWNlYmFjawotCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCi1mcm9t
IG1vZF9weXdlYnNvY2tldCBpbXBvcnQgaGFuZHNoYWtlCi1mcm9tIG1vZF9weXdlYnNvY2tldCBp
bXBvcnQgdXRpbAotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9iYXNlIGltcG9ydCBCYWRP
cGVyYXRpb25FeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fYmFzZSBpbXBv
cnQgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9z
dHJlYW1fYmFzZSBpbXBvcnQgSW52YWxpZEZyYW1lRXhjZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNv
Y2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0IEZyYW1lCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3Ry
ZWFtX2h5YmkgaW1wb3J0IFN0cmVhbQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9oeWJp
IGltcG9ydCBTdHJlYW1PcHRpb25zCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2h5Ymkg
aW1wb3J0IGNyZWF0ZV9iaW5hcnlfZnJhbWUKLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1f
aHliaSBpbXBvcnQgY3JlYXRlX2Nsb3NpbmdfaGFuZHNoYWtlX2JvZHkKLWZyb20gbW9kX3B5d2Vi
c29ja2V0Ll9zdHJlYW1faHliaSBpbXBvcnQgY3JlYXRlX2hlYWRlcgotZnJvbSBtb2RfcHl3ZWJz
b2NrZXQuX3N0cmVhbV9oeWJpIGltcG9ydCBjcmVhdGVfbGVuZ3RoX2hlYWRlcgotZnJvbSBtb2Rf
cHl3ZWJzb2NrZXQuX3N0cmVhbV9oeWJpIGltcG9ydCBwYXJzZV9mcmFtZQotZnJvbSBtb2RfcHl3
ZWJzb2NrZXQuaGFuZHNoYWtlIGltcG9ydCBoeWJpCi0KLQotX0NPTlRST0xfQ0hBTk5FTF9JRCA9
IDAKLV9ERUZBVUxUX0NIQU5ORUxfSUQgPSAxCi0KLV9NVVhfT1BDT0RFX0FERF9DSEFOTkVMX1JF
UVVFU1QgPSAwCi1fTVVYX09QQ09ERV9BRERfQ0hBTk5FTF9SRVNQT05TRSA9IDEKLV9NVVhfT1BD
T0RFX0ZMT1dfQ09OVFJPTCA9IDIKLV9NVVhfT1BDT0RFX0RST1BfQ0hBTk5FTCA9IDMKLV9NVVhf
T1BDT0RFX05FV19DSEFOTkVMX1NMT1QgPSA0Ci0KLV9NQVhfQ0hBTk5FTF9JRCA9IDIgKiogMjkg
LSAxCi0KLV9JTklUSUFMX05VTUJFUl9PRl9DSEFOTkVMX1NMT1RTID0gNjQKLV9JTklUSUFMX1FV
T1RBX0ZPUl9DTElFTlQgPSA4ICogMTAyNAotCi1fSEFORFNIQUtFX0VOQ09ESU5HX0lERU5USVRZ
ID0gMAotX0hBTkRTSEFLRV9FTkNPRElOR19ERUxUQSA9IDEKLQotIyBXZSBuZWVkIG9ubHkgdGhl
c2Ugc3RhdHVzIGNvZGUgZm9yIG5vdy4KLV9IVFRQX0JBRF9SRVNQT05TRV9NRVNTQUdFUyA9IHsK
LSAgICBjb21tb24uSFRUUF9TVEFUVVNfQkFEX1JFUVVFU1Q6ICdCYWQgUmVxdWVzdCcsCi19Ci0K
LSMgRHJvcENoYW5uZWwgcmVhc29uIGNvZGUKLSMgVE9ETyhiYXNoaSk6IERlZmluZSBhbGwgcmVh
c29uIGNvZGUgZGVmaW5lZCBpbiAtMDUgZHJhZnQuCi1fRFJPUF9DT0RFX05PUk1BTF9DTE9TVVJF
ID0gMTAwMAotCi1fRFJPUF9DT0RFX0lOVkFMSURfRU5DQVBTVUxBVElOR19NRVNTQUdFID0gMjAw
MQotX0RST1BfQ09ERV9DSEFOTkVMX0lEX1RSVU5DQVRFRCA9IDIwMDIKLV9EUk9QX0NPREVfRU5D
QVBTVUxBVEVEX0ZSQU1FX0lTX1RSVU5DQVRFRCA9IDIwMDMKLV9EUk9QX0NPREVfVU5LTk9XTl9N
VVhfT1BDT0RFID0gMjAwNAotX0RST1BfQ09ERV9JTlZBTElEX01VWF9DT05UUk9MX0JMT0NLID0g
MjAwNQotX0RST1BfQ09ERV9DSEFOTkVMX0FMUkVBRFlfRVhJU1RTID0gMjAwNgotX0RST1BfQ09E
RV9ORVdfQ0hBTk5FTF9TTE9UX1ZJT0xBVElPTiA9IDIwMDcKLV9EUk9QX0NPREVfVU5LTk9XTl9S
RVFVRVNUX0VOQ09ESU5HID0gMjAxMAotCi1fRFJPUF9DT0RFX1NFTkRfUVVPVEFfVklPTEFUSU9O
ID0gMzAwNQotX0RST1BfQ09ERV9TRU5EX1FVT1RBX09WRVJGTE9XID0gMzAwNgotX0RST1BfQ09E
RV9BQ0tOT1dMRURHRUQgPSAzMDA4Ci1fRFJPUF9DT0RFX0JBRF9GUkFHTUVOVEFUSU9OID0gMzAw
OQotCi0KLWNsYXNzIE11eFVuZXhwZWN0ZWRFeGNlcHRpb24oRXhjZXB0aW9uKToKLSAgICAiIiJF
eGNlcHRpb24gaW4gaGFuZGxpbmcgbXVsdGlwbGV4aW5nIGV4dGVuc2lvbi4iIiIKLSAgICBwYXNz
Ci0KLQotIyBUZW1wb3JhcnkKLWNsYXNzIE11eE5vdEltcGxlbWVudGVkRXhjZXB0aW9uKEV4Y2Vw
dGlvbik6Ci0gICAgIiIiUmFpc2VkIHdoZW4gYSBmbG93IGVudGVycyB1bmltcGxlbWVudGVkIGNv
ZGUgcGF0aC4iIiIKLSAgICBwYXNzCi0KLQotY2xhc3MgTG9naWNhbENvbm5lY3Rpb25DbG9zZWRF
eGNlcHRpb24oRXhjZXB0aW9uKToKLSAgICAiIiJSYWlzZWQgd2hlbiBsb2dpY2FsIGNvbm5lY3Rp
b24gaXMgZ3JhY2VmdWxseSBjbG9zZWQuIiIiCi0gICAgcGFzcwotCi0KLWNsYXNzIFBoeXNpY2Fs
Q29ubmVjdGlvbkVycm9yKEV4Y2VwdGlvbik6Ci0gICAgIiIiUmFpc2VkIHdoZW4gdGhlcmUgaXMg
YSBwaHlzaWNhbCBjb25uZWN0aW9uIGVycm9yLiIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBk
cm9wX2NvZGUsIG1lc3NhZ2U9JycpOgotICAgICAgICBzdXBlcihQaHlzaWNhbENvbm5lY3Rpb25F
cnJvciwgc2VsZikuX19pbml0X18oCi0gICAgICAgICAgICAnY29kZT0lZCwgbWVzc2FnZT0lcicg
JSAoZHJvcF9jb2RlLCBtZXNzYWdlKSkKLSAgICAgICAgc2VsZi5kcm9wX2NvZGUgPSBkcm9wX2Nv
ZGUKLSAgICAgICAgc2VsZi5tZXNzYWdlID0gbWVzc2FnZQotCi0KLWNsYXNzIExvZ2ljYWxDaGFu
bmVsRXJyb3IoRXhjZXB0aW9uKToKLSAgICAiIiJSYWlzZWQgd2hlbiB0aGVyZSBpcyBhIGxvZ2lj
YWwgY2hhbm5lbCBlcnJvci4iIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgY2hhbm5lbF9pZCwg
ZHJvcF9jb2RlLCBtZXNzYWdlPScnKToKLSAgICAgICAgc3VwZXIoTG9naWNhbENoYW5uZWxFcnJv
ciwgc2VsZikuX19pbml0X18oCi0gICAgICAgICAgICAnY2hhbm5lbF9pZD0lZCwgY29kZT0lZCwg
bWVzc2FnZT0lcicgJSAoCi0gICAgICAgICAgICAgICAgY2hhbm5lbF9pZCwgZHJvcF9jb2RlLCBt
ZXNzYWdlKSkKLSAgICAgICAgc2VsZi5jaGFubmVsX2lkID0gY2hhbm5lbF9pZAotICAgICAgICBz
ZWxmLmRyb3BfY29kZSA9IGRyb3BfY29kZQotICAgICAgICBzZWxmLm1lc3NhZ2UgPSBtZXNzYWdl
Ci0KLQotZGVmIF9lbmNvZGVfY2hhbm5lbF9pZChjaGFubmVsX2lkKToKLSAgICBpZiBjaGFubmVs
X2lkIDwgMDoKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignQ2hhbm5lbCBpZCAlZCBtdXN0IG5v
dCBiZSBuZWdhdGl2ZScgJSBjaGFubmVsX2lkKQotCi0gICAgaWYgY2hhbm5lbF9pZCA8IDIgKiog
NzoKLSAgICAgICAgcmV0dXJuIGNocihjaGFubmVsX2lkKQotICAgIGlmIGNoYW5uZWxfaWQgPCAy
ICoqIDE0OgotICAgICAgICByZXR1cm4gc3RydWN0LnBhY2soJyFIJywgMHg4MDAwICsgY2hhbm5l
bF9pZCkKLSAgICBpZiBjaGFubmVsX2lkIDwgMiAqKiAyMToKLSAgICAgICAgZmlyc3QgPSBjaHIo
MHhjMCArIChjaGFubmVsX2lkID4+IDE2KSkKLSAgICAgICAgcmV0dXJuIGZpcnN0ICsgc3RydWN0
LnBhY2soJyFIJywgY2hhbm5lbF9pZCAmIDB4ZmZmZikKLSAgICBpZiBjaGFubmVsX2lkIDwgMiAq
KiAyOToKLSAgICAgICAgcmV0dXJuIHN0cnVjdC5wYWNrKCchTCcsIDB4ZTAwMDAwMDAgKyBjaGFu
bmVsX2lkKQotCi0gICAgcmFpc2UgVmFsdWVFcnJvcignQ2hhbm5lbCBpZCAlZCBpcyB0b28gbGFy
Z2UnICUgY2hhbm5lbF9pZCkKLQotCi1kZWYgX2VuY29kZV9udW1iZXIobnVtYmVyKToKLSAgICBy
ZXR1cm4gY3JlYXRlX2xlbmd0aF9oZWFkZXIobnVtYmVyLCBGYWxzZSkKLQotCi1kZWYgX2NyZWF0
ZV9hZGRfY2hhbm5lbF9yZXNwb25zZShjaGFubmVsX2lkLCBlbmNvZGVkX2hhbmRzaGFrZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nPTAsIHJlamVjdGVkPUZhbHNl
KToKLSAgICBpZiBlbmNvZGluZyAhPSAwIGFuZCBlbmNvZGluZyAhPSAxOgotICAgICAgICByYWlz
ZSBWYWx1ZUVycm9yKCdJbnZhbGlkIGVuY29kaW5nICVkJyAlIGVuY29kaW5nKQotCi0gICAgZmly
c3RfYnl0ZSA9ICgoX01VWF9PUENPREVfQUREX0NIQU5ORUxfUkVTUE9OU0UgPDwgNSkgfAotICAg
ICAgICAgICAgICAgICAgKHJlamVjdGVkIDw8IDQpIHwgZW5jb2RpbmcpCi0gICAgYmxvY2sgPSAo
Y2hyKGZpcnN0X2J5dGUpICsKLSAgICAgICAgICAgICBfZW5jb2RlX2NoYW5uZWxfaWQoY2hhbm5l
bF9pZCkgKwotICAgICAgICAgICAgIF9lbmNvZGVfbnVtYmVyKGxlbihlbmNvZGVkX2hhbmRzaGFr
ZSkpICsKLSAgICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSkKLSAgICByZXR1cm4gYmxvY2sK
LQotCi1kZWYgX2NyZWF0ZV9kcm9wX2NoYW5uZWwoY2hhbm5lbF9pZCwgY29kZT1Ob25lLCBtZXNz
YWdlPScnKToKLSAgICBpZiBsZW4obWVzc2FnZSkgPiAwIGFuZCBjb2RlIGlzIE5vbmU6Ci0gICAg
ICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0NvZGUgbXVzdCBiZSBzcGVjaWZpZWQgaWYgbWVzc2FnZSBp
cyBzcGVjaWZpZWQnKQotCi0gICAgZmlyc3RfYnl0ZSA9IF9NVVhfT1BDT0RFX0RST1BfQ0hBTk5F
TCA8PCA1Ci0gICAgYmxvY2sgPSBjaHIoZmlyc3RfYnl0ZSkgKyBfZW5jb2RlX2NoYW5uZWxfaWQo
Y2hhbm5lbF9pZCkKLSAgICBpZiBjb2RlIGlzIE5vbmU6Ci0gICAgICAgIGJsb2NrICs9IF9lbmNv
ZGVfbnVtYmVyKDApICMgUmVhc29uIHNpemUKLSAgICBlbHNlOgotICAgICAgICByZWFzb24gPSBz
dHJ1Y3QucGFjaygnIUgnLCBjb2RlKSArIG1lc3NhZ2UKLSAgICAgICAgcmVhc29uX3NpemUgPSBf
ZW5jb2RlX251bWJlcihsZW4ocmVhc29uKSkKLSAgICAgICAgYmxvY2sgKz0gcmVhc29uX3NpemUg
KyByZWFzb24KLQotICAgIHJldHVybiBibG9jawotCi0KLWRlZiBfY3JlYXRlX2Zsb3dfY29udHJv
bChjaGFubmVsX2lkLCByZXBsZW5pc2hlZF9xdW90YSk6Ci0gICAgZmlyc3RfYnl0ZSA9IF9NVVhf
T1BDT0RFX0ZMT1dfQ09OVFJPTCA8PCA1Ci0gICAgYmxvY2sgPSAoY2hyKGZpcnN0X2J5dGUpICsK
LSAgICAgICAgICAgICBfZW5jb2RlX2NoYW5uZWxfaWQoY2hhbm5lbF9pZCkgKwotICAgICAgICAg
ICAgIF9lbmNvZGVfbnVtYmVyKHJlcGxlbmlzaGVkX3F1b3RhKSkKLSAgICByZXR1cm4gYmxvY2sK
LQotCi1kZWYgX2NyZWF0ZV9uZXdfY2hhbm5lbF9zbG90KHNsb3RzLCBzZW5kX3F1b3RhKToKLSAg
ICBpZiBzbG90cyA8IDAgb3Igc2VuZF9xdW90YSA8IDA6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJy
b3IoJ3Nsb3RzIGFuZCBzZW5kX3F1b3RhIG11c3QgYmUgbm9uLW5lZ2F0aXZlLicpCi0gICAgZmly
c3RfYnl0ZSA9IF9NVVhfT1BDT0RFX05FV19DSEFOTkVMX1NMT1QgPDwgNQotICAgIGJsb2NrID0g
KGNocihmaXJzdF9ieXRlKSArCi0gICAgICAgICAgICAgX2VuY29kZV9udW1iZXIoc2xvdHMpICsK
LSAgICAgICAgICAgICBfZW5jb2RlX251bWJlcihzZW5kX3F1b3RhKSkKLSAgICByZXR1cm4gYmxv
Y2sKLQotCi1kZWYgX2NyZWF0ZV9mYWxsYmFja19uZXdfY2hhbm5lbF9zbG90KCk6Ci0gICAgZmly
c3RfYnl0ZSA9IChfTVVYX09QQ09ERV9ORVdfQ0hBTk5FTF9TTE9UIDw8IDUpIHwgMSAjIFNldCB0
aGUgRiBmbGFnCi0gICAgYmxvY2sgPSAoY2hyKGZpcnN0X2J5dGUpICsgX2VuY29kZV9udW1iZXIo
MCkgKyBfZW5jb2RlX251bWJlcigwKSkKLSAgICByZXR1cm4gYmxvY2sKLQotCi1kZWYgX3BhcnNl
X3JlcXVlc3RfdGV4dChyZXF1ZXN0X3RleHQpOgotICAgIHJlcXVlc3RfbGluZSwgaGVhZGVyX2xp
bmVzID0gcmVxdWVzdF90ZXh0LnNwbGl0KCdcclxuJywgMSkKLQotICAgIHdvcmRzID0gcmVxdWVz
dF9saW5lLnNwbGl0KCcgJykKLSAgICBpZiBsZW4od29yZHMpICE9IDM6Ci0gICAgICAgIHJhaXNl
IFZhbHVlRXJyb3IoJ0JhZCBSZXF1ZXN0LUxpbmUgc3ludGF4ICVyJyAlIHJlcXVlc3RfbGluZSkK
LSAgICBbY29tbWFuZCwgcGF0aCwgdmVyc2lvbl0gPSB3b3JkcwotICAgIGlmIHZlcnNpb24gIT0g
J0hUVFAvMS4xJzoKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignQmFkIHJlcXVlc3QgdmVyc2lv
biAlcicgJSB2ZXJzaW9uKQotCi0gICAgIyBlbWFpbC5wYXJzZXIuUGFyc2VyKCkgcGFyc2VzIFJG
QyAyODIyIChSRkMgODIyKSBzdHlsZSBoZWFkZXJzLgotICAgICMgUkZDIDY0NTUgcmVmZXJzIFJG
QyAyNjE2IGZvciBoYW5kc2hha2UgcGFyc2luZywgYW5kIFJGQyAyNjE2IHJlZmVycwotICAgICMg
UkZDIDgyMi4KLSAgICBoZWFkZXJzID0gZW1haWwucGFyc2VyLlBhcnNlcigpLnBhcnNlc3RyKGhl
YWRlcl9saW5lcykKLSAgICByZXR1cm4gY29tbWFuZCwgcGF0aCwgdmVyc2lvbiwgaGVhZGVycwot
Ci0KLWNsYXNzIF9Db250cm9sQmxvY2sob2JqZWN0KToKLSAgICAiIiJBIHN0cnVjdHVyZSB0aGF0
IGhvbGRzIHBhcnNpbmcgcmVzdWx0IG9mIG11bHRpcGxleGluZyBjb250cm9sIGJsb2NrLgotICAg
IENvbnRyb2wgYmxvY2sgc3BlY2lmaWMgYXR0cmlidXRlcyB3aWxsIGJlIGFkZGVkIGJ5IF9NdXhG
cmFtZVBheWxvYWRQYXJzZXIuCi0gICAgKGUuZy4gZW5jb2RlZF9oYW5kc2hha2Ugd2lsbCBiZSBh
ZGRlZCBmb3IgQWRkQ2hhbm5lbFJlcXVlc3QgYW5kCi0gICAgQWRkQ2hhbm5lbFJlc3BvbnNlKQot
ICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wY29kZSk6Ci0gICAgICAgIHNlbGYu
b3Bjb2RlID0gb3Bjb2RlCi0KLQotY2xhc3MgX011eEZyYW1lUGF5bG9hZFBhcnNlcihvYmplY3Qp
OgotICAgICIiIkEgY2xhc3MgdGhhdCBwYXJzZXMgbXVsdGlwbGV4ZWQgZnJhbWUgcGF5bG9hZC4i
IiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXlsb2FkKToKLSAgICAgICAgc2VsZi5fZGF0
YSA9IHBheWxvYWQKLSAgICAgICAgc2VsZi5fcmVhZF9wb3NpdGlvbiA9IDAKLSAgICAgICAgc2Vs
Zi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICBkZWYgcmVhZF9j
aGFubmVsX2lkKHNlbGYpOgotICAgICAgICAiIiJSZWFkcyBjaGFubmVsIGlkLgotCi0gICAgICAg
IFJhaXNlczoKLSAgICAgICAgICAgIFZhbHVlRXJyb3I6IHdoZW4gdGhlIHBheWxvYWQgZG9lc24n
dCBjb250YWluCi0gICAgICAgICAgICAgICAgdmFsaWQgY2hhbm5lbCBpZC4KLSAgICAgICAgIiIi
Ci0KLSAgICAgICAgcmVtYWluaW5nX2xlbmd0aCA9IGxlbihzZWxmLl9kYXRhKSAtIHNlbGYuX3Jl
YWRfcG9zaXRpb24KLSAgICAgICAgcG9zID0gc2VsZi5fcmVhZF9wb3NpdGlvbgotICAgICAgICBp
ZiByZW1haW5pbmdfbGVuZ3RoID09IDA6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJ
bnZhbGlkIGNoYW5uZWwgaWQgZm9ybWF0JykKLQotICAgICAgICBjaGFubmVsX2lkID0gb3JkKHNl
bGYuX2RhdGFbcG9zXSkKLSAgICAgICAgY2hhbm5lbF9pZF9sZW5ndGggPSAxCi0gICAgICAgIGlm
IGNoYW5uZWxfaWQgJiAweGUwID09IDB4ZTA6Ci0gICAgICAgICAgICBpZiByZW1haW5pbmdfbGVu
Z3RoIDwgNDoKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIGNoYW5u
ZWwgaWQgZm9ybWF0JykKLSAgICAgICAgICAgIGNoYW5uZWxfaWQgPSBzdHJ1Y3QudW5wYWNrKCch
TCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9kYXRhW3Bv
czpwb3MrNF0pWzBdICYgMHgxZmZmZmZmZgotICAgICAgICAgICAgY2hhbm5lbF9pZF9sZW5ndGgg
PSA0Ci0gICAgICAgIGVsaWYgY2hhbm5lbF9pZCAmIDB4YzAgPT0gMHhjMDoKLSAgICAgICAgICAg
IGlmIHJlbWFpbmluZ19sZW5ndGggPCAzOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJy
b3IoJ0ludmFsaWQgY2hhbm5lbCBpZCBmb3JtYXQnKQotICAgICAgICAgICAgY2hhbm5lbF9pZCA9
ICgoKGNoYW5uZWxfaWQgJiAweDFmKSA8PCAxNikgKwotICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdHJ1Y3QudW5wYWNrKCchSCcsIHNlbGYuX2RhdGFbcG9zKzE6cG9zKzNdKVswXSkKLSAgICAg
ICAgICAgIGNoYW5uZWxfaWRfbGVuZ3RoID0gMwotICAgICAgICBlbGlmIGNoYW5uZWxfaWQgJiAw
eDgwID09IDB4ODA6Ci0gICAgICAgICAgICBpZiByZW1haW5pbmdfbGVuZ3RoIDwgMjoKLSAgICAg
ICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIGNoYW5uZWwgaWQgZm9ybWF0JykK
LSAgICAgICAgICAgIGNoYW5uZWxfaWQgPSBzdHJ1Y3QudW5wYWNrKCchSCcsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9kYXRhW3Bvczpwb3MrMl0pWzBdICYg
MHgzZmZmCi0gICAgICAgICAgICBjaGFubmVsX2lkX2xlbmd0aCA9IDIKLSAgICAgICAgc2VsZi5f
cmVhZF9wb3NpdGlvbiArPSBjaGFubmVsX2lkX2xlbmd0aAotCi0gICAgICAgIHJldHVybiBjaGFu
bmVsX2lkCi0KLSAgICBkZWYgcmVhZF9pbm5lcl9mcmFtZShzZWxmKToKLSAgICAgICAgIiIiUmVh
ZHMgYW4gaW5uZXIgZnJhbWUuCi0KLSAgICAgICAgUmFpc2VzOgotICAgICAgICAgICAgUGh5c2lj
YWxDb25uZWN0aW9uRXJyb3I6IHdoZW4gdGhlIGlubmVyIGZyYW1lIGlzIGludmFsaWQuCi0gICAg
ICAgICIiIgotCi0gICAgICAgIGlmIGxlbihzZWxmLl9kYXRhKSA9PSBzZWxmLl9yZWFkX3Bvc2l0
aW9uOgotICAgICAgICAgICAgcmFpc2UgUGh5c2ljYWxDb25uZWN0aW9uRXJyb3IoCi0gICAgICAg
ICAgICAgICAgX0RST1BfQ09ERV9FTkNBUFNVTEFURURfRlJBTUVfSVNfVFJVTkNBVEVEKQotCi0g
ICAgICAgIGJpdHMgPSBvcmQoc2VsZi5fZGF0YVtzZWxmLl9yZWFkX3Bvc2l0aW9uXSkKLSAgICAg
ICAgc2VsZi5fcmVhZF9wb3NpdGlvbiArPSAxCi0gICAgICAgIGZpbiA9IChiaXRzICYgMHg4MCkg
PT0gMHg4MAotICAgICAgICByc3YxID0gKGJpdHMgJiAweDQwKSA9PSAweDQwCi0gICAgICAgIHJz
djIgPSAoYml0cyAmIDB4MjApID09IDB4MjAKLSAgICAgICAgcnN2MyA9IChiaXRzICYgMHgxMCkg
PT0gMHgxMAotICAgICAgICBvcGNvZGUgPSBiaXRzICYgMHhmCi0gICAgICAgIHBheWxvYWQgPSBz
ZWxmLnJlbWFpbmluZ19kYXRhKCkKLSAgICAgICAgIyBDb25zdW1lIHJlc3Qgb2YgdGhlIG1lc3Nh
Z2Ugd2hpY2ggaXMgcGF5bG9hZCBkYXRhIG9mIHRoZSBvcmlnaW5hbAotICAgICAgICAjIGZyYW1l
LgotICAgICAgICBzZWxmLl9yZWFkX3Bvc2l0aW9uID0gbGVuKHNlbGYuX2RhdGEpCi0gICAgICAg
IHJldHVybiBmaW4sIHJzdjEsIHJzdjIsIHJzdjMsIG9wY29kZSwgcGF5bG9hZAotCi0gICAgZGVm
IF9yZWFkX251bWJlcihzZWxmKToKLSAgICAgICAgaWYgc2VsZi5fcmVhZF9wb3NpdGlvbiArIDEg
PiBsZW4oc2VsZi5fZGF0YSk6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAotICAgICAg
ICAgICAgICAgICdDYW5ub3QgcmVhZCB0aGUgZmlyc3QgYnl0ZSBvZiBudW1iZXIgZmllbGQnKQot
Ci0gICAgICAgIG51bWJlciA9IG9yZChzZWxmLl9kYXRhW3NlbGYuX3JlYWRfcG9zaXRpb25dKQot
ICAgICAgICBpZiBudW1iZXIgJiAweDgwID09IDB4ODA6Ci0gICAgICAgICAgICByYWlzZSBWYWx1
ZUVycm9yKAotICAgICAgICAgICAgICAgICdUaGUgbW9zdCBzaWduaWZpY2FudCBiaXQgb2YgdGhl
IGZpcnN0IGJ5dGUgb2YgbnVtYmVyIHNob3VsZCAnCi0gICAgICAgICAgICAgICAgJ2JlIHVuc2V0
JykKLSAgICAgICAgc2VsZi5fcmVhZF9wb3NpdGlvbiArPSAxCi0gICAgICAgIHBvcyA9IHNlbGYu
X3JlYWRfcG9zaXRpb24KLSAgICAgICAgaWYgbnVtYmVyID09IDEyNzoKLSAgICAgICAgICAgIGlm
IHBvcyArIDggPiBsZW4oc2VsZi5fZGF0YSk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVF
cnJvcignSW52YWxpZCBudW1iZXIgZmllbGQnKQotICAgICAgICAgICAgc2VsZi5fcmVhZF9wb3Np
dGlvbiArPSA4Ci0gICAgICAgICAgICBudW1iZXIgPSBzdHJ1Y3QudW5wYWNrKCchUScsIHNlbGYu
X2RhdGFbcG9zOnBvcys4XSlbMF0KLSAgICAgICAgICAgIGlmIG51bWJlciA+IDB4N0ZGRkZGRkZG
RkZGRkZGRjoKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdFbmNvZGVkIG51bWJl
ciglZCkgPj0gMl42MycgJSBudW1iZXIpCi0gICAgICAgICAgICBpZiBudW1iZXIgPD0gMHhGRkZG
OgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0gICAgICAgICAgICAgICAgICAg
ICclZCBzaG91bGQgbm90IGJlIGVuY29kZWQgYnkgOSBieXRlcyBlbmNvZGluZycgJSBudW1iZXIp
Ci0gICAgICAgICAgICByZXR1cm4gbnVtYmVyCi0gICAgICAgIGlmIG51bWJlciA9PSAxMjY6Ci0g
ICAgICAgICAgICBpZiBwb3MgKyAyID4gbGVuKHNlbGYuX2RhdGEpOgotICAgICAgICAgICAgICAg
IHJhaXNlIFZhbHVlRXJyb3IoJ0ludmFsaWQgbnVtYmVyIGZpZWxkJykKLSAgICAgICAgICAgIHNl
bGYuX3JlYWRfcG9zaXRpb24gKz0gMgotICAgICAgICAgICAgbnVtYmVyID0gc3RydWN0LnVucGFj
aygnIUgnLCBzZWxmLl9kYXRhW3Bvczpwb3MrMl0pWzBdCi0gICAgICAgICAgICBpZiBudW1iZXIg
PD0gMTI1OgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0gICAgICAgICAgICAg
ICAgICAgICclZCBzaG91bGQgbm90IGJlIGVuY29kZWQgYnkgMyBieXRlcyBlbmNvZGluZycgJSBu
dW1iZXIpCi0gICAgICAgIHJldHVybiBudW1iZXIKLQotICAgIGRlZiBfcmVhZF9zaXplX2FuZF9j
b250ZW50cyhzZWxmKToKLSAgICAgICAgIiIiUmVhZHMgZGF0YSB0aGF0IGNvbnNpc3RzIG9mIGZv
bGxvd2luZ3M6Ci0gICAgICAgICAgICAtIHRoZSBzaXplIG9mIHRoZSBjb250ZW50cyBlbmNvZGVk
IHRoZSBzYW1lIHdheSBhcyBwYXlsb2FkIGxlbmd0aAotICAgICAgICAgICAgICBvZiB0aGUgV2Vi
U29ja2V0IFByb3RvY29sIHdpdGggMSBiaXQgcGFkZGluZyBhdCB0aGUgaGVhZC4KLSAgICAgICAg
ICAgIC0gdGhlIGNvbnRlbnRzLgotICAgICAgICAiIiIKLQotICAgICAgICB0cnk6Ci0gICAgICAg
ICAgICBzaXplID0gc2VsZi5fcmVhZF9udW1iZXIoKQotICAgICAgICBleGNlcHQgVmFsdWVFcnJv
ciwgZToKLSAgICAgICAgICAgIHJhaXNlIFBoeXNpY2FsQ29ubmVjdGlvbkVycm9yKF9EUk9QX0NP
REVfSU5WQUxJRF9NVVhfQ09OVFJPTF9CTE9DSywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cihlKSkKLSAgICAgICAgcG9zID0gc2VsZi5fcmVhZF9wb3NpdGlv
bgotICAgICAgICBpZiBwb3MgKyBzaXplID4gbGVuKHNlbGYuX2RhdGEpOgotICAgICAgICAgICAg
cmFpc2UgUGh5c2ljYWxDb25uZWN0aW9uRXJyb3IoCi0gICAgICAgICAgICAgICAgX0RST1BfQ09E
RV9JTlZBTElEX01VWF9DT05UUk9MX0JMT0NLLAotICAgICAgICAgICAgICAgICdDYW5ub3QgcmVh
ZCAlZCBieXRlcyBkYXRhJyAlIHNpemUpCi0KLSAgICAgICAgc2VsZi5fcmVhZF9wb3NpdGlvbiAr
PSBzaXplCi0gICAgICAgIHJldHVybiBzZWxmLl9kYXRhW3Bvczpwb3Mrc2l6ZV0KLQotICAgIGRl
ZiBfcmVhZF9hZGRfY2hhbm5lbF9yZXF1ZXN0KHNlbGYsIGZpcnN0X2J5dGUsIGNvbnRyb2xfYmxv
Y2spOgotICAgICAgICByZXNlcnZlZCA9IChmaXJzdF9ieXRlID4+IDIpICYgMHg3Ci0gICAgICAg
IGlmIHJlc2VydmVkICE9IDA6Ci0gICAgICAgICAgICByYWlzZSBQaHlzaWNhbENvbm5lY3Rpb25F
cnJvcigKLSAgICAgICAgICAgICAgICBfRFJPUF9DT0RFX0lOVkFMSURfTVVYX0NPTlRST0xfQkxP
Q0ssCi0gICAgICAgICAgICAgICAgJ1Jlc2VydmVkIGJpdHMgbXVzdCBiZSB1bnNldCcpCi0KLSAg
ICAgICAgIyBJbnZhbGlkIGVuY29kaW5nIHdpbGwgYmUgaGFuZGxlZCBieSBNdXhIYW5kbGVyLgot
ICAgICAgICBlbmNvZGluZyA9IGZpcnN0X2J5dGUgJiAweDMKLSAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgY29udHJvbF9ibG9jay5jaGFubmVsX2lkID0gc2VsZi5yZWFkX2NoYW5uZWxfaWQoKQot
ICAgICAgICBleGNlcHQgVmFsdWVFcnJvciwgZToKLSAgICAgICAgICAgIHJhaXNlIFBoeXNpY2Fs
Q29ubmVjdGlvbkVycm9yKF9EUk9QX0NPREVfSU5WQUxJRF9NVVhfQ09OVFJPTF9CTE9DSykKLSAg
ICAgICAgY29udHJvbF9ibG9jay5lbmNvZGluZyA9IGVuY29kaW5nCi0gICAgICAgIGVuY29kZWRf
aGFuZHNoYWtlID0gc2VsZi5fcmVhZF9zaXplX2FuZF9jb250ZW50cygpCi0gICAgICAgIGNvbnRy
b2xfYmxvY2suZW5jb2RlZF9oYW5kc2hha2UgPSBlbmNvZGVkX2hhbmRzaGFrZQotICAgICAgICBy
ZXR1cm4gY29udHJvbF9ibG9jawotCi0gICAgZGVmIF9yZWFkX2FkZF9jaGFubmVsX3Jlc3BvbnNl
KHNlbGYsIGZpcnN0X2J5dGUsIGNvbnRyb2xfYmxvY2spOgotICAgICAgICByZXNlcnZlZCA9IChm
aXJzdF9ieXRlID4+IDIpICYgMHgzCi0gICAgICAgIGlmIHJlc2VydmVkICE9IDA6Ci0gICAgICAg
ICAgICByYWlzZSBQaHlzaWNhbENvbm5lY3Rpb25FcnJvcigKLSAgICAgICAgICAgICAgICBfRFJP
UF9DT0RFX0lOVkFMSURfTVVYX0NPTlRST0xfQkxPQ0ssCi0gICAgICAgICAgICAgICAgJ1Jlc2Vy
dmVkIGJpdHMgbXVzdCBiZSB1bnNldCcpCi0KLSAgICAgICAgY29udHJvbF9ibG9jay5hY2NlcHRl
ZCA9IChmaXJzdF9ieXRlID4+IDQpICYgMQotICAgICAgICBjb250cm9sX2Jsb2NrLmVuY29kaW5n
ID0gZmlyc3RfYnl0ZSAmIDB4MwotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBjb250cm9sX2Js
b2NrLmNoYW5uZWxfaWQgPSBzZWxmLnJlYWRfY2hhbm5lbF9pZCgpCi0gICAgICAgIGV4Y2VwdCBW
YWx1ZUVycm9yLCBlOgotICAgICAgICAgICAgcmFpc2UgUGh5c2ljYWxDb25uZWN0aW9uRXJyb3Io
X0RST1BfQ09ERV9JTlZBTElEX01VWF9DT05UUk9MX0JMT0NLKQotICAgICAgICBjb250cm9sX2Js
b2NrLmVuY29kZWRfaGFuZHNoYWtlID0gc2VsZi5fcmVhZF9zaXplX2FuZF9jb250ZW50cygpCi0g
ICAgICAgIHJldHVybiBjb250cm9sX2Jsb2NrCi0KLSAgICBkZWYgX3JlYWRfZmxvd19jb250cm9s
KHNlbGYsIGZpcnN0X2J5dGUsIGNvbnRyb2xfYmxvY2spOgotICAgICAgICByZXNlcnZlZCA9IGZp
cnN0X2J5dGUgJiAweDFmCi0gICAgICAgIGlmIHJlc2VydmVkICE9IDA6Ci0gICAgICAgICAgICBy
YWlzZSBQaHlzaWNhbENvbm5lY3Rpb25FcnJvcigKLSAgICAgICAgICAgICAgICBfRFJPUF9DT0RF
X0lOVkFMSURfTVVYX0NPTlRST0xfQkxPQ0ssCi0gICAgICAgICAgICAgICAgJ1Jlc2VydmVkIGJp
dHMgbXVzdCBiZSB1bnNldCcpCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgY29udHJvbF9i
bG9jay5jaGFubmVsX2lkID0gc2VsZi5yZWFkX2NoYW5uZWxfaWQoKQotICAgICAgICAgICAgY29u
dHJvbF9ibG9jay5zZW5kX3F1b3RhID0gc2VsZi5fcmVhZF9udW1iZXIoKQotICAgICAgICBleGNl
cHQgVmFsdWVFcnJvciwgZToKLSAgICAgICAgICAgIHJhaXNlIFBoeXNpY2FsQ29ubmVjdGlvbkVy
cm9yKF9EUk9QX0NPREVfSU5WQUxJRF9NVVhfQ09OVFJPTF9CTE9DSywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihlKSkKLQotICAgICAgICByZXR1cm4gY29u
dHJvbF9ibG9jawotCi0gICAgZGVmIF9yZWFkX2Ryb3BfY2hhbm5lbChzZWxmLCBmaXJzdF9ieXRl
LCBjb250cm9sX2Jsb2NrKToKLSAgICAgICAgcmVzZXJ2ZWQgPSBmaXJzdF9ieXRlICYgMHgxZgot
ICAgICAgICBpZiByZXNlcnZlZCAhPSAwOgotICAgICAgICAgICAgcmFpc2UgUGh5c2ljYWxDb25u
ZWN0aW9uRXJyb3IoCi0gICAgICAgICAgICAgICAgX0RST1BfQ09ERV9JTlZBTElEX01VWF9DT05U
Uk9MX0JMT0NLLAotICAgICAgICAgICAgICAgICdSZXNlcnZlZCBiaXRzIG11c3QgYmUgdW5zZXQn
KQotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGNvbnRyb2xfYmxvY2suY2hhbm5lbF9pZCA9
IHNlbGYucmVhZF9jaGFubmVsX2lkKCkKLSAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IsIGU6Ci0g
ICAgICAgICAgICByYWlzZSBQaHlzaWNhbENvbm5lY3Rpb25FcnJvcihfRFJPUF9DT0RFX0lOVkFM
SURfTVVYX0NPTlRST0xfQkxPQ0spCi0gICAgICAgIHJlYXNvbiA9IHNlbGYuX3JlYWRfc2l6ZV9h
bmRfY29udGVudHMoKQotICAgICAgICBpZiBsZW4ocmVhc29uKSA9PSAwOgotICAgICAgICAgICAg
Y29udHJvbF9ibG9jay5kcm9wX2NvZGUgPSBOb25lCi0gICAgICAgICAgICBjb250cm9sX2Jsb2Nr
LmRyb3BfbWVzc2FnZSA9ICcnCi0gICAgICAgIGVsaWYgbGVuKHJlYXNvbikgPj0gMjoKLSAgICAg
ICAgICAgIGNvbnRyb2xfYmxvY2suZHJvcF9jb2RlID0gc3RydWN0LnVucGFjaygnIUgnLCByZWFz
b25bOjJdKVswXQotICAgICAgICAgICAgY29udHJvbF9ibG9jay5kcm9wX21lc3NhZ2UgPSByZWFz
b25bMjpdCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBQaHlzaWNhbENvbm5lY3Rp
b25FcnJvcigKLSAgICAgICAgICAgICAgICBfRFJPUF9DT0RFX0lOVkFMSURfTVVYX0NPTlRST0xf
QkxPQ0ssCi0gICAgICAgICAgICAgICAgJ1JlY2VpdmVkIERyb3BDaGFubmVsIHRoYXQgY29uYWlu
cyBvbmx5IDEtYnl0ZSByZWFzb24nKQotICAgICAgICByZXR1cm4gY29udHJvbF9ibG9jawotCi0g
ICAgZGVmIF9yZWFkX25ld19jaGFubmVsX3Nsb3Qoc2VsZiwgZmlyc3RfYnl0ZSwgY29udHJvbF9i
bG9jayk6Ci0gICAgICAgIHJlc2VydmVkID0gZmlyc3RfYnl0ZSAmIDB4MWUKLSAgICAgICAgaWYg
cmVzZXJ2ZWQgIT0gMDoKLSAgICAgICAgICAgIHJhaXNlIFBoeXNpY2FsQ29ubmVjdGlvbkVycm9y
KAotICAgICAgICAgICAgICAgIF9EUk9QX0NPREVfSU5WQUxJRF9NVVhfQ09OVFJPTF9CTE9DSywK
LSAgICAgICAgICAgICAgICAnUmVzZXJ2ZWQgYml0cyBtdXN0IGJlIHVuc2V0JykKLSAgICAgICAg
Y29udHJvbF9ibG9jay5mYWxsYmFjayA9IGZpcnN0X2J5dGUgJiAxCi0gICAgICAgIHRyeToKLSAg
ICAgICAgICAgIGNvbnRyb2xfYmxvY2suc2xvdHMgPSBzZWxmLl9yZWFkX251bWJlcigpCi0gICAg
ICAgICAgICBjb250cm9sX2Jsb2NrLnNlbmRfcXVvdGEgPSBzZWxmLl9yZWFkX251bWJlcigpCi0g
ICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yLCBlOgotICAgICAgICAgICAgcmFpc2UgUGh5c2ljYWxD
b25uZWN0aW9uRXJyb3IoX0RST1BfQ09ERV9JTlZBTElEX01VWF9DT05UUk9MX0JMT0NLLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKGUpKQotICAgICAgICBy
ZXR1cm4gY29udHJvbF9ibG9jawotCi0gICAgZGVmIHJlYWRfY29udHJvbF9ibG9ja3Moc2VsZik6
Ci0gICAgICAgICIiIlJlYWRzIGNvbnRyb2wgYmxvY2socykuCi0KLSAgICAgICAgUmFpc2VzOgot
ICAgICAgICAgICBQaHlzaWNhbENvbm5lY3Rpb25FcnJvcjogd2hlbiB0aGUgcGF5bG9hZCBjb250
YWlucyBpbnZhbGlkIGNvbnRyb2wKLSAgICAgICAgICAgICAgIGJsb2NrKHMpLgotICAgICAgICAg
ICBTdG9wSXRlcmF0aW9uOiB3aGVuIG5vIGNvbnRyb2wgYmxvY2tzIGxlZnQuCi0gICAgICAgICIi
IgotCi0gICAgICAgIHdoaWxlIHNlbGYuX3JlYWRfcG9zaXRpb24gPCBsZW4oc2VsZi5fZGF0YSk6
Ci0gICAgICAgICAgICBmaXJzdF9ieXRlID0gb3JkKHNlbGYuX2RhdGFbc2VsZi5fcmVhZF9wb3Np
dGlvbl0pCi0gICAgICAgICAgICBzZWxmLl9yZWFkX3Bvc2l0aW9uICs9IDEKLSAgICAgICAgICAg
IG9wY29kZSA9IChmaXJzdF9ieXRlID4+IDUpICYgMHg3Ci0gICAgICAgICAgICBjb250cm9sX2Js
b2NrID0gX0NvbnRyb2xCbG9jayhvcGNvZGU9b3Bjb2RlKQotICAgICAgICAgICAgaWYgb3Bjb2Rl
ID09IF9NVVhfT1BDT0RFX0FERF9DSEFOTkVMX1JFUVVFU1Q6Ci0gICAgICAgICAgICAgICAgeWll
bGQgc2VsZi5fcmVhZF9hZGRfY2hhbm5lbF9yZXF1ZXN0KGZpcnN0X2J5dGUsIGNvbnRyb2xfYmxv
Y2spCi0gICAgICAgICAgICBlbGlmIG9wY29kZSA9PSBfTVVYX09QQ09ERV9BRERfQ0hBTk5FTF9S
RVNQT05TRToKLSAgICAgICAgICAgICAgICB5aWVsZCBzZWxmLl9yZWFkX2FkZF9jaGFubmVsX3Jl
c3BvbnNlKAotICAgICAgICAgICAgICAgICAgICBmaXJzdF9ieXRlLCBjb250cm9sX2Jsb2NrKQot
ICAgICAgICAgICAgZWxpZiBvcGNvZGUgPT0gX01VWF9PUENPREVfRkxPV19DT05UUk9MOgotICAg
ICAgICAgICAgICAgIHlpZWxkIHNlbGYuX3JlYWRfZmxvd19jb250cm9sKGZpcnN0X2J5dGUsIGNv
bnRyb2xfYmxvY2spCi0gICAgICAgICAgICBlbGlmIG9wY29kZSA9PSBfTVVYX09QQ09ERV9EUk9Q
X0NIQU5ORUw6Ci0gICAgICAgICAgICAgICAgeWllbGQgc2VsZi5fcmVhZF9kcm9wX2NoYW5uZWwo
Zmlyc3RfYnl0ZSwgY29udHJvbF9ibG9jaykKLSAgICAgICAgICAgIGVsaWYgb3Bjb2RlID09IF9N
VVhfT1BDT0RFX05FV19DSEFOTkVMX1NMT1Q6Ci0gICAgICAgICAgICAgICAgeWllbGQgc2VsZi5f
cmVhZF9uZXdfY2hhbm5lbF9zbG90KGZpcnN0X2J5dGUsIGNvbnRyb2xfYmxvY2spCi0gICAgICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJhaXNlIFBoeXNpY2FsQ29ubmVjdGlvbkVycm9y
KAotICAgICAgICAgICAgICAgICAgICBfRFJPUF9DT0RFX1VOS05PV05fTVVYX09QQ09ERSwKLSAg
ICAgICAgICAgICAgICAgICAgJ0ludmFsaWQgb3Bjb2RlICVkJyAlIG9wY29kZSkKLQotICAgICAg
ICBhc3NlcnQgc2VsZi5fcmVhZF9wb3NpdGlvbiA9PSBsZW4oc2VsZi5fZGF0YSkKLSAgICAgICAg
cmFpc2UgU3RvcEl0ZXJhdGlvbgotCi0gICAgZGVmIHJlbWFpbmluZ19kYXRhKHNlbGYpOgotICAg
ICAgICAiIiJSZXR1cm5zIHJlbWFpbmluZyBkYXRhLiIiIgotCi0gICAgICAgIHJldHVybiBzZWxm
Ll9kYXRhW3NlbGYuX3JlYWRfcG9zaXRpb246XQotCi0KLWNsYXNzIF9Mb2dpY2FsUmVxdWVzdChv
YmplY3QpOgotICAgICIiIk1pbWljcyBtb2RfcHl0aG9uIHJlcXVlc3QuIiIiCi0KLSAgICBkZWYg
X19pbml0X18oc2VsZiwgY2hhbm5lbF9pZCwgY29tbWFuZCwgcGF0aCwgcHJvdG9jb2wsIGhlYWRl
cnMsCi0gICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24pOgotICAgICAgICAiIiJDb25zdHJ1Y3Rz
IGFuIGluc3RhbmNlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBjaGFubmVsX2lkOiB0
aGUgY2hhbm5lbCBpZCBvZiB0aGUgbG9naWNhbCBjaGFubmVsLgotICAgICAgICAgICAgY29tbWFu
ZDogSFRUUCByZXF1ZXN0IGNvbW1hbmQuCi0gICAgICAgICAgICBwYXRoOiBIVFRQIHJlcXVlc3Qg
cGF0aC4KLSAgICAgICAgICAgIGhlYWRlcnM6IEhUVFAgaGVhZGVycy4KLSAgICAgICAgICAgIGNv
bm5lY3Rpb246IF9Mb2dpY2FsQ29ubmVjdGlvbiBpbnN0YW5jZS4KLSAgICAgICAgIiIiCi0KLSAg
ICAgICAgc2VsZi5jaGFubmVsX2lkID0gY2hhbm5lbF9pZAotICAgICAgICBzZWxmLm1ldGhvZCA9
IGNvbW1hbmQKLSAgICAgICAgc2VsZi51cmkgPSBwYXRoCi0gICAgICAgIHNlbGYucHJvdG9jb2wg
PSBwcm90b2NvbAotICAgICAgICBzZWxmLmhlYWRlcnNfaW4gPSBoZWFkZXJzCi0gICAgICAgIHNl
bGYuY29ubmVjdGlvbiA9IGNvbm5lY3Rpb24KLSAgICAgICAgc2VsZi5zZXJ2ZXJfdGVybWluYXRl
ZCA9IEZhbHNlCi0gICAgICAgIHNlbGYuY2xpZW50X3Rlcm1pbmF0ZWQgPSBGYWxzZQotCi0gICAg
ZGVmIGlzX2h0dHBzKHNlbGYpOgotICAgICAgICAiIiJNaW1pY3MgcmVxdWVzdC5pc19odHRwcygp
LiBSZXR1cm5zIEZhbHNlIGJlY2F1c2UgdGhpcyBtZXRob2QgaXMKLSAgICAgICAgdXNlZCBvbmx5
IGJ5IG9sZCBwcm90b2NvbHMgKGhpeGllIGFuZCBoeWJpMDApLgotICAgICAgICAiIiIKLQotICAg
ICAgICByZXR1cm4gRmFsc2UKLQotCi1jbGFzcyBfTG9naWNhbENvbm5lY3Rpb24ob2JqZWN0KToK
LSAgICAiIiJNaW1pY3MgbW9kX3B5dGhvbiBtcF9jb25uLiIiIgotCi0gICAgIyBGb3IgZGV0YWls
cywgc2VlIHRoZSBjb21tZW50IG9mIHNldF9yZWFkX3N0YXRlKCkuCi0gICAgU1RBVEVfQUNUSVZF
ID0gMQotICAgIFNUQVRFX0dSQUNFRlVMTFlfQ0xPU0VEID0gMgotICAgIFNUQVRFX1RFUk1JTkFU
RUQgPSAzCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbXV4X2hhbmRsZXIsIGNoYW5uZWxfaWQp
OgotICAgICAgICAiIiJDb25zdHJ1Y3RzIGFuIGluc3RhbmNlLgotCi0gICAgICAgIEFyZ3M6Ci0g
ICAgICAgICAgICBtdXhfaGFuZGxlcjogX011eEhhbmRsZXIgaW5zdGFuY2UuCi0gICAgICAgICAg
ICBjaGFubmVsX2lkOiBjaGFubmVsIGlkIG9mIHRoaXMgY29ubmVjdGlvbi4KLSAgICAgICAgIiIi
Ci0KLSAgICAgICAgc2VsZi5fbXV4X2hhbmRsZXIgPSBtdXhfaGFuZGxlcgotICAgICAgICBzZWxm
Ll9jaGFubmVsX2lkID0gY2hhbm5lbF9pZAotICAgICAgICBzZWxmLl9pbmNvbWluZ19kYXRhID0g
JycKLQotICAgICAgICAjIC0gUHJvdGVjdHMgX3dhaXRpbmdfd3JpdGVfY29tcGxldGlvbgotICAg
ICAgICAjIC0gU2lnbmFscyB0aGUgdGhyZWFkIHdhaXRpbmcgZm9yIGNvbXBsZXRpb24gb2Ygd3Jp
dGUgYnkgbXV4IGhhbmRsZXIKLSAgICAgICAgc2VsZi5fd3JpdGVfY29uZGl0aW9uID0gdGhyZWFk
aW5nLkNvbmRpdGlvbigpCi0gICAgICAgIHNlbGYuX3dhaXRpbmdfd3JpdGVfY29tcGxldGlvbiA9
IEZhbHNlCi0KLSAgICAgICAgc2VsZi5fcmVhZF9jb25kaXRpb24gPSB0aHJlYWRpbmcuQ29uZGl0
aW9uKCkKLSAgICAgICAgc2VsZi5fcmVhZF9zdGF0ZSA9IHNlbGYuU1RBVEVfQUNUSVZFCi0KLSAg
ICBkZWYgZ2V0X2xvY2FsX2FkZHIoc2VsZik6Ci0gICAgICAgICIiIkdldHRlciB0byBtaW1pYyBt
cF9jb25uLmxvY2FsX2FkZHIuIiIiCi0KLSAgICAgICAgcmV0dXJuIHNlbGYuX211eF9oYW5kbGVy
LnBoeXNpY2FsX2Nvbm5lY3Rpb24uZ2V0X2xvY2FsX2FkZHIoKQotICAgIGxvY2FsX2FkZHIgPSBw
cm9wZXJ0eShnZXRfbG9jYWxfYWRkcikKLQotICAgIGRlZiBnZXRfcmVtb3RlX2FkZHIoc2VsZik6
Ci0gICAgICAgICIiIkdldHRlciB0byBtaW1pYyBtcF9jb25uLnJlbW90ZV9hZGRyLiIiIgotCi0g
ICAgICAgIHJldHVybiBzZWxmLl9tdXhfaGFuZGxlci5waHlzaWNhbF9jb25uZWN0aW9uLmdldF9y
ZW1vdGVfYWRkcigpCi0gICAgcmVtb3RlX2FkZHIgPSBwcm9wZXJ0eShnZXRfcmVtb3RlX2FkZHIp
Ci0KLSAgICBkZWYgZ2V0X21lbW9yaXplZF9saW5lcyhzZWxmKToKLSAgICAgICAgIiIiR2V0cyBt
ZW1vcml6ZWQgbGluZXMuIE5vdCBzdXBwb3J0ZWQuIiIiCi0KLSAgICAgICAgcmFpc2UgTXV4VW5l
eHBlY3RlZEV4Y2VwdGlvbignX0xvZ2ljYWxDb25uZWN0aW9uIGRvZXMgbm90IHN1cHBvcnQgJwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfbWVtb3JpemVkX2xpbmVz
JykKLQotICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKLSAgICAgICAgIiIiV3JpdGVzIGRhdGEu
IG11eF9oYW5kbGVyIHNlbmRzIGRhdGEgYXN5bmNocm9ub3VzbHkuIFRoZSBjYWxsZXIgd2lsbAot
ICAgICAgICBiZSBzdXNwZW5kZWQgdW50aWwgd3JpdGUgZG9uZS4KLQotICAgICAgICBBcmdzOgot
ICAgICAgICAgICAgZGF0YTogZGF0YSB0byBiZSB3cml0dGVuLgotCi0gICAgICAgIFJhaXNlczoK
LSAgICAgICAgICAgIE11eFVuZXhwZWN0ZWRFeGNlcHRpb246IHdoZW4gY2FsbGVkIGJlZm9yZSBm
aW5pc2hpbmcgdGhlIHByZXZpb3VzCi0gICAgICAgICAgICAgICAgd3JpdGUuCi0gICAgICAgICIi
IgotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX3dyaXRlX2NvbmRpdGlvbi5hY3F1
aXJlKCkKLSAgICAgICAgICAgIGlmIHNlbGYuX3dhaXRpbmdfd3JpdGVfY29tcGxldGlvbjoKLSAg
ICAgICAgICAgICAgICByYWlzZSBNdXhVbmV4cGVjdGVkRXhjZXB0aW9uKAotICAgICAgICAgICAg
ICAgICAgICAnTG9naWNhbCBjb25uZWN0aW9uICVkIGlzIGFscmVhZHkgd2FpdGluZyB0aGUgY29t
cGxldGlvbiAnCi0gICAgICAgICAgICAgICAgICAgICdvZiB3cml0ZScgJSBzZWxmLl9jaGFubmVs
X2lkKQotCi0gICAgICAgICAgICBzZWxmLl93YWl0aW5nX3dyaXRlX2NvbXBsZXRpb24gPSBUcnVl
Ci0gICAgICAgICAgICBzZWxmLl9tdXhfaGFuZGxlci5zZW5kX2RhdGEoc2VsZi5fY2hhbm5lbF9p
ZCwgZGF0YSkKLSAgICAgICAgICAgIHNlbGYuX3dyaXRlX2NvbmRpdGlvbi53YWl0KCkKLSAgICAg
ICAgICAgICMgVE9ETyh0eW9zaGlubyk6IFJhaXNlIGFuIGV4Y2VwdGlvbiBpZiB3b2tlIHVwIGJ5
IG9uX3dyaXRlcl9kb25lLgotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fd3Jp
dGVfY29uZGl0aW9uLnJlbGVhc2UoKQotCi0gICAgZGVmIHdyaXRlX2NvbnRyb2xfZGF0YShzZWxm
LCBkYXRhKToKLSAgICAgICAgIiIiV3JpdGVzIGRhdGEgdmlhIHRoZSBjb250cm9sIGNoYW5uZWwu
IERvbid0IHdhaXQgZmluaXNoaW5nIHdyaXRlCi0gICAgICAgIGJlY2F1c2UgdGhpcyBtZXRob2Qg
Y2FuIGJlIGNhbGxlZCBieSBtdXggZGlzcGF0Y2hlci4KLQotICAgICAgICBBcmdzOgotICAgICAg
ICAgICAgZGF0YTogZGF0YSB0byBiZSB3cml0dGVuLgotICAgICAgICAiIiIKLQotICAgICAgICBz
ZWxmLl9tdXhfaGFuZGxlci5zZW5kX2NvbnRyb2xfZGF0YShkYXRhKQotCi0gICAgZGVmIG9uX3dy
aXRlX2RhdGFfZG9uZShzZWxmKToKLSAgICAgICAgIiIiQ2FsbGVkIHdoZW4gc2VuZGluZyBkYXRh
IGlzIGNvbXBsZXRlZC4iIiIKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl93cml0
ZV9jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgICAgICBpZiBub3Qgc2VsZi5fd2FpdGluZ193
cml0ZV9jb21wbGV0aW9uOgotICAgICAgICAgICAgICAgIHJhaXNlIE11eFVuZXhwZWN0ZWRFeGNl
cHRpb24oCi0gICAgICAgICAgICAgICAgICAgICdJbnZhbGlkIGNhbGwgb2Ygb25fd3JpdGVfZGF0
YV9kb25lIGZvciBsb2dpY2FsICcKLSAgICAgICAgICAgICAgICAgICAgJ2Nvbm5lY3Rpb24gJWQn
ICUgc2VsZi5fY2hhbm5lbF9pZCkKLSAgICAgICAgICAgIHNlbGYuX3dhaXRpbmdfd3JpdGVfY29t
cGxldGlvbiA9IEZhbHNlCi0gICAgICAgICAgICBzZWxmLl93cml0ZV9jb25kaXRpb24ubm90aWZ5
KCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX3dyaXRlX2NvbmRpdGlvbi5y
ZWxlYXNlKCkKLQotICAgIGRlZiBvbl93cml0ZXJfZG9uZShzZWxmKToKLSAgICAgICAgIiIiQ2Fs
bGVkIGJ5IHRoZSBtdXggaGFuZGxlciB3aGVuIHRoZSB3cml0ZXIgdGhyZWFkIGhhcyBmaW5pc2hl
ZC4iIiIKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl93cml0ZV9jb25kaXRpb24u
YWNxdWlyZSgpCi0gICAgICAgICAgICBzZWxmLl93YWl0aW5nX3dyaXRlX2NvbXBsZXRpb24gPSBG
YWxzZQotICAgICAgICAgICAgc2VsZi5fd3JpdGVfY29uZGl0aW9uLm5vdGlmeSgpCi0gICAgICAg
IGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl93cml0ZV9jb25kaXRpb24ucmVsZWFzZSgpCi0K
LQotICAgIGRlZiBhcHBlbmRfZnJhbWVfZGF0YShzZWxmLCBmcmFtZV9kYXRhKToKLSAgICAgICAg
IiIiQXBwZW5kcyBpbmNvbWluZyBmcmFtZSBkYXRhLiBDYWxsZWQgd2hlbiBtdXhfaGFuZGxlciBk
aXNwYXRjaGVzCi0gICAgICAgIGZyYW1lIGRhdGEgdG8gdGhlIGNvcnJlc3BvbmRpbmcgYXBwbGlj
YXRpb24uCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIGZyYW1lX2RhdGE6IGluY29taW5n
IGZyYW1lIGRhdGEuCi0gICAgICAgICIiIgotCi0gICAgICAgIHNlbGYuX3JlYWRfY29uZGl0aW9u
LmFjcXVpcmUoKQotICAgICAgICBzZWxmLl9pbmNvbWluZ19kYXRhICs9IGZyYW1lX2RhdGEKLSAg
ICAgICAgc2VsZi5fcmVhZF9jb25kaXRpb24ubm90aWZ5KCkKLSAgICAgICAgc2VsZi5fcmVhZF9j
b25kaXRpb24ucmVsZWFzZSgpCi0KLSAgICBkZWYgcmVhZChzZWxmLCBsZW5ndGgpOgotICAgICAg
ICAiIiJSZWFkcyBkYXRhLiBCbG9ja3MgdW50aWwgZW5vdWdoIGRhdGEgaGFzIGFycml2ZWQgdmlh
IHBoeXNpY2FsCi0gICAgICAgIGNvbm5lY3Rpb24uCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAg
ICAgIGxlbmd0aDogbGVuZ3RoIG9mIGRhdGEgdG8gYmUgcmVhZC4KLSAgICAgICAgUmFpc2VzOgot
ICAgICAgICAgICAgTG9naWNhbENvbm5lY3Rpb25DbG9zZWRFeGNlcHRpb246IHdoZW4gY2xvc2lu
ZyBoYW5kc2hha2UgZm9yIHRoaXMKLSAgICAgICAgICAgICAgICBsb2dpY2FsIGNoYW5uZWwgaGFz
IGJlZW4gcmVjZWl2ZWQuCi0gICAgICAgICAgICBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlv
bjogd2hlbiB0aGUgcGh5c2ljYWwgY29ubmVjdGlvbiBoYXMKLSAgICAgICAgICAgICAgICBjbG9z
ZWQsIG9yIGFuIGVycm9yIGlzIGNhdXNlZCBvbiB0aGUgcmVhZGVyIHRocmVhZC4KLSAgICAgICAg
IiIiCi0KLSAgICAgICAgc2VsZi5fcmVhZF9jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgIHdo
aWxlIChzZWxmLl9yZWFkX3N0YXRlID09IHNlbGYuU1RBVEVfQUNUSVZFIGFuZAotICAgICAgICAg
ICAgICAgbGVuKHNlbGYuX2luY29taW5nX2RhdGEpIDwgbGVuZ3RoKToKLSAgICAgICAgICAgIHNl
bGYuX3JlYWRfY29uZGl0aW9uLndhaXQoKQotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGlm
IHNlbGYuX3JlYWRfc3RhdGUgPT0gc2VsZi5TVEFURV9HUkFDRUZVTExZX0NMT1NFRDoKLSAgICAg
ICAgICAgICAgICByYWlzZSBMb2dpY2FsQ29ubmVjdGlvbkNsb3NlZEV4Y2VwdGlvbigKLSAgICAg
ICAgICAgICAgICAgICAgJ0xvZ2ljYWwgY2hhbm5lbCAlZCBoYXMgY2xvc2VkLicgJSBzZWxmLl9j
aGFubmVsX2lkKQotICAgICAgICAgICAgZWxpZiBzZWxmLl9yZWFkX3N0YXRlID09IHNlbGYuU1RB
VEVfVEVSTUlOQVRFRDoKLSAgICAgICAgICAgICAgICByYWlzZSBDb25uZWN0aW9uVGVybWluYXRl
ZEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgJ1JlY2VpdmluZyAlZCBieXRlIGZhaWxl
ZC4gTG9naWNhbCBjaGFubmVsICglZCkgY2xvc2VkJyAlCi0gICAgICAgICAgICAgICAgICAgIChs
ZW5ndGgsIHNlbGYuX2NoYW5uZWxfaWQpKQotCi0gICAgICAgICAgICB2YWx1ZSA9IHNlbGYuX2lu
Y29taW5nX2RhdGFbOmxlbmd0aF0KLSAgICAgICAgICAgIHNlbGYuX2luY29taW5nX2RhdGEgPSBz
ZWxmLl9pbmNvbWluZ19kYXRhW2xlbmd0aDpdCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAg
ICBzZWxmLl9yZWFkX2NvbmRpdGlvbi5yZWxlYXNlKCkKLQotICAgICAgICByZXR1cm4gdmFsdWUK
LQotICAgIGRlZiBzZXRfcmVhZF9zdGF0ZShzZWxmLCBuZXdfc3RhdGUpOgotICAgICAgICAiIiJT
ZXRzIHRoZSBzdGF0ZSBvZiB0aGlzIGNvbm5lY3Rpb24uIENhbGxlZCB3aGVuIGFuIGV2ZW50IGZv
ciB0aGlzCi0gICAgICAgIGNvbm5lY3Rpb24gaGFzIG9jY3VycmVkLgotCi0gICAgICAgIEFyZ3M6
Ci0gICAgICAgICAgICBuZXdfc3RhdGU6IHN0YXRlIHRvIGJlIHNldC4gbmV3X3N0YXRlIG11c3Qg
YmUgb25lIG9mIGZvbGxvd2luZ3M6Ci0gICAgICAgICAgICAtIFNUQVRFX0dSQUNFRlVMTFlfQ0xP
U0VEOiB3aGVuIGNsb3NpbmcgaGFuZHNoYWtlIGZvciB0aGlzCi0gICAgICAgICAgICAgICAgY29u
bmVjdGlvbiBoYXMgYmVlbiByZWNlaXZlZC4KLSAgICAgICAgICAgIC0gU1RBVEVfVEVSTUlOQVRF
RDogd2hlbiB0aGUgcGh5c2ljYWwgY29ubmVjdGlvbiBoYXMgY2xvc2VkIG9yCi0gICAgICAgICAg
ICAgICAgRHJvcENoYW5uZWwgb2YgdGhpcyBjb25uZWN0aW9uIGhhcyByZWNlaXZlZC4KLSAgICAg
ICAgIiIiCi0KLSAgICAgICAgc2VsZi5fcmVhZF9jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAg
IHNlbGYuX3JlYWRfc3RhdGUgPSBuZXdfc3RhdGUKLSAgICAgICAgc2VsZi5fcmVhZF9jb25kaXRp
b24ubm90aWZ5KCkKLSAgICAgICAgc2VsZi5fcmVhZF9jb25kaXRpb24ucmVsZWFzZSgpCi0KLQot
Y2xhc3MgX0lubmVyTWVzc2FnZShvYmplY3QpOgotICAgICIiIkhvbGRzIHRoZSByZXN1bHQgb2Yg
X0lubmVyTWVzc2FnZUJ1aWxkZXIuYnVpbGQoKS4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBvcGNvZGUsIHBheWxvYWQpOgotICAgICAgICBzZWxmLm9wY29kZSA9IG9wY29kZQot
ICAgICAgICBzZWxmLnBheWxvYWQgPSBwYXlsb2FkCi0KLQotY2xhc3MgX0lubmVyTWVzc2FnZUJ1
aWxkZXIob2JqZWN0KToKLSAgICAiIiJBIGNsYXNzIHRoYXQgaG9sZHMgdGhlIGNvbnRleHQgb2Yg
aW5uZXIgbWVzc2FnZSBmcmFnbWVudGF0aW9uIGFuZAotICAgIGJ1aWxkcyBhIG1lc3NhZ2UgZnJv
bSBmcmFnbWVudGVkIGlubmVyIGZyYW1lKHMpLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9f
KHNlbGYpOgotICAgICAgICBzZWxmLl9jb250cm9sX29wY29kZSA9IE5vbmUKLSAgICAgICAgc2Vs
Zi5fcGVuZGluZ19jb250cm9sX2ZyYWdtZW50cyA9IFtdCi0gICAgICAgIHNlbGYuX21lc3NhZ2Vf
b3Bjb2RlID0gTm9uZQotICAgICAgICBzZWxmLl9wZW5kaW5nX21lc3NhZ2VfZnJhZ21lbnRzID0g
W10KLSAgICAgICAgc2VsZi5fZnJhbWVfaGFuZGxlciA9IHNlbGYuX2hhbmRsZV9maXJzdAotCi0g
ICAgZGVmIF9oYW5kbGVfZmlyc3Qoc2VsZiwgZnJhbWUpOgotICAgICAgICBpZiBmcmFtZS5vcGNv
ZGUgPT0gY29tbW9uLk9QQ09ERV9DT05USU5VQVRJT046Ci0gICAgICAgICAgICByYWlzZSBJbnZh
bGlkRnJhbWVFeGNlcHRpb24oJ1NlbmRpbmcgaW52YWxpZCBjb250aW51YXRpb24gb3Bjb2RlJykK
LQotICAgICAgICBpZiBjb21tb24uaXNfY29udHJvbF9vcGNvZGUoZnJhbWUub3Bjb2RlKToKLSAg
ICAgICAgICAgIHJldHVybiBzZWxmLl9wcm9jZXNzX2ZpcnN0X2ZyYWdtZW50ZWRfY29udHJvbChm
cmFtZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9wcm9jZXNzX2Zp
cnN0X2ZyYWdtZW50ZWRfbWVzc2FnZShmcmFtZSkKLQotICAgIGRlZiBfcHJvY2Vzc19maXJzdF9m
cmFnbWVudGVkX2NvbnRyb2woc2VsZiwgZnJhbWUpOgotICAgICAgICBzZWxmLl9jb250cm9sX29w
Y29kZSA9IGZyYW1lLm9wY29kZQotICAgICAgICBzZWxmLl9wZW5kaW5nX2NvbnRyb2xfZnJhZ21l
bnRzLmFwcGVuZChmcmFtZS5wYXlsb2FkKQotICAgICAgICBpZiBub3QgZnJhbWUuZmluOgotICAg
ICAgICAgICAgc2VsZi5fZnJhbWVfaGFuZGxlciA9IHNlbGYuX2hhbmRsZV9mcmFnbWVudGVkX2Nv
bnRyb2wKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIHJldHVybiBzZWxmLl9yZWFz
c2VtYmxlX2ZyYWdtZW50ZWRfY29udHJvbCgpCi0KLSAgICBkZWYgX3Byb2Nlc3NfZmlyc3RfZnJh
Z21lbnRlZF9tZXNzYWdlKHNlbGYsIGZyYW1lKToKLSAgICAgICAgc2VsZi5fbWVzc2FnZV9vcGNv
ZGUgPSBmcmFtZS5vcGNvZGUKLSAgICAgICAgc2VsZi5fcGVuZGluZ19tZXNzYWdlX2ZyYWdtZW50
cy5hcHBlbmQoZnJhbWUucGF5bG9hZCkKLSAgICAgICAgaWYgbm90IGZyYW1lLmZpbjoKLSAgICAg
ICAgICAgIHNlbGYuX2ZyYW1lX2hhbmRsZXIgPSBzZWxmLl9oYW5kbGVfZnJhZ21lbnRlZF9tZXNz
YWdlCi0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICByZXR1cm4gc2VsZi5fcmVhc3Nl
bWJsZV9mcmFnbWVudGVkX21lc3NhZ2UoKQotCi0gICAgZGVmIF9oYW5kbGVfZnJhZ21lbnRlZF9j
b250cm9sKHNlbGYsIGZyYW1lKToKLSAgICAgICAgaWYgZnJhbWUub3Bjb2RlICE9IGNvbW1vbi5P
UENPREVfQ09OVElOVUFUSU9OOgotICAgICAgICAgICAgcmFpc2UgSW52YWxpZEZyYW1lRXhjZXB0
aW9uKAotICAgICAgICAgICAgICAgICdTZW5kaW5nIGludmFsaWQgb3Bjb2RlICVkIHdoaWxlIHNl
bmRpbmcgZnJhZ21lbnRlZCBjb250cm9sICcKLSAgICAgICAgICAgICAgICAnbWVzc2FnZScgJSBm
cmFtZS5vcGNvZGUpCi0gICAgICAgIHNlbGYuX3BlbmRpbmdfY29udHJvbF9mcmFnbWVudHMuYXBw
ZW5kKGZyYW1lLnBheWxvYWQpCi0gICAgICAgIGlmIG5vdCBmcmFtZS5maW46Ci0gICAgICAgICAg
ICByZXR1cm4gTm9uZQotICAgICAgICByZXR1cm4gc2VsZi5fcmVhc3NlbWJsZV9mcmFnbWVudGVk
X2NvbnRyb2woKQotCi0gICAgZGVmIF9yZWFzc2VtYmxlX2ZyYWdtZW50ZWRfY29udHJvbChzZWxm
KToKLSAgICAgICAgb3Bjb2RlID0gc2VsZi5fY29udHJvbF9vcGNvZGUKLSAgICAgICAgcGF5bG9h
ZCA9ICcnLmpvaW4oc2VsZi5fcGVuZGluZ19jb250cm9sX2ZyYWdtZW50cykKLSAgICAgICAgc2Vs
Zi5fY29udHJvbF9vcGNvZGUgPSBOb25lCi0gICAgICAgIHNlbGYuX3BlbmRpbmdfY29udHJvbF9m
cmFnbWVudHMgPSBbXQotICAgICAgICBpZiBzZWxmLl9tZXNzYWdlX29wY29kZSBpcyBub3QgTm9u
ZToKLSAgICAgICAgICAgIHNlbGYuX2ZyYW1lX2hhbmRsZXIgPSBzZWxmLl9oYW5kbGVfZnJhZ21l
bnRlZF9tZXNzYWdlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLl9mcmFtZV9oYW5k
bGVyID0gc2VsZi5faGFuZGxlX2ZpcnN0Ci0gICAgICAgIHJldHVybiBfSW5uZXJNZXNzYWdlKG9w
Y29kZSwgcGF5bG9hZCkKLQotICAgIGRlZiBfaGFuZGxlX2ZyYWdtZW50ZWRfbWVzc2FnZShzZWxm
LCBmcmFtZSk6Ci0gICAgICAgICMgU2VuZGVyIGNhbiBpbnRlcmxlYXZlIGEgY29udHJvbCBtZXNz
YWdlIHdoaWxlIHNlbmRpbmcgZnJhZ21lbnRlZAotICAgICAgICAjIG1lc3NhZ2VzLgotICAgICAg
ICBpZiBjb21tb24uaXNfY29udHJvbF9vcGNvZGUoZnJhbWUub3Bjb2RlKToKLSAgICAgICAgICAg
IGlmIHNlbGYuX2NvbnRyb2xfb3Bjb2RlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIHJh
aXNlIE11eFVuZXhwZWN0ZWRFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICAgICdTaG91bGQg
bm90IHJlYWNoIGhlcmUoQnVnIGluIGJ1aWxkZXIpJykKLSAgICAgICAgICAgIHJldHVybiBzZWxm
Ll9wcm9jZXNzX2ZpcnN0X2ZyYWdtZW50ZWRfY29udHJvbChmcmFtZSkKLQotICAgICAgICBpZiBm
cmFtZS5vcGNvZGUgIT0gY29tbW9uLk9QQ09ERV9DT05USU5VQVRJT046Ci0gICAgICAgICAgICBy
YWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ1NlbmRpbmcgaW52
YWxpZCBvcGNvZGUgJWQgd2hpbGUgc2VuZGluZyBmcmFnbWVudGVkIG1lc3NhZ2UnICUKLSAgICAg
ICAgICAgICAgICBmcmFtZS5vcGNvZGUpCi0gICAgICAgIHNlbGYuX3BlbmRpbmdfbWVzc2FnZV9m
cmFnbWVudHMuYXBwZW5kKGZyYW1lLnBheWxvYWQpCi0gICAgICAgIGlmIG5vdCBmcmFtZS5maW46
Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICByZXR1cm4gc2VsZi5fcmVhc3NlbWJs
ZV9mcmFnbWVudGVkX21lc3NhZ2UoKQotCi0gICAgZGVmIF9yZWFzc2VtYmxlX2ZyYWdtZW50ZWRf
bWVzc2FnZShzZWxmKToKLSAgICAgICAgb3Bjb2RlID0gc2VsZi5fbWVzc2FnZV9vcGNvZGUKLSAg
ICAgICAgcGF5bG9hZCA9ICcnLmpvaW4oc2VsZi5fcGVuZGluZ19tZXNzYWdlX2ZyYWdtZW50cykK
LSAgICAgICAgc2VsZi5fbWVzc2FnZV9vcGNvZGUgPSBOb25lCi0gICAgICAgIHNlbGYuX3BlbmRp
bmdfbWVzc2FnZV9mcmFnbWVudHMgPSBbXQotICAgICAgICBzZWxmLl9mcmFtZV9oYW5kbGVyID0g
c2VsZi5faGFuZGxlX2ZpcnN0Ci0gICAgICAgIHJldHVybiBfSW5uZXJNZXNzYWdlKG9wY29kZSwg
cGF5bG9hZCkKLQotICAgIGRlZiBidWlsZChzZWxmLCBmcmFtZSk6Ci0gICAgICAgICIiIkJ1aWxk
IGFuIGlubmVyIG1lc3NhZ2UuIFJldHVybnMgYW4gX0lubmVyTWVzc2FnZSBpbnN0YW5jZSB3aGVu
Ci0gICAgICAgIHRoZSBnaXZlbiBmcmFtZSBpcyB0aGUgbGFzdCBmcmFnbWVudGVkIGZyYW1lLiBS
ZXR1cm5zIE5vbmUgb3RoZXJ3aXNlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBmcmFt
ZTogYW4gaW5uZXIgZnJhbWUuCi0gICAgICAgIFJhaXNlczoKLSAgICAgICAgICAgIEludmFsaWRG
cmFtZUV4Y2VwdGlvbjogd2hlbiByZWNlaXZlZCBpbnZhbGlkIG9wY29kZS4gKGUuZy4KLSAgICAg
ICAgICAgICAgICByZWNlaXZpbmcgbm9uIGNvbnRpbnVhdGlvbiBkYXRhIG9wY29kZSBidXQgdGhl
IGZpbiBmbGFnIG9mCi0gICAgICAgICAgICAgICAgdGhlIHByZXZpb3VzIGlubmVyIGZyYW1lIHdh
cyBub3Qgc2V0LikKLSAgICAgICAgIiIiCi0KLSAgICAgICAgcmV0dXJuIHNlbGYuX2ZyYW1lX2hh
bmRsZXIoZnJhbWUpCi0KLQotY2xhc3MgX0xvZ2ljYWxTdHJlYW0oU3RyZWFtKToKLSAgICAiIiJN
aW1pY3MgdGhlIFN0cmVhbSBjbGFzcy4gVGhpcyBjbGFzcyBpbnRlcnByZXRzIG11bHRpcGxleGVk
IFdlYlNvY2tldAotICAgIGZyYW1lcy4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxm
LCByZXF1ZXN0LCBzdHJlYW1fb3B0aW9ucywgc2VuZF9xdW90YSwgcmVjZWl2ZV9xdW90YSk6Ci0g
ICAgICAgICIiIkNvbnN0cnVjdHMgYW4gaW5zdGFuY2UuCi0KLSAgICAgICAgQXJnczoKLSAgICAg
ICAgICAgIHJlcXVlc3Q6IF9Mb2dpY2FsUmVxdWVzdCBpbnN0YW5jZS4KLSAgICAgICAgICAgIHN0
cmVhbV9vcHRpb25zOiBTdHJlYW1PcHRpb25zIGluc3RhbmNlLgotICAgICAgICAgICAgc2VuZF9x
dW90YTogSW5pdGlhbCBzZW5kIHF1b3RhLgotICAgICAgICAgICAgcmVjZWl2ZV9xdW90YTogSW5p
dGlhbCByZWNlaXZlIHF1b3RhLgotICAgICAgICAiIiIKLQotICAgICAgICAjIFBoeXNpY2FsIHN0
cmVhbSBpcyByZXNwb25zaWJsZSBmb3IgbWFza2luZy4KLSAgICAgICAgc3RyZWFtX29wdGlvbnMu
dW5tYXNrX3JlY2VpdmUgPSBGYWxzZQotICAgICAgICBTdHJlYW0uX19pbml0X18oc2VsZiwgcmVx
dWVzdCwgc3RyZWFtX29wdGlvbnMpCi0KLSAgICAgICAgc2VsZi5fc2VuZF9jbG9zZWQgPSBGYWxz
ZQotICAgICAgICBzZWxmLl9zZW5kX3F1b3RhID0gc2VuZF9xdW90YQotICAgICAgICAjIC0gUHJv
dGVjdHMgX3NlbmRfY2xvc2VkIGFuZCBfc2VuZF9xdW90YQotICAgICAgICAjIC0gU2lnbmFscyB0
aGUgdGhyZWFkIHdhaXRpbmcgZm9yIHNlbmQgcXVvdGEgcmVwbGVuaXNoZWQKLSAgICAgICAgc2Vs
Zi5fc2VuZF9jb25kaXRpb24gPSB0aHJlYWRpbmcuQ29uZGl0aW9uKCkKLQotICAgICAgICAjIFRo
ZSBvcGNvZGUgb2YgdGhlIGZpcnN0IGZyYW1lIGluIG1lc3NhZ2VzLgotICAgICAgICBzZWxmLl9t
ZXNzYWdlX29wY29kZSA9IGNvbW1vbi5PUENPREVfVEVYVAotICAgICAgICAjIFRydWUgd2hlbiB0
aGUgbGFzdCBtZXNzYWdlIHdhcyBmcmFnbWVudGVkLgotICAgICAgICBzZWxmLl9sYXN0X21lc3Nh
Z2Vfd2FzX2ZyYWdtZW50ZWQgPSBGYWxzZQotCi0gICAgICAgIHNlbGYuX3JlY2VpdmVfcXVvdGEg
PSByZWNlaXZlX3F1b3RhCi0gICAgICAgIHNlbGYuX3dyaXRlX2lubmVyX2ZyYW1lX3NlbWFwaG9y
ZSA9IHRocmVhZGluZy5TZW1hcGhvcmUoKQotCi0gICAgICAgIHNlbGYuX2lubmVyX21lc3NhZ2Vf
YnVpbGRlciA9IF9Jbm5lck1lc3NhZ2VCdWlsZGVyKCkKLQotICAgIGRlZiBfY3JlYXRlX2lubmVy
X2ZyYW1lKHNlbGYsIG9wY29kZSwgcGF5bG9hZCwgZW5kPVRydWUpOgotICAgICAgICBmcmFtZSA9
IEZyYW1lKGZpbj1lbmQsIG9wY29kZT1vcGNvZGUsIHBheWxvYWQ9cGF5bG9hZCkKLSAgICAgICAg
Zm9yIGZyYW1lX2ZpbHRlciBpbiBzZWxmLl9vcHRpb25zLm91dGdvaW5nX2ZyYW1lX2ZpbHRlcnM6
Ci0gICAgICAgICAgICBmcmFtZV9maWx0ZXIuZmlsdGVyKGZyYW1lKQotCi0gICAgICAgIGlmIGxl
bihwYXlsb2FkKSAhPSBsZW4oZnJhbWUucGF5bG9hZCk6Ci0gICAgICAgICAgICByYWlzZSBNdXhV
bmV4cGVjdGVkRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdNdXggZXh0ZW5zaW9uIG11c3Qg
bm90IGJlIHVzZWQgYWZ0ZXIgZXh0ZW5zaW9ucyB3aGljaCBjaGFuZ2UgJwotICAgICAgICAgICAg
ICAgICcgZnJhbWUgYm91bmRhcnknKQotCi0gICAgICAgIGZpcnN0X2J5dGUgPSAoKGZyYW1lLmZp
biA8PCA3KSB8IChmcmFtZS5yc3YxIDw8IDYpIHwKLSAgICAgICAgICAgICAgICAgICAgICAoZnJh
bWUucnN2MiA8PCA1KSB8IChmcmFtZS5yc3YzIDw8IDQpIHwgZnJhbWUub3Bjb2RlKQotICAgICAg
ICByZXR1cm4gY2hyKGZpcnN0X2J5dGUpICsgZnJhbWUucGF5bG9hZAotCi0gICAgZGVmIF93cml0
ZV9pbm5lcl9mcmFtZShzZWxmLCBvcGNvZGUsIHBheWxvYWQsIGVuZD1UcnVlKToKLSAgICAgICAg
cGF5bG9hZF9sZW5ndGggPSBsZW4ocGF5bG9hZCkKLSAgICAgICAgd3JpdGVfcG9zaXRpb24gPSAw
Ci0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgIyBBbiBpbm5lciBmcmFtZSB3aWxsIGJlIGZy
YWdtZW50ZWQgaWYgdGhlcmUgaXMgbm8gZW5vdWdoIHNlbmQKLSAgICAgICAgICAgICMgcXVvdGEu
IFRoaXMgc2VtYXBob3JlIGVuc3VyZXMgdGhhdCBmcmFnbWVudGVkIGlubmVyIGZyYW1lcyBhcmUK
LSAgICAgICAgICAgICMgc2VudCBpbiBvcmRlciBvbiB0aGUgbG9naWNhbCBjaGFubmVsLgotICAg
ICAgICAgICAgIyBOb3RlIHRoYXQgZnJhbWVzIHRoYXQgY29tZSBmcm9tIG90aGVyIGxvZ2ljYWwg
Y2hhbm5lbHMgb3IKLSAgICAgICAgICAgICMgbXVsdGlwbGV4aW5nIGNvbnRyb2wgYmxvY2tzIGNh
biBiZSBpbnNlcnRlZCBiZXR3ZWVuIGZyYWdtZW50ZWQKLSAgICAgICAgICAgICMgaW5uZXIgZnJh
bWVzIG9uIHRoZSBwaHlzaWNhbCBjaGFubmVsLgotICAgICAgICAgICAgc2VsZi5fd3JpdGVfaW5u
ZXJfZnJhbWVfc2VtYXBob3JlLmFjcXVpcmUoKQotCi0gICAgICAgICAgICAjIENvbnN1bWUgYW4g
b2N0ZXQgcXVvdGEgd2hlbiB0aGlzIGlzIHRoZSBmaXJzdCBmcmFnbWVudGVkIGZyYW1lLgotICAg
ICAgICAgICAgaWYgb3Bjb2RlICE9IGNvbW1vbi5PUENPREVfQ09OVElOVUFUSU9OOgotICAgICAg
ICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9jb25kaXRpb24u
YWNxdWlyZSgpCi0gICAgICAgICAgICAgICAgICAgIHdoaWxlIChub3Qgc2VsZi5fc2VuZF9jbG9z
ZWQpIGFuZCBzZWxmLl9zZW5kX3F1b3RhID09IDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBz
ZWxmLl9zZW5kX2NvbmRpdGlvbi53YWl0KCkKLQotICAgICAgICAgICAgICAgICAgICBpZiBzZWxm
Ll9zZW5kX2Nsb3NlZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEJhZE9wZXJhdGlv
bkV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTG9naWNhbCBjb25uZWN0
aW9uICVkIGlzIGNsb3NlZCcgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Jl
cXVlc3QuY2hhbm5lbF9pZCkKLQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX3F1b3Rh
IC09IDEKLSAgICAgICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgICAgICBzZWxm
Ll9zZW5kX2NvbmRpdGlvbi5yZWxlYXNlKCkKLQotICAgICAgICAgICAgd2hpbGUgd3JpdGVfcG9z
aXRpb24gPCBwYXlsb2FkX2xlbmd0aDoKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICAgICAgICAgIHNlbGYuX3NlbmRfY29uZGl0aW9uLmFjcXVpcmUoKQotICAgICAgICAgICAgICAg
ICAgICB3aGlsZSAobm90IHNlbGYuX3NlbmRfY2xvc2VkKSBhbmQgc2VsZi5fc2VuZF9xdW90YSA9
PSAwOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdObyBxdW90YS4gV2FpdGluZyBGbG93Q29udHJvbCBtZXNz
YWdlIGZvciAlZC4nICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0
LmNoYW5uZWxfaWQpCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX2NvbmRpdGlv
bi53YWl0KCkKLQotICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9zZW5kX2Nsb3NlZDoKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbigKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnTG9naWNhbCBjb25uZWN0aW9uICVkIGlzIGNsb3NlZCcg
JQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVxdWVzdC5fY2hhbm5lbF9pZCkK
LQotICAgICAgICAgICAgICAgICAgICByZW1haW5pbmcgPSBwYXlsb2FkX2xlbmd0aCAtIHdyaXRl
X3Bvc2l0aW9uCi0gICAgICAgICAgICAgICAgICAgIHdyaXRlX2xlbmd0aCA9IG1pbihzZWxmLl9z
ZW5kX3F1b3RhLCByZW1haW5pbmcpCi0gICAgICAgICAgICAgICAgICAgIGlubmVyX2ZyYW1lX2Vu
ZCA9ICgKLSAgICAgICAgICAgICAgICAgICAgICAgIGVuZCBhbmQKLSAgICAgICAgICAgICAgICAg
ICAgICAgICh3cml0ZV9wb3NpdGlvbiArIHdyaXRlX2xlbmd0aCA9PSBwYXlsb2FkX2xlbmd0aCkp
Ci0KLSAgICAgICAgICAgICAgICAgICAgaW5uZXJfZnJhbWUgPSBzZWxmLl9jcmVhdGVfaW5uZXJf
ZnJhbWUoCi0gICAgICAgICAgICAgICAgICAgICAgICBvcGNvZGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICBwYXlsb2FkW3dyaXRlX3Bvc2l0aW9uOndyaXRlX3Bvc2l0aW9uK3dyaXRlX2xlbmd0
aF0sCi0gICAgICAgICAgICAgICAgICAgICAgICBpbm5lcl9mcmFtZV9lbmQpCi0gICAgICAgICAg
ICAgICAgICAgIHNlbGYuX3NlbmRfcXVvdGEgLT0gd3JpdGVfbGVuZ3RoCi0gICAgICAgICAgICAg
ICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnQ29uc3VtZWQgcXVvdGE9JWQsIHJlbWFpbmluZz0l
ZCcgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdyaXRlX2xlbmd0
aCwgc2VsZi5fc2VuZF9xdW90YSkpCi0gICAgICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fc2VuZF9jb25kaXRpb24ucmVsZWFzZSgpCi0KLSAgICAgICAgICAg
ICAgICAjIFdyaXRpbmcgZGF0YSB3aWxsIGJsb2NrIHRoZSB3b3JrZXIgc28gd2UgbmVlZCB0byBy
ZWxlYXNlCi0gICAgICAgICAgICAgICAgIyBfc2VuZF9jb25kaXRpb24gYmVmb3JlIHdyaXRpbmcu
Ci0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdTZW5kaW5nIGlubmVyIGZyYW1l
OiAlcicgJSBpbm5lcl9mcmFtZSkKLSAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LmNvbm5l
Y3Rpb24ud3JpdGUoaW5uZXJfZnJhbWUpCi0gICAgICAgICAgICAgICAgd3JpdGVfcG9zaXRpb24g
Kz0gd3JpdGVfbGVuZ3RoCi0KLSAgICAgICAgICAgICAgICBvcGNvZGUgPSBjb21tb24uT1BDT0RF
X0NPTlRJTlVBVElPTgotCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yLCBlOgotICAgICAgICAg
ICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0aW9uKGUpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAg
ICAgICAgICBzZWxmLl93cml0ZV9pbm5lcl9mcmFtZV9zZW1hcGhvcmUucmVsZWFzZSgpCi0KLSAg
ICBkZWYgcmVwbGVuaXNoX3NlbmRfcXVvdGEoc2VsZiwgc2VuZF9xdW90YSk6Ci0gICAgICAgICIi
IlJlcGxlbmlzaCBzZW5kIHF1b3RhLiIiIgotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNl
bGYuX3NlbmRfY29uZGl0aW9uLmFjcXVpcmUoKQotICAgICAgICAgICAgaWYgc2VsZi5fc2VuZF9x
dW90YSArIHNlbmRfcXVvdGEgPiAweDdGRkZGRkZGRkZGRkZGRkY6Ci0gICAgICAgICAgICAgICAg
c2VsZi5fc2VuZF9xdW90YSA9IDAKLSAgICAgICAgICAgICAgICByYWlzZSBMb2dpY2FsQ2hhbm5l
bEVycm9yKAotICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LmNoYW5uZWxfaWQsIF9E
Uk9QX0NPREVfU0VORF9RVU9UQV9PVkVSRkxPVykKLSAgICAgICAgICAgIHNlbGYuX3NlbmRfcXVv
dGEgKz0gc2VuZF9xdW90YQotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdSZXBsZW5p
c2hlZCBzZW5kIHF1b3RhIGZvciBjaGFubmVsIGlkICVkOiAlZCcgJQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChzZWxmLl9yZXF1ZXN0LmNoYW5uZWxfaWQsIHNlbGYuX3NlbmRfcXVv
dGEpKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fc2VuZF9jb25kaXRpb24u
bm90aWZ5KCkKLSAgICAgICAgICAgIHNlbGYuX3NlbmRfY29uZGl0aW9uLnJlbGVhc2UoKQotCi0g
ICAgZGVmIGNvbnN1bWVfcmVjZWl2ZV9xdW90YShzZWxmLCBhbW91bnQpOgotICAgICAgICAiIiJD
b25zdW1lcyByZWNlaXZlIHF1b3RhLiBSZXR1cm5zIEZhbHNlIG9uIGZhaWx1cmUuIiIiCi0KLSAg
ICAgICAgaWYgc2VsZi5fcmVjZWl2ZV9xdW90YSA8IGFtb3VudDoKLSAgICAgICAgICAgIHNlbGYu
X2xvZ2dlci5kZWJ1ZygnVmlvbGF0ZSBxdW90YSBvbiBjaGFubmVsIGlkICVkOiAlZCA8ICVkJyAl
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuX3JlcXVlc3QuY2hhbm5lbF9p
ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVjZWl2ZV9xdW90YSwg
YW1vdW50KSkKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICBzZWxmLl9yZWNlaXZl
X3F1b3RhIC09IGFtb3VudAotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgZGVmIHNlbmRfbWVz
c2FnZShzZWxmLCBtZXNzYWdlLCBlbmQ9VHJ1ZSwgYmluYXJ5PUZhbHNlKToKLSAgICAgICAgIiIi
T3ZlcnJpZGUgU3RyZWFtLnNlbmRfbWVzc2FnZS4iIiIKLQotICAgICAgICBpZiBzZWxmLl9yZXF1
ZXN0LnNlcnZlcl90ZXJtaW5hdGVkOgotICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhj
ZXB0aW9uKAotICAgICAgICAgICAgICAgICdSZXF1ZXN0ZWQgc2VuZF9tZXNzYWdlIGFmdGVyIHNl
bmRpbmcgb3V0IGEgY2xvc2luZyBoYW5kc2hha2UnKQotCi0gICAgICAgIGlmIGJpbmFyeSBhbmQg
aXNpbnN0YW5jZShtZXNzYWdlLCB1bmljb2RlKToKLSAgICAgICAgICAgIHJhaXNlIEJhZE9wZXJh
dGlvbkV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnTWVzc2FnZSBmb3IgYmluYXJ5IGZyYW1l
IG11c3QgYmUgaW5zdGFuY2Ugb2Ygc3RyJykKLQotICAgICAgICBpZiBiaW5hcnk6Ci0gICAgICAg
ICAgICBvcGNvZGUgPSBjb21tb24uT1BDT0RFX0JJTkFSWQotICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgb3Bjb2RlID0gY29tbW9uLk9QQ09ERV9URVhUCi0gICAgICAgICAgICBtZXNzYWdlID0g
bWVzc2FnZS5lbmNvZGUoJ3V0Zi04JykKLQotICAgICAgICBmb3IgbWVzc2FnZV9maWx0ZXIgaW4g
c2VsZi5fb3B0aW9ucy5vdXRnb2luZ19tZXNzYWdlX2ZpbHRlcnM6Ci0gICAgICAgICAgICBtZXNz
YWdlID0gbWVzc2FnZV9maWx0ZXIuZmlsdGVyKG1lc3NhZ2UsIGVuZCwgYmluYXJ5KQotCi0gICAg
ICAgIGlmIHNlbGYuX2xhc3RfbWVzc2FnZV93YXNfZnJhZ21lbnRlZDoKLSAgICAgICAgICAgIGlm
IG9wY29kZSAhPSBzZWxmLl9tZXNzYWdlX29wY29kZToKLSAgICAgICAgICAgICAgICByYWlzZSBC
YWRPcGVyYXRpb25FeGNlcHRpb24oJ01lc3NhZ2UgdHlwZXMgYXJlIGRpZmZlcmVudCBpbiAnCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmcmFtZXMgZm9yIHRo
ZSBzYW1lIG1lc3NhZ2UnKQotICAgICAgICAgICAgb3Bjb2RlID0gY29tbW9uLk9QQ09ERV9DT05U
SU5VQVRJT04KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuX21lc3NhZ2Vfb3Bjb2Rl
ID0gb3Bjb2RlCi0KLSAgICAgICAgc2VsZi5fd3JpdGVfaW5uZXJfZnJhbWUob3Bjb2RlLCBtZXNz
YWdlLCBlbmQpCi0gICAgICAgIHNlbGYuX2xhc3RfbWVzc2FnZV93YXNfZnJhZ21lbnRlZCA9IG5v
dCBlbmQKLQotICAgIGRlZiBfcmVjZWl2ZV9mcmFtZShzZWxmKToKLSAgICAgICAgIiIiT3ZlcnJp
ZGVzIFN0cmVhbS5fcmVjZWl2ZV9mcmFtZS4KLQotICAgICAgICBJbiBhZGRpdGlvbiB0byBjYWxs
IFN0cmVhbS5fcmVjZWl2ZV9mcmFtZSwgdGhpcyBtZXRob2QgYWRkcyB0aGUgYW1vdW50Ci0gICAg
ICAgIG9mIHBheWxvYWQgdG8gcmVjZWl2aW5nIHF1b3RhIGFuZCBzZW5kcyBGbG93Q29udHJvbCB0
byB0aGUgY2xpZW50LgotICAgICAgICBXZSBuZWVkIHRvIGRvIGl0IGhlcmUgYmVjYXVzZSBTdHJl
YW0ucmVjZWl2ZV9tZXNzYWdlKCkgaGFuZGxlcwotICAgICAgICBjb250cm9sIGZyYW1lcyBpbnRl
cm5hbGx5LgotICAgICAgICAiIiIKLQotICAgICAgICBvcGNvZGUsIHBheWxvYWQsIGZpbiwgcnN2
MSwgcnN2MiwgcnN2MyA9IFN0cmVhbS5fcmVjZWl2ZV9mcmFtZShzZWxmKQotICAgICAgICBhbW91
bnQgPSBsZW4ocGF5bG9hZCkKLSAgICAgICAgIyBSZXBsZW5pc2ggZXh0cmEgb25lIG9jdGV0IHdo
ZW4gcmVjZWl2aW5nIHRoZSBmaXJzdCBmcmFnbWVudGVkIGZyYW1lLgotICAgICAgICBpZiBvcGNv
ZGUgIT0gY29tbW9uLk9QQ09ERV9DT05USU5VQVRJT046Ci0gICAgICAgICAgICBhbW91bnQgKz0g
MQotICAgICAgICBzZWxmLl9yZWNlaXZlX3F1b3RhICs9IGFtb3VudAotICAgICAgICBmcmFtZV9k
YXRhID0gX2NyZWF0ZV9mbG93X2NvbnRyb2woc2VsZi5fcmVxdWVzdC5jaGFubmVsX2lkLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50KQotICAgICAgICBz
ZWxmLl9sb2dnZXIuZGVidWcoJ1NlbmRpbmcgZmxvdyBjb250cm9sIGZvciAlZCwgcmVwbGVuaXNo
ZWQ9JWQnICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLl9yZXF1ZXN0LmNoYW5u
ZWxfaWQsIGFtb3VudCkpCi0gICAgICAgIHNlbGYuX3JlcXVlc3QuY29ubmVjdGlvbi53cml0ZV9j
b250cm9sX2RhdGEoZnJhbWVfZGF0YSkKLSAgICAgICAgcmV0dXJuIG9wY29kZSwgcGF5bG9hZCwg
ZmluLCByc3YxLCByc3YyLCByc3YzCi0KLSAgICBkZWYgX2dldF9tZXNzYWdlX2Zyb21fZnJhbWUo
c2VsZiwgZnJhbWUpOgotICAgICAgICAiIiJPdmVycmlkZXMgU3RyZWFtLl9nZXRfbWVzc2FnZV9m
cm9tX2ZyYW1lLgotICAgICAgICAiIiIKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpbm5l
cl9tZXNzYWdlID0gc2VsZi5faW5uZXJfbWVzc2FnZV9idWlsZGVyLmJ1aWxkKGZyYW1lKQotICAg
ICAgICBleGNlcHQgSW52YWxpZEZyYW1lRXhjZXB0aW9uOgotICAgICAgICAgICAgcmFpc2UgTG9n
aWNhbENoYW5uZWxFcnJvcigKLSAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LmNoYW5uZWxf
aWQsIF9EUk9QX0NPREVfQkFEX0ZSQUdNRU5UQVRJT04pCi0KLSAgICAgICAgaWYgaW5uZXJfbWVz
c2FnZSBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgc2VsZi5fb3Jp
Z2luYWxfb3Bjb2RlID0gaW5uZXJfbWVzc2FnZS5vcGNvZGUKLSAgICAgICAgcmV0dXJuIGlubmVy
X21lc3NhZ2UucGF5bG9hZAotCi0gICAgZGVmIHJlY2VpdmVfbWVzc2FnZShzZWxmKToKLSAgICAg
ICAgIiIiT3ZlcnJpZGVzIFN0cmVhbS5yZWNlaXZlX21lc3NhZ2UuIiIiCi0KLSAgICAgICAgIyBK
dXN0IGNhbGwgU3RyZWFtLnJlY2VpdmVfbWVzc2FnZSgpLCBidXQgY2F0Y2gKLSAgICAgICAgIyBM
b2dpY2FsQ29ubmVjdGlvbkNsb3NlZEV4Y2VwdGlvbiwgd2hpY2ggaXMgcmFpc2VkIHdoZW4gdGhl
IGxvZ2ljYWwKLSAgICAgICAgIyBjb25uZWN0aW9uIGhhcyBjbG9zZWQgZ3JhY2VmdWxseS4KLSAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIFN0cmVhbS5yZWNlaXZlX21lc3NhZ2Uoc2Vs
ZikKLSAgICAgICAgZXhjZXB0IExvZ2ljYWxDb25uZWN0aW9uQ2xvc2VkRXhjZXB0aW9uLCBlOgot
ICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCclcycsIGUpCi0gICAgICAgICAgICByZXR1
cm4gTm9uZQotCi0gICAgZGVmIF9zZW5kX2Nsb3NpbmdfaGFuZHNoYWtlKHNlbGYsIGNvZGUsIHJl
YXNvbik6Ci0gICAgICAgICIiIk92ZXJyaWRlcyBTdHJlYW0uX3NlbmRfY2xvc2luZ19oYW5kc2hh
a2UuIiIiCi0KLSAgICAgICAgYm9keSA9IGNyZWF0ZV9jbG9zaW5nX2hhbmRzaGFrZV9ib2R5KGNv
ZGUsIHJlYXNvbikKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdTZW5kaW5nIGNsb3Npbmcg
aGFuZHNoYWtlIGZvciAlZDogKCVyLCAlciknICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
IChzZWxmLl9yZXF1ZXN0LmNoYW5uZWxfaWQsIGNvZGUsIHJlYXNvbikpCi0gICAgICAgIHNlbGYu
X3dyaXRlX2lubmVyX2ZyYW1lKGNvbW1vbi5PUENPREVfQ0xPU0UsIGJvZHksIGVuZD1UcnVlKQot
Ci0gICAgICAgIHNlbGYuX3JlcXVlc3Quc2VydmVyX3Rlcm1pbmF0ZWQgPSBUcnVlCi0KLSAgICBk
ZWYgc2VuZF9waW5nKHNlbGYsIGJvZHk9JycpOgotICAgICAgICAiIiJPdmVycmlkZXMgU3RyZWFt
LnNlbmRfcGluZyIiIgotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnU2VuZGluZyBwaW5n
IG9uIGxvZ2ljYWwgY2hhbm5lbCAlZDogJXInICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
IChzZWxmLl9yZXF1ZXN0LmNoYW5uZWxfaWQsIGJvZHkpKQotICAgICAgICBzZWxmLl93cml0ZV9p
bm5lcl9mcmFtZShjb21tb24uT1BDT0RFX1BJTkcsIGJvZHksIGVuZD1UcnVlKQotCi0gICAgICAg
IHNlbGYuX3BpbmdfcXVldWUuYXBwZW5kKGJvZHkpCi0KLSAgICBkZWYgX3NlbmRfcG9uZyhzZWxm
LCBib2R5KToKLSAgICAgICAgIiIiT3ZlcnJpZGVzIFN0cmVhbS5fc2VuZF9wb25nIiIiCi0KLSAg
ICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdTZW5kaW5nIHBvbmcgb24gbG9naWNhbCBjaGFubmVs
ICVkOiAlcicgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuX3JlcXVlc3QuY2hh
bm5lbF9pZCwgYm9keSkpCi0gICAgICAgIHNlbGYuX3dyaXRlX2lubmVyX2ZyYW1lKGNvbW1vbi5P
UENPREVfUE9ORywgYm9keSwgZW5kPVRydWUpCi0KLSAgICBkZWYgY2xvc2VfY29ubmVjdGlvbihz
ZWxmLCBjb2RlPWNvbW1vbi5TVEFUVVNfTk9STUFMX0NMT1NVUkUsIHJlYXNvbj0nJyk6Ci0gICAg
ICAgICIiIk92ZXJyaWRlcyBTdHJlYW0uY2xvc2VfY29ubmVjdGlvbi4iIiIKLQotICAgICAgICAj
IFRPRE8oYmFzaGkpOiBJbXBsZW1lbnQKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdDbG9z
aW5nIGxvZ2ljYWwgY29ubmVjdGlvbiAlZCcgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2VsZi5fcmVxdWVzdC5jaGFubmVsX2lkKQotICAgICAgICBzZWxmLl9yZXF1ZXN0LnNlcnZlcl90
ZXJtaW5hdGVkID0gVHJ1ZQotCi0gICAgZGVmIHN0b3Bfc2VuZGluZyhzZWxmKToKLSAgICAgICAg
IiIiU3RvcHMgYWNjZXB0aW5nIG5ldyBzZW5kIG9wZXJhdGlvbiAoX3dyaXRlX2lubmVyX2ZyYW1l
KS4iIiIKLQotICAgICAgICBzZWxmLl9zZW5kX2NvbmRpdGlvbi5hY3F1aXJlKCkKLSAgICAgICAg
c2VsZi5fc2VuZF9jbG9zZWQgPSBUcnVlCi0gICAgICAgIHNlbGYuX3NlbmRfY29uZGl0aW9uLm5v
dGlmeSgpCi0gICAgICAgIHNlbGYuX3NlbmRfY29uZGl0aW9uLnJlbGVhc2UoKQotCi0KLWNsYXNz
IF9PdXRnb2luZ0RhdGEob2JqZWN0KToKLSAgICAiIiJBIHN0cnVjdHVyZSB0aGF0IGhvbGRzIGRh
dGEgdG8gYmUgc2VudCB2aWEgcGh5c2ljYWwgY29ubmVjdGlvbiBhbmQKLSAgICBvcmlnaW4gb2Yg
dGhlIGRhdGEuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgY2hhbm5lbF9pZCwg
ZGF0YSk6Ci0gICAgICAgIHNlbGYuY2hhbm5lbF9pZCA9IGNoYW5uZWxfaWQKLSAgICAgICAgc2Vs
Zi5kYXRhID0gZGF0YQotCi0KLWNsYXNzIF9QaHlzaWNhbENvbm5lY3Rpb25Xcml0ZXIodGhyZWFk
aW5nLlRocmVhZCk6Ci0gICAgIiIiQSB0aHJlYWQgdGhhdCBpcyByZXNwb25zaWJsZSBmb3Igd3Jp
dGluZyBkYXRhIHRvIHBoeXNpY2FsIGNvbm5lY3Rpb24uCi0KLSAgICBUT0RPKGJhc2hpKTogTWFr
ZSBzdXJlIHRoZXJlIGlzIG5vIHRocmVhZC1zYWZldHkgcHJvYmxlbSB3aGVuIHRoZSByZWFkZXIK
LSAgICB0aHJlYWQgcmVhZHMgZGF0YSBmcm9tIHRoZSBzYW1lIHNvY2tldCBhdCBhIHRpbWUuCi0g
ICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbXV4X2hhbmRsZXIpOgotICAgICAgICAi
IiJDb25zdHJ1Y3RzIGFuIGluc3RhbmNlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBt
dXhfaGFuZGxlcjogX011eEhhbmRsZXIgaW5zdGFuY2UuCi0gICAgICAgICIiIgotCi0gICAgICAg
IHRocmVhZGluZy5UaHJlYWQuX19pbml0X18oc2VsZikKLSAgICAgICAgc2VsZi5fbG9nZ2VyID0g
dXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0gICAgICAgIHNlbGYuX211eF9oYW5kbGVyID0g
bXV4X2hhbmRsZXIKLSAgICAgICAgc2VsZi5zZXREYWVtb24oVHJ1ZSkKLQotICAgICAgICAjIFdo
ZW4gc2V0LCBtYWtlIHRoaXMgdGhyZWFkIHN0b3AgYWNjZXB0aW5nIG5ldyBkYXRhLCBmbHVzaCBw
ZW5kaW5nCi0gICAgICAgICMgZGF0YSBhbmQgZXhpdC4KLSAgICAgICAgc2VsZi5fc3RvcF9yZXF1
ZXN0ZWQgPSBGYWxzZQotICAgICAgICAjIFRoZSBjbG9zZSBjb2RlIG9mIHRoZSBwaHlzaWNhbCBj
b25uZWN0aW9uLgotICAgICAgICBzZWxmLl9jbG9zZV9jb2RlID0gY29tbW9uLlNUQVRVU19OT1JN
QUxfQ0xPU1VSRQotICAgICAgICAjIERlcXVlIGZvciBwYXNzaW5nIHdyaXRlIGRhdGEuIEl0J3Mg
cHJvdGVjdGVkIGJ5IF9kZXF1ZV9jb25kaXRpb24KLSAgICAgICAgIyB1bnRpbCBfc3RvcF9yZXF1
ZXN0ZWQgaXMgc2V0LgotICAgICAgICBzZWxmLl9kZXF1ZSA9IGNvbGxlY3Rpb25zLmRlcXVlKCkK
LSAgICAgICAgIyAtIFByb3RlY3RzIF9kZXF1ZSwgX3N0b3BfcmVxdWVzdGVkIGFuZCBfY2xvc2Vf
Y29kZQotICAgICAgICAjIC0gU2lnbmFscyB0aHJlYWRzIHdhaXRpbmcgZm9yIHRoZW0gdG8gYmUg
YXZhaWxhYmxlCi0gICAgICAgIHNlbGYuX2RlcXVlX2NvbmRpdGlvbiA9IHRocmVhZGluZy5Db25k
aXRpb24oKQotCi0gICAgZGVmIHB1dF9vdXRnb2luZ19kYXRhKHNlbGYsIGRhdGEpOgotICAgICAg
ICAiIiJQdXRzIG91dGdvaW5nIGRhdGEuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIGRh
dGE6IF9PdXRnb2luZ0RhdGEgaW5zdGFuY2UuCi0KLSAgICAgICAgUmFpc2VzOgotICAgICAgICAg
ICAgQmFkT3BlcmF0aW9uRXhjZXB0aW9uOiB3aGVuIHRoZSB0aHJlYWQgaGFzIGJlZW4gcmVxdWVz
dGVkIHRvCi0gICAgICAgICAgICAgICAgdGVybWluYXRlLgotICAgICAgICAiIiIKLQotICAgICAg
ICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9kZXF1ZV9jb25kaXRpb24uYWNxdWlyZSgpCi0gICAg
ICAgICAgICBpZiBzZWxmLl9zdG9wX3JlcXVlc3RlZDoKLSAgICAgICAgICAgICAgICByYWlzZSBC
YWRPcGVyYXRpb25FeGNlcHRpb24oJ0Nhbm5vdCB3cml0ZSBkYXRhIGFueW1vcmUnKQotCi0gICAg
ICAgICAgICBzZWxmLl9kZXF1ZS5hcHBlbmQoZGF0YSkKLSAgICAgICAgICAgIHNlbGYuX2RlcXVl
X2NvbmRpdGlvbi5ub3RpZnkoKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5f
ZGVxdWVfY29uZGl0aW9uLnJlbGVhc2UoKQotCi0gICAgZGVmIF93cml0ZV9kYXRhKHNlbGYsIG91
dGdvaW5nX2RhdGEpOgotICAgICAgICBtZXNzYWdlID0gKF9lbmNvZGVfY2hhbm5lbF9pZChvdXRn
b2luZ19kYXRhLmNoYW5uZWxfaWQpICsKLSAgICAgICAgICAgICAgICAgICBvdXRnb2luZ19kYXRh
LmRhdGEpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX211eF9oYW5kbGVyLnBoeXNp
Y2FsX3N0cmVhbS5zZW5kX21lc3NhZ2UoCi0gICAgICAgICAgICAgICAgbWVzc2FnZT1tZXNzYWdl
LCBlbmQ9VHJ1ZSwgYmluYXJ5PVRydWUpCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0g
ICAgICAgICAgICB1dGlsLnByZXBlbmRfbWVzc2FnZV90b19leGNlcHRpb24oCi0gICAgICAgICAg
ICAgICAgJ0ZhaWxlZCB0byBzZW5kIG1lc3NhZ2UgdG8gJXI6ICcgJQotICAgICAgICAgICAgICAg
IChzZWxmLl9tdXhfaGFuZGxlci5waHlzaWNhbF9jb25uZWN0aW9uLnJlbW90ZV9hZGRyLCksIGUp
Ci0gICAgICAgICAgICByYWlzZQotCi0gICAgICAgICMgVE9ETyhiYXNoaSk6IEl0IHdvdWxkIGJl
IGJldHRlciB0byBibG9jayB0aGUgdGhyZWFkIHRoYXQgc2VuZHMKLSAgICAgICAgIyBjb250cm9s
IGRhdGEgYXMgd2VsbC4KLSAgICAgICAgaWYgb3V0Z29pbmdfZGF0YS5jaGFubmVsX2lkICE9IF9D
T05UUk9MX0NIQU5ORUxfSUQ6Ci0gICAgICAgICAgICBzZWxmLl9tdXhfaGFuZGxlci5ub3RpZnlf
d3JpdGVfZGF0YV9kb25lKG91dGdvaW5nX2RhdGEuY2hhbm5lbF9pZCkKLQotICAgIGRlZiBydW4o
c2VsZik6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX2RlcXVlX2NvbmRpdGlvbi5h
Y3F1aXJlKCkKLSAgICAgICAgICAgIHdoaWxlIG5vdCBzZWxmLl9zdG9wX3JlcXVlc3RlZDoKLSAg
ICAgICAgICAgICAgICBpZiBsZW4oc2VsZi5fZGVxdWUpID09IDA6Ci0gICAgICAgICAgICAgICAg
ICAgIHNlbGYuX2RlcXVlX2NvbmRpdGlvbi53YWl0KCkKLSAgICAgICAgICAgICAgICAgICAgY29u
dGludWUKLQotICAgICAgICAgICAgICAgIG91dGdvaW5nX2RhdGEgPSBzZWxmLl9kZXF1ZS5wb3Bs
ZWZ0KCkKLQotICAgICAgICAgICAgICAgIHNlbGYuX2RlcXVlX2NvbmRpdGlvbi5yZWxlYXNlKCkK
LSAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9kYXRhKG91dGdvaW5nX2RhdGEpCi0gICAgICAg
ICAgICAgICAgc2VsZi5fZGVxdWVfY29uZGl0aW9uLmFjcXVpcmUoKQotCi0gICAgICAgICAgICAj
IEZsdXNoIGRlcXVlLgotICAgICAgICAgICAgIwotICAgICAgICAgICAgIyBBdCB0aGlzIHBvaW50
LCBzZWxmLl9kZXF1ZV9jb25kaXRpb24gaXMgYWx3YXlzIGFjcXVpcmVkLgotICAgICAgICAgICAg
dHJ5OgotICAgICAgICAgICAgICAgIHdoaWxlIGxlbihzZWxmLl9kZXF1ZSkgPiAwOgotICAgICAg
ICAgICAgICAgICAgICBvdXRnb2luZ19kYXRhID0gc2VsZi5fZGVxdWUucG9wbGVmdCgpCi0gICAg
ICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX2RhdGEob3V0Z29pbmdfZGF0YSkKLSAgICAgICAg
ICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fZGVxdWVfY29uZGl0aW9uLnJlbGVh
c2UoKQotCi0gICAgICAgICAgICAjIENsb3NlIHBoeXNpY2FsIGNvbm5lY3Rpb24uCi0gICAgICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgIyBEb24ndCB3YWl0IHRoZSByZXNwb25zZSBoZXJl
LiBUaGUgcmVzcG9uc2Ugd2lsbCBiZSByZWFkCi0gICAgICAgICAgICAgICAgIyBieSB0aGUgcmVh
ZGVyIHRocmVhZC4KLSAgICAgICAgICAgICAgICBzZWxmLl9tdXhfaGFuZGxlci5waHlzaWNhbF9z
dHJlYW0uY2xvc2VfY29ubmVjdGlvbigKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2xvc2Vf
Y29kZSwgd2FpdF9yZXNwb25zZT1GYWxzZSkKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24s
IGU6Ci0gICAgICAgICAgICAgICAgdXRpbC5wcmVwZW5kX21lc3NhZ2VfdG9fZXhjZXB0aW9uKAot
ICAgICAgICAgICAgICAgICAgICAnRmFpbGVkIHRvIGNsb3NlIHRoZSBwaHlzaWNhbCBjb25uZWN0
aW9uOiAlcicgJSBlKQotICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgIGZpbmFsbHk6Ci0g
ICAgICAgICAgICBzZWxmLl9tdXhfaGFuZGxlci5ub3RpZnlfd3JpdGVyX2RvbmUoKQotCi0gICAg
ZGVmIHN0b3Aoc2VsZiwgY2xvc2VfY29kZT1jb21tb24uU1RBVFVTX05PUk1BTF9DTE9TVVJFKToK
LSAgICAgICAgIiIiU3RvcHMgdGhlIHdyaXRlciB0aHJlYWQuIiIiCi0KLSAgICAgICAgc2VsZi5f
ZGVxdWVfY29uZGl0aW9uLmFjcXVpcmUoKQotICAgICAgICBzZWxmLl9zdG9wX3JlcXVlc3RlZCA9
IFRydWUKLSAgICAgICAgc2VsZi5fY2xvc2VfY29kZSA9IGNsb3NlX2NvZGUKLSAgICAgICAgc2Vs
Zi5fZGVxdWVfY29uZGl0aW9uLm5vdGlmeSgpCi0gICAgICAgIHNlbGYuX2RlcXVlX2NvbmRpdGlv
bi5yZWxlYXNlKCkKLQotCi1jbGFzcyBfUGh5c2ljYWxDb25uZWN0aW9uUmVhZGVyKHRocmVhZGlu
Zy5UaHJlYWQpOgotICAgICIiIkEgdGhyZWFkIHRoYXQgaXMgcmVzcG9uc2libGUgZm9yIHJlYWRp
bmcgZGF0YSBmcm9tIHBoeXNpY2FsIGNvbm5lY3Rpb24uCi0gICAgIiIiCi0KLSAgICBkZWYgX19p
bml0X18oc2VsZiwgbXV4X2hhbmRsZXIpOgotICAgICAgICAiIiJDb25zdHJ1Y3RzIGFuIGluc3Rh
bmNlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBtdXhfaGFuZGxlcjogX011eEhhbmRs
ZXIgaW5zdGFuY2UuCi0gICAgICAgICIiIgotCi0gICAgICAgIHRocmVhZGluZy5UaHJlYWQuX19p
bml0X18oc2VsZikKLSAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2Vy
KHNlbGYpCi0gICAgICAgIHNlbGYuX211eF9oYW5kbGVyID0gbXV4X2hhbmRsZXIKLSAgICAgICAg
c2VsZi5zZXREYWVtb24oVHJ1ZSkKLQotICAgIGRlZiBydW4oc2VsZik6Ci0gICAgICAgIHdoaWxl
IFRydWU6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcGh5c2ljYWxfc3RyZWFt
ID0gc2VsZi5fbXV4X2hhbmRsZXIucGh5c2ljYWxfc3RyZWFtCi0gICAgICAgICAgICAgICAgbWVz
c2FnZSA9IHBoeXNpY2FsX3N0cmVhbS5yZWNlaXZlX21lc3NhZ2UoKQotICAgICAgICAgICAgICAg
IGlmIG1lc3NhZ2UgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAg
ICAgICAgICAjIEJlbG93IGhhcHBlbnMgb25seSB3aGVuIGEgZGF0YSBtZXNzYWdlIGlzIHJlY2Vp
dmVkLgotICAgICAgICAgICAgICAgIG9wY29kZSA9IHBoeXNpY2FsX3N0cmVhbS5nZXRfbGFzdF9y
ZWNlaXZlZF9vcGNvZGUoKQotICAgICAgICAgICAgICAgIGlmIG9wY29kZSAhPSBjb21tb24uT1BD
T0RFX0JJTkFSWToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fbXV4X2hhbmRsZXIuZmFpbF9w
aHlzaWNhbF9jb25uZWN0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgX0RST1BfQ09ERV9J
TlZBTElEX0VOQ0FQU1VMQVRJTkdfTUVTU0FHRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdS
ZWNlaXZlZCBhIHRleHQgbWVzc2FnZSBvbiBwaHlzaWNhbCBjb25uZWN0aW9uJykKLSAgICAgICAg
ICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICAgICAgZXhjZXB0IENvbm5lY3Rpb25UZXJtaW5h
dGVkRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXMn
LCBlKQotICAgICAgICAgICAgICAgIGJyZWFrCi0KLSAgICAgICAgICAgIHRyeToKLSAgICAgICAg
ICAgICAgICBzZWxmLl9tdXhfaGFuZGxlci5kaXNwYXRjaF9tZXNzYWdlKG1lc3NhZ2UpCi0gICAg
ICAgICAgICBleGNlcHQgUGh5c2ljYWxDb25uZWN0aW9uRXJyb3IsIGU6Ci0gICAgICAgICAgICAg
ICAgc2VsZi5fbXV4X2hhbmRsZXIuZmFpbF9waHlzaWNhbF9jb25uZWN0aW9uKAotICAgICAgICAg
ICAgICAgICAgICBlLmRyb3BfY29kZSwgZS5tZXNzYWdlKQotICAgICAgICAgICAgICAgIGJyZWFr
Ci0gICAgICAgICAgICBleGNlcHQgTG9naWNhbENoYW5uZWxFcnJvciwgZToKLSAgICAgICAgICAg
ICAgICBzZWxmLl9tdXhfaGFuZGxlci5mYWlsX2xvZ2ljYWxfY2hhbm5lbCgKLSAgICAgICAgICAg
ICAgICAgICAgZS5jaGFubmVsX2lkLCBlLmRyb3BfY29kZSwgZS5tZXNzYWdlKQotICAgICAgICAg
ICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVi
dWcodHJhY2ViYWNrLmZvcm1hdF9leGMoKSkKLSAgICAgICAgICAgICAgICBicmVhawotCi0gICAg
ICAgIHNlbGYuX211eF9oYW5kbGVyLm5vdGlmeV9yZWFkZXJfZG9uZSgpCi0KLQotY2xhc3MgX1dv
cmtlcih0aHJlYWRpbmcuVGhyZWFkKToKLSAgICAiIiJBIHRocmVhZCB0aGF0IGlzIHJlc3BvbnNp
YmxlIGZvciBydW5uaW5nIHRoZSBjb3JyZXNwb25kaW5nIGFwcGxpY2F0aW9uCi0gICAgaGFuZGxl
ci4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtdXhfaGFuZGxlciwgcmVxdWVz
dCk6Ci0gICAgICAgICIiIkNvbnN0cnVjdHMgYW4gaW5zdGFuY2UuCi0KLSAgICAgICAgQXJnczoK
LSAgICAgICAgICAgIG11eF9oYW5kbGVyOiBfTXV4SGFuZGxlciBpbnN0YW5jZS4KLSAgICAgICAg
ICAgIHJlcXVlc3Q6IF9Mb2dpY2FsUmVxdWVzdCBpbnN0YW5jZS4KLSAgICAgICAgIiIiCi0KLSAg
ICAgICAgdGhyZWFkaW5nLlRocmVhZC5fX2luaXRfXyhzZWxmKQotICAgICAgICBzZWxmLl9sb2dn
ZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKLSAgICAgICAgc2VsZi5fbXV4X2hhbmRs
ZXIgPSBtdXhfaGFuZGxlcgotICAgICAgICBzZWxmLl9yZXF1ZXN0ID0gcmVxdWVzdAotICAgICAg
ICBzZWxmLnNldERhZW1vbihUcnVlKQotCi0gICAgZGVmIHJ1bihzZWxmKToKLSAgICAgICAgc2Vs
Zi5fbG9nZ2VyLmRlYnVnKCdMb2dpY2FsIGNoYW5uZWwgd29ya2VyIHN0YXJ0ZWQuIChpZD0lZCkn
ICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3QuY2hhbm5lbF9pZCkK
LSAgICAgICAgdHJ5OgotICAgICAgICAgICAgIyBOb24tY3JpdGljYWwgZXhjZXB0aW9ucyB3aWxs
IGJlIGhhbmRsZWQgYnkgZGlzcGF0Y2hlci4KLSAgICAgICAgICAgIHNlbGYuX211eF9oYW5kbGVy
LmRpc3BhdGNoZXIudHJhbnNmZXJfZGF0YShzZWxmLl9yZXF1ZXN0KQotICAgICAgICBleGNlcHQg
TG9naWNhbENoYW5uZWxFcnJvciwgZToKLSAgICAgICAgICAgIHNlbGYuX211eF9oYW5kbGVyLmZh
aWxfbG9naWNhbF9jaGFubmVsKAotICAgICAgICAgICAgICAgIGUuY2hhbm5lbF9pZCwgZS5kcm9w
X2NvZGUsIGUubWVzc2FnZSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX211
eF9oYW5kbGVyLm5vdGlmeV93b3JrZXJfZG9uZShzZWxmLl9yZXF1ZXN0LmNoYW5uZWxfaWQpCi0K
LQotY2xhc3MgX011eEhhbmRzaGFrZXIoaHliaS5IYW5kc2hha2VyKToKLSAgICAiIiJPcGVuaW5n
IGhhbmRzaGFrZSBwcm9jZXNzb3IgZm9yIG11bHRpcGxleGluZy4iIiIKLQotICAgIF9EVU1NWV9X
RUJTT0NLRVRfS0VZID0gJ2RHaGxJSE5oYlhCc1pTQnViMjVqWlE9PScKLQotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCByZXF1ZXN0LCBkaXNwYXRjaGVyLCBzZW5kX3F1b3RhLCByZWNlaXZlX3F1b3Rh
KToKLSAgICAgICAgIiIiQ29uc3RydWN0cyBhbiBpbnN0YW5jZS4KLSAgICAgICAgQXJnczoKLSAg
ICAgICAgICAgIHJlcXVlc3Q6IF9Mb2dpY2FsUmVxdWVzdCBpbnN0YW5jZS4KLSAgICAgICAgICAg
IGRpc3BhdGNoZXI6IERpc3BhdGNoZXIgaW5zdGFuY2UgKGRpc3BhdGNoLkRpc3BhdGNoZXIpLgot
ICAgICAgICAgICAgc2VuZF9xdW90YTogSW5pdGlhbCBzZW5kIHF1b3RhLgotICAgICAgICAgICAg
cmVjZWl2ZV9xdW90YTogSW5pdGlhbCByZWNlaXZlIHF1b3RhLgotICAgICAgICAiIiIKLQotICAg
ICAgICBoeWJpLkhhbmRzaGFrZXIuX19pbml0X18oc2VsZiwgcmVxdWVzdCwgZGlzcGF0Y2hlcikK
LSAgICAgICAgc2VsZi5fc2VuZF9xdW90YSA9IHNlbmRfcXVvdGEKLSAgICAgICAgc2VsZi5fcmVj
ZWl2ZV9xdW90YSA9IHJlY2VpdmVfcXVvdGEKLQotICAgICAgICAjIEFwcGVuZCBoZWFkZXJzIHdo
aWNoIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gaGFuZHNoYWtlIGZpZWxkIG9mCi0gICAgICAg
ICMgQWRkQ2hhbm5lbFJlcXVlc3QuCi0gICAgICAgICMgVE9ETyhiYXNoaSk6IE1ha2Ugc3VyZSB3
aGV0aGVyIHdlIHNob3VsZCByYWlzZSBleGNlcHRpb24gd2hlbgotICAgICAgICAjICAgICB0aGVz
ZSBoZWFkZXJzIGFyZSBpbmNsdWRlZCBhbHJlYWR5LgotICAgICAgICByZXF1ZXN0LmhlYWRlcnNf
aW5bY29tbW9uLlVQR1JBREVfSEVBREVSXSA9ICgKLSAgICAgICAgICAgIGNvbW1vbi5XRUJTT0NL
RVRfVVBHUkFERV9UWVBFKQotICAgICAgICByZXF1ZXN0LmhlYWRlcnNfaW5bY29tbW9uLlNFQ19X
RUJTT0NLRVRfVkVSU0lPTl9IRUFERVJdID0gKAotICAgICAgICAgICAgc3RyKGNvbW1vbi5WRVJT
SU9OX0hZQklfTEFURVNUKSkKLSAgICAgICAgcmVxdWVzdC5oZWFkZXJzX2luW2NvbW1vbi5TRUNf
V0VCU09DS0VUX0tFWV9IRUFERVJdID0gKAotICAgICAgICAgICAgc2VsZi5fRFVNTVlfV0VCU09D
S0VUX0tFWSkKLQotICAgIGRlZiBfY3JlYXRlX3N0cmVhbShzZWxmLCBzdHJlYW1fb3B0aW9ucyk6
Ci0gICAgICAgICIiIk92ZXJyaWRlIGh5YmkuSGFuZHNoYWtlci5fY3JlYXRlX3N0cmVhbS4iIiIK
LQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0NyZWF0aW5nIGxvZ2ljYWwgc3RyZWFtIGZv
ciAlZCcgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC5jaGFubmVs
X2lkKQotICAgICAgICByZXR1cm4gX0xvZ2ljYWxTdHJlYW0oCi0gICAgICAgICAgICBzZWxmLl9y
ZXF1ZXN0LCBzdHJlYW1fb3B0aW9ucywgc2VsZi5fc2VuZF9xdW90YSwKLSAgICAgICAgICAgIHNl
bGYuX3JlY2VpdmVfcXVvdGEpCi0KLSAgICBkZWYgX2NyZWF0ZV9oYW5kc2hha2VfcmVzcG9uc2Uo
c2VsZiwgYWNjZXB0KToKLSAgICAgICAgIiIiT3ZlcnJpZGUgaHliaS5fY3JlYXRlX2hhbmRzaGFr
ZV9yZXNwb25zZS4iIiIKLQotICAgICAgICByZXNwb25zZSA9IFtdCi0KLSAgICAgICAgcmVzcG9u
c2UuYXBwZW5kKCdIVFRQLzEuMSAxMDEgU3dpdGNoaW5nIFByb3RvY29sc1xyXG4nKQotCi0gICAg
ICAgICMgVXBncmFkZSBhbmQgU2VjLVdlYlNvY2tldC1BY2NlcHQgc2hvdWxkIGJlIGV4Y2x1ZGVk
LgotICAgICAgICByZXNwb25zZS5hcHBlbmQoJyVzOiAlc1xyXG4nICUgKAotICAgICAgICAgICAg
Y29tbW9uLkNPTk5FQ1RJT05fSEVBREVSLCBjb21tb24uVVBHUkFERV9DT05ORUNUSU9OX1RZUEUp
KQotICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0LndzX3Byb3RvY29sIGlzIG5vdCBOb25lOgotICAg
ICAgICAgICAgcmVzcG9uc2UuYXBwZW5kKCclczogJXNcclxuJyAlICgKLSAgICAgICAgICAgICAg
ICBjb21tb24uU0VDX1dFQlNPQ0tFVF9QUk9UT0NPTF9IRUFERVIsCi0gICAgICAgICAgICAgICAg
c2VsZi5fcmVxdWVzdC53c19wcm90b2NvbCkpCi0gICAgICAgIGlmIChzZWxmLl9yZXF1ZXN0Lndz
X2V4dGVuc2lvbnMgaXMgbm90IE5vbmUgYW5kCi0gICAgICAgICAgICBsZW4oc2VsZi5fcmVxdWVz
dC53c19leHRlbnNpb25zKSAhPSAwKToKLSAgICAgICAgICAgIHJlc3BvbnNlLmFwcGVuZCgnJXM6
ICVzXHJcbicgJSAoCi0gICAgICAgICAgICAgICAgY29tbW9uLlNFQ19XRUJTT0NLRVRfRVhURU5T
SU9OU19IRUFERVIsCi0gICAgICAgICAgICAgICAgY29tbW9uLmZvcm1hdF9leHRlbnNpb25zKHNl
bGYuX3JlcXVlc3Qud3NfZXh0ZW5zaW9ucykpKQotICAgICAgICByZXNwb25zZS5hcHBlbmQoJ1xy
XG4nKQotCi0gICAgICAgIHJldHVybiAnJy5qb2luKHJlc3BvbnNlKQotCi0gICAgZGVmIF9zZW5k
X2hhbmRzaGFrZShzZWxmLCBhY2NlcHQpOgotICAgICAgICAiIiJPdmVycmlkZSBoeWJpLkhhbmRz
aGFrZXIuX3NlbmRfaGFuZHNoYWtlLiIiIgotCi0gICAgICAgICMgRG9uJ3Qgc2VuZCBoYW5kc2hh
a2UgcmVzcG9uc2UgZm9yIHRoZSBkZWZhdWx0IGNoYW5uZWwKLSAgICAgICAgaWYgc2VsZi5fcmVx
dWVzdC5jaGFubmVsX2lkID09IF9ERUZBVUxUX0NIQU5ORUxfSUQ6Ci0gICAgICAgICAgICByZXR1
cm4KLQotICAgICAgICBoYW5kc2hha2VfcmVzcG9uc2UgPSBzZWxmLl9jcmVhdGVfaGFuZHNoYWtl
X3Jlc3BvbnNlKGFjY2VwdCkKLSAgICAgICAgZnJhbWVfZGF0YSA9IF9jcmVhdGVfYWRkX2NoYW5u
ZWxfcmVzcG9uc2UoCi0gICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC5jaGFu
bmVsX2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRzaGFrZV9yZXNwb25zZSkKLSAg
ICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdTZW5kaW5nIGhhbmRzaGFrZSByZXNwb25zZSBmb3Ig
JWQ6ICVyJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5fcmVxdWVzdC5jaGFu
bmVsX2lkLCBmcmFtZV9kYXRhKSkKLSAgICAgICAgc2VsZi5fcmVxdWVzdC5jb25uZWN0aW9uLndy
aXRlX2NvbnRyb2xfZGF0YShmcmFtZV9kYXRhKQotCi0KLWNsYXNzIF9Mb2dpY2FsQ2hhbm5lbERh
dGEob2JqZWN0KToKLSAgICAiIiJBIHN0cnVjdHVyZSB0aGF0IGhvbGRzIGluZm9ybWF0aW9uIGFi
b3V0IGxvZ2ljYWwgY2hhbm5lbC4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBy
ZXF1ZXN0LCB3b3JrZXIpOgotICAgICAgICBzZWxmLnJlcXVlc3QgPSByZXF1ZXN0Ci0gICAgICAg
IHNlbGYud29ya2VyID0gd29ya2VyCi0gICAgICAgIHNlbGYuZHJvcF9jb2RlID0gX0RST1BfQ09E
RV9OT1JNQUxfQ0xPU1VSRQotICAgICAgICBzZWxmLmRyb3BfbWVzc2FnZSA9ICcnCi0KLQotY2xh
c3MgX0hhbmRzaGFrZURlbHRhQmFzZShvYmplY3QpOgotICAgICIiIkEgY2xhc3MgdGhhdCBob2xk
cyBpbmZvcm1hdGlvbiBmb3IgZGVsdGEtZW5jb2RlZCBoYW5kc2hha2UuIiIiCi0KLSAgICBkZWYg
X19pbml0X18oc2VsZiwgaGVhZGVycyk6Ci0gICAgICAgIHNlbGYuX2hlYWRlcnMgPSBoZWFkZXJz
Ci0KLSAgICBkZWYgY3JlYXRlX2hlYWRlcnMoc2VsZiwgZGVsdGE9Tm9uZSk6Ci0gICAgICAgICIi
IkNyZWF0ZXMgcmVxdWVzdCBoZWFkZXJzIGZvciBhbiBBZGRDaGFubmVsUmVxdWVzdCB0aGF0IGhh
cwotICAgICAgICBkZWx0YS1lbmNvZGVkIGhhbmRzaGFrZS4KLQotICAgICAgICBBcmdzOgotICAg
ICAgICAgICAgZGVsdGE6IGhlYWRlcnMgc2hvdWxkIGJlIG92ZXJyaWRkZW4uCi0gICAgICAgICIi
IgotCi0gICAgICAgIGhlYWRlcnMgPSBjb3B5LmNvcHkoc2VsZi5faGVhZGVycykKLSAgICAgICAg
aWYgZGVsdGE6Ci0gICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBkZWx0YS5pdGVtcygpOgot
ICAgICAgICAgICAgICAgICMgVGhlIHNwZWMgcmVxdWlyZXMgdGhhdCBhIGhlYWRlciB3aXRoIGFu
IGVtcHR5IHZhbHVlIGlzCi0gICAgICAgICAgICAgICAgIyByZW1vdmVkIGZyb20gdGhlIGRlbHRh
IGJhc2UuCi0gICAgICAgICAgICAgICAgaWYgbGVuKHZhbHVlKSA9PSAwIGFuZCBoZWFkZXJzLmhh
c19rZXkoa2V5KToKLSAgICAgICAgICAgICAgICAgICAgZGVsIGhlYWRlcnNba2V5XQotICAgICAg
ICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGhlYWRlcnNba2V5XSA9IHZhbHVl
Ci0gICAgICAgIHJldHVybiBoZWFkZXJzCi0KLQotY2xhc3MgX011eEhhbmRsZXIob2JqZWN0KToK
LSAgICAiIiJNdWx0aXBsZXhpbmcgaGFuZGxlci4gV2hlbiBhIGhhbmRsZXIgc3RhcnRzLCBpdCBs
YXVuY2hlcyB0aHJlZQotICAgIHRocmVhZHM7IHRoZSByZWFkZXIgdGhyZWFkLCB0aGUgd3JpdGVy
IHRocmVhZCwgYW5kIGEgd29ya2VyIHRocmVhZC4KLQotICAgIFRoZSByZWFkZXIgdGhyZWFkIHJl
YWRzIGRhdGEgZnJvbSB0aGUgcGh5c2ljYWwgc3RyZWFtLCBpLmUuLCB0aGUKLSAgICB3c19zdHJl
YW0gb2JqZWN0IG9mIHRoZSB1bmRlcmx5aW5nIHdlYnNvY2tldCBjb25uZWN0aW9uLiBUaGUgcmVh
ZGVyCi0gICAgdGhyZWFkIGludGVycHJldHMgbXVsdGlwbGV4ZWQgZnJhbWVzIGFuZCBkaXNwYXRj
aGVzIHRoZW0gdG8gbG9naWNhbAotICAgIGNoYW5uZWxzLiBNZXRob2RzIG9mIHRoaXMgY2xhc3Mg
YXJlIG1vc3RseSBjYWxsZWQgYnkgdGhlIHJlYWRlciB0aHJlYWQuCi0KLSAgICBUaGUgd3JpdGVy
IHRocmVhZCBzZW5kcyBtdWx0aXBsZXhlZCBmcmFtZXMgd2hpY2ggYXJlIGNyZWF0ZWQgYnkKLSAg
ICBsb2dpY2FsIGNoYW5uZWxzIHZpYSB0aGUgcGh5c2ljYWwgY29ubmVjdGlvbi4KLQotICAgIFRo
ZSB3b3JrZXIgdGhyZWFkIGxhdW5jaGVkIGF0IHRoZSBzdGFydGluZyBwb2ludCBoYW5kbGVzIHRo
ZQotICAgICJJbXBsaWNpdGx5IE9wZW5lZCBDb25uZWN0aW9uIi4gSWYgbXVsdGlwbGV4aW5nIGhh
bmRsZXIgcmVjZWl2ZXMKLSAgICBhbiBBZGRDaGFubmVsUmVxdWVzdCBhbmQgYWNjZXB0cyBpdCwg
dGhlIGhhbmRsZXIgd2lsbCBsYXVuY2ggYSBuZXcgd29ya2VyCi0gICAgdGhyZWFkIGFuZCBkaXNw
YXRjaCB0aGUgcmVxdWVzdCB0byBpdC4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxm
LCByZXF1ZXN0LCBkaXNwYXRjaGVyKToKLSAgICAgICAgIiIiQ29uc3RydWN0cyBhbiBpbnN0YW5j
ZS4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgcmVxdWVzdDogbW9kX3B5dGhvbiByZXF1
ZXN0IG9mIHRoZSBwaHlzaWNhbCBjb25uZWN0aW9uLgotICAgICAgICAgICAgZGlzcGF0Y2hlcjog
RGlzcGF0Y2hlciBpbnN0YW5jZSAoZGlzcGF0Y2guRGlzcGF0Y2hlcikuCi0gICAgICAgICIiIgot
Ci0gICAgICAgIHNlbGYub3JpZ2luYWxfcmVxdWVzdCA9IHJlcXVlc3QKLSAgICAgICAgc2VsZi5k
aXNwYXRjaGVyID0gZGlzcGF0Y2hlcgotICAgICAgICBzZWxmLnBoeXNpY2FsX2Nvbm5lY3Rpb24g
PSByZXF1ZXN0LmNvbm5lY3Rpb24KLSAgICAgICAgc2VsZi5waHlzaWNhbF9zdHJlYW0gPSByZXF1
ZXN0LndzX3N0cmVhbQotICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dn
ZXIoc2VsZikKLSAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVscyA9IHt9Ci0gICAgICAgIHNl
bGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uID0gdGhyZWFkaW5nLkNvbmRpdGlvbigpCi0g
ICAgICAgICMgSG9sZHMgY2xpZW50J3MgaW5pdGlhbCBxdW90YQotICAgICAgICBzZWxmLl9jaGFu
bmVsX3Nsb3RzID0gY29sbGVjdGlvbnMuZGVxdWUoKQotICAgICAgICBzZWxmLl9oYW5kc2hha2Vf
YmFzZSA9IE5vbmUKLSAgICAgICAgc2VsZi5fd29ya2VyX2RvbmVfbm90aWZ5X3JlY2VpdmVkID0g
RmFsc2UKLSAgICAgICAgc2VsZi5fcmVhZGVyID0gTm9uZQotICAgICAgICBzZWxmLl93cml0ZXIg
PSBOb25lCi0KLSAgICBkZWYgc3RhcnQoc2VsZik6Ci0gICAgICAgICIiIlN0YXJ0cyB0aGUgaGFu
ZGxlci4KLQotICAgICAgICBSYWlzZXM6Ci0gICAgICAgICAgICBNdXhVbmV4cGVjdGVkRXhjZXB0
aW9uOiB3aGVuIHRoZSBoYW5kbGVyIGFscmVhZHkgc3RhcnRlZCwgb3Igd2hlbgotICAgICAgICAg
ICAgICAgIG9wZW5pbmcgaGFuZHNoYWtlIG9mIHRoZSBkZWZhdWx0IGNoYW5uZWwgZmFpbHMuCi0g
ICAgICAgICIiIgotCi0gICAgICAgIGlmIHNlbGYuX3JlYWRlciBvciBzZWxmLl93cml0ZXI6Ci0g
ICAgICAgICAgICByYWlzZSBNdXhVbmV4cGVjdGVkRXhjZXB0aW9uKCdNdXhIYW5kbGVyIGFscmVh
ZHkgc3RhcnRlZCcpCi0KLSAgICAgICAgc2VsZi5fcmVhZGVyID0gX1BoeXNpY2FsQ29ubmVjdGlv
blJlYWRlcihzZWxmKQotICAgICAgICBzZWxmLl93cml0ZXIgPSBfUGh5c2ljYWxDb25uZWN0aW9u
V3JpdGVyKHNlbGYpCi0gICAgICAgIHNlbGYuX3JlYWRlci5zdGFydCgpCi0gICAgICAgIHNlbGYu
X3dyaXRlci5zdGFydCgpCi0KLSAgICAgICAgIyBDcmVhdGUgIkltcGxpY2l0bHkgT3BlbmVkIENv
bm5lY3Rpb24iLgotICAgICAgICBsb2dpY2FsX2Nvbm5lY3Rpb24gPSBfTG9naWNhbENvbm5lY3Rp
b24oc2VsZiwgX0RFRkFVTFRfQ0hBTk5FTF9JRCkKLSAgICAgICAgaGVhZGVycyA9IGNvcHkuY29w
eShzZWxmLm9yaWdpbmFsX3JlcXVlc3QuaGVhZGVyc19pbikKLSAgICAgICAgIyBBZGQgZXh0ZW5z
aW9ucyBmb3IgbG9naWNhbCBjaGFubmVsLgotICAgICAgICBoZWFkZXJzW2NvbW1vbi5TRUNfV0VC
U09DS0VUX0VYVEVOU0lPTlNfSEVBREVSXSA9ICgKLSAgICAgICAgICAgIGNvbW1vbi5mb3JtYXRf
ZXh0ZW5zaW9ucygKLSAgICAgICAgICAgICAgICBzZWxmLm9yaWdpbmFsX3JlcXVlc3QubXV4X3By
b2Nlc3Nvci5leHRlbnNpb25zKCkpKQotICAgICAgICBzZWxmLl9oYW5kc2hha2VfYmFzZSA9IF9I
YW5kc2hha2VEZWx0YUJhc2UoaGVhZGVycykKLSAgICAgICAgbG9naWNhbF9yZXF1ZXN0ID0gX0xv
Z2ljYWxSZXF1ZXN0KAotICAgICAgICAgICAgX0RFRkFVTFRfQ0hBTk5FTF9JRCwKLSAgICAgICAg
ICAgIHNlbGYub3JpZ2luYWxfcmVxdWVzdC5tZXRob2QsCi0gICAgICAgICAgICBzZWxmLm9yaWdp
bmFsX3JlcXVlc3QudXJpLAotICAgICAgICAgICAgc2VsZi5vcmlnaW5hbF9yZXF1ZXN0LnByb3Rv
Y29sLAotICAgICAgICAgICAgc2VsZi5faGFuZHNoYWtlX2Jhc2UuY3JlYXRlX2hlYWRlcnMoKSwK
LSAgICAgICAgICAgIGxvZ2ljYWxfY29ubmVjdGlvbikKLSAgICAgICAgIyBDbGllbnQncyBzZW5k
IHF1b3RhIGZvciB0aGUgaW1wbGljaXRseSBvcGVuZWQgY29ubmVjdGlvbiBpcyB6ZXJvLAotICAg
ICAgICAjIGJ1dCB3ZSB3aWxsIHNlbmQgRmxvd0NvbnRyb2wgbGF0ZXIgc28gc2V0IHRoZSBpbml0
aWFsIHF1b3RhIHRvCi0gICAgICAgICMgX0lOSVRJQUxfUVVPVEFfRk9SX0NMSUVOVC4KLSAgICAg
ICAgc2VsZi5fY2hhbm5lbF9zbG90cy5hcHBlbmQoX0lOSVRJQUxfUVVPVEFfRk9SX0NMSUVOVCkK
LSAgICAgICAgc2VuZF9xdW90YSA9IHNlbGYub3JpZ2luYWxfcmVxdWVzdC5tdXhfcHJvY2Vzc29y
LnF1b3RhKCkKLSAgICAgICAgaWYgbm90IHNlbGYuX2RvX2hhbmRzaGFrZV9mb3JfbG9naWNhbF9y
ZXF1ZXN0KAotICAgICAgICAgICAgbG9naWNhbF9yZXF1ZXN0LCBzZW5kX3F1b3RhPXNlbmRfcXVv
dGEpOgotICAgICAgICAgICAgcmFpc2UgTXV4VW5leHBlY3RlZEV4Y2VwdGlvbigKLSAgICAgICAg
ICAgICAgICAnRmFpbGVkIGhhbmRzaGFrZSBvbiB0aGUgZGVmYXVsdCBjaGFubmVsIGlkJykKLSAg
ICAgICAgc2VsZi5fYWRkX2xvZ2ljYWxfY2hhbm5lbChsb2dpY2FsX3JlcXVlc3QpCi0KLSAgICAg
ICAgIyBTZW5kIEZsb3dDb250cm9sIGZvciB0aGUgaW1wbGljaXRseSBvcGVuZWQgY29ubmVjdGlv
bi4KLSAgICAgICAgZnJhbWVfZGF0YSA9IF9jcmVhdGVfZmxvd19jb250cm9sKF9ERUZBVUxUX0NI
QU5ORUxfSUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfSU5J
VElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotICAgICAgICBsb2dpY2FsX3JlcXVlc3QuY29ubmVjdGlv
bi53cml0ZV9jb250cm9sX2RhdGEoZnJhbWVfZGF0YSkKLQotICAgIGRlZiBhZGRfY2hhbm5lbF9z
bG90cyhzZWxmLCBzbG90cywgc2VuZF9xdW90YSk6Ci0gICAgICAgICIiIkFkZHMgY2hhbm5lbCBz
bG90cy4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgc2xvdHM6IG51bWJlciBvZiBzbG90
cyB0byBiZSBhZGRlZC4KLSAgICAgICAgICAgIHNlbmRfcXVvdGE6IGluaXRpYWwgc2VuZCBxdW90
YSBmb3Igc2xvdHMuCi0gICAgICAgICIiIgotCi0gICAgICAgIHNlbGYuX2NoYW5uZWxfc2xvdHMu
ZXh0ZW5kKFtzZW5kX3F1b3RhXSAqIHNsb3RzKQotICAgICAgICAjIFNlbmQgTmV3Q2hhbm5lbFNs
b3QgdG8gY2xpZW50LgotICAgICAgICBmcmFtZV9kYXRhID0gX2NyZWF0ZV9uZXdfY2hhbm5lbF9z
bG90KHNsb3RzLCBzZW5kX3F1b3RhKQotICAgICAgICBzZWxmLnNlbmRfY29udHJvbF9kYXRhKGZy
YW1lX2RhdGEpCi0KLSAgICBkZWYgd2FpdF91bnRpbF9kb25lKHNlbGYsIHRpbWVvdXQ9Tm9uZSk6
Ci0gICAgICAgICIiIldhaXRzIHVudGlsIGFsbCB3b3JrZXJzIGFyZSBkb25lLiBSZXR1cm5zIEZh
bHNlIHdoZW4gdGltZW91dCBoYXMKLSAgICAgICAgb2NjdXJyZWQuIFJldHVybnMgVHJ1ZSBvbiBz
dWNjZXNzLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICB0aW1lb3V0OiB0aW1lb3V0IGlu
IHNlYy4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25k
aXRpb24uYWNxdWlyZSgpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHdoaWxlIGxlbihzZWxm
Ll9sb2dpY2FsX2NoYW5uZWxzKSA+IDA6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRl
YnVnKCdXYWl0aW5nIHdvcmtlcnMoJWQpLi4uJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxlbihzZWxmLl9sb2dpY2FsX2NoYW5uZWxzKSkKLSAgICAgICAgICAgICAgICBz
ZWxmLl93b3JrZXJfZG9uZV9ub3RpZnlfcmVjZWl2ZWQgPSBGYWxzZQotICAgICAgICAgICAgICAg
IHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLndhaXQodGltZW91dCkKLSAgICAgICAg
ICAgICAgICBpZiBub3Qgc2VsZi5fd29ya2VyX2RvbmVfbm90aWZ5X3JlY2VpdmVkOgotICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1dhaXRpbmcgd29ya2VyKHMpIHRpbWVk
IG91dCcpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICBmaW5hbGx5
OgotICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24ucmVsZWFzZSgp
Ci0KLSAgICAgICAgIyBGbHVzaCBwZW5kaW5nIG91dGdvaW5nIGRhdGEKLSAgICAgICAgc2VsZi5f
d3JpdGVyLnN0b3AoKQotICAgICAgICBzZWxmLl93cml0ZXIuam9pbigpCi0KLSAgICAgICAgcmV0
dXJuIFRydWUKLQotICAgIGRlZiBub3RpZnlfd3JpdGVfZGF0YV9kb25lKHNlbGYsIGNoYW5uZWxf
aWQpOgotICAgICAgICAiIiJDYWxsZWQgYnkgdGhlIHdyaXRlciB0aHJlYWQgd2hlbiBhIHdyaXRl
IG9wZXJhdGlvbiBoYXMgZG9uZS4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgY2hhbm5l
bF9pZDogb2JqZWN0aXZlIGNoYW5uZWwgaWQuCi0gICAgICAgICIiIgotCi0gICAgICAgIHRyeToK
LSAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLmFjcXVpcmUoKQot
ICAgICAgICAgICAgaWYgY2hhbm5lbF9pZCBpbiBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzOgotICAg
ICAgICAgICAgICAgIGNoYW5uZWxfZGF0YSA9IHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNbY2hhbm5l
bF9pZF0KLSAgICAgICAgICAgICAgICBjaGFubmVsX2RhdGEucmVxdWVzdC5jb25uZWN0aW9uLm9u
X3dyaXRlX2RhdGFfZG9uZSgpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNl
bGYuX2xvZ2dlci5kZWJ1ZygnU2VlbXMgdGhhdCBsb2dpY2FsIGNoYW5uZWwgZm9yICVkIGhhcyBn
b25lJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGNoYW5uZWxfaWQpCi0g
ICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRp
dGlvbi5yZWxlYXNlKCkKLQotICAgIGRlZiBzZW5kX2NvbnRyb2xfZGF0YShzZWxmLCBkYXRhKToK
LSAgICAgICAgIiIiU2VuZHMgZGF0YSB2aWEgdGhlIGNvbnRyb2wgY2hhbm5lbC4KLQotICAgICAg
ICBBcmdzOgotICAgICAgICAgICAgZGF0YTogZGF0YSB0byBiZSBzZW50LgotICAgICAgICAiIiIK
LQotICAgICAgICBzZWxmLl93cml0ZXIucHV0X291dGdvaW5nX2RhdGEoX091dGdvaW5nRGF0YSgK
LSAgICAgICAgICAgICAgICBjaGFubmVsX2lkPV9DT05UUk9MX0NIQU5ORUxfSUQsIGRhdGE9ZGF0
YSkpCi0KLSAgICBkZWYgc2VuZF9kYXRhKHNlbGYsIGNoYW5uZWxfaWQsIGRhdGEpOgotICAgICAg
ICAiIiJTZW5kcyBkYXRhIHZpYSBnaXZlbiBsb2dpY2FsIGNoYW5uZWwuIFRoaXMgbWV0aG9kIGlz
IGNhbGxlZCBieQotICAgICAgICB3b3JrZXIgdGhyZWFkcy4KLQotICAgICAgICBBcmdzOgotICAg
ICAgICAgICAgY2hhbm5lbF9pZDogb2JqZWN0aXZlIGNoYW5uZWwgaWQuCi0gICAgICAgICAgICBk
YXRhOiBkYXRhIHRvIGJlIHNlbnQuCi0gICAgICAgICIiIgotCi0gICAgICAgIHNlbGYuX3dyaXRl
ci5wdXRfb3V0Z29pbmdfZGF0YShfT3V0Z29pbmdEYXRhKAotICAgICAgICAgICAgICAgIGNoYW5u
ZWxfaWQ9Y2hhbm5lbF9pZCwgZGF0YT1kYXRhKSkKLQotICAgIGRlZiBfc2VuZF9kcm9wX2NoYW5u
ZWwoc2VsZiwgY2hhbm5lbF9pZCwgY29kZT1Ob25lLCBtZXNzYWdlPScnKToKLSAgICAgICAgZnJh
bWVfZGF0YSA9IF9jcmVhdGVfZHJvcF9jaGFubmVsKGNoYW5uZWxfaWQsIGNvZGUsIG1lc3NhZ2Up
Ci0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICdTZW5kaW5nIGRyb3Ag
Y2hhbm5lbCBmb3IgY2hhbm5lbCBpZCAlZCcgJSBjaGFubmVsX2lkKQotICAgICAgICBzZWxmLnNl
bmRfY29udHJvbF9kYXRhKGZyYW1lX2RhdGEpCi0KLSAgICBkZWYgX3NlbmRfZXJyb3JfYWRkX2No
YW5uZWxfcmVzcG9uc2Uoc2VsZiwgY2hhbm5lbF9pZCwgc3RhdHVzPU5vbmUpOgotICAgICAgICBp
ZiBzdGF0dXMgaXMgTm9uZToKLSAgICAgICAgICAgIHN0YXR1cyA9IGNvbW1vbi5IVFRQX1NUQVRV
U19CQURfUkVRVUVTVAotCi0gICAgICAgIGlmIHN0YXR1cyBpbiBfSFRUUF9CQURfUkVTUE9OU0Vf
TUVTU0FHRVM6Ci0gICAgICAgICAgICBtZXNzYWdlID0gX0hUVFBfQkFEX1JFU1BPTlNFX01FU1NB
R0VTW3N0YXR1c10KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1
ZygnUmVzcG9uc2UgbWVzc2FnZSBmb3IgJWQgaXMgbm90IGZvdW5kJyAlIHN0YXR1cykKLSAgICAg
ICAgICAgIG1lc3NhZ2UgPSAnPz8/JwotCi0gICAgICAgIHJlc3BvbnNlID0gJ0hUVFAvMS4xICVk
ICVzXHJcblxyXG4nICUgKHN0YXR1cywgbWVzc2FnZSkKLSAgICAgICAgZnJhbWVfZGF0YSA9IF9j
cmVhdGVfYWRkX2NoYW5uZWxfcmVzcG9uc2UoY2hhbm5lbF9pZCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2U9cmVzcG9u
c2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVu
Y29kaW5nPTAsIHJlamVjdGVkPVRydWUpCi0gICAgICAgIHNlbGYuc2VuZF9jb250cm9sX2RhdGEo
ZnJhbWVfZGF0YSkKLQotICAgIGRlZiBfY3JlYXRlX2xvZ2ljYWxfcmVxdWVzdChzZWxmLCBibG9j
ayk6Ci0gICAgICAgIGlmIGJsb2NrLmNoYW5uZWxfaWQgPT0gX0NPTlRST0xfQ0hBTk5FTF9JRDoK
LSAgICAgICAgICAgICMgVE9ETyhiYXNoaSk6IFJhaXNlIFBoeXNpY2FsQ29ubmVjdGlvbkVycm9y
IHdpdGggY29kZSAyMDA2Ci0gICAgICAgICAgICAjIGluc3RlYWQgb2YgTXV4VW5leHBlY3RlZEV4
Y2VwdGlvbi4KLSAgICAgICAgICAgIHJhaXNlIE11eFVuZXhwZWN0ZWRFeGNlcHRpb24oCi0gICAg
ICAgICAgICAgICAgJ1JlY2VpdmVkIHRoZSBjb250cm9sIGNoYW5uZWwgaWQgKDApIGFzIG9iamVj
dGl2ZSBjaGFubmVsICcKLSAgICAgICAgICAgICAgICAnaWQgZm9yIEFkZENoYW5uZWwnKQotCi0g
ICAgICAgIGlmIGJsb2NrLmVuY29kaW5nID4gX0hBTkRTSEFLRV9FTkNPRElOR19ERUxUQToKLSAg
ICAgICAgICAgIHJhaXNlIFBoeXNpY2FsQ29ubmVjdGlvbkVycm9yKAotICAgICAgICAgICAgICAg
IF9EUk9QX0NPREVfVU5LTk9XTl9SRVFVRVNUX0VOQ09ESU5HKQotCi0gICAgICAgIG1ldGhvZCwg
cGF0aCwgdmVyc2lvbiwgaGVhZGVycyA9IF9wYXJzZV9yZXF1ZXN0X3RleHQoCi0gICAgICAgICAg
ICBibG9jay5lbmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgaWYgYmxvY2suZW5jb2RpbmcgPT0g
X0hBTkRTSEFLRV9FTkNPRElOR19ERUxUQToKLSAgICAgICAgICAgIGhlYWRlcnMgPSBzZWxmLl9o
YW5kc2hha2VfYmFzZS5jcmVhdGVfaGVhZGVycyhoZWFkZXJzKQotCi0gICAgICAgIGNvbm5lY3Rp
b24gPSBfTG9naWNhbENvbm5lY3Rpb24oc2VsZiwgYmxvY2suY2hhbm5lbF9pZCkKLSAgICAgICAg
cmVxdWVzdCA9IF9Mb2dpY2FsUmVxdWVzdChibG9jay5jaGFubmVsX2lkLCBtZXRob2QsIHBhdGgs
IHZlcnNpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVycywgY29u
bmVjdGlvbikKLSAgICAgICAgcmV0dXJuIHJlcXVlc3QKLQotICAgIGRlZiBfZG9faGFuZHNoYWtl
X2Zvcl9sb2dpY2FsX3JlcXVlc3Qoc2VsZiwgcmVxdWVzdCwgc2VuZF9xdW90YT0wKToKLSAgICAg
ICAgdHJ5OgotICAgICAgICAgICAgcmVjZWl2ZV9xdW90YSA9IHNlbGYuX2NoYW5uZWxfc2xvdHMu
cG9wbGVmdCgpCi0gICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgotICAgICAgICAgICAgcmFpc2Ug
TG9naWNhbENoYW5uZWxFcnJvcigKLSAgICAgICAgICAgICAgICByZXF1ZXN0LmNoYW5uZWxfaWQs
IF9EUk9QX0NPREVfTkVXX0NIQU5ORUxfU0xPVF9WSU9MQVRJT04pCi0KLSAgICAgICAgaGFuZHNo
YWtlciA9IF9NdXhIYW5kc2hha2VyKHJlcXVlc3QsIHNlbGYuZGlzcGF0Y2hlciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRfcXVvdGEsIHJlY2VpdmVfcXVvdGEpCi0g
ICAgICAgIHRyeToKLSAgICAgICAgICAgIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKCkKLSAgICAg
ICAgZXhjZXB0IGhhbmRzaGFrZS5WZXJzaW9uRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgc2Vs
Zi5fbG9nZ2VyLmluZm8oJyVzJywgZSkKLSAgICAgICAgICAgIHNlbGYuX3NlbmRfZXJyb3JfYWRk
X2NoYW5uZWxfcmVzcG9uc2UoCi0gICAgICAgICAgICAgICAgcmVxdWVzdC5jaGFubmVsX2lkLCBz
dGF0dXM9Y29tbW9uLkhUVFBfU1RBVFVTX0JBRF9SRVFVRVNUKQotICAgICAgICAgICAgcmV0dXJu
IEZhbHNlCi0gICAgICAgIGV4Y2VwdCBoYW5kc2hha2UuSGFuZHNoYWtlRXhjZXB0aW9uLCBlOgot
ICAgICAgICAgICAgIyBUT0RPKGJhc2hpKTogU2hvdWxkIHdlIF9GYWlsIHRoZSBMb2dpY2FsIENo
YW5uZWxfIHdpdGggMzAwMQotICAgICAgICAgICAgIyBpbnN0ZWFkPwotICAgICAgICAgICAgc2Vs
Zi5fbG9nZ2VyLmluZm8oJyVzJywgZSkKLSAgICAgICAgICAgIHNlbGYuX3NlbmRfZXJyb3JfYWRk
X2NoYW5uZWxfcmVzcG9uc2UocmVxdWVzdC5jaGFubmVsX2lkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM9ZS5zdGF0dXMpCi0gICAgICAg
ICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgZXhjZXB0IGhhbmRzaGFrZS5BYm9ydGVkQnlVc2Vy
RXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJyVzJywgZSkKLSAg
ICAgICAgICAgIHNlbGYuX3NlbmRfZXJyb3JfYWRkX2NoYW5uZWxfcmVzcG9uc2UocmVxdWVzdC5j
aGFubmVsX2lkKQotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgcmV0dXJuIFRy
dWUKLQotICAgIGRlZiBfYWRkX2xvZ2ljYWxfY2hhbm5lbChzZWxmLCBsb2dpY2FsX3JlcXVlc3Qp
OgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRp
dGlvbi5hY3F1aXJlKCkKLSAgICAgICAgICAgIGlmIGxvZ2ljYWxfcmVxdWVzdC5jaGFubmVsX2lk
IGluIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHM6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2Vy
LmRlYnVnKCdDaGFubmVsIGlkICVkIGFscmVhZHkgZXhpc3RzJyAlCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxfcmVxdWVzdC5jaGFubmVsX2lkKQotICAgICAgICAg
ICAgICAgIHJhaXNlIFBoeXNpY2FsQ29ubmVjdGlvbkVycm9yKAotICAgICAgICAgICAgICAgICAg
ICBfRFJPUF9DT0RFX0NIQU5ORUxfQUxSRUFEWV9FWElTVFMsCi0gICAgICAgICAgICAgICAgICAg
ICdDaGFubmVsIGlkICVkIGFscmVhZHkgZXhpc3RzJyAlCi0gICAgICAgICAgICAgICAgICAgIGxv
Z2ljYWxfcmVxdWVzdC5jaGFubmVsX2lkKQotICAgICAgICAgICAgd29ya2VyID0gX1dvcmtlcihz
ZWxmLCBsb2dpY2FsX3JlcXVlc3QpCi0gICAgICAgICAgICBjaGFubmVsX2RhdGEgPSBfTG9naWNh
bENoYW5uZWxEYXRhKGxvZ2ljYWxfcmVxdWVzdCwgd29ya2VyKQotICAgICAgICAgICAgc2VsZi5f
bG9naWNhbF9jaGFubmVsc1tsb2dpY2FsX3JlcXVlc3QuY2hhbm5lbF9pZF0gPSBjaGFubmVsX2Rh
dGEKLSAgICAgICAgICAgIHdvcmtlci5zdGFydCgpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAg
ICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5yZWxlYXNlKCkKLQotICAgIGRl
ZiBfcHJvY2Vzc19hZGRfY2hhbm5lbF9yZXF1ZXN0KHNlbGYsIGJsb2NrKToKLSAgICAgICAgdHJ5
OgotICAgICAgICAgICAgbG9naWNhbF9yZXF1ZXN0ID0gc2VsZi5fY3JlYXRlX2xvZ2ljYWxfcmVx
dWVzdChibG9jaykKLSAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IsIGU6Ci0gICAgICAgICAgICBz
ZWxmLl9sb2dnZXIuZGVidWcoJ0ZhaWxlZCB0byBjcmVhdGUgbG9naWNhbCByZXF1ZXN0OiAlcicg
JSBlKQotICAgICAgICAgICAgc2VsZi5fc2VuZF9lcnJvcl9hZGRfY2hhbm5lbF9yZXNwb25zZSgK
LSAgICAgICAgICAgICAgICBibG9jay5jaGFubmVsX2lkLCBzdGF0dXM9Y29tbW9uLkhUVFBfU1RB
VFVTX0JBRF9SRVFVRVNUKQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGlmIHNlbGYuX2Rv
X2hhbmRzaGFrZV9mb3JfbG9naWNhbF9yZXF1ZXN0KGxvZ2ljYWxfcmVxdWVzdCk6Ci0gICAgICAg
ICAgICBpZiBibG9jay5lbmNvZGluZyA9PSBfSEFORFNIQUtFX0VOQ09ESU5HX0lERU5USVRZOgot
ICAgICAgICAgICAgICAgICMgVXBkYXRlIGhhbmRzaGFrZSBiYXNlLgotICAgICAgICAgICAgICAg
ICMgVE9ETyhiYXNoaSk6IE1ha2Ugc3VyZSB0aGlzIGlzIHRoZSByaWdodCBwbGFjZSB0byB1cGRh
dGUKLSAgICAgICAgICAgICAgICAjIGhhbmRzaGFrZSBiYXNlLgotICAgICAgICAgICAgICAgIHNl
bGYuX2hhbmRzaGFrZV9iYXNlID0gX0hhbmRzaGFrZURlbHRhQmFzZSgKLSAgICAgICAgICAgICAg
ICAgICAgbG9naWNhbF9yZXF1ZXN0LmhlYWRlcnNfaW4pCi0gICAgICAgICAgICBzZWxmLl9hZGRf
bG9naWNhbF9jaGFubmVsKGxvZ2ljYWxfcmVxdWVzdCkKLSAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgIHNlbGYuX3NlbmRfZXJyb3JfYWRkX2NoYW5uZWxfcmVzcG9uc2UoCi0gICAgICAgICAgICAg
ICAgYmxvY2suY2hhbm5lbF9pZCwgc3RhdHVzPWNvbW1vbi5IVFRQX1NUQVRVU19CQURfUkVRVUVT
VCkKLQotICAgIGRlZiBfcHJvY2Vzc19mbG93X2NvbnRyb2woc2VsZiwgYmxvY2spOgotICAgICAg
ICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5hY3F1
aXJlKCkKLSAgICAgICAgICAgIGlmIG5vdCBibG9jay5jaGFubmVsX2lkIGluIHNlbGYuX2xvZ2lj
YWxfY2hhbm5lbHM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICBjaGFubmVs
X2RhdGEgPSBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzW2Jsb2NrLmNoYW5uZWxfaWRdCi0gICAgICAg
ICAgICBjaGFubmVsX2RhdGEucmVxdWVzdC53c19zdHJlYW0ucmVwbGVuaXNoX3NlbmRfcXVvdGEo
Ci0gICAgICAgICAgICAgICAgYmxvY2suc2VuZF9xdW90YSkKLSAgICAgICAgZmluYWxseToKLSAg
ICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLnJlbGVhc2UoKQotCi0g
ICAgZGVmIF9wcm9jZXNzX2Ryb3BfY2hhbm5lbChzZWxmLCBibG9jayk6Ci0gICAgICAgIHNlbGYu
X2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICdEcm9wQ2hhbm5lbCByZWNlaXZlZCBmb3IgJWQ6
IGNvZGU9JXIsIHJlYXNvbj0lcicgJQotICAgICAgICAgICAgKGJsb2NrLmNoYW5uZWxfaWQsIGJs
b2NrLmRyb3BfY29kZSwgYmxvY2suZHJvcF9tZXNzYWdlKSkKLSAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAg
ICAgICBpZiBub3QgYmxvY2suY2hhbm5lbF9pZCBpbiBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzOgot
ICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgY2hhbm5lbF9kYXRhID0gc2VsZi5f
bG9naWNhbF9jaGFubmVsc1tibG9jay5jaGFubmVsX2lkXQotICAgICAgICAgICAgY2hhbm5lbF9k
YXRhLmRyb3BfY29kZSA9IF9EUk9QX0NPREVfQUNLTk9XTEVER0VECi0KLSAgICAgICAgICAgICMg
Q2xvc2UgdGhlIGxvZ2ljYWwgY2hhbm5lbAotICAgICAgICAgICAgY2hhbm5lbF9kYXRhLnJlcXVl
c3QuY29ubmVjdGlvbi5zZXRfcmVhZF9zdGF0ZSgKLSAgICAgICAgICAgICAgICBfTG9naWNhbENv
bm5lY3Rpb24uU1RBVEVfVEVSTUlOQVRFRCkKLSAgICAgICAgICAgIGNoYW5uZWxfZGF0YS5yZXF1
ZXN0LndzX3N0cmVhbS5zdG9wX3NlbmRpbmcoKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAg
ICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24ucmVsZWFzZSgpCi0KLSAgICBkZWYg
X3Byb2Nlc3NfY29udHJvbF9ibG9ja3Moc2VsZiwgcGFyc2VyKToKLSAgICAgICAgZm9yIGNvbnRy
b2xfYmxvY2sgaW4gcGFyc2VyLnJlYWRfY29udHJvbF9ibG9ja3MoKToKLSAgICAgICAgICAgIG9w
Y29kZSA9IGNvbnRyb2xfYmxvY2sub3Bjb2RlCi0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVi
dWcoJ2NvbnRyb2wgYmxvY2sgcmVjZWl2ZWQsIG9wY29kZTogJWQnICUgb3Bjb2RlKQotICAgICAg
ICAgICAgaWYgb3Bjb2RlID09IF9NVVhfT1BDT0RFX0FERF9DSEFOTkVMX1JFUVVFU1Q6Ci0gICAg
ICAgICAgICAgICAgc2VsZi5fcHJvY2Vzc19hZGRfY2hhbm5lbF9yZXF1ZXN0KGNvbnRyb2xfYmxv
Y2spCi0gICAgICAgICAgICBlbGlmIG9wY29kZSA9PSBfTVVYX09QQ09ERV9BRERfQ0hBTk5FTF9S
RVNQT05TRToKLSAgICAgICAgICAgICAgICByYWlzZSBQaHlzaWNhbENvbm5lY3Rpb25FcnJvcigK
LSAgICAgICAgICAgICAgICAgICAgX0RST1BfQ09ERV9JTlZBTElEX01VWF9DT05UUk9MX0JMT0NL
LAotICAgICAgICAgICAgICAgICAgICAnUmVjZWl2ZWQgQWRkQ2hhbm5lbFJlc3BvbnNlJykKLSAg
ICAgICAgICAgIGVsaWYgb3Bjb2RlID09IF9NVVhfT1BDT0RFX0ZMT1dfQ09OVFJPTDoKLSAgICAg
ICAgICAgICAgICBzZWxmLl9wcm9jZXNzX2Zsb3dfY29udHJvbChjb250cm9sX2Jsb2NrKQotICAg
ICAgICAgICAgZWxpZiBvcGNvZGUgPT0gX01VWF9PUENPREVfRFJPUF9DSEFOTkVMOgotICAgICAg
ICAgICAgICAgIHNlbGYuX3Byb2Nlc3NfZHJvcF9jaGFubmVsKGNvbnRyb2xfYmxvY2spCi0gICAg
ICAgICAgICBlbGlmIG9wY29kZSA9PSBfTVVYX09QQ09ERV9ORVdfQ0hBTk5FTF9TTE9UOgotICAg
ICAgICAgICAgICAgIHJhaXNlIFBoeXNpY2FsQ29ubmVjdGlvbkVycm9yKAotICAgICAgICAgICAg
ICAgICAgICBfRFJPUF9DT0RFX0lOVkFMSURfTVVYX0NPTlRST0xfQkxPQ0ssCi0gICAgICAgICAg
ICAgICAgICAgICdSZWNlaXZlZCBOZXdDaGFubmVsU2xvdCcpCi0gICAgICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgICAgIHJhaXNlIE11eFVuZXhwZWN0ZWRFeGNlcHRpb24oCi0gICAgICAgICAg
ICAgICAgICAgICdVbmV4cGVjdGVkIG9wY29kZSAlcicgJSBvcGNvZGUpCi0KLSAgICBkZWYgX3By
b2Nlc3NfbG9naWNhbF9mcmFtZShzZWxmLCBjaGFubmVsX2lkLCBwYXJzZXIpOgotICAgICAgICBz
ZWxmLl9sb2dnZXIuZGVidWcoJ1JlY2VpdmVkIGEgZnJhbWUuIGNoYW5uZWwgaWQ9JWQnICUgY2hh
bm5lbF9pZCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVs
c19jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgICAgICBpZiBub3QgY2hhbm5lbF9pZCBpbiBz
ZWxmLl9sb2dpY2FsX2NoYW5uZWxzOgotICAgICAgICAgICAgICAgICMgV2UgbXVzdCBpZ25vcmUg
dGhlIG1lc3NhZ2UgZm9yIGFuIGluYWN0aXZlIGNoYW5uZWwuCi0gICAgICAgICAgICAgICAgcmV0
dXJuCi0gICAgICAgICAgICBjaGFubmVsX2RhdGEgPSBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzW2No
YW5uZWxfaWRdCi0gICAgICAgICAgICBmaW4sIHJzdjEsIHJzdjIsIHJzdjMsIG9wY29kZSwgcGF5
bG9hZCA9IHBhcnNlci5yZWFkX2lubmVyX2ZyYW1lKCkKLSAgICAgICAgICAgIGNvbnN1bWluZ19i
eXRlID0gbGVuKHBheWxvYWQpCi0gICAgICAgICAgICBpZiBvcGNvZGUgIT0gY29tbW9uLk9QQ09E
RV9DT05USU5VQVRJT046Ci0gICAgICAgICAgICAgICAgY29uc3VtaW5nX2J5dGUgKz0gMQotICAg
ICAgICAgICAgaWYgbm90IGNoYW5uZWxfZGF0YS5yZXF1ZXN0LndzX3N0cmVhbS5jb25zdW1lX3Jl
Y2VpdmVfcXVvdGEoCi0gICAgICAgICAgICAgICAgY29uc3VtaW5nX2J5dGUpOgotICAgICAgICAg
ICAgICAgICMgVGhlIGNsaWVudCB2aW9sYXRlcyBxdW90YS4gQ2xvc2UgbG9naWNhbCBjaGFubmVs
LgotICAgICAgICAgICAgICAgIHJhaXNlIExvZ2ljYWxDaGFubmVsRXJyb3IoCi0gICAgICAgICAg
ICAgICAgICAgIGNoYW5uZWxfaWQsIF9EUk9QX0NPREVfU0VORF9RVU9UQV9WSU9MQVRJT04pCi0g
ICAgICAgICAgICBoZWFkZXIgPSBjcmVhdGVfaGVhZGVyKG9wY29kZSwgbGVuKHBheWxvYWQpLCBm
aW4sIHJzdjEsIHJzdjIsIHJzdjMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1hc2s9RmFsc2UpCi0gICAgICAgICAgICBmcmFtZV9kYXRhID0gaGVhZGVyICsgcGF5bG9hZAot
ICAgICAgICAgICAgY2hhbm5lbF9kYXRhLnJlcXVlc3QuY29ubmVjdGlvbi5hcHBlbmRfZnJhbWVf
ZGF0YShmcmFtZV9kYXRhKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fbG9n
aWNhbF9jaGFubmVsc19jb25kaXRpb24ucmVsZWFzZSgpCi0KLSAgICBkZWYgZGlzcGF0Y2hfbWVz
c2FnZShzZWxmLCBtZXNzYWdlKToKLSAgICAgICAgIiIiRGlzcGF0Y2hlcyBtZXNzYWdlLiBUaGUg
cmVhZGVyIHRocmVhZCBjYWxscyB0aGlzIG1ldGhvZC4KLQotICAgICAgICBBcmdzOgotICAgICAg
ICAgICAgbWVzc2FnZTogYSBtZXNzYWdlIHRoYXQgY29udGFpbnMgZW5jYXBzdWxhdGVkIGZyYW1l
LgotICAgICAgICBSYWlzZXM6Ci0gICAgICAgICAgICBQaHlzaWNhbENvbm5lY3Rpb25FcnJvcjog
aWYgdGhlIG1lc3NhZ2UgY29udGFpbnMgcGh5c2ljYWwKLSAgICAgICAgICAgICAgICBjb25uZWN0
aW9uIGxldmVsIGVycm9ycy4KLSAgICAgICAgICAgIExvZ2ljYWxDaGFubmVsRXJyb3I6IGlmIHRo
ZSBtZXNzYWdlIGNvbnRhaW5zIGxvZ2ljYWwgY2hhbm5lbAotICAgICAgICAgICAgICAgIGxldmVs
IGVycm9ycy4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgcGFyc2VyID0gX011eEZyYW1lUGF5bG9h
ZFBhcnNlcihtZXNzYWdlKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBjaGFubmVsX2lkID0g
cGFyc2VyLnJlYWRfY2hhbm5lbF9pZCgpCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yLCBlOgot
ICAgICAgICAgICAgcmFpc2UgUGh5c2ljYWxDb25uZWN0aW9uRXJyb3IoX0RST1BfQ09ERV9DSEFO
TkVMX0lEX1RSVU5DQVRFRCkKLSAgICAgICAgaWYgY2hhbm5lbF9pZCA9PSBfQ09OVFJPTF9DSEFO
TkVMX0lEOgotICAgICAgICAgICAgc2VsZi5fcHJvY2Vzc19jb250cm9sX2Jsb2NrcyhwYXJzZXIp
Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLl9wcm9jZXNzX2xvZ2ljYWxfZnJhbWUo
Y2hhbm5lbF9pZCwgcGFyc2VyKQotCi0gICAgZGVmIG5vdGlmeV93b3JrZXJfZG9uZShzZWxmLCBj
aGFubmVsX2lkKToKLSAgICAgICAgIiIiQ2FsbGVkIHdoZW4gYSB3b3JrZXIgaGFzIGZpbmlzaGVk
LgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBjaGFubmVsX2lkOiBjaGFubmVsIGlkIGNv
cnJlc3BvbmRlZCB3aXRoIHRoZSB3b3JrZXIuCi0gICAgICAgICIiIgotCi0gICAgICAgIHNlbGYu
X2xvZ2dlci5kZWJ1ZygnV29ya2VyIGZvciBjaGFubmVsIGlkICVkIHRlcm1pbmF0ZWQnICUgY2hh
bm5lbF9pZCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVs
c19jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgICAgICBpZiBub3QgY2hhbm5lbF9pZCBpbiBz
ZWxmLl9sb2dpY2FsX2NoYW5uZWxzOgotICAgICAgICAgICAgICAgIHJhaXNlIE11eFVuZXhwZWN0
ZWRFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICAgICdDaGFubmVsIGlkICVkIG5vdCBmb3Vu
ZCcgJSBjaGFubmVsX2lkKQotICAgICAgICAgICAgY2hhbm5lbF9kYXRhID0gc2VsZi5fbG9naWNh
bF9jaGFubmVscy5wb3AoY2hhbm5lbF9pZCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAg
IHNlbGYuX3dvcmtlcl9kb25lX25vdGlmeV9yZWNlaXZlZCA9IFRydWUKLSAgICAgICAgICAgIHNl
bGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLm5vdGlmeSgpCi0gICAgICAgICAgICBzZWxm
Ll9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5yZWxlYXNlKCkKLQotICAgICAgICBpZiBub3Qg
Y2hhbm5lbF9kYXRhLnJlcXVlc3Quc2VydmVyX3Rlcm1pbmF0ZWQ6Ci0gICAgICAgICAgICBzZWxm
Ll9zZW5kX2Ryb3BfY2hhbm5lbCgKLSAgICAgICAgICAgICAgICBjaGFubmVsX2lkLCBjb2RlPWNo
YW5uZWxfZGF0YS5kcm9wX2NvZGUsCi0gICAgICAgICAgICAgICAgbWVzc2FnZT1jaGFubmVsX2Rh
dGEuZHJvcF9tZXNzYWdlKQotCi0gICAgZGVmIG5vdGlmeV9yZWFkZXJfZG9uZShzZWxmKToKLSAg
ICAgICAgIiIiVGhpcyBtZXRob2QgaXMgY2FsbGVkIGJ5IHRoZSByZWFkZXIgdGhyZWFkIHdoZW4g
dGhlIHJlYWRlciBoYXMKLSAgICAgICAgZmluaXNoZWQuCi0gICAgICAgICIiIgotCi0gICAgICAg
IHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICdUZXJtaWF0aW5nIGFsbCBsb2dpY2Fs
IGNvbm5lY3Rpb25zIHdhaXRpbmcgZm9yIGluY29taW5nIGRhdGEgJwotICAgICAgICAgICAgJy4u
LicpCi0gICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLmFjcXVpcmUoKQot
ICAgICAgICBmb3IgY2hhbm5lbF9kYXRhIGluIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHMudmFsdWVz
KCk6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgY2hhbm5lbF9kYXRhLnJlcXVl
c3QuY29ubmVjdGlvbi5zZXRfcmVhZF9zdGF0ZSgKLSAgICAgICAgICAgICAgICAgICAgX0xvZ2lj
YWxDb25uZWN0aW9uLlNUQVRFX1RFUk1JTkFURUQpCi0gICAgICAgICAgICBleGNlcHQgRXhjZXB0
aW9uOgotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1Zyh0cmFjZWJhY2suZm9ybWF0
X2V4YygpKQotICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5yZWxlYXNl
KCkKLQotICAgIGRlZiBub3RpZnlfd3JpdGVyX2RvbmUoc2VsZik6Ci0gICAgICAgICIiIlRoaXMg
bWV0aG9kIGlzIGNhbGxlZCBieSB0aGUgd3JpdGVyIHRocmVhZCB3aGVuIHRoZSB3cml0ZXIgaGFz
Ci0gICAgICAgIGZpbmlzaGVkLgotICAgICAgICAiIiIKLQotICAgICAgICBzZWxmLl9sb2dnZXIu
ZGVidWcoCi0gICAgICAgICAgICAnVGVybWlhdGluZyBhbGwgbG9naWNhbCBjb25uZWN0aW9ucyB3
YWl0aW5nIGZvciB3cml0ZSAnCi0gICAgICAgICAgICAnY29tcGxldGlvbiAuLi4nKQotICAgICAg
ICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5hY3F1aXJlKCkKLSAgICAgICAgZm9y
IGNoYW5uZWxfZGF0YSBpbiBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzLnZhbHVlcygpOgotICAgICAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGNoYW5uZWxfZGF0YS5yZXF1ZXN0LmNvbm5lY3Rp
b24ub25fd3JpdGVyX2RvbmUoKQotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAg
ICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcodHJhY2ViYWNrLmZvcm1hdF9leGMoKSkKLSAg
ICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24ucmVsZWFzZSgpCi0KLSAgICBk
ZWYgZmFpbF9waHlzaWNhbF9jb25uZWN0aW9uKHNlbGYsIGNvZGUsIG1lc3NhZ2UpOgotICAgICAg
ICAiIiJGYWlsIHRoZSBwaHlzaWNhbCBjb25uZWN0aW9uLgotCi0gICAgICAgIEFyZ3M6Ci0gICAg
ICAgICAgICBjb2RlOiBkcm9wIHJlYXNvbiBjb2RlLgotICAgICAgICAgICAgbWVzc2FnZTogZHJv
cCBtZXNzYWdlLgotICAgICAgICAiIiIKLQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0Zh
aWxpbmcgdGhlIHBoeXNpY2FsIGNvbm5lY3Rpb24uLi4nKQotICAgICAgICBzZWxmLl9zZW5kX2Ry
b3BfY2hhbm5lbChfQ09OVFJPTF9DSEFOTkVMX0lELCBjb2RlLCBtZXNzYWdlKQotICAgICAgICBz
ZWxmLl93cml0ZXIuc3RvcChjb21tb24uU1RBVFVTX0lOVEVSTkFMX0VORFBPSU5UX0VSUk9SKQot
Ci0gICAgZGVmIGZhaWxfbG9naWNhbF9jaGFubmVsKHNlbGYsIGNoYW5uZWxfaWQsIGNvZGUsIG1l
c3NhZ2UpOgotICAgICAgICAiIiJGYWlsIGEgbG9naWNhbCBjaGFubmVsLgotCi0gICAgICAgIEFy
Z3M6Ci0gICAgICAgICAgICBjaGFubmVsX2lkOiBjaGFubmVsIGlkLgotICAgICAgICAgICAgY29k
ZTogZHJvcCByZWFzb24gY29kZS4KLSAgICAgICAgICAgIG1lc3NhZ2U6IGRyb3AgbWVzc2FnZS4K
LSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdGYWlsaW5nIGxvZ2lj
YWwgY2hhbm5lbCAlZC4uLicgJSBjaGFubmVsX2lkKQotICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5hY3F1aXJlKCkKLSAgICAgICAgICAg
IGlmIGNoYW5uZWxfaWQgaW4gc2VsZi5fbG9naWNhbF9jaGFubmVsczoKLSAgICAgICAgICAgICAg
ICBjaGFubmVsX2RhdGEgPSBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzW2NoYW5uZWxfaWRdCi0gICAg
ICAgICAgICAgICAgIyBDbG9zZSB0aGUgbG9naWNhbCBjaGFubmVsLiBub3RpZnlfd29ya2VyX2Rv
bmUoKSB3aWxsIGJlCi0gICAgICAgICAgICAgICAgIyBjYWxsZWQgbGF0ZXIgYW5kIGl0IHdpbGwg
c2VuZCBEcm9wQ2hhbm5lbC4KLSAgICAgICAgICAgICAgICBjaGFubmVsX2RhdGEuZHJvcF9jb2Rl
ID0gY29kZQotICAgICAgICAgICAgICAgIGNoYW5uZWxfZGF0YS5kcm9wX21lc3NhZ2UgPSBtZXNz
YWdlCi0KLSAgICAgICAgICAgICAgICBjaGFubmVsX2RhdGEucmVxdWVzdC5jb25uZWN0aW9uLnNl
dF9yZWFkX3N0YXRlKAotICAgICAgICAgICAgICAgICAgICBfTG9naWNhbENvbm5lY3Rpb24uU1RB
VEVfVEVSTUlOQVRFRCkKLSAgICAgICAgICAgICAgICBjaGFubmVsX2RhdGEucmVxdWVzdC53c19z
dHJlYW0uc3RvcF9zZW5kaW5nKCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAg
c2VsZi5fc2VuZF9kcm9wX2NoYW5uZWwoY2hhbm5lbF9pZCwgY29kZSwgbWVzc2FnZSkKLSAgICAg
ICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9u
LnJlbGVhc2UoKQotCi0KLWRlZiB1c2VfbXV4KHJlcXVlc3QpOgotICAgIHJldHVybiBoYXNhdHRy
KHJlcXVlc3QsICdtdXhfcHJvY2Vzc29yJykgYW5kICgKLSAgICAgICAgcmVxdWVzdC5tdXhfcHJv
Y2Vzc29yLmlzX2FjdGl2ZSgpKQotCi0KLWRlZiBzdGFydChyZXF1ZXN0LCBkaXNwYXRjaGVyKToK
LSAgICBtdXhfaGFuZGxlciA9IF9NdXhIYW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIpCi0gICAg
bXV4X2hhbmRsZXIuc3RhcnQoKQotCi0gICAgbXV4X2hhbmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMo
X0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxfU0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgX0lOSVRJQUxfUVVPVEFfRk9SX0NMSUVOVCkKLQotICAgIG11eF9oYW5kbGVy
LndhaXRfdW50aWxfZG9uZSgpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29j
a2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdl
YnNvY2tldC9zdGFuZGFsb25lLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNGMy
OTllYWYzZGY5ZmMzZTE3MzhiY2ZlNzA3NzMxOWY4NzZlODk0Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC9zdGFu
ZGFsb25lLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTE5MyArMCwwIEBACi0jIS91c3IvYmluL2Vu
diBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMg
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBk
aXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0j
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0j
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIlN0YW5kYWxvbmUgV2ViU29ja2V0
IHNlcnZlci4KLQotVXNlIHRoaXMgZmlsZSB0byBsYXVuY2ggcHl3ZWJzb2NrZXQgd2l0aG91dCBB
cGFjaGUgSFRUUCBTZXJ2ZXIuCi0KLQotQkFTSUMgVVNBR0UKLT09PT09PT09PT09Ci0KLUdvIHRv
IHRoZSBzcmMgZGlyZWN0b3J5IGFuZCBydW4KLQotICAkIHB5dGhvbiBtb2RfcHl3ZWJzb2NrZXQv
c3RhbmRhbG9uZS5weSBbLXAgPHdzX3BvcnQ+XQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbLXcgPHdlYnNvY2tfaGFuZGxlcnM+XQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbLWQgPGRvY3VtZW50X3Jvb3Q+XQotCi08d3NfcG9ydD4g
aXMgdGhlIHBvcnQgbnVtYmVyIHRvIHVzZSBmb3Igd3M6Ly8gY29ubmVjdGlvbi4KLQotPGRvY3Vt
ZW50X3Jvb3Q+IGlzIHRoZSBwYXRoIHRvIHRoZSByb290IGRpcmVjdG9yeSBvZiBIVE1MIGZpbGVz
LgotCi08d2Vic29ja19oYW5kbGVycz4gaXMgdGhlIHBhdGggdG8gdGhlIHJvb3QgZGlyZWN0b3J5
IG9mIFdlYlNvY2tldCBoYW5kbGVycy4KLUlmIG5vdCBzcGVjaWZpZWQsIDxkb2N1bWVudF9yb290
PiB3aWxsIGJlIHVzZWQuIFNlZSBfX2luaXRfXy5weSAob3IKLXJ1biAkIHB5ZG9jIG1vZF9weXdl
YnNvY2tldCkgZm9yIGhvdyB0byB3cml0ZSBXZWJTb2NrZXQgaGFuZGxlcnMuCi0KLUZvciBtb3Jl
IGRldGFpbCBhbmQgb3RoZXIgb3B0aW9ucywgcnVuCi0KLSAgJCBweXRob24gbW9kX3B5d2Vic29j
a2V0L3N0YW5kYWxvbmUucHkgLS1oZWxwCi0KLW9yIHNlZSBfYnVpbGRfb3B0aW9uX3BhcnNlciBt
ZXRob2QgYmVsb3cuCi0KLUZvciB0cm91YmxlIHNob290aW5nLCBhZGRpbmcgIi0tbG9nX2xldmVs
IGRlYnVnIiBtaWdodCBoZWxwIHlvdS4KLQotCi1UUlkgREVNTwotPT09PT09PT0KLQotR28gdG8g
dGhlIHNyYyBkaXJlY3RvcnkgYW5kIHJ1biBzdGFuZGFsb25lLnB5IHdpdGggLWQgb3B0aW9uIHRv
IHNldCB0aGUKLWRvY3VtZW50IHJvb3QgdG8gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIGV4YW1w
bGUgSFRNTHMgYW5kIGhhbmRsZXJzIGxpa2UgdGhpczoKLQotICAkIGNkIHNyYwotICAkIFBZVEhP
TlBBVEg9LiBweXRob24gbW9kX3B5d2Vic29ja2V0L3N0YW5kYWxvbmUucHkgLWQgZXhhbXBsZQot
Ci10byBsYXVuY2ggcHl3ZWJzb2NrZXQgd2l0aCB0aGUgc2FtcGxlIGhhbmRsZXIgYW5kIGh0bWwg
b24gcG9ydCA4MC4gT3BlbgotaHR0cDovL2xvY2FsaG9zdC9jb25zb2xlLmh0bWwsIGNsaWNrIHRo
ZSBjb25uZWN0IGJ1dHRvbiwgdHlwZSBzb21ldGhpbmcgaW50bwotdGhlIHRleHQgYm94IG5leHQg
dG8gdGhlIHNlbmQgYnV0dG9uIGFuZCBjbGljayB0aGUgc2VuZCBidXR0b24uIElmIGV2ZXJ5dGhp
bmcKLWlzIHdvcmtpbmcsIHlvdSdsbCBzZWUgdGhlIG1lc3NhZ2UgeW91IHR5cGVkIGVjaG9lZCBi
eSB0aGUgc2VydmVyLgotCi0KLVVTSU5HIFRMUwotPT09PT09PT09Ci0KLVRvIHJ1biB0aGUgc3Rh
bmRhbG9uZSBzZXJ2ZXIgd2l0aCBUTFMgc3VwcG9ydCwgcnVuIGl0IHdpdGggLXQsIC1rLCBhbmQg
LWMKLW9wdGlvbnMuIFdoZW4gVExTIGlzIGVuYWJsZWQsIHRoZSBzdGFuZGFsb25lIHNlcnZlciBh
Y2NlcHRzIG9ubHkgVExTIGNvbm5lY3Rpb24uCi0KLU5vdGUgdGhhdCB3aGVuIHNzbCBtb2R1bGUg
aXMgdXNlZCBhbmQgdGhlIGtleS9jZXJ0IGxvY2F0aW9uIGlzIGluY29ycmVjdCwKLVRMUyBjb25u
ZWN0aW9uIHNpbGVudGx5IGZhaWxzIHdoaWxlIHB5T3BlblNTTCBmYWlscyBvbiBzdGFydHVwLgot
Ci1FeGFtcGxlOgotCi0gICQgUFlUSE9OUEFUSD0uIHB5dGhvbiBtb2RfcHl3ZWJzb2NrZXQvc3Rh
bmRhbG9uZS5weSBcCi0gICAgICAgIC1kIGV4YW1wbGUgXAotICAgICAgICAtcCAxMDQ0MyBcCi0g
ICAgICAgIC10IFwKLSAgICAgICAgLWMgLi4vdGVzdC9jZXJ0L2NlcnQucGVtIFwKLSAgICAgICAg
LWsgLi4vdGVzdC9jZXJ0L2tleS5wZW0gXAotCi1Ob3RlIHRoYXQgd2hlbiBwYXNzaW5nIGEgcmVs
YXRpdmUgcGF0aCB0byAtYyBhbmQgLWsgb3B0aW9uLCBpdCB3aWxsIGJlIHJlc29sdmVkCi11c2lu
ZyB0aGUgZG9jdW1lbnQgcm9vdCBkaXJlY3RvcnkgYXMgdGhlIGJhc2UuCi0KLQotVVNJTkcgQ0xJ
RU5UIEFVVEhFTlRJQ0FUSU9OCi09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotVG8gcnVu
IHRoZSBzdGFuZGFsb25lIHNlcnZlciB3aXRoIFRMUyBjbGllbnQgYXV0aGVudGljYXRpb24gc3Vw
cG9ydCwgcnVuIGl0IHdpdGgKLS0tdGxzLWNsaWVudC1hdXRoIGFuZCAtLXRscy1jbGllbnQtY2Eg
b3B0aW9ucyBpbiBhZGRpdGlvbiB0byBvbmVzIHJlcXVpcmVkIGZvcgotVExTIHN1cHBvcnQuCi0K
LUV4YW1wbGU6Ci0KLSAgJCBQWVRIT05QQVRIPS4gcHl0aG9uIG1vZF9weXdlYnNvY2tldC9zdGFu
ZGFsb25lLnB5IC1kIGV4YW1wbGUgLXAgMTA0NDMgLXQgXAotICAgICAgICAtYyAuLi90ZXN0L2Nl
cnQvY2VydC5wZW0gLWsgLi4vdGVzdC9jZXJ0L2tleS5wZW0gXAotICAgICAgICAtLXRscy1jbGll
bnQtYXV0aCBcCi0gICAgICAgIC0tdGxzLWNsaWVudC1jYT0uLi90ZXN0L2NlcnQvY2FjZXJ0LnBl
bQotCi1Ob3RlIHRoYXQgd2hlbiBwYXNzaW5nIGEgcmVsYXRpdmUgcGF0aCB0byAtLXRscy1jbGll
bnQtY2Egb3B0aW9uLCBpdCB3aWxsIGJlCi1yZXNvbHZlZCB1c2luZyB0aGUgZG9jdW1lbnQgcm9v
dCBkaXJlY3RvcnkgYXMgdGhlIGJhc2UuCi0KLQotQ09ORklHVVJBVElPTiBGSUxFCi09PT09PT09
PT09PT09PT09PT0KLQotWW91IGNhbiBhbHNvIHdyaXRlIGEgY29uZmlndXJhdGlvbiBmaWxlIGFu
ZCB1c2UgaXQgYnkgc3BlY2lmeWluZyB0aGUgcGF0aCB0bwotdGhlIGNvbmZpZ3VyYXRpb24gZmls
ZSBieSAtLWNvbmZpZyBvcHRpb24uIFBsZWFzZSB3cml0ZSBhIGNvbmZpZ3VyYXRpb24gZmlsZQot
Zm9sbG93aW5nIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSBQeXRob24gQ29uZmlnUGFyc2VyIGxp
YnJhcnkuIE5hbWUgb2YgZWFjaAotZW50cnkgbXVzdCBiZSB0aGUgbG9uZyB2ZXJzaW9uIGFyZ3Vt
ZW50IG5hbWUuIEUuZy4gdG8gc2V0IGxvZyBsZXZlbCB0byBkZWJ1ZywKLWFkZCB0aGUgZm9sbG93
aW5nIGxpbmU6Ci0KLWxvZ19sZXZlbD1kZWJ1ZwotCi1Gb3Igb3B0aW9ucyB3aGljaCBkb2Vzbid0
IHRha2UgdmFsdWUsIHBsZWFzZSBhZGQgc29tZSBmYWtlIHZhbHVlLiBFLmcuIGZvcgotLS10bHMg
b3B0aW9uLCBhZGQgdGhlIGZvbGxvd2luZyBsaW5lOgotCi10bHM9VHJ1ZQotCi1Ob3RlIHRoYXQg
dGxzIHdpbGwgYmUgZW5hYmxlZCBldmVuIGlmIHlvdSB3cml0ZSB0bHM9RmFsc2UgYXMgdGhlIHZh
bHVlIHBhcnQgaXMKLWZha2UuCi0KLVdoZW4gYm90aCBhIGNvbW1hbmQgbGluZSBhcmd1bWVudCBh
bmQgYSBjb25maWd1cmF0aW9uIGZpbGUgZW50cnkgYXJlIHNldCBmb3IKLXRoZSBzYW1lIGNvbmZp
Z3VyYXRpb24gaXRlbSwgdGhlIGNvbW1hbmQgbGluZSB2YWx1ZSB3aWxsIG92ZXJyaWRlIG9uZSBp
biB0aGUKLWNvbmZpZ3VyYXRpb24gZmlsZS4KLQotCi1USFJFQURJTkcKLT09PT09PT09PQotCi1U
aGlzIHNlcnZlciBpcyBkZXJpdmVkIGZyb20gU29ja2V0U2VydmVyLlRocmVhZGluZ01peEluLiBI
ZW5jZSBhIHRocmVhZCBpcwotdXNlZCBmb3IgZWFjaCByZXF1ZXN0LgotCi0KLVNFQ1VSSVRZIFdB
Uk5JTkcKLT09PT09PT09PT09PT09PT0KLQotVGhpcyB1c2VzIENHSUhUVFBTZXJ2ZXIgYW5kIENH
SUhUVFBTZXJ2ZXIgaXMgbm90IHNlY3VyZS4KLUl0IG1heSBleGVjdXRlIGFyYml0cmFyeSBQeXRo
b24gY29kZSBvciBleHRlcm5hbCBwcm9ncmFtcy4gSXQgc2hvdWxkIG5vdCBiZQotdXNlZCBvdXRz
aWRlIGEgZmlyZXdhbGwuCi0iIiIKLQotaW1wb3J0IEJhc2VIVFRQU2VydmVyCi1pbXBvcnQgQ0dJ
SFRUUFNlcnZlcgotaW1wb3J0IFNpbXBsZUhUVFBTZXJ2ZXIKLWltcG9ydCBTb2NrZXRTZXJ2ZXIK
LWltcG9ydCBDb25maWdQYXJzZXIKLWltcG9ydCBiYXNlNjQKLWltcG9ydCBodHRwbGliCi1pbXBv
cnQgbG9nZ2luZwotaW1wb3J0IGxvZ2dpbmcuaGFuZGxlcnMKLWltcG9ydCBvcHRwYXJzZQotaW1w
b3J0IG9zCi1pbXBvcnQgcmUKLWltcG9ydCBzZWxlY3QKLWltcG9ydCBzb2NrZXQKLWltcG9ydCBz
eXMKLWltcG9ydCB0aHJlYWRpbmcKLWltcG9ydCB0aW1lCi0KLWZyb20gbW9kX3B5d2Vic29ja2V0
IGltcG9ydCBjb21tb24KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBkaXNwYXRjaAotZnJv
bSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGhhbmRzaGFrZQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQg
aW1wb3J0IGh0dHBfaGVhZGVyX3V0aWwKLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBtZW1v
cml6aW5nZmlsZQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHV0aWwKLWZyb20gbW9kX3B5
d2Vic29ja2V0Lnhocl9iZW5jaG1hcmtfaGFuZGxlciBpbXBvcnQgWEhSQmVuY2htYXJrSGFuZGxl
cgotCi0KLV9ERUZBVUxUX0xPR19NQVhfQllURVMgPSAxMDI0ICogMjU2Ci1fREVGQVVMVF9MT0df
QkFDS1VQX0NPVU5UID0gNQotCi1fREVGQVVMVF9SRVFVRVNUX1FVRVVFX1NJWkUgPSAxMjgKLQot
IyAxMDI0IGlzIHByYWN0aWNhbGx5IGxhcmdlIGVub3VnaCB0byBjb250YWluIFdlYlNvY2tldCBo
YW5kc2hha2UgbGluZXMuCi1fTUFYX01FTU9SSVpFRF9MSU5FUyA9IDEwMjQKLQotIyBDb25zdGFu
dHMgZm9yIHRoZSAtLXRsc19tb2R1bGUgZmxhZy4KLV9UTFNfQllfU1RBTkRBUkRfTU9EVUxFID0g
J3NzbCcKLV9UTFNfQllfUFlPUEVOU1NMID0gJ3B5b3BlbnNzbCcKLQotCi1jbGFzcyBfU3RhbmRh
bG9uZUNvbm5lY3Rpb24ob2JqZWN0KToKLSAgICAiIiJNaW1pYyBtb2RfcHl0aG9uIG1wX2Nvbm4u
IiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdF9oYW5kbGVyKToKLSAgICAgICAg
IiIiQ29uc3RydWN0IGFuIGluc3RhbmNlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBy
ZXF1ZXN0X2hhbmRsZXI6IEEgV2ViU29ja2V0UmVxdWVzdEhhbmRsZXIgaW5zdGFuY2UuCi0gICAg
ICAgICIiIgotCi0gICAgICAgIHNlbGYuX3JlcXVlc3RfaGFuZGxlciA9IHJlcXVlc3RfaGFuZGxl
cgotCi0gICAgZGVmIGdldF9sb2NhbF9hZGRyKHNlbGYpOgotICAgICAgICAiIiJHZXR0ZXIgdG8g
bWltaWMgbXBfY29ubi5sb2NhbF9hZGRyLiIiIgotCi0gICAgICAgIHJldHVybiAoc2VsZi5fcmVx
dWVzdF9oYW5kbGVyLnNlcnZlci5zZXJ2ZXJfbmFtZSwKLSAgICAgICAgICAgICAgICBzZWxmLl9y
ZXF1ZXN0X2hhbmRsZXIuc2VydmVyLnNlcnZlcl9wb3J0KQotICAgIGxvY2FsX2FkZHIgPSBwcm9w
ZXJ0eShnZXRfbG9jYWxfYWRkcikKLQotICAgIGRlZiBnZXRfcmVtb3RlX2FkZHIoc2VsZik6Ci0g
ICAgICAgICIiIkdldHRlciB0byBtaW1pYyBtcF9jb25uLnJlbW90ZV9hZGRyLgotCi0gICAgICAg
IFNldHRpbmcgdGhlIHByb3BlcnR5IGluIF9faW5pdF9fIHdvbid0IHdvcmsgYmVjYXVzZSB0aGUg
cmVxdWVzdAotICAgICAgICBoYW5kbGVyIGlzIG5vdCBpbml0aWFsaXplZCB5ZXQgdGhlcmUuIiIi
Ci0KLSAgICAgICAgcmV0dXJuIHNlbGYuX3JlcXVlc3RfaGFuZGxlci5jbGllbnRfYWRkcmVzcwot
ICAgIHJlbW90ZV9hZGRyID0gcHJvcGVydHkoZ2V0X3JlbW90ZV9hZGRyKQotCi0gICAgZGVmIHdy
aXRlKHNlbGYsIGRhdGEpOgotICAgICAgICAiIiJNaW1pYyBtcF9jb25uLndyaXRlKCkuIiIiCi0K
LSAgICAgICAgcmV0dXJuIHNlbGYuX3JlcXVlc3RfaGFuZGxlci53ZmlsZS53cml0ZShkYXRhKQot
Ci0gICAgZGVmIHJlYWQoc2VsZiwgbGVuZ3RoKToKLSAgICAgICAgIiIiTWltaWMgbXBfY29ubi5y
ZWFkKCkuIiIiCi0KLSAgICAgICAgcmV0dXJuIHNlbGYuX3JlcXVlc3RfaGFuZGxlci5yZmlsZS5y
ZWFkKGxlbmd0aCkKLQotICAgIGRlZiBnZXRfbWVtb3JpemVkX2xpbmVzKHNlbGYpOgotICAgICAg
ICAiIiJHZXQgbWVtb3JpemVkIGxpbmVzLiIiIgotCi0gICAgICAgIHJldHVybiBzZWxmLl9yZXF1
ZXN0X2hhbmRsZXIucmZpbGUuZ2V0X21lbW9yaXplZF9saW5lcygpCi0KLQotY2xhc3MgX1N0YW5k
YWxvbmVSZXF1ZXN0KG9iamVjdCk6Ci0gICAgIiIiTWltaWMgbW9kX3B5dGhvbiByZXF1ZXN0LiIi
IgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3RfaGFuZGxlciwgdXNlX3Rscyk6Ci0g
ICAgICAgICIiIkNvbnN0cnVjdCBhbiBpbnN0YW5jZS4KLQotICAgICAgICBBcmdzOgotICAgICAg
ICAgICAgcmVxdWVzdF9oYW5kbGVyOiBBIFdlYlNvY2tldFJlcXVlc3RIYW5kbGVyIGluc3RhbmNl
LgotICAgICAgICAiIiIKLQotICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19s
b2dnZXIoc2VsZikKLQotICAgICAgICBzZWxmLl9yZXF1ZXN0X2hhbmRsZXIgPSByZXF1ZXN0X2hh
bmRsZXIKLSAgICAgICAgc2VsZi5jb25uZWN0aW9uID0gX1N0YW5kYWxvbmVDb25uZWN0aW9uKHJl
cXVlc3RfaGFuZGxlcikKLSAgICAgICAgc2VsZi5fdXNlX3RscyA9IHVzZV90bHMKLSAgICAgICAg
c2VsZi5oZWFkZXJzX2luID0gcmVxdWVzdF9oYW5kbGVyLmhlYWRlcnMKLQotICAgIGRlZiBnZXRf
dXJpKHNlbGYpOgotICAgICAgICAiIiJHZXR0ZXIgdG8gbWltaWMgcmVxdWVzdC51cmkuCi0KLSAg
ICAgICAgVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgcmF3IGRhdGEgYXQgdGhlIFJlcXVlc3QtVVJJ
IHBhcnQgb2YgdGhlCi0gICAgICAgIFJlcXVlc3QtTGluZSwgd2hpbGUgdGhlIHVyaSBtZXRob2Qg
b24gdGhlIHJlcXVlc3Qgb2JqZWN0IG9mIG1vZF9weXRob24KLSAgICAgICAgcmV0dXJucyB0aGUg
cGF0aCBwb3J0aW9uIGFmdGVyIHBhcnNpbmcgdGhlIHJhdyBkYXRhLiBUaGlzIGJlaGF2aW9yIGlz
Ci0gICAgICAgIGtlcHQgZm9yIGNvbXBhdGliaWxpdHkuCi0gICAgICAgICIiIgotCi0gICAgICAg
IHJldHVybiBzZWxmLl9yZXF1ZXN0X2hhbmRsZXIucGF0aAotICAgIHVyaSA9IHByb3BlcnR5KGdl
dF91cmkpCi0KLSAgICBkZWYgZ2V0X3VucGFyc2VkX3VyaShzZWxmKToKLSAgICAgICAgIiIiR2V0
dGVyIHRvIG1pbWljIHJlcXVlc3QudW5wYXJzZWRfdXJpLiIiIgotCi0gICAgICAgIHJldHVybiBz
ZWxmLl9yZXF1ZXN0X2hhbmRsZXIucGF0aAotICAgIHVucGFyc2VkX3VyaSA9IHByb3BlcnR5KGdl
dF91bnBhcnNlZF91cmkpCi0KLSAgICBkZWYgZ2V0X21ldGhvZChzZWxmKToKLSAgICAgICAgIiIi
R2V0dGVyIHRvIG1pbWljIHJlcXVlc3QubWV0aG9kLiIiIgotCi0gICAgICAgIHJldHVybiBzZWxm
Ll9yZXF1ZXN0X2hhbmRsZXIuY29tbWFuZAotICAgIG1ldGhvZCA9IHByb3BlcnR5KGdldF9tZXRo
b2QpCi0KLSAgICBkZWYgZ2V0X3Byb3RvY29sKHNlbGYpOgotICAgICAgICAiIiJHZXR0ZXIgdG8g
bWltaWMgcmVxdWVzdC5wcm90b2NvbC4iIiIKLQotICAgICAgICByZXR1cm4gc2VsZi5fcmVxdWVz
dF9oYW5kbGVyLnJlcXVlc3RfdmVyc2lvbgotICAgIHByb3RvY29sID0gcHJvcGVydHkoZ2V0X3By
b3RvY29sKQotCi0gICAgZGVmIGlzX2h0dHBzKHNlbGYpOgotICAgICAgICAiIiJNaW1pYyByZXF1
ZXN0LmlzX2h0dHBzKCkuIiIiCi0KLSAgICAgICAgcmV0dXJuIHNlbGYuX3VzZV90bHMKLQotCi1k
ZWYgX2ltcG9ydF9zc2woKToKLSAgICBnbG9iYWwgc3NsCi0gICAgdHJ5OgotICAgICAgICBpbXBv
cnQgc3NsCi0gICAgICAgIHJldHVybiBUcnVlCi0gICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAg
ICAgICByZXR1cm4gRmFsc2UKLQotCi1kZWYgX2ltcG9ydF9weW9wZW5zc2woKToKLSAgICBnbG9i
YWwgT3BlblNTTAotICAgIHRyeToKLSAgICAgICAgaW1wb3J0IE9wZW5TU0wuU1NMCi0gICAgICAg
IHJldHVybiBUcnVlCi0gICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICByZXR1cm4gRmFs
c2UKLQotCi1jbGFzcyBfU3RhbmRhbG9uZVNTTENvbm5lY3Rpb24ob2JqZWN0KToKLSAgICAiIiJB
IHdyYXBwZXIgY2xhc3MgZm9yIE9wZW5TU0wuU1NMLkNvbm5lY3Rpb24gdG8KLSAgICAtIHByb3Zp
ZGUgbWFrZWZpbGUgbWV0aG9kIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGNsYXNzCi0g
ICAgLSB0d2VhayBzaHV0ZG93biBtZXRob2Qgc2luY2UgT3BlblNTTC5TU0wuQ29ubmVjdGlvbi5z
aHV0ZG93biBkb2Vzbid0Ci0gICAgICBhY2NlcHQgdGhlICJob3ciIGFyZ3VtZW50LgotICAgIC0g
Y29udmVydCBTeXNDYWxsRXJyb3IgZXhjZXB0aW9ucyB0aGF0IGl0cyByZWN2IG1ldGhvZCBtYXkg
cmFpc2UgaW50byBhCi0gICAgICByZXR1cm4gdmFsdWUgb2YgJycsIG1lYW5pbmcgRU9GLiBXZSBj
YW5ub3Qgb3ZlcndyaXRlIHRoZSByZWN2IG1ldGhvZCBvbgotICAgICAgc2VsZi5fY29ubmVjdGlv
biBzaW5jZSBpdCdzIGltbXV0YWJsZS4KLSAgICAiIiIKLQotICAgIF9PVkVSUklEREVOX0FUVFJJ
QlVURVMgPSBbJ19jb25uZWN0aW9uJywgJ21ha2VmaWxlJywgJ3NodXRkb3duJywgJ3JlY3YnXQot
Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbm5lY3Rpb24pOgotICAgICAgICBzZWxmLl9jb25u
ZWN0aW9uID0gY29ubmVjdGlvbgotCi0gICAgZGVmIF9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFt
ZSk6Ci0gICAgICAgIGlmIG5hbWUgaW4gX1N0YW5kYWxvbmVTU0xDb25uZWN0aW9uLl9PVkVSUklE
REVOX0FUVFJJQlVURVM6Ci0gICAgICAgICAgICByZXR1cm4gb2JqZWN0Ll9fZ2V0YXR0cmlidXRl
X18oc2VsZiwgbmFtZSkKLSAgICAgICAgcmV0dXJuIHNlbGYuX2Nvbm5lY3Rpb24uX19nZXRhdHRy
aWJ1dGVfXyhuYW1lKQotCi0gICAgZGVmIF9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKToK
LSAgICAgICAgaWYgbmFtZSBpbiBfU3RhbmRhbG9uZVNTTENvbm5lY3Rpb24uX09WRVJSSURERU5f
QVRUUklCVVRFUzoKLSAgICAgICAgICAgIHJldHVybiBvYmplY3QuX19zZXRhdHRyX18oc2VsZiwg
bmFtZSwgdmFsdWUpCi0gICAgICAgIHJldHVybiBzZWxmLl9jb25uZWN0aW9uLl9fc2V0YXR0cl9f
KG5hbWUsIHZhbHVlKQotCi0gICAgZGVmIG1ha2VmaWxlKHNlbGYsIG1vZGU9J3InLCBidWZzaXpl
PS0xKToKLSAgICAgICAgcmV0dXJuIHNvY2tldC5fZmlsZW9iamVjdChzZWxmLCBtb2RlLCBidWZz
aXplKQotCi0gICAgZGVmIHNodXRkb3duKHNlbGYsIHVudXNlZF9ob3cpOgotICAgICAgICBzZWxm
Ll9jb25uZWN0aW9uLnNodXRkb3duKCkKLQotICAgIGRlZiByZWN2KHNlbGYsIGJ1ZnNpemUsIGZs
YWdzPTApOgotICAgICAgICBpZiBmbGFncyAhPSAwOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVF
cnJvcignTm9uLXplcm8gZmxhZ3Mgbm90IGFsbG93ZWQnKQotCi0gICAgICAgIHRyeToKLSAgICAg
ICAgICAgIHJldHVybiBzZWxmLl9jb25uZWN0aW9uLnJlY3YoYnVmc2l6ZSkKLSAgICAgICAgZXhj
ZXB0IE9wZW5TU0wuU1NMLlN5c0NhbGxFcnJvciwgKGVyciwgbWVzc2FnZSk6Ci0gICAgICAgICAg
ICBpZiBlcnIgPT0gLTE6Ci0gICAgICAgICAgICAgICAgIyBTdXBwcmVzcyAidW5leHBlY3RlZCBF
T0YiIGV4Y2VwdGlvbi4gU2VlIHRoZSBPcGVuU1NMIGRvY3VtZW50Ci0gICAgICAgICAgICAgICAg
IyBmb3IgU1NMX2dldF9lcnJvci4KLSAgICAgICAgICAgICAgICByZXR1cm4gJycKLSAgICAgICAg
ICAgIHJhaXNlCi0KLQotZGVmIF9hbGlhc19oYW5kbGVycyhkaXNwYXRjaGVyLCB3ZWJzb2NrX2hh
bmRsZXJzX21hcF9maWxlKToKLSAgICAiIiJTZXQgYWxpYXNlcyBzcGVjaWZpZWQgaW4gd2Vic29j
a19oYW5kbGVyX21hcF9maWxlIGluIGRpc3BhdGNoZXIuCi0KLSAgICBBcmdzOgotICAgICAgICBk
aXNwYXRjaGVyOiBkaXNwYXRjaC5EaXNwYXRjaGVyIGluc3RhbmNlCi0gICAgICAgIHdlYnNvY2tf
aGFuZGxlcl9tYXBfZmlsZTogYWxpYXMgbWFwIGZpbGUKLSAgICAiIiIKLQotICAgIGZwID0gb3Bl
bih3ZWJzb2NrX2hhbmRsZXJzX21hcF9maWxlKQotICAgIHRyeToKLSAgICAgICAgZm9yIGxpbmUg
aW4gZnA6Ci0gICAgICAgICAgICBpZiBsaW5lWzBdID09ICcjJyBvciBsaW5lLmlzc3BhY2UoKToK
LSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgbSA9IHJlLm1hdGNoKCcoXFMr
KVxzKyhcUyspJywgbGluZSkKLSAgICAgICAgICAgIGlmIG5vdCBtOgotICAgICAgICAgICAgICAg
IGxvZ2dpbmcud2FybmluZygnV3JvbmcgZm9ybWF0IGluIG1hcCBmaWxlOicgKyBsaW5lKQotICAg
ICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAg
ZGlzcGF0Y2hlci5hZGRfcmVzb3VyY2VfcGF0aF9hbGlhcygKLSAgICAgICAgICAgICAgICAgICAg
bS5ncm91cCgxKSwgbS5ncm91cCgyKSkKLSAgICAgICAgICAgIGV4Y2VwdCBkaXNwYXRjaC5EaXNw
YXRjaEV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgICAgICBsb2dnaW5nLmVycm9yKHN0cihlKSkK
LSAgICBmaW5hbGx5OgotICAgICAgICBmcC5jbG9zZSgpCi0KLQotY2xhc3MgV2ViU29ja2V0U2Vy
dmVyKFNvY2tldFNlcnZlci5UaHJlYWRpbmdNaXhJbiwgQmFzZUhUVFBTZXJ2ZXIuSFRUUFNlcnZl
cik6Ci0gICAgIiIiSFRUUFNlcnZlciBzcGVjaWFsaXplZCBmb3IgV2ViU29ja2V0LiIiIgotCi0g
ICAgIyBPdmVycmlkZXMgU29ja2V0U2VydmVyLlRocmVhZGluZ01peEluLmRhZW1vbl90aHJlYWRz
Ci0gICAgZGFlbW9uX3RocmVhZHMgPSBUcnVlCi0gICAgIyBPdmVycmlkZXMgQmFzZUhUVFBTZXJ2
ZXIuSFRUUFNlcnZlci5hbGxvd19yZXVzZV9hZGRyZXNzCi0gICAgYWxsb3dfcmV1c2VfYWRkcmVz
cyA9IFRydWUKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25zKToKLSAgICAgICAgIiIi
T3ZlcnJpZGUgU29ja2V0U2VydmVyLlRDUFNlcnZlci5fX2luaXRfXyB0byBzZXQgU1NMIGVuYWJs
ZWQKLSAgICAgICAgc29ja2V0IG9iamVjdCB0byBzZWxmLnNvY2tldCBiZWZvcmUgc2VydmVyX2Jp
bmQgYW5kIHNlcnZlcl9hY3RpdmF0ZSwKLSAgICAgICAgaWYgbmVjZXNzYXJ5LgotICAgICAgICAi
IiIKLQotICAgICAgICAjIFNoYXJlIGEgRGlzcGF0Y2hlciBhbW9uZyByZXF1ZXN0IGhhbmRsZXJz
IHRvIHNhdmUgdGltZSBmb3IKLSAgICAgICAgIyBpbnN0YW50aWF0aW9uLiAgRGlzcGF0Y2hlciBj
YW4gYmUgc2hhcmVkIGJlY2F1c2UgaXQgaXMgdGhyZWFkLXNhZmUuCi0gICAgICAgIG9wdGlvbnMu
ZGlzcGF0Y2hlciA9IGRpc3BhdGNoLkRpc3BhdGNoZXIoCi0gICAgICAgICAgICBvcHRpb25zLndl
YnNvY2tfaGFuZGxlcnMsCi0gICAgICAgICAgICBvcHRpb25zLnNjYW5fZGlyLAotICAgICAgICAg
ICAgb3B0aW9ucy5hbGxvd19oYW5kbGVyc19vdXRzaWRlX3Jvb3RfZGlyKQotICAgICAgICBpZiBv
cHRpb25zLndlYnNvY2tfaGFuZGxlcnNfbWFwX2ZpbGU6Ci0gICAgICAgICAgICBfYWxpYXNfaGFu
ZGxlcnMob3B0aW9ucy5kaXNwYXRjaGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9w
dGlvbnMud2Vic29ja19oYW5kbGVyc19tYXBfZmlsZSkKLSAgICAgICAgd2FybmluZ3MgPSBvcHRp
b25zLmRpc3BhdGNoZXIuc291cmNlX3dhcm5pbmdzKCkKLSAgICAgICAgaWYgd2FybmluZ3M6Ci0g
ICAgICAgICAgICBmb3Igd2FybmluZyBpbiB3YXJuaW5nczoKLSAgICAgICAgICAgICAgICBsb2dn
aW5nLndhcm5pbmcoJ1dhcm5pbmcgaW4gc291cmNlIGxvYWRpbmc6ICVzJyAlIHdhcm5pbmcpCi0K
LSAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAg
ICAgICAgc2VsZi5yZXF1ZXN0X3F1ZXVlX3NpemUgPSBvcHRpb25zLnJlcXVlc3RfcXVldWVfc2l6
ZQotICAgICAgICBzZWxmLl9fd3NfaXNfc2h1dF9kb3duID0gdGhyZWFkaW5nLkV2ZW50KCkKLSAg
ICAgICAgc2VsZi5fX3dzX3NlcnZpbmcgPSBGYWxzZQotCi0gICAgICAgIFNvY2tldFNlcnZlci5C
YXNlU2VydmVyLl9faW5pdF9fKAotICAgICAgICAgICAgc2VsZiwgKG9wdGlvbnMuc2VydmVyX2hv
c3QsIG9wdGlvbnMucG9ydCksIFdlYlNvY2tldFJlcXVlc3RIYW5kbGVyKQotCi0gICAgICAgICMg
RXhwb3NlIHRoZSBvcHRpb25zIG9iamVjdCB0byBhbGxvdyBoYW5kbGVyIG9iamVjdHMgYWNjZXNz
IGl0LiBXZSBuYW1lCi0gICAgICAgICMgaXQgd2l0aCB3ZWJzb2NrZXRfIHByZWZpeCB0byBhdm9p
ZCBjb25mbGljdC4KLSAgICAgICAgc2VsZi53ZWJzb2NrZXRfc2VydmVyX29wdGlvbnMgPSBvcHRp
b25zCi0KLSAgICAgICAgc2VsZi5fY3JlYXRlX3NvY2tldHMoKQotICAgICAgICBzZWxmLnNlcnZl
cl9iaW5kKCkKLSAgICAgICAgc2VsZi5zZXJ2ZXJfYWN0aXZhdGUoKQotCi0gICAgZGVmIF9jcmVh
dGVfc29ja2V0cyhzZWxmKToKLSAgICAgICAgc2VsZi5zZXJ2ZXJfbmFtZSwgc2VsZi5zZXJ2ZXJf
cG9ydCA9IHNlbGYuc2VydmVyX2FkZHJlc3MKLSAgICAgICAgc2VsZi5fc29ja2V0cyA9IFtdCi0g
ICAgICAgIGlmIG5vdCBzZWxmLnNlcnZlcl9uYW1lOgotICAgICAgICAgICAgIyBPbiBwbGF0Zm9y
bXMgdGhhdCBkb2Vzbid0IHN1cHBvcnQgSVB2NiwgdGhlIGZpcnN0IGJpbmQgZmFpbHMuCi0gICAg
ICAgICAgICAjIE9uIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnRzIElQdjYKLSAgICAgICAgICAgICMg
LSBJZiBpdCBiaW5kcyBib3RoIElQdjQgYW5kIElQdjYgb24gY2FsbCB3aXRoIEFGX0lORVQ2LCB0
aGUKLSAgICAgICAgICAgICMgICBmaXJzdCBiaW5kIHN1Y2NlZWRzIGFuZCB0aGUgc2Vjb25kIGZh
aWxzICh3ZSdsbCBzZWUgJ0FkZHJlc3MKLSAgICAgICAgICAgICMgICBhbHJlYWR5IGluIHVzZScg
ZXJyb3IpLgotICAgICAgICAgICAgIyAtIElmIGl0IGJpbmRzIG9ubHkgSVB2NiBvbiBjYWxsIHdp
dGggQUZfSU5FVDYsIGJvdGggY2FsbCBhcmUKLSAgICAgICAgICAgICMgICBleHBlY3RlZCB0byBz
dWNjZWVkIHRvIGxpc3RlbiBib3RoIHByb3RvY29sLgotICAgICAgICAgICAgYWRkcmluZm9fYXJy
YXkgPSBbCi0gICAgICAgICAgICAgICAgKHNvY2tldC5BRl9JTkVUNiwgc29ja2V0LlNPQ0tfU1RS
RUFNLCAnJywgJycsICcnKSwKLSAgICAgICAgICAgICAgICAoc29ja2V0LkFGX0lORVQsIHNvY2tl
dC5TT0NLX1NUUkVBTSwgJycsICcnLCAnJyldCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBh
ZGRyaW5mb19hcnJheSA9IHNvY2tldC5nZXRhZGRyaW5mbyhzZWxmLnNlcnZlcl9uYW1lLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJf
cG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNv
Y2tldC5BRl9VTlNQRUMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzb2NrZXQuU09DS19TVFJFQU0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzb2NrZXQuSVBQUk9UT19UQ1ApCi0gICAgICAgIGZvciBhZGRy
aW5mbyBpbiBhZGRyaW5mb19hcnJheToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdD
cmVhdGUgc29ja2V0IG9uOiAlcicsIGFkZHJpbmZvKQotICAgICAgICAgICAgZmFtaWx5LCBzb2Nr
dHlwZSwgcHJvdG8sIGNhbm9ubmFtZSwgc29ja2FkZHIgPSBhZGRyaW5mbwotICAgICAgICAgICAg
dHJ5OgotICAgICAgICAgICAgICAgIHNvY2tldF8gPSBzb2NrZXQuc29ja2V0KGZhbWlseSwgc29j
a3R5cGUpCi0gICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgICAg
IHNlbGYuX2xvZ2dlci5pbmZvKCdTa2lwIGJ5IGZhaWx1cmU6ICVyJywgZSkKLSAgICAgICAgICAg
ICAgICBjb250aW51ZQotICAgICAgICAgICAgc2VydmVyX29wdGlvbnMgPSBzZWxmLndlYnNvY2tl
dF9zZXJ2ZXJfb3B0aW9ucwotICAgICAgICAgICAgaWYgc2VydmVyX29wdGlvbnMudXNlX3RsczoK
LSAgICAgICAgICAgICAgICAjIEZvciB0aGUgY2FzZSBvZiBfSEFTX09QRU5fU1NMLCB3ZSBkbyB3
cmFwcGVyIHNldHVwIGFmdGVyCi0gICAgICAgICAgICAgICAgIyBhY2NlcHQuCi0gICAgICAgICAg
ICAgICAgaWYgc2VydmVyX29wdGlvbnMudGxzX21vZHVsZSA9PSBfVExTX0JZX1NUQU5EQVJEX01P
RFVMRToKLSAgICAgICAgICAgICAgICAgICAgaWYgc2VydmVyX29wdGlvbnMudGxzX2NsaWVudF9h
dXRoOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2VydmVyX29wdGlvbnMudGxzX2NsaWVu
dF9jZXJ0X29wdGlvbmFsOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9jZXJ0
XyA9IHNzbC5DRVJUX09QVElPTkFMCi0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9jZXJ0XyA9IHNzbC5DRVJUX1JFUVVJUkVE
Ci0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjbGll
bnRfY2VydF8gPSBzc2wuQ0VSVF9OT05FCi0gICAgICAgICAgICAgICAgICAgIHNvY2tldF8gPSBz
c2wud3JhcF9zb2NrZXQoc29ja2V0XywKLSAgICAgICAgICAgICAgICAgICAgICAgIGtleWZpbGU9
c2VydmVyX29wdGlvbnMucHJpdmF0ZV9rZXksCi0gICAgICAgICAgICAgICAgICAgICAgICBjZXJ0
ZmlsZT1zZXJ2ZXJfb3B0aW9ucy5jZXJ0aWZpY2F0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IHNzbF92ZXJzaW9uPXNzbC5QUk9UT0NPTF9TU0x2MjMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICBjYV9jZXJ0cz1zZXJ2ZXJfb3B0aW9ucy50bHNfY2xpZW50X2NhLAotICAgICAgICAgICAgICAg
ICAgICAgICAgY2VydF9yZXFzPWNsaWVudF9jZXJ0XywKLSAgICAgICAgICAgICAgICAgICAgICAg
IGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlKQotICAgICAgICAgICAgc2VsZi5fc29ja2V0
cy5hcHBlbmQoKHNvY2tldF8sIGFkZHJpbmZvKSkKLQotICAgIGRlZiBzZXJ2ZXJfYmluZChzZWxm
KToKLSAgICAgICAgIiIiT3ZlcnJpZGUgU29ja2V0U2VydmVyLlRDUFNlcnZlci5zZXJ2ZXJfYmlu
ZCB0byBlbmFibGUgbXVsdGlwbGUKLSAgICAgICAgc29ja2V0cyBiaW5kLgotICAgICAgICAiIiIK
LQotICAgICAgICBmYWlsZWRfc29ja2V0cyA9IFtdCi0KLSAgICAgICAgZm9yIHNvY2tldGluZm8g
aW4gc2VsZi5fc29ja2V0czoKLSAgICAgICAgICAgIHNvY2tldF8sIGFkZHJpbmZvID0gc29ja2V0
aW5mbwotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0JpbmQgb246ICVyJywgYWRkcmlu
Zm8pCi0gICAgICAgICAgICBpZiBzZWxmLmFsbG93X3JldXNlX2FkZHJlc3M6Ci0gICAgICAgICAg
ICAgICAgc29ja2V0Xy5zZXRzb2Nrb3B0KHNvY2tldC5TT0xfU09DS0VULCBzb2NrZXQuU09fUkVV
U0VBRERSLCAxKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNvY2tldF8uYmlu
ZChzZWxmLnNlcnZlcl9hZGRyZXNzKQotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToK
LSAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnU2tpcCBieSBmYWlsdXJlOiAlcics
IGUpCi0gICAgICAgICAgICAgICAgc29ja2V0Xy5jbG9zZSgpCi0gICAgICAgICAgICAgICAgZmFp
bGVkX3NvY2tldHMuYXBwZW5kKHNvY2tldGluZm8pCi0gICAgICAgICAgICBpZiBzZWxmLnNlcnZl
cl9hZGRyZXNzWzFdID09IDA6Ci0gICAgICAgICAgICAgICAgIyBUaGUgb3BlcmF0aW5nIHN5c3Rl
bSBhc3NpZ25zIHRoZSBhY3R1YWwgcG9ydCBudW1iZXIgZm9yIHBvcnQKLSAgICAgICAgICAgICAg
ICAjIG51bWJlciAwLiBUaGlzIGNhc2UsIHRoZSBzZWNvbmQgYW5kIGxhdGVyIHNvY2tldHMgc2hv
dWxkIHVzZQotICAgICAgICAgICAgICAgICMgdGhlIHNhbWUgcG9ydCBudW1iZXIuIEFsc28gc2Vs
Zi5zZXJ2ZXJfcG9ydCBpcyByZXdyaXR0ZW4KLSAgICAgICAgICAgICAgICAjIGJlY2F1c2UgaXQg
aXMgZXhwb3J0ZWQsIGFuZCB3aWxsIGJlIHVzZWQgYnkgZXh0ZXJuYWwgY29kZS4KLSAgICAgICAg
ICAgICAgICBzZWxmLnNlcnZlcl9hZGRyZXNzID0gKAotICAgICAgICAgICAgICAgICAgICBzZWxm
LnNlcnZlcl9uYW1lLCBzb2NrZXRfLmdldHNvY2tuYW1lKClbMV0pCi0gICAgICAgICAgICAgICAg
c2VsZi5zZXJ2ZXJfcG9ydCA9IHNlbGYuc2VydmVyX2FkZHJlc3NbMV0KLSAgICAgICAgICAgICAg
ICBzZWxmLl9sb2dnZXIuaW5mbygnUG9ydCAlciBpcyBhc3NpZ25lZCcsIHNlbGYuc2VydmVyX3Bv
cnQpCi0KLSAgICAgICAgZm9yIHNvY2tldGluZm8gaW4gZmFpbGVkX3NvY2tldHM6Ci0gICAgICAg
ICAgICBzZWxmLl9zb2NrZXRzLnJlbW92ZShzb2NrZXRpbmZvKQotCi0gICAgZGVmIHNlcnZlcl9h
Y3RpdmF0ZShzZWxmKToKLSAgICAgICAgIiIiT3ZlcnJpZGUgU29ja2V0U2VydmVyLlRDUFNlcnZl
ci5zZXJ2ZXJfYWN0aXZhdGUgdG8gZW5hYmxlIG11bHRpcGxlCi0gICAgICAgIHNvY2tldHMgbGlz
dGVuLgotICAgICAgICAiIiIKLQotICAgICAgICBmYWlsZWRfc29ja2V0cyA9IFtdCi0KLSAgICAg
ICAgZm9yIHNvY2tldGluZm8gaW4gc2VsZi5fc29ja2V0czoKLSAgICAgICAgICAgIHNvY2tldF8s
IGFkZHJpbmZvID0gc29ja2V0aW5mbwotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0xp
c3RlbiBvbjogJXInLCBhZGRyaW5mbykKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAg
ICBzb2NrZXRfLmxpc3RlbihzZWxmLnJlcXVlc3RfcXVldWVfc2l6ZSkKLSAgICAgICAgICAgIGV4
Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ1Nr
aXAgYnkgZmFpbHVyZTogJXInLCBlKQotICAgICAgICAgICAgICAgIHNvY2tldF8uY2xvc2UoKQot
ICAgICAgICAgICAgICAgIGZhaWxlZF9zb2NrZXRzLmFwcGVuZChzb2NrZXRpbmZvKQotCi0gICAg
ICAgIGZvciBzb2NrZXRpbmZvIGluIGZhaWxlZF9zb2NrZXRzOgotICAgICAgICAgICAgc2VsZi5f
c29ja2V0cy5yZW1vdmUoc29ja2V0aW5mbykKLQotICAgICAgICBpZiBsZW4oc2VsZi5fc29ja2V0
cykgPT0gMDoKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5jcml0aWNhbCgKLSAgICAgICAgICAg
ICAgICAnTm8gc29ja2V0cyBhY3RpdmF0ZWQuIFVzZSBpbmZvIGxvZyBsZXZlbCB0byBzZWUgdGhl
IHJlYXNvbi4nKQotCi0gICAgZGVmIHNlcnZlcl9jbG9zZShzZWxmKToKLSAgICAgICAgIiIiT3Zl
cnJpZGUgU29ja2V0U2VydmVyLlRDUFNlcnZlci5zZXJ2ZXJfY2xvc2UgdG8gZW5hYmxlIG11bHRp
cGxlCi0gICAgICAgIHNvY2tldHMgY2xvc2UuCi0gICAgICAgICIiIgotCi0gICAgICAgIGZvciBz
b2NrZXRpbmZvIGluIHNlbGYuX3NvY2tldHM6Ci0gICAgICAgICAgICBzb2NrZXRfLCBhZGRyaW5m
byA9IHNvY2tldGluZm8KLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdDbG9zZSBvbjog
JXInLCBhZGRyaW5mbykKLSAgICAgICAgICAgIHNvY2tldF8uY2xvc2UoKQotCi0gICAgZGVmIGZp
bGVubyhzZWxmKToKLSAgICAgICAgIiIiT3ZlcnJpZGUgU29ja2V0U2VydmVyLlRDUFNlcnZlci5m
aWxlbm8uIiIiCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmNyaXRpY2FsKCdOb3Qgc3VwcG9ydGVk
OiBmaWxlbm8nKQotICAgICAgICByZXR1cm4gc2VsZi5fc29ja2V0c1swXVswXS5maWxlbm8oKQot
Ci0gICAgZGVmIGhhbmRsZV9lcnJvcihzZWxmLCByZXF1ZXN0LCBjbGllbnRfYWRkcmVzcyk6Ci0g
ICAgICAgICIiIk92ZXJyaWRlIFNvY2tldFNlcnZlci5oYW5kbGVfZXJyb3IuIiIiCi0KLSAgICAg
ICAgc2VsZi5fbG9nZ2VyLmVycm9yKAotICAgICAgICAgICAgJ0V4Y2VwdGlvbiBpbiBwcm9jZXNz
aW5nIHJlcXVlc3QgZnJvbTogJXJcbiVzJywKLSAgICAgICAgICAgIGNsaWVudF9hZGRyZXNzLAot
ICAgICAgICAgICAgdXRpbC5nZXRfc3RhY2tfdHJhY2UoKSkKLSAgICAgICAgIyBOb3RlOiBjbGll
bnRfYWRkcmVzcyBpcyBhIHR1cGxlLgotCi0gICAgZGVmIGdldF9yZXF1ZXN0KHNlbGYpOgotICAg
ICAgICAiIiJPdmVycmlkZSBUQ1BTZXJ2ZXIuZ2V0X3JlcXVlc3QgdG8gd3JhcCBPcGVuU1NMLlNT
TC5Db25uZWN0aW9uCi0gICAgICAgIG9iamVjdCB3aXRoIF9TdGFuZGFsb25lU1NMQ29ubmVjdGlv
biB0byBwcm92aWRlIG1ha2VmaWxlIG1ldGhvZC4gV2UKLSAgICAgICAgY2Fubm90IHN1YnN0aXR1
dGUgT3BlblNTTC5TU0wuQ29ubmVjdGlvbi5tYWtlZmlsZSBzaW5jZSBpdCdzIHJlYWRvbmx5Ci0g
ICAgICAgIGF0dHJpYnV0ZS4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgYWNjZXB0ZWRfc29ja2V0
LCBjbGllbnRfYWRkcmVzcyA9IHNlbGYuc29ja2V0LmFjY2VwdCgpCi0KLSAgICAgICAgc2VydmVy
X29wdGlvbnMgPSBzZWxmLndlYnNvY2tldF9zZXJ2ZXJfb3B0aW9ucwotICAgICAgICBpZiBzZXJ2
ZXJfb3B0aW9ucy51c2VfdGxzOgotICAgICAgICAgICAgaWYgc2VydmVyX29wdGlvbnMudGxzX21v
ZHVsZSA9PSBfVExTX0JZX1NUQU5EQVJEX01PRFVMRToKLSAgICAgICAgICAgICAgICB0cnk6Ci0g
ICAgICAgICAgICAgICAgICAgIGFjY2VwdGVkX3NvY2tldC5kb19oYW5kc2hha2UoKQotICAgICAg
ICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMRXJyb3IsIGU6Ci0gICAgICAgICAgICAgICAgICAgIHNl
bGYuX2xvZ2dlci5kZWJ1ZygnJXInLCBlKQotICAgICAgICAgICAgICAgICAgICByYWlzZQotCi0g
ICAgICAgICAgICAgICAgIyBQcmludCBjaXBoZXIgaW4gdXNlLiBIYW5kc2hha2UgaXMgZG9uZSBv
biBhY2NlcHQuCi0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdDaXBoZXI6ICVz
JywgYWNjZXB0ZWRfc29ja2V0LmNpcGhlcigpKQotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dl
ci5kZWJ1ZygnQ2xpZW50IGNlcnQ6ICVyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYWNjZXB0ZWRfc29ja2V0LmdldHBlZXJjZXJ0KCkpCi0gICAgICAgICAgICBlbGlmIHNl
cnZlcl9vcHRpb25zLnRsc19tb2R1bGUgPT0gX1RMU19CWV9QWU9QRU5TU0w6Ci0gICAgICAgICAg
ICAgICAgIyBXZSBjYW5ub3QgcHJpbnQgdGhlIGNpcGhlciBpbiB1c2UuIHB5T3BlblNTTCBkb2Vz
bid0IHByb3ZpZGUKLSAgICAgICAgICAgICAgICAjIGFueSBtZXRob2QgdG8gZmV0Y2ggdGhhdC4K
LQotICAgICAgICAgICAgICAgIGN0eCA9IE9wZW5TU0wuU1NMLkNvbnRleHQoT3BlblNTTC5TU0wu
U1NMdjIzX01FVEhPRCkKLSAgICAgICAgICAgICAgICBjdHgudXNlX3ByaXZhdGVrZXlfZmlsZShz
ZXJ2ZXJfb3B0aW9ucy5wcml2YXRlX2tleSkKLSAgICAgICAgICAgICAgICBjdHgudXNlX2NlcnRp
ZmljYXRlX2ZpbGUoc2VydmVyX29wdGlvbnMuY2VydGlmaWNhdGUpCi0KLSAgICAgICAgICAgICAg
ICBkZWYgZGVmYXVsdF9jYWxsYmFjayhjb25uLCBjZXJ0LCBlcnJudW0sIGVycmRlcHRoLCBvayk6
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBvayA9PSAxCi0KLSAgICAgICAgICAgICAgICAj
IFNlZSB0aGUgT3BlblNTTCBkb2N1bWVudCBmb3IgU1NMX0NUWF9zZXRfdmVyaWZ5LgotICAgICAg
ICAgICAgICAgIGlmIHNlcnZlcl9vcHRpb25zLnRsc19jbGllbnRfYXV0aDoKLSAgICAgICAgICAg
ICAgICAgICAgdmVyaWZ5X21vZGUgPSBPcGVuU1NMLlNTTC5WRVJJRllfUEVFUgotICAgICAgICAg
ICAgICAgICAgICBpZiBub3Qgc2VydmVyX29wdGlvbnMudGxzX2NsaWVudF9jZXJ0X29wdGlvbmFs
OgotICAgICAgICAgICAgICAgICAgICAgICAgdmVyaWZ5X21vZGUgfD0gT3BlblNTTC5TU0wuVkVS
SUZZX0ZBSUxfSUZfTk9fUEVFUl9DRVJUCi0gICAgICAgICAgICAgICAgICAgIGN0eC5zZXRfdmVy
aWZ5KHZlcmlmeV9tb2RlLCBkZWZhdWx0X2NhbGxiYWNrKQotICAgICAgICAgICAgICAgICAgICBj
dHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKHNlcnZlcl9vcHRpb25zLnRsc19jbGllbnRfY2EsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSkKLSAgICAg
ICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBjdHguc2V0X3ZlcmlmeShPcGVu
U1NMLlNTTC5WRVJJRllfTk9ORSwgZGVmYXVsdF9jYWxsYmFjaykKLQotICAgICAgICAgICAgICAg
IGFjY2VwdGVkX3NvY2tldCA9IE9wZW5TU0wuU1NMLkNvbm5lY3Rpb24oY3R4LCBhY2NlcHRlZF9z
b2NrZXQpCi0gICAgICAgICAgICAgICAgYWNjZXB0ZWRfc29ja2V0LnNldF9hY2NlcHRfc3RhdGUo
KQotCi0gICAgICAgICAgICAgICAgIyBDb252ZXJ0IFNTTCByZWxhdGVkIGVycm9yIGludG8gc29j
a2V0LmVycm9yIHNvIHRoYXQKLSAgICAgICAgICAgICAgICAjIFNvY2tldFNlcnZlciBpZ25vcmVz
IHRoZW0gYW5kIGtlZXBzIHJ1bm5pbmcuCi0gICAgICAgICAgICAgICAgIwotICAgICAgICAgICAg
ICAgICMgVE9ETyh0eW9zaGlubyk6IENvbnZlcnQgYWxsIGtpbmRzIG9mIGVycm9ycy4KLSAgICAg
ICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGFjY2VwdGVkX3NvY2tldC5kb19o
YW5kc2hha2UoKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBPcGVuU1NMLlNTTC5FcnJvciwgZToK
LSAgICAgICAgICAgICAgICAgICAgIyBTZXQgZXJybm8gcGFydCB0byAxIChTU0xfRVJST1JfU1NM
KSBsaWtlIHRoZSBzc2wgbW9kdWxlCi0gICAgICAgICAgICAgICAgICAgICMgZG9lcy4KLSAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCclcicsIGUpCi0gICAgICAgICAgICAg
ICAgICAgIHJhaXNlIHNvY2tldC5lcnJvcigxLCAnJXInICUgZSkKLSAgICAgICAgICAgICAgICBj
ZXJ0ID0gYWNjZXB0ZWRfc29ja2V0LmdldF9wZWVyX2NlcnRpZmljYXRlKCkKLSAgICAgICAgICAg
ICAgICBpZiBjZXJ0IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9sb2dn
ZXIuZGVidWcoJ0NsaWVudCBjZXJ0IHN1YmplY3Q6ICVyJywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNlcnQuZ2V0X3N1YmplY3QoKS5nZXRfY29tcG9uZW50cygpKQot
ICAgICAgICAgICAgICAgIGFjY2VwdGVkX3NvY2tldCA9IF9TdGFuZGFsb25lU1NMQ29ubmVjdGlv
bihhY2NlcHRlZF9zb2NrZXQpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJh
aXNlIFZhbHVlRXJyb3IoJ05vIFRMUyBzdXBwb3J0IG1vZHVsZSBpcyBhdmFpbGFibGUnKQotCi0g
ICAgICAgIHJldHVybiBhY2NlcHRlZF9zb2NrZXQsIGNsaWVudF9hZGRyZXNzCi0KLSAgICBkZWYg
c2VydmVfZm9yZXZlcihzZWxmLCBwb2xsX2ludGVydmFsPTAuNSk6Ci0gICAgICAgICIiIk92ZXJy
aWRlIFNvY2tldFNlcnZlci5CYXNlU2VydmVyLnNlcnZlX2ZvcmV2ZXIuIiIiCi0KLSAgICAgICAg
c2VsZi5fX3dzX3NlcnZpbmcgPSBUcnVlCi0gICAgICAgIHNlbGYuX193c19pc19zaHV0X2Rvd24u
Y2xlYXIoKQotICAgICAgICBoYW5kbGVfcmVxdWVzdCA9IHNlbGYuaGFuZGxlX3JlcXVlc3QKLSAg
ICAgICAgaWYgaGFzYXR0cihzZWxmLCAnX2hhbmRsZV9yZXF1ZXN0X25vYmxvY2snKToKLSAgICAg
ICAgICAgIGhhbmRsZV9yZXF1ZXN0ID0gc2VsZi5faGFuZGxlX3JlcXVlc3Rfbm9ibG9jawotICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLndhcm5pbmcoJ0ZhbGxiYWNrIHRv
IGJsb2NraW5nIHJlcXVlc3QgaGFuZGxlcicpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHdo
aWxlIHNlbGYuX193c19zZXJ2aW5nOgotICAgICAgICAgICAgICAgIHIsIHcsIGUgPSBzZWxlY3Qu
c2VsZWN0KAotICAgICAgICAgICAgICAgICAgICBbc29ja2V0X1swXSBmb3Igc29ja2V0XyBpbiBz
ZWxmLl9zb2NrZXRzXSwKLSAgICAgICAgICAgICAgICAgICAgW10sIFtdLCBwb2xsX2ludGVydmFs
KQotICAgICAgICAgICAgICAgIGZvciBzb2NrZXRfIGluIHI6Ci0gICAgICAgICAgICAgICAgICAg
IHNlbGYuc29ja2V0ID0gc29ja2V0XwotICAgICAgICAgICAgICAgICAgICBoYW5kbGVfcmVxdWVz
dCgpCi0gICAgICAgICAgICAgICAgc2VsZi5zb2NrZXQgPSBOb25lCi0gICAgICAgIGZpbmFsbHk6
Ci0gICAgICAgICAgICBzZWxmLl9fd3NfaXNfc2h1dF9kb3duLnNldCgpCi0KLSAgICBkZWYgc2h1
dGRvd24oc2VsZik6Ci0gICAgICAgICIiIk92ZXJyaWRlIFNvY2tldFNlcnZlci5CYXNlU2VydmVy
LnNodXRkb3duLiIiIgotCi0gICAgICAgIHNlbGYuX193c19zZXJ2aW5nID0gRmFsc2UKLSAgICAg
ICAgc2VsZi5fX3dzX2lzX3NodXRfZG93bi53YWl0KCkKLQotCi1jbGFzcyBXZWJTb2NrZXRSZXF1
ZXN0SGFuZGxlcihDR0lIVFRQU2VydmVyLkNHSUhUVFBSZXF1ZXN0SGFuZGxlcik6Ci0gICAgIiIi
Q0dJSFRUUFJlcXVlc3RIYW5kbGVyIHNwZWNpYWxpemVkIGZvciBXZWJTb2NrZXQuIiIiCi0KLSAg
ICAjIFVzZSBodHRwbGliLkhUVFBNZXNzYWdlIGluc3RlYWQgb2YgbWltZXRvb2xzLk1lc3NhZ2Uu
Ci0gICAgTWVzc2FnZUNsYXNzID0gaHR0cGxpYi5IVFRQTWVzc2FnZQotCi0gICAgcHJvdG9jb2xf
dmVyc2lvbiA9ICJIVFRQLzEuMSIKLQotICAgIGRlZiBzZXR1cChzZWxmKToKLSAgICAgICAgIiIi
T3ZlcnJpZGUgU29ja2V0U2VydmVyLlN0cmVhbVJlcXVlc3RIYW5kbGVyLnNldHVwIHRvIHdyYXAg
cmZpbGUKLSAgICAgICAgd2l0aCBNZW1vcml6aW5nRmlsZS4KLQotICAgICAgICBUaGlzIG1ldGhv
ZCB3aWxsIGJlIGNhbGxlZCBieSBCYXNlUmVxdWVzdEhhbmRsZXIncyBjb25zdHJ1Y3RvcgotICAg
ICAgICBiZWZvcmUgY2FsbGluZyBCYXNlSFRUUFJlcXVlc3RIYW5kbGVyLmhhbmRsZS4KLSAgICAg
ICAgQmFzZUhUVFBSZXF1ZXN0SGFuZGxlci5oYW5kbGUgd2lsbCBjYWxsCi0gICAgICAgIEJhc2VI
VFRQUmVxdWVzdEhhbmRsZXIuaGFuZGxlX29uZV9yZXF1ZXN0IGFuZCBpdCB3aWxsIGNhbGwKLSAg
ICAgICAgV2ViU29ja2V0UmVxdWVzdEhhbmRsZXIucGFyc2VfcmVxdWVzdC4KLSAgICAgICAgIiIi
Ci0KLSAgICAgICAgIyBDYWxsIHN1cGVyY2xhc3MncyBzZXR1cCB0byBwcmVwYXJlIHJmaWxlLCB3
ZmlsZSwgZXRjLiBTZWUgc2V0dXAKLSAgICAgICAgIyBkZWZpbml0aW9uIG9uIHRoZSByb290IGNs
YXNzIFNvY2tldFNlcnZlci5TdHJlYW1SZXF1ZXN0SGFuZGxlciB0bwotICAgICAgICAjIHVuZGVy
c3RhbmQgd2hhdCB0aGlzIGRvZXMuCi0gICAgICAgIENHSUhUVFBTZXJ2ZXIuQ0dJSFRUUFJlcXVl
c3RIYW5kbGVyLnNldHVwKHNlbGYpCi0KLSAgICAgICAgc2VsZi5yZmlsZSA9IG1lbW9yaXppbmdm
aWxlLk1lbW9yaXppbmdGaWxlKAotICAgICAgICAgICAgc2VsZi5yZmlsZSwKLSAgICAgICAgICAg
IG1heF9tZW1vcml6ZWRfbGluZXM9X01BWF9NRU1PUklaRURfTElORVMpCi0KLSAgICBkZWYgX19p
bml0X18oc2VsZiwgcmVxdWVzdCwgY2xpZW50X2FkZHJlc3MsIHNlcnZlcik6Ci0gICAgICAgIHNl
bGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQotCi0gICAgICAgIHNlbGYu
X29wdGlvbnMgPSBzZXJ2ZXIud2Vic29ja2V0X3NlcnZlcl9vcHRpb25zCi0KLSAgICAgICAgIyBP
dmVycmlkZXMgQ0dJSFRUUFNlcnZlclJlcXVlc3RIYW5kbGVyLmNnaV9kaXJlY3Rvcmllcy4KLSAg
ICAgICAgc2VsZi5jZ2lfZGlyZWN0b3JpZXMgPSBzZWxmLl9vcHRpb25zLmNnaV9kaXJlY3Rvcmll
cwotICAgICAgICAjIFJlcGxhY2UgQ0dJSFRUUFJlcXVlc3RIYW5kbGVyLmlzX2V4ZWN1dGFibGUg
bWV0aG9kLgotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmlzX2V4ZWN1dGFibGVfbWV0aG9kIGlz
IG5vdCBOb25lOgotICAgICAgICAgICAgc2VsZi5pc19leGVjdXRhYmxlID0gc2VsZi5fb3B0aW9u
cy5pc19leGVjdXRhYmxlX21ldGhvZAotCi0gICAgICAgICMgVGhpcyBhY3R1YWxseSBjYWxscyBC
YXNlUmVxdWVzdEhhbmRsZXIuX19pbml0X18uCi0gICAgICAgIENHSUhUVFBTZXJ2ZXIuQ0dJSFRU
UFJlcXVlc3RIYW5kbGVyLl9faW5pdF9fKAotICAgICAgICAgICAgc2VsZiwgcmVxdWVzdCwgY2xp
ZW50X2FkZHJlc3MsIHNlcnZlcikKLQotICAgIGRlZiBwYXJzZV9yZXF1ZXN0KHNlbGYpOgotICAg
ICAgICAiIiJPdmVycmlkZSBCYXNlSFRUUFNlcnZlci5CYXNlSFRUUFJlcXVlc3RIYW5kbGVyLnBh
cnNlX3JlcXVlc3QuCi0KLSAgICAgICAgUmV0dXJuIFRydWUgdG8gY29udGludWUgcHJvY2Vzc2lu
ZyBmb3IgSFRUUChTKSwgRmFsc2Ugb3RoZXJ3aXNlLgotCi0gICAgICAgIFNlZSBCYXNlSFRUUFJl
cXVlc3RIYW5kbGVyLmhhbmRsZV9vbmVfcmVxdWVzdCBtZXRob2Qgd2hpY2ggY2FsbHMKLSAgICAg
ICAgdGhpcyBtZXRob2QgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHJldHVybiB2YWx1ZSB3aWxsIGJl
IGhhbmRsZWQuCi0gICAgICAgICIiIgotCi0gICAgICAgICMgV2UgaG9vayBwYXJzZV9yZXF1ZXN0
IG1ldGhvZCwgYnV0IGFsc28gY2FsbCB0aGUgb3JpZ2luYWwKLSAgICAgICAgIyBDR0lIVFRQUmVx
dWVzdEhhbmRsZXIucGFyc2VfcmVxdWVzdCBzaW5jZSB3aGVuIHdlIHJldHVybiBGYWxzZSwKLSAg
ICAgICAgIyBDR0lIVFRQUmVxdWVzdEhhbmRsZXIuaGFuZGxlX29uZV9yZXF1ZXN0IGNvbnRpbnVl
cyBwcm9jZXNzaW5nIGFuZAotICAgICAgICAjIGl0IG5lZWRzIHZhcmlhYmxlcyBzZXQgYnkgQ0dJ
SFRUUFJlcXVlc3RIYW5kbGVyLnBhcnNlX3JlcXVlc3QuCi0gICAgICAgICMKLSAgICAgICAgIyBW
YXJpYWJsZXMgc2V0IGJ5IHRoaXMgbWV0aG9kIHdpbGwgYmUgYWxzbyB1c2VkIGJ5IFdlYlNvY2tl
dCByZXF1ZXN0Ci0gICAgICAgICMgaGFuZGxpbmcgKHNlbGYucGF0aCwgc2VsZi5jb21tYW5kLCBz
ZWxmLnJlcXVlc3RsaW5lLCBldGMuIFNlZSBhbHNvCi0gICAgICAgICMgaG93IF9TdGFuZGFsb25l
UmVxdWVzdCdzIG1lbWJlcnMgYXJlIGltcGxlbWVudGVkIHVzaW5nIHRoZXNlCi0gICAgICAgICMg
YXR0cmlidXRlcykuCi0gICAgICAgIGlmIG5vdCBDR0lIVFRQU2VydmVyLkNHSUhUVFBSZXF1ZXN0
SGFuZGxlci5wYXJzZV9yZXF1ZXN0KHNlbGYpOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0K
LSAgICAgICAgaWYgc2VsZi5jb21tYW5kID09ICJDT05ORUNUIjoKLSAgICAgICAgICAgIHNlbGYu
c2VuZF9yZXNwb25zZSgyMDAsICJDb25uZWN0ZWQiKQotICAgICAgICAgICAgc2VsZi5zZW5kX2hl
YWRlcigiQ29ubmVjdGlvbiIsICJrZWVwLWFsaXZlIikKLSAgICAgICAgICAgIHNlbGYuZW5kX2hl
YWRlcnMoKQotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgaWYgc2VsZi5fb3B0
aW9ucy51c2VfYmFzaWNfYXV0aDoKLSAgICAgICAgICAgIGF1dGggPSBzZWxmLmhlYWRlcnMuZ2V0
aGVhZGVyKCdBdXRob3JpemF0aW9uJykKLSAgICAgICAgICAgIGlmIGF1dGggIT0gc2VsZi5fb3B0
aW9ucy5iYXNpY19hdXRoX2NyZWRlbnRpYWw6Ci0gICAgICAgICAgICAgICAgc2VsZi5zZW5kX3Jl
c3BvbnNlKDQwMSkKLSAgICAgICAgICAgICAgICBzZWxmLnNlbmRfaGVhZGVyKCdXV1ctQXV0aGVu
dGljYXRlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdCYXNpYyByZWFsbT0i
UHl3ZWJzb2NrZXQiJykKLSAgICAgICAgICAgICAgICBzZWxmLmVuZF9oZWFkZXJzKCkKLSAgICAg
ICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnUmVxdWVzdCBiYXNpYyBhdXRoZW50aWNhdGlv
bicpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgaG9zdCwgcG9ydCwg
cmVzb3VyY2UgPSBodHRwX2hlYWRlcl91dGlsLnBhcnNlX3VyaShzZWxmLnBhdGgpCi0KLSAgICAg
ICAgIyBTcGVjaWFsIHBhdGhzIGZvciBYTUxIdHRwUmVxdWVzdCBiZW5jaG1hcmsKLSAgICAgICAg
eGhyX2JlbmNobWFya19oZWxwZXJfcHJlZml4ID0gJy8wNzNiZTAwMWUxMDk1MDY5MmNjYmYzYTJh
ZDIxYzI0NScKLSAgICAgICAgaWYgcmVzb3VyY2UgPT0gKHhocl9iZW5jaG1hcmtfaGVscGVyX3By
ZWZpeCArICdfc2VuZCcpOgotICAgICAgICAgICAgeGhyX2JlbmNobWFya19oYW5kbGVyID0gWEhS
QmVuY2htYXJrSGFuZGxlcigKLSAgICAgICAgICAgICAgICBzZWxmLmhlYWRlcnMsIHNlbGYucmZp
bGUsIHNlbGYud2ZpbGUpCi0gICAgICAgICAgICB4aHJfYmVuY2htYXJrX2hhbmRsZXIuZG9fc2Vu
ZCgpCi0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgaWYgcmVzb3VyY2UgPT0gKHho
cl9iZW5jaG1hcmtfaGVscGVyX3ByZWZpeCArICdfcmVjZWl2ZScpOgotICAgICAgICAgICAgeGhy
X2JlbmNobWFya19oYW5kbGVyID0gWEhSQmVuY2htYXJrSGFuZGxlcigKLSAgICAgICAgICAgICAg
ICBzZWxmLmhlYWRlcnMsIHNlbGYucmZpbGUsIHNlbGYud2ZpbGUpCi0gICAgICAgICAgICB4aHJf
YmVuY2htYXJrX2hhbmRsZXIuZG9fcmVjZWl2ZSgpCi0gICAgICAgICAgICByZXR1cm4gRmFsc2UK
LQotICAgICAgICBpZiByZXNvdXJjZSBpcyBOb25lOgotICAgICAgICAgICAgc2VsZi5fbG9nZ2Vy
LmluZm8oJ0ludmFsaWQgVVJJOiAlcicsIHNlbGYucGF0aCkKLSAgICAgICAgICAgIHNlbGYuX2xv
Z2dlci5pbmZvKCdGYWxsYmFjayB0byBDR0lIVFRQUmVxdWVzdEhhbmRsZXInKQotICAgICAgICAg
ICAgcmV0dXJuIFRydWUKLSAgICAgICAgc2VydmVyX29wdGlvbnMgPSBzZWxmLnNlcnZlci53ZWJz
b2NrZXRfc2VydmVyX29wdGlvbnMKLSAgICAgICAgaWYgaG9zdCBpcyBub3QgTm9uZToKLSAgICAg
ICAgICAgIHZhbGlkYXRpb25faG9zdCA9IHNlcnZlcl9vcHRpb25zLnZhbGlkYXRpb25faG9zdAot
ICAgICAgICAgICAgaWYgdmFsaWRhdGlvbl9ob3N0IGlzIG5vdCBOb25lIGFuZCBob3N0ICE9IHZh
bGlkYXRpb25faG9zdDoKLSAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnSW52YWxp
ZCBob3N0OiAlciAoZXhwZWN0ZWQ6ICVyKScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaG9zdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9u
X2hvc3QpCi0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0ZhbGxiYWNrIHRvIENH
SUhUVFBSZXF1ZXN0SGFuZGxlcicpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAg
ICAgaWYgcG9ydCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHZhbGlkYXRpb25fcG9ydCA9IHNl
cnZlcl9vcHRpb25zLnZhbGlkYXRpb25fcG9ydAotICAgICAgICAgICAgaWYgdmFsaWRhdGlvbl9w
b3J0IGlzIG5vdCBOb25lIGFuZCBwb3J0ICE9IHZhbGlkYXRpb25fcG9ydDoKLSAgICAgICAgICAg
ICAgICBzZWxmLl9sb2dnZXIuaW5mbygnSW52YWxpZCBwb3J0OiAlciAoZXhwZWN0ZWQ6ICVyKScs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uX3BvcnQpCi0gICAgICAgICAgICAgICAgc2Vs
Zi5fbG9nZ2VyLmluZm8oJ0ZhbGxiYWNrIHRvIENHSUhUVFBSZXF1ZXN0SGFuZGxlcicpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgc2VsZi5wYXRoID0gcmVzb3VyY2UKLQot
ICAgICAgICByZXF1ZXN0ID0gX1N0YW5kYWxvbmVSZXF1ZXN0KHNlbGYsIHNlbGYuX29wdGlvbnMu
dXNlX3RscykKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICAjIEZhbGxiYWNrIHRvIGRlZmF1
bHQgaHR0cCBoYW5kbGVyIGZvciByZXF1ZXN0IHBhdGhzIGZvciB3aGljaAotICAgICAgICAgICAg
IyB3ZSBkb24ndCBoYXZlIHJlcXVlc3QgaGFuZGxlcnMuCi0gICAgICAgICAgICBpZiBub3Qgc2Vs
Zi5fb3B0aW9ucy5kaXNwYXRjaGVyLmdldF9oYW5kbGVyX3N1aXRlKHNlbGYucGF0aCk6Ci0gICAg
ICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ05vIGhhbmRsZXIgZm9yIHJlc291cmNlOiAl
cicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wYXRoKQotICAgICAg
ICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdGYWxsYmFjayB0byBDR0lIVFRQUmVxdWVzdEhh
bmRsZXInKQotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIGV4Y2VwdCBkaXNw
YXRjaC5EaXNwYXRjaEV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZv
KCdEaXNwYXRjaCBmYWlsZWQgZm9yIGVycm9yOiAlcycsIGUpCi0gICAgICAgICAgICBzZWxmLnNl
bmRfZXJyb3IoZS5zdGF0dXMpCi0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICAgICAj
IElmIGFueSBFeGNlcHRpb25zIHdpdGhvdXQgZXhjZXB0IGNsYXVzZSBzZXR1cCAoaW5jbHVkaW5n
Ci0gICAgICAgICMgRGlzcGF0Y2hFeGNlcHRpb24pIGlzIHJhaXNlZCBiZWxvdyB0aGlzIHBvaW50
LCBpdCB3aWxsIGJlIGNhdWdodAotICAgICAgICAjIGFuZCBsb2dnZWQgYnkgV2ViU29ja2V0U2Vy
dmVyLgotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBo
YW5kc2hha2UuZG9faGFuZHNoYWtlKAotICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LAotICAg
ICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmRpc3BhdGNoZXIsCi0gICAgICAgICAgICAg
ICAgICAgIGFsbG93RHJhZnQ3NT1zZWxmLl9vcHRpb25zLmFsbG93X2RyYWZ0NzUsCi0gICAgICAg
ICAgICAgICAgICAgIHN0cmljdD1zZWxmLl9vcHRpb25zLnN0cmljdCkKLSAgICAgICAgICAgIGV4
Y2VwdCBoYW5kc2hha2UuVmVyc2lvbkV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgICAgICBzZWxm
Ll9sb2dnZXIuaW5mbygnSGFuZHNoYWtlIGZhaWxlZCBmb3IgdmVyc2lvbiBlcnJvcjogJXMnLCBl
KQotICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9yZXNwb25zZShjb21tb24uSFRUUF9TVEFUVVNf
QkFEX1JFUVVFU1QpCi0gICAgICAgICAgICAgICAgc2VsZi5zZW5kX2hlYWRlcihjb21tb24uU0VD
X1dFQlNPQ0tFVF9WRVJTSU9OX0hFQURFUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGUuc3VwcG9ydGVkX3ZlcnNpb25zKQotICAgICAgICAgICAgICAgIHNlbGYuZW5kX2hlYWRl
cnMoKQotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICAgICAgZXhjZXB0IGhh
bmRzaGFrZS5IYW5kc2hha2VFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICAgICAgIyBIYW5kc2hh
a2UgZm9yIHdzKHMpIGZhaWxlZC4KLSAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygn
SGFuZHNoYWtlIGZhaWxlZCBmb3IgZXJyb3I6ICVzJywgZSkKLSAgICAgICAgICAgICAgICBzZWxm
LnNlbmRfZXJyb3IoZS5zdGF0dXMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAg
ICAgICAgICAgIHJlcXVlc3QuX2Rpc3BhdGNoZXIgPSBzZWxmLl9vcHRpb25zLmRpc3BhdGNoZXIK
LSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuZGlzcGF0Y2hlci50cmFuc2Zlcl9kYXRhKHJlcXVl
c3QpCi0gICAgICAgIGV4Y2VwdCBoYW5kc2hha2UuQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbiwgZToK
LSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdBYm9ydGVkOiAlcycsIGUpCi0gICAgICAg
IHJldHVybiBGYWxzZQotCi0gICAgZGVmIGxvZ19yZXF1ZXN0KHNlbGYsIGNvZGU9Jy0nLCBzaXpl
PSctJyk6Ci0gICAgICAgICIiIk92ZXJyaWRlIEJhc2VIVFRQU2VydmVyLmxvZ19yZXF1ZXN0LiIi
IgotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCciJXMiICVzICVzJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2VsZi5yZXF1ZXN0bGluZSwgc3RyKGNvZGUpLCBzdHIoc2l6ZSkpCi0K
LSAgICBkZWYgbG9nX2Vycm9yKHNlbGYsICphcmdzKToKLSAgICAgICAgIiIiT3ZlcnJpZGUgQmFz
ZUhUVFBTZXJ2ZXIubG9nX2Vycm9yLiIiIgotCi0gICAgICAgICMgRGVzcGl0ZSB0aGUgbmFtZSwg
dGhpcyBtZXRob2QgaXMgZm9yIHdhcm5pbmdzIHRoYW4gZm9yIGVycm9ycy4KLSAgICAgICAgIyBG
b3IgZXhhbXBsZSwgSFRUUCBzdGF0dXMgY29kZSBpcyBsb2dnZWQgYnkgdGhpcyBtZXRob2QuCi0g
ICAgICAgIHNlbGYuX2xvZ2dlci53YXJuaW5nKCclcyAtICVzJywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZi5hZGRyZXNzX3N0cmluZygpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhcmdzWzBdICUgYXJnc1sxOl0pCi0KLSAgICBkZWYgaXNfY2dpKHNlbGYpOgotICAg
ICAgICAiIiJUZXN0IHdoZXRoZXIgc2VsZi5wYXRoIGNvcnJlc3BvbmRzIHRvIGEgQ0dJIHNjcmlw
dC4KLQotICAgICAgICBBZGQgZXh0cmEgY2hlY2sgdGhhdCBzZWxmLnBhdGggZG9lc24ndCBjb250
YWlucyAuLgotICAgICAgICBBbHNvIGNoZWNrIGlmIHRoZSBmaWxlIGlzIGEgZXhlY3V0YWJsZSBm
aWxlIG9yIG5vdC4KLSAgICAgICAgSWYgdGhlIGZpbGUgaXMgbm90IGV4ZWN1dGFibGUsIGl0IGlz
IGhhbmRsZWQgYXMgc3RhdGljIGZpbGUgb3IgZGlyCi0gICAgICAgIHJhdGhlciB0aGFuIGEgQ0dJ
IHNjcmlwdC4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgaWYgQ0dJSFRUUFNlcnZlci5DR0lIVFRQ
UmVxdWVzdEhhbmRsZXIuaXNfY2dpKHNlbGYpOgotICAgICAgICAgICAgaWYgJy4uJyBpbiBzZWxm
LnBhdGg6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgICAgICAjIHN0cmlw
IHF1ZXJ5IHBhcmFtZXRlciBmcm9tIHJlcXVlc3QgcGF0aAotICAgICAgICAgICAgcmVzb3VyY2Vf
bmFtZSA9IHNlbGYucGF0aC5zcGxpdCgnPycsIDIpWzBdCi0gICAgICAgICAgICAjIGNvbnZlcnQg
cmVzb3VyY2VfbmFtZSBpbnRvIHJlYWwgcGF0aCBuYW1lIGluIGZpbGVzeXN0ZW0uCi0gICAgICAg
ICAgICBzY3JpcHRmaWxlID0gc2VsZi50cmFuc2xhdGVfcGF0aChyZXNvdXJjZV9uYW1lKQotICAg
ICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKHNjcmlwdGZpbGUpOgotICAgICAgICAgICAg
ICAgIHJldHVybiBGYWxzZQotICAgICAgICAgICAgaWYgbm90IHNlbGYuaXNfZXhlY3V0YWJsZShz
Y3JpcHRmaWxlKToKLSAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgICAgIHJl
dHVybiBUcnVlCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0KLWRlZiBfZ2V0X2xvZ2dlcl9mcm9t
X2NsYXNzKGMpOgotICAgIHJldHVybiBsb2dnaW5nLmdldExvZ2dlcignJXMuJXMnICUgKGMuX19t
b2R1bGVfXywgYy5fX25hbWVfXykpCi0KLQotZGVmIF9jb25maWd1cmVfbG9nZ2luZyhvcHRpb25z
KToKLSAgICBsb2dnaW5nLmFkZExldmVsTmFtZShjb21tb24uTE9HTEVWRUxfRklORSwgJ0ZJTkUn
KQotCi0gICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoKQotICAgIGxvZ2dlci5zZXRMZXZl
bChsb2dnaW5nLmdldExldmVsTmFtZShvcHRpb25zLmxvZ19sZXZlbC51cHBlcigpKSkKLSAgICBp
ZiBvcHRpb25zLmxvZ19maWxlOgotICAgICAgICBoYW5kbGVyID0gbG9nZ2luZy5oYW5kbGVycy5S
b3RhdGluZ0ZpbGVIYW5kbGVyKAotICAgICAgICAgICAgICAgIG9wdGlvbnMubG9nX2ZpbGUsICdh
Jywgb3B0aW9ucy5sb2dfbWF4LCBvcHRpb25zLmxvZ19jb3VudCkKLSAgICBlbHNlOgotICAgICAg
ICBoYW5kbGVyID0gbG9nZ2luZy5TdHJlYW1IYW5kbGVyKCkKLSAgICBmb3JtYXR0ZXIgPSBsb2dn
aW5nLkZvcm1hdHRlcigKLSAgICAgICAgICAgICdbJShhc2N0aW1lKXNdIFslKGxldmVsbmFtZSlz
XSAlKG5hbWUpczogJShtZXNzYWdlKXMnKQotICAgIGhhbmRsZXIuc2V0Rm9ybWF0dGVyKGZvcm1h
dHRlcikKLSAgICBsb2dnZXIuYWRkSGFuZGxlcihoYW5kbGVyKQotCi0gICAgZGVmbGF0ZV9sb2df
bGV2ZWxfbmFtZSA9IGxvZ2dpbmcuZ2V0TGV2ZWxOYW1lKAotICAgICAgICBvcHRpb25zLmRlZmxh
dGVfbG9nX2xldmVsLnVwcGVyKCkpCi0gICAgX2dldF9sb2dnZXJfZnJvbV9jbGFzcyh1dGlsLl9E
ZWZsYXRlcikuc2V0TGV2ZWwoCi0gICAgICAgIGRlZmxhdGVfbG9nX2xldmVsX25hbWUpCi0gICAg
X2dldF9sb2dnZXJfZnJvbV9jbGFzcyh1dGlsLl9JbmZsYXRlcikuc2V0TGV2ZWwoCi0gICAgICAg
IGRlZmxhdGVfbG9nX2xldmVsX25hbWUpCi0KLQotZGVmIF9idWlsZF9vcHRpb25fcGFyc2VyKCk6
Ci0gICAgcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKCkKLQotICAgIHBhcnNlci5hZGRf
b3B0aW9uKCctLWNvbmZpZycsIGRlc3Q9J2NvbmZpZ19maWxlJywgdHlwZT0nc3RyaW5nJywKLSAg
ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAg
aGVscD0oJ1BhdGggdG8gY29uZmlndXJhdGlvbiBmaWxlLiBTZWUgdGhlIGZpbGUgY29tbWVudCAn
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2F0IHRoZSB0b3Agb2YgdGhpcyBmaWxlIGZv
ciB0aGUgY29uZmlndXJhdGlvbiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbGUg
Zm9ybWF0JykpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy1IJywgJy0tc2VydmVyLWhvc3QnLCAn
LS1zZXJ2ZXJfaG9zdCcsCi0gICAgICAgICAgICAgICAgICAgICAgZGVzdD0nc2VydmVyX2hvc3Qn
LAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9JycsCi0gICAgICAgICAgICAgICAgICAg
ICAgaGVscD0nc2VydmVyIGhvc3RuYW1lIHRvIGxpc3RlbiB0bycpCi0gICAgcGFyc2VyLmFkZF9v
cHRpb24oJy1WJywgJy0tdmFsaWRhdGlvbi1ob3N0JywgJy0tdmFsaWRhdGlvbl9ob3N0JywKLSAg
ICAgICAgICAgICAgICAgICAgICBkZXN0PSd2YWxpZGF0aW9uX2hvc3QnLAotICAgICAgICAgICAg
ICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdzZXJ2
ZXIgaG9zdG5hbWUgdG8gdmFsaWRhdGUgaW4gYWJzb2x1dGUgcGF0aC4nKQotICAgIHBhcnNlci5h
ZGRfb3B0aW9uKCctcCcsICctLXBvcnQnLCBkZXN0PSdwb3J0JywgdHlwZT0naW50JywKLSAgICAg
ICAgICAgICAgICAgICAgICBkZWZhdWx0PWNvbW1vbi5ERUZBVUxUX1dFQl9TT0NLRVRfUE9SVCwK
LSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdwb3J0IHRvIGxpc3RlbiB0bycpCi0gICAgcGFy
c2VyLmFkZF9vcHRpb24oJy1QJywgJy0tdmFsaWRhdGlvbi1wb3J0JywgJy0tdmFsaWRhdGlvbl9w
b3J0JywKLSAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd2YWxpZGF0aW9uX3BvcnQnLCB0eXBl
PSdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwKLSAgICAgICAgICAg
ICAgICAgICAgICBoZWxwPSdzZXJ2ZXIgcG9ydCB0byB2YWxpZGF0ZSBpbiBhYnNvbHV0ZSBwYXRo
LicpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy13JywgJy0td2Vic29jay1oYW5kbGVycycsICct
LXdlYnNvY2tfaGFuZGxlcnMnLAotICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3dlYnNvY2tf
aGFuZGxlcnMnLAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Jy4nLAotICAgICAgICAg
ICAgICAgICAgICAgIGhlbHA9KCdUaGUgcm9vdCBkaXJlY3Rvcnkgb2YgV2ViU29ja2V0IGhhbmRs
ZXIgZmlsZXMuICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSWYgdGhlIHBhdGggaXMg
cmVsYXRpdmUsIC0tZG9jdW1lbnQtcm9vdCBpcyB1c2VkICcKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnYXMgdGhlIGJhc2UuJykpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy1tJywgJy0t
d2Vic29jay1oYW5kbGVycy1tYXAtZmlsZScsCi0gICAgICAgICAgICAgICAgICAgICAgJy0td2Vi
c29ja19oYW5kbGVyc19tYXBfZmlsZScsCi0gICAgICAgICAgICAgICAgICAgICAgZGVzdD0nd2Vi
c29ja19oYW5kbGVyc19tYXBfZmlsZScsCi0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1O
b25lLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9KCdXZWJTb2NrZXQgaGFuZGxlcnMgbWFw
IGZpbGUuICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRWFjaCBsaW5lIGNvbnNpc3Rz
IG9mIGFsaWFzX3Jlc291cmNlX3BhdGggYW5kICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnZXhpc3RpbmdfcmVzb3VyY2VfcGF0aCwgc2VwYXJhdGVkIGJ5IHNwYWNlcy4nKSkKLSAgICBw
YXJzZXIuYWRkX29wdGlvbignLXMnLCAnLS1zY2FuLWRpcicsICctLXNjYW5fZGlyJywgZGVzdD0n
c2Nhbl9kaXInLAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwKLSAgICAgICAg
ICAgICAgICAgICAgICBoZWxwPSgnTXVzdCBiZSBhIGRpcmVjdG9yeSB1bmRlciAtLXdlYnNvY2st
aGFuZGxlcnMuICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnT25seSBoYW5kbGVycyB1
bmRlciB0aGlzIGRpcmVjdG9yeSBhcmUgc2Nhbm5lZCAnCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ2FuZCByZWdpc3RlcmVkIHRvIHRoZSBzZXJ2ZXIuICcKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnVXNlZnVsIGZvciBzYXZpbmcgc2NhbiB0aW1lIHdoZW4gdGhlIGhhbmRsZXIg
JwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyb290IGRpcmVjdG9yeSBjb250YWlucyBs
b3RzIG9mIGZpbGVzIHRoYXQgYXJlICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbm90
IGhhbmRsZXIgZmlsZSBvciBhcmUgaGFuZGxlciBmaWxlcyBidXQgeW91ICcKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnZG9uXCd0IHdhbnQgdGhlbSB0byBiZSByZWdpc3RlcmVkLiAnKSkK
LSAgICBwYXJzZXIuYWRkX29wdGlvbignLS1hbGxvdy1oYW5kbGVycy1vdXRzaWRlLXJvb3QtZGly
JywKLSAgICAgICAgICAgICAgICAgICAgICAnLS1hbGxvd19oYW5kbGVyc19vdXRzaWRlX3Jvb3Rf
ZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdhbGxvd19oYW5kbGVyc19vdXRzaWRl
X3Jvb3RfZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLAot
ICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAg
ICAgaGVscD0oJ1NjYW5zIFdlYlNvY2tldCBoYW5kbGVycyBldmVuIGlmIHRoZWlyIGNhbm9uaWNh
bCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhdGggaXMgbm90IHVuZGVyIC0td2Vi
c29jay1oYW5kbGVycy4nKSkKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLWQnLCAnLS1kb2N1bWVu
dC1yb290JywgJy0tZG9jdW1lbnRfcm9vdCcsCi0gICAgICAgICAgICAgICAgICAgICAgZGVzdD0n
ZG9jdW1lbnRfcm9vdCcsIGRlZmF1bHQ9Jy4nLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9
J0RvY3VtZW50IHJvb3QgZGlyZWN0b3J5LicpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy14Jywg
Jy0tY2dpLXBhdGhzJywgJy0tY2dpX3BhdGhzJywgZGVzdD0nY2dpX3BhdGhzJywKLSAgICAgICAg
ICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0o
J0NHSSBwYXRocyByZWxhdGl2ZSB0byBkb2N1bWVudF9yb290LicKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnQ29tbWEtc2VwYXJhdGVkLiAoZS5nIC14IC9jZ2ksL2h0YmluKSAnCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ0ZpbGVzIHVuZGVyIGRvY3VtZW50X3Jvb3QvY2dpX3Bh
dGggYXJlIGhhbmRsZWQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcyBDR0kgcHJv
Z3JhbXMuIE11c3QgYmUgZXhlY3V0YWJsZS4nKSkKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLXQn
LCAnLS10bHMnLCBkZXN0PSd1c2VfdGxzJywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAg
ICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLCBoZWxwPSd1c2UgVExTICh3c3M6Ly8pJykKLSAg
ICBwYXJzZXIuYWRkX29wdGlvbignLS10bHMtbW9kdWxlJywgJy0tdGxzX21vZHVsZScsIGRlc3Q9
J3Rsc19tb2R1bGUnLAotICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J2Nob2ljZScsCi0gICAg
ICAgICAgICAgICAgICAgICAgY2hvaWNlcyA9IFtfVExTX0JZX1NUQU5EQVJEX01PRFVMRSwgX1RM
U19CWV9QWU9QRU5TU0xdLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1VzZSBzc2wgbW9k
dWxlIGlmICIlcyIgaXMgc3BlY2lmaWVkLiAnCi0gICAgICAgICAgICAgICAgICAgICAgJ1VzZSBw
eU9wZW5TU0wgbW9kdWxlIGlmICIlcyIgaXMgc3BlY2lmaWVkJyAlCi0gICAgICAgICAgICAgICAg
ICAgICAgKF9UTFNfQllfU1RBTkRBUkRfTU9EVUxFLCBfVExTX0JZX1BZT1BFTlNTTCkpCi0gICAg
cGFyc2VyLmFkZF9vcHRpb24oJy1rJywgJy0tcHJpdmF0ZS1rZXknLCAnLS1wcml2YXRlX2tleScs
Ci0gICAgICAgICAgICAgICAgICAgICAgZGVzdD0ncHJpdmF0ZV9rZXknLAotICAgICAgICAgICAg
ICAgICAgICAgIGRlZmF1bHQ9JycsIGhlbHA9J1RMUyBwcml2YXRlIGtleSBmaWxlLicpCi0gICAg
cGFyc2VyLmFkZF9vcHRpb24oJy1jJywgJy0tY2VydGlmaWNhdGUnLCBkZXN0PSdjZXJ0aWZpY2F0
ZScsCi0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0nJywgaGVscD0nVExTIGNlcnRpZmlj
YXRlIGZpbGUuJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLS10bHMtY2xpZW50LWF1dGgnLCBk
ZXN0PSd0bHNfY2xpZW50X2F1dGgnLAotICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3Rv
cmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0nUmVx
dWVzdHMgVExTIGNsaWVudCBhdXRoIG9uIGV2ZXJ5IGNvbm5lY3Rpb24uJykKLSAgICBwYXJzZXIu
YWRkX29wdGlvbignLS10bHMtY2xpZW50LWNlcnQtb3B0aW9uYWwnLAotICAgICAgICAgICAgICAg
ICAgICAgIGRlc3Q9J3Rsc19jbGllbnRfY2VydF9vcHRpb25hbCcsCi0gICAgICAgICAgICAgICAg
ICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgICAgICAg
ICAgICAgICBoZWxwPSgnTWFrZXMgY2xpZW50IGNlcnRpZmljYXRlIG9wdGlvbmFsIGV2ZW4gdGhv
dWdoICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVExTIGNsaWVudCBhdXRoIGlzIGVu
YWJsZWQuJykpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tdGxzLWNsaWVudC1jYScsIGRlc3Q9
J3Rsc19jbGllbnRfY2EnLCBkZWZhdWx0PScnLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9
KCdTcGVjaWZpZXMgYSBwZW0gZmlsZSB3aGljaCBjb250YWlucyBhIHNldCBvZiAnCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ2NvbmNhdGVuYXRlZCBDQSBjZXJ0aWZpY2F0ZXMgd2hpY2gg
YXJlIHVzZWQgdG8gJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2YWxpZGF0ZSBjZXJ0
aWZpY2F0ZXMgcGFzc2VkIGZyb20gY2xpZW50cycpKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCct
LWJhc2ljLWF1dGgnLCBkZXN0PSd1c2VfYmFzaWNfYXV0aCcsCi0gICAgICAgICAgICAgICAgICAg
ICAgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgICAgICAgICAg
ICAgICBoZWxwPSdSZXF1aXJlcyBCYXNpYyBhdXRoZW50aWNhdGlvbi4nKQotICAgIHBhcnNlci5h
ZGRfb3B0aW9uKCctLWJhc2ljLWF1dGgtY3JlZGVudGlhbCcsCi0gICAgICAgICAgICAgICAgICAg
ICAgZGVzdD0nYmFzaWNfYXV0aF9jcmVkZW50aWFsJywgZGVmYXVsdD0ndGVzdDp0ZXN0JywKLSAg
ICAgICAgICAgICAgICAgICAgICBoZWxwPSdTcGVjaWZpZXMgdGhlIGNyZWRlbnRpYWwgb2YgYmFz
aWMgYXV0aGVudGljYXRpb24gJwotICAgICAgICAgICAgICAgICAgICAgICdieSB1c2VybmFtZTpw
YXNzd29yZCBwYWlyIChlLmcuIHRlc3Q6dGVzdCkuJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbign
LWwnLCAnLS1sb2ctZmlsZScsICctLWxvZ19maWxlJywgZGVzdD0nbG9nX2ZpbGUnLAotICAgICAg
ICAgICAgICAgICAgICAgIGRlZmF1bHQ9JycsIGhlbHA9J0xvZyBmaWxlLicpCi0gICAgIyBDdXN0
b20gbG9nIGxldmVsOgotICAgICMgLSBGSU5FOiBQcmludHMgc3RhdHVzIG9mIGVhY2ggZnJhbWUg
cHJvY2Vzc2luZyBzdGVwCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tbG9nLWxldmVsJywgJy0t
bG9nX2xldmVsJywgdHlwZT0nY2hvaWNlJywKLSAgICAgICAgICAgICAgICAgICAgICBkZXN0PSds
b2dfbGV2ZWwnLCBkZWZhdWx0PSd3YXJuJywKLSAgICAgICAgICAgICAgICAgICAgICBjaG9pY2Vz
PVsnZmluZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlYnVnJywgJ2luZm8n
LCAnd2FybmluZycsICd3YXJuJywgJ2Vycm9yJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnY3JpdGljYWwnXSwKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdMb2cgbGV2ZWwu
JykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLS1kZWZsYXRlLWxvZy1sZXZlbCcsICctLWRlZmxh
dGVfbG9nX2xldmVsJywKLSAgICAgICAgICAgICAgICAgICAgICB0eXBlPSdjaG9pY2UnLAotICAg
ICAgICAgICAgICAgICAgICAgIGRlc3Q9J2RlZmxhdGVfbG9nX2xldmVsJywgZGVmYXVsdD0nd2Fy
bicsCi0gICAgICAgICAgICAgICAgICAgICAgY2hvaWNlcz1bJ2RlYnVnJywgJ2luZm8nLCAnd2Fy
bmluZycsICd3YXJuJywgJ2Vycm9yJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
Y3JpdGljYWwnXSwKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdMb2cgbGV2ZWwgZm9yIF9E
ZWZsYXRlciBhbmQgX0luZmxhdGVyLicpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tdGhyZWFk
LW1vbml0b3ItaW50ZXJ2YWwtaW4tc2VjJywKLSAgICAgICAgICAgICAgICAgICAgICAnLS10aHJl
YWRfbW9uaXRvcl9pbnRlcnZhbF9pbl9zZWMnLAotICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9
J3RocmVhZF9tb25pdG9yX2ludGVydmFsX2luX3NlYycsCi0gICAgICAgICAgICAgICAgICAgICAg
dHlwZT0naW50JywgZGVmYXVsdD0tMSwKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSgnSWYg
cG9zaXRpdmUgaW50ZWdlciBpcyBzcGVjaWZpZWQsIHJ1biBhIHRocmVhZCAnCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ21vbml0b3IgdG8gc2hvdyB0aGUgc3RhdHVzIG9mIHNlcnZlciB0
aHJlYWRzICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGVyaW9kaWNhbGx5IGluIHRo
ZSBzcGVjaWZpZWQgaW50ZXZhbCBpbiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Nl
Y29uZC4gSWYgbm9uLXBvc2l0aXZlIGludGVnZXIgaXMgc3BlY2lmaWVkLCAnCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ2Rpc2FibGUgdGhlIHRocmVhZCBtb25pdG9yLicpKQotICAgIHBh
cnNlci5hZGRfb3B0aW9uKCctLWxvZy1tYXgnLCAnLS1sb2dfbWF4JywgZGVzdD0nbG9nX21heCcs
IHR5cGU9J2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1fREVGQVVMVF9MT0df
TUFYX0JZVEVTLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J0xvZyBtYXhpbXVtIGJ5dGVz
JykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLS1sb2ctY291bnQnLCAnLS1sb2dfY291bnQnLCBk
ZXN0PSdsb2dfY291bnQnLAotICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J2ludCcsIGRlZmF1
bHQ9X0RFRkFVTFRfTE9HX0JBQ0tVUF9DT1VOVCwKLSAgICAgICAgICAgICAgICAgICAgICBoZWxw
PSdMb2cgYmFja3VwIGNvdW50JykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLS1hbGxvdy1kcmFm
dDc1JywgZGVzdD0nYWxsb3dfZHJhZnQ3NScsCi0gICAgICAgICAgICAgICAgICAgICAgYWN0aW9u
PSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICBoZWxw
PSdPYnNvbGV0ZSBvcHRpb24uIElnbm9yZWQuJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLS1z
dHJpY3QnLCBkZXN0PSdzdHJpY3QnLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAgICAg
ICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsIGhlbHA9J09ic29sZXRlIG9wdGlvbi4gSWdub3JlZC4n
KQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctcScsICctLXF1ZXVlJywgZGVzdD0ncmVxdWVzdF9x
dWV1ZV9zaXplJywgdHlwZT0naW50JywKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PV9E
RUZBVUxUX1JFUVVFU1RfUVVFVUVfU0laRSwKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdy
ZXF1ZXN0IHF1ZXVlIHNpemUnKQotCi0gICAgcmV0dXJuIHBhcnNlcgotCi0KLWNsYXNzIFRocmVh
ZE1vbml0b3IodGhyZWFkaW5nLlRocmVhZCk6Ci0gICAgZGFlbW9uID0gVHJ1ZQotCi0gICAgZGVm
IF9faW5pdF9fKHNlbGYsIGludGVydmFsX2luX3NlYyk6Ci0gICAgICAgIHRocmVhZGluZy5UaHJl
YWQuX19pbml0X18oc2VsZiwgbmFtZT0nVGhyZWFkTW9uaXRvcicpCi0KLSAgICAgICAgc2VsZi5f
bG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgc2VsZi5faW50
ZXJ2YWxfaW5fc2VjID0gaW50ZXJ2YWxfaW5fc2VjCi0KLSAgICBkZWYgcnVuKHNlbGYpOgotICAg
ICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgdGhyZWFkX25hbWVfbGlzdCA9IFtdCi0gICAg
ICAgICAgICBmb3IgdGhyZWFkIGluIHRocmVhZGluZy5lbnVtZXJhdGUoKToKLSAgICAgICAgICAg
ICAgICB0aHJlYWRfbmFtZV9saXN0LmFwcGVuZCh0aHJlYWQubmFtZSkKLSAgICAgICAgICAgIHNl
bGYuX2xvZ2dlci5pbmZvKAotICAgICAgICAgICAgICAgICIlZCBhY3RpdmUgdGhyZWFkczogJXMi
LAotICAgICAgICAgICAgICAgIHRocmVhZGluZy5hY3RpdmVfY291bnQoKSwKLSAgICAgICAgICAg
ICAgICAnLCAnLmpvaW4odGhyZWFkX25hbWVfbGlzdCkpCi0gICAgICAgICAgICB0aW1lLnNsZWVw
KHNlbGYuX2ludGVydmFsX2luX3NlYykKLQotCi1kZWYgX3BhcnNlX2FyZ3NfYW5kX2NvbmZpZyhh
cmdzKToKLSAgICBwYXJzZXIgPSBfYnVpbGRfb3B0aW9uX3BhcnNlcigpCi0KLSAgICAjIEZpcnN0
LCBwYXJzZSBvcHRpb25zIHdpdGhvdXQgY29uZmlndXJhdGlvbiBmaWxlLgotICAgIHRlbXBvcmFy
eV9vcHRpb25zLCB0ZW1wb3JhcnlfYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3M9YXJncykK
LSAgICBpZiB0ZW1wb3JhcnlfYXJnczoKLSAgICAgICAgbG9nZ2luZy5jcml0aWNhbCgKLSAgICAg
ICAgICAgICdVbnJlY29nbml6ZWQgcG9zaXRpb25hbCBhcmd1bWVudHM6ICVyJywgdGVtcG9yYXJ5
X2FyZ3MpCi0gICAgICAgIHN5cy5leGl0KDEpCi0KLSAgICBpZiB0ZW1wb3Jhcnlfb3B0aW9ucy5j
b25maWdfZmlsZToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgY29uZmlnX2ZwID0gb3Blbih0
ZW1wb3Jhcnlfb3B0aW9ucy5jb25maWdfZmlsZSwgJ3InKQotICAgICAgICBleGNlcHQgSU9FcnJv
ciwgZToKLSAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoCi0gICAgICAgICAgICAgICAgJ0Zh
aWxlZCB0byBvcGVuIGNvbmZpZ3VyYXRpb24gZmlsZSAlcjogJXInLAotICAgICAgICAgICAgICAg
IHRlbXBvcmFyeV9vcHRpb25zLmNvbmZpZ19maWxlLAotICAgICAgICAgICAgICAgIGUpCi0gICAg
ICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgICAgIGNvbmZpZ19wYXJzZXIgPSBDb25maWdQYXJz
ZXIuU2FmZUNvbmZpZ1BhcnNlcigpCi0gICAgICAgIGNvbmZpZ19wYXJzZXIucmVhZGZwKGNvbmZp
Z19mcCkKLSAgICAgICAgY29uZmlnX2ZwLmNsb3NlKCkKLQotICAgICAgICBhcmdzX2Zyb21fY29u
ZmlnID0gW10KLSAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIGNvbmZpZ19wYXJzZXIuaXRlbXMo
J3B5d2Vic29ja2V0Jyk6Ci0gICAgICAgICAgICBhcmdzX2Zyb21fY29uZmlnLmFwcGVuZCgnLS0n
ICsgbmFtZSkKLSAgICAgICAgICAgIGFyZ3NfZnJvbV9jb25maWcuYXBwZW5kKHZhbHVlKQotICAg
ICAgICBpZiBhcmdzIGlzIE5vbmU6Ci0gICAgICAgICAgICBhcmdzID0gYXJnc19mcm9tX2NvbmZp
ZwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYXJncyA9IGFyZ3NfZnJvbV9jb25maWcgKyBh
cmdzCi0gICAgICAgIHJldHVybiBwYXJzZXIucGFyc2VfYXJncyhhcmdzPWFyZ3MpCi0gICAgZWxz
ZToKLSAgICAgICAgcmV0dXJuIHRlbXBvcmFyeV9vcHRpb25zLCB0ZW1wb3JhcnlfYXJncwotCi0K
LWRlZiBfbWFpbihhcmdzPU5vbmUpOgotICAgICIiIllvdSBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9u
IGZyb20geW91ciBvd24gcHJvZ3JhbSwgYnV0IHBsZWFzZSBub3RlIHRoYXQKLSAgICB0aGlzIGZ1
bmN0aW9uIGhhcyBzb21lIHNpZGUtZWZmZWN0cyB0aGF0IG1pZ2h0IGFmZmVjdCB5b3VyIHByb2dy
YW0uIEZvcgotICAgIGV4YW1wbGUsIHV0aWwud3JhcF9wb3BlbjNfZm9yX3dpbiB1c2UgaW4gdGhp
cyBtZXRob2QgcmVwbGFjZXMgaW1wbGVtZW50YXRpb24KLSAgICBvZiBvcy5wb3BlbjMuCi0gICAg
IiIiCi0KLSAgICBvcHRpb25zLCBhcmdzID0gX3BhcnNlX2FyZ3NfYW5kX2NvbmZpZyhhcmdzPWFy
Z3MpCi0KLSAgICBvcy5jaGRpcihvcHRpb25zLmRvY3VtZW50X3Jvb3QpCi0KLSAgICBfY29uZmln
dXJlX2xvZ2dpbmcob3B0aW9ucykKLQotICAgIGlmIG9wdGlvbnMuYWxsb3dfZHJhZnQ3NToKLSAg
ICAgICAgbG9nZ2luZy53YXJuaW5nKCctLWFsbG93X2RyYWZ0NzUgb3B0aW9uIGlzIG9ic29sZXRl
LicpCi0KLSAgICBpZiBvcHRpb25zLnN0cmljdDoKLSAgICAgICAgbG9nZ2luZy53YXJuaW5nKCct
LXN0cmljdCBvcHRpb24gaXMgb2Jzb2xldGUuJykKLQotICAgICMgVE9ETyh0eW9zaGlubyk6IENs
ZWFuIHVwIGluaXRpYWxpemF0aW9uIG9mIENHSSByZWxhdGVkIHZhbHVlcy4gTW92ZSBzb21lCi0g
ICAgIyBvZiBjb2RlIGhlcmUgdG8gV2ViU29ja2V0UmVxdWVzdEhhbmRsZXIgY2xhc3MgaWYgaXQn
cyBiZXR0ZXIuCi0gICAgb3B0aW9ucy5jZ2lfZGlyZWN0b3JpZXMgPSBbXQotICAgIG9wdGlvbnMu
aXNfZXhlY3V0YWJsZV9tZXRob2QgPSBOb25lCi0gICAgaWYgb3B0aW9ucy5jZ2lfcGF0aHM6Ci0g
ICAgICAgIG9wdGlvbnMuY2dpX2RpcmVjdG9yaWVzID0gb3B0aW9ucy5jZ2lfcGF0aHMuc3BsaXQo
JywnKQotICAgICAgICBpZiBzeXMucGxhdGZvcm0gaW4gKCdjeWd3aW4nLCAnd2luMzInKToKLSAg
ICAgICAgICAgIGN5Z3dpbl9wYXRoID0gTm9uZQotICAgICAgICAgICAgIyBGb3IgV2luMzIgUHl0
aG9uLCBpdCBpcyBleHBlY3RlZCB0aGF0IENZR1dJTl9QQVRICi0gICAgICAgICAgICAjIGlzIHNl
dCB0byBhIGRpcmVjdG9yeSBvZiBjeWd3aW4gYmluYXJpZXMuCi0gICAgICAgICAgICAjIEZvciBl
eGFtcGxlLCB3ZWJzb2NrZXRfc2VydmVyLnB5IGluIENocm9taXVtIHNldHMgQ1lHV0lOX1BBVEgg
dG8KLSAgICAgICAgICAgICMgZnVsbCBwYXRoIG9mIHRoaXJkX3BhcnR5L2N5Z3dpbi9iaW4uCi0g
ICAgICAgICAgICBpZiAnQ1lHV0lOX1BBVEgnIGluIG9zLmVudmlyb246Ci0gICAgICAgICAgICAg
ICAgY3lnd2luX3BhdGggPSBvcy5lbnZpcm9uWydDWUdXSU5fUEFUSCddCi0gICAgICAgICAgICB1
dGlsLndyYXBfcG9wZW4zX2Zvcl93aW4oY3lnd2luX3BhdGgpCi0KLSAgICAgICAgICAgIGRlZiBf
X2NoZWNrX3NjcmlwdChzY3JpcHRwYXRoKToKLSAgICAgICAgICAgICAgICByZXR1cm4gdXRpbC5n
ZXRfc2NyaXB0X2ludGVycChzY3JpcHRwYXRoLCBjeWd3aW5fcGF0aCkKLQotICAgICAgICAgICAg
b3B0aW9ucy5pc19leGVjdXRhYmxlX21ldGhvZCA9IF9fY2hlY2tfc2NyaXB0Ci0KLSAgICBpZiBv
cHRpb25zLnVzZV90bHM6Ci0gICAgICAgIGlmIG9wdGlvbnMudGxzX21vZHVsZSBpcyBOb25lOgot
ICAgICAgICAgICAgaWYgX2ltcG9ydF9zc2woKToKLSAgICAgICAgICAgICAgICBvcHRpb25zLnRs
c19tb2R1bGUgPSBfVExTX0JZX1NUQU5EQVJEX01PRFVMRQotICAgICAgICAgICAgICAgIGxvZ2dp
bmcuZGVidWcoJ1VzaW5nIHNzbCBtb2R1bGUnKQotICAgICAgICAgICAgZWxpZiBfaW1wb3J0X3B5
b3BlbnNzbCgpOgotICAgICAgICAgICAgICAgIG9wdGlvbnMudGxzX21vZHVsZSA9IF9UTFNfQllf
UFlPUEVOU1NMCi0gICAgICAgICAgICAgICAgbG9nZ2luZy5kZWJ1ZygnVXNpbmcgcHlPcGVuU1NM
IG1vZHVsZScpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGxvZ2dpbmcuY3Jp
dGljYWwoCi0gICAgICAgICAgICAgICAgICAgICAgICAnVExTIHN1cHBvcnQgcmVxdWlyZXMgc3Ns
IG9yIHB5T3BlblNTTCBtb2R1bGUuJykKLSAgICAgICAgICAgICAgICBzeXMuZXhpdCgxKQotICAg
ICAgICBlbGlmIG9wdGlvbnMudGxzX21vZHVsZSA9PSBfVExTX0JZX1NUQU5EQVJEX01PRFVMRToK
LSAgICAgICAgICAgIGlmIG5vdCBfaW1wb3J0X3NzbCgpOgotICAgICAgICAgICAgICAgIGxvZ2dp
bmcuY3JpdGljYWwoJ3NzbCBtb2R1bGUgaXMgbm90IGF2YWlsYWJsZScpCi0gICAgICAgICAgICAg
ICAgc3lzLmV4aXQoMSkKLSAgICAgICAgZWxpZiBvcHRpb25zLnRsc19tb2R1bGUgPT0gX1RMU19C
WV9QWU9QRU5TU0w6Ci0gICAgICAgICAgICBpZiBub3QgX2ltcG9ydF9weW9wZW5zc2woKToKLSAg
ICAgICAgICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKCdweU9wZW5TU0wgbW9kdWxlIGlzIG5vdCBh
dmFpbGFibGUnKQotICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCi0gICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKCdJbnZhbGlkIC0tdGxzLW1vZHVsZSBvcHRpb246
ICVyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy50bHNfbW9kdWxlKQot
ICAgICAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgICAgICBpZiBub3Qgb3B0aW9ucy5wcml2YXRl
X2tleSBvciBub3Qgb3B0aW9ucy5jZXJ0aWZpY2F0ZToKLSAgICAgICAgICAgIGxvZ2dpbmcuY3Jp
dGljYWwoCi0gICAgICAgICAgICAgICAgICAgICdUbyB1c2UgVExTLCBzcGVjaWZ5IHByaXZhdGVf
a2V5IGFuZCBjZXJ0aWZpY2F0ZS4nKQotICAgICAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgICAg
ICBpZiAob3B0aW9ucy50bHNfY2xpZW50X2NlcnRfb3B0aW9uYWwgYW5kCi0gICAgICAgICAgICBu
b3Qgb3B0aW9ucy50bHNfY2xpZW50X2F1dGgpOgotICAgICAgICAgICAgbG9nZ2luZy5jcml0aWNh
bCgnQ2xpZW50IGF1dGhlbnRpY2F0aW9uIG11c3QgYmUgZW5hYmxlZCB0byAnCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdzcGVjaWZ5IHRsc19jbGllbnRfY2VydF9vcHRpb25hbCcpCi0g
ICAgICAgICAgICBzeXMuZXhpdCgxKQotICAgIGVsc2U6Ci0gICAgICAgIGlmIG9wdGlvbnMudGxz
X21vZHVsZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoJ1VzZSAt
LXRscy1tb2R1bGUgb3B0aW9uIG9ubHkgdG9nZXRoZXIgd2l0aCAnCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICctLXVzZS10bHMgb3B0aW9uLicpCi0gICAgICAgICAgICBzeXMuZXhpdCgx
KQotCi0gICAgICAgIGlmIG9wdGlvbnMudGxzX2NsaWVudF9hdXRoOgotICAgICAgICAgICAgbG9n
Z2luZy5jcml0aWNhbCgnVExTIG11c3QgYmUgZW5hYmxlZCBmb3IgY2xpZW50IGF1dGhlbnRpY2F0
aW9uLicpCi0gICAgICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgICAgIGlmIG9wdGlvbnMudGxz
X2NsaWVudF9jZXJ0X29wdGlvbmFsOgotICAgICAgICAgICAgbG9nZ2luZy5jcml0aWNhbCgnVExT
IG11c3QgYmUgZW5hYmxlZCBmb3IgY2xpZW50IGF1dGhlbnRpY2F0aW9uLicpCi0gICAgICAgICAg
ICBzeXMuZXhpdCgxKQotCi0gICAgaWYgbm90IG9wdGlvbnMuc2Nhbl9kaXI6Ci0gICAgICAgIG9w
dGlvbnMuc2Nhbl9kaXIgPSBvcHRpb25zLndlYnNvY2tfaGFuZGxlcnMKLQotICAgIGlmIG9wdGlv
bnMudXNlX2Jhc2ljX2F1dGg6Ci0gICAgICAgIG9wdGlvbnMuYmFzaWNfYXV0aF9jcmVkZW50aWFs
ID0gJ0Jhc2ljICcgKyBiYXNlNjQuYjY0ZW5jb2RlKAotICAgICAgICAgICAgb3B0aW9ucy5iYXNp
Y19hdXRoX2NyZWRlbnRpYWwpCi0KLSAgICB0cnk6Ci0gICAgICAgIGlmIG9wdGlvbnMudGhyZWFk
X21vbml0b3JfaW50ZXJ2YWxfaW5fc2VjID4gMDoKLSAgICAgICAgICAgICMgUnVuIGEgdGhyZWFk
IG1vbml0b3IgdG8gc2hvdyB0aGUgc3RhdHVzIG9mIHNlcnZlciB0aHJlYWRzIGZvcgotICAgICAg
ICAgICAgIyBkZWJ1Z2dpbmcuCi0gICAgICAgICAgICBUaHJlYWRNb25pdG9yKG9wdGlvbnMudGhy
ZWFkX21vbml0b3JfaW50ZXJ2YWxfaW5fc2VjKS5zdGFydCgpCi0KLSAgICAgICAgc2VydmVyID0g
V2ViU29ja2V0U2VydmVyKG9wdGlvbnMpCi0gICAgICAgIHNlcnZlci5zZXJ2ZV9mb3JldmVyKCkK
LSAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKCdtb2Rf
cHl3ZWJzb2NrZXQ6ICVzJyAlIGUpCi0gICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoJ21vZF9weXdl
YnNvY2tldDogJXMnICUgdXRpbC5nZXRfc3RhY2tfdHJhY2UoKSkKLSAgICAgICAgc3lzLmV4aXQo
MSkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIF9tYWluKHN5cy5hcmd2WzE6
XSkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdl
YnNvY2tldC9zdHJlYW0ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvc3RyZWFtLnB5CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZGM1MzMyNzk3NDk3YjU4MGUzYjdlZmYyZjg4
ZDE4OGQ3MDQxZjEzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3
ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC9zdHJlYW0ucHkKKysrIC9kZXYvbnVsbApAQCAt
MSw1NyArMCwwIEBACi0jIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRz
IHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0j
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMg
ZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMg
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
IyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
IyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJUaGlzIGZpbGUgZXhwb3J0cyBw
dWJsaWMgc3ltYm9scy4KLSIiIgotCi0KLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fYmFz
ZSBpbXBvcnQgQmFkT3BlcmF0aW9uRXhjZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3Ry
ZWFtX2Jhc2UgaW1wb3J0IENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uCi1mcm9tIG1vZF9w
eXdlYnNvY2tldC5fc3RyZWFtX2Jhc2UgaW1wb3J0IEludmFsaWRGcmFtZUV4Y2VwdGlvbgotZnJv
bSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9iYXNlIGltcG9ydCBJbnZhbGlkVVRGOEV4Y2VwdGlv
bgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9iYXNlIGltcG9ydCBVbnN1cHBvcnRlZEZy
YW1lRXhjZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2hpeGllNzUgaW1wb3J0
IFN0cmVhbUhpeGllNzUKLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1faHliaSBpbXBvcnQg
RnJhbWUKLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1faHliaSBpbXBvcnQgU3RyZWFtCi1m
cm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0IFN0cmVhbU9wdGlvbnMKLQot
IyBUaGVzZSBtZXRob2RzIGFyZSBpbnRlbmRlZCB0byBiZSB1c2VkIGJ5IFdlYlNvY2tldCBjbGll
bnQgZGV2ZWxvcGVycyB0byBoYXZlCi0jIHRoZWlyIGltcGxlbWVudGF0aW9ucyByZWNlaXZlIGJy
b2tlbiBkYXRhIGluIHRlc3RzLgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9oeWJpIGlt
cG9ydCBjcmVhdGVfY2xvc2VfZnJhbWUKLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1faHli
aSBpbXBvcnQgY3JlYXRlX2hlYWRlcgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9oeWJp
IGltcG9ydCBjcmVhdGVfbGVuZ3RoX2hlYWRlcgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVh
bV9oeWJpIGltcG9ydCBjcmVhdGVfcGluZ19mcmFtZQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0
cmVhbV9oeWJpIGltcG9ydCBjcmVhdGVfcG9uZ19mcmFtZQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQu
X3N0cmVhbV9oeWJpIGltcG9ydCBjcmVhdGVfYmluYXJ5X2ZyYW1lCi1mcm9tIG1vZF9weXdlYnNv
Y2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0IGNyZWF0ZV90ZXh0X2ZyYW1lCi1mcm9tIG1vZF9weXdl
YnNvY2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0IGNyZWF0ZV9jbG9zaW5nX2hhbmRzaGFrZV9ib2R5
Ci0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJz
b2NrZXQvdXRpbC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC91dGlsLnB5CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMjI0YWUzOTQyZDdmZTJjZjc3Yjk4ODQ5NWVmNmUyOGEx
YmY0OGRjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvc3JjL21vZF9weXdlYnNvY2tldC91dGlsLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDE2ICsw
LDAgQEAKLSMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmli
dXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIldlYlNvY2tldCB1dGlsaXRpZXMuCi0iIiIK
LQotCi1pbXBvcnQgYXJyYXkKLWltcG9ydCBlcnJubwotCi0jIEltcG9ydCBoYXNoIGNsYXNzZXMg
ZnJvbSBhIG1vZHVsZSBhdmFpbGFibGUgYW5kIHJlY29tbWVuZGVkIGZvciBlYWNoIFB5dGhvbgot
IyB2ZXJzaW9uIGFuZCByZS1leHBvcnQgdGhvc2Ugc3ltYm9sLiBVc2Ugc2hhIGFuZCBtZDUgbW9k
dWxlIGluIFB5dGhvbiAyLjQsIGFuZAotIyBoYXNobGliIG1vZHVsZSBpbiBQeXRob24gMi42Lgot
dHJ5OgotICAgIGltcG9ydCBoYXNobGliCi0gICAgbWQ1X2hhc2ggPSBoYXNobGliLm1kNQotICAg
IHNoYTFfaGFzaCA9IGhhc2hsaWIuc2hhMQotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIGltcG9y
dCBtZDUKLSAgICBpbXBvcnQgc2hhCi0gICAgbWQ1X2hhc2ggPSBtZDUubWQ1Ci0gICAgc2hhMV9o
YXNoID0gc2hhLnNoYQotCi1pbXBvcnQgU3RyaW5nSU8KLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQg
b3MKLWltcG9ydCByZQotaW1wb3J0IHNvY2tldAotaW1wb3J0IHRyYWNlYmFjawotaW1wb3J0IHps
aWIKLQotdHJ5OgotICAgIGZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBmYXN0X21hc2tpbmcK
LWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBwYXNzCi0KLQotZGVmIGdldF9zdGFja190cmFjZSgp
OgotICAgICIiIkdldCB0aGUgY3VycmVudCBzdGFjayB0cmFjZSBhcyBzdHJpbmcuCi0KLSAgICBU
aGlzIGlzIG5lZWRlZCB0byBzdXBwb3J0IFB5dGhvbiAyLjMuCi0gICAgVE9ETzogUmVtb3ZlIHRo
aXMgd2hlbiB3ZSBvbmx5IHN1cHBvcnQgUHl0aG9uIDIuNCBhbmQgYWJvdmUuCi0gICAgICAgICAg
VXNlIHRyYWNlYmFjay5mb3JtYXRfZXhjIGluc3RlYWQuCi0gICAgIiIiCi0KLSAgICBvdXQgPSBT
dHJpbmdJTy5TdHJpbmdJTygpCi0gICAgdHJhY2ViYWNrLnByaW50X2V4YyhmaWxlPW91dCkKLSAg
ICByZXR1cm4gb3V0LmdldHZhbHVlKCkKLQotCi1kZWYgcHJlcGVuZF9tZXNzYWdlX3RvX2V4Y2Vw
dGlvbihtZXNzYWdlLCBleGMpOgotICAgICIiIlByZXBlbmQgbWVzc2FnZSB0byB0aGUgZXhjZXB0
aW9uLiIiIgotCi0gICAgZXhjLmFyZ3MgPSAobWVzc2FnZSArIHN0cihleGMpLCkKLSAgICByZXR1
cm4KLQotCi1kZWYgX190cmFuc2xhdGVfaW50ZXJwKGludGVycCwgY3lnd2luX3BhdGgpOgotICAg
ICIiIlRyYW5zbGF0ZSBpbnRlcnAgcHJvZ3JhbSBwYXRoIGZvciBXaW4zMiBweXRob24gdG8gcnVu
IGN5Z3dpbiBwcm9ncmFtCi0gICAgKGUuZy4gcGVybCkuICBOb3RlIHRoYXQgaXQgZG9lc24ndCBz
dXBwb3J0IHBhdGggdGhhdCBjb250YWlucyBzcGFjZSwKLSAgICB3aGljaCBpcyB0eXBpY2FsbHkg
dHJ1ZSBmb3IgVW5peCwgd2hlcmUgIyEtc2NyaXB0IGlzIHdyaXR0ZW4uCi0gICAgRm9yIFdpbjMy
IHB5dGhvbiwgY3lnd2luX3BhdGggaXMgYSBkaXJlY3Rvcnkgb2YgY3lnd2luIGJpbmFyaWVzLgot
Ci0gICAgQXJnczoKLSAgICAgIGludGVycDogaW50ZXJwIGNvbW1hbmQgbGluZQotICAgICAgY3ln
d2luX3BhdGg6IGRpcmVjdG9yeSBuYW1lIG9mIGN5Z3dpbiBiaW5hcnksIG9yIE5vbmUKLSAgICBS
ZXR1cm5zOgotICAgICAgdHJhbnNsYXRlZCBpbnRlcnAgY29tbWFuZCBsaW5lLgotICAgICIiIgot
ICAgIGlmIG5vdCBjeWd3aW5fcGF0aDoKLSAgICAgICAgcmV0dXJuIGludGVycAotICAgIG0gPSBy
ZS5tYXRjaCgnXlteIF0qLyhbXiBdKykoIC4qKT8nLCBpbnRlcnApCi0gICAgaWYgbToKLSAgICAg
ICAgY21kID0gb3MucGF0aC5qb2luKGN5Z3dpbl9wYXRoLCBtLmdyb3VwKDEpKQotICAgICAgICBy
ZXR1cm4gY21kICsgbS5ncm91cCgyKQotICAgIHJldHVybiBpbnRlcnAKLQotCi1kZWYgZ2V0X3Nj
cmlwdF9pbnRlcnAoc2NyaXB0X3BhdGgsIGN5Z3dpbl9wYXRoPU5vbmUpOgotICAgICIiIkdldHMg
IyEtaW50ZXJwcmV0ZXIgY29tbWFuZCBsaW5lIGZyb20gdGhlIHNjcmlwdC4KLQotICAgIEl0IGFs
c28gZml4ZXMgY29tbWFuZCBwYXRoLiAgV2hlbiBDeWd3aW4gUHl0aG9uIGlzIHVzZWQsIGUuZy4g
aW4gV2ViS2l0LAotICAgIGl0IGNvdWxkIHJ1biAiL3Vzci9iaW4vcGVybCAtd1QgaGVsbG8ucGwi
LgotICAgIFdoZW4gV2luMzIgUHl0aG9uIGlzIHVzZWQsIGUuZy4gaW4gQ2hyb21pdW0sIGl0IGNv
dWxkbid0LiAgU28sIGZpeAotICAgICIvdXNyL2Jpbi9wZXJsIiB0byAiPGN5Z3dpbl9wYXRoPlxw
ZXJsLmV4ZSIuCi0KLSAgICBBcmdzOgotICAgICAgc2NyaXB0X3BhdGg6IHBhdGhuYW1lIG9mIHRo
ZSBzY3JpcHQKLSAgICAgIGN5Z3dpbl9wYXRoOiBkaXJlY3RvcnkgbmFtZSBvZiBjeWd3aW4gYmlu
YXJ5LCBvciBOb25lCi0gICAgUmV0dXJuczoKLSAgICAgICMhLWludGVycHJldGVyIGNvbW1hbmQg
bGluZSwgb3IgTm9uZSBpZiBpdCBpcyBub3QgIyEtc2NyaXB0LgotICAgICIiIgotICAgIGZwID0g
b3BlbihzY3JpcHRfcGF0aCkKLSAgICBsaW5lID0gZnAucmVhZGxpbmUoKQotICAgIGZwLmNsb3Nl
KCkKLSAgICBtID0gcmUubWF0Y2goJ14jISguKiknLCBsaW5lKQotICAgIGlmIG06Ci0gICAgICAg
IHJldHVybiBfX3RyYW5zbGF0ZV9pbnRlcnAobS5ncm91cCgxKSwgY3lnd2luX3BhdGgpCi0gICAg
cmV0dXJuIE5vbmUKLQotCi1kZWYgd3JhcF9wb3BlbjNfZm9yX3dpbihjeWd3aW5fcGF0aCk6Ci0g
ICAgIiIiV3JhcCBwb3BlbjMgdG8gc3VwcG9ydCAjIS1zY3JpcHQgb24gV2luZG93cy4KLQotICAg
IEFyZ3M6Ci0gICAgICBjeWd3aW5fcGF0aDogIHBhdGggZm9yIGN5Z3dpbiBiaW5hcnkgaWYgY29t
bWFuZCBwYXRoIGlzIG5lZWRlZCB0byBiZQotICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGVk
LiAgTm9uZSBpZiBubyB0cmFuc2xhdGlvbiByZXF1aXJlZC4KLSAgICAiIiIKLQotICAgIF9fb3Jp
Z19wb3BlbjMgPSBvcy5wb3BlbjMKLQotICAgIGRlZiBfX3dyYXBfcG9wZW4zKGNtZCwgbW9kZT0n
dCcsIGJ1ZnNpemU9LTEpOgotICAgICAgICBjbWRsaW5lID0gY21kLnNwbGl0KCcgJykKLSAgICAg
ICAgaW50ZXJwID0gZ2V0X3NjcmlwdF9pbnRlcnAoY21kbGluZVswXSwgY3lnd2luX3BhdGgpCi0g
ICAgICAgIGlmIGludGVycDoKLSAgICAgICAgICAgIGNtZCA9IGludGVycCArICcgJyArIGNtZAot
ICAgICAgICByZXR1cm4gX19vcmlnX3BvcGVuMyhjbWQsIG1vZGUsIGJ1ZnNpemUpCi0KLSAgICBv
cy5wb3BlbjMgPSBfX3dyYXBfcG9wZW4zCi0KLQotZGVmIGhleGlmeShzKToKLSAgICByZXR1cm4g
JyAnLmpvaW4obWFwKGxhbWJkYSB4OiAnJTAyeCcgJSBvcmQoeCksIHMpKQotCi0KLWRlZiBnZXRf
Y2xhc3NfbG9nZ2VyKG8pOgotICAgIHJldHVybiBsb2dnaW5nLmdldExvZ2dlcigKLSAgICAgICAg
JyVzLiVzJyAlIChvLl9fY2xhc3NfXy5fX21vZHVsZV9fLCBvLl9fY2xhc3NfXy5fX25hbWVfXykp
Ci0KLQotY2xhc3MgTm9vcE1hc2tlcihvYmplY3QpOgotICAgICIiIkEgbWFza2luZyBvYmplY3Qg
dGhhdCBoYXMgdGhlIHNhbWUgaW50ZXJmYWNlIGFzIFJlcGVhdGVkWG9yTWFza2VyIGJ1dAotICAg
IGp1c3QgcmV0dXJucyB0aGUgc3RyaW5nIHBhc3NlZCBpbiB3aXRob3V0IG1ha2luZyBhbnkgY2hh
bmdlLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBwYXNzCi0K
LSAgICBkZWYgbWFzayhzZWxmLCBzKToKLSAgICAgICAgcmV0dXJuIHMKLQotCi1jbGFzcyBSZXBl
YXRlZFhvck1hc2tlcihvYmplY3QpOgotICAgICIiIkEgbWFza2luZyBvYmplY3QgdGhhdCBhcHBs
aWVzIFhPUiBvbiB0aGUgc3RyaW5nIGdpdmVuIHRvIG1hc2sgbWV0aG9kCi0gICAgd2l0aCB0aGUg
bWFza2luZyBieXRlcyBnaXZlbiB0byB0aGUgY29uc3RydWN0b3IgcmVwZWF0ZWRseS4gVGhpcyBv
YmplY3QKLSAgICByZW1lbWJlcnMgdGhlIHBvc2l0aW9uIGluIHRoZSBtYXNraW5nIGJ5dGVzIHRo
ZSBsYXN0IG1hc2sgbWV0aG9kIGNhbGwKLSAgICBlbmRlZCBhbmQgcmVzdW1lcyBmcm9tIHRoYXQg
cG9pbnQgb24gdGhlIG5leHQgbWFzayBtZXRob2QgY2FsbC4KLSAgICAiIiIKLQotICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBtYXNraW5nX2tleSk6Ci0gICAgICAgIHNlbGYuX21hc2tpbmdfa2V5ID0g
bWFza2luZ19rZXkKLSAgICAgICAgc2VsZi5fbWFza2luZ19rZXlfaW5kZXggPSAwCi0KLSAgICBk
ZWYgX21hc2tfdXNpbmdfc3dpZyhzZWxmLCBzKToKLSAgICAgICAgbWFza2VkX2RhdGEgPSBmYXN0
X21hc2tpbmcubWFzaygKLSAgICAgICAgICAgICAgICBzLCBzZWxmLl9tYXNraW5nX2tleSwgc2Vs
Zi5fbWFza2luZ19rZXlfaW5kZXgpCi0gICAgICAgIHNlbGYuX21hc2tpbmdfa2V5X2luZGV4ID0g
KAotICAgICAgICAgICAgICAgIChzZWxmLl9tYXNraW5nX2tleV9pbmRleCArIGxlbihzKSkgJSBs
ZW4oc2VsZi5fbWFza2luZ19rZXkpKQotICAgICAgICByZXR1cm4gbWFza2VkX2RhdGEKLQotICAg
IGRlZiBfbWFza191c2luZ19hcnJheShzZWxmLCBzKToKLSAgICAgICAgcmVzdWx0ID0gYXJyYXku
YXJyYXkoJ0InKQotICAgICAgICByZXN1bHQuZnJvbXN0cmluZyhzKQotCi0gICAgICAgICMgVXNl
IHRlbXBvcmFyeSBsb2NhbCB2YXJpYWJsZXMgdG8gZWxpbWluYXRlIHRoZSBjb3N0IHRvIGFjY2Vz
cwotICAgICAgICAjIGF0dHJpYnV0ZXMKLSAgICAgICAgbWFza2luZ19rZXkgPSBtYXAob3JkLCBz
ZWxmLl9tYXNraW5nX2tleSkKLSAgICAgICAgbWFza2luZ19rZXlfc2l6ZSA9IGxlbihtYXNraW5n
X2tleSkKLSAgICAgICAgbWFza2luZ19rZXlfaW5kZXggPSBzZWxmLl9tYXNraW5nX2tleV9pbmRl
eAotCi0gICAgICAgIGZvciBpIGluIHhyYW5nZShsZW4ocmVzdWx0KSk6Ci0gICAgICAgICAgICBy
ZXN1bHRbaV0gXj0gbWFza2luZ19rZXlbbWFza2luZ19rZXlfaW5kZXhdCi0gICAgICAgICAgICBt
YXNraW5nX2tleV9pbmRleCA9IChtYXNraW5nX2tleV9pbmRleCArIDEpICUgbWFza2luZ19rZXlf
c2l6ZQotCi0gICAgICAgIHNlbGYuX21hc2tpbmdfa2V5X2luZGV4ID0gbWFza2luZ19rZXlfaW5k
ZXgKLQotICAgICAgICByZXR1cm4gcmVzdWx0LnRvc3RyaW5nKCkKLQotICAgIGlmICdmYXN0X21h
c2tpbmcnIGluIGdsb2JhbHMoKToKLSAgICAgICAgbWFzayA9IF9tYXNrX3VzaW5nX3N3aWcKLSAg
ICBlbHNlOgotICAgICAgICBtYXNrID0gX21hc2tfdXNpbmdfYXJyYXkKLQotCi0jIEJ5IG1ha2lu
ZyB3Yml0cyBvcHRpb24gbmVnYXRpdmUsIHdlIGNhbiBzdXBwcmVzcyBDTUYvRkxHICgyIG9jdGV0
KSBhbmQKLSMgQURMRVIzMiAoNCBvY3RldCkgZmllbGRzIG9mIHpsaWIgc28gdGhhdCB3ZSBjYW4g
dXNlIHpsaWIgbW9kdWxlIGp1c3QgYXMKLSMgZGVmbGF0ZSBsaWJyYXJ5LiBESUNUSUQgd29uJ3Qg
YmUgYWRkZWQgYXMgZmFyIGFzIHdlIGRvbid0IHNldCBkaWN0aW9uYXJ5LgotIyBMWjc3IHdpbmRv
dyBvZiAzMksgd2lsbCBiZSB1c2VkIGZvciBib3RoIGNvbXByZXNzaW9uIGFuZCBkZWNvbXByZXNz
aW9uLgotIyBGb3IgZGVjb21wcmVzc2lvbiwgd2UgY2FuIGp1c3QgdXNlIDMySyB0byBjb3ZlciBh
bnkgd2luZG93cyBzaXplLiBGb3IKLSMgY29tcHJlc3Npb24sIHdlIHVzZSAzMksgc28gcmVjZWl2
ZXJzIG11c3QgdXNlIDMySy4KLSMKLSMgQ29tcHJlc3Npb24gbGV2ZWwgaXMgWl9ERUZBVUxUX0NP
TVBSRVNTSU9OLiBXZSBkb24ndCBoYXZlIHRvIG1hdGNoIGxldmVsCi0jIHRvIGRlY29kZS4KLSMK
LSMgU2VlIHpjb25mLmgsIGRlZmxhdGUuY2MsIGluZmxhdGUuY2Mgb2YgemxpYiBsaWJyYXJ5LCBh
bmQgemxpYm1vZHVsZS5jIG9mCi0jIFB5dGhvbi4gU2VlIGFsc28gUkZDMTk1MCAoWkxJQiAzLjMp
LgotCi0KLWNsYXNzIF9EZWZsYXRlcihvYmplY3QpOgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYs
IHdpbmRvd19iaXRzKToKLSAgICAgICAgc2VsZi5fbG9nZ2VyID0gZ2V0X2NsYXNzX2xvZ2dlcihz
ZWxmKQotCi0gICAgICAgIHNlbGYuX2NvbXByZXNzID0gemxpYi5jb21wcmVzc29iaigKLSAgICAg
ICAgICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELCAtd2luZG93
X2JpdHMpCi0KLSAgICBkZWYgY29tcHJlc3Moc2VsZiwgYnl0ZXMpOgotICAgICAgICBjb21wcmVz
c2VkX2J5dGVzID0gc2VsZi5fY29tcHJlc3MuY29tcHJlc3MoYnl0ZXMpCi0gICAgICAgIHNlbGYu
X2xvZ2dlci5kZWJ1ZygnQ29tcHJlc3MgaW5wdXQgJXInLCBieXRlcykKLSAgICAgICAgc2VsZi5f
bG9nZ2VyLmRlYnVnKCdDb21wcmVzcyByZXN1bHQgJXInLCBjb21wcmVzc2VkX2J5dGVzKQotICAg
ICAgICByZXR1cm4gY29tcHJlc3NlZF9ieXRlcwotCi0gICAgZGVmIGNvbXByZXNzX2FuZF9mbHVz
aChzZWxmLCBieXRlcyk6Ci0gICAgICAgIGNvbXByZXNzZWRfYnl0ZXMgPSBzZWxmLl9jb21wcmVz
cy5jb21wcmVzcyhieXRlcykKLSAgICAgICAgY29tcHJlc3NlZF9ieXRlcyArPSBzZWxmLl9jb21w
cmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVn
KCdDb21wcmVzcyBpbnB1dCAlcicsIGJ5dGVzKQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWco
J0NvbXByZXNzIHJlc3VsdCAlcicsIGNvbXByZXNzZWRfYnl0ZXMpCi0gICAgICAgIHJldHVybiBj
b21wcmVzc2VkX2J5dGVzCi0KLSAgICBkZWYgY29tcHJlc3NfYW5kX2ZpbmlzaChzZWxmLCBieXRl
cyk6Ci0gICAgICAgIGNvbXByZXNzZWRfYnl0ZXMgPSBzZWxmLl9jb21wcmVzcy5jb21wcmVzcyhi
eXRlcykKLSAgICAgICAgY29tcHJlc3NlZF9ieXRlcyArPSBzZWxmLl9jb21wcmVzcy5mbHVzaCh6
bGliLlpfRklOSVNIKQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0NvbXByZXNzIGlucHV0
ICVyJywgYnl0ZXMpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnQ29tcHJlc3MgcmVzdWx0
ICVyJywgY29tcHJlc3NlZF9ieXRlcykKLSAgICAgICAgcmV0dXJuIGNvbXByZXNzZWRfYnl0ZXMK
LQotCi1jbGFzcyBfSW5mbGF0ZXIob2JqZWN0KToKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB3
aW5kb3dfYml0cyk6Ci0gICAgICAgIHNlbGYuX2xvZ2dlciA9IGdldF9jbGFzc19sb2dnZXIoc2Vs
ZikKLSAgICAgICAgc2VsZi5fd2luZG93X2JpdHMgPSB3aW5kb3dfYml0cwotCi0gICAgICAgIHNl
bGYuX3VuY29uc3VtZWQgPSAnJwotCi0gICAgICAgIHNlbGYucmVzZXQoKQotCi0gICAgZGVmIGRl
Y29tcHJlc3Moc2VsZiwgc2l6ZSk6Ci0gICAgICAgIGlmIG5vdCAoc2l6ZSA9PSAtMSBvciBzaXpl
ID4gMCk6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ3NpemUgbXVzdCBiZSAtMSBvciBw
b3NpdGl2ZScpCi0KLSAgICAgICAgZGF0YSA9ICcnCi0KLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAg
ICAgICAgICAgIGlmIHNpemUgPT0gLTE6Ci0gICAgICAgICAgICAgICAgZGF0YSArPSBzZWxmLl9k
ZWNvbXByZXNzLmRlY29tcHJlc3Moc2VsZi5fdW5jb25zdW1lZCkKLSAgICAgICAgICAgICAgICAj
IFNlZSBQeXRob24gYnVnIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxMjA1MCB0bwotICAg
ICAgICAgICAgICAgICMgdW5kZXJzdGFuZCB3aHkgdGhlIHNhbWUgY29kZSBjYW5ub3QgYmUgdXNl
ZCBmb3IgdXBkYXRpbmcKLSAgICAgICAgICAgICAgICAjIHNlbGYuX3VuY29uc3VtZWQgZm9yIGhl
cmUgYW5kIGVsc2UgYmxvY2suCi0gICAgICAgICAgICAgICAgc2VsZi5fdW5jb25zdW1lZCA9ICcn
Ci0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGRhdGEgKz0gc2VsZi5fZGVjb21w
cmVzcy5kZWNvbXByZXNzKAotICAgICAgICAgICAgICAgICAgICBzZWxmLl91bmNvbnN1bWVkLCBz
aXplIC0gbGVuKGRhdGEpKQotICAgICAgICAgICAgICAgIHNlbGYuX3VuY29uc3VtZWQgPSBzZWxm
Ll9kZWNvbXByZXNzLnVuY29uc3VtZWRfdGFpbAotICAgICAgICAgICAgaWYgc2VsZi5fZGVjb21w
cmVzcy51bnVzZWRfZGF0YToKLSAgICAgICAgICAgICAgICAjIEVuY291bnRlcmVkIGEgbGFzdCBi
bG9jayAoaS5lLiBhIGJsb2NrIHdpdGggQkZJTkFMID0gMSkgYW5kCi0gICAgICAgICAgICAgICAg
IyBmb3VuZCBhIG5ldyBzdHJlYW0gKHVudXNlZF9kYXRhKS4gV2UgY2Fubm90IHVzZSB0aGUgc2Ft
ZQotICAgICAgICAgICAgICAgICMgemxpYi5EZWNvbXByZXNzIG9iamVjdCBmb3IgdGhlIG5ldyBz
dHJlYW0uIENyZWF0ZSBhIG5ldwotICAgICAgICAgICAgICAgICMgRGVjb21wcmVzcyBvYmplY3Qg
dG8gZGVjb21wcmVzcyB0aGUgbmV3IG9uZS4KLSAgICAgICAgICAgICAgICAjCi0gICAgICAgICAg
ICAgICAgIyBJdCdzIGZpbmUgdG8gaWdub3JlIHVuY29uc3VtZWRfdGFpbCBpZiB1bnVzZWRfZGF0
YSBpcyBub3QKLSAgICAgICAgICAgICAgICAjIGVtcHR5LgotICAgICAgICAgICAgICAgIHNlbGYu
X3VuY29uc3VtZWQgPSBzZWxmLl9kZWNvbXByZXNzLnVudXNlZF9kYXRhCi0gICAgICAgICAgICAg
ICAgc2VsZi5yZXNldCgpCi0gICAgICAgICAgICAgICAgaWYgc2l6ZSA+PSAwIGFuZCBsZW4oZGF0
YSkgPT0gc2l6ZToKLSAgICAgICAgICAgICAgICAgICAgIyBkYXRhIGlzIGZpbGxlZC4gRG9uJ3Qg
Y2FsbCBkZWNvbXByZXNzIGFnYWluLgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAg
ICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICMgUmUtaW52b2tlIERlY29tcHJl
c3MuZGVjb21wcmVzcyB0byB0cnkgdG8gZGVjb21wcmVzcyBhbGwKLSAgICAgICAgICAgICAgICAg
ICAgIyBhdmFpbGFibGUgYnl0ZXMgYmVmb3JlIGludm9raW5nIHJlYWQgd2hpY2ggYmxvY2tzIHVu
dGlsCi0gICAgICAgICAgICAgICAgICAgICMgYW55IG5ldyBieXRlIGlzIGF2YWlsYWJsZS4KLSAg
ICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICAgICAgIyBIZXJlLCBzaW5jZSB1bnVzZWRfZGF0YSBpcyBlbXB0eSwgZXZlbiBpZiB1bmNvbnN1
bWVkX3RhaWwgaXMKLSAgICAgICAgICAgICAgICAjIG5vdCBlbXB0eSwgYnl0ZXMgb2YgcmVxdWVz
dGVkIGxlbmd0aCBhcmUgYWxyZWFkeSBpbiBkYXRhLiBXZQotICAgICAgICAgICAgICAgICMgZG9u
J3QgaGF2ZSB0byAiY29udGludWUiIGhlcmUuCi0gICAgICAgICAgICAgICAgYnJlYWsKLQotICAg
ICAgICBpZiBkYXRhOgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdEZWNvbXByZXNz
ZWQgJXInLCBkYXRhKQotICAgICAgICByZXR1cm4gZGF0YQotCi0gICAgZGVmIGFwcGVuZChzZWxm
LCBkYXRhKToKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdBcHBlbmRlZCAlcicsIGRhdGEp
Ci0gICAgICAgIHNlbGYuX3VuY29uc3VtZWQgKz0gZGF0YQotCi0gICAgZGVmIHJlc2V0KHNlbGYp
OgotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1Jlc2V0JykKLSAgICAgICAgc2VsZi5fZGVj
b21wcmVzcyA9IHpsaWIuZGVjb21wcmVzc29iaigtc2VsZi5fd2luZG93X2JpdHMpCi0KLQotIyBD
b21wcmVzc2VzL2RlY29tcHJlc3NlcyBnaXZlbiBvY3RldHMgdXNpbmcgdGhlIG1ldGhvZCBpbnRy
b2R1Y2VkIGluIFJGQzE5NzkuCi0KLQotY2xhc3MgX1JGQzE5NzlEZWZsYXRlcihvYmplY3QpOgot
ICAgICIiIkEgY29tcHJlc3NvciBjbGFzcyB0aGF0IGFwcGxpZXMgREVGTEFURSB0byBnaXZlbiBi
eXRlIHNlcXVlbmNlIGFuZAotICAgIGZsdXNoZXMgdXNpbmcgdGhlIGFsZ29yaXRobSBkZXNjcmli
ZWQgaW4gdGhlIFJGQzE5Nzkgc2VjdGlvbiAyLjEuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0
X18oc2VsZiwgd2luZG93X2JpdHMsIG5vX2NvbnRleHRfdGFrZW92ZXIpOgotICAgICAgICBzZWxm
Ll9kZWZsYXRlciA9IE5vbmUKLSAgICAgICAgaWYgd2luZG93X2JpdHMgaXMgTm9uZToKLSAgICAg
ICAgICAgIHdpbmRvd19iaXRzID0gemxpYi5NQVhfV0JJVFMKLSAgICAgICAgc2VsZi5fd2luZG93
X2JpdHMgPSB3aW5kb3dfYml0cwotICAgICAgICBzZWxmLl9ub19jb250ZXh0X3Rha2VvdmVyID0g
bm9fY29udGV4dF90YWtlb3ZlcgotCi0gICAgZGVmIGZpbHRlcihzZWxmLCBieXRlcywgZW5kPVRy
dWUsIGJmaW5hbD1GYWxzZSk6Ci0gICAgICAgIGlmIHNlbGYuX2RlZmxhdGVyIGlzIE5vbmU6Ci0g
ICAgICAgICAgICBzZWxmLl9kZWZsYXRlciA9IF9EZWZsYXRlcihzZWxmLl93aW5kb3dfYml0cykK
LQotICAgICAgICBpZiBiZmluYWw6Ci0gICAgICAgICAgICByZXN1bHQgPSBzZWxmLl9kZWZsYXRl
ci5jb21wcmVzc19hbmRfZmluaXNoKGJ5dGVzKQotICAgICAgICAgICAgIyBBZGQgYSBwYWRkaW5n
IGJsb2NrIHdpdGggQkZJTkFMID0gMCBhbmQgQlRZUEUgPSAwLgotICAgICAgICAgICAgcmVzdWx0
ID0gcmVzdWx0ICsgY2hyKDApCi0gICAgICAgICAgICBzZWxmLl9kZWZsYXRlciA9IE5vbmUKLSAg
ICAgICAgICAgIHJldHVybiByZXN1bHQKLQotICAgICAgICByZXN1bHQgPSBzZWxmLl9kZWZsYXRl
ci5jb21wcmVzc19hbmRfZmx1c2goYnl0ZXMpCi0gICAgICAgIGlmIGVuZDoKLSAgICAgICAgICAg
ICMgU3RyaXAgbGFzdCA0IG9jdGV0cyB3aGljaCBpcyBMRU4gYW5kIE5MRU4gZmllbGQgb2YgYQot
ICAgICAgICAgICAgIyBub24tY29tcHJlc3NlZCBibG9jayBhZGRlZCBmb3IgWl9TWU5DX0ZMVVNI
LgotICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0WzotNF0KLQotICAgICAgICBpZiBzZWxmLl9u
b19jb250ZXh0X3Rha2VvdmVyIGFuZCBlbmQ6Ci0gICAgICAgICAgICBzZWxmLl9kZWZsYXRlciA9
IE5vbmUKLQotICAgICAgICByZXR1cm4gcmVzdWx0Ci0KLQotY2xhc3MgX1JGQzE5NzlJbmZsYXRl
cihvYmplY3QpOgotICAgICIiIkEgZGVjb21wcmVzc29yIGNsYXNzIGZvciBieXRlIHNlcXVlbmNl
IGNvbXByZXNzZWQgYW5kIGZsdXNoZWQgZm9sbG93aW5nCi0gICAgdGhlIGFsZ29yaXRobSBkZXNj
cmliZWQgaW4gdGhlIFJGQzE5Nzkgc2VjdGlvbiAyLjEuCi0gICAgIiIiCi0KLSAgICBkZWYgX19p
bml0X18oc2VsZiwgd2luZG93X2JpdHM9emxpYi5NQVhfV0JJVFMpOgotICAgICAgICBzZWxmLl9p
bmZsYXRlciA9IF9JbmZsYXRlcih3aW5kb3dfYml0cykKLQotICAgIGRlZiBmaWx0ZXIoc2VsZiwg
Ynl0ZXMpOgotICAgICAgICAjIFJlc3RvcmUgc3RyaXBwZWQgTEVOIGFuZCBOTEVOIGZpZWxkIG9m
IGEgbm9uLWNvbXByZXNzZWQgYmxvY2sgYWRkZWQKLSAgICAgICAgIyBmb3IgWl9TWU5DX0ZMVVNI
LgotICAgICAgICBzZWxmLl9pbmZsYXRlci5hcHBlbmQoYnl0ZXMgKyAnXHgwMFx4MDBceGZmXHhm
ZicpCi0gICAgICAgIHJldHVybiBzZWxmLl9pbmZsYXRlci5kZWNvbXByZXNzKC0xKQotCi0KLWNs
YXNzIERlZmxhdGVTb2NrZXQob2JqZWN0KToKLSAgICAiIiJBIHdyYXBwZXIgY2xhc3MgZm9yIHNv
Y2tldCBvYmplY3QgdG8gaW50ZXJjZXB0IHNlbmQgYW5kIHJlY3YgdG8gcGVyZm9ybQotICAgIGRl
ZmxhdGUgY29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24gdHJhbnNwYXJlbnRseS4KLSAgICAi
IiIKLQotICAgICMgU2l6ZSBvZiB0aGUgYnVmZmVyIHBhc3NlZCB0byByZWN2IHRvIHJlY2VpdmUg
Y29tcHJlc3NlZCBkYXRhLgotICAgIF9SRUNWX1NJWkUgPSA0MDk2Ci0KLSAgICBkZWYgX19pbml0
X18oc2VsZiwgc29ja2V0KToKLSAgICAgICAgc2VsZi5fc29ja2V0ID0gc29ja2V0Ci0KLSAgICAg
ICAgc2VsZi5fbG9nZ2VyID0gZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQotCi0gICAgICAgIHNlbGYu
X2RlZmxhdGVyID0gX0RlZmxhdGVyKHpsaWIuTUFYX1dCSVRTKQotICAgICAgICBzZWxmLl9pbmZs
YXRlciA9IF9JbmZsYXRlcih6bGliLk1BWF9XQklUUykKLQotICAgIGRlZiByZWN2KHNlbGYsIHNp
emUpOgotICAgICAgICAiIiJSZWNlaXZlcyBkYXRhIGZyb20gdGhlIHNvY2tldCBzcGVjaWZpZWQg
b24gdGhlIGNvbnN0cnVjdGlvbiB1cAotICAgICAgICB0byB0aGUgc3BlY2lmaWVkIHNpemUuIE9u
Y2UgYW55IGRhdGEgaXMgYXZhaWxhYmxlLCByZXR1cm5zIGl0IGV2ZW4KLSAgICAgICAgaWYgaXQn
cyBzbWFsbGVyIHRoYW4gdGhlIHNwZWNpZmllZCBzaXplLgotICAgICAgICAiIiIKLQotICAgICAg
ICAjIFRPRE8odHlvc2hpbm8pOiBBbGxvdyBjYWxsIHdpdGggc2l6ZT0wLiBJdCBzaG91bGQgYmxv
Y2sgdW50aWwgYW55Ci0gICAgICAgICMgZGVjb21wcmVzc2VkIGRhdGEgaXMgYXZhaWxhYmxlLgot
ICAgICAgICBpZiBzaXplIDw9IDA6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ05vbi1w
b3NpdGl2ZSBzaXplIHBhc3NlZCcpCi0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICBk
YXRhID0gc2VsZi5faW5mbGF0ZXIuZGVjb21wcmVzcyhzaXplKQotICAgICAgICAgICAgaWYgbGVu
KGRhdGEpICE9IDA6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEKLQotICAgICAgICAgICAg
cmVhZF9kYXRhID0gc2VsZi5fc29ja2V0LnJlY3YoRGVmbGF0ZVNvY2tldC5fUkVDVl9TSVpFKQot
ICAgICAgICAgICAgaWYgbm90IHJlYWRfZGF0YToKLSAgICAgICAgICAgICAgICByZXR1cm4gJycK
LSAgICAgICAgICAgIHNlbGYuX2luZmxhdGVyLmFwcGVuZChyZWFkX2RhdGEpCi0KLSAgICBkZWYg
c2VuZGFsbChzZWxmLCBieXRlcyk6Ci0gICAgICAgIHNlbGYuc2VuZChieXRlcykKLQotICAgIGRl
ZiBzZW5kKHNlbGYsIGJ5dGVzKToKLSAgICAgICAgc2VsZi5fc29ja2V0LnNlbmRhbGwoc2VsZi5f
ZGVmbGF0ZXIuY29tcHJlc3NfYW5kX2ZsdXNoKGJ5dGVzKSkKLSAgICAgICAgcmV0dXJuIGxlbihi
eXRlcykKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9w
eXdlYnNvY2tldC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC93M2Mt
aW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTc5ZGYzNTk5OGQxMTUx
YjNiMDk4YTA1YTBiMWM4NzlkNDI1MmQ4Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvdzNjLWltcG9ydC5sb2cK
KysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rv
cnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkg
dGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCBy
ZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzCi0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVz
dHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMg
ZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
LU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3
ZWJzb2NrZXQvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvX3N0cmVhbV9i
YXNlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L19zdHJlYW1faGl4aWU3NS5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvc3JjL21vZF9weXdlYnNvY2tldC9fc3RyZWFtX2h5YmkucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3
ZWJzb2NrZXQvY29tbW9uLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L2Rpc3BhdGNoLnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L2V4dGVuc2lvbnMucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2Rf
cHl3ZWJzb2NrZXQvZmFzdF9tYXNraW5nLmkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvaGVh
ZGVycGFyc2VyaGFuZGxlci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC9odHRwX2hlYWRl
cl91dGlsLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L21lbW9yaXppbmdmaWxlLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNv
Y2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L21zZ3V0aWwucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJz
b2NrZXQvbXV4LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L3N0YW5kYWxvbmUucHkKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29j
a2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvc3RyZWFtLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29j
a2V0L3V0aWwucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQveGhyX2JlbmNobWFya19oYW5k
bGVyLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQveGhyX2JlbmNobWFy
a19oYW5kbGVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L3hocl9iZW5jaG1hcmtfaGFu
ZGxlci5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjczNWM3ZTJhM2RiOGRjN2M0
M2ZkMTcyMDE0OTVkNDM1Y2NlNjhjZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQveGhyX2JlbmNobWFya19oYW5k
bGVyLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTA5ICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMTQg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUKLSMgbGljZW5zZSB0aGF0IGNhbiBiZSBm
b3VuZCBpbiB0aGUgQ09QWUlORyBmaWxlIG9yIGF0Ci0jIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29n
bGUuY29tL29wZW4tc291cmNlL2xpY2Vuc2VzL2JzZAotCi0KLWZyb20gbW9kX3B5d2Vic29ja2V0
IGltcG9ydCB1dGlsCi0KLQotY2xhc3MgWEhSQmVuY2htYXJrSGFuZGxlcihvYmplY3QpOgotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBoZWFkZXJzLCByZmlsZSwgd2ZpbGUpOgotICAgICAgICBzZWxm
Ll9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKLQotICAgICAgICBzZWxmLmhl
YWRlcnMgPSBoZWFkZXJzCi0gICAgICAgIHNlbGYucmZpbGUgPSByZmlsZQotICAgICAgICBzZWxm
LndmaWxlID0gd2ZpbGUKLQotICAgIGRlZiBkb19zZW5kKHNlbGYpOgotICAgICAgICBjb250ZW50
X2xlbmd0aCA9IGludChzZWxmLmhlYWRlcnMuZ2V0aGVhZGVyKCdDb250ZW50LUxlbmd0aCcpKQot
Ci0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnUmVxdWVzdGVkIHRvIHJlY2VpdmUgJXMgYnl0
ZXMnLCBjb250ZW50X2xlbmd0aCkKLQotICAgICAgICBSRUNFSVZFX0JMT0NLX1NJWkUgPSAxMDI0
ICogMTAyNAotCi0gICAgICAgIGJ5dGVzX3RvX3JlY2VpdmUgPSBjb250ZW50X2xlbmd0aAotICAg
ICAgICB3aGlsZSBieXRlc190b19yZWNlaXZlID4gMDoKLSAgICAgICAgICAgIGJ5dGVzX3RvX3Jl
Y2VpdmVfaW5fdGhpc19sb29wID0gYnl0ZXNfdG9fcmVjZWl2ZQotICAgICAgICAgICAgaWYgYnl0
ZXNfdG9fcmVjZWl2ZV9pbl90aGlzX2xvb3AgPiBSRUNFSVZFX0JMT0NLX1NJWkU6Ci0gICAgICAg
ICAgICAgICAgYnl0ZXNfdG9fcmVjZWl2ZV9pbl90aGlzX2xvb3AgPSBSRUNFSVZFX0JMT0NLX1NJ
WkUKLSAgICAgICAgICAgIHJlY2VpdmVkX2RhdGEgPSBzZWxmLnJmaWxlLnJlYWQoYnl0ZXNfdG9f
cmVjZWl2ZV9pbl90aGlzX2xvb3ApCi0gICAgICAgICAgICBpZiByZWNlaXZlZF9kYXRhICE9ICgn
YScgKiBieXRlc190b19yZWNlaXZlX2luX3RoaXNfbG9vcCk6Ci0gICAgICAgICAgICAgICAgc2Vs
Zi5fbG9nZ2VyLmRlYnVnKCdSZXF1ZXN0IGJvZHkgdmVyaWZpY2F0aW9uIGZhaWxlZCcpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICBieXRlc190b19yZWNlaXZlIC09IGxlbihy
ZWNlaXZlZF9kYXRhKQotICAgICAgICBpZiBieXRlc190b19yZWNlaXZlIDwgMDoKLSAgICAgICAg
ICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnUmVjZWl2ZWQgJWQgbW9yZSBieXRlcyB0aGFuIGV4cGVj
dGVkJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKC1ieXRlc190b19yZWNlaXZl
KSkKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgICMgUmV0dXJuIHRoZSBudW1iZXIgb2Yg
cmVjZWl2ZWQgYnl0ZXMgYmFjayB0byB0aGUgY2xpZW50LgotICAgICAgICByZXNwb25zZV9ib2R5
ID0gJyVkJyAlIGNvbnRlbnRfbGVuZ3RoCi0gICAgICAgIHNlbGYud2ZpbGUud3JpdGUoCi0gICAg
ICAgICAgICAnSFRUUC8xLjEgMjAwIE9LXHJcbicKLSAgICAgICAgICAgICdDb250ZW50LVR5cGU6
IHRleHQvaHRtbFxyXG4nCi0gICAgICAgICAgICAnQ29udGVudC1MZW5ndGg6ICVkXHJcbicKLSAg
ICAgICAgICAgICdcclxuJXMnICUgKGxlbihyZXNwb25zZV9ib2R5KSwgcmVzcG9uc2VfYm9keSkp
Ci0gICAgICAgIHNlbGYud2ZpbGUuZmx1c2goKQotCi0gICAgZGVmIGRvX3JlY2VpdmUoc2VsZik6
Ci0gICAgICAgIGNvbnRlbnRfbGVuZ3RoID0gaW50KHNlbGYuaGVhZGVycy5nZXRoZWFkZXIoJ0Nv
bnRlbnQtTGVuZ3RoJykpCi0gICAgICAgIHJlcXVlc3RfYm9keSA9IHNlbGYucmZpbGUucmVhZChj
b250ZW50X2xlbmd0aCkKLQotICAgICAgICByZXF1ZXN0X2FycmF5ID0gcmVxdWVzdF9ib2R5LnNw
bGl0KCcgJykKLSAgICAgICAgaWYgbGVuKHJlcXVlc3RfYXJyYXkpIDwgMjoKLSAgICAgICAgICAg
IHNlbGYuX2xvZ2dlci5kZWJ1ZygnTWFsZm9ybWVkIHJlcXVlc3QgYm9keTogJXInLCByZXF1ZXN0
X2JvZHkpCi0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICAjIFBhcnNlIHRoZSBzaXplIHBh
cmFtZXRlci4KLSAgICAgICAgYnl0ZXNfdG9fc2VuZCA9IHJlcXVlc3RfYXJyYXlbMF0KLSAgICAg
ICAgdHJ5OgotICAgICAgICAgICAgYnl0ZXNfdG9fc2VuZCA9IGludChieXRlc190b19zZW5kKQot
ICAgICAgICBleGNlcHQgVmFsdWVFcnJvciwgZToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5k
ZWJ1ZygnTWFsZm9ybWVkIHNpemUgcGFyYW1ldGVyOiAlcicsIGJ5dGVzX3RvX3NlbmQpCi0gICAg
ICAgICAgICByZXR1cm4KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdSZXF1ZXN0ZWQgdG8g
c2VuZCAlcyBieXRlcycsIGJ5dGVzX3RvX3NlbmQpCi0KLSAgICAgICAgIyBQYXJzZSB0aGUgdHJh
bnNmZXIgZW5jb2RpbmcgcGFyYW1ldGVyLgotICAgICAgICBjaHVua2VkX21vZGUgPSBGYWxzZQot
ICAgICAgICBtb2RlX3BhcmFtZXRlciA9IHJlcXVlc3RfYXJyYXlbMV0KLSAgICAgICAgaWYgbW9k
ZV9wYXJhbWV0ZXIgPT0gJ2NodW5rZWQnOgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVn
KCdSZXF1ZXN0ZWQgY2h1bmtlZCB0cmFuc2ZlciBlbmNvZGluZycpCi0gICAgICAgICAgICBjaHVu
a2VkX21vZGUgPSBUcnVlCi0gICAgICAgIGVsaWYgbW9kZV9wYXJhbWV0ZXIgIT0gJ25vbmUnOgot
ICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdJbnZhbGlkIG1vZGUgcGFyYW1ldGVyOiAl
cicsIG1vZGVfcGFyYW1ldGVyKQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgIyBXcml0
ZSBhIGhlYWRlcgotICAgICAgICByZXNwb25zZV9oZWFkZXIgPSAoCi0gICAgICAgICAgICAnSFRU
UC8xLjEgMjAwIE9LXHJcbicKLSAgICAgICAgICAgICdDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9u
L29jdGV0LXN0cmVhbVxyXG4nKQotICAgICAgICBpZiBjaHVua2VkX21vZGU6Ci0gICAgICAgICAg
ICByZXNwb25zZV9oZWFkZXIgKz0gJ1RyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkXHJcblxyXG4n
Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXNwb25zZV9oZWFkZXIgKz0gKAotICAgICAg
ICAgICAgICAgICdDb250ZW50LUxlbmd0aDogJWRcclxuXHJcbicgJSBieXRlc190b19zZW5kKQot
ICAgICAgICBzZWxmLndmaWxlLndyaXRlKHJlc3BvbnNlX2hlYWRlcikKLSAgICAgICAgc2VsZi53
ZmlsZS5mbHVzaCgpCi0KLSAgICAgICAgIyBXcml0ZSBhIGJvZHkKLSAgICAgICAgU0VORF9CTE9D
S19TSVpFID0gMTAyNCAqIDEwMjQKLQotICAgICAgICB3aGlsZSBieXRlc190b19zZW5kID4gMDoK
LSAgICAgICAgICAgIGJ5dGVzX3RvX3NlbmRfaW5fdGhpc19sb29wID0gYnl0ZXNfdG9fc2VuZAot
ICAgICAgICAgICAgaWYgYnl0ZXNfdG9fc2VuZF9pbl90aGlzX2xvb3AgPiBTRU5EX0JMT0NLX1NJ
WkU6Ci0gICAgICAgICAgICAgICAgYnl0ZXNfdG9fc2VuZF9pbl90aGlzX2xvb3AgPSBTRU5EX0JM
T0NLX1NJWkUKLQotICAgICAgICAgICAgaWYgY2h1bmtlZF9tb2RlOgotICAgICAgICAgICAgICAg
IHNlbGYud2ZpbGUud3JpdGUoJyV4XHJcbicgJSBieXRlc190b19zZW5kX2luX3RoaXNfbG9vcCkK
LSAgICAgICAgICAgIHNlbGYud2ZpbGUud3JpdGUoJ2EnICogYnl0ZXNfdG9fc2VuZF9pbl90aGlz
X2xvb3ApCi0gICAgICAgICAgICBpZiBjaHVua2VkX21vZGU6Ci0gICAgICAgICAgICAgICAgc2Vs
Zi53ZmlsZS53cml0ZSgnXHJcbicpCi0gICAgICAgICAgICBzZWxmLndmaWxlLmZsdXNoKCkKLQot
ICAgICAgICAgICAgYnl0ZXNfdG9fc2VuZCAtPSBieXRlc190b19zZW5kX2luX3RoaXNfbG9vcAot
Ci0gICAgICAgIGlmIGNodW5rZWRfbW9kZToKLSAgICAgICAgICAgIHNlbGYud2ZpbGUud3JpdGUo
JzBcclxuXHJcbicpCi0gICAgICAgICAgICBzZWxmLndmaWxlLmZsdXNoKCkKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvc3JjL3NldHVwLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvc2V0dXAucHkKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGFkYThkYjNlMTExYjBhNTQzMWQ3MWU2MWY0NDkxM2VjNWRhYzkyNDguLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvc2V0
dXAucHkKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRo
b24KLSMKLSMgQ29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmli
dXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIlNldCB1cCBzY3JpcHQgZm9yIG1vZF9weXdl
YnNvY2tldC4KLSIiIgotCi0KLWZyb20gZGlzdHV0aWxzLmNvcmUgaW1wb3J0IHNldHVwLCBFeHRl
bnNpb24KLWltcG9ydCBzeXMKLQotCi1fUEFDS0FHRV9OQU1FID0gJ21vZF9weXdlYnNvY2tldCcK
LQotIyBCdWlsZCBhbmQgdXNlIGEgQysrIGV4dGVuc2lvbiBmb3IgZmFzdGVyIG1hc2tpbmcuIFNX
SUcgaXMgcmVxdWlyZWQuCi1fVVNFX0ZBU1RfTUFTS0lORyA9IEZhbHNlCi0KLWlmIHN5cy52ZXJz
aW9uIDwgJzIuMyc6Ci0gICAgcHJpbnQgPj4gc3lzLnN0ZGVyciwgJyVzIHJlcXVpcmVzIFB5dGhv
biAyLjMgb3IgbGF0ZXIuJyAlIF9QQUNLQUdFX05BTUUKLSAgICBzeXMuZXhpdCgxKQotCi1pZiBf
VVNFX0ZBU1RfTUFTS0lORzoKLSAgICBzZXR1cChleHRfbW9kdWxlcz1bCi0gICAgICAgICAgICAg
ICAgICBFeHRlbnNpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdtb2RfcHl3ZWJzb2Nr
ZXQvX2Zhc3RfbWFza2luZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFsnbW9kX3B5d2Vi
c29ja2V0L2Zhc3RfbWFza2luZy5pJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN3aWdf
b3B0cz1bJy1jKysnXSldKQotCi1zZXR1cChhdXRob3I9J1l1em8gRnVqaXNoaW1hJywKLSAgICAg
IGF1dGhvcl9lbWFpbD0neXV6b0BjaHJvbWl1bS5vcmcnLAotICAgICAgZGVzY3JpcHRpb249J1dl
YlNvY2tldCBleHRlbnNpb24gZm9yIEFwYWNoZSBIVFRQIFNlcnZlci4nLAotICAgICAgbG9uZ19k
ZXNjcmlwdGlvbj0oCi0gICAgICAgICAgICAgICdtb2RfcHl3ZWJzb2NrZXQgaXMgYW4gQXBhY2hl
IEhUVFAgU2VydmVyIGV4dGVuc2lvbiBmb3IgJwotICAgICAgICAgICAgICAndGhlIFdlYlNvY2tl
dCBQcm90b2NvbCAoUkZDIDY0NTUpLiAnCi0gICAgICAgICAgICAgICdTZWUgbW9kX3B5d2Vic29j
a2V0L19faW5pdF9fLnB5IGZvciBtb3JlIGRldGFpbC4nKSwKLSAgICAgIGxpY2Vuc2U9J1NlZSBD
T1BZSU5HJywKLSAgICAgIG5hbWU9X1BBQ0tBR0VfTkFNRSwKLSAgICAgIHBhY2thZ2VzPVtfUEFD
S0FHRV9OQU1FLCBfUEFDS0FHRV9OQU1FICsgJy5oYW5kc2hha2UnXSwKLSAgICAgIHVybD0naHR0
cDovL2NvZGUuZ29vZ2xlLmNvbS9wL3B5d2Vic29ja2V0LycsCi0gICAgICAjIFNlZSB0aGUgc291
cmNlIG9mIGRpc3R1dGlscy52ZXJzaW9uLCBkaXN0dXRpbHMudmVyc2lvbnByZWRpY2F0ZSBhbmQK
LSAgICAgICMgZGlzdHV0aWxzLmRpc3QgdG8gdW5kZXJzdGFuZCBob3cgdG8gbmFtZSB2ZXJzaW9u
IG51bWJlcnMuCi0gICAgICB2ZXJzaW9uPScwLjcuOScsCi0gICAgICApCi0KLQotIyB2aTpzdHM9
NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L19faW5pdF9fLnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9z
cmMvdGVzdC9fX2luaXRfXy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTY4MzRi
ODI4NWE1NmJlZjBlMTU0M2ZkOTAxYzdlNmYyZjhiYzIwMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L19faW5pdF9fLnB5CisrKyAv
ZGV2L251bGwKQEAgLTEgKzAsMCBAQAotIyBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFB5dGhv
biB0byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZXMuClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC9jZXJ0L2NhY2VydC5wZW0gYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29j
a2V0L3NyYy90ZXN0L2NlcnQvY2FjZXJ0LnBlbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNGRhZGFlMTIxYmRkM2FkYjc0NDM4M2NkM2JmMDhjMjI2Zjg1NTRiYS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L2NlcnQvY2Fj
ZXJ0LnBlbQorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLS0tLS0tQkVHSU4gQ0VSVElG
SUNBVEUtLS0tLQotTUlJQ3ZEQ0NBaVdnQXdJQkFnSUpBS3FWZ2hrR0YxclNNQTBHQ1NxR1NJYjNE
UUVCQlFVQU1Fa3hDekFKQmdOVgotQkFZVEFrcFFNUTR3REFZRFZRUUlFd1ZVYjJ0NWJ6RVVNQklH
QTFVRUNoTUxjSGwzWldKemIyTnJaWFF4RkRBUwotQmdOVkJBTVRDM0I1ZDJWaWMyOWphMlYwTUI0
WERURXlNRFl3TmpBM01qUXpNMW9YRFRNNU1UQXlNekEzTWpRegotTTFvd1NURUxNQWtHQTFVRUJo
TUNTbEF4RGpBTUJnTlZCQWdUQlZSdmEzbHZNUlF3RWdZRFZRUUtFd3R3ZVhkbAotWW5OdlkydGxk
REVVTUJJR0ExVUVBeE1MY0hsM1pXSnpiMk5yWlhRd2daOHdEUVlKS29aSWh2Y05BUUVCQlFBRAot
Z1kwQU1JR0pBb0dCQUtvU0VXMmJpUXhWck1NS2RuLzhQSnpEWWlTWERQUjlXUWJMUlJRMUdtNWpr
Q1lpYWhYVwotdTJDYlRUaGZQUGZpMk5IQTNJK0hsVDdnTzl5UjdSVlV2TjZJU1V6R3dYREVxNGY0
VU5xdFFPaFFhcXFLK0NaOQotTE8vQmhPL1lZZk5yYlNQbFl6SFVLYVQ5ZXNlN3hPOVZ6VktMVytx
VWYyTWpoNC8rU3p4QkROUDdBZ01CQUFHagotZ2Fzd2dhZ3dIUVlEVlIwT0JCWUVGT3NXZHhDU3V5
aHdhWmVhYjZCb1RobzMrK2J6TUhrR0ExVWRJd1J5TUhDQQotRk9zV2R4Q1N1eWh3YVplYWI2Qm9U
aG8zKytiem9VMmtTekJKTVFzd0NRWURWUVFHRXdKS1VERU9NQXdHQTFVRQotQ0JNRlZHOXJlVzh4
RkRBU0JnTlZCQW9UQzNCNWQyVmljMjlqYTJWME1SUXdFZ1lEVlFRREV3dHdlWGRsWW5OdgotWTJ0
bGRJSUpBS3FWZ2hrR0YxclNNQXdHQTFVZEV3UUZNQU1CQWY4d0RRWUpLb1pJaHZjTkFRRUZCUUFE
Z1lFQQotZ3NNSTFXRVlxTncvamhVSWRyVEJjQ3hKMFg2aEp2QTl6aUtBTlZtMVJzKzRQM1lEQXJr
UThiQ3I2eFkrS3c3cwotWnAweUU3ZE04R01kaStEVTZoTDN0M0U1ZU1rVFMxeVpyOVdDSzRmMlJM
bytldDk4c2VsWnlkcEhlbUYzREpKMwotZ0FqOFN4NExCYUc4Q2IvV25FTVB2M014RzNmQkU1ZmF2
RjZWNGpVMDdoUT0KLS0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
c3JjL3Rlc3QvY2VydC9jZXJ0LnBlbSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvY2VydC9jZXJ0LnBlbQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjUzNzlhNzJiMGRhYzVmNDE5NzljODAyYzY2M2Rm
OGI4OGRlYTgyOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L3NyYy90ZXN0L2NlcnQvY2VydC5wZW0KKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCww
IEBACi1DZXJ0aWZpY2F0ZToKLSAgICBEYXRhOgotICAgICAgICBWZXJzaW9uOiAzICgweDIpCi0g
ICAgICAgIFNlcmlhbCBOdW1iZXI6IDEgKDB4MSkKLSAgICAgICAgU2lnbmF0dXJlIEFsZ29yaXRo
bTogc2hhMVdpdGhSU0FFbmNyeXB0aW9uCi0gICAgICAgIElzc3VlcjogQz1KUCwgU1Q9VG9reW8s
IE89cHl3ZWJzb2NrZXQsIENOPXB5d2Vic29ja2V0Ci0gICAgICAgIFZhbGlkaXR5Ci0gICAgICAg
ICAgICBOb3QgQmVmb3JlOiBKdW4gIDYgMDc6MjU6MDggMjAxMiBHTVQKLSAgICAgICAgICAgIE5v
dCBBZnRlciA6IE9jdCAyMyAwNzoyNTowOCAyMDM5IEdNVAotICAgICAgICBTdWJqZWN0OiBDPUpQ
LCBTVD1Ub2t5bywgTz1weXdlYnNvY2tldCwgQ049cHl3ZWJzb2NrZXQKLSAgICAgICAgU3ViamVj
dCBQdWJsaWMgS2V5IEluZm86Ci0gICAgICAgICAgICBQdWJsaWMgS2V5IEFsZ29yaXRobTogcnNh
RW5jcnlwdGlvbgotICAgICAgICAgICAgUlNBIFB1YmxpYyBLZXk6ICgxMDI0IGJpdCkKLSAgICAg
ICAgICAgICAgICBNb2R1bHVzICgxMDI0IGJpdCk6Ci0gICAgICAgICAgICAgICAgICAgIDAwOmRl
OjEwOmNlOjNhOjVhOjA0OmE0OjFjOjI5OjkzOjVjOjIzOjgyOjFhOgotICAgICAgICAgICAgICAg
ICAgICBmMjowNjowMTplNjoyYjphNDowZjpkZDo3Nzo0OTo3Njo4OTowMzphMjoyMToKLSAgICAg
ICAgICAgICAgICAgICAgZGU6MDQ6NzU6YzY6ZTI6ZGQ6ZmI6MzU6Mjc6M2E6YTI6OTI6OGU6MTI6
NjI6Ci0gICAgICAgICAgICAgICAgICAgIDJiOjNlOjFmOmY0Ojc4OmRmOmI2Ojk0OmNiOjI3OmQ2
OmNiOmQ2OjM3OmQ3OgotICAgICAgICAgICAgICAgICAgICA1YzowODpmMDowOTozZTpjOTpjZToy
NDoyZDowMDpjOTpkZjo0YTplMDo5OToKLSAgICAgICAgICAgICAgICAgICAgZTU6ZmI6MjM6YTk6
ZTI6ZDY6Yzk6M2Q6OTY6ZmE6MDE6ODg6ZGU6NWE6ODk6Ci0gICAgICAgICAgICAgICAgICAgIGIw
OmNmOjAzOjY3OjZmOjA0Ojg2OjFkOmVmOjYyOjFjOjU1OmE5OjA3OjlhOgotICAgICAgICAgICAg
ICAgICAgICAyZTo2NjoyYTo3Mzo1Yjo0Yzo2MjowMzpmOTo4Mjo4MzpkYjo2ODpiZjpiODoKLSAg
ICAgICAgICAgICAgICAgICAgNGI6MGI6OGI6OTM6MTE6Yjg6NTQ6NzM6N2IKLSAgICAgICAgICAg
ICAgICBFeHBvbmVudDogNjU1MzcgKDB4MTAwMDEpCi0gICAgICAgIFg1MDl2MyBleHRlbnNpb25z
OgotICAgICAgICAgICAgWDUwOXYzIEJhc2ljIENvbnN0cmFpbnRzOiAKLSAgICAgICAgICAgICAg
ICBDQTpGQUxTRQotICAgICAgICAgICAgTmV0c2NhcGUgQ2VydCBUeXBlOiAKLSAgICAgICAgICAg
ICAgICBTU0wgU2VydmVyCi0gICAgICAgICAgICBOZXRzY2FwZSBDb21tZW50OiAKLSAgICAgICAg
ICAgICAgICBPcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZQotICAgICAgICAgICAgWDUwOXYz
IFN1YmplY3QgS2V5IElkZW50aWZpZXI6IAotICAgICAgICAgICAgICAgIDgyOkExOjczOjhCOjE2
OjBDOjdDOkU0OkQzOjQ2Ojk1OjEzOjk1OjFBOjMyOkMxOjg0OkU5OjA2OjAwCi0gICAgICAgICAg
ICBYNTA5djMgQXV0aG9yaXR5IEtleSBJZGVudGlmaWVyOiAKLSAgICAgICAgICAgICAgICBrZXlp
ZDpFQjoxNjo3NzoxMDo5MjpCQjoyODo3MDo2OTo5Nzo5QTo2RjpBMDo2ODo0RToxQTozNzpGQjpF
NjpGMwotCi0gICAgU2lnbmF0dXJlIEFsZ29yaXRobTogc2hhMVdpdGhSU0FFbmNyeXB0aW9uCi0g
ICAgICAgIDZiOmIzOjQ2OjI5OjAyOmRmOmIwOmM4OjhlOmM0OmQ3OjdmOmEwOjFlOjBkOjFhOmVi
OjJmOgotICAgICAgICBkZjpkMTo0ODo1NzozNjo1Zjo5NTo4YzoxYjpmMDo1MTpkNjo1MjplNzo4
ZDo4NDozYjo5ZjoKLSAgICAgICAgZDg6ZWQ6MjI6OWM6YWE6YmQ6ZWU6OWI6OTA6MWQ6ODQ6YTM6
NGM6MGI6Y2I6ZWI6NjQ6NzM6Ci0gICAgICAgIGJhOmY3OjE1OmNlOmRhOjVmOmRiOjhiOjE1OjA3
OmE2OjI4OjdmOmI5OjhjOjExOjliOjY0OgotICAgICAgICBkMzpmMTpiZTo1Mjo0ZjpjMzpkODo1
ODpmZTpkZTo1Njo2Mzo2MzozYjo1MTplZDphNzo4MToKLSAgICAgICAgZjk6MDU6NTE6NzA6NjM6
MzI6MDk6MGU6OTQ6N2U6MDU6ZmU6YTE6NTY6MTg6MzQ6OTg6ZDU6Ci0gICAgICAgIDk5OjFlOjRl
OjI3OjM4Ojg5OjkwOjZhOmU1OmNlOjYwOjM1OjAxOmY1OmRlOjM0OjYwOmIxOgotICAgICAgICBj
YjphZQotLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCi1NSUlDbURDQ0FnR2dBd0lCQWdJQkFU
QU5CZ2txaGtpRzl3MEJBUVVGQURCSk1Rc3dDUVlEVlFRR0V3SktVREVPCi1NQXdHQTFVRUNCTUZW
RzlyZVc4eEZEQVNCZ05WQkFvVEMzQjVkMlZpYzI5amEyVjBNUlF3RWdZRFZRUURFd3R3Ci1lWGRs
WW5OdlkydGxkREFlRncweE1qQTJNRFl3TnpJMU1EaGFGdzB6T1RFd01qTXdOekkxTURoYU1Fa3hD
ekFKCi1CZ05WQkFZVEFrcFFNUTR3REFZRFZRUUlFd1ZVYjJ0NWJ6RVVNQklHQTFVRUNoTUxjSGwz
WldKemIyTnJaWFF4Ci1GREFTQmdOVkJBTVRDM0I1ZDJWaWMyOWphMlYwTUlHZk1BMEdDU3FHU0li
M0RRRUJBUVVBQTRHTkFEQ0JpUUtCCi1nUURlRU00NldnU2tIQ21UWENPQ0d2SUdBZVlycEEvZGQw
bDJpUU9pSWQ0RWRjYmkzZnMxSnpxaWtvNFNZaXMrCi1IL1I0MzdhVXl5Zld5OVkzMTF3SThBayt5
YzRrTFFESjMwcmdtZVg3STZuaTFzazlsdm9CaU41YWliRFBBMmR2Ci1CSVlkNzJJY1Zha0htaTVt
S25OYlRHSUQrWUtEMjJpL3VFc0xpNU1SdUZSemV3SURBUUFCbzRHUE1JR01NQWtHCi1BMVVkRXdR
Q01BQXdFUVlKWUlaSUFZYjRRZ0VCQkFRREFnWkFNQ3dHQ1dDR1NBR0crRUlCRFFRZkZoMVBjR1Z1
Ci1VMU5NSUVkbGJtVnlZWFJsWkNCRFpYSjBhV1pwWTJGMFpUQWRCZ05WSFE0RUZnUVVncUZ6aXhZ
TWZPVFRScFVUCi1sUm95d1lUcEJnQXdId1lEVlIwakJCZ3dGb0FVNnhaM0VKSzdLSEJwbDVwdm9H
aE9HamY3NXZNd0RRWUpLb1pJCi1odmNOQVFFRkJRQURnWUVBYTdOR0tRTGZzTWlPeE5kL29CNE5H
dXN2MzlGSVZ6WmZsWXdiOEZIV1V1ZU5oRHVmCi0yTzBpbktxOTdwdVFIWVNqVEF2TDYyUnp1dmNW
enRwZjI0c1ZCNllvZjdtTUVadGswL0crVWsvRDJGaiszbFpqCi1ZenRSN2FlQitRVlJjR015Q1E2
VWZnWCtvVllZTkpqVm1SNU9KemlKa0dybHptQTFBZlhlTkdDeHk2ND0KLS0tLS0tRU5EIENFUlRJ
RklDQVRFLS0tLS0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvY2VydC9jbGllbnRfY2VydC5w
MTIgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L3NyYy90ZXN0L2NlcnQvY2xpZW50X2NlcnQucDEyCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAxNGUxMzk5Mjc5ODJmYTk4MjNhNTcyMzFhZjExMzQ5OWQ2YTVhOGIwLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCkdJVCBiaW5hcnkgcGF0Y2gK
bGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpsaXRlcmFsIDI1ODIKemNtWStGWEgqamk3S01gIzB0Qmcy
cXpGaXRQIWY8UEhBLSpOTG9AVl9nY2YwdDhXQigjST97JVlSRngqdWAlKXlKCnoxbkchSzM1YnFo
WHJYN0FiOVElamY4NnVseCVadi0+JUheQWFacHdla1A0MllufWc2diNPdVlBOEd0bXZWalNJagp6
RnBoNVUoKFolZkFTd1N1a1lYR3A9RipBKTBSZmk8YCVlT2ReRnBCaS1mI3M3ZmlyPz4yY1ckVCM7
MipHQVBfQWUKejFfI2xybjJFKGVLT01KNk4yNllKbmVfQGhwfVNLUFhVQjdGTWVyX341fDFxZ0N7
VHFubkJ1djEka3BwNU9CeiVACno8bXlTdys/WT5eakFaNCNYQS19KiFRc2J1T2hXKHNPODM2Nigk
OygxQT5tbyhPLSV4KGhuKD15Wjt5fk5HI1FYMQp6Z0hrU2leXjhjdjRUVFNMOXZuNXFSKD5fRDNm
Jm9jKmp3UGdJI0tAUSNBc0wpRDtCRCZXYjJkK0kxXko3bj59WVoKemJDWG85Zk9AZyFAZFdZYTJW
JX07KSF7PHpEY3wocHZKSWF4VzdOZE8lTzZmPnImYU9ycEhre29fUjltUTQ3dW9iCno/bD45fG58
WDNgYWdwXkc7THdYUjU8KGxyK1I8Y0w1alRRKD9eRDxrUm8hSF9UI3A/eTNkfV50Q1lWIThSXk4/
fQp6QyolWG05TGVmPmo3aGxyLT9qSGxwfHdmQSZebi1zOzwheiRxRDF4UHEhOEtRMX1+ZHVwd35C
TTFnc35AQW87Q3EKendSZ1V8Ml5kfU4tZ1Y7QGFZa3U4SSV9fDxsNlFNPz1kfkZZcGJHRkg5JnZO
Z0taKlN5Y0lTfG1jdU9SP2wmQ093Cnpze3pkNXptZWx4cU4xRFF5e31QZ0I9dSNmeklOUGtCMG9O
KmNrM3ZgKzF7IVlYUH57RVZJN1ZxaCp+dWFXX35VQwp6bFIzM1JaMDVIaGtDLTFlSXApLUBZXnl2
Yy18UiUhKjlkdzduZlcpeWpjSElZZjZyPWFDdChVaGktRkptMm57XykKeiV7dWxCVVhSYDI8Pmx4
fWVHbVNtUko+NW90a0AoK3Bqc1BxOzRoWjZGSUtsI3tueFAhQUwhMjhfX0FZZmxgVmd7CnpsUlJh
QVJ8Vm15MV9gXmJialpyekF7USRsWWVqSVlkXkEkWj5XJmp5bk09S2BUbDR3Vikzd0BkMUpjYC01
LUNHSgp6eHFeQDhfKCE8WkYycWxoX1p9fW5yP1MmNSp6K0ZAKXYoWjFFSXM7SG19ITF+TVRMIWox
QGMkWkhMUn1WKD07Xm8KemRVcGZ5P28+eXpvbF9zaTw8VUVCPXQoZWVCemdKXldZd3NIQ0c5MzRz
JGQpQHFxSHdnXnlaTXtgXmpKITk7dHI2Cnplb1VheSYkK0J5R3xOXl96b0FIXnRZSWc+aGFZd3xA
fGMzMV53KG5VZDdrKFltRUo3NlZZNzkrKEMoXyQ7MU1zVQp6aGlOaStCNWdTckRqfDk+PEA/NlIm
OHpibThicj9DLU5uMWNrKCs8TkslNyk2di13V3E0PU1fVGJ0MTk0elUqeUYKemg8b3Q8SEJXbm94
QiUxazkoTTBvPE5nKVJnSFMoIz9lZEVRQiFefEZrLV8oYWBiVUJMQUsqaH5hen4hX3h1PVQ0Cno2
RzVLLWFYSm90SFFsRUM4Q1U1fFJ5TVJ1UWtYRSk/XnY2KGk9TXUpPSRebyUwIXlzNUdWUmFYWjJT
Mkg0STgzTAp6cSliYHxQeHsoODlXMzJ6cTRzcXpIK0JBS1A5dWFERXBEOElJQTlELUg0NUMlVlQ/
SkojTWErQkBpOU1QZEYtIyMKek54RjVUdX1pel9oeiRTS1owX18mIVlwMXlhZFZ6b2NARXkrQmVm
SkN0Q1NWZDUoSnkoPEM2SWNDV31EbUh3QzhUCnpSe2txdlJAPzNyekxHMiRaZGN4LTV2RlJAZCRR
I0REK357ZGhAbWRfZWBCQjYqVVk2Uis0XiNVJXo0bHR4OUIlOwp6TlY4eip7R2NHTTtncTJSdHlk
antIMFMwcCN6PDYlN20zISV7P01RdWE8YEBlNWJPdGJkIUVjP0dedXhmNGd4Y0kKei1GN1NUWWl+
dkRibXZDWjNORGNmSGo4PkM5RlY2amQxfShwU3dyZ0drKlFaOVJyNCk2IXNTa1RVcWJ4YmFlYTJ1
Cnp3U2AkeW9zUSllYiVvX3ZKTyohQWBkUjtZNGs+JnFZenVhLVpORTwzRkU9SStlU1U7eCFwdF5B
MzU+b0lvUGBKcQp6Wmx+KXJDNjBMK2tTeEFnb1BFfHJHalZAPzJBeSpYYj0kY2BjX0wzPUV6aGpC
VUQ9aDFfNCVlQkNmbGomRUhabU8KenN7MWJ8TnV4Nis7SyNLQj1Ua198aWt8eyowMWRrJDlLYTZg
Y1JVPU1jWWlOIWstYSkyUEQzMWg8Y1RzJWtQaG9aCnpPKTJ3X1Q5LTh3Mk5NJiZxMnBsNF5LcX1D
UGU9bDlocSRXNCF0O0pEJXxVSigyOHZEYk0qTD5WRjdiV19Ye2IxNAp6R053KHc+RV9TOWA8O3hR
bFBgQHNkPjZtM24yKUwpMHAhWFJyRCMyNWlJa1JEcykxdWpOJVNzeXcjNjJ2ZHYmQWwKemNkai1Z
bCM2K0BhMFdzY1U8M2BndlckMnctKF5IZkVSeXhzTnNxNm1LMGQ4Oz8wTFNlTmglTkVlMEJZSjRJ
TChhCnokV1huZClQQlc8QVRre3klMlM5R1BhMnF5SlckXkpKX2NvX1hQMW05RX1qKVE/XmwkIypN
RHhQNXxtWTF6Y3EzeQp6Yj1AenlDWHVnd2R7Tmp4P2kyN2orelhPNCpWPn1aZS16QlF4KUh5bndM
YE5qKCE5dCk1NGRPO3pUVn4tTyM7VTsKek13cDBQVS11VUw/IyM4TC0pJnZtYm5BbW4jQCZhPnY9
Y1B9RVVRSlZ3YUR3OVY8LUl3WXRpVDl3KFRNZWEyJUR5Cnp8QTQwJE41dW9pUUVeX3tTMS1pYHE1
bHR0cGc+U0Q0cGFmaGZsQnw2UEU+IT5zaFdrb0VtWmhnK34wSHA8M0tUQAp6OWprJHFNQz0wJkJi
a15mUm80ZjM4Sn5pV0N8eEdQMGB3WjNGI2s4ZypJZE5ZJEdGLUF4OF48RHJCXmoyOFhiNnMKelJ8
O1Z2YXIlPHxUWkt+PjMwa0QzKVckQUQjKHR0YCNAeDdROE9ZYXBUX0p5TTF2VD9sYngtK19GKEpG
JXlTME8kCnpwUyNsfXcqMGo+Yn1NM2U7NEk+e3BNTT5zJWA/ZlNBRV9RYmBBbj5fViFraX0kOXdN
TjkoZlUxdUpHbTBNaTdoSwp6QTVsMGUxd1ZjXiRxbD81Z20+OEV2QnBTYVdmNVRJZzNaU2J1Smhw
O2ElKFora2N7Y2R2MVB1WCRlMkdBTj9KZjgKeldLTmdTPChNMkZOVWBSeGRCR31mPVMxcm5RKmVS
MTJxRl9DJiZwbkBgeSVDfkw5XlFfWjlsaCZHPVh2R0MhNDEwCnp5bik1bz0peDJpSlkrXj9eRUxq
bnRISGB9Syl6YT9JPXx2ISRoTDBuJkd6eXB6YUx3TmRlTT1Pald8LS09bVJfagp6eXQ/flZ4X185
QkV2Y2hMPzlodVVvYi01bityMT88eEBjZ301YXxWfEZjRlFPKmVJcHdaRW5+VkdMZXF2U0BXazIK
eikhK0QzLTt7NEBPTyliK2JRTyM9LUUrQmVPQGYhMzxpVDBtYjJwYjM4OHtHSVJhcmpkblRpJUA/
NHF3eSNxNjBZCnpxaUF8e3Q2bzQ5RU0xOEomdzhEQSN3UUREc0Z3TiRIRypNVEwyMUJRailZUmBX
NUw7WmZNTTwqckw9RklnfDBiSgp6VDlyN0ZsQkxMXnJWJTFVTyEzfEdERWFNIWpIUExyPzVRQnVD
QyFXKT5kcmZeUkNgYDdZUllaKEs+aWUwPnBKZF4KekpXX0h7JSleYyE2Pmx8OVA4P2M9aihCNTdZ
Sno4P1h5UXpFOXVHYX1kVjBQVHAzITtwIVNGKX10LWk+QzxFZEgrCnpNS0FTblYjISZTV2ZkfTBk
bGpYc3lRZnpzQDZpMCtkcVNISkx+Rjd+b3R8JEh3ZitGKjBqQ0sqdzVXb0ZAUTloTgp6aGxrJVN7
aDZDNTdDSTJfNVI5O2YzO3AtMT5EVW4qVV5lb0dqaHFvOypSKiRrVkUwMUo+VEpRUnN2OW96Jmsh
M3oKemtXVDsqMFFlME0zVUNMdzBEPUorZkdmY0Z2SlV8YFVkc0tfMzR0VHZIe2YmLVk4V0ZHaD9e
UCFYNTt5PUZadURzCmZmcldrMCVNKE9HblRNTjxoJnFAeUxkRFVfJk1jQWY/fDFrTWVqVU5vCgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC9jZXJ0L2tleS5wZW0gYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L2Nl
cnQva2V5LnBlbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmFlODU4MzE4ZjI5YmE2
YjQ2MjNiZDVmYmM0YTA4Y2U3M2Q5MDMxMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L2NlcnQva2V5LnBlbQorKysgL2Rldi9udWxs
CkBAIC0xLDE1ICswLDAgQEAKLS0tLS0tQkVHSU4gUlNBIFBSSVZBVEUgS0VZLS0tLS0KLU1JSUNY
Z0lCQUFLQmdRRGVFTTQ2V2dTa0hDbVRYQ09DR3ZJR0FlWXJwQS9kZDBsMmlRT2lJZDRFZGNiaTNm
czEKLUp6cWlrbzRTWWlzK0gvUjQzN2FVeXlmV3k5WTMxMXdJOEFrK3ljNGtMUURKMzByZ21lWDdJ
Nm5pMXNrOWx2b0IKLWlONWFpYkRQQTJkdkJJWWQ3MkljVmFrSG1pNW1Lbk5iVEdJRCtZS0QyMmkv
dUVzTGk1TVJ1RlJ6ZXdJREFRQUIKLUFvR0JBSXVDdVYxVmNuYjdybThDd3RnWlA1WGdtWTh2U2p4
VGxkYWZhNlh2YXdFWVVUUDBTNzd2LzFsbGcxWXYKLVVJVitJK1BRZ0c5b1ZvWU9sMjJMb2ltSFMv
WjNlMWZzb3Q1dERZc3pHZTgvR2tzdDRvYVJlU294dkJVYTZXWHAKLVFTbzdZRkNhanVIdEUrVy9n
ekYrVUhiZHp6WElEalFaMzE0TE5GNXQrNFVuc0VQQkFrRUErZ2lySW1xV29NMnQKLTNVUjhmOG9l
a0VSd3NtRU1mOURINVlwSDRjdlVudkkra3dlc0MvcjJVOFNobysrZnlFTVVObTdhSVhHcU5MZ2EK
LW9nQU0rNE5YNFFKQkFPTmRTeFNheTIyZWdUR05vSWhMbmRsaldrdU90LzlGV2oya2xmLzRReEQ0
YmxNSlE1T3EKLVFkT0dBaDduVlFqcFBMUTVEN0NCVkFLcEdNMkNEK1FKQnRzQ1FFUDJrejM1cHhQ
eWxHM3VyY0MybWZReEJra1cKLVpDVmlCTlA1OEd3SjBiT2F1VE9TQkV3RlhXdUxxVHc4YUR3eEw0
OVVObXFjME4wZnBlMmZBZWhqM1VFQ1FRQ20KLUZIL0RqVThMdzd5YmRkak50bTZYWFB1WU5hZ3h6
M2Nia0I0QjNGY2hEbGVJVUR3TW9WRjBNVzliSTUvNTRtVjEKLVFEazF0VUtvcnR4dlFaSmFBRDRC
QWtFQWhHT0hRcVBkNmJCQm9GQnZwYUx6UEpNeHdMS3JCK1d0a3EvUWxDNzIKLUNsUmlNbjJnOFNB
TGlJTDNCRGdHWEtjS0UvV3k3am8vYWYvSkN6US9jUHF0L0E9PQotLS0tLS1FTkQgUlNBIFBSSVZB
VEUgS0VZLS0tLS0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvY2VydC93M2MtaW1wb3J0Lmxv
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3
ZWJzb2NrZXQvc3JjL3Rlc3QvY2VydC93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggN2JkNzAzZDgyMWVhNWJhZWUxNTU2MTFlZTg0N2YyNzBjYmEyNmY3NS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0
L2NlcnQvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1UaGUg
dGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3Np
dG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5z
dGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8v
Z2l0aHViLmNvbS93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzCi0KLVRoZW4gcnVuIHRoZSBUb29scy9T
Y3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBt
b2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVz
IHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWly
aW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxl
czoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L3NyYy90ZXN0L2NlcnQvY2FjZXJ0LnBlbQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvY2VydC9j
ZXJ0LnBlbQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvY2VydC9jbGllbnRfY2VydC5wMTIKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90
ZXN0L2NlcnQva2V5LnBlbQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC9jbGllbnRfZm9yX3Rl
c3RpbmcucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L2NsaWVudF9mb3JfdGVzdGluZy5weQpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYzdmODA1ZWU5NGU1NDk0NjllZDg3MGRhZTdlMGNjZjIwMjZi
ZWFiNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0
L3NyYy90ZXN0L2NsaWVudF9mb3JfdGVzdGluZy5weQorKysgL2Rldi9udWxsCkBAIC0xLDExMDAg
KzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDEyLCBHb29n
bGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0j
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0i
IiJXZWJTb2NrZXQgY2xpZW50IHV0aWxpdHkgZm9yIHRlc3RpbmcuCi0KLVRoaXMgbW9kdWxlIGNv
bnRhaW5zIGhlbHBlciBtZXRob2RzIGZvciBwZXJmb3JtaW5nIGhhbmRzaGFrZSwgZnJhbWUKLXNl
bmRpbmcvcmVjZWl2aW5nIGFzIGEgV2ViU29ja2V0IGNsaWVudC4KLQotVGhpcyBpcyBjb2RlIGZv
ciB0ZXN0aW5nIG1vZF9weXdlYnNvY2tldC4gS2VlcCB0aGlzIGNvZGUgaW5kZXBlbmRlbnQgZnJv
bQotbW9kX3B5d2Vic29ja2V0LiBEb24ndCBpbXBvcnQgZS5nLiBTdHJlYW0gY2xhc3MgZm9yIGdl
bmVyYXRpbmcgZnJhbWUgZm9yCi10ZXN0aW5nLiBVc2luZyB1dGlsLmhleGlmeSwgZXRjLiB0aGF0
IGFyZSBub3QgcmVsYXRlZCB0byBwcm90b2NvbCBwcm9jZXNzaW5nCi1pcyBhbGxvd2VkLgotCi1O
b3RlOgotVGhpcyBjb2RlIGlzIGZhciBmcm9tIHJvYnVzdCwgZS5nLiwgd2UgY3V0IGNvcm5lcnMg
aW4gaGFuZHNoYWtlLgotIiIiCi0KLQotaW1wb3J0IGJhc2U2NAotaW1wb3J0IGVycm5vCi1pbXBv
cnQgbG9nZ2luZwotaW1wb3J0IG9zCi1pbXBvcnQgcmFuZG9tCi1pbXBvcnQgcmUKLWltcG9ydCBz
b2NrZXQKLWltcG9ydCBzdHJ1Y3QKLWltcG9ydCB0aW1lCi0KLWZyb20gbW9kX3B5d2Vic29ja2V0
IGltcG9ydCBjb21tb24KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCi0KLQotREVG
QVVMVF9QT1JUID0gODAKLURFRkFVTFRfU0VDVVJFX1BPUlQgPSA0NDMKLQotIyBPcGNvZGVzIGlu
dHJvZHVjZWQgaW4gSUVURiBIeUJpIDAxIGZvciB0aGUgbmV3IGZyYW1pbmcgZm9ybWF0Ci1PUENP
REVfQ09OVElOVUFUSU9OID0gMHgwCi1PUENPREVfQ0xPU0UgPSAweDgKLU9QQ09ERV9QSU5HID0g
MHg5Ci1PUENPREVfUE9ORyA9IDB4YQotT1BDT0RFX1RFWFQgPSAweDEKLU9QQ09ERV9CSU5BUlkg
PSAweDIKLQotIyBTdHJpbmdzIHVzZWQgZm9yIGhhbmRzaGFrZQotX1VQR1JBREVfSEVBREVSID0g
J1VwZ3JhZGU6IHdlYnNvY2tldFxyXG4nCi1fVVBHUkFERV9IRUFERVJfSElYSUU3NSA9ICdVcGdy
YWRlOiBXZWJTb2NrZXRcclxuJwotX0NPTk5FQ1RJT05fSEVBREVSID0gJ0Nvbm5lY3Rpb246IFVw
Z3JhZGVcclxuJwotCi1XRUJTT0NLRVRfQUNDRVBUX1VVSUQgPSAnMjU4RUFGQTUtRTkxNC00N0RB
LTk1Q0EtQzVBQjBEQzg1QjExJwotCi0jIFN0YXR1cyBjb2RlcwotU1RBVFVTX05PUk1BTF9DTE9T
VVJFID0gMTAwMAotU1RBVFVTX0dPSU5HX0FXQVkgPSAxMDAxCi1TVEFUVVNfUFJPVE9DT0xfRVJS
T1IgPSAxMDAyCi1TVEFUVVNfVU5TVVBQT1JURURfREFUQSA9IDEwMDMKLVNUQVRVU19OT19TVEFU
VVNfUkVDRUlWRUQgPSAxMDA1Ci1TVEFUVVNfQUJOT1JNQUxfQ0xPU1VSRSA9IDEwMDYKLVNUQVRV
U19JTlZBTElEX0ZSQU1FX1BBWUxPQURfREFUQSA9IDEwMDcKLVNUQVRVU19QT0xJQ1lfVklPTEFU
SU9OID0gMTAwOAotU1RBVFVTX01FU1NBR0VfVE9PX0JJRyA9IDEwMDkKLVNUQVRVU19NQU5EQVRP
UllfRVhUID0gMTAxMAotU1RBVFVTX0lOVEVSTkFMX0VORFBPSU5UX0VSUk9SID0gMTAxMQotU1RB
VFVTX1RMU19IQU5EU0hBS0UgPSAxMDE1Ci0KLSMgRXh0ZW5zaW9uIHRva2VucwotX0RFRkxBVEVf
RlJBTUVfRVhURU5TSU9OID0gJ2RlZmxhdGUtZnJhbWUnCi0jIFRPRE8oYmFzaGkpOiBVcGRhdGUg
YWZ0ZXIgbXV4IGltcGxlbWVudGF0aW9uIGZpbmlzaGVkLgotX01VWF9FWFRFTlNJT04gPSAnbXV4
X0RPX05PVF9VU0UnCi1fUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTiA9ICdwZXJtZXNzYWdl
LWRlZmxhdGUnCi0KLWRlZiBfbWV0aG9kX2xpbmUocmVzb3VyY2UpOgotICAgIHJldHVybiAnR0VU
ICVzIEhUVFAvMS4xXHJcbicgJSByZXNvdXJjZQotCi0KLWRlZiBfc2VjX29yaWdpbl9oZWFkZXIo
b3JpZ2luKToKLSAgICByZXR1cm4gJ1NlYy1XZWJTb2NrZXQtT3JpZ2luOiAlc1xyXG4nICUgb3Jp
Z2luLmxvd2VyKCkKLQotCi1kZWYgX29yaWdpbl9oZWFkZXIob3JpZ2luKToKLSAgICAjIDQuMSAx
My4gY29uY2F0ZW5hdGlvbiBvZiB0aGUgc3RyaW5nICJPcmlnaW46IiwgYSBVKzAwMjAgU1BBQ0Ug
Y2hhcmFjdGVyLAotICAgICMgYW5kIHRoZSAvb3JpZ2luLyB2YWx1ZSwgY29udmVydGVkIHRvIEFT
Q0lJIGxvd2VyY2FzZSwgdG8gL2ZpZWxkcy8uCi0gICAgcmV0dXJuICdPcmlnaW46ICVzXHJcbicg
JSBvcmlnaW4ubG93ZXIoKQotCi0KLWRlZiBfZm9ybWF0X2hvc3RfaGVhZGVyKGhvc3QsIHBvcnQs
IHNlY3VyZSk6Ci0gICAgIyA0LjEgOS4gTGV0IC9ob3N0cG9ydC8gYmUgYW4gZW1wdHkgc3RyaW5n
LgotICAgICMgNC4xIDEwLiBBcHBlbmQgdGhlIC9ob3N0LyB2YWx1ZSwgY29udmVydGVkIHRvIEFT
Q0lJIGxvd2VyY2FzZSwgdG8KLSAgICAjIC9ob3N0cG9ydC8KLSAgICBob3N0cG9ydCA9IGhvc3Qu
bG93ZXIoKQotICAgICMgNC4xIDExLiBJZiAvc2VjdXJlLyBpcyBmYWxzZSwgYW5kIC9wb3J0LyBp
cyBub3QgODAsIG9yIGlmIC9zZWN1cmUvCi0gICAgIyBpcyB0cnVlLCBhbmQgL3BvcnQvIGlzIG5v
dCA0NDMsIHRoZW4gYXBwZW5kIGEgVSswMDNBIENPTE9OIGNoYXJhY3RlcgotICAgICMgKDopIGZv
bGxvd2VkIGJ5IHRoZSB2YWx1ZSBvZiAvcG9ydC8sIGV4cHJlc3NlZCBhcyBhIGJhc2UtdGVuIGlu
dGVnZXIsCi0gICAgIyB0byAvaG9zdHBvcnQvCi0gICAgaWYgKChub3Qgc2VjdXJlIGFuZCBwb3J0
ICE9IERFRkFVTFRfUE9SVCkgb3IKLSAgICAgICAgKHNlY3VyZSBhbmQgcG9ydCAhPSBERUZBVUxU
X1NFQ1VSRV9QT1JUKSk6Ci0gICAgICAgIGhvc3Rwb3J0ICs9ICc6JyArIHN0cihwb3J0KQotICAg
ICMgNC4xIDEyLiBjb25jYXRlbmF0aW9uIG9mIHRoZSBzdHJpbmcgIkhvc3Q6IiwgYSBVKzAwMjAg
U1BBQ0UKLSAgICAjIGNoYXJhY3RlciwgYW5kIC9ob3N0cG9ydC8sIHRvIC9maWVsZHMvLgotICAg
IHJldHVybiAnSG9zdDogJXNcclxuJyAlIGhvc3Rwb3J0Ci0KLQotIyBUT0RPKHR5b3NoaW5vKTog
RGVmaW5lIGEgYmFzZSBjbGFzcyBhbmQgbW92ZSB0aGVzZSBzaGFyZWQgbWV0aG9kcyB0byB0aGF0
LgotCi0KLWRlZiByZWNlaXZlX2J5dGVzKHNvY2tldCwgbGVuZ3RoKToKLSAgICByZWNlaXZlZF9i
eXRlcyA9IFtdCi0gICAgcmVtYWluaW5nID0gbGVuZ3RoCi0gICAgd2hpbGUgcmVtYWluaW5nID4g
MDoKLSAgICAgICAgbmV3X3JlY2VpdmVkX2J5dGVzID0gc29ja2V0LnJlY3YocmVtYWluaW5nKQot
ICAgICAgICBpZiBub3QgbmV3X3JlY2VpdmVkX2J5dGVzOgotICAgICAgICAgICAgcmFpc2UgRXhj
ZXB0aW9uKAotICAgICAgICAgICAgICAgICdDb25uZWN0aW9uIGNsb3NlZCBiZWZvcmUgcmVjZWl2
aW5nIHJlcXVlc3RlZCBsZW5ndGggJwotICAgICAgICAgICAgICAgICcocmVxdWVzdGVkICVkIGJ5
dGVzIGJ1dCByZWNlaXZlZCBvbmx5ICVkIGJ5dGVzKScgJQotICAgICAgICAgICAgICAgIChsZW5n
dGgsIGxlbmd0aCAtIHJlbWFpbmluZykpCi0gICAgICAgIHJlY2VpdmVkX2J5dGVzLmFwcGVuZChu
ZXdfcmVjZWl2ZWRfYnl0ZXMpCi0gICAgICAgIHJlbWFpbmluZyAtPSBsZW4obmV3X3JlY2VpdmVk
X2J5dGVzKQotICAgIHJldHVybiAnJy5qb2luKHJlY2VpdmVkX2J5dGVzKQotCi0KLSMgVE9ETyh0
eW9zaGlubyk6IE5vdyB0aGUgV2ViU29ja2V0SGFuZHNoYWtlIGNsYXNzIGRpdmVydHMgdGhlc2Ug
bWV0aG9kcy4gV2UKLSMgc2hvdWxkIG1vdmUgdG8gSFRUUCBwYXJzZXIgYXMgc3BlY2lmaWVkIGlu
IFJGQyA2NDU1LiBGb3IgSHlCaSAwMCBhbmQKLSMgSGl4aWUgNzUsIHBhY2sgdGhlc2UgbWV0aG9k
cyBhcyBzb21lIHBhcnNlciBjbGFzcy4KLQotCi1kZWYgX3JlYWRfZmllbGRzKHNvY2tldCk6Ci0g
ICAgIyA0LjEgMzIuIGxldCAvZmllbGRzLyBiZSBhIGxpc3Qgb2YgbmFtZS12YWx1ZSBwYWlycywg
aW5pdGlhbGx5IGVtcHR5LgotICAgIGZpZWxkcyA9IHt9Ci0gICAgd2hpbGUgVHJ1ZToKLSAgICAg
ICAgIyA0LjEgMzMuIGxldCAvbmFtZS8gYW5kIC92YWx1ZS8gYmUgZW1wdHkgYnl0ZSBhcnJheXMK
LSAgICAgICAgbmFtZSA9ICcnCi0gICAgICAgIHZhbHVlID0gJycKLSAgICAgICAgIyA0LjEgMzQu
IHJlYWQgL25hbWUvCi0gICAgICAgIG5hbWUgPSBfcmVhZF9uYW1lKHNvY2tldCkKLSAgICAgICAg
aWYgbmFtZSBpcyBOb25lOgotICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgIyA0LjEgMzUuIHJl
YWQgc3BhY2VzCi0gICAgICAgICMgVE9ETyh0eW9zaGlubyk6IFNraXAgb25seSBvbmUgc3BhY2Ug
YXMgZGVzY3JpYmVkIGluIHRoZSBzcGVjLgotICAgICAgICBjaCA9IF9za2lwX3NwYWNlcyhzb2Nr
ZXQpCi0gICAgICAgICMgNC4xIDM2LiByZWFkIC92YWx1ZS8KLSAgICAgICAgdmFsdWUgPSBfcmVh
ZF92YWx1ZShzb2NrZXQsIGNoKQotICAgICAgICAjIDQuMSAzNy4gcmVhZCBhIGJ5dGUgZnJvbSB0
aGUgc2VydmVyCi0gICAgICAgIGNoID0gcmVjZWl2ZV9ieXRlcyhzb2NrZXQsIDEpCi0gICAgICAg
IGlmIGNoICE9ICdcbic6ICAjIDB4MEEKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAg
ICAgICAgICAgICAgICAnRXhwZWN0ZWQgTEYgYnV0IGZvdW5kICVyIHdoaWxlIHJlYWRpbmcgdmFs
dWUgJXIgZm9yIGhlYWRlciAnCi0gICAgICAgICAgICAgICAgJyVyJyAlIChjaCwgbmFtZSwgdmFs
dWUpKQotICAgICAgICAjIDQuMSAzOC4gYXBwZW5kIGFuIGVudHJ5IHRvIHRoZSAvZmllbGRzLyBs
aXN0IHRoYXQgaGFzIHRoZSBuYW1lCi0gICAgICAgICMgZ2l2ZW4gYnkgdGhlIHN0cmluZyBvYnRh
aW5lZCBieSBpbnRlcnByZXRpbmcgdGhlIC9uYW1lLyBieXRlCi0gICAgICAgICMgYXJyYXkgYXMg
YSBVVEYtOCBzdHJlYW0gYW5kIHRoZSB2YWx1ZSBnaXZlbiBieSB0aGUgc3RyaW5nCi0gICAgICAg
ICMgb2J0YWluZWQgYnkgaW50ZXJwcmV0aW5nIHRoZSAvdmFsdWUvIGJ5dGUgYXJyYXkgYXMgYSBV
VEYtOCBieXRlCi0gICAgICAgICMgc3RyZWFtLgotICAgICAgICBmaWVsZHMuc2V0ZGVmYXVsdChu
YW1lLCBbXSkuYXBwZW5kKHZhbHVlKQotICAgICAgICAjIDQuMSAzOS4gcmV0dXJuIHRvIHRoZSAi
RmllbGQiIHN0ZXAgYWJvdmUKLSAgICByZXR1cm4gZmllbGRzCi0KLQotZGVmIF9yZWFkX25hbWUo
c29ja2V0KToKLSAgICAjIDQuMSAzMy4gbGV0IC9uYW1lLyBiZSBlbXB0eSBieXRlIGFycmF5cwot
ICAgIG5hbWUgPSAnJwotICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICMgNC4xIDM0LiByZWFkIGEg
Ynl0ZSBmcm9tIHRoZSBzZXJ2ZXIKLSAgICAgICAgY2ggPSByZWNlaXZlX2J5dGVzKHNvY2tldCwg
MSkKLSAgICAgICAgaWYgY2ggPT0gJ1xyJzogICMgMHgwRAotICAgICAgICAgICAgcmV0dXJuIE5v
bmUKLSAgICAgICAgZWxpZiBjaCA9PSAnXG4nOiAgIyAweDBBCi0gICAgICAgICAgICByYWlzZSBF
eGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgTEYgd2hlbiByZWFkaW5nIGhl
YWRlciBuYW1lICVyJyAlIG5hbWUpCi0gICAgICAgIGVsaWYgY2ggPT0gJzonOiAgIyAweDNBCi0g
ICAgICAgICAgICByZXR1cm4gbmFtZQotICAgICAgICBlbGlmIGNoID49ICdBJyBhbmQgY2ggPD0g
J1onOiAgIyByYW5nZSAweDMxIHRvIDB4NUEKLSAgICAgICAgICAgIGNoID0gY2hyKG9yZChjaCkg
KyAweDIwKQotICAgICAgICAgICAgbmFtZSArPSBjaAotICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgbmFtZSArPSBjaAotCi0KLWRlZiBfc2tpcF9zcGFjZXMoc29ja2V0KToKLSAgICAjIDQuMSAz
NS4gcmVhZCBhIGJ5dGUgZnJvbSB0aGUgc2VydmVyCi0gICAgd2hpbGUgVHJ1ZToKLSAgICAgICAg
Y2ggPSByZWNlaXZlX2J5dGVzKHNvY2tldCwgMSkKLSAgICAgICAgaWYgY2ggPT0gJyAnOiAgIyAw
eDIwCi0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICByZXR1cm4gY2gKLQotCi1kZWYgX3Jl
YWRfdmFsdWUoc29ja2V0LCBjaCk6Ci0gICAgIyA0LjEgMzMuIGxldCAvdmFsdWUvIGJlIGVtcHR5
IGJ5dGUgYXJyYXlzCi0gICAgdmFsdWUgPSAnJwotICAgICMgNC4xIDM2LiByZWFkIGEgYnl0ZSBm
cm9tIHNlcnZlci4KLSAgICB3aGlsZSBUcnVlOgotICAgICAgICBpZiBjaCA9PSAnXHInOiAgIyAw
eDBECi0gICAgICAgICAgICByZXR1cm4gdmFsdWUKLSAgICAgICAgZWxpZiBjaCA9PSAnXG4nOiAg
IyAweDBBCi0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ1Vu
ZXhwZWN0ZWQgTEYgd2hlbiByZWFkaW5nIGhlYWRlciB2YWx1ZSAlcicgJSB2YWx1ZSkKLSAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgIHZhbHVlICs9IGNoCi0gICAgICAgIGNoID0gcmVjZWl2ZV9i
eXRlcyhzb2NrZXQsIDEpCi0KLQotZGVmIHJlYWRfZnJhbWVfaGVhZGVyKHNvY2tldCk6Ci0gICAg
cmVjZWl2ZWQgPSByZWNlaXZlX2J5dGVzKHNvY2tldCwgMikKLQotICAgIGZpcnN0X2J5dGUgPSBv
cmQocmVjZWl2ZWRbMF0pCi0gICAgZmluID0gKGZpcnN0X2J5dGUgPj4gNykgJiAxCi0gICAgcnN2
MSA9IChmaXJzdF9ieXRlID4+IDYpICYgMQotICAgIHJzdjIgPSAoZmlyc3RfYnl0ZSA+PiA1KSAm
IDEKLSAgICByc3YzID0gKGZpcnN0X2J5dGUgPj4gNCkgJiAxCi0gICAgb3Bjb2RlID0gZmlyc3Rf
Ynl0ZSAmIDB4ZgotCi0gICAgc2Vjb25kX2J5dGUgPSBvcmQocmVjZWl2ZWRbMV0pCi0gICAgbWFz
ayA9IChzZWNvbmRfYnl0ZSA+PiA3KSAmIDEKLSAgICBwYXlsb2FkX2xlbmd0aCA9IHNlY29uZF9i
eXRlICYgMHg3ZgotCi0gICAgaWYgbWFzayAhPSAwOgotICAgICAgICByYWlzZSBFeGNlcHRpb24o
Ci0gICAgICAgICAgICAnTWFzayBiaXQgbXVzdCBiZSAwIGZvciBmcmFtZXMgY29taW5nIGZyb20g
c2VydmVyJykKLQotICAgIGlmIHBheWxvYWRfbGVuZ3RoID09IDEyNzoKLSAgICAgICAgZXh0ZW5k
ZWRfcGF5bG9hZF9sZW5ndGggPSByZWNlaXZlX2J5dGVzKHNvY2tldCwgOCkKLSAgICAgICAgcGF5
bG9hZF9sZW5ndGggPSBzdHJ1Y3QudW5wYWNrKAotICAgICAgICAgICAgJyFRJywgZXh0ZW5kZWRf
cGF5bG9hZF9sZW5ndGgpWzBdCi0gICAgICAgIGlmIHBheWxvYWRfbGVuZ3RoID4gMHg3RkZGRkZG
RkZGRkZGRkZGOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdFeHRlbmRlZCBwYXlsb2Fk
IGxlbmd0aCA+PSAyXjYzJykKLSAgICBlbGlmIHBheWxvYWRfbGVuZ3RoID09IDEyNjoKLSAgICAg
ICAgZXh0ZW5kZWRfcGF5bG9hZF9sZW5ndGggPSByZWNlaXZlX2J5dGVzKHNvY2tldCwgMikKLSAg
ICAgICAgcGF5bG9hZF9sZW5ndGggPSBzdHJ1Y3QudW5wYWNrKAotICAgICAgICAgICAgJyFIJywg
ZXh0ZW5kZWRfcGF5bG9hZF9sZW5ndGgpWzBdCi0KLSAgICByZXR1cm4gZmluLCByc3YxLCByc3Yy
LCByc3YzLCBvcGNvZGUsIHBheWxvYWRfbGVuZ3RoCi0KLQotY2xhc3MgX1RMU1NvY2tldChvYmpl
Y3QpOgotICAgICIiIldyYXBwZXIgZm9yIGEgVExTIGNvbm5lY3Rpb24uIiIiCi0KLSAgICBkZWYg
X19pbml0X18oc2VsZiwgcmF3X3NvY2tldCk6Ci0gICAgICAgIHNlbGYuX3NzbCA9IHNvY2tldC5z
c2wocmF3X3NvY2tldCkKLQotICAgIGRlZiBzZW5kKHNlbGYsIGJ5dGVzKToKLSAgICAgICAgcmV0
dXJuIHNlbGYuX3NzbC53cml0ZShieXRlcykKLQotICAgIGRlZiByZWN2KHNlbGYsIHNpemU9LTEp
OgotICAgICAgICByZXR1cm4gc2VsZi5fc3NsLnJlYWQoc2l6ZSkKLQotICAgIGRlZiBjbG9zZShz
ZWxmKToKLSAgICAgICAgIyBOb3RoaW5nIHRvIGRvLgotICAgICAgICBwYXNzCi0KLQotY2xhc3Mg
SHR0cFN0YXR1c0V4Y2VwdGlvbihFeGNlcHRpb24pOgotICAgICIiIlRoaXMgZXhjZXB0aW9uIHdp
bGwgYmUgcmFpc2VkIHdoZW4gdW5leHBlY3RlZCBodHRwIHN0YXR1cyBjb2RlIHdhcwotICAgIHJl
Y2VpdmVkIGFzIGEgcmVzdWx0IG9mIGhhbmRzaGFrZS4KLSAgICAiIiIKLQotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBuYW1lLCBzdGF0dXMpOgotICAgICAgICBzdXBlcihIdHRwU3RhdHVzRXhjZXB0
aW9uLCBzZWxmKS5fX2luaXRfXyhuYW1lKQotICAgICAgICBzZWxmLnN0YXR1cyA9IHN0YXR1cwot
Ci0KLWNsYXNzIFdlYlNvY2tldEhhbmRzaGFrZShvYmplY3QpOgotICAgICIiIk9wZW5pbmcgaGFu
ZHNoYWtlIHByb2Nlc3NvciBmb3IgdGhlIFdlYlNvY2tldCBwcm90b2NvbCAoUkZDIDY0NTUpLiIi
IgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wdGlvbnMpOgotICAgICAgICBzZWxmLl9sb2dn
ZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKLQotICAgICAgICBzZWxmLl9vcHRpb25z
ID0gb3B0aW9ucwotCi0gICAgZGVmIGhhbmRzaGFrZShzZWxmLCBzb2NrZXQpOgotICAgICAgICAi
IiJIYW5kc2hha2UgV2ViU29ja2V0LgotCi0gICAgICAgIFJhaXNlczoKLSAgICAgICAgICAgIEV4
Y2VwdGlvbjogaGFuZHNoYWtlIGZhaWxlZC4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi5f
c29ja2V0ID0gc29ja2V0Ci0KLSAgICAgICAgcmVxdWVzdF9saW5lID0gX21ldGhvZF9saW5lKHNl
bGYuX29wdGlvbnMucmVzb3VyY2UpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnT3Blbmlu
ZyBoYW5kc2hha2UgUmVxdWVzdC1MaW5lOiAlcicsIHJlcXVlc3RfbGluZSkKLSAgICAgICAgc2Vs
Zi5fc29ja2V0LnNlbmRhbGwocmVxdWVzdF9saW5lKQotCi0gICAgICAgIGZpZWxkcyA9IFtdCi0g
ICAgICAgIGZpZWxkcy5hcHBlbmQoX1VQR1JBREVfSEVBREVSKQotICAgICAgICBmaWVsZHMuYXBw
ZW5kKF9DT05ORUNUSU9OX0hFQURFUikKLQotICAgICAgICBmaWVsZHMuYXBwZW5kKF9mb3JtYXRf
aG9zdF9oZWFkZXIoCi0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLnNlcnZlcl9ob3N0LAotICAg
ICAgICAgICAgc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfcG9ydCwKLSAgICAgICAgICAgIHNlbGYuX29w
dGlvbnMudXNlX3RscykpCi0KLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy52ZXJzaW9uIGlzIDg6
Ci0gICAgICAgICAgICBmaWVsZHMuYXBwZW5kKF9zZWNfb3JpZ2luX2hlYWRlcihzZWxmLl9vcHRp
b25zLm9yaWdpbikpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmaWVsZHMuYXBwZW5kKF9v
cmlnaW5faGVhZGVyKHNlbGYuX29wdGlvbnMub3JpZ2luKSkKLQotICAgICAgICBvcmlnaW5hbF9r
ZXkgPSBvcy51cmFuZG9tKDE2KQotICAgICAgICBrZXkgPSBiYXNlNjQuYjY0ZW5jb2RlKG9yaWdp
bmFsX2tleSkKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAgICAgJ1NlYy1X
ZWJTb2NrZXQtS2V5OiAlcyAoJXMpJywga2V5LCB1dGlsLmhleGlmeShvcmlnaW5hbF9rZXkpKQot
ICAgICAgICBmaWVsZHMuYXBwZW5kKCdTZWMtV2ViU29ja2V0LUtleTogJXNcclxuJyAlIGtleSkK
LQotICAgICAgICBmaWVsZHMuYXBwZW5kKCdTZWMtV2ViU29ja2V0LVZlcnNpb246ICVkXHJcbicg
JSBzZWxmLl9vcHRpb25zLnZlcnNpb24pCi0KLSAgICAgICAgIyBTZXR0aW5nIHVwIGV4dGVuc2lv
bnMuCi0gICAgICAgIGlmIGxlbihzZWxmLl9vcHRpb25zLmV4dGVuc2lvbnMpID4gMDoKLSAgICAg
ICAgICAgIGZpZWxkcy5hcHBlbmQoJ1NlYy1XZWJTb2NrZXQtRXh0ZW5zaW9uczogJXNcclxuJyAl
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICcsICcuam9pbihzZWxmLl9vcHRpb25zLmV4dGVu
c2lvbnMpKQotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnT3BlbmluZyBoYW5kc2hha2Ug
cmVxdWVzdCBoZWFkZXJzOiAlcicsIGZpZWxkcykKLQotICAgICAgICBmb3IgZmllbGQgaW4gZmll
bGRzOgotICAgICAgICAgICAgc2VsZi5fc29ja2V0LnNlbmRhbGwoZmllbGQpCi0gICAgICAgIHNl
bGYuX3NvY2tldC5zZW5kYWxsKCdcclxuJykKLQotICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygn
U2VudCBvcGVuaW5nIGhhbmRzaGFrZSByZXF1ZXN0JykKLQotICAgICAgICBmaWVsZCA9ICcnCi0g
ICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICBjaCA9IHJlY2VpdmVfYnl0ZXMoc2VsZi5f
c29ja2V0LCAxKQotICAgICAgICAgICAgZmllbGQgKz0gY2gKLSAgICAgICAgICAgIGlmIGNoID09
ICdcbic6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVi
dWcoJ09wZW5pbmcgaGFuZHNoYWtlIFJlc3BvbnNlLUxpbmU6ICVyJywgZmllbGQpCi0KLSAgICAg
ICAgaWYgbGVuKGZpZWxkKSA8IDcgb3Igbm90IGZpZWxkLmVuZHN3aXRoKCdcclxuJyk6Ci0gICAg
ICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1dyb25nIHN0YXR1cyBsaW5lOiAlcicgJSBmaWVsZCkK
LSAgICAgICAgbSA9IHJlLm1hdGNoKCdbXiBdKiAoW14gXSopIC4qJywgZmllbGQpCi0gICAgICAg
IGlmIG0gaXMgTm9uZToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAg
ICAgICAnTm8gSFRUUCBzdGF0dXMgY29kZSBmb3VuZCBpbiBzdGF0dXMgbGluZTogJXInICUgZmll
bGQpCi0gICAgICAgIGNvZGUgPSBtLmdyb3VwKDEpCi0gICAgICAgIGlmIG5vdCByZS5tYXRjaCgn
WzAtOV1bMC05XVswLTldJywgY29kZSk6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCi0g
ICAgICAgICAgICAgICAgJ0hUVFAgc3RhdHVzIGNvZGUgJXIgaXMgbm90IHRocmVlIGRpZ2l0IGlu
IHN0YXR1cyBsaW5lOiAlcicgJQotICAgICAgICAgICAgICAgIChjb2RlLCBmaWVsZCkpCi0gICAg
ICAgIGlmIGNvZGUgIT0gJzEwMSc6Ci0gICAgICAgICAgICByYWlzZSBIdHRwU3RhdHVzRXhjZXB0
aW9uKAotICAgICAgICAgICAgICAgICdFeHBlY3RlZCBIVFRQIHN0YXR1cyBjb2RlIDEwMSBidXQg
Zm91bmQgJXIgaW4gc3RhdHVzIGxpbmU6ICcKLSAgICAgICAgICAgICAgICAnJXInICUgKGNvZGUs
IGZpZWxkKSwgaW50KGNvZGUpKQotICAgICAgICBmaWVsZHMgPSBfcmVhZF9maWVsZHMoc2VsZi5f
c29ja2V0KQotICAgICAgICBjaCA9IHJlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCAxKQotICAg
ICAgICBpZiBjaCAhPSAnXG4nOiAgIyAweDBBCi0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24o
J0V4cGVjdGVkIExGIGJ1dCBmb3VuZDogJXInICUgY2gpCi0KLSAgICAgICAgc2VsZi5fbG9nZ2Vy
LmRlYnVnKCdPcGVuaW5nIGhhbmRzaGFrZSByZXNwb25zZSBoZWFkZXJzOiAlcicsIGZpZWxkcykK
LQotICAgICAgICAjIENoZWNrIC9maWVsZHMvCi0gICAgICAgIGlmIGxlbihmaWVsZHNbJ3VwZ3Jh
ZGUnXSkgIT0gMToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAg
ICAnTXVsdGlwbGUgVXBncmFkZSBoZWFkZXJzIGZvdW5kOiAlcycgJSBmaWVsZHNbJ3VwZ3JhZGUn
XSkKLSAgICAgICAgaWYgbGVuKGZpZWxkc1snY29ubmVjdGlvbiddKSAhPSAxOgotICAgICAgICAg
ICAgcmFpc2UgRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdNdWx0aXBsZSBDb25uZWN0aW9u
IGhlYWRlcnMgZm91bmQ6ICVzJyAlIGZpZWxkc1snY29ubmVjdGlvbiddKQotICAgICAgICBpZiBm
aWVsZHNbJ3VwZ3JhZGUnXVswXSAhPSAnd2Vic29ja2V0JzoKLSAgICAgICAgICAgIHJhaXNlIEV4
Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBVcGdyYWRlIGhlYWRlciB2YWx1
ZTogJXMnICUgZmllbGRzWyd1cGdyYWRlJ11bMF0pCi0gICAgICAgIGlmIGZpZWxkc1snY29ubmVj
dGlvbiddWzBdLmxvd2VyKCkgIT0gJ3VwZ3JhZGUnOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0
aW9uKAotICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIENvbm5lY3Rpb24gaGVhZGVyIHZhbHVl
OiAlcycgJQotICAgICAgICAgICAgICAgIGZpZWxkc1snY29ubmVjdGlvbiddWzBdKQotCi0gICAg
ICAgIGlmIGxlbihmaWVsZHNbJ3NlYy13ZWJzb2NrZXQtYWNjZXB0J10pICE9IDE6Ci0gICAgICAg
ICAgICByYWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ011bHRpcGxlIFNlYy1XZWJT
b2NrZXQtQWNjZXB0IGhlYWRlcnMgZm91bmQ6ICVzJyAlCi0gICAgICAgICAgICAgICAgZmllbGRz
WydzZWMtd2Vic29ja2V0LWFjY2VwdCddKQotCi0gICAgICAgIGFjY2VwdCA9IGZpZWxkc1snc2Vj
LXdlYnNvY2tldC1hY2NlcHQnXVswXQotCi0gICAgICAgICMgVmFsaWRhdGUKLSAgICAgICAgdHJ5
OgotICAgICAgICAgICAgZGVjb2RlZF9hY2NlcHQgPSBiYXNlNjQuYjY0ZGVjb2RlKGFjY2VwdCkK
LSAgICAgICAgZXhjZXB0IFR5cGVFcnJvciwgZToKLSAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFr
ZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnSWxsZWdhbCB2YWx1ZSBmb3IgaGVhZGVyIFNl
Yy1XZWJTb2NrZXQtQWNjZXB0OiAnICsgYWNjZXB0KQotCi0gICAgICAgIGlmIGxlbihkZWNvZGVk
X2FjY2VwdCkgIT0gMjA6Ci0gICAgICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oCi0g
ICAgICAgICAgICAgICAgJ0RlY29kZWQgdmFsdWUgb2YgU2VjLVdlYlNvY2tldC1BY2NlcHQgaXMg
bm90IDIwLWJ5dGUgbG9uZycpCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdBY3R1YWwg
U2VjLVdlYlNvY2tldC1BY2NlcHQ6ICVyICglcyknLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYWNjZXB0LCB1dGlsLmhleGlmeShkZWNvZGVkX2FjY2VwdCkpCi0KLSAgICAgICAgb3JpZ2lu
YWxfZXhwZWN0ZWRfYWNjZXB0ID0gdXRpbC5zaGExX2hhc2goCi0gICAgICAgICAgICBrZXkgKyBX
RUJTT0NLRVRfQUNDRVBUX1VVSUQpLmRpZ2VzdCgpCi0gICAgICAgIGV4cGVjdGVkX2FjY2VwdCA9
IGJhc2U2NC5iNjRlbmNvZGUob3JpZ2luYWxfZXhwZWN0ZWRfYWNjZXB0KQotCi0gICAgICAgIHNl
bGYuX2xvZ2dlci5kZWJ1ZygnRXhwZWN0ZWQgU2VjLVdlYlNvY2tldC1BY2NlcHQ6ICVyICglcykn
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfYWNjZXB0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdXRpbC5oZXhpZnkob3JpZ2luYWxfZXhwZWN0ZWRfYWNjZXB0KSkK
LQotICAgICAgICBpZiBhY2NlcHQgIT0gZXhwZWN0ZWRfYWNjZXB0OgotICAgICAgICAgICAgcmFp
c2UgRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdJbnZhbGlkIFNlYy1XZWJTb2NrZXQtQWNj
ZXB0IGhlYWRlcjogJXIgKGV4cGVjdGVkKSAhPSAlciAnCi0gICAgICAgICAgICAgICAgJyhhY3R1
YWwpJyAlIChhY2NlcHQsIGV4cGVjdGVkX2FjY2VwdCkpCi0KLSAgICAgICAgc2VydmVyX2V4dGVu
c2lvbnNfaGVhZGVyID0gZmllbGRzLmdldCgnc2VjLXdlYnNvY2tldC1leHRlbnNpb25zJykKLSAg
ICAgICAgYWNjZXB0ZWRfZXh0ZW5zaW9ucyA9IFtdCi0gICAgICAgIGlmIHNlcnZlcl9leHRlbnNp
b25zX2hlYWRlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGFjY2VwdGVkX2V4dGVuc2lvbnMg
PSBjb21tb24ucGFyc2VfZXh0ZW5zaW9ucygKLSAgICAgICAgICAgICAgICAgICAgJywgJy5qb2lu
KHNlcnZlcl9leHRlbnNpb25zX2hlYWRlcikpCi0KLSAgICAgICAgIyBTY2FuIGFjY2VwdGVkIGV4
dGVuc2lvbiBsaXN0IHRvIGNoZWNrIGlmIHRoZXJlIGlzIGFueSB1bnJlY29nbml6ZWQKLSAgICAg
ICAgIyBleHRlbnNpb25zIG9yIGV4dGVuc2lvbnMgd2UgZGlkbid0IHJlcXVlc3QgaW4gaXQuIFRo
ZW4sIGZvcgotICAgICAgICAjIGV4dGVuc2lvbnMgd2UgcmVxdWVzdCwgcGFyc2UgdGhlbSBhbmQg
c3RvcmUgcGFyYW1ldGVycy4gVGhleSB3aWxsIGJlCi0gICAgICAgICMgdXNlZCBsYXRlciBieSBl
YWNoIGV4dGVuc2lvbi4KLSAgICAgICAgZGVmbGF0ZV9mcmFtZV9hY2NlcHRlZCA9IEZhbHNlCi0g
ICAgICAgIG11eF9hY2NlcHRlZCA9IEZhbHNlCi0gICAgICAgIGZvciBleHRlbnNpb24gaW4gYWNj
ZXB0ZWRfZXh0ZW5zaW9uczoKLSAgICAgICAgICAgIGlmIGV4dGVuc2lvbi5uYW1lKCkgPT0gX0RF
RkxBVEVfRlJBTUVfRVhURU5TSU9OOgotICAgICAgICAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMu
dXNlX2RlZmxhdGVfZnJhbWU6Ci0gICAgICAgICAgICAgICAgICAgIGRlZmxhdGVfZnJhbWVfYWNj
ZXB0ZWQgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBp
ZiBleHRlbnNpb24ubmFtZSgpID09IF9NVVhfRVhURU5TSU9OOgotICAgICAgICAgICAgICAgIGlm
IHNlbGYuX29wdGlvbnMudXNlX211eDoKLSAgICAgICAgICAgICAgICAgICAgbXV4X2FjY2VwdGVk
ID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgaWYgZXh0
ZW5zaW9uLm5hbWUoKSA9PSBfUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTjoKLSAgICAgICAg
ICAgICAgICBjaGVja2VyID0gc2VsZi5fb3B0aW9ucy5jaGVja19wZXJtZXNzYWdlX2RlZmxhdGUK
LSAgICAgICAgICAgICAgICBpZiBjaGVja2VyOgotICAgICAgICAgICAgICAgICAgICBjaGVja2Vy
KGV4dGVuc2lvbikKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICAgICAg
cmFpc2UgRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdSZWNlaXZlZCB1bnJlY29nbml6ZWQg
ZXh0ZW5zaW9uOiAlcycgJSBleHRlbnNpb24ubmFtZSgpKQotCi0gICAgICAgICMgTGV0IGFsbCBl
eHRlbnNpb25zIGNoZWNrIHRoZSByZXNwb25zZSBmb3IgZXh0ZW5zaW9uIHJlcXVlc3QuCi0KLSAg
ICAgICAgaWYgKHNlbGYuX29wdGlvbnMudXNlX2RlZmxhdGVfZnJhbWUgYW5kCi0gICAgICAgICAg
ICBub3QgZGVmbGF0ZV9mcmFtZV9hY2NlcHRlZCk6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRp
b24oJyVzIGV4dGVuc2lvbiBub3QgYWNjZXB0ZWQnICUKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfREVGTEFURV9GUkFNRV9FWFRFTlNJT04pCi0KLSAgICAgICAgaWYgc2VsZi5fb3B0aW9u
cy51c2VfbXV4IGFuZCBub3QgbXV4X2FjY2VwdGVkOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0
aW9uKCclcyBleHRlbnNpb24gbm90IGFjY2VwdGVkJyAlIF9NVVhfRVhURU5TSU9OKQotCi0KLWNs
YXNzIFdlYlNvY2tldEh5YmkwMEhhbmRzaGFrZShvYmplY3QpOgotICAgICIiIk9wZW5pbmcgaGFu
ZHNoYWtlIHByb2Nlc3NvciBmb3IgdGhlIFdlYlNvY2tldCBwcm90b2NvbCB2ZXJzaW9uIEh5Qmkg
MDAuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucywgZHJhZnRfZmll
bGQpOgotICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikK
LQotICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucwotICAgICAgICBzZWxmLl9kcmFmdF9m
aWVsZCA9IGRyYWZ0X2ZpZWxkCi0KLSAgICBkZWYgaGFuZHNoYWtlKHNlbGYsIHNvY2tldCk6Ci0g
ICAgICAgICIiIkhhbmRzaGFrZSBXZWJTb2NrZXQuCi0KLSAgICAgICAgUmFpc2VzOgotICAgICAg
ICAgICAgRXhjZXB0aW9uOiBoYW5kc2hha2UgZmFpbGVkLgotICAgICAgICAiIiIKLQotICAgICAg
ICBzZWxmLl9zb2NrZXQgPSBzb2NrZXQKLQotICAgICAgICAjIDQuMSA1LiBzZW5kIHJlcXVlc3Qg
bGluZS4KLSAgICAgICAgcmVxdWVzdF9saW5lID0gX21ldGhvZF9saW5lKHNlbGYuX29wdGlvbnMu
cmVzb3VyY2UpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnT3BlbmluZyBoYW5kc2hha2Ug
UmVxdWVzdC1MaW5lOiAlcicsIHJlcXVlc3RfbGluZSkKLSAgICAgICAgc2VsZi5fc29ja2V0LnNl
bmRhbGwocmVxdWVzdF9saW5lKQotICAgICAgICAjIDQuMSA2LiBMZXQgL2ZpZWxkcy8gYmUgYW4g
ZW1wdHkgbGlzdCBvZiBzdHJpbmdzLgotICAgICAgICBmaWVsZHMgPSBbXQotICAgICAgICAjIDQu
MSA3LiBBZGQgdGhlIHN0cmluZyAiVXBncmFkZTogV2ViU29ja2V0IiB0byAvZmllbGRzLy4KLSAg
ICAgICAgZmllbGRzLmFwcGVuZChfVVBHUkFERV9IRUFERVJfSElYSUU3NSkKLSAgICAgICAgIyA0
LjEgOC4gQWRkIHRoZSBzdHJpbmcgIkNvbm5lY3Rpb246IFVwZ3JhZGUiIHRvIC9maWVsZHMvLgot
ICAgICAgICBmaWVsZHMuYXBwZW5kKF9DT05ORUNUSU9OX0hFQURFUikKLSAgICAgICAgIyA0LjEg
OS0xMi4gQWRkIEhvc3Q6IGZpZWxkIHRvIC9maWVsZHMvLgotICAgICAgICBmaWVsZHMuYXBwZW5k
KF9mb3JtYXRfaG9zdF9oZWFkZXIoCi0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLnNlcnZlcl9o
b3N0LAotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfcG9ydCwKLSAgICAgICAgICAg
IHNlbGYuX29wdGlvbnMudXNlX3RscykpCi0gICAgICAgICMgNC4xIDEzLiBBZGQgT3JpZ2luOiBm
aWVsZCB0byAvZmllbGRzLy4KLSAgICAgICAgZmllbGRzLmFwcGVuZChfb3JpZ2luX2hlYWRlcihz
ZWxmLl9vcHRpb25zLm9yaWdpbikpCi0gICAgICAgICMgVE9ETzogNC4xIDE0IEFkZCBTZWMtV2Vi
U29ja2V0LVByb3RvY29sOiBmaWVsZCB0byAvZmllbGRzLy4KLSAgICAgICAgIyBUT0RPOiA0LjEg
MTUgQWRkIGNvb2tpZSBoZWFkZXJzIHRvIC9maWVsZHMvLgotCi0gICAgICAgICMgNC4xIDE2LTIz
LiBBZGQgU2VjLVdlYlNvY2tldC1LZXk8bj4gdG8gL2ZpZWxkcy8uCi0gICAgICAgIHNlbGYuX251
bWJlcjEsIGtleTEgPSBzZWxmLl9nZW5lcmF0ZV9zZWNfd2Vic29ja2V0X2tleSgpCi0gICAgICAg
IHNlbGYuX2xvZ2dlci5kZWJ1ZygnTnVtYmVyMTogJWQnLCBzZWxmLl9udW1iZXIxKQotICAgICAg
ICBmaWVsZHMuYXBwZW5kKCdTZWMtV2ViU29ja2V0LUtleTE6ICVzXHJcbicgJSBrZXkxKQotICAg
ICAgICBzZWxmLl9udW1iZXIyLCBrZXkyID0gc2VsZi5fZ2VuZXJhdGVfc2VjX3dlYnNvY2tldF9r
ZXkoKQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ051bWJlcjI6ICVkJywgc2VsZi5fbnVt
YmVyMSkKLSAgICAgICAgZmllbGRzLmFwcGVuZCgnU2VjLVdlYlNvY2tldC1LZXkyOiAlc1xyXG4n
ICUga2V5MikKLQotICAgICAgICBmaWVsZHMuYXBwZW5kKCdTZWMtV2ViU29ja2V0LURyYWZ0OiAl
c1xyXG4nICUgc2VsZi5fZHJhZnRfZmllbGQpCi0KLSAgICAgICAgIyA0LjEgMjQuIEZvciBlYWNo
IHN0cmluZyBpbiAvZmllbGRzLywgaW4gYSByYW5kb20gb3JkZXI6IHNlbmQgdGhlCi0gICAgICAg
ICMgc3RyaW5nLCBlbmNvZGVkIGFzIFVURi04LCBmb2xsb3dlZCBieSBhIFVURi04IGVuY29kZWQg
VSswMDBEIENBUlJJQUdFCi0gICAgICAgICMgUkVUVVJOIFUrMDAwQSBMSU5FIEZFRUQgY2hhcmFj
dGVyIHBhaXIgKENSTEYpLgotICAgICAgICByYW5kb20uc2h1ZmZsZShmaWVsZHMpCi0KLSAgICAg
ICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdPcGVuaW5nIGhhbmRzaGFrZSByZXF1ZXN0IGhlYWRlcnM6
ICVyJywgZmllbGRzKQotICAgICAgICBmb3IgZmllbGQgaW4gZmllbGRzOgotICAgICAgICAgICAg
c2VsZi5fc29ja2V0LnNlbmRhbGwoZmllbGQpCi0KLSAgICAgICAgIyA0LjEgMjUuIHNlbmQgYSBV
VEYtOC1lbmNvZGVkIFUrMDAwRCBDQVJSSUFHRSBSRVRVUk4gVSswMDBBIExJTkUgRkVFRAotICAg
ICAgICAjIGNoYXJhY3RlciBwYWlyIChDUkxGKS4KLSAgICAgICAgc2VsZi5fc29ja2V0LnNlbmRh
bGwoJ1xyXG4nKQotICAgICAgICAjIDQuMSAyNi4gbGV0IC9rZXkzLyBiZSBhIHN0cmluZyBjb25z
aXN0aW5nIG9mIGVpZ2h0IHJhbmRvbSBieXRlcyAob3IKLSAgICAgICAgIyBlcXVpdmFsZW50bHks
IGEgcmFuZG9tIDY0IGJpdCBpbnRlZ2VyIGVuY29kZWQgaW4gYSBiaWctZW5kaWFuIG9yZGVyKS4K
LSAgICAgICAgc2VsZi5fa2V5MyA9IHNlbGYuX2dlbmVyYXRlX2tleTMoKQotICAgICAgICAjIDQu
MSAyNy4gc2VuZCAva2V5My8gdG8gdGhlIHNlcnZlci4KLSAgICAgICAgc2VsZi5fc29ja2V0LnNl
bmRhbGwoc2VsZi5fa2V5MykKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAg
ICAgJ0tleTM6ICVyICglcyknLCBzZWxmLl9rZXkzLCB1dGlsLmhleGlmeShzZWxmLl9rZXkzKSkK
LQotICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnU2VudCBvcGVuaW5nIGhhbmRzaGFrZSByZXF1
ZXN0JykKLQotICAgICAgICAjIDQuMSAyOC4gUmVhZCBieXRlcyBmcm9tIHRoZSBzZXJ2ZXIgdW50
aWwgZWl0aGVyIHRoZSBjb25uZWN0aW9uCi0gICAgICAgICMgY2xvc2VzLCBvciBhIDB4MEEgYnl0
ZSBpcyByZWFkLiBsZXQgL2ZpZWxkLyBiZSB0aGVzZSBieXRlcywgaW5jbHVkaW5nCi0gICAgICAg
ICMgdGhlIDB4MEEgYnl0ZXMuCi0gICAgICAgIGZpZWxkID0gJycKLSAgICAgICAgd2hpbGUgVHJ1
ZToKLSAgICAgICAgICAgIGNoID0gcmVjZWl2ZV9ieXRlcyhzZWxmLl9zb2NrZXQsIDEpCi0gICAg
ICAgICAgICBmaWVsZCArPSBjaAotICAgICAgICAgICAgaWYgY2ggPT0gJ1xuJzoKLSAgICAgICAg
ICAgICAgICBicmVhawotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnT3BlbmluZyBoYW5k
c2hha2UgUmVzcG9uc2UtTGluZTogJXInLCBmaWVsZCkKLQotICAgICAgICAjIGlmIC9maWVsZC8g
aXMgbm90IGF0IGxlYXN0IHNldmVuIGJ5dGVzIGxvbmcsIG9yIGlmIHRoZSBsYXN0Ci0gICAgICAg
ICMgdHdvIGJ5dGVzIGFyZW4ndCAweDBEIGFuZCAweDBBIHJlc3BlY3RpdmVseSwgb3IgaWYgaXQg
ZG9lcyBub3QKLSAgICAgICAgIyBjb250YWluIGF0IGxlYXN0IHR3byAweDIwIGJ5dGVzLCB0aGVu
IGZhaWwgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uCi0gICAgICAgICMgYW5kIGFib3J0IHRoZXNl
IHN0ZXBzLgotICAgICAgICBpZiBsZW4oZmllbGQpIDwgNyBvciBub3QgZmllbGQuZW5kc3dpdGgo
J1xyXG4nKToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignV3Jvbmcgc3RhdHVzIGxpbmU6
ICVyJyAlIGZpZWxkKQotICAgICAgICBtID0gcmUubWF0Y2goJ1teIF0qIChbXiBdKikgLionLCBm
aWVsZCkKLSAgICAgICAgaWYgbSBpcyBOb25lOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9u
KCdObyBjb2RlIGZvdW5kIGluIHN0YXR1cyBsaW5lOiAlcicgJSBmaWVsZCkKLSAgICAgICAgIyA0
LjEgMjkuIGxldCAvY29kZS8gYmUgdGhlIHN1YnN0cmluZyBvZiAvZmllbGQvIHRoYXQgc3RhcnRz
IGZyb20gdGhlCi0gICAgICAgICMgYnl0ZSBhZnRlciB0aGUgZmlyc3QgMHgyMCBieXRlLCBhbmQg
ZW5kcyB3aXRoIHRoZSBieXRlIGJlZm9yZSB0aGUKLSAgICAgICAgIyBzZWNvbmQgMHgyMCBieXRl
LgotICAgICAgICBjb2RlID0gbS5ncm91cCgxKQotICAgICAgICAjIDQuMSAzMC4gaWYgL2NvZGUv
IGlzIG5vdCB0aHJlZSBieXRlcyBsb25nLCBvciBpZiBhbnkgb2YgdGhlIGJ5dGVzIGluCi0gICAg
ICAgICMgL2NvZGUvIGFyZSBub3QgaW4gdGhlIHJhbmdlIDB4MzAgdG8gMHg5MCwgdGhlbiBmYWls
IHRoZSBXZWJTb2NrZXQKLSAgICAgICAgIyBjb25uZWN0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVw
cy4KLSAgICAgICAgaWYgbm90IHJlLm1hdGNoKCdbMC05XVswLTldWzAtOV0nLCBjb2RlKToKLSAg
ICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnSFRUUCBzdGF0dXMg
Y29kZSAlciBpcyBub3QgdGhyZWUgZGlnaXQgaW4gc3RhdHVzIGxpbmU6ICVyJyAlCi0gICAgICAg
ICAgICAgICAgKGNvZGUsIGZpZWxkKSkKLSAgICAgICAgIyA0LjEgMzEuIGlmIC9jb2RlLywgaW50
ZXJwcmV0ZWQgYXMgVVRGLTgsIGlzICIxMDEiLCB0aGVuIG1vdmUgdG8gdGhlCi0gICAgICAgICMg
bmV4dCBzdGVwLgotICAgICAgICBpZiBjb2RlICE9ICcxMDEnOgotICAgICAgICAgICAgcmFpc2Ug
SHR0cFN0YXR1c0V4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnRXhwZWN0ZWQgSFRUUCBzdGF0
dXMgY29kZSAxMDEgYnV0IGZvdW5kICVyIGluIHN0YXR1cyBsaW5lOiAnCi0gICAgICAgICAgICAg
ICAgJyVyJyAlIChjb2RlLCBmaWVsZCksIGludChjb2RlKSkKLSAgICAgICAgIyA0LjEgMzItMzku
IHJlYWQgZmllbGRzIGludG8gL2ZpZWxkcy8KLSAgICAgICAgZmllbGRzID0gX3JlYWRfZmllbGRz
KHNlbGYuX3NvY2tldCkKLQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ09wZW5pbmcgaGFu
ZHNoYWtlIHJlc3BvbnNlIGhlYWRlcnM6ICVyJywgZmllbGRzKQotCi0gICAgICAgICMgNC4xIDQw
LiBfRmllbGRzIHByb2Nlc3NpbmdfCi0gICAgICAgICMgcmVhZCBhIGJ5dGUgZnJvbSBzZXJ2ZXIK
LSAgICAgICAgY2ggPSByZWNlaXZlX2J5dGVzKHNlbGYuX3NvY2tldCwgMSkKLSAgICAgICAgaWYg
Y2ggIT0gJ1xuJzogICMgMHgwQQotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdFeHBlY3Rl
ZCBMRiBidXQgZm91bmQgJXInICUgY2gpCi0gICAgICAgICMgNC4xIDQxLiBjaGVjayAvZmllbGRz
LwotICAgICAgICBpZiBsZW4oZmllbGRzWyd1cGdyYWRlJ10pICE9IDE6Ci0gICAgICAgICAgICBy
YWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ011bHRpcGxlIFVwZ3JhZGUgaGVhZGVy
cyBmb3VuZDogJXMnICUgZmllbGRzWyd1cGdyYWRlJ10pCi0gICAgICAgIGlmIGxlbihmaWVsZHNb
J2Nvbm5lY3Rpb24nXSkgIT0gMToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAgICAg
ICAgICAgICAgICAnTXVsdGlwbGUgQ29ubmVjdGlvbiBoZWFkZXJzIGZvdW5kOiAlcycgJSBmaWVs
ZHNbJ2Nvbm5lY3Rpb24nXSkKLSAgICAgICAgaWYgbGVuKGZpZWxkc1snc2VjLXdlYnNvY2tldC1v
cmlnaW4nXSkgIT0gMToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAg
ICAgICAnTXVsdGlwbGUgU2VjLVdlYlNvY2tldC1PcmlnaW4gaGVhZGVycyBmb3VuZDogJXMnICUK
LSAgICAgICAgICAgICAgICBmaWVsZHNbJ3NlYy1zZWJzb2NrZXQtb3JpZ2luJ10pCi0gICAgICAg
IGlmIGxlbihmaWVsZHNbJ3NlYy13ZWJzb2NrZXQtbG9jYXRpb24nXSkgIT0gMToKLSAgICAgICAg
ICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnTXVsdGlwbGUgU2VjLVdlYlNv
Y2tldC1Mb2NhdGlvbiBoZWFkZXJzIGZvdW5kOiAlcycgJQotICAgICAgICAgICAgICAgIGZpZWxk
c1snc2VjLXNlYnNvY2tldC1sb2NhdGlvbiddKQotICAgICAgICAjIFRPRE8odWthaSk6IHByb3Rv
Y29sCi0gICAgICAgICMgaWYgdGhlIGVudHJ5J3MgbmFtZSBpcyAidXBncmFkZSIKLSAgICAgICAg
IyAgaWYgdGhlIHZhbHVlIGlzIG5vdCBleGFjdGx5IGVxdWFsIHRvIHRoZSBzdHJpbmcgIldlYlNv
Y2tldCIsCi0gICAgICAgICMgIHRoZW4gZmFpbCB0aGUgV2ViU29ja2V0IGNvbm5lY3Rpb24gYW5k
IGFib3J0IHRoZXNlIHN0ZXBzLgotICAgICAgICBpZiBmaWVsZHNbJ3VwZ3JhZGUnXVswXSAhPSAn
V2ViU29ja2V0JzoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAg
ICAnVW5leHBlY3RlZCBVcGdyYWRlIGhlYWRlciB2YWx1ZTogJXMnICUgZmllbGRzWyd1cGdyYWRl
J11bMF0pCi0gICAgICAgICMgaWYgdGhlIGVudHJ5J3MgbmFtZSBpcyAiY29ubmVjdGlvbiIKLSAg
ICAgICAgIyAgaWYgdGhlIHZhbHVlLCBjb252ZXJ0ZWQgdG8gQVNDSUkgbG93ZXJjYXNlLCBpcyBu
b3QgZXhhY3RseSBlcXVhbAotICAgICAgICAjICB0byB0aGUgc3RyaW5nICJ1cGdyYWRlIiwgdGhl
biBmYWlsIHRoZSBXZWJTb2NrZXQgY29ubmVjdGlvbiBhbmQKLSAgICAgICAgIyAgYWJvcnQgdGhl
c2Ugc3RlcHMuCi0gICAgICAgIGlmIGZpZWxkc1snY29ubmVjdGlvbiddWzBdLmxvd2VyKCkgIT0g
J3VwZ3JhZGUnOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAotICAgICAgICAgICAgICAg
ICdVbmV4cGVjdGVkIENvbm5lY3Rpb24gaGVhZGVyIHZhbHVlOiAlcycgJQotICAgICAgICAgICAg
ICAgIGZpZWxkc1snY29ubmVjdGlvbiddWzBdKQotICAgICAgICAjIFRPRE8odWthaSk6IGNoZWNr
IG9yaWdpbiwgbG9jYXRpb24sIGNvb2tpZSwgLi4KLQotICAgICAgICAjIDQuMSA0Mi4gbGV0IC9j
aGFsbGVuZ2UvIGJlIHRoZSBjb25jYXRlbmF0aW9uIG9mIC9udW1iZXJfMS8sCi0gICAgICAgICMg
ZXhwcmVzc2VkIGFzIGEgYmlnIGVuZGlhbiAzMiBiaXQgaW50ZWdlciwgL251bWJlcl8yLywgZXhw
cmVzc2VkCi0gICAgICAgICMgYXMgYmlnIGVuZGlhbiAzMiBiaXQgaW50ZWdlciwgYW5kIHRoZSBl
aWdodCBieXRlcyBvZiAva2V5XzMvIGluIHRoZQotICAgICAgICAjIG9yZGVyIHRoZXkgd2VyZSBz
ZW50IG9uIHRoZSB3aXJlLgotICAgICAgICBjaGFsbGVuZ2UgPSBzdHJ1Y3QucGFjaygnIUknLCBz
ZWxmLl9udW1iZXIxKQotICAgICAgICBjaGFsbGVuZ2UgKz0gc3RydWN0LnBhY2soJyFJJywgc2Vs
Zi5fbnVtYmVyMikKLSAgICAgICAgY2hhbGxlbmdlICs9IHNlbGYuX2tleTMKLQotICAgICAgICBz
ZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAnQ2hhbGxlbmdlOiAlciAoJXMpJywgY2hh
bGxlbmdlLCB1dGlsLmhleGlmeShjaGFsbGVuZ2UpKQotCi0gICAgICAgICMgNC4xIDQzLiBsZXQg
L2V4cGVjdGVkLyBiZSB0aGUgTUQ1IGZpbmdlcnByaW50IG9mIC9jaGFsbGVuZ2UvIGFzIGEKLSAg
ICAgICAgIyBiaWctZW5kaWFuIDEyOCBiaXQgc3RyaW5nLgotICAgICAgICBleHBlY3RlZCA9IHV0
aWwubWQ1X2hhc2goY2hhbGxlbmdlKS5kaWdlc3QoKQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVi
dWcoCi0gICAgICAgICAgICAnRXhwZWN0ZWQgY2hhbGxlbmdlIHJlc3BvbnNlOiAlciAoJXMpJywK
LSAgICAgICAgICAgIGV4cGVjdGVkLCB1dGlsLmhleGlmeShleHBlY3RlZCkpCi0KLSAgICAgICAg
IyA0LjEgNDQuIHJlYWQgc2l4dGVlbiBieXRlcyBmcm9tIHRoZSBzZXJ2ZXIuCi0gICAgICAgICMg
bGV0IC9yZXBseS8gYmUgdGhvc2UgYnl0ZXMuCi0gICAgICAgIHJlcGx5ID0gcmVjZWl2ZV9ieXRl
cyhzZWxmLl9zb2NrZXQsIDE2KQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAg
ICAgICAnQWN0dWFsIGNoYWxsZW5nZSByZXNwb25zZTogJXIgKCVzKScsIHJlcGx5LCB1dGlsLmhl
eGlmeShyZXBseSkpCi0KLSAgICAgICAgIyA0LjEgNDUuIGlmIC9yZXBseS8gZG9lcyBub3QgZXhh
Y3RseSBlcXVhbCAvZXhwZWN0ZWQvLCB0aGVuIGZhaWwKLSAgICAgICAgIyB0aGUgV2ViU29ja2V0
IGNvbm5lY3Rpb24gYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgotICAgICAgICBpZiBleHBlY3RlZCAh
PSByZXBseToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAn
QmFkIGNoYWxsZW5nZSByZXNwb25zZTogJXIgKGV4cGVjdGVkKSAhPSAlciAoYWN0dWFsKScgJQot
ICAgICAgICAgICAgICAgIChleHBlY3RlZCwgcmVwbHkpKQotICAgICAgICAjIDQuMSA0Ni4gVGhl
ICpXZWJTb2NrZXQgY29ubmVjdGlvbiBpcyBlc3RhYmxpc2hlZCouCi0KLSAgICBkZWYgX2dlbmVy
YXRlX3NlY193ZWJzb2NrZXRfa2V5KHNlbGYpOgotICAgICAgICAjIDQuMSAxNi4gbGV0IC9zcGFj
ZXNfbi8gYmUgYSByYW5kb20gaW50ZWdlciBmcm9tIDEgdG8gMTIgaW5jbHVzaXZlLgotICAgICAg
ICBzcGFjZXMgPSByYW5kb20ucmFuZGludCgxLCAxMikKLSAgICAgICAgIyA0LjEgMTcuIGxldCAv
bWF4X24vIGJlIHRoZSBsYXJnZXN0IGludGVnZXIgbm90IGdyZWF0ZXIgdGhhbgotICAgICAgICAj
ICA0LDI5NCw5NjcsMjk1IGRpdmlkZWQgYnkgL3NwYWNlc19uLy4KLSAgICAgICAgbWF4bnVtID0g
NDI5NDk2NzI5NSAvIHNwYWNlcwotICAgICAgICAjIDQuMSAxOC4gbGV0IC9udW1iZXJfbi8gYmUg
YSByYW5kb20gaW50ZWdlciBmcm9tIDAgdG8gL21heF9uLwotICAgICAgICAjIGluY2x1c2l2ZS4K
LSAgICAgICAgbnVtYmVyID0gcmFuZG9tLnJhbmRpbnQoMCwgbWF4bnVtKQotICAgICAgICAjIDQu
MSAxOS4gbGV0IC9wcm9kdWN0X24vIGJlIHRoZSByZXN1bHQgb2YgbXVsdGlwbHlpbmcgL251bWJl
cl9uLyBhbmQKLSAgICAgICAgIyAvc3BhY2VzX24vIHRvZ2V0aGVyLgotICAgICAgICBwcm9kdWN0
ID0gbnVtYmVyICogc3BhY2VzCi0gICAgICAgICMgNC4xIDIwLiBsZXQgL2tleV9uLyBiZSBhIHN0
cmluZyBjb25zaXN0aW5nIG9mIC9wcm9kdWN0X24vLCBleHByZXNzZWQKLSAgICAgICAgIyBpbiBi
YXNlIHRlbiB1c2luZyB0aGUgbnVtZXJhbHMgaW4gdGhlIHJhbmdlIFUrMDAzMCBESUdJVCBaRVJP
ICgwKSB0bwotICAgICAgICAjIFUrMDAzOSBESUdJVCBOSU5FICg5KS4KLSAgICAgICAga2V5ID0g
c3RyKHByb2R1Y3QpCi0gICAgICAgICMgNC4xIDIxLiBpbnNlcnQgYmV0d2VlbiBvbmUgYW5kIHR3
ZWx2ZSByYW5kb20gY2hhcmFjdGVycyBmcm9tIHRoZQotICAgICAgICAjIHJhbmdlIFUrMDAyMSB0
byBVKzAwMkYgYW5kIFUrMDAzQSB0byBVKzAwN0UgaW50byAva2V5X24vIGF0IHJhbmRvbQotICAg
ICAgICAjIHBvc2l0aW9ucy4KLSAgICAgICAgYXZhaWxhYmxlX2NoYXJzID0gcmFuZ2UoMHgyMSwg
MHgyZiArIDEpICsgcmFuZ2UoMHgzYSwgMHg3ZSArIDEpCi0gICAgICAgIG4gPSByYW5kb20ucmFu
ZGludCgxLCAxMikKLSAgICAgICAgZm9yIF8gaW4geHJhbmdlKG4pOgotICAgICAgICAgICAgY2gg
PSByYW5kb20uY2hvaWNlKGF2YWlsYWJsZV9jaGFycykKLSAgICAgICAgICAgIHBvcyA9IHJhbmRv
bS5yYW5kaW50KDAsIGxlbihrZXkpKQotICAgICAgICAgICAga2V5ID0ga2V5WzA6cG9zXSArIGNo
cihjaCkgKyBrZXlbcG9zOl0KLSAgICAgICAgIyA0LjEgMjIuIGluc2VydCAvc3BhY2VzX24vIFUr
MDAyMCBTUEFDRSBjaGFyYWN0ZXJzIGludG8gL2tleV9uLyBhdAotICAgICAgICAjIHJhbmRvbSBw
b3NpdGlvbnMgb3RoZXIgdGhhbiBzdGFydCBvciBlbmQgb2YgdGhlIHN0cmluZy4KLSAgICAgICAg
Zm9yIF8gaW4geHJhbmdlKHNwYWNlcyk6Ci0gICAgICAgICAgICBwb3MgPSByYW5kb20ucmFuZGlu
dCgxLCBsZW4oa2V5KSAtIDEpCi0gICAgICAgICAgICBrZXkgPSBrZXlbMDpwb3NdICsgJyAnICsg
a2V5W3BvczpdCi0gICAgICAgIHJldHVybiBudW1iZXIsIGtleQotCi0gICAgZGVmIF9nZW5lcmF0
ZV9rZXkzKHNlbGYpOgotICAgICAgICAjIDQuMSAyNi4gbGV0IC9rZXkzLyBiZSBhIHN0cmluZyBj
b25zaXN0aW5nIG9mIGVpZ2h0IHJhbmRvbSBieXRlcyAob3IKLSAgICAgICAgIyBlcXVpdmFsZW50
bHksIGEgcmFuZG9tIDY0IGJpdCBpbnRlZ2VyIGVuY29kZWQgaW4gYSBiaWctZW5kaWFuIG9yZGVy
KS4KLSAgICAgICAgcmV0dXJuICcnLmpvaW4oW2NocihyYW5kb20ucmFuZGludCgwLCAyNTUpKSBm
b3IgXyBpbiB4cmFuZ2UoOCldKQotCi0KLWNsYXNzIFdlYlNvY2tldEhpeGllNzVIYW5kc2hha2Uo
b2JqZWN0KToKLSAgICAiIiJXZWJTb2NrZXQgaGFuZHNoYWtlIHByb2Nlc3NvciBmb3IgSUVURiBI
aXhpZSA3NS4iIiIKLQotICAgIF9FWFBFQ1RFRF9SRVNQT05TRSA9ICgKLSAgICAgICAgJ0hUVFAv
MS4xIDEwMSBXZWIgU29ja2V0IFByb3RvY29sIEhhbmRzaGFrZVxyXG4nICsKLSAgICAgICAgX1VQ
R1JBREVfSEVBREVSX0hJWElFNzUgKwotICAgICAgICBfQ09OTkVDVElPTl9IRUFERVIpCi0KLSAg
ICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucyk6Ci0gICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0
aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQotCi0gICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRp
b25zCi0KLSAgICBkZWYgX3NraXBfaGVhZGVycyhzZWxmKToKLSAgICAgICAgdGVybWluYXRvciA9
ICdcclxuXHJcbicKLSAgICAgICAgcG9zID0gMAotICAgICAgICB3aGlsZSBwb3MgPCBsZW4odGVy
bWluYXRvcik6Ci0gICAgICAgICAgICByZWNlaXZlZCA9IHJlY2VpdmVfYnl0ZXMoc2VsZi5fc29j
a2V0LCAxKQotICAgICAgICAgICAgaWYgcmVjZWl2ZWQgPT0gdGVybWluYXRvcltwb3NdOgotICAg
ICAgICAgICAgICAgIHBvcyArPSAxCi0gICAgICAgICAgICBlbGlmIHJlY2VpdmVkID09IHRlcm1p
bmF0b3JbMF06Ci0gICAgICAgICAgICAgICAgcG9zID0gMQotICAgICAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgICAgICBwb3MgPSAwCi0KLSAgICBkZWYgaGFuZHNoYWtlKHNlbGYsIHNvY2tldCk6
Ci0gICAgICAgIHNlbGYuX3NvY2tldCA9IHNvY2tldAotCi0gICAgICAgIHJlcXVlc3RfbGluZSA9
IF9tZXRob2RfbGluZShzZWxmLl9vcHRpb25zLnJlc291cmNlKQotICAgICAgICBzZWxmLl9sb2dn
ZXIuZGVidWcoJ09wZW5pbmcgaGFuZHNoYWtlIFJlcXVlc3QtTGluZTogJXInLCByZXF1ZXN0X2xp
bmUpCi0gICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKHJlcXVlc3RfbGluZSkKLQotICAgICAg
ICBoZWFkZXJzID0gX1VQR1JBREVfSEVBREVSX0hJWElFNzUgKyBfQ09OTkVDVElPTl9IRUFERVIK
LSAgICAgICAgaGVhZGVycyArPSBfZm9ybWF0X2hvc3RfaGVhZGVyKAotICAgICAgICAgICAgc2Vs
Zi5fb3B0aW9ucy5zZXJ2ZXJfaG9zdCwKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuc2VydmVy
X3BvcnQsCi0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLnVzZV90bHMpCi0gICAgICAgIGhlYWRl
cnMgKz0gX29yaWdpbl9oZWFkZXIoc2VsZi5fb3B0aW9ucy5vcmlnaW4pCi0gICAgICAgIHNlbGYu
X2xvZ2dlci5kZWJ1ZygnT3BlbmluZyBoYW5kc2hha2UgcmVxdWVzdCBoZWFkZXJzOiAlcicsIGhl
YWRlcnMpCi0gICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKGhlYWRlcnMpCi0KLSAgICAgICAg
c2VsZi5fc29ja2V0LnNlbmRhbGwoJ1xyXG4nKQotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5pbmZv
KCdTZW50IG9wZW5pbmcgaGFuZHNoYWtlIHJlcXVlc3QnKQotCi0gICAgICAgIGZvciBleHBlY3Rl
ZF9jaGFyIGluIFdlYlNvY2tldEhpeGllNzVIYW5kc2hha2UuX0VYUEVDVEVEX1JFU1BPTlNFOgot
ICAgICAgICAgICAgcmVjZWl2ZWQgPSByZWNlaXZlX2J5dGVzKHNlbGYuX3NvY2tldCwgMSkKLSAg
ICAgICAgICAgIGlmIGV4cGVjdGVkX2NoYXIgIT0gcmVjZWl2ZWQ6Ci0gICAgICAgICAgICAgICAg
cmFpc2UgRXhjZXB0aW9uKCdIYW5kc2hha2UgZmFpbHVyZScpCi0gICAgICAgICMgV2UgY3V0IGNv
cm5lcnMgYW5kIHNraXAgb3RoZXIgaGVhZGVycy4KLSAgICAgICAgc2VsZi5fc2tpcF9oZWFkZXJz
KCkKLQotCi1jbGFzcyBXZWJTb2NrZXRTdHJlYW0ob2JqZWN0KToKLSAgICAiIiJGcmFtZSBwcm9j
ZXNzb3IgZm9yIHRoZSBXZWJTb2NrZXQgcHJvdG9jb2wgKFJGQyA2NDU1KS4iIiIKLQotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBzb2NrZXQsIGhhbmRzaGFrZSk6Ci0gICAgICAgIHNlbGYuX2hhbmRz
aGFrZSA9IGhhbmRzaGFrZQotICAgICAgICBzZWxmLl9zb2NrZXQgPSBzb2NrZXQKLQotICAgICAg
ICAjIEZpbHRlcnMgYXBwbGllZCB0byBhcHBsaWNhdGlvbiBkYXRhIHBhcnQgb2YgZGF0YSBmcmFt
ZXMuCi0gICAgICAgIHNlbGYuX291dGdvaW5nX2ZyYW1lX2ZpbHRlciA9IE5vbmUKLSAgICAgICAg
c2VsZi5faW5jb21pbmdfZnJhbWVfZmlsdGVyID0gTm9uZQotCi0gICAgICAgIGlmIHNlbGYuX2hh
bmRzaGFrZS5fb3B0aW9ucy51c2VfZGVmbGF0ZV9mcmFtZToKLSAgICAgICAgICAgIHNlbGYuX291
dGdvaW5nX2ZyYW1lX2ZpbHRlciA9ICgKLSAgICAgICAgICAgICAgICB1dGlsLl9SRkMxOTc5RGVm
bGF0ZXIoTm9uZSwgRmFsc2UpKQotICAgICAgICAgICAgc2VsZi5faW5jb21pbmdfZnJhbWVfZmls
dGVyID0gdXRpbC5fUkZDMTk3OUluZmxhdGVyKCkKLQotICAgICAgICBzZWxmLl9mcmFnbWVudGVk
ID0gRmFsc2UKLQotICAgIGRlZiBfbWFza19oeWJpKHNlbGYsIHMpOgotICAgICAgICAjIFRPRE8o
dHlvc2hpbm8pOiBvcy51cmFuZG9tIGRvZXMgb3Blbi9yZWFkL2Nsb3NlIGZvciBldmVyeSBjYWxs
LiBJZgotICAgICAgICAjIHBlcmZvcm1hbmNlIG1hdHRlcnMsIGNoYW5nZSB0aGlzIHRvIHNvbWUg
bGlicmFyeSBjYWxsIHRoYXQgZ2VuZXJhdGVzCi0gICAgICAgICMgY3J5cHRvZ3JhcGhpY2FsbHkg
c2VjdXJlIHBzZXVkbyByYW5kb20gbnVtYmVyIHNlcXVlbmNlLgotICAgICAgICBtYXNraW5nX25v
bmNlID0gb3MudXJhbmRvbSg0KQotICAgICAgICByZXN1bHQgPSBbbWFza2luZ19ub25jZV0KLSAg
ICAgICAgY291bnQgPSAwCi0gICAgICAgIGZvciBjIGluIHM6Ci0gICAgICAgICAgICByZXN1bHQu
YXBwZW5kKGNocihvcmQoYykgXiBvcmQobWFza2luZ19ub25jZVtjb3VudF0pKSkKLSAgICAgICAg
ICAgIGNvdW50ID0gKGNvdW50ICsgMSkgJSBsZW4obWFza2luZ19ub25jZSkKLSAgICAgICAgcmV0
dXJuICcnLmpvaW4ocmVzdWx0KQotCi0gICAgZGVmIHNlbmRfZnJhbWVfb2ZfYXJiaXRyYXJ5X2J5
dGVzKHNlbGYsIGhlYWRlciwgYm9keSk6Ci0gICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKGhl
YWRlciArIHNlbGYuX21hc2tfaHliaShib2R5KSkKLQotICAgIGRlZiBzZW5kX2RhdGEoc2VsZiwg
cGF5bG9hZCwgZnJhbWVfdHlwZSwgZW5kPVRydWUsIG1hc2s9VHJ1ZSwKLSAgICAgICAgICAgICAg
ICAgIHJzdjE9MCwgcnN2Mj0wLCByc3YzPTApOgotICAgICAgICBpZiBzZWxmLl9vdXRnb2luZ19m
cmFtZV9maWx0ZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBwYXlsb2FkID0gc2VsZi5fb3V0
Z29pbmdfZnJhbWVfZmlsdGVyLmZpbHRlcihwYXlsb2FkKQotCi0gICAgICAgIGlmIHNlbGYuX2Zy
YWdtZW50ZWQ6Ci0gICAgICAgICAgICBvcGNvZGUgPSBPUENPREVfQ09OVElOVUFUSU9OCi0gICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICBvcGNvZGUgPSBmcmFtZV90eXBlCi0KLSAgICAgICAgaWYg
ZW5kOgotICAgICAgICAgICAgc2VsZi5fZnJhZ21lbnRlZCA9IEZhbHNlCi0gICAgICAgICAgICBm
aW4gPSAxCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLl9mcmFnbWVudGVkID0gVHJ1
ZQotICAgICAgICAgICAgZmluID0gMAotCi0gICAgICAgIGlmIHNlbGYuX2hhbmRzaGFrZS5fb3B0
aW9ucy51c2VfZGVmbGF0ZV9mcmFtZToKLSAgICAgICAgICAgIHJzdjEgPSAxCi0KLSAgICAgICAg
aWYgbWFzazoKLSAgICAgICAgICAgIG1hc2tfYml0ID0gMSA8PCA3Ci0gICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICBtYXNrX2JpdCA9IDAKLQotICAgICAgICBoZWFkZXIgPSBjaHIoZmluIDw8IDcg
fCByc3YxIDw8IDYgfCByc3YyIDw8IDUgfCByc3YzIDw8IDQgfCBvcGNvZGUpCi0gICAgICAgIHBh
eWxvYWRfbGVuZ3RoID0gbGVuKHBheWxvYWQpCi0gICAgICAgIGlmIHBheWxvYWRfbGVuZ3RoIDw9
IDEyNToKLSAgICAgICAgICAgIGhlYWRlciArPSBjaHIobWFza19iaXQgfCBwYXlsb2FkX2xlbmd0
aCkKLSAgICAgICAgZWxpZiBwYXlsb2FkX2xlbmd0aCA8IDEgPDwgMTY6Ci0gICAgICAgICAgICBo
ZWFkZXIgKz0gY2hyKG1hc2tfYml0IHwgMTI2KSArIHN0cnVjdC5wYWNrKCchSCcsIHBheWxvYWRf
bGVuZ3RoKQotICAgICAgICBlbGlmIHBheWxvYWRfbGVuZ3RoIDwgMSA8PCA2MzoKLSAgICAgICAg
ICAgIGhlYWRlciArPSBjaHIobWFza19iaXQgfCAxMjcpICsgc3RydWN0LnBhY2soJyFRJywgcGF5
bG9hZF9sZW5ndGgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24o
J1RvbyBsb25nIHBheWxvYWQgKCVkIGJ5dGUpJyAlIHBheWxvYWRfbGVuZ3RoKQotICAgICAgICBp
ZiBtYXNrOgotICAgICAgICAgICAgcGF5bG9hZCA9IHNlbGYuX21hc2tfaHliaShwYXlsb2FkKQot
ICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZGFsbChoZWFkZXIgKyBwYXlsb2FkKQotCi0gICAgZGVm
IHNlbmRfYmluYXJ5KHNlbGYsIHBheWxvYWQsIGVuZD1UcnVlLCBtYXNrPVRydWUpOgotICAgICAg
ICBzZWxmLnNlbmRfZGF0YShwYXlsb2FkLCBPUENPREVfQklOQVJZLCBlbmQsIG1hc2spCi0KLSAg
ICBkZWYgc2VuZF90ZXh0KHNlbGYsIHBheWxvYWQsIGVuZD1UcnVlLCBtYXNrPVRydWUpOgotICAg
ICAgICBzZWxmLnNlbmRfZGF0YShwYXlsb2FkLmVuY29kZSgndXRmLTgnKSwgT1BDT0RFX1RFWFQs
IGVuZCwgbWFzaykKLQotICAgIGRlZiBfYXNzZXJ0X3JlY2VpdmVfZGF0YShzZWxmLCBwYXlsb2Fk
LCBvcGNvZGUsIGZpbiwgcnN2MSwgcnN2MiwgcnN2Myk6Ci0gICAgICAgIChhY3R1YWxfZmluLCBh
Y3R1YWxfcnN2MSwgYWN0dWFsX3JzdjIsIGFjdHVhbF9yc3YzLCBhY3R1YWxfb3Bjb2RlLAotICAg
ICAgICAgcGF5bG9hZF9sZW5ndGgpID0gcmVhZF9mcmFtZV9oZWFkZXIoc2VsZi5fc29ja2V0KQot
Ci0gICAgICAgIGlmIGFjdHVhbF9vcGNvZGUgIT0gb3Bjb2RlOgotICAgICAgICAgICAgcmFpc2Ug
RXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIG9wY29kZTogJWQgKGV4cGVj
dGVkKSB2cyAlZCAoYWN0dWFsKScgJQotICAgICAgICAgICAgICAgIChvcGNvZGUsIGFjdHVhbF9v
cGNvZGUpKQotCi0gICAgICAgIGlmIGFjdHVhbF9maW4gIT0gZmluOgotICAgICAgICAgICAgcmFp
c2UgRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIGZpbjogJWQgKGV4cGVj
dGVkKSB2cyAlZCAoYWN0dWFsKScgJQotICAgICAgICAgICAgICAgIChmaW4sIGFjdHVhbF9maW4p
KQotCi0gICAgICAgIGlmIHJzdjEgaXMgTm9uZToKLSAgICAgICAgICAgIHJzdjEgPSAwCi0gICAg
ICAgICAgICBpZiBzZWxmLl9oYW5kc2hha2UuX29wdGlvbnMudXNlX2RlZmxhdGVfZnJhbWU6Ci0g
ICAgICAgICAgICAgICAgcnN2MSA9IDEKLQotICAgICAgICBpZiByc3YyIGlzIE5vbmU6Ci0gICAg
ICAgICAgICByc3YyID0gMAotCi0gICAgICAgIGlmIHJzdjMgaXMgTm9uZToKLSAgICAgICAgICAg
IHJzdjMgPSAwCi0KLSAgICAgICAgaWYgYWN0dWFsX3JzdjEgIT0gcnN2MToKLSAgICAgICAgICAg
IHJhaXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCByc3YxOiAlciAo
ZXhwZWN0ZWQpIHZzICVyIChhY3R1YWwpJyAlCi0gICAgICAgICAgICAgICAgKHJzdjEsIGFjdHVh
bF9yc3YxKSkKLQotICAgICAgICBpZiBhY3R1YWxfcnN2MiAhPSByc3YyOgotICAgICAgICAgICAg
cmFpc2UgRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIHJzdjI6ICVyIChl
eHBlY3RlZCkgdnMgJXIgKGFjdHVhbCknICUKLSAgICAgICAgICAgICAgICAocnN2MiwgYWN0dWFs
X3JzdjIpKQotCi0gICAgICAgIGlmIGFjdHVhbF9yc3YzICE9IHJzdjM6Ci0gICAgICAgICAgICBy
YWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgcnN2MzogJXIgKGV4
cGVjdGVkKSB2cyAlciAoYWN0dWFsKScgJQotICAgICAgICAgICAgICAgIChyc3YzLCBhY3R1YWxf
cnN2MykpCi0KLSAgICAgICAgcmVjZWl2ZWQgPSByZWNlaXZlX2J5dGVzKHNlbGYuX3NvY2tldCwg
cGF5bG9hZF9sZW5ndGgpCi0KLSAgICAgICAgaWYgc2VsZi5faW5jb21pbmdfZnJhbWVfZmlsdGVy
IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcmVjZWl2ZWQgPSBzZWxmLl9pbmNvbWluZ19mcmFt
ZV9maWx0ZXIuZmlsdGVyKHJlY2VpdmVkKQotCi0gICAgICAgIGlmIGxlbihyZWNlaXZlZCkgIT0g
bGVuKHBheWxvYWQpOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAotICAgICAgICAgICAg
ICAgICdVbmV4cGVjdGVkIHBheWxvYWQgbGVuZ3RoOiAlZCAoZXhwZWN0ZWQpIHZzICVkIChhY3R1
YWwpJyAlCi0gICAgICAgICAgICAgICAgKGxlbihwYXlsb2FkKSwgbGVuKHJlY2VpdmVkKSkpCi0K
LSAgICAgICAgaWYgcGF5bG9hZCAhPSByZWNlaXZlZDoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2Vw
dGlvbigKLSAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBwYXlsb2FkOiAlciAoZXhwZWN0ZWQp
IHZzICVyIChhY3R1YWwpJyAlCi0gICAgICAgICAgICAgICAgKHBheWxvYWQsIHJlY2VpdmVkKSkK
LQotICAgIGRlZiBhc3NlcnRfcmVjZWl2ZV9iaW5hcnkoc2VsZiwgcGF5bG9hZCwgb3Bjb2RlPU9Q
Q09ERV9CSU5BUlksIGZpbj0xLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnN2MT1O
b25lLCByc3YyPU5vbmUsIHJzdjM9Tm9uZSk6Ci0gICAgICAgIHNlbGYuX2Fzc2VydF9yZWNlaXZl
X2RhdGEocGF5bG9hZCwgb3Bjb2RlLCBmaW4sIHJzdjEsIHJzdjIsIHJzdjMpCi0KLSAgICBkZWYg
YXNzZXJ0X3JlY2VpdmVfdGV4dChzZWxmLCBwYXlsb2FkLCBvcGNvZGU9T1BDT0RFX1RFWFQsIGZp
bj0xLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJzdjE9Tm9uZSwgcnN2Mj1Ob25lLCBy
c3YzPU5vbmUpOgotICAgICAgICBzZWxmLl9hc3NlcnRfcmVjZWl2ZV9kYXRhKHBheWxvYWQuZW5j
b2RlKCd1dGYtOCcpLCBvcGNvZGUsIGZpbiwgcnN2MSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByc3YyLCByc3YzKQotCi0gICAgZGVmIF9idWlsZF9jbG9zZV9mcmFtZShzZWxm
LCBjb2RlLCByZWFzb24sIG1hc2spOgotICAgICAgICBmcmFtZSA9IGNocigxIDw8IDcgfCBPUENP
REVfQ0xPU0UpCi0KLSAgICAgICAgaWYgY29kZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGJv
ZHkgPSBzdHJ1Y3QucGFjaygnIUgnLCBjb2RlKSArIHJlYXNvbi5lbmNvZGUoJ3V0Zi04JykKLSAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgIGJvZHkgPSAnJwotICAgICAgICBpZiBtYXNrOgotICAg
ICAgICAgICAgZnJhbWUgKz0gY2hyKDEgPDwgNyB8IGxlbihib2R5KSkgKyBzZWxmLl9tYXNrX2h5
YmkoYm9keSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGZyYW1lICs9IGNocihsZW4oYm9k
eSkpICsgYm9keQotICAgICAgICByZXR1cm4gZnJhbWUKLQotICAgIGRlZiBzZW5kX2Nsb3NlKHNl
bGYsIGNvZGUsIHJlYXNvbik6Ci0gICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKAotICAgICAg
ICAgICAgc2VsZi5fYnVpbGRfY2xvc2VfZnJhbWUoY29kZSwgcmVhc29uLCBUcnVlKSkKLQotICAg
IGRlZiBhc3NlcnRfcmVjZWl2ZV9jbG9zZShzZWxmLCBjb2RlLCByZWFzb24pOgotICAgICAgICBl
eHBlY3RlZF9mcmFtZSA9IHNlbGYuX2J1aWxkX2Nsb3NlX2ZyYW1lKGNvZGUsIHJlYXNvbiwgRmFs
c2UpCi0gICAgICAgIGFjdHVhbF9mcmFtZSA9IHJlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCBs
ZW4oZXhwZWN0ZWRfZnJhbWUpKQotICAgICAgICBpZiBhY3R1YWxfZnJhbWUgIT0gZXhwZWN0ZWRf
ZnJhbWU6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ1Vu
ZXhwZWN0ZWQgY2xvc2UgZnJhbWU6ICVyIChleHBlY3RlZCkgdnMgJXIgKGFjdHVhbCknICUKLSAg
ICAgICAgICAgICAgICAoZXhwZWN0ZWRfZnJhbWUsIGFjdHVhbF9mcmFtZSkpCi0KLQotY2xhc3Mg
V2ViU29ja2V0U3RyZWFtSGl4aWU3NShvYmplY3QpOgotICAgICIiIkZyYW1lIHByb2Nlc3NvciBm
b3IgdGhlIFdlYlNvY2tldCBwcm90b2NvbCB2ZXJzaW9uIEhpeGllIDc1IGFuZCBIeUJpIDAwLgot
ICAgICIiIgotCi0gICAgX0NMT1NFX0ZSQU1FID0gJ1x4ZmZceDAwJwotCi0gICAgZGVmIF9faW5p
dF9fKHNlbGYsIHNvY2tldCwgdW51c2VkX2hhbmRzaGFrZSk6Ci0gICAgICAgIHNlbGYuX3NvY2tl
dCA9IHNvY2tldAotCi0gICAgZGVmIHNlbmRfZnJhbWVfb2ZfYXJiaXRyYXJ5X2J5dGVzKHNlbGYs
IGhlYWRlciwgYm9keSk6Ci0gICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKGhlYWRlciArIGJv
ZHkpCi0KLSAgICBkZWYgc2VuZF9kYXRhKHNlbGYsIHBheWxvYWQsIHVudXNlZF9mcmFtZV90eXBl
bSwgdW51c2VkX2VuZCwgdW51c2VkX21hc2spOgotICAgICAgICBmcmFtZSA9ICcnLmpvaW4oWydc
eDAwJywgcGF5bG9hZCwgJ1x4ZmYnXSkKLSAgICAgICAgc2VsZi5fc29ja2V0LnNlbmRhbGwoZnJh
bWUpCi0KLSAgICBkZWYgc2VuZF9iaW5hcnkoc2VsZiwgdW51c2VkX3BheWxvYWQsIHVudXNlZF9l
bmQsIHVudXNlZF9tYXNrKToKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIHNlbmRfdGV4dChzZWxm
LCBwYXlsb2FkLCB1bnVzZWRfZW5kLCB1bnVzZWRfbWFzayk6Ci0gICAgICAgIGVuY29kZWRfcGF5
bG9hZCA9IHBheWxvYWQuZW5jb2RlKCd1dGYtOCcpCi0gICAgICAgIGZyYW1lID0gJycuam9pbihb
J1x4MDAnLCBlbmNvZGVkX3BheWxvYWQsICdceGZmJ10pCi0gICAgICAgIHNlbGYuX3NvY2tldC5z
ZW5kYWxsKGZyYW1lKQotCi0gICAgZGVmIGFzc2VydF9yZWNlaXZlX2JpbmFyeShzZWxmLCBwYXls
b2FkLCBvcGNvZGU9T1BDT0RFX0JJTkFSWSwgZmluPTEsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByc3YxPTAsIHJzdjI9MCwgcnN2Mz0wKToKLSAgICAgICAgcmFpc2UgRXhjZXB0aW9u
KCdCaW5hcnkgZnJhbWUgaXMgbm90IHN1cHBvcnRlZCBpbiBoaXhpZTc1JykKLQotICAgIGRlZiBh
c3NlcnRfcmVjZWl2ZV90ZXh0KHNlbGYsIHBheWxvYWQpOgotICAgICAgICByZWNlaXZlZCA9IHJl
Y2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCAxKQotCi0gICAgICAgIGlmIHJlY2VpdmVkICE9ICdc
eDAwJzoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnVW5l
eHBlY3RlZCBmcmFtZSB0eXBlOiAlZCAoZXhwZWN0ZWQpIHZzICVkIChhY3R1YWwpJyAlCi0gICAg
ICAgICAgICAgICAgKDAsIG9yZChyZWNlaXZlZCkpKQotCi0gICAgICAgIHJlY2VpdmVkID0gcmVj
ZWl2ZV9ieXRlcyhzZWxmLl9zb2NrZXQsIGxlbihwYXlsb2FkKSArIDEpCi0gICAgICAgIGlmIHJl
Y2VpdmVkWy0xXSAhPSAnXHhmZic6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCi0gICAg
ICAgICAgICAgICAgJ1Rlcm1pbmF0aW9uIGV4cGVjdGVkOiAweGZmIChleHBlY3RlZCkgdnMgJXIg
KGFjdHVhbCknICUKLSAgICAgICAgICAgICAgICByZWNlaXZlZCkKLQotICAgICAgICBpZiByZWNl
aXZlZFswOi0xXSAhPSBwYXlsb2FkOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAotICAg
ICAgICAgICAgICAgICdVbmV4cGVjdGVkIHBheWxvYWQ6ICVyIChleHBlY3RlZCkgdnMgJXIgKGFj
dHVhbCknICUKLSAgICAgICAgICAgICAgICAocGF5bG9hZCwgcmVjZWl2ZWRbMDotMV0pKQotCi0g
ICAgZGVmIHNlbmRfY2xvc2Uoc2VsZiwgY29kZSwgcmVhc29uKToKLSAgICAgICAgc2VsZi5fc29j
a2V0LnNlbmRhbGwoc2VsZi5fQ0xPU0VfRlJBTUUpCi0KLSAgICBkZWYgYXNzZXJ0X3JlY2VpdmVf
Y2xvc2Uoc2VsZiwgdW51c2VkX2NvZGUsIHVudXNlZF9yZWFzb24pOgotICAgICAgICBjbG9zaW5n
ID0gcmVjZWl2ZV9ieXRlcyhzZWxmLl9zb2NrZXQsIGxlbihzZWxmLl9DTE9TRV9GUkFNRSkpCi0g
ICAgICAgIGlmIGNsb3NpbmcgIT0gc2VsZi5fQ0xPU0VfRlJBTUU6Ci0gICAgICAgICAgICByYWlz
ZSBFeGNlcHRpb24oJ0RpZG5cJ3QgcmVjZWl2ZSBjbG9zaW5nIGhhbmRzaGFrZScpCi0KLQotY2xh
c3MgQ2xpZW50T3B0aW9ucyhvYmplY3QpOgotICAgICIiIkhvbGRzIG9wdGlvbiB2YWx1ZXMgdG8g
Y29uZmlndXJlIHRoZSBDbGllbnQgb2JqZWN0LiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYp
OgotICAgICAgICBzZWxmLnZlcnNpb24gPSAxMwotICAgICAgICBzZWxmLnNlcnZlcl9ob3N0ID0g
JycKLSAgICAgICAgc2VsZi5vcmlnaW4gPSAnJwotICAgICAgICBzZWxmLnJlc291cmNlID0gJycK
LSAgICAgICAgc2VsZi5zZXJ2ZXJfcG9ydCA9IC0xCi0gICAgICAgIHNlbGYuc29ja2V0X3RpbWVv
dXQgPSAxMDAwCi0gICAgICAgIHNlbGYudXNlX3RscyA9IEZhbHNlCi0gICAgICAgIHNlbGYuZXh0
ZW5zaW9ucyA9IFtdCi0gICAgICAgICMgRW5hYmxlIGRlZmxhdGUtYXBwbGljYXRpb24tZGF0YS4K
LSAgICAgICAgc2VsZi51c2VfZGVmbGF0ZV9mcmFtZSA9IEZhbHNlCi0gICAgICAgICMgRW5hYmxl
IG11eAotICAgICAgICBzZWxmLnVzZV9tdXggPSBGYWxzZQotCi0gICAgZGVmIGVuYWJsZV9kZWZs
YXRlX2ZyYW1lKHNlbGYpOgotICAgICAgICBzZWxmLnVzZV9kZWZsYXRlX2ZyYW1lID0gVHJ1ZQot
ICAgICAgICBzZWxmLmV4dGVuc2lvbnMuYXBwZW5kKF9ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTikK
LQotICAgIGRlZiBlbmFibGVfbXV4KHNlbGYpOgotICAgICAgICBzZWxmLnVzZV9tdXggPSBUcnVl
Ci0gICAgICAgIHNlbGYuZXh0ZW5zaW9ucy5hcHBlbmQoX01VWF9FWFRFTlNJT04pCi0KLQotZGVm
IGNvbm5lY3Rfc29ja2V0X3dpdGhfcmV0cnkoaG9zdCwgcG9ydCwgdGltZW91dCwgdXNlX3RscywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHJ5PTEwLCBzbGVlcF9zZWM9MC4xKToK
LSAgICByZXRyeV9jb3VudCA9IDAKLSAgICB3aGlsZSByZXRyeV9jb3VudCA8IHJldHJ5OgotICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICBzID0gc29ja2V0LnNvY2tldCgpCi0gICAgICAgICAgICBz
LnNldHRpbWVvdXQodGltZW91dCkKLSAgICAgICAgICAgIHMuY29ubmVjdCgoaG9zdCwgcG9ydCkp
Ci0gICAgICAgICAgICBpZiB1c2VfdGxzOgotICAgICAgICAgICAgICAgIHJldHVybiBfVExTU29j
a2V0KHMpCi0gICAgICAgICAgICByZXR1cm4gcwotICAgICAgICBleGNlcHQgc29ja2V0LmVycm9y
LCBlOgotICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FQ09OTlJFRlVTRUQ6Ci0gICAg
ICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0
cnlfY291bnQgPSByZXRyeV9jb3VudCArIDEKLSAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKHNs
ZWVwX3NlYykKLQotICAgIHJldHVybiBOb25lCi0KLQotY2xhc3MgQ2xpZW50KG9iamVjdCk6Ci0g
ICAgIiIiV2ViU29ja2V0IGNsaWVudC4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRp
b25zLCBoYW5kc2hha2UsIHN0cmVhbV9jbGFzcyk6Ci0gICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0
aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQotCi0gICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRp
b25zCi0gICAgICAgIHNlbGYuX3NvY2tldCA9IE5vbmUKLQotICAgICAgICBzZWxmLl9oYW5kc2hh
a2UgPSBoYW5kc2hha2UKLSAgICAgICAgc2VsZi5fc3RyZWFtX2NsYXNzID0gc3RyZWFtX2NsYXNz
Ci0KLSAgICBkZWYgY29ubmVjdChzZWxmKToKLSAgICAgICAgc2VsZi5fc29ja2V0ID0gY29ubmVj
dF9zb2NrZXRfd2l0aF9yZXRyeSgKLSAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLnNlcnZl
cl9ob3N0LAotICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuc2VydmVyX3BvcnQsCi0gICAg
ICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5zb2NrZXRfdGltZW91dCwKLSAgICAgICAgICAgICAg
ICBzZWxmLl9vcHRpb25zLnVzZV90bHMpCi0KLSAgICAgICAgc2VsZi5faGFuZHNoYWtlLmhhbmRz
aGFrZShzZWxmLl9zb2NrZXQpCi0KLSAgICAgICAgc2VsZi5fc3RyZWFtID0gc2VsZi5fc3RyZWFt
X2NsYXNzKHNlbGYuX3NvY2tldCwgc2VsZi5faGFuZHNoYWtlKQotCi0gICAgICAgIHNlbGYuX2xv
Z2dlci5pbmZvKCdDb25uZWN0aW9uIGVzdGFibGlzaGVkJykKLQotICAgIGRlZiBzZW5kX2ZyYW1l
X29mX2FyYml0cmFyeV9ieXRlcyhzZWxmLCBoZWFkZXIsIGJvZHkpOgotICAgICAgICBzZWxmLl9z
dHJlYW0uc2VuZF9mcmFtZV9vZl9hcmJpdHJhcnlfYnl0ZXMoaGVhZGVyLCBib2R5KQotCi0gICAg
ZGVmIHNlbmRfbWVzc2FnZShzZWxmLCBtZXNzYWdlLCBlbmQ9VHJ1ZSwgYmluYXJ5PUZhbHNlLCBy
YXc9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICBtYXNrPVRydWUpOgotICAgICAgICBpZiBi
aW5hcnk6Ci0gICAgICAgICAgICBzZWxmLl9zdHJlYW0uc2VuZF9iaW5hcnkobWVzc2FnZSwgZW5k
LCBtYXNrKQotICAgICAgICBlbGlmIHJhdzoKLSAgICAgICAgICAgIHNlbGYuX3N0cmVhbS5zZW5k
X2RhdGEobWVzc2FnZSwgT1BDT0RFX1RFWFQsIGVuZCwgbWFzaykKLSAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgIHNlbGYuX3N0cmVhbS5zZW5kX3RleHQobWVzc2FnZSwgZW5kLCBtYXNrKQotCi0g
ICAgZGVmIGFzc2VydF9yZWNlaXZlKHNlbGYsIHBheWxvYWQsIGJpbmFyeT1GYWxzZSk6Ci0gICAg
ICAgIGlmIGJpbmFyeToKLSAgICAgICAgICAgIHNlbGYuX3N0cmVhbS5hc3NlcnRfcmVjZWl2ZV9i
aW5hcnkocGF5bG9hZCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuX3N0cmVhbS5h
c3NlcnRfcmVjZWl2ZV90ZXh0KHBheWxvYWQpCi0KLSAgICBkZWYgc2VuZF9jbG9zZShzZWxmLCBj
b2RlPVNUQVRVU19OT1JNQUxfQ0xPU1VSRSwgcmVhc29uPScnKToKLSAgICAgICAgc2VsZi5fc3Ry
ZWFtLnNlbmRfY2xvc2UoY29kZSwgcmVhc29uKQotCi0gICAgZGVmIGFzc2VydF9yZWNlaXZlX2Ns
b3NlKHNlbGYsIGNvZGU9U1RBVFVTX05PUk1BTF9DTE9TVVJFLCByZWFzb249JycpOgotICAgICAg
ICBzZWxmLl9zdHJlYW0uYXNzZXJ0X3JlY2VpdmVfY2xvc2UoY29kZSwgcmVhc29uKQotCi0gICAg
ZGVmIGNsb3NlX3NvY2tldChzZWxmKToKLSAgICAgICAgc2VsZi5fc29ja2V0LmNsb3NlKCkKLQot
ICAgIGRlZiBhc3NlcnRfY29ubmVjdGlvbl9jbG9zZWQoc2VsZik6Ci0gICAgICAgIHRyeToKLSAg
ICAgICAgICAgIHJlYWRfZGF0YSA9IHJlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCAxKQotICAg
ICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgaWYgc3RyKGUpLmZpbmQoCi0g
ICAgICAgICAgICAgICAgJ0Nvbm5lY3Rpb24gY2xvc2VkIGJlZm9yZSByZWNlaXZpbmcgcmVxdWVz
dGVkIGxlbmd0aCAnKSA9PSAwOgotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAg
dHJ5OgotICAgICAgICAgICAgICAgIGVycm9yX251bWJlciwgbWVzc2FnZSA9IGUKLSAgICAgICAg
ICAgICAgICBmb3IgZXJyb3JfbmFtZSBpbiBbJ0VDT05OUkVTRVQnLCAnV1NBRUNPTk5SRVNFVCdd
OgotICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3JfbmFtZSBpbiBkaXIoZXJybm8pIGFuZAot
ICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfbnVtYmVyID09IGdldGF0dHIoZXJybm8sIGVy
cm9yX25hbWUpKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAg
ZXhjZXB0OgotICAgICAgICAgICAgICAgIHJhaXNlIGUKLSAgICAgICAgICAgIHJhaXNlIGUKLQot
ICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0Nvbm5lY3Rpb24gaXMgbm90IGNsb3NlZCAoUmVhZDog
JXIpJyAlIHJlYWRfZGF0YSkKLQotCi1kZWYgY3JlYXRlX2NsaWVudChvcHRpb25zKToKLSAgICBy
ZXR1cm4gQ2xpZW50KAotICAgICAgICBvcHRpb25zLCBXZWJTb2NrZXRIYW5kc2hha2Uob3B0aW9u
cyksIFdlYlNvY2tldFN0cmVhbSkKLQotCi1kZWYgY3JlYXRlX2NsaWVudF9oeWJpMDAob3B0aW9u
cyk6Ci0gICAgcmV0dXJuIENsaWVudCgKLSAgICAgICAgb3B0aW9ucywKLSAgICAgICAgV2ViU29j
a2V0SHliaTAwSGFuZHNoYWtlKG9wdGlvbnMsICcwJyksCi0gICAgICAgIFdlYlNvY2tldFN0cmVh
bUhpeGllNzUpCi0KLQotZGVmIGNyZWF0ZV9jbGllbnRfaGl4aWU3NShvcHRpb25zKToKLSAgICBy
ZXR1cm4gQ2xpZW50KAotICAgICAgICBvcHRpb25zLCBXZWJTb2NrZXRIaXhpZTc1SGFuZHNoYWtl
KG9wdGlvbnMpLCBXZWJTb2NrZXRTdHJlYW1IaXhpZTc1KQotCi0KLSMgdmk6c3RzPTQgc3c9NCBl
dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC9lbmR0b2VuZF93aXRoX2V4dGVybmFsX3NlcnZl
ci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvc3JjL3Rlc3QvZW5kdG9lbmRfd2l0aF9leHRlcm5hbF9zZXJ2ZXIucHkKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3Zjg2ZmRiNDE2M2Q0ZTczODk1MmIzY2NiNzdm
MTkyMTZiYzU5MTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC9zcmMvdGVzdC9lbmR0b2VuZF93aXRoX2V4dGVybmFsX3NlcnZlci5weQorKysgL2Rl
di9udWxsCkBAIC0xLDY3ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5
cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
IyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0KLQotIiIiVGVzdCBmb3IgZW5kLXRvLWVuZCB3aXRoIGV4dGVybmFsIHNlcnZl
ci4KLQotVGhpcyB0ZXN0IGlzIG5vdCBydW4gYnkgcnVuX2FsbC5weSBiZWNhdXNlIGl0IHJlcXVp
cmVzIHNvbWUgcHJlcGFyYXRpb25zLgotSWYgeW91IHdvdWxkIGxpa2UgdG8gcnVuIHRoaXMgdGVz
dCBjb3JyZWN0bHksIGxhdW5jaCBBcGFjaGUgd2l0aCBtb2RfcHl0aG9uCi1hbmQgbW9kX3B5d2Vi
c29ja2V0IG1hbnVhbGx5LiBJbiBhZGRpdGlvbiwgeW91IHNob3VsZCBwYXNzIGFsbG93X2RyYWZ0
NzUgb3B0aW9uCi1hbmQgZXhhbXBsZSBwYXRoIGFzIGhhbmRsZXJfc2NhbiBvcHRpb24gYW5kIEFw
YWNoZSdzIERvY3VtZW50Um9vdC4KLSIiIgotCi0KLWltcG9ydCBvcHRwYXJzZQotaW1wb3J0IHN5
cwotaW1wb3J0IHRlc3QudGVzdF9lbmR0b2VuZAotaW1wb3J0IHVuaXR0ZXN0Ci0KLQotX0RFRkFV
TFRfV0VCX1NPQ0tFVF9QT1JUID0gODAKLQotCi1jbGFzcyBFbmRUb0VuZFRlc3RXaXRoRXh0ZXJu
YWxTZXJ2ZXIodGVzdC50ZXN0X2VuZHRvZW5kLkVuZFRvRW5kVGVzdCk6Ci0gICAgcGFzcwotCi1p
ZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBh
cnNlcigpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy1wJywgJy0tcG9ydCcsIGRlc3Q9J3BvcnQn
LCB0eXBlPSdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9X0RFRkFVTFRfV0VC
X1NPQ0tFVF9QT1JULAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2V4dGVybmFsIHRlc3Qg
c2VydmVyIHBvcnQuJykKLSAgICAob3B0aW9ucywgYXJncykgPSBwYXJzZXIucGFyc2VfYXJncygp
Ci0KLSAgICB0ZXN0LnRlc3RfZW5kdG9lbmQuX3VzZV9leHRlcm5hbF9zZXJ2ZXIgPSBUcnVlCi0g
ICAgdGVzdC50ZXN0X2VuZHRvZW5kLl9leHRlcm5hbF9zZXJ2ZXJfcG9ydCA9IG9wdGlvbnMucG9y
dAotCi0gICAgdW5pdHRlc3QubWFpbihhcmd2PVtzeXMuYXJndlswXV0pCi0KLQotIyB2aTpzdHM9
NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L21vY2sucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90
ZXN0L21vY2sucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiZmZjYWM0OGRjNDNh
NTJiOWNjZjFiY2QwMTI5NzU0MjQwNDhkNjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC9tb2NrLnB5CisrKyAvZGV2L251bGwKQEAg
LTEsMjIxICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMK
LSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot
IyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
IyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
Ci0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIk1vY2tzIGZvciB0ZXN0aW5n
LgotIiIiCi0KLQotaW1wb3J0IFF1ZXVlCi1pbXBvcnQgdGhyZWFkaW5nCi0KLWZyb20gbW9kX3B5
d2Vic29ja2V0IGltcG9ydCBjb21tb24KLWZyb20gbW9kX3B5d2Vic29ja2V0LnN0cmVhbSBpbXBv
cnQgU3RyZWFtSGl4aWU3NQotCi0KLWNsYXNzIF9Nb2NrQ29ubkJhc2Uob2JqZWN0KToKLSAgICAi
IiJCYXNlIGNsYXNzIG9mIG1vY2tzIGZvciBtb2RfcHl0aG9uLmFwYWNoZS5tcF9jb25uLgotCi0g
ICAgVGhpcyBlbmFibGVzIHRlc3RzIHRvIGNoZWNrIHdoYXQgaXMgd3JpdHRlbiB0byBhIChtb2Nr
KSBtcF9jb25uLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBz
ZWxmLl93cml0ZV9kYXRhID0gW10KLSAgICAgICAgc2VsZi5yZW1vdGVfYWRkciA9ICdmYWtlX2Fk
ZHJlc3MnCi0KLSAgICBkZWYgd3JpdGUoc2VsZiwgZGF0YSk6Ci0gICAgICAgICIiIk92ZXJyaWRl
IG1vZF9weXRob24uYXBhY2hlLm1wX2Nvbm4ud3JpdGUuIiIiCi0KLSAgICAgICAgc2VsZi5fd3Jp
dGVfZGF0YS5hcHBlbmQoZGF0YSkKLQotICAgIGRlZiB3cml0dGVuX2RhdGEoc2VsZik6Ci0gICAg
ICAgICIiIkdldCBieXRlcyB3cml0dGVuIHRvIHRoaXMgbW9jay4iIiIKLQotICAgICAgICByZXR1
cm4gJycuam9pbihzZWxmLl93cml0ZV9kYXRhKQotCi0KLWNsYXNzIE1vY2tDb25uKF9Nb2NrQ29u
bkJhc2UpOgotICAgICIiIk1vY2sgZm9yIG1vZF9weXRob24uYXBhY2hlLm1wX2Nvbm4uCi0KLSAg
ICBUaGlzIGVuYWJsZXMgdGVzdHMgdG8gc3BlY2lmeSB3aGF0IHNob3VsZCBiZSByZWFkIGZyb20g
YSAobW9jaykgbXBfY29ubiBhcwotICAgIHdlbGwgYXMgdG8gY2hlY2sgd2hhdCBpcyB3cml0dGVu
IHRvIGl0LgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlYWRfZGF0YSk6Ci0g
ICAgICAgICIiIkNvbnN0cnVjdHMgYW4gaW5zdGFuY2UuCi0KLSAgICAgICAgQXJnczoKLSAgICAg
ICAgICAgIHJlYWRfZGF0YTogYnl0ZXMgdGhhdCBzaG91bGQgYmUgcmV0dXJuZWQgd2hlbiByZWFk
KiBtZXRob2RzIGFyZQotICAgICAgICAgICAgY2FsbGVkLgotICAgICAgICAiIiIKLQotICAgICAg
ICBfTW9ja0Nvbm5CYXNlLl9faW5pdF9fKHNlbGYpCi0gICAgICAgIHNlbGYuX3JlYWRfZGF0YSA9
IHJlYWRfZGF0YQotICAgICAgICBzZWxmLl9yZWFkX3BvcyA9IDAKLQotICAgIGRlZiByZWFkbGlu
ZShzZWxmKToKLSAgICAgICAgIiIiT3ZlcnJpZGUgbW9kX3B5dGhvbi5hcGFjaGUubXBfY29ubi5y
ZWFkbGluZS4iIiIKLQotICAgICAgICBpZiBzZWxmLl9yZWFkX3BvcyA+PSBsZW4oc2VsZi5fcmVh
ZF9kYXRhKToKLSAgICAgICAgICAgIHJldHVybiAnJwotICAgICAgICBlbmRfaW5kZXggPSBzZWxm
Ll9yZWFkX2RhdGEuZmluZCgnXG4nLCBzZWxmLl9yZWFkX3BvcykgKyAxCi0gICAgICAgIGlmIG5v
dCBlbmRfaW5kZXg6Ci0gICAgICAgICAgICBlbmRfaW5kZXggPSBsZW4oc2VsZi5fcmVhZF9kYXRh
KQotICAgICAgICByZXR1cm4gc2VsZi5fcmVhZF91cF90byhlbmRfaW5kZXgpCi0KLSAgICBkZWYg
cmVhZChzZWxmLCBsZW5ndGgpOgotICAgICAgICAiIiJPdmVycmlkZSBtb2RfcHl0aG9uLmFwYWNo
ZS5tcF9jb25uLnJlYWQuIiIiCi0KLSAgICAgICAgaWYgc2VsZi5fcmVhZF9wb3MgPj0gbGVuKHNl
bGYuX3JlYWRfZGF0YSk6Ci0gICAgICAgICAgICByZXR1cm4gJycKLSAgICAgICAgZW5kX2luZGV4
ID0gbWluKGxlbihzZWxmLl9yZWFkX2RhdGEpLCBzZWxmLl9yZWFkX3BvcyArIGxlbmd0aCkKLSAg
ICAgICAgcmV0dXJuIHNlbGYuX3JlYWRfdXBfdG8oZW5kX2luZGV4KQotCi0gICAgZGVmIF9yZWFk
X3VwX3RvKHNlbGYsIGVuZF9pbmRleCk6Ci0gICAgICAgIGxpbmUgPSBzZWxmLl9yZWFkX2RhdGFb
c2VsZi5fcmVhZF9wb3M6ZW5kX2luZGV4XQotICAgICAgICBzZWxmLl9yZWFkX3BvcyA9IGVuZF9p
bmRleAotICAgICAgICByZXR1cm4gbGluZQotCi0KLWNsYXNzIE1vY2tCbG9ja2luZ0Nvbm4oX01v
Y2tDb25uQmFzZSk6Ci0gICAgIiIiQmxvY2tpbmcgbW9jayBmb3IgbW9kX3B5dGhvbi5hcGFjaGUu
bXBfY29ubi4KLQotICAgIFRoaXMgZW5hYmxlcyB0ZXN0cyB0byBzcGVjaWZ5IHdoYXQgc2hvdWxk
IGJlIHJlYWQgZnJvbSBhIChtb2NrKSBtcF9jb25uIGFzCi0gICAgd2VsbCBhcyB0byBjaGVjayB3
aGF0IGlzIHdyaXR0ZW4gdG8gaXQuCi0gICAgQ2FsbGVycyBvZiByZWFkKiBtZXRob2RzIHdpbGwg
YmxvY2sgaWYgdGhlcmUgaXMgbm8gYnl0ZXMgYXZhaWxhYmxlLgotICAgICIiIgotCi0gICAgZGVm
IF9faW5pdF9fKHNlbGYpOgotICAgICAgICBfTW9ja0Nvbm5CYXNlLl9faW5pdF9fKHNlbGYpCi0g
ICAgICAgIHNlbGYuX3F1ZXVlID0gUXVldWUuUXVldWUoKQotCi0gICAgZGVmIHJlYWRsaW5lKHNl
bGYpOgotICAgICAgICAiIiJPdmVycmlkZSBtb2RfcHl0aG9uLmFwYWNoZS5tcF9jb25uLnJlYWRs
aW5lLiIiIgotICAgICAgICBsaW5lID0gJycKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAg
ICAgIGMgPSBzZWxmLl9xdWV1ZS5nZXQoKQotICAgICAgICAgICAgbGluZSArPSBjCi0gICAgICAg
ICAgICBpZiBjID09ICdcbic6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGxpbmUKLQotICAgIGRl
ZiByZWFkKHNlbGYsIGxlbmd0aCk6Ci0gICAgICAgICIiIk92ZXJyaWRlIG1vZF9weXRob24uYXBh
Y2hlLm1wX2Nvbm4ucmVhZC4iIiIKLQotICAgICAgICBkYXRhID0gJycKLSAgICAgICAgZm9yIHVu
dXNlZCBpbiByYW5nZShsZW5ndGgpOgotICAgICAgICAgICAgZGF0YSArPSBzZWxmLl9xdWV1ZS5n
ZXQoKQotICAgICAgICByZXR1cm4gZGF0YQotCi0gICAgZGVmIHB1dF9ieXRlcyhzZWxmLCBieXRl
cyk6Ci0gICAgICAgICIiIlB1dCBieXRlcyB0byBiZSByZWFkIGZyb20gdGhpcyBtb2NrLgotCi0g
ICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBieXRlczogYnl0ZXMgdG8gYmUgcmVhZC4KLSAgICAg
ICAgIiIiCi0KLSAgICAgICAgZm9yIGJ5dGUgaW4gYnl0ZXM6Ci0gICAgICAgICAgICBzZWxmLl9x
dWV1ZS5wdXQoYnl0ZSkKLQotCi1jbGFzcyBNb2NrVGFibGUoZGljdCk6Ci0gICAgIiIiTW9jayB0
YWJsZS4KLQotICAgIFRoaXMgbWltaWNzIG1vZF9weXRob24gbXBfdGFibGUuIE5vdGUgdGhhdCBv
bmx5IHRoZSBtZXRob2RzIHVzZWQgYnkKLSAgICB0ZXN0cyBhcmUgb3ZlcnJpZGRlbi4KLSAgICAi
IiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb3B5X2Zyb209e30pOgotICAgICAgICBpZiBp
c2luc3RhbmNlKGNvcHlfZnJvbSwgZGljdCk6Ci0gICAgICAgICAgICBjb3B5X2Zyb20gPSBjb3B5
X2Zyb20uaXRlbXMoKQotICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBjb3B5X2Zyb206Ci0gICAg
ICAgICAgICBzZWxmLl9fc2V0aXRlbV9fKGtleSwgdmFsdWUpCi0KLSAgICBkZWYgX19nZXRpdGVt
X18oc2VsZiwga2V5KToKLSAgICAgICAgcmV0dXJuIHN1cGVyKE1vY2tUYWJsZSwgc2VsZikuX19n
ZXRpdGVtX18oa2V5Lmxvd2VyKCkpCi0KLSAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwga2V5LCB2
YWx1ZSk6Ci0gICAgICAgIHN1cGVyKE1vY2tUYWJsZSwgc2VsZikuX19zZXRpdGVtX18oa2V5Lmxv
d2VyKCksIHZhbHVlKQotCi0gICAgZGVmIGdldChzZWxmLCBrZXksIGRlZl92YWx1ZT1Ob25lKToK
LSAgICAgICAgcmV0dXJuIHN1cGVyKE1vY2tUYWJsZSwgc2VsZikuZ2V0KGtleS5sb3dlcigpLCBk
ZWZfdmFsdWUpCi0KLQotY2xhc3MgTW9ja1JlcXVlc3Qob2JqZWN0KToKLSAgICAiIiJNb2NrIHJl
cXVlc3QuCi0KLSAgICBUaGlzIG1pbWljcyBtb2RfcHl0aG9uIHJlcXVlc3QuCi0gICAgIiIiCi0K
LSAgICBkZWYgX19pbml0X18oc2VsZiwgdXJpPU5vbmUsIGhlYWRlcnNfaW49e30sIGNvbm5lY3Rp
b249Tm9uZSwgbWV0aG9kPSdHRVQnLAotICAgICAgICAgICAgICAgICBwcm90b2NvbD0nSFRUUC8x
LjEnLCBpc19odHRwcz1GYWxzZSk6Ci0gICAgICAgICIiIkNvbnN0cnVjdCBhbiBpbnN0YW5jZS4K
LQotICAgICAgICBBcmd1bWVudHM6Ci0gICAgICAgICAgICB1cmk6IFVSSSBvZiB0aGUgcmVxdWVz
dC4KLSAgICAgICAgICAgIGhlYWRlcnNfaW46IFJlcXVlc3QgaGVhZGVycy4KLSAgICAgICAgICAg
IGNvbm5lY3Rpb246IENvbm5lY3Rpb24gdXNlZCBmb3IgdGhlIHJlcXVlc3QuCi0gICAgICAgICAg
ICBtZXRob2Q6IHJlcXVlc3QgbWV0aG9kLgotICAgICAgICAgICAgaXNfaHR0cHM6IFdoZXRoZXIg
dGhpcyByZXF1ZXN0IGlzIG92ZXIgU1NMLgotCi0gICAgICAgIFNlZSB0aGUgZG9jdW1lbnQgb2Yg
bW9kX3B5dGhvbiBSZXF1ZXN0IGZvciBkZXRhaWxzLgotICAgICAgICAiIiIKLSAgICAgICAgc2Vs
Zi51cmkgPSB1cmkKLSAgICAgICAgc2VsZi51bnBhcnNlZF91cmkgPSB1cmkKLSAgICAgICAgc2Vs
Zi5jb25uZWN0aW9uID0gY29ubmVjdGlvbgotICAgICAgICBzZWxmLm1ldGhvZCA9IG1ldGhvZAot
ICAgICAgICBzZWxmLnByb3RvY29sID0gcHJvdG9jb2wKLSAgICAgICAgc2VsZi5oZWFkZXJzX2lu
ID0gTW9ja1RhYmxlKGhlYWRlcnNfaW4pCi0gICAgICAgICMgc2VsZi5pc19odHRwc18gbmVlZHMg
dG8gYmUgYWNjZXNzaWJsZSBmcm9tIHRlc3RzLiAgVG8gYXZvaWQgbmFtZQotICAgICAgICAjIGNv
bmZsaWN0IHdpdGggc2VsZi5pc19odHRwcygpLCBpdCBpcyBuYW1lZCBhcyBzdWNoLgotICAgICAg
ICBzZWxmLmlzX2h0dHBzXyA9IGlzX2h0dHBzCi0gICAgICAgIHNlbGYud3Nfc3RyZWFtID0gU3Ry
ZWFtSGl4aWU3NShzZWxmLCBUcnVlKQotICAgICAgICBzZWxmLndzX2Nsb3NlX2NvZGUgPSBOb25l
Ci0gICAgICAgIHNlbGYud3NfY2xvc2VfcmVhc29uID0gTm9uZQotICAgICAgICBzZWxmLndzX3Zl
cnNpb24gPSBjb21tb24uVkVSU0lPTl9IWUJJMDAKLSAgICAgICAgc2VsZi53c19kZWZsYXRlID0g
RmFsc2UKLQotICAgIGRlZiBpc19odHRwcyhzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIHdoZXRo
ZXIgdGhpcyByZXF1ZXN0IGlzIG92ZXIgU1NMLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5pc19o
dHRwc18KLQotCi1jbGFzcyBNb2NrRGlzcGF0Y2hlcihvYmplY3QpOgotICAgICIiIk1vY2sgZm9y
IGRpc3BhdGNoLkRpc3BhdGNoZXIuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAg
ICAgIHNlbGYuZG9fZXh0cmFfaGFuZHNoYWtlX2NhbGxlZCA9IEZhbHNlCi0KLSAgICBkZWYgZG9f
ZXh0cmFfaGFuZHNoYWtlKHNlbGYsIGNvbm5fY29udGV4dCk6Ci0gICAgICAgIHNlbGYuZG9fZXh0
cmFfaGFuZHNoYWtlX2NhbGxlZCA9IFRydWUKLQotICAgIGRlZiB0cmFuc2Zlcl9kYXRhKHNlbGYs
IGNvbm5fY29udGV4dCk6Ci0gICAgICAgIHBhc3MKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvbXV4X2NsaWVudF9mb3JfdGVzdGluZy5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
c3JjL3Rlc3QvbXV4X2NsaWVudF9mb3JfdGVzdGluZy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZGQ1NDM1YThjYzBlMjc1NWM1ODNjMzZkMGNlYWYzZjNmZjYwMjFiMC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L211
eF9jbGllbnRfZm9yX3Rlc3RpbmcucHkKKysrIC9kZXYvbnVsbApAQCAtMSw2OTAgKzAsMCBAQAot
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgot
IyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
IyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJXZWJTb2Nr
ZXQgY2xpZW50IHV0aWxpdHkgZm9yIHRlc3RpbmcgbXV4IGV4dGVuc2lvbi4KLQotVGhpcyBjb2Rl
IHNob3VsZCBiZSBpbmRlcGVuZGVudCBmcm9tIG1vZF9weXdlYnNvY2tldC4gU2VlIHRoZSBjb21t
ZW50IG9mCi1jbGllbnRfZm9yX3Rlc3RpbmcucHkuCi0KLU5PVEU6IFRoaXMgY29kZSBpcyBmYXIg
ZnJvbSByb2J1c3QgbGlrZSBjbGllbnRfZm9yX3Rlc3RpbmcucHkuCi0iIiIKLQotCi0KLWltcG9y
dCBRdWV1ZQotaW1wb3J0IGJhc2U2NAotaW1wb3J0IGNvbGxlY3Rpb25zCi1pbXBvcnQgZW1haWwK
LWltcG9ydCBlbWFpbC5wYXJzZXIKLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgbWF0aAotaW1wb3J0
IG9zCi1pbXBvcnQgcmFuZG9tCi1pbXBvcnQgc29ja2V0Ci1pbXBvcnQgc3RydWN0Ci1pbXBvcnQg
dGhyZWFkaW5nCi0KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCi0KLWZyb20gdGVz
dCBpbXBvcnQgY2xpZW50X2Zvcl90ZXN0aW5nCi0KLQotX0NPTlRST0xfQ0hBTk5FTF9JRCA9IDAK
LV9ERUZBVUxUX0NIQU5ORUxfSUQgPSAxCi0KLV9NVVhfT1BDT0RFX0FERF9DSEFOTkVMX1JFUVVF
U1QgPSAwCi1fTVVYX09QQ09ERV9BRERfQ0hBTk5FTF9SRVNQT05TRSA9IDEKLV9NVVhfT1BDT0RF
X0ZMT1dfQ09OVFJPTCA9IDIKLV9NVVhfT1BDT0RFX0RST1BfQ0hBTk5FTCA9IDMKLV9NVVhfT1BD
T0RFX05FV19DSEFOTkVMX1NMT1QgPSA0Ci0KLQotY2xhc3MgX0NvbnRyb2xCbG9jazoKLSAgICBk
ZWYgX19pbml0X18oc2VsZiwgb3Bjb2RlKToKLSAgICAgICAgc2VsZi5vcGNvZGUgPSBvcGNvZGUK
LQotCi1kZWYgX3BhcnNlX2hhbmRzaGFrZV9yZXNwb25zZShyZXNwb25zZSk6Ci0gICAgc3RhdHVz
X2xpbmUsIGhlYWRlcl9saW5lcyA9IHJlc3BvbnNlLnNwbGl0KCdcclxuJywgMSkKLQotICAgIHdv
cmRzID0gc3RhdHVzX2xpbmUuc3BsaXQoJyAnKQotICAgIGlmIGxlbih3b3JkcykgPCAzOgotICAg
ICAgICByYWlzZSBWYWx1ZUVycm9yKCdCYWQgU3RhdHVzLUxpbmUgc3ludGF4ICVyJyAlIHN0YXR1
c19saW5lKQotICAgIFt2ZXJzaW9uLCByZXNwb25zZV9jb2RlXSA9IHdvcmRzWzoyXQotICAgIGlm
IHZlcnNpb24gIT0gJ0hUVFAvMS4xJzoKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignQmFkIHJl
c3BvbnNlIHZlcnNpb24gJXInICUgdmVyc2lvbikKLQotICAgIGlmIHJlc3BvbnNlX2NvZGUgIT0g
JzEwMSc6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0JhZCByZXNwb25zZSBjb2RlICVyICcg
JSByZXNwb25zZV9jb2RlKQotICAgIGhlYWRlcnMgPSBlbWFpbC5wYXJzZXIuUGFyc2VyKCkucGFy
c2VzdHIoaGVhZGVyX2xpbmVzKQotICAgIHJldHVybiBoZWFkZXJzCi0KLQotZGVmIF9wYXJzZV9j
aGFubmVsX2lkKGRhdGEsIG9mZnNldD0wKToKLSAgICBsZW5ndGggPSBsZW4oZGF0YSkKLSAgICBy
ZW1haW5pbmcgPSBsZW5ndGggLSBvZmZzZXQKLQotICAgIGlmIHJlbWFpbmluZyA8PSAwOgotICAg
ICAgICByYWlzZSBFeGNlcHRpb24oJ05vIGNoYW5uZWwgaWQgZm91bmQnKQotCi0gICAgY2hhbm5l
bF9pZCA9IG9yZChkYXRhW29mZnNldF0pCi0gICAgY2hhbm5lbF9pZF9sZW5ndGggPSAxCi0gICAg
aWYgY2hhbm5lbF9pZCAmIDB4ZTAgPT0gMHhlMDoKLSAgICAgICAgaWYgcmVtYWluaW5nIDwgNDoK
LSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignSW52YWxpZCBjaGFubmVsIGlkIGZvcm1hdCcp
Ci0gICAgICAgIGNoYW5uZWxfaWQgPSBzdHJ1Y3QudW5wYWNrKCchTCcsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRhdGFbb2Zmc2V0Om9mZnNldCs0XSlbMF0gJiAweDFmZmZm
ZmZmCi0gICAgICAgIGNoYW5uZWxfaWRfbGVuZ3RoID0gNAotICAgIGVsaWYgY2hhbm5lbF9pZCAm
IDB4YzAgPT0gMHhjMDoKLSAgICAgICAgaWYgcmVtYWluaW5nIDwgMzoKLSAgICAgICAgICAgIHJh
aXNlIEV4Y2VwdGlvbignSW52YWxpZCBjaGFubmVsIGlkIGZvcm1hdCcpCi0gICAgICAgIGNoYW5u
ZWxfaWQgPSAoKChjaGFubmVsX2lkICYgMHgxZikgPDwgMTYpICsKLSAgICAgICAgICAgICAgICAg
ICAgICBzdHJ1Y3QudW5wYWNrKCchSCcsIGRhdGFbb2Zmc2V0KzE6b2Zmc2V0KzNdKVswXSkKLSAg
ICAgICAgY2hhbm5lbF9pZF9sZW5ndGggPSAzCi0gICAgZWxpZiBjaGFubmVsX2lkICYgMHg4MCA9
PSAweDgwOgotICAgICAgICBpZiByZW1haW5pbmcgPCAyOgotICAgICAgICAgICAgcmFpc2UgRXhj
ZXB0aW9uKCdJbnZhbGlkIGNoYW5uZWwgaWQgZm9ybWF0JykKLSAgICAgICAgY2hhbm5lbF9pZCA9
IHN0cnVjdC51bnBhY2soJyFIJywgZGF0YVtvZmZzZXQ6b2Zmc2V0KzJdKVswXSAmIDB4M2ZmZgot
ICAgICAgICBjaGFubmVsX2lkX2xlbmd0aCA9IDIKLQotICAgIHJldHVybiBjaGFubmVsX2lkLCBj
aGFubmVsX2lkX2xlbmd0aAotCi0KLWRlZiBfcGFyc2VfbnVtYmVyKGRhdGEsIG9mZnNldD0wKToK
LSAgICBmaXJzdF9ieXRlID0gb3JkKGRhdGFbb2Zmc2V0XSkKLSAgICBpZiAoZmlyc3RfYnl0ZSAm
IDB4ODApICE9IDA6Ci0gICAgICAgIHJhaXNlIEV4Y2VwdGlvbignVGhlIE1TQiBvZiBudW1iZXIg
ZmllbGQgbXVzdCBiZSB1bnNldCcpCi0gICAgZmlyc3RfYnl0ZSA9IGZpcnN0X2J5dGUgJiAweDdm
Ci0gICAgaWYgZmlyc3RfYnl0ZSA9PSAxMjc6Ci0gICAgICAgIGlmIG9mZnNldCArIDkgPiBsZW4o
ZGF0YSk6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0ludmFsaWQgbnVtYmVyJykKLSAg
ICAgICAgcmV0dXJuIHN0cnVjdC51bnBhY2soJyFRJywgZGF0YVtvZmZzZXQrMTpvZmZzZXQrOV0p
WzBdLCA5Ci0gICAgaWYgZmlyc3RfYnl0ZSA9PSAxMjY6Ci0gICAgICAgIGlmIG9mZnNldCArIDMg
PiBsZW4oZGF0YSk6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0ludmFsaWQgbnVtYmVy
JykKLSAgICAgICAgcmV0dXJuIHN0cnVjdC51bnBhY2soJyFIJywgZGF0YVtvZmZzZXQrMTpvZmZz
ZXQrM10pWzBdLCAzCi0gICAgcmV0dXJuIGZpcnN0X2J5dGUsIDEKLQotCi1kZWYgX3BhcnNlX3Np
emVfYW5kX2NvbnRlbnRzKGRhdGEsIG9mZnNldD0wKToKLSAgICBzaXplLCBhZHZhbmNlID0gX3Bh
cnNlX251bWJlcihkYXRhLCBvZmZzZXQpCi0gICAgc3RhcnRfcG9zaXRpb24gPSBvZmZzZXQgKyBh
ZHZhbmNlCi0gICAgZW5kX3Bvc2l0aW9uID0gc3RhcnRfcG9zaXRpb24gKyBzaXplCi0gICAgaWYg
bGVuKGRhdGEpIDwgZW5kX3Bvc2l0aW9uOgotICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0ludmFs
aWQgc2l6ZSBvZiBjb250cm9sIGJsb2NrICglZCA8ICVkKScgJSAoCi0gICAgICAgICAgICAgICAg
bGVuKGRhdGEpLCBlbmRfcG9zaXRpb24pKQotICAgIHJldHVybiBkYXRhW3N0YXJ0X3Bvc2l0aW9u
OmVuZF9wb3NpdGlvbl0sIHNpemUgKyBhZHZhbmNlCi0KLQotZGVmIF9wYXJzZV9jb250cm9sX2Js
b2NrcyhkYXRhKToKLSAgICBibG9ja3MgPSBbXQotICAgIGxlbmd0aCA9IGxlbihkYXRhKQotICAg
IHBvcyA9IDAKLQotICAgIHdoaWxlIHBvcyA8IGxlbmd0aDoKLSAgICAgICAgZmlyc3RfYnl0ZSA9
IG9yZChkYXRhW3Bvc10pCi0gICAgICAgIHBvcyArPSAxCi0gICAgICAgIG9wY29kZSA9IChmaXJz
dF9ieXRlID4+IDUpICYgMHg3Ci0gICAgICAgIGJsb2NrID0gX0NvbnRyb2xCbG9jayhvcGNvZGUp
Ci0KLSAgICAgICAgIyBUT0RPKGJhc2hpKTogU3VwcG9ydCBtb3JlIG9wY29kZQotICAgICAgICBp
ZiBvcGNvZGUgPT0gX01VWF9PUENPREVfQUREX0NIQU5ORUxfUkVTUE9OU0U6Ci0gICAgICAgICAg
ICBibG9jay5lbmNvZGUgPSBmaXJzdF9ieXRlICYgMwotICAgICAgICAgICAgYmxvY2sucmVqZWN0
ZWQgPSAoZmlyc3RfYnl0ZSA+PiA0KSAmIDEKLQotICAgICAgICAgICAgY2hhbm5lbF9pZCwgYWR2
YW5jZSA9IF9wYXJzZV9jaGFubmVsX2lkKGRhdGEsIHBvcykKLSAgICAgICAgICAgIGJsb2NrLmNo
YW5uZWxfaWQgPSBjaGFubmVsX2lkCi0gICAgICAgICAgICBwb3MgKz0gYWR2YW5jZQotCi0gICAg
ICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSwgYWR2YW5jZSA9IF9wYXJzZV9zaXplX2FuZF9jb250
ZW50cyhkYXRhLCBwb3MpCi0gICAgICAgICAgICBibG9jay5lbmNvZGVkX2hhbmRzaGFrZSA9IGVu
Y29kZWRfaGFuZHNoYWtlCi0gICAgICAgICAgICBwb3MgKz0gYWR2YW5jZQotICAgICAgICAgICAg
YmxvY2tzLmFwcGVuZChibG9jaykKLSAgICAgICAgZWxpZiBvcGNvZGUgPT0gX01VWF9PUENPREVf
RFJPUF9DSEFOTkVMOgotICAgICAgICAgICAgYmxvY2subXV4X2Vycm9yID0gKGZpcnN0X2J5dGUg
Pj4gNCkgJiAxCi0KLSAgICAgICAgICAgIGNoYW5uZWxfaWQsIGFkdmFuY2UgPSBfcGFyc2VfY2hh
bm5lbF9pZChkYXRhLCBwb3MpCi0gICAgICAgICAgICBibG9jay5jaGFubmVsX2lkID0gY2hhbm5l
bF9pZAotICAgICAgICAgICAgcG9zICs9IGFkdmFuY2UKLQotICAgICAgICAgICAgcmVhc29uLCBh
ZHZhbmNlID0gX3BhcnNlX3NpemVfYW5kX2NvbnRlbnRzKGRhdGEsIHBvcykKLSAgICAgICAgICAg
IGlmIGxlbihyZWFzb24pID09IDA6Ci0gICAgICAgICAgICAgICAgYmxvY2suZHJvcF9jb2RlID0g
Tm9uZQotICAgICAgICAgICAgICAgIGJsb2NrLmRyb3BfbWVzc2FnZSA9ICcnCi0gICAgICAgICAg
ICBlbGlmIGxlbihyZWFzb24pID49IDI6Ci0gICAgICAgICAgICAgICAgYmxvY2suZHJvcF9jb2Rl
ID0gc3RydWN0LnVucGFjaygnIUgnLCByZWFzb25bOjJdKVswXQotICAgICAgICAgICAgICAgIGJs
b2NrLmRyb3BfbWVzc2FnZSA9IHJlYXNvblsyOl0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdJbnZhbGlkIERyb3BDaGFubmVsJykKLSAgICAgICAg
ICAgIHBvcyArPSBhZHZhbmNlCi0gICAgICAgICAgICBibG9ja3MuYXBwZW5kKGJsb2NrKQotICAg
ICAgICBlbGlmIG9wY29kZSA9PSBfTVVYX09QQ09ERV9GTE9XX0NPTlRST0w6Ci0gICAgICAgICAg
ICBjaGFubmVsX2lkLCBhZHZhbmNlID0gX3BhcnNlX2NoYW5uZWxfaWQoZGF0YSwgcG9zKQotICAg
ICAgICAgICAgYmxvY2suY2hhbm5lbF9pZCA9IGNoYW5uZWxfaWQKLSAgICAgICAgICAgIHBvcyAr
PSBhZHZhbmNlCi0gICAgICAgICAgICBzZW5kX3F1b3RhLCBhZHZhbmNlID0gX3BhcnNlX251bWJl
cihkYXRhLCBwb3MpCi0gICAgICAgICAgICBibG9jay5zZW5kX3F1b3RhID0gc2VuZF9xdW90YQot
ICAgICAgICAgICAgcG9zICs9IGFkdmFuY2UKLSAgICAgICAgICAgIGJsb2Nrcy5hcHBlbmQoYmxv
Y2spCi0gICAgICAgIGVsaWYgb3Bjb2RlID09IF9NVVhfT1BDT0RFX05FV19DSEFOTkVMX1NMT1Q6
Ci0gICAgICAgICAgICBmYWxsYmFjayA9IGZpcnN0X2J5dGUgJiAxCi0gICAgICAgICAgICBzbG90
cywgYWR2YW5jZSA9IF9wYXJzZV9udW1iZXIoZGF0YSwgcG9zKQotICAgICAgICAgICAgcG9zICs9
IGFkdmFuY2UKLSAgICAgICAgICAgIHNlbmRfcXVvdGEsIGFkdmFuY2UgPSBfcGFyc2VfbnVtYmVy
KGRhdGEsIHBvcykKLSAgICAgICAgICAgIHBvcyArPSBhZHZhbmNlCi0gICAgICAgICAgICBpZiBm
YWxsYmFjayA9PSAxIGFuZCAoc2xvdHMgIT0gMCBvciBzZW5kX3F1b3RhICE9IDApOgotICAgICAg
ICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignc2xvdHMgYW5kIHNlbmRfcXVvdGEgbXVzdCBiZSB6
ZXJvIGlmIEYgYml0ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzIHNldCcp
Ci0gICAgICAgICAgICBibG9jay5mYWxsYmFjayA9IGZhbGxiYWNrCi0gICAgICAgICAgICBibG9j
ay5zbG90cyA9IHNsb3RzCi0gICAgICAgICAgICBibG9jay5zZW5kX3F1b3RhID0gc2VuZF9xdW90
YQotICAgICAgICAgICAgYmxvY2tzLmFwcGVuZChibG9jaykKLSAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnVW5zdXBwb3J0ZWQgbXV4
IG9wY29kZSAlZCByZWNlaXZlZCcgJSBvcGNvZGUpCi0KLSAgICByZXR1cm4gYmxvY2tzCi0KLQot
ZGVmIF9lbmNvZGVfY2hhbm5lbF9pZChjaGFubmVsX2lkKToKLSAgICBpZiBjaGFubmVsX2lkIDwg
MDoKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignQ2hhbm5lbCBpZCAlZCBtdXN0IG5vdCBiZSBu
ZWdhdGl2ZScgJSBjaGFubmVsX2lkKQotCi0gICAgaWYgY2hhbm5lbF9pZCA8IDIgKiogNzoKLSAg
ICAgICAgcmV0dXJuIGNocihjaGFubmVsX2lkKQotICAgIGlmIGNoYW5uZWxfaWQgPCAyICoqIDE0
OgotICAgICAgICByZXR1cm4gc3RydWN0LnBhY2soJyFIJywgMHg4MDAwICsgY2hhbm5lbF9pZCkK
LSAgICBpZiBjaGFubmVsX2lkIDwgMiAqKiAyMToKLSAgICAgICAgZmlyc3QgPSBjaHIoMHhjMCAr
IChjaGFubmVsX2lkID4+IDE2KSkKLSAgICAgICAgcmV0dXJuIGZpcnN0ICsgc3RydWN0LnBhY2so
JyFIJywgY2hhbm5lbF9pZCAmIDB4ZmZmZikKLSAgICBpZiBjaGFubmVsX2lkIDwgMiAqKiAyOToK
LSAgICAgICAgcmV0dXJuIHN0cnVjdC5wYWNrKCchTCcsIDB4ZTAwMDAwMDAgKyBjaGFubmVsX2lk
KQotCi0gICAgcmFpc2UgVmFsdWVFcnJvcignQ2hhbm5lbCBpZCAlZCBpcyB0b28gbGFyZ2UnICUg
Y2hhbm5lbF9pZCkKLQotCi1kZWYgX2VuY29kZV9udW1iZXIobnVtYmVyKToKLSAgICBpZiBudW1i
ZXIgPD0gMTI1OgotICAgICAgICByZXR1cm4gY2hyKG51bWJlcikKLSAgICBlbGlmIG51bWJlciA8
ICgxIDw8IDE2KToKLSAgICAgICAgcmV0dXJuIGNocigweDdlKSArIHN0cnVjdC5wYWNrKCchSCcs
IG51bWJlcikKLSAgICBlbGlmIG51bWJlciA8ICgxIDw8IDYzKToKLSAgICAgICAgcmV0dXJuIGNo
cigweDdmKSArIHN0cnVjdC5wYWNrKCchUScsIG51bWJlcikKLSAgICBlbHNlOgotICAgICAgICBy
YWlzZSBFeGNlcHRpb24oJ0ludmFsaWQgbnVtYmVyJykKLQotCi1kZWYgX2NyZWF0ZV9hZGRfY2hh
bm5lbF9yZXF1ZXN0KGNoYW5uZWxfaWQsIGVuY29kZWRfaGFuZHNoYWtlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlbmNvZGluZz0wKToKLSAgICBsZW5ndGggPSBsZW4oZW5jb2Rl
ZF9oYW5kc2hha2UpCi0gICAgaGFuZHNoYWtlX2xlbmd0aCA9IF9lbmNvZGVfbnVtYmVyKGxlbmd0
aCkKLQotICAgIGZpcnN0X2J5dGUgPSAoX01VWF9PUENPREVfQUREX0NIQU5ORUxfUkVRVUVTVCA8
PCA1KSB8IGVuY29kaW5nCi0gICAgcmV0dXJuIChjaHIoZmlyc3RfYnl0ZSkgKyBfZW5jb2RlX2No
YW5uZWxfaWQoY2hhbm5lbF9pZCkgKwotICAgICAgICAgICAgaGFuZHNoYWtlX2xlbmd0aCArIGVu
Y29kZWRfaGFuZHNoYWtlKQotCi0KLWRlZiBfY3JlYXRlX2Zsb3dfY29udHJvbChjaGFubmVsX2lk
LCByZXBsZW5pc2hlZF9xdW90YSk6Ci0gICAgZmlyc3RfYnl0ZSA9IChfTVVYX09QQ09ERV9GTE9X
X0NPTlRST0wgPDwgNSkKLSAgICByZXR1cm4gKGNocihmaXJzdF9ieXRlKSArIF9lbmNvZGVfY2hh
bm5lbF9pZChjaGFubmVsX2lkKSArCi0gICAgICAgICAgICBfZW5jb2RlX251bWJlcihyZXBsZW5p
c2hlZF9xdW90YSkpCi0KLQotY2xhc3MgX011eFJlYWRlclRocmVhZCh0aHJlYWRpbmcuVGhyZWFk
KToKLSAgICAiIiJNdXggcmVhZGVyIHRocmVhZC4KLQotICAgIFJlYWRzIGZyYW1lcyBhbmQgcGFz
c2VzIHRoZW0gdG8gdGhlIG11eCBjbGllbnQuIFRoaXMgdGhyZWFkIGFjY2Vzc2VzCi0gICAgcHJp
dmF0ZSBmdW5jdGlvbnMvdmFyaWFibGVzIG9mIHRoZSBtdXggY2xpZW50LgotICAgICIiIgotCi0g
ICAgZGVmIF9faW5pdF9fKHNlbGYsIG11eCk6Ci0gICAgICAgIHRocmVhZGluZy5UaHJlYWQuX19p
bml0X18oc2VsZikKLSAgICAgICAgc2VsZi5zZXREYWVtb24oVHJ1ZSkKLSAgICAgICAgc2VsZi5f
bXV4ID0gbXV4Ci0gICAgICAgIHNlbGYuX3N0b3BfcmVxdWVzdGVkID0gRmFsc2UKLQotICAgIGRl
ZiBfcmVjZWl2ZV9tZXNzYWdlKHNlbGYpOgotICAgICAgICBmaXJzdF9vcGNvZGUgPSBOb25lCi0g
ICAgICAgIHBlbmRpbmdfcGF5bG9hZCA9IFtdCi0gICAgICAgIHdoaWxlIG5vdCBzZWxmLl9zdG9w
X3JlcXVlc3RlZDoKLSAgICAgICAgICAgIGZpbiwgcnN2MSwgcnN2MiwgcnN2Mywgb3Bjb2RlLCBw
YXlsb2FkX2xlbmd0aCA9ICgKLSAgICAgICAgICAgICAgICBjbGllbnRfZm9yX3Rlc3RpbmcucmVh
ZF9mcmFtZV9oZWFkZXIoc2VsZi5fbXV4Ll9zb2NrZXQpKQotCi0gICAgICAgICAgICBpZiBub3Qg
Zmlyc3Rfb3Bjb2RlOgotICAgICAgICAgICAgICAgIGlmIG9wY29kZSA9PSBjbGllbnRfZm9yX3Rl
c3RpbmcuT1BDT0RFX1RFWFQ6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbign
UmVjZWl2ZWQgYSB0ZXh0IG1lc3NhZ2Ugb24gcGh5c2ljYWwgJwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ2Nvbm5lY3Rpb24nKQotICAgICAgICAgICAgICAgIGlmIG9wY29k
ZSA9PSBjbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX0NPTlRJTlVBVElPTjoKLSAgICAgICAgICAg
ICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdSZWNlaXZlZCBhbiBpbnRlcm1lZGlhdGUgZnJhbWUg
YnV0ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmcmFnbWVudGF0aW9u
IHdhcyBub3Qgc3RhcnRlZCcpCi0gICAgICAgICAgICAgICAgaWYgKG9wY29kZSA9PSBjbGllbnRf
Zm9yX3Rlc3RpbmcuT1BDT0RFX0JJTkFSWSBvcgotICAgICAgICAgICAgICAgICAgICBvcGNvZGUg
PT0gY2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9QT05HIG9yCi0gICAgICAgICAgICAgICAgICAg
IG9wY29kZSA9PSBjbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1BPTkcgb3IKLSAgICAgICAgICAg
ICAgICAgICAgb3Bjb2RlID09IGNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfQ0xPU0UpOgotICAg
ICAgICAgICAgICAgICAgICBmaXJzdF9vcGNvZGUgPSBvcGNvZGUKLSAgICAgICAgICAgICAgICBl
bHNlOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1JlY2VpdmVkIGFuIHVu
ZGVmaW5lZCBvcGNvZGUgZnJhbWU6ICVkJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcGNvZGUpCi0KLSAgICAgICAgICAgIGVsaWYgb3Bjb2RlICE9IGNsaWVudF9mb3Jf
dGVzdGluZy5PUENPREVfQ09OVElOVUFUSU9OOgotICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2Vw
dGlvbignUmVjZWl2ZWQgYSBuZXcgb3Bjb2RlIGJlZm9yZSAnCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICd0ZXJtaW5hdGluZyBmcmFnbWVudGF0aW9uJykKLQotICAgICAgICAgICAg
cGF5bG9hZCA9IGNsaWVudF9mb3JfdGVzdGluZy5yZWNlaXZlX2J5dGVzKAotICAgICAgICAgICAg
ICAgIHNlbGYuX211eC5fc29ja2V0LCBwYXlsb2FkX2xlbmd0aCkKLQotICAgICAgICAgICAgaWYg
c2VsZi5fbXV4Ll9pbmNvbWluZ19mcmFtZV9maWx0ZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAg
ICAgICAgcGF5bG9hZCA9IHNlbGYuX211eC5faW5jb21pbmdfZnJhbWVfZmlsdGVyLmZpbHRlcihw
YXlsb2FkKQotCi0gICAgICAgICAgICBwZW5kaW5nX3BheWxvYWQuYXBwZW5kKHBheWxvYWQpCi0K
LSAgICAgICAgICAgIGlmIGZpbjoKLSAgICAgICAgICAgICAgICBicmVhawotCi0gICAgICAgIGlm
IHNlbGYuX3N0b3BfcmVxdWVzdGVkOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUKLQot
ICAgICAgICBtZXNzYWdlID0gJycuam9pbihwZW5kaW5nX3BheWxvYWQpCi0gICAgICAgIHJldHVy
biBmaXJzdF9vcGNvZGUsIG1lc3NhZ2UKLQotICAgIGRlZiByZXF1ZXN0X3N0b3Aoc2VsZik6Ci0g
ICAgICAgIHNlbGYuX3N0b3BfcmVxdWVzdGVkID0gVHJ1ZQotCi0gICAgZGVmIHJ1bihzZWxmKToK
LSAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2hpbGUgbm90IHNlbGYuX3N0b3BfcmVxdWVzdGVk
OgotICAgICAgICAgICAgICAgICMgb3Bjb2RlIGlzIE9QQ09ERV9CSU5BUlkgb3IgY29udHJvbCBv
cGNvZGVzIHdoZW4gYSBtZXNzYWdlCi0gICAgICAgICAgICAgICAgIyBpcyBzdWNjZXNmdWxseSBy
ZWNlaXZlZC4KLSAgICAgICAgICAgICAgICBvcGNvZGUsIG1lc3NhZ2UgPSBzZWxmLl9yZWNlaXZl
X21lc3NhZ2UoKQotICAgICAgICAgICAgICAgIGlmIG5vdCBvcGNvZGU6Ci0gICAgICAgICAgICAg
ICAgICAgIHJldHVybgotICAgICAgICAgICAgICAgIGlmIG9wY29kZSA9PSBjbGllbnRfZm9yX3Rl
c3RpbmcuT1BDT0RFX0JJTkFSWToKLSAgICAgICAgICAgICAgICAgICAgY2hhbm5lbF9pZCwgYWR2
YW5jZSA9IF9wYXJzZV9jaGFubmVsX2lkKG1lc3NhZ2UpCi0gICAgICAgICAgICAgICAgICAgIHNl
bGYuX211eC5fZGlzcGF0Y2hfZnJhbWUoY2hhbm5lbF9pZCwgbWVzc2FnZVthZHZhbmNlOl0pCi0g
ICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fbXV4Ll9wcm9j
ZXNzX2NvbnRyb2xfbWVzc2FnZShvcGNvZGUsIG1lc3NhZ2UpCi0gICAgICAgIGZpbmFsbHk6Ci0g
ICAgICAgICAgICBzZWxmLl9tdXguX25vdGlmeV9yZWFkZXJfZG9uZSgpCi0KLQotY2xhc3MgX0lu
bmVyRnJhbWUob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZmluLCByc3YxLCByc3Yy
LCByc3YzLCBvcGNvZGUsIHBheWxvYWQpOgotICAgICAgICBzZWxmLmZpbiA9IGZpbgotICAgICAg
ICBzZWxmLnJzdjEgPSByc3YxCi0gICAgICAgIHNlbGYucnN2MiA9IHJzdjIKLSAgICAgICAgc2Vs
Zi5yc3YzID0gcnN2MwotICAgICAgICBzZWxmLm9wY29kZSA9IG9wY29kZQotICAgICAgICBzZWxm
LnBheWxvYWQgPSBwYXlsb2FkCi0KLQotY2xhc3MgX0xvZ2ljYWxDaGFubmVsRGF0YShvYmplY3Qp
OgotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5xdWV1ZSA9IFF1ZXVlLlF1
ZXVlKCkKLSAgICAgICAgc2VsZi5zZW5kX3F1b3RhID0gMAotICAgICAgICBzZWxmLnJlY2VpdmVf
cXVvdGEgPSAwCi0KLQotY2xhc3MgTXV4Q2xpZW50KG9iamVjdCk6Ci0gICAgIiIiV2ViU29ja2V0
IG11eCBjbGllbnQuCi0KLSAgICBOb3RlIHRoYXQgdGhpcyBjbGFzcyBpcyBOT1QgdGhyZWFkLXNh
ZmUuIERvIG5vdCBhY2Nlc3MgYW4gaW5zdGFuY2Ugb2YgdGhpcwotICAgIGNsYXNzIGZyb20gbXVs
dGlwbGUgdGhyZWFkcyBhdCBhIHNhbWUgdGltZS4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBvcHRpb25zKToKLSAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3Nf
bG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKLSAgICAgICAg
c2VsZi5fb3B0aW9ucy5lbmFibGVfbXV4KCkKLSAgICAgICAgc2VsZi5fc3RyZWFtID0gTm9uZQot
ICAgICAgICBzZWxmLl9zb2NrZXQgPSBOb25lCi0gICAgICAgIHNlbGYuX2hhbmRzaGFrZSA9IGNs
aWVudF9mb3JfdGVzdGluZy5XZWJTb2NrZXRIYW5kc2hha2Uoc2VsZi5fb3B0aW9ucykKLSAgICAg
ICAgc2VsZi5faW5jb21pbmdfZnJhbWVfZmlsdGVyID0gTm9uZQotICAgICAgICBzZWxmLl9vdXRn
b2luZ19mcmFtZV9maWx0ZXIgPSBOb25lCi0KLSAgICAgICAgc2VsZi5faXNfYWN0aXZlID0gRmFs
c2UKLSAgICAgICAgc2VsZi5fcmVhZF90aHJlYWQgPSBOb25lCi0gICAgICAgIHNlbGYuX2NvbnRy
b2xfYmxvY2tzX2NvbmRpdGlvbiA9IHRocmVhZGluZy5Db25kaXRpb24oKQotICAgICAgICBzZWxm
Ll9jb250cm9sX2Jsb2NrcyA9IFtdCi0gICAgICAgIHNlbGYuX2NoYW5uZWxfc2xvdHMgPSBjb2xs
ZWN0aW9ucy5kZXF1ZSgpCi0gICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9u
ID0gdGhyZWFkaW5nLkNvbmRpdGlvbigpOwotICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxz
ID0ge30KLSAgICAgICAgc2VsZi5fdGltZW91dCA9IDIKLSAgICAgICAgc2VsZi5fcGh5c2ljYWxf
Y29ubmVjdGlvbl9jbG9zZV9ldmVudCA9IE5vbmUKLSAgICAgICAgc2VsZi5fcGh5c2ljYWxfY29u
bmVjdGlvbl9jbG9zZV9tZXNzYWdlID0gTm9uZQotCi0gICAgZGVmIF9wYXJzZV9pbm5lcl9mcmFt
ZShzZWxmLCBkYXRhKToKLSAgICAgICAgaWYgbGVuKGRhdGEpID09IDA6Ci0gICAgICAgICAgICBy
YWlzZSBFeGNlcHRpb24oJ0ludmFsaWQgZW5jYXBzdWxhdGVkIGZyYW1lIHJlY2VpdmVkJykKLQot
ICAgICAgICBmaXJzdF9ieXRlID0gb3JkKGRhdGFbMF0pCi0gICAgICAgIGZpbiA9IChmaXJzdF9i
eXRlIDw8IDcpICYgMQotICAgICAgICByc3YxID0gKGZpcnN0X2J5dGUgPDwgNikgJiAxCi0gICAg
ICAgIHJzdjIgPSAoZmlyc3RfYnl0ZSA8PCA1KSAmIDEKLSAgICAgICAgcnN2MyA9IChmaXJzdF9i
eXRlIDw8IDQpICYgMQotICAgICAgICBvcGNvZGUgPSBmaXJzdF9ieXRlICYgMHhmCi0KLSAgICAg
ICAgaWYgc2VsZi5fb3V0Z29pbmdfZnJhbWVfZmlsdGVyOgotICAgICAgICAgICAgcGF5bG9hZCA9
IHNlbGYuX291dGdvaW5nX2ZyYW1lX2ZpbHRlci5maWx0ZXIoCi0gICAgICAgICAgICAgICAgZGF0
YVsxOl0pCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwYXlsb2FkID0gZGF0YVsxOl0KLQot
ICAgICAgICByZXR1cm4gX0lubmVyRnJhbWUoZmluLCByc3YxLCByc3YyLCByc3YzLCBvcGNvZGUs
IHBheWxvYWQpCi0KLSAgICBkZWYgX3Byb2Nlc3NfbXV4X2NvbnRyb2xfYmxvY2tzKHNlbGYpOgot
ICAgICAgICBmb3IgYmxvY2sgaW4gc2VsZi5fY29udHJvbF9ibG9ja3M6Ci0gICAgICAgICAgICBp
ZiBibG9jay5vcGNvZGUgPT0gX01VWF9PUENPREVfQUREX0NIQU5ORUxfUkVTUE9OU0U6Ci0gICAg
ICAgICAgICAgICAgIyBBZGRDaGFubmVsUmVzcG9uc2Ugd2lsbCBiZSBoYW5kbGVkIGluIGFkZF9j
aGFubmVsKCkuCi0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGVsaWYgYmxv
Y2sub3Bjb2RlID09IF9NVVhfT1BDT0RFX0ZMT1dfQ09OVFJPTDoKLSAgICAgICAgICAgICAgICB0
cnk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9u
LmFjcXVpcmUoKQotICAgICAgICAgICAgICAgICAgICBpZiBub3QgYmxvY2suY2hhbm5lbF9pZCBp
biBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ug
RXhjZXB0aW9uKCdJbnZhbGlkIGZsb3cgY29udHJvbCByZWNlaXZlZCBmb3IgJwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjaGFubmVsIGlkICVkJyAlIGJsb2NrLmNo
YW5uZWxfaWQpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNbYmxv
Y2suY2hhbm5lbF9pZF0uc2VuZF9xdW90YSArPSAoCi0gICAgICAgICAgICAgICAgICAgICAgICBi
bG9jay5zZW5kX3F1b3RhKQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5u
ZWxzX2NvbmRpdGlvbi5ub3RpZnkoKQotICAgICAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAg
ICAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLnJlbGVhc2UoKQot
ICAgICAgICAgICAgZWxpZiBibG9jay5vcGNvZGUgPT0gX01VWF9PUENPREVfTkVXX0NIQU5ORUxf
U0xPVDoKLSAgICAgICAgICAgICAgICBzZWxmLl9jaGFubmVsX3Nsb3RzLmV4dGVuZChbYmxvY2su
c2VuZF9xdW90YV0gKiBibG9jay5zbG90cykKLQotICAgIGRlZiBfZGlzcGF0Y2hfZnJhbWUoc2Vs
ZiwgY2hhbm5lbF9pZCwgcGF5bG9hZCk6Ci0gICAgICAgIGlmIGNoYW5uZWxfaWQgPT0gX0NPTlRS
T0xfQ0hBTk5FTF9JRDoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLl9j
b250cm9sX2Jsb2Nrc19jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgICAgICAgICAgc2VsZi5f
Y29udHJvbF9ibG9ja3MgKz0gX3BhcnNlX2NvbnRyb2xfYmxvY2tzKHBheWxvYWQpCi0gICAgICAg
ICAgICAgICAgc2VsZi5fcHJvY2Vzc19tdXhfY29udHJvbF9ibG9ja3MoKQotICAgICAgICAgICAg
ICAgIHNlbGYuX2NvbnRyb2xfYmxvY2tzX2NvbmRpdGlvbi5ub3RpZnkoKQotICAgICAgICAgICAg
ZmluYWxseToKLSAgICAgICAgICAgICAgICBzZWxmLl9jb250cm9sX2Jsb2Nrc19jb25kaXRpb24u
cmVsZWFzZSgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAg
ICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgICAg
ICAgICAgaWYgbm90IGNoYW5uZWxfaWQgaW4gc2VsZi5fbG9naWNhbF9jaGFubmVsczoKLSAgICAg
ICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdSZWNlaXZlZCBsb2dpY2FsIGZyYW1lIG9u
IGNoYW5uZWwgaWQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyVkLCB3
aGljaCBpcyBub3QgZXN0YWJsaXNoZWQnICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNoYW5uZWxfaWQpCi0KLSAgICAgICAgICAgICAgICBpbm5lcl9mcmFtZSA9IHNlbGYu
X3BhcnNlX2lubmVyX2ZyYW1lKHBheWxvYWQpCi0gICAgICAgICAgICAgICAgc2VsZi5fbG9naWNh
bF9jaGFubmVsc1tjaGFubmVsX2lkXS5yZWNlaXZlX3F1b3RhIC09ICgKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGxlbihpbm5lcl9mcmFtZS5wYXlsb2FkKSkKLSAgICAgICAgICAgICAgICBpZiBz
ZWxmLl9sb2dpY2FsX2NoYW5uZWxzW2NoYW5uZWxfaWRdLnJlY2VpdmVfcXVvdGEgPCAwOgotICAg
ICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1RoZSBzZXJ2ZXIgdmlvbGF0ZXMgcXVv
dGEgb24gJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NoYW5uZWwgaWQg
JWQnICUgY2hhbm5lbF9pZCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAg
c2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24ucmVsZWFzZSgpCi0gICAgICAgICAgICBz
ZWxmLl9sb2dpY2FsX2NoYW5uZWxzW2NoYW5uZWxfaWRdLnF1ZXVlLnB1dChpbm5lcl9mcmFtZSkK
LQotICAgIGRlZiBfcHJvY2Vzc19jb250cm9sX21lc3NhZ2Uoc2VsZiwgb3Bjb2RlLCBtZXNzYWdl
KToKLSAgICAgICAgIyBQaW5nL1BvbmcgYXJlIG5vdCBzdXBwb3J0ZWQuCi0gICAgICAgIGlmIG9w
Y29kZSA9PSBjbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX0NMT1NFOgotICAgICAgICAgICAgc2Vs
Zi5fcGh5c2ljYWxfY29ubmVjdGlvbl9jbG9zZV9tZXNzYWdlID0gbWVzc2FnZQotICAgICAgICAg
ICAgaWYgc2VsZi5faXNfYWN0aXZlOgotICAgICAgICAgICAgICAgIHNlbGYuX3N0cmVhbS5zZW5k
X2Nsb3NlKAotICAgICAgICAgICAgICAgICAgICBjb2RlPWNsaWVudF9mb3JfdGVzdGluZy5TVEFU
VVNfTk9STUFMX0NMT1NVUkUsIHJlYXNvbj0nJykKLSAgICAgICAgICAgICAgICBzZWxmLl9yZWFk
X3RocmVhZC5yZXF1ZXN0X3N0b3AoKQotCi0gICAgICAgICAgICBpZiBzZWxmLl9waHlzaWNhbF9j
b25uZWN0aW9uX2Nsb3NlX2V2ZW50OgotICAgICAgICAgICAgICAgIHNlbGYuX3BoeXNpY2FsX2Nv
bm5lY3Rpb25fY2xvc2VfZXZlbnQuc2V0KCkKLQotICAgIGRlZiBfbm90aWZ5X3JlYWRlcl9kb25l
KHNlbGYpOgotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1JlYWQgdGhyZWFkIHRlcm1pbmF0
ZWQuJykKLSAgICAgICAgc2VsZi5jbG9zZV9zb2NrZXQoKQotCi0gICAgZGVmIF9hc3NlcnRfY2hh
bm5lbF9zbG90X2F2YWlsYWJsZShzZWxmKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2Vs
Zi5fY29udHJvbF9ibG9ja3NfY29uZGl0aW9uLmFjcXVpcmUoKQotICAgICAgICAgICAgaWYgbGVu
KHNlbGYuX2NoYW5uZWxfc2xvdHMpID09IDA6Ci0gICAgICAgICAgICAgICAgIyBXYWl0IG9uY2UK
LSAgICAgICAgICAgICAgICBzZWxmLl9jb250cm9sX2Jsb2Nrc19jb25kaXRpb24ud2FpdCh0aW1l
b3V0PXNlbGYuX3RpbWVvdXQpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9j
b250cm9sX2Jsb2Nrc19jb25kaXRpb24ucmVsZWFzZSgpCi0KLSAgICAgICAgaWYgbGVuKHNlbGYu
X2NoYW5uZWxfc2xvdHMpID09IDA6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0ZhaWxl
ZCB0byByZWNlaXZlIE5ld0NoYW5uZWxTbG90JykKLQotICAgIGRlZiBfYXNzZXJ0X3NlbmRfcXVv
dGFfYXZhaWxhYmxlKHNlbGYsIGNoYW5uZWxfaWQpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5hY3F1aXJlKCkKLSAgICAgICAgICAg
IGlmIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNbY2hhbm5lbF9pZF0uc2VuZF9xdW90YSA9PSAwOgot
ICAgICAgICAgICAgICAgICMgV2FpdCBvbmNlCi0gICAgICAgICAgICAgICAgc2VsZi5fbG9naWNh
bF9jaGFubmVsc19jb25kaXRpb24ud2FpdCh0aW1lb3V0PXNlbGYuX3RpbWVvdXQpCi0gICAgICAg
IGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5y
ZWxlYXNlKCkKLQotICAgICAgICBpZiBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzW2NoYW5uZWxfaWRd
LnNlbmRfcXVvdGEgPT0gMDoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignRmFpbGVkIHRv
IHJlY2VpdmUgRmxvd0NvbnRyb2wgZm9yIGNoYW5uZWwgaWQgJWQnICUKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjaGFubmVsX2lkKQotCi0gICAgZGVmIGNvbm5lY3Qoc2VsZik6Ci0gICAg
ICAgIHNlbGYuX3NvY2tldCA9IGNsaWVudF9mb3JfdGVzdGluZy5jb25uZWN0X3NvY2tldF93aXRo
X3JldHJ5KAotICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuc2VydmVyX2hvc3QsCi0gICAg
ICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfcG9ydCwKLSAgICAgICAgICAgICAgICBz
ZWxmLl9vcHRpb25zLnNvY2tldF90aW1lb3V0LAotICAgICAgICAgICAgICAgIHNlbGYuX29wdGlv
bnMudXNlX3RscykKLQotICAgICAgICBzZWxmLl9oYW5kc2hha2UuaGFuZHNoYWtlKHNlbGYuX3Nv
Y2tldCkKLSAgICAgICAgc2VsZi5fc3RyZWFtID0gY2xpZW50X2Zvcl90ZXN0aW5nLldlYlNvY2tl
dFN0cmVhbSgKLSAgICAgICAgICAgIHNlbGYuX3NvY2tldCwgc2VsZi5faGFuZHNoYWtlKQotCi0g
ICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNbX0RFRkFVTFRfQ0hBTk5FTF9JRF0gPSBfTG9n
aWNhbENoYW5uZWxEYXRhKCkKLQotICAgICAgICBzZWxmLl9yZWFkX3RocmVhZCA9IF9NdXhSZWFk
ZXJUaHJlYWQoc2VsZikKLSAgICAgICAgc2VsZi5fcmVhZF90aHJlYWQuc3RhcnQoKQotCi0gICAg
ICAgIHNlbGYuX2Fzc2VydF9jaGFubmVsX3Nsb3RfYXZhaWxhYmxlKCkKLSAgICAgICAgc2VsZi5f
YXNzZXJ0X3NlbmRfcXVvdGFfYXZhaWxhYmxlKF9ERUZBVUxUX0NIQU5ORUxfSUQpCi0KLSAgICAg
ICAgc2VsZi5faXNfYWN0aXZlID0gVHJ1ZQotICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnQ29u
bmVjdGlvbiBlc3RhYmxpc2hlZCcpCi0KLSAgICBkZWYgYWRkX2NoYW5uZWwoc2VsZiwgY2hhbm5l
bF9pZCwgb3B0aW9ucyk6Ci0gICAgICAgIGlmIG5vdCBzZWxmLl9pc19hY3RpdmU6Ci0gICAgICAg
ICAgICByYWlzZSBFeGNlcHRpb24oJ011eCBjbGllbnQgaXMgbm90IGFjdGl2ZScpCi0KLSAgICAg
ICAgaWYgY2hhbm5lbF9pZCBpbiBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzOgotICAgICAgICAgICAg
cmFpc2UgRXhjZXB0aW9uKCdDaGFubmVsIGlkICVkIGFscmVhZHkgZXhpc3RzJyAlIGNoYW5uZWxf
aWQpCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VuZF9xdW90YSA9IHNlbGYuX2NoYW5u
ZWxfc2xvdHMucG9wbGVmdCgpCi0gICAgICAgIGV4Y2VwdCBJbmRleEVycm9yLCBlOgotICAgICAg
ICAgICAgcmFpc2UgRXhjZXB0aW9uKCdObyBjaGFubmVsIHNsb3RzOiAlcicgJSBlKQotCi0gICAg
ICAgICMgQ3JlYXRlIEFkZENoYW5uZWwgcmVxdWVzdAotICAgICAgICByZXF1ZXN0X2xpbmUgPSAn
R0VUICVzIEhUVFAvMS4xXHJcbicgJSBvcHRpb25zLnJlc291cmNlCi0gICAgICAgIGZpZWxkcyA9
IFtdCi0gICAgICAgIGlmIG9wdGlvbnMuc2VydmVyX3BvcnQgPT0gY2xpZW50X2Zvcl90ZXN0aW5n
LkRFRkFVTFRfUE9SVDoKLSAgICAgICAgICAgIGZpZWxkcy5hcHBlbmQoJ0hvc3Q6ICVzXHJcbicg
JSBvcHRpb25zLnNlcnZlcl9ob3N0Lmxvd2VyKCkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICBmaWVsZHMuYXBwZW5kKCdIb3N0OiAlczolZFxyXG4nICUgKG9wdGlvbnMuc2VydmVyX2hvc3Qu
bG93ZXIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b3B0aW9ucy5zZXJ2ZXJfcG9ydCkpCi0gICAgICAgIGZpZWxkcy5hcHBlbmQoJ09yaWdpbjogJXNc
clxuJyAlIG9wdGlvbnMub3JpZ2luLmxvd2VyKCkpCi0gICAgICAgIGZpZWxkcy5hcHBlbmQoJ0Nv
bm5lY3Rpb246IFVwZ3JhZGVcclxuJykKLQotICAgICAgICBpZiBsZW4ob3B0aW9ucy5leHRlbnNp
b25zKSA+IDA6Ci0gICAgICAgICAgICBmaWVsZHMuYXBwZW5kKCdTZWMtV2ViU29ja2V0LUV4dGVu
c2lvbnM6ICVzXHJcbicgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAnLCAnLmpvaW4ob3B0
aW9ucy5leHRlbnNpb25zKSkKLQotICAgICAgICBoYW5kc2hha2UgPSByZXF1ZXN0X2xpbmUgKyAn
Jy5qb2luKGZpZWxkcykgKyAnXHJcbicKLSAgICAgICAgYWRkX2NoYW5uZWxfcmVxdWVzdCA9IF9j
cmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdCgKLSAgICAgICAgICAgIGNoYW5uZWxfaWQsIGhhbmRz
aGFrZSkKLSAgICAgICAgcGF5bG9hZCA9IF9lbmNvZGVfY2hhbm5lbF9pZChfQ09OVFJPTF9DSEFO
TkVMX0lEKSArIGFkZF9jaGFubmVsX3JlcXVlc3QKLSAgICAgICAgc2VsZi5fc3RyZWFtLnNlbmRf
YmluYXJ5KHBheWxvYWQpCi0KLSAgICAgICAgIyBXYWl0IEFkZENoYW5uZWxSZXNwb25zZQotICAg
ICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1dhaXRpbmcgQWRkQ2hhbm5lbFJlc3BvbnNlIGZvciB0
aGUgcmVxdWVzdC4uLicpCi0gICAgICAgIHJlc3BvbnNlID0gTm9uZQotICAgICAgICB0cnk6Ci0g
ICAgICAgICAgICBzZWxmLl9jb250cm9sX2Jsb2Nrc19jb25kaXRpb24uYWNxdWlyZSgpCi0gICAg
ICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgIGZvciBibG9jayBpbiBzZWxmLl9j
b250cm9sX2Jsb2NrczoKLSAgICAgICAgICAgICAgICAgICAgaWYgYmxvY2sub3Bjb2RlICE9IF9N
VVhfT1BDT0RFX0FERF9DSEFOTkVMX1JFU1BPTlNFOgotICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGludWUKLSAgICAgICAgICAgICAgICAgICAgaWYgYmxvY2suY2hhbm5lbF9pZCA9PSBjaGFu
bmVsX2lkOgotICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBibG9jawotICAgICAg
ICAgICAgICAgICAgICAgICAgc2VsZi5fY29udHJvbF9ibG9ja3MucmVtb3ZlKHJlc3BvbnNlKQot
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBpZiByZXNwb25z
ZToKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBzZWxmLl9jb250
cm9sX2Jsb2Nrc19jb25kaXRpb24ud2FpdChzZWxmLl90aW1lb3V0KQotICAgICAgICAgICAgICAg
IGlmIG5vdCBzZWxmLl9pc19hY3RpdmU6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2Vw
dGlvbignQWRkQ2hhbm5lbFJlcXVlc3QgdGltZWQgb3V0JykKLSAgICAgICAgZmluYWxseToKLSAg
ICAgICAgICAgIHNlbGYuX2NvbnRyb2xfYmxvY2tzX2NvbmRpdGlvbi5yZWxlYXNlKCkKLQotICAg
ICAgICAjIFZhbGlkYXRlIEFkZENoYW5uZWxSZXNwb25zZQotICAgICAgICBpZiByZXNwb25zZS5y
ZWplY3RlZDoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignVGhlIHNlcnZlciByZWplY3Rl
ZCBBZGRDaGFubmVsUmVxdWVzdCcpCi0KLSAgICAgICAgZmllbGRzID0gX3BhcnNlX2hhbmRzaGFr
ZV9yZXNwb25zZShyZXNwb25zZS5lbmNvZGVkX2hhbmRzaGFrZSkKLQotICAgICAgICAjIFNob3Vs
ZCB3ZSByZWplY3Qgd2hlbiBVcGdyYWRlLCBDb25uZWN0aW9uLCBvciBTZWMtV2ViU29ja2V0LUFj
Y2VwdAotICAgICAgICAjIGhlYWRlcnMgZXhpc3Q/Ci0KLSAgICAgICAgc2VsZi5fbG9naWNhbF9j
aGFubmVsc19jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5l
bHNbY2hhbm5lbF9pZF0gPSBfTG9naWNhbENoYW5uZWxEYXRhKCkKLSAgICAgICAgc2VsZi5fbG9n
aWNhbF9jaGFubmVsc1tjaGFubmVsX2lkXS5zZW5kX3F1b3RhID0gc2VuZF9xdW90YQotICAgICAg
ICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5yZWxlYXNlKCkKLQotICAgICAgICBz
ZWxmLl9sb2dnZXIuZGVidWcoJ0xvZ2ljYWwgY2hhbm5lbCAlZCBlc3RhYmxpc2hlZCcgJSBjaGFu
bmVsX2lkKQotCi0gICAgZGVmIF9jaGVja19sb2dpY2FsX2NoYW5uZWxfaXNfb3BlbmVkKHNlbGYs
IGNoYW5uZWxfaWQpOgotICAgICAgICBpZiBub3Qgc2VsZi5faXNfYWN0aXZlOgotICAgICAgICAg
ICAgcmFpc2UgRXhjZXB0aW9uKCdNdXggY2xpZW50IGlzIG5vdCBhY3RpdmUnKQotCi0gICAgICAg
IGlmIG5vdCBjaGFubmVsX2lkIGluIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHM6Ci0gICAgICAgICAg
ICByYWlzZSBFeGNlcHRpb24oJ0xvZ2ljYWwgY2hhbm5lbCAlZCBpcyBub3QgZXN0YWJsaXNoZWQu
JykKLQotICAgIGRlZiBkcm9wX2NoYW5uZWwoc2VsZiwgY2hhbm5lbF9pZCk6Ci0gICAgICAgICMg
VE9ETyhiYXNoaSk6IEltcGxlbWVudAotICAgICAgICBwYXNzCi0KLSAgICBkZWYgc2VuZF9mbG93
X2NvbnRyb2woc2VsZiwgY2hhbm5lbF9pZCwgcmVwbGVuaXNoZWRfcXVvdGEpOgotICAgICAgICBz
ZWxmLl9jaGVja19sb2dpY2FsX2NoYW5uZWxfaXNfb3BlbmVkKGNoYW5uZWxfaWQpCi0gICAgICAg
IGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250cm9sKGNoYW5uZWxfaWQsIHJlcGxlbmlz
aGVkX3F1b3RhKQotICAgICAgICBwYXlsb2FkID0gX2VuY29kZV9jaGFubmVsX2lkKF9DT05UUk9M
X0NIQU5ORUxfSUQpICsgZmxvd19jb250cm9sCi0gICAgICAgICMgUmVwbGVuaXNoIHJlY2VpdmUg
cXVvdGEKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19j
b25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzW2No
YW5uZWxfaWRdLnJlY2VpdmVfcXVvdGEgKz0gKAotICAgICAgICAgICAgICAgIHJlcGxlbmlzaGVk
X3F1b3RhKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFu
bmVsc19jb25kaXRpb24ucmVsZWFzZSgpCi0gICAgICAgIHNlbGYuX3N0cmVhbS5zZW5kX2JpbmFy
eShwYXlsb2FkKQotCi0gICAgZGVmIHNlbmRfbWVzc2FnZShzZWxmLCBjaGFubmVsX2lkLCBtZXNz
YWdlLCBlbmQ9VHJ1ZSwgYmluYXJ5PUZhbHNlKToKLSAgICAgICAgc2VsZi5fY2hlY2tfbG9naWNh
bF9jaGFubmVsX2lzX29wZW5lZChjaGFubmVsX2lkKQotCi0gICAgICAgIGlmIGJpbmFyeToKLSAg
ICAgICAgICAgIGZpcnN0X2J5dGUgPSAoZW5kIDw8IDcpIHwgY2xpZW50X2Zvcl90ZXN0aW5nLk9Q
Q09ERV9CSU5BUlkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGZpcnN0X2J5dGUgPSAoZW5k
IDw8IDcpIHwgY2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhUCi0gICAgICAgICAgICBtZXNz
YWdlID0gbWVzc2FnZS5lbmNvZGUoJ3V0Zi04JykKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5hY3F1aXJlKCkKLSAgICAgICAgICAg
IGlmIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNbY2hhbm5lbF9pZF0uc2VuZF9xdW90YSA8IGxlbiht
ZXNzYWdlKToKLSAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1NlbmQgcXVvdGEgdmlv
bGF0aW9uOiAlZCA8ICVkJyAlICgKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2lj
YWxfY2hhbm5lbHNbY2hhbm5lbF9pZF0uc2VuZF9xdW90YSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGxlbihtZXNzYWdlKSkpCi0KLSAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNb
Y2hhbm5lbF9pZF0uc2VuZF9xdW90YSAtPSBsZW4obWVzc2FnZSkKLSAgICAgICAgZmluYWxseToK
LSAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLnJlbGVhc2UoKQot
ICAgICAgICBwYXlsb2FkID0gX2VuY29kZV9jaGFubmVsX2lkKGNoYW5uZWxfaWQpICsgY2hyKGZp
cnN0X2J5dGUpICsgbWVzc2FnZQotICAgICAgICBzZWxmLl9zdHJlYW0uc2VuZF9iaW5hcnkocGF5
bG9hZCkKLQotICAgIGRlZiBhc3NlcnRfcmVjZWl2ZShzZWxmLCBjaGFubmVsX2lkLCBwYXlsb2Fk
LCBiaW5hcnk9RmFsc2UpOgotICAgICAgICBzZWxmLl9jaGVja19sb2dpY2FsX2NoYW5uZWxfaXNf
b3BlbmVkKGNoYW5uZWxfaWQpCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaW5uZXJfZnJh
bWUgPSBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzW2NoYW5uZWxfaWRdLnF1ZXVlLmdldCgKLSAgICAg
ICAgICAgICAgICB0aW1lb3V0PXNlbGYuX3RpbWVvdXQpCi0gICAgICAgIGV4Y2VwdCBRdWV1ZS5F
bXB0eSwgZToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignQ2Fubm90IHJlY2VpdmUgbWVz
c2FnZSBmcm9tIGNoYW5uZWwgaWQgJWQnICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
aGFubmVsX2lkKQotCi0gICAgICAgIGlmIGJpbmFyeToKLSAgICAgICAgICAgIG9wY29kZSA9IGNs
aWVudF9mb3JfdGVzdGluZy5PUENPREVfQklOQVJZCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICBvcGNvZGUgPSBjbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQKLQotICAgICAgICBpZiBp
bm5lcl9mcmFtZS5vcGNvZGUgIT0gb3Bjb2RlOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9u
KCdVbmV4cGVjdGVkIG9wY29kZSByZWNlaXZlZCAoJXIgIT0gJXIpJyAlCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKGV4cGVjdGVkX29wY29kZSwgaW5uZXJfZnJhbWUub3Bjb2RlKSkKLQot
ICAgICAgICBpZiBpbm5lcl9mcmFtZS5wYXlsb2FkICE9IHBheWxvYWQ6Ci0gICAgICAgICAgICBy
YWlzZSBFeGNlcHRpb24oJ1VuZXhwZWN0ZWQgcGF5bG9hZCByZWNlaXZlZCcpCi0KLSAgICBkZWYg
c2VuZF9jbG9zZShzZWxmLCBjaGFubmVsX2lkLCBjb2RlPU5vbmUsIHJlYXNvbj0nJyk6Ci0gICAg
ICAgIHNlbGYuX2NoZWNrX2xvZ2ljYWxfY2hhbm5lbF9pc19vcGVuZWQoY2hhbm5lbF9pZCkKLQot
ICAgICAgICBpZiBjb2RlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgYm9keSA9IHN0cnVjdC5w
YWNrKCchSCcsIGNvZGUpICsgcmVhc29uLmVuY29kZSgndXRmLTgnKQotICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgYm9keSA9ICcnCi0KLSAgICAgICAgZmlyc3RfYnl0ZSA9ICgxIDw8IDcpIHwg
Y2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9DTE9TRQotICAgICAgICBwYXlsb2FkID0gX2VuY29k
ZV9jaGFubmVsX2lkKGNoYW5uZWxfaWQpICsgY2hyKGZpcnN0X2J5dGUpICsgYm9keQotICAgICAg
ICBzZWxmLl9zdHJlYW0uc2VuZF9iaW5hcnkocGF5bG9hZCkKLQotICAgIGRlZiBhc3NlcnRfcmVj
ZWl2ZV9jbG9zZShzZWxmLCBjaGFubmVsX2lkKToKLSAgICAgICAgc2VsZi5fY2hlY2tfbG9naWNh
bF9jaGFubmVsX2lzX29wZW5lZChjaGFubmVsX2lkKQotCi0gICAgICAgIHRyeToKLSAgICAgICAg
ICAgIGlubmVyX2ZyYW1lID0gc2VsZi5fbG9naWNhbF9jaGFubmVsc1tjaGFubmVsX2lkXS5xdWV1
ZS5nZXQoCi0gICAgICAgICAgICAgICAgdGltZW91dD1zZWxmLl90aW1lb3V0KQotICAgICAgICBl
eGNlcHQgUXVldWUuRW1wdHksIGU6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0Nhbm5v
dCByZWNlaXZlIG1lc3NhZ2UgZnJvbSBjaGFubmVsIGlkICVkJyAlCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2hhbm5lbF9pZCkKLSAgICAgICAgaWYgaW5uZXJfZnJhbWUub3Bjb2RlICE9
IGNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfQ0xPU0U6Ci0gICAgICAgICAgICByYWlzZSBFeGNl
cHRpb24oJ0RpZG5cJ3QgcmVjZWl2ZSBjbG9zZSBmcmFtZScpCi0KLSAgICBkZWYgc2VuZF9waHlz
aWNhbF9jb25uZWN0aW9uX2Nsb3NlKHNlbGYsIGNvZGU9Tm9uZSwgcmVhc29uPScnKToKLSAgICAg
ICAgc2VsZi5fcGh5c2ljYWxfY29ubmVjdGlvbl9jbG9zZV9ldmVudCA9IHRocmVhZGluZy5FdmVu
dCgpCi0gICAgICAgIHNlbGYuX3N0cmVhbS5zZW5kX2Nsb3NlKGNvZGUsIHJlYXNvbikKLQotICAg
ICMgVGhpcyBtZXRob2QgY2FuIGJlIHVzZWQgb25seSBhZnRlciBjYWxsaW5nCi0gICAgIyBzZW5k
X3BoeXNpY2FsX2Nvbm5lY3Rpb25fY2xvc2UoKS4KLSAgICBkZWYgYXNzZXJ0X3BoeXNpY2FsX2Nv
bm5lY3Rpb25fcmVjZWl2ZV9jbG9zZSgKLSAgICAgICAgc2VsZiwgY29kZT1jbGllbnRfZm9yX3Rl
c3RpbmcuU1RBVFVTX05PUk1BTF9DTE9TVVJFLCByZWFzb249JycpOgotICAgICAgICBzZWxmLl9w
aHlzaWNhbF9jb25uZWN0aW9uX2Nsb3NlX2V2ZW50LndhaXQodGltZW91dD1zZWxmLl90aW1lb3V0
KQotICAgICAgICBpZiAobm90IHNlbGYuX3BoeXNpY2FsX2Nvbm5lY3Rpb25fY2xvc2VfZXZlbnQu
aXNTZXQoKSBvcgotICAgICAgICAgICAgbm90IHNlbGYuX3BoeXNpY2FsX2Nvbm5lY3Rpb25fY2xv
c2VfbWVzc2FnZSk6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0RpZG5cJ3QgcmVjZWl2
ZSBjbG9zaW5nIGhhbmRzaGFrZScpCi0KLSAgICBkZWYgY2xvc2Vfc29ja2V0KHNlbGYpOgotICAg
ICAgICBzZWxmLl9pc19hY3RpdmUgPSBGYWxzZQotICAgICAgICBzZWxmLl9zb2NrZXQuY2xvc2Uo
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC9ydW5fYWxsLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC9y
dW5fYWxsLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MGE1ZDg3ZDgzODIyYjA3
ODNiZTEzZTMzZGRhM2FiNjFhNWFmZTQwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvcnVuX2FsbC5weQorKysgL2Rldi9udWxsCkBA
IC0xLDg5ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAx
MSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0j
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0KLQotIiIiUnVuIGFsbCB0ZXN0cyBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCi0KLVRoaXMgc3Vp
dGUgaXMgZXhwZWN0ZWQgdG8gYmUgcnVuIHVuZGVyIHB5d2Vic29ja2V0J3Mgc3JjIGRpcmVjdG9y
eSwgaS5lLiB0aGUKLWRpcmVjdG9yeSBjb250YWluaW5nIG1vZF9weXdlYnNvY2tldCwgdGVzdCwg
ZXRjLgotCi1UbyBjaGFuZ2UgbG9nZ2luIGxldmVsLCBwbGVhc2Ugc3BlY2lmeSAtLWxvZy1sZXZl
bCBvcHRpb24uCi0gICAgcHl0aG9uIHRlc3QvcnVuX3Rlc3QucHkgLS1sb2ctbGV2ZWwgZGVidWcK
LQotVG8gcGFzcyBhbnkgb3B0aW9uIHRvIHVuaXR0ZXN0IG1vZHVsZSwgcGxlYXNlIHNwZWNpZnkg
b3B0aW9ucyBhZnRlciAnLS0nLiBGb3IKLWV4YW1wbGUsIHJ1biB0aGlzIGZvciBtYWtpbmcgdGhl
IHRlc3QgcnVubmVyIHZlcmJvc2UuCi0gICAgcHl0aG9uIHRlc3QvcnVuX3Rlc3QucHkgLS1sb2ct
bGV2ZWwgZGVidWcgLS0gLXYKLSIiIgotCi0KLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgb3B0cGFy
c2UKLWltcG9ydCBvcwotaW1wb3J0IHJlCi1pbXBvcnQgc3lzCi1pbXBvcnQgdW5pdHRlc3QKLQot
Ci1fVEVTVF9NT0RVTEVfUEFUVEVSTiA9IHJlLmNvbXBpbGUocideKHRlc3RfLispXC5weSQnKQot
Ci0KLWRlZiBfbGlzdF90ZXN0X21vZHVsZXMoZGlyZWN0b3J5KToKLSAgICBtb2R1bGVfbmFtZXMg
PSBbXQotICAgIGZvciBmaWxlbmFtZSBpbiBvcy5saXN0ZGlyKGRpcmVjdG9yeSk6Ci0gICAgICAg
IG1hdGNoID0gX1RFU1RfTU9EVUxFX1BBVFRFUk4uc2VhcmNoKGZpbGVuYW1lKQotICAgICAgICBp
ZiBtYXRjaDoKLSAgICAgICAgICAgIG1vZHVsZV9uYW1lcy5hcHBlbmQobWF0Y2guZ3JvdXAoMSkp
Ci0gICAgcmV0dXJuIG1vZHVsZV9uYW1lcwotCi0KLWRlZiBfc3VpdGUoKToKLSAgICBsb2FkZXIg
PSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKLSAgICByZXR1cm4gbG9hZGVyLmxvYWRUZXN0c0Zyb21O
YW1lcygKLSAgICAgICAgICAgIF9saXN0X3Rlc3RfbW9kdWxlcyhvcy5wYXRoLmpvaW4ob3MucGF0
aC5zcGxpdChfX2ZpbGVfXylbMF0sICcuJykpKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5f
Xyc6Ci0gICAgcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKCkKLSAgICBwYXJzZXIuYWRk
X29wdGlvbignLS1sb2ctbGV2ZWwnLCAnLS1sb2dfbGV2ZWwnLCB0eXBlPSdjaG9pY2UnLAotICAg
ICAgICAgICAgICAgICAgICAgIGRlc3Q9J2xvZ19sZXZlbCcsIGRlZmF1bHQ9J3dhcm5pbmcnLAot
ICAgICAgICAgICAgICAgICAgICAgIGNob2ljZXM9WydkZWJ1ZycsICdpbmZvJywgJ3dhcm5pbmcn
LCAnd2FybicsICdlcnJvcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NyaXRp
Y2FsJ10pCi0gICAgb3B0aW9ucywgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKLSAgICBsb2dn
aW5nLmJhc2ljQ29uZmlnKAotICAgICAgICAgICAgbGV2ZWw9bG9nZ2luZy5nZXRMZXZlbE5hbWUo
b3B0aW9ucy5sb2dfbGV2ZWwudXBwZXIoKSksCi0gICAgICAgICAgICBmb3JtYXQ9JyUobGV2ZWxu
YW1lKXMgJShhc2N0aW1lKXMgJwotICAgICAgICAgICAgICAgICAgICclKGZpbGVuYW1lKXM6JShs
aW5lbm8pZF0gJwotICAgICAgICAgICAgICAgICAgICclKG1lc3NhZ2UpcycsCi0gICAgICAgICAg
ICBkYXRlZm10PSclSDolTTolUycpCi0gICAgdW5pdHRlc3QubWFpbihkZWZhdWx0VGVzdD0nX3N1
aXRlJywgYXJndj1bc3lzLmFyZ3ZbMF1dICsgYXJncykKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3Qvc2V0X3N5c19wYXRoLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVz
dC9zZXRfc3lzX3BhdGgucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzYzZkYjll
YTRkMzgzYTM3YzI3YTA2MGEwZWYxYzU2M2JiYjFlMTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC9zZXRfc3lzX3BhdGgucHkKKysr
IC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0jIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5j
LgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0j
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0j
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJDb25m
aWd1cmF0aW9uIGZvciB0ZXN0aW5nLgotCi1UZXN0IGZpbGVzIHNob3VsZCBpbXBvcnQgdGhpcyBt
b2R1bGUgYmVmb3JlIG1vZF9weXdlYnNvY2tldC4KLSIiIgotCi0KLWltcG9ydCBvcwotaW1wb3J0
IHN5cwotCi0KLSMgQWRkIHRoZSBwYXJlbnQgZGlyZWN0b3J5IHRvIHN5cy5wYXRoIHRvIGVuYWJs
ZSBpbXBvcnRpbmcgbW9kX3B5d2Vic29ja2V0Lgotc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGgu
am9pbihvcy5wYXRoLnNwbGl0KF9fZmlsZV9fKVswXSwgJy4uJykpCi0KLQotIyB2aTpzdHM9NCBz
dz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RfZGlzcGF0Y2gucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0
L3NyYy90ZXN0L3Rlc3RfZGlzcGF0Y2gucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDljYTNkNGYzYWUxZGJmNWY5N2IyN2Q4NGVjNmU2NDIyZmQwZWNhYTQuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0X2Rpc3Bh
dGNoLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjg4ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5
dGhvbgotIwotIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3Ry
aWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiVGVzdHMgZm9yIGRpc3BhdGNoIG1vZHVs
ZS4iIiIKLQotCi1pbXBvcnQgb3MKLWltcG9ydCB1bml0dGVzdAotCi1pbXBvcnQgc2V0X3N5c19w
YXRoICAjIFVwZGF0ZSBzeXMucGF0aCB0byBsb2NhdGUgbW9kX3B5d2Vic29ja2V0IG1vZHVsZS4K
LQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGRpc3BhdGNoCi1mcm9tIG1vZF9weXdlYnNv
Y2tldCBpbXBvcnQgaGFuZHNoYWtlCi1mcm9tIHRlc3QgaW1wb3J0IG1vY2sKLQotCi1fVEVTVF9I
QU5ETEVSU19ESVIgPSBvcy5wYXRoLmpvaW4oCi0gICAgICAgIG9zLnBhdGguc3BsaXQoX19maWxl
X18pWzBdLCAndGVzdGRhdGEnLCAnaGFuZGxlcnMnKQotCi1fVEVTVF9IQU5ETEVSU19TVUJfRElS
ID0gb3MucGF0aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJUiwgJ3N1YicpCi0KLQotY2xhc3MgRGlz
cGF0Y2hlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIkEgdW5pdHRlc3QgZm9yIGRp
c3BhdGNoIG1vZHVsZS4iIiIKLQotICAgIGRlZiB0ZXN0X25vcm1hbGl6ZV9wYXRoKHNlbGYpOgot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnBhdGguYWJzcGF0aCgnL2EvYicpLnJlcGxhY2Uo
J1xcJywgJy8nKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaC5fbm9ybWFsaXpl
X3BhdGgoJy9hL2InKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLmFic3BhdGgo
Jy9hL2InKS5yZXBsYWNlKCdcXCcsICcvJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgZGlz
cGF0Y2guX25vcm1hbGl6ZV9wYXRoKCdcXGFcXGInKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChvcy5wYXRoLmFic3BhdGgoJy9hL2InKS5yZXBsYWNlKCdcXCcsICcvJyksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgZGlzcGF0Y2guX25vcm1hbGl6ZV9wYXRoKCcvYS9jLy4uL2InKSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLmFic3BhdGgoJ2FiYycpLnJlcGxhY2UoJ1xc
JywgJy8nKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaC5fbm9ybWFsaXplX3Bh
dGgoJ2FiYycpKQotCi0gICAgZGVmIHRlc3RfY29udmVydGVyKHNlbGYpOgotICAgICAgICBjb252
ZXJ0ZXIgPSBkaXNwYXRjaC5fY3JlYXRlX3BhdGhfdG9fcmVzb3VyY2VfY29udmVydGVyKCcvYS9i
JykKLSAgICAgICAgIyBQeXRob24gYnVpbHQgYnkgTVNDIGluc2VydHMgYSBkcml2ZSBuYW1lIGxp
a2UgJ0M6XCcgdmlhIHJlYWxwYXRoKCkuCi0gICAgICAgICMgQ29udmVydGVyIEdlbmVyYXRvciBl
eHBhbmRzIHByb3ZpZGVkIHBhdGggdXNpbmcgcmVhbHBhdGgoKSBhbmQgdXNlcwotICAgICAgICAj
IHRoZSBwYXRoIGluY2x1ZGluZyBhIGRyaXZlIG5hbWUgdG8gdmVyaWZ5IHRoZSBwcmVmaXguCi0g
ICAgICAgIG9zX3Jvb3QgPSBvcy5wYXRoLnJlYWxwYXRoKCcvJykKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgnL2gnLCBjb252ZXJ0ZXIob3Nfcm9vdCArICdhL2IvaF93c2gucHknKSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgnL2MvaCcsIGNvbnZlcnRlcihvc19yb290ICsgJ2EvYi9jL2hf
d3NoLnB5JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgY29udmVydGVyKG9zX3Jv
b3QgKyAnYS9iL2gucHknKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBjb252ZXJ0
ZXIoJ2EvYi9oX3dzaC5weScpKQotCi0gICAgICAgIGNvbnZlcnRlciA9IGRpc3BhdGNoLl9jcmVh
dGVfcGF0aF90b19yZXNvdXJjZV9jb252ZXJ0ZXIoJ2EvYicpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJy9oJywgY29udmVydGVyKGRpc3BhdGNoLl9ub3JtYWxpemVfcGF0aCgKLSAgICAgICAg
ICAgICdhL2IvaF93c2gucHknKSkpCi0KLSAgICAgICAgY29udmVydGVyID0gZGlzcGF0Y2guX2Ny
ZWF0ZV9wYXRoX3RvX3Jlc291cmNlX2NvbnZlcnRlcignL2EvYi8vLycpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJy9oJywgY29udmVydGVyKG9zX3Jvb3QgKyAnYS9iL2hfd3NoLnB5JykpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy9oJywgY29udmVydGVyKGRpc3BhdGNoLl9ub3JtYWxp
emVfcGF0aCgKLSAgICAgICAgICAgICcvYS9iLy4uL2IvaF93c2gucHknKSkpCi0KLSAgICAgICAg
Y29udmVydGVyID0gZGlzcGF0Y2guX2NyZWF0ZV9wYXRoX3RvX3Jlc291cmNlX2NvbnZlcnRlcigK
LSAgICAgICAgICAgICcvYS8uLi9hL2IvLi4vYi8nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCcvaCcsIGNvbnZlcnRlcihvc19yb290ICsgJ2EvYi9oX3dzaC5weScpKQotCi0gICAgICAgIGNv
bnZlcnRlciA9IGRpc3BhdGNoLl9jcmVhdGVfcGF0aF90b19yZXNvdXJjZV9jb252ZXJ0ZXIocidc
YVxiJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnL2gnLCBjb252ZXJ0ZXIob3Nfcm9vdCAr
IHInYVxiXGhfd3NoLnB5JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy9oJywgY29udmVy
dGVyKG9zX3Jvb3QgKyByJ2EvYi9oX3dzaC5weScpKQotCi0gICAgZGVmIHRlc3RfZW51bWVyYXRl
X2hhbmRsZXJfZmlsZV9wYXRocyhzZWxmKToKLSAgICAgICAgcGF0aHMgPSBsaXN0KAotICAgICAg
ICAgICAgZGlzcGF0Y2guX2VudW1lcmF0ZV9oYW5kbGVyX2ZpbGVfcGF0aHMoX1RFU1RfSEFORExF
UlNfRElSKSkKLSAgICAgICAgcGF0aHMuc29ydCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
OCwgbGVuKHBhdGhzKSkKLSAgICAgICAgZXhwZWN0ZWRfcGF0aHMgPSBbCi0gICAgICAgICAgICAg
ICAgb3MucGF0aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJUiwgJ2Fib3J0X2J5X3VzZXJfd3NoLnB5
JyksCi0gICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJUiwgJ2Js
YW5rX3dzaC5weScpLAotICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihfVEVTVF9IQU5ETEVS
U19ESVIsICdvcmlnaW5fY2hlY2tfd3NoLnB5JyksCi0gICAgICAgICAgICAgICAgb3MucGF0aC5q
b2luKF9URVNUX0hBTkRMRVJTX0RJUiwgJ3N1YicsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdleGNlcHRpb25faW5fdHJhbnNmZXJfd3NoLnB5JyksCi0gICAgICAgICAgICAgICAgb3Mu
cGF0aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJUiwgJ3N1YicsICdub25fY2FsbGFibGVfd3NoLnB5
JyksCi0gICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJUiwgJ3N1
YicsICdwbGFpbl93c2gucHknKSwKLSAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oX1RFU1Rf
SEFORExFUlNfRElSLCAnc3ViJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dyb25n
X2hhbmRzaGFrZV9zaWdfd3NoLnB5JyksCi0gICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKF9U
RVNUX0hBTkRMRVJTX0RJUiwgJ3N1YicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3
cm9uZ190cmFuc2Zlcl9zaWdfd3NoLnB5JyksCi0gICAgICAgICAgICAgICAgXQotICAgICAgICBm
b3IgZXhwZWN0ZWQsIGFjdHVhbCBpbiB6aXAoZXhwZWN0ZWRfcGF0aHMsIHBhdGhzKToKLSAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIGFjdHVhbCkKLQotICAgIGRlZiB0ZXN0
X3NvdXJjZV9oYW5kbGVyX2ZpbGUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAot
ICAgICAgICAgICAgZGlzcGF0Y2guRGlzcGF0Y2hFeGNlcHRpb24sIGRpc3BhdGNoLl9zb3VyY2Vf
aGFuZGxlcl9maWxlLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCi0gICAgICAgICAg
ICBkaXNwYXRjaC5EaXNwYXRjaEV4Y2VwdGlvbiwgZGlzcGF0Y2guX3NvdXJjZV9oYW5kbGVyX2Zp
bGUsICdkZWYnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKLSAgICAgICAgICAgIGRpc3Bh
dGNoLkRpc3BhdGNoRXhjZXB0aW9uLCBkaXNwYXRjaC5fc291cmNlX2hhbmRsZXJfZmlsZSwgJzEv
MCcpCi0gICAgICAgIHNlbGYuZmFpbFVubGVzcyhkaXNwYXRjaC5fc291cmNlX2hhbmRsZXJfZmls
ZSgKLSAgICAgICAgICAgICAgICAnZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJl
cXVlc3QpOnBhc3NcbicKLSAgICAgICAgICAgICAgICAnZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJf
ZGF0YShyZXF1ZXN0KTpwYXNzXG4nKSkKLQotICAgIGRlZiB0ZXN0X3NvdXJjZV93YXJuaW5ncyhz
ZWxmKToKLSAgICAgICAgZGlzcGF0Y2hlciA9IGRpc3BhdGNoLkRpc3BhdGNoZXIoX1RFU1RfSEFO
RExFUlNfRElSLCBOb25lKQotICAgICAgICB3YXJuaW5ncyA9IGRpc3BhdGNoZXIuc291cmNlX3dh
cm5pbmdzKCkKLSAgICAgICAgd2FybmluZ3Muc29ydCgpCi0gICAgICAgIGV4cGVjdGVkX3dhcm5p
bmdzID0gWwotICAgICAgICAgICAgICAgIChvcy5wYXRoLnJlYWxwYXRoKG9zLnBhdGguam9pbigK
LSAgICAgICAgICAgICAgICAgICAgX1RFU1RfSEFORExFUlNfRElSLCAnYmxhbmtfd3NoLnB5Jykp
ICsKLSAgICAgICAgICAgICAgICAgJzogd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UgaXMg
bm90IGRlZmluZWQuJyksCi0gICAgICAgICAgICAgICAgKG9zLnBhdGgucmVhbHBhdGgob3MucGF0
aC5qb2luKAotICAgICAgICAgICAgICAgICAgICBfVEVTVF9IQU5ETEVSU19ESVIsICdzdWInLCAn
bm9uX2NhbGxhYmxlX3dzaC5weScpKSArCi0gICAgICAgICAgICAgICAgICc6IHdlYl9zb2NrZXRf
ZG9fZXh0cmFfaGFuZHNoYWtlIGlzIG5vdCBjYWxsYWJsZS4nKSwKLSAgICAgICAgICAgICAgICAo
b3MucGF0aC5yZWFscGF0aChvcy5wYXRoLmpvaW4oCi0gICAgICAgICAgICAgICAgICAgIF9URVNU
X0hBTkRMRVJTX0RJUiwgJ3N1YicsICd3cm9uZ19oYW5kc2hha2Vfc2lnX3dzaC5weScpKSArCi0g
ICAgICAgICAgICAgICAgICc6IHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlIGlzIG5vdCBk
ZWZpbmVkLicpLAotICAgICAgICAgICAgICAgIChvcy5wYXRoLnJlYWxwYXRoKG9zLnBhdGguam9p
bigKLSAgICAgICAgICAgICAgICAgICAgX1RFU1RfSEFORExFUlNfRElSLCAnc3ViJywgJ3dyb25n
X3RyYW5zZmVyX3NpZ193c2gucHknKSkgKwotICAgICAgICAgICAgICAgICAnOiB3ZWJfc29ja2V0
X3RyYW5zZmVyX2RhdGEgaXMgbm90IGRlZmluZWQuJyksCi0gICAgICAgICAgICAgICAgXQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyg0LCBsZW4od2FybmluZ3MpKQotICAgICAgICBmb3IgZXhw
ZWN0ZWQsIGFjdHVhbCBpbiB6aXAoZXhwZWN0ZWRfd2FybmluZ3MsIHdhcm5pbmdzKToKLSAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4cGVjdGVkLCBhY3R1YWwpCi0KLSAgICBkZWYgdGVz
dF9kb19leHRyYV9oYW5kc2hha2Uoc2VsZik6Ci0gICAgICAgIGRpc3BhdGNoZXIgPSBkaXNwYXRj
aC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJTX0RJUiwgTm9uZSkKLSAgICAgICAgcmVxdWVzdCA9
IG1vY2suTW9ja1JlcXVlc3QoKQotICAgICAgICByZXF1ZXN0LndzX3Jlc291cmNlID0gJy9vcmln
aW5fY2hlY2snCi0gICAgICAgIHJlcXVlc3Qud3Nfb3JpZ2luID0gJ2h0dHA6Ly9leGFtcGxlLmNv
bScKLSAgICAgICAgZGlzcGF0Y2hlci5kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCkgICMgTXVz
dCBub3QgcmFpc2UgZXhjZXB0aW9uLgotCi0gICAgICAgIHJlcXVlc3Qud3Nfb3JpZ2luID0gJ2h0
dHA6Ly9iYWQuZXhhbXBsZS5jb20nCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGRpc3BhdGNo
ZXIuZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpCi0gICAgICAgICAgICBzZWxmLmZhaWwoJ0Nv
dWxkIG5vdCBjYXRjaCBIYW5kc2hha2VFeGNlcHRpb24gd2l0aCA0MDMgc3RhdHVzJykKLSAgICAg
ICAgZXhjZXB0IGhhbmRzaGFrZS5IYW5kc2hha2VFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscyg0MDMsIGUuc3RhdHVzKQotICAgICAgICBleGNlcHQgRXhjZXB0aW9u
LCBlOgotICAgICAgICAgICAgc2VsZi5mYWlsKCdVbmV4cGVjdGVkIGV4Y2VwdGlvbjogJXInICUg
ZSkKLQotICAgIGRlZiB0ZXN0X2Fib3J0X2V4dHJhX2hhbmRzaGFrZShzZWxmKToKLSAgICAgICAg
ZGlzcGF0Y2hlciA9IGRpc3BhdGNoLkRpc3BhdGNoZXIoX1RFU1RfSEFORExFUlNfRElSLCBOb25l
KQotICAgICAgICByZXF1ZXN0ID0gbW9jay5Nb2NrUmVxdWVzdCgpCi0gICAgICAgIHJlcXVlc3Qu
d3NfcmVzb3VyY2UgPSAnL2Fib3J0X2J5X3VzZXInCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2Vz
KGhhbmRzaGFrZS5BYm9ydGVkQnlVc2VyRXhjZXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICBkaXNwYXRjaGVyLmRvX2V4dHJhX2hhbmRzaGFrZSwgcmVxdWVzdCkKLQotICAgIGRlZiB0
ZXN0X3RyYW5zZmVyX2RhdGEoc2VsZik6Ci0gICAgICAgIGRpc3BhdGNoZXIgPSBkaXNwYXRjaC5E
aXNwYXRjaGVyKF9URVNUX0hBTkRMRVJTX0RJUiwgTm9uZSkKLQotICAgICAgICByZXF1ZXN0ID0g
bW9jay5Nb2NrUmVxdWVzdChjb25uZWN0aW9uPW1vY2suTW9ja0Nvbm4oJ1x4ZmZceDAwJykpCi0g
ICAgICAgIHJlcXVlc3Qud3NfcmVzb3VyY2UgPSAnL29yaWdpbl9jaGVjaycKLSAgICAgICAgcmVx
dWVzdC53c19wcm90b2NvbCA9ICdwMScKLSAgICAgICAgZGlzcGF0Y2hlci50cmFuc2Zlcl9kYXRh
KHJlcXVlc3QpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ29yaWdpbl9jaGVja193c2gucHkg
aXMgY2FsbGVkIGZvciAvb3JpZ2luX2NoZWNrLCBwMScKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAnXHhmZlx4MDAnLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlv
bi53cml0dGVuX2RhdGEoKSkKLQotICAgICAgICByZXF1ZXN0ID0gbW9jay5Nb2NrUmVxdWVzdChj
b25uZWN0aW9uPW1vY2suTW9ja0Nvbm4oJ1x4ZmZceDAwJykpCi0gICAgICAgIHJlcXVlc3Qud3Nf
cmVzb3VyY2UgPSAnL3N1Yi9wbGFpbicKLSAgICAgICAgcmVxdWVzdC53c19wcm90b2NvbCA9IE5v
bmUKLSAgICAgICAgZGlzcGF0Y2hlci50cmFuc2Zlcl9kYXRhKHJlcXVlc3QpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJ3N1Yi9wbGFpbl93c2gucHkgaXMgY2FsbGVkIGZvciAvc3ViL3BsYWlu
LCBOb25lJwotICAgICAgICAgICAgICAgICAgICAgICAgICdceGZmXHgwMCcsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAg
ICAgIHJlcXVlc3QgPSBtb2NrLk1vY2tSZXF1ZXN0KGNvbm5lY3Rpb249bW9jay5Nb2NrQ29ubign
XHhmZlx4MDAnKSkKLSAgICAgICAgcmVxdWVzdC53c19yZXNvdXJjZSA9ICcvc3ViL3BsYWluPycK
LSAgICAgICAgcmVxdWVzdC53c19wcm90b2NvbCA9IE5vbmUKLSAgICAgICAgZGlzcGF0Y2hlci50
cmFuc2Zlcl9kYXRhKHJlcXVlc3QpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3N1Yi9wbGFp
bl93c2gucHkgaXMgY2FsbGVkIGZvciAvc3ViL3BsYWluPywgTm9uZScKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAnXHhmZlx4MDAnLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qu
Y29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAgICAgICByZXF1ZXN0ID0gbW9jay5Nb2Nr
UmVxdWVzdChjb25uZWN0aW9uPW1vY2suTW9ja0Nvbm4oJ1x4ZmZceDAwJykpCi0gICAgICAgIHJl
cXVlc3Qud3NfcmVzb3VyY2UgPSAnL3N1Yi9wbGFpbj9xPXYnCi0gICAgICAgIHJlcXVlc3Qud3Nf
cHJvdG9jb2wgPSBOb25lCi0gICAgICAgIGRpc3BhdGNoZXIudHJhbnNmZXJfZGF0YShyZXF1ZXN0
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdzdWIvcGxhaW5fd3NoLnB5IGlzIGNhbGxlZCBm
b3IgL3N1Yi9wbGFpbj9xPXYsIE5vbmUnCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1x4ZmZc
eDAwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRl
bl9kYXRhKCkpCi0KLSAgICBkZWYgdGVzdF90cmFuc2Zlcl9kYXRhX25vX2hhbmRsZXIoc2VsZik6
Ci0gICAgICAgIGRpc3BhdGNoZXIgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJT
X0RJUiwgTm9uZSkKLSAgICAgICAgZm9yIHJlc291cmNlIGluIFsnL2JsYW5rJywgJy9zdWIvbm9u
X2NhbGxhYmxlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnL3N1Yi9ub193c2hfYXRfdGhl
X2VuZCcsICcvZG9lcy9ub3QvZXhpc3QnXToKLSAgICAgICAgICAgIHJlcXVlc3QgPSBtb2NrLk1v
Y2tSZXF1ZXN0KGNvbm5lY3Rpb249bW9jay5Nb2NrQ29ubignJykpCi0gICAgICAgICAgICByZXF1
ZXN0LndzX3Jlc291cmNlID0gcmVzb3VyY2UKLSAgICAgICAgICAgIHJlcXVlc3Qud3NfcHJvdG9j
b2wgPSAncDInCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZGlzcGF0Y2hlci50
cmFuc2Zlcl9kYXRhKHJlcXVlc3QpCi0gICAgICAgICAgICAgICAgc2VsZi5mYWlsKCkKLSAgICAg
ICAgICAgIGV4Y2VwdCBkaXNwYXRjaC5EaXNwYXRjaEV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAg
ICAgICBzZWxmLmZhaWxVbmxlc3Moc3RyKGUpLmZpbmQoJ05vIGhhbmRsZXInKSAhPSAtMSkKLSAg
ICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICAgICAgc2VsZi5mYWlsKCkK
LQotICAgIGRlZiB0ZXN0X3RyYW5zZmVyX2RhdGFfaGFuZGxlcl9leGNlcHRpb24oc2VsZik6Ci0g
ICAgICAgIGRpc3BhdGNoZXIgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJTX0RJ
UiwgTm9uZSkKLSAgICAgICAgcmVxdWVzdCA9IG1vY2suTW9ja1JlcXVlc3QoY29ubmVjdGlvbj1t
b2NrLk1vY2tDb25uKCcnKSkKLSAgICAgICAgcmVxdWVzdC53c19yZXNvdXJjZSA9ICcvc3ViL2V4
Y2VwdGlvbl9pbl90cmFuc2ZlcicKLSAgICAgICAgcmVxdWVzdC53c19wcm90b2NvbCA9ICdwMycK
LSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZGlzcGF0Y2hlci50cmFuc2Zlcl9kYXRhKHJlcXVl
c3QpCi0gICAgICAgICAgICBzZWxmLmZhaWwoKQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBl
OgotICAgICAgICAgICAgc2VsZi5mYWlsVW5sZXNzKHN0cihlKS5maW5kKCdJbnRlbnRpb25hbCcp
ICE9IC0xLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIGV4Y2VwdGlv
bjogJXMnICUgZSkKLQotICAgIGRlZiB0ZXN0X2Fib3J0X3RyYW5zZmVyX2RhdGEoc2VsZik6Ci0g
ICAgICAgIGRpc3BhdGNoZXIgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJTX0RJ
UiwgTm9uZSkKLSAgICAgICAgcmVxdWVzdCA9IG1vY2suTW9ja1JlcXVlc3QoKQotICAgICAgICBy
ZXF1ZXN0LndzX3Jlc291cmNlID0gJy9hYm9ydF9ieV91c2VyJwotICAgICAgICBzZWxmLmFzc2Vy
dFJhaXNlcyhoYW5kc2hha2UuQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGlzcGF0Y2hlci50cmFuc2Zlcl9kYXRhLCByZXF1ZXN0KQotCi0gICAgZGVm
IHRlc3Rfc2Nhbl9kaXIoc2VsZik6Ci0gICAgICAgIGRpc3AgPSBkaXNwYXRjaC5EaXNwYXRjaGVy
KF9URVNUX0hBTkRMRVJTX0RJUiwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg0LCBs
ZW4oZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXApKQotICAgICAgICBzZWxmLmZhaWxVbmxlc3MoJy9v
cmlnaW5fY2hlY2snIGluIGRpc3AuX2hhbmRsZXJfc3VpdGVfbWFwKQotICAgICAgICBzZWxmLmZh
aWxVbmxlc3MoCi0gICAgICAgICAgICAnL3N1Yi9leGNlcHRpb25faW5fdHJhbnNmZXInIGluIGRp
c3AuX2hhbmRsZXJfc3VpdGVfbWFwKQotICAgICAgICBzZWxmLmZhaWxVbmxlc3MoJy9zdWIvcGxh
aW4nIGluIGRpc3AuX2hhbmRsZXJfc3VpdGVfbWFwKQotCi0gICAgZGVmIHRlc3Rfc2Nhbl9zdWJf
ZGlyKHNlbGYpOgotICAgICAgICBkaXNwID0gZGlzcGF0Y2guRGlzcGF0Y2hlcihfVEVTVF9IQU5E
TEVSU19ESVIsIF9URVNUX0hBTkRMRVJTX1NVQl9ESVIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoMiwgbGVuKGRpc3AuX2hhbmRsZXJfc3VpdGVfbWFwKSkKLSAgICAgICAgc2VsZi5mYWlsSWYo
Jy9vcmlnaW5fY2hlY2snIGluIGRpc3AuX2hhbmRsZXJfc3VpdGVfbWFwKQotICAgICAgICBzZWxm
LmZhaWxVbmxlc3MoCi0gICAgICAgICAgICAnL3N1Yi9leGNlcHRpb25faW5fdHJhbnNmZXInIGlu
IGRpc3AuX2hhbmRsZXJfc3VpdGVfbWFwKQotICAgICAgICBzZWxmLmZhaWxVbmxlc3MoJy9zdWIv
cGxhaW4nIGluIGRpc3AuX2hhbmRsZXJfc3VpdGVfbWFwKQotCi0gICAgZGVmIHRlc3Rfc2Nhbl9z
dWJfZGlyX2FzX3Jvb3Qoc2VsZik6Ci0gICAgICAgIGRpc3AgPSBkaXNwYXRjaC5EaXNwYXRjaGVy
KF9URVNUX0hBTkRMRVJTX1NVQl9ESVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9URVNUX0hBTkRMRVJTX1NVQl9ESVIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwg
bGVuKGRpc3AuX2hhbmRsZXJfc3VpdGVfbWFwKSkKLSAgICAgICAgc2VsZi5mYWlsSWYoJy9vcmln
aW5fY2hlY2snIGluIGRpc3AuX2hhbmRsZXJfc3VpdGVfbWFwKQotICAgICAgICBzZWxmLmZhaWxJ
ZignL3N1Yi9leGNlcHRpb25faW5fdHJhbnNmZXInIGluIGRpc3AuX2hhbmRsZXJfc3VpdGVfbWFw
KQotICAgICAgICBzZWxmLmZhaWxJZignL3N1Yi9wbGFpbicgaW4gZGlzcC5faGFuZGxlcl9zdWl0
ZV9tYXApCi0gICAgICAgIHNlbGYuZmFpbFVubGVzcygnL2V4Y2VwdGlvbl9pbl90cmFuc2Zlcicg
aW4gZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXApCi0gICAgICAgIHNlbGYuZmFpbFVubGVzcygnL3Bs
YWluJyBpbiBkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkKLQotICAgIGRlZiB0ZXN0X3NjYW5fZGly
X211c3RfdW5kZXJfcm9vdChzZWxmKToKLSAgICAgICAgZGlzcGF0Y2guRGlzcGF0Y2hlcignYS9i
JywgJ2EvYi9jJykgICMgT0sKLSAgICAgICAgZGlzcGF0Y2guRGlzcGF0Y2hlcignYS9iLy8vJywg
J2EvYicpICAjIE9LCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGRpc3BhdGNoLkRpc3BhdGNo
RXhjZXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaC5EaXNwYXRjaGVy
LCAnYS9iL2MnLCAnYS9iJykKLQotICAgIGRlZiB0ZXN0X3Jlc291cmNlX3BhdGhfYWxpYXMoc2Vs
Zik6Ci0gICAgICAgIGRpc3AgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJTX0RJ
UiwgTm9uZSkKLSAgICAgICAgZGlzcC5hZGRfcmVzb3VyY2VfcGF0aF9hbGlhcygnLycsICcvb3Jp
Z2luX2NoZWNrJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg1LCBsZW4oZGlzcC5faGFuZGxl
cl9zdWl0ZV9tYXApKQotICAgICAgICBzZWxmLmZhaWxVbmxlc3MoJy9vcmlnaW5fY2hlY2snIGlu
IGRpc3AuX2hhbmRsZXJfc3VpdGVfbWFwKQotICAgICAgICBzZWxmLmZhaWxVbmxlc3MoCi0gICAg
ICAgICAgICAnL3N1Yi9leGNlcHRpb25faW5fdHJhbnNmZXInIGluIGRpc3AuX2hhbmRsZXJfc3Vp
dGVfbWFwKQotICAgICAgICBzZWxmLmZhaWxVbmxlc3MoJy9zdWIvcGxhaW4nIGluIGRpc3AuX2hh
bmRsZXJfc3VpdGVfbWFwKQotICAgICAgICBzZWxmLmZhaWxVbmxlc3MoJy8nIGluIGRpc3AuX2hh
bmRsZXJfc3VpdGVfbWFwKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhkaXNwYXRjaC5EaXNw
YXRjaEV4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcC5hZGRfcmVzb3Vy
Y2VfcGF0aF9hbGlhcywgJy9hbGlhcycsICcvbm90LWV4aXN0JykKLQotCi1pZiBfX25hbWVfXyA9
PSAnX19tYWluX18nOgotICAgIHVuaXR0ZXN0Lm1haW4oKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBl
dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0X2VuZHRvZW5kLnB5IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMv
dGVzdC90ZXN0X2VuZHRvZW5kLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZTVj
ZjYxNTczOTE3ZDg3ZDEzNjViMTZhNThjMmM0MTg4YTkxMmVjLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdF9lbmR0b2VuZC5w
eQorKysgL2Rldi9udWxsCkBAIC0xLDc1MyArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24K
LSMKLSMgQ29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRp
b24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
IyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIkVuZC10by1lbmQgdGVzdHMgZm9yIHB5d2Vic29j
a2V0LiBUZXN0cyBzdGFuZGFsb25lLnB5IGJ5IGRlZmF1bHQuIFlvdQotY2FuIGFsc28gdGVzdCBt
b2RfcHl3ZWJzb2NrZXQgaG9zdGVkIG9uIGFuIEFwYWNoZSBzZXJ2ZXIgYnkgc2V0dGluZwotX3Vz
ZV9leHRlcm5hbF9zZXJ2ZXIgdG8gVHJ1ZSBhbmQgbW9kaWZ5aW5nIF9leHRlcm5hbF9zZXJ2ZXJf
cG9ydCB0byBwb2ludCB0bwotdGhlIHBvcnQgb24gd2hpY2ggdGhlIEFwYWNoZSBzZXJ2ZXIgaXMg
cnVubmluZy4KLSIiIgotCi0KLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgb3MKLWltcG9ydCBzaWdu
YWwKLWltcG9ydCBzb2NrZXQKLWltcG9ydCBzdWJwcm9jZXNzCi1pbXBvcnQgc3lzCi1pbXBvcnQg
dGltZQotaW1wb3J0IHVuaXR0ZXN0Ci0KLWltcG9ydCBzZXRfc3lzX3BhdGggICMgVXBkYXRlIHN5
cy5wYXRoIHRvIGxvY2F0ZSBtb2RfcHl3ZWJzb2NrZXQgbW9kdWxlLgotCi1mcm9tIHRlc3QgaW1w
b3J0IGNsaWVudF9mb3JfdGVzdGluZwotZnJvbSB0ZXN0IGltcG9ydCBtdXhfY2xpZW50X2Zvcl90
ZXN0aW5nCi0KLQotIyBTcGVjaWFsIG1lc3NhZ2UgdGhhdCB0ZWxscyB0aGUgZWNobyBzZXJ2ZXIg
dG8gc3RhcnQgY2xvc2luZyBoYW5kc2hha2UKLV9HT09EQllFX01FU1NBR0UgPSAnR29vZGJ5ZScK
LQotX1NFUlZFUl9XQVJNVVBfSU5fU0VDID0gMC4yCi0KLSMgSWYgeW91IHdhbnQgdG8gdXNlIGV4
dGVybmFsIHNlcnZlciB0byBydW4gZW5kIHRvIGVuZCB0ZXN0cywgc2V0IGZvbGxvd2luZwotIyBw
YXJhbWV0ZXJzIGNvcnJlY3RseS4KLV91c2VfZXh0ZXJuYWxfc2VydmVyID0gRmFsc2UKLV9leHRl
cm5hbF9zZXJ2ZXJfcG9ydCA9IDAKLQotCi0jIFRlc3QgYm9keSBmdW5jdGlvbnMKLWRlZiBfZWNo
b19jaGVja19wcm9jZWR1cmUoY2xpZW50KToKLSAgICBjbGllbnQuY29ubmVjdCgpCi0KLSAgICBj
bGllbnQuc2VuZF9tZXNzYWdlKCd0ZXN0JykKLSAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmUoJ3Rl
c3QnKQotICAgIGNsaWVudC5zZW5kX21lc3NhZ2UoJ2hlbGxvd29ybGQnKQotICAgIGNsaWVudC5h
c3NlcnRfcmVjZWl2ZSgnaGVsbG93b3JsZCcpCi0KLSAgICBjbGllbnQuc2VuZF9jbG9zZSgpCi0g
ICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKCkKLQotICAgIGNsaWVudC5hc3NlcnRfY29u
bmVjdGlvbl9jbG9zZWQoKQotCi0KLWRlZiBfZWNob19jaGVja19wcm9jZWR1cmVfd2l0aF9iaW5h
cnkoY2xpZW50KToKLSAgICBjbGllbnQuY29ubmVjdCgpCi0KLSAgICBjbGllbnQuc2VuZF9tZXNz
YWdlKCdiaW5hcnknLCBiaW5hcnk9VHJ1ZSkKLSAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmUoJ2Jp
bmFyeScsIGJpbmFyeT1UcnVlKQotICAgIGNsaWVudC5zZW5kX21lc3NhZ2UoJ1x4MDBceDgwXHhm
ZVx4ZmZceDAwXHg4MCcsIGJpbmFyeT1UcnVlKQotICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZSgn
XHgwMFx4ODBceGZlXHhmZlx4MDBceDgwJywgYmluYXJ5PVRydWUpCi0KLSAgICBjbGllbnQuc2Vu
ZF9jbG9zZSgpCi0gICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKCkKLQotICAgIGNsaWVu
dC5hc3NlcnRfY29ubmVjdGlvbl9jbG9zZWQoKQotCi0KLWRlZiBfZWNob19jaGVja19wcm9jZWR1
cmVfd2l0aF9nb29kYnllKGNsaWVudCk6Ci0gICAgY2xpZW50LmNvbm5lY3QoKQotCi0gICAgY2xp
ZW50LnNlbmRfbWVzc2FnZSgndGVzdCcpCi0gICAgY2xpZW50LmFzc2VydF9yZWNlaXZlKCd0ZXN0
JykKLQotICAgIGNsaWVudC5zZW5kX21lc3NhZ2UoX0dPT0RCWUVfTUVTU0FHRSkKLSAgICBjbGll
bnQuYXNzZXJ0X3JlY2VpdmUoX0dPT0RCWUVfTUVTU0FHRSkKLQotICAgIGNsaWVudC5hc3NlcnRf
cmVjZWl2ZV9jbG9zZSgpCi0gICAgY2xpZW50LnNlbmRfY2xvc2UoKQotCi0gICAgY2xpZW50LmFz
c2VydF9jb25uZWN0aW9uX2Nsb3NlZCgpCi0KLQotZGVmIF9lY2hvX2NoZWNrX3Byb2NlZHVyZV93
aXRoX2NvZGVfYW5kX3JlYXNvbihjbGllbnQsIGNvZGUsIHJlYXNvbik6Ci0gICAgY2xpZW50LmNv
bm5lY3QoKQotCi0gICAgY2xpZW50LnNlbmRfY2xvc2UoY29kZSwgcmVhc29uKQotICAgIGNsaWVu
dC5hc3NlcnRfcmVjZWl2ZV9jbG9zZShjb2RlLCByZWFzb24pCi0KLSAgICBjbGllbnQuYXNzZXJ0
X2Nvbm5lY3Rpb25fY2xvc2VkKCkKLQotCi1kZWYgX3VubWFza2VkX2ZyYW1lX2NoZWNrX3Byb2Nl
ZHVyZShjbGllbnQpOgotICAgIGNsaWVudC5jb25uZWN0KCkKLQotICAgIGNsaWVudC5zZW5kX21l
c3NhZ2UoJ3Rlc3QnLCBtYXNrPUZhbHNlKQotICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9z
ZShjbGllbnRfZm9yX3Rlc3RpbmcuU1RBVFVTX1BST1RPQ09MX0VSUk9SLCAnJykKLQotICAgIGNs
aWVudC5hc3NlcnRfY29ubmVjdGlvbl9jbG9zZWQoKQotCi0KLWRlZiBfbXV4X2VjaG9fY2hlY2tf
cHJvY2VkdXJlKG11eF9jbGllbnQpOgotICAgIG11eF9jbGllbnQuY29ubmVjdCgpCi0gICAgbXV4
X2NsaWVudC5zZW5kX2Zsb3dfY29udHJvbCgxLCAxMDI0KQotCi0gICAgbG9naWNhbF9jaGFubmVs
X29wdGlvbnMgPSBjbGllbnRfZm9yX3Rlc3RpbmcuQ2xpZW50T3B0aW9ucygpCi0gICAgbG9naWNh
bF9jaGFubmVsX29wdGlvbnMuc2VydmVyX2hvc3QgPSAnbG9jYWxob3N0JwotICAgIGxvZ2ljYWxf
Y2hhbm5lbF9vcHRpb25zLnNlcnZlcl9wb3J0ID0gODAKLSAgICBsb2dpY2FsX2NoYW5uZWxfb3B0
aW9ucy5vcmlnaW4gPSAnaHR0cDovL2xvY2FsaG9zdCcKLSAgICBsb2dpY2FsX2NoYW5uZWxfb3B0
aW9ucy5yZXNvdXJjZSA9ICcvZWNobycKLSAgICBtdXhfY2xpZW50LmFkZF9jaGFubmVsKDIsIGxv
Z2ljYWxfY2hhbm5lbF9vcHRpb25zKQotICAgIG11eF9jbGllbnQuc2VuZF9mbG93X2NvbnRyb2wo
MiwgMTAyNCkKLQotICAgIG11eF9jbGllbnQuc2VuZF9tZXNzYWdlKDIsICd0ZXN0JykKLSAgICBt
dXhfY2xpZW50LmFzc2VydF9yZWNlaXZlKDIsICd0ZXN0JykKLQotICAgIG11eF9jbGllbnQuYWRk
X2NoYW5uZWwoMywgbG9naWNhbF9jaGFubmVsX29wdGlvbnMpCi0gICAgbXV4X2NsaWVudC5zZW5k
X2Zsb3dfY29udHJvbCgzLCAxMDI0KQotCi0gICAgbXV4X2NsaWVudC5zZW5kX21lc3NhZ2UoMiwg
J2hlbGxvJykKLSAgICBtdXhfY2xpZW50LnNlbmRfbWVzc2FnZSgzLCAnd29ybGQnKQotICAgIG11
eF9jbGllbnQuYXNzZXJ0X3JlY2VpdmUoMiwgJ2hlbGxvJykKLSAgICBtdXhfY2xpZW50LmFzc2Vy
dF9yZWNlaXZlKDMsICd3b3JsZCcpCi0KLSAgICAjIERvbid0IHNlbmQgY2xvc2UgbWVzc2FnZSBv
biBjaGFubmVsIGlkIDEgc28gdGhhdCBzZXJ2ZXItaW5pdGlhdGVkCi0gICAgIyBjbG9zaW5nIGhh
bmRzaGFrZSB3b24ndCBvY2N1ci4KLSAgICBtdXhfY2xpZW50LnNlbmRfY2xvc2UoMikKLSAgICBt
dXhfY2xpZW50LnNlbmRfY2xvc2UoMykKLSAgICBtdXhfY2xpZW50LmFzc2VydF9yZWNlaXZlX2Ns
b3NlKDIpCi0gICAgbXV4X2NsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9zZSgzKQotCi0gICAgbXV4
X2NsaWVudC5zZW5kX3BoeXNpY2FsX2Nvbm5lY3Rpb25fY2xvc2UoKQotICAgIG11eF9jbGllbnQu
YXNzZXJ0X3BoeXNpY2FsX2Nvbm5lY3Rpb25fcmVjZWl2ZV9jbG9zZSgpCi0KLQotY2xhc3MgRW5k
VG9FbmRUZXN0QmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiQmFzZSBjbGFzcyBmb3Ig
ZW5kLXRvLWVuZCB0ZXN0cyB0aGF0IGxhdW5jaCBweXdlYnNvY2tldCBzdGFuZGFsb25lCi0gICAg
c2VydmVyIGFzIGEgc2VwYXJhdGUgcHJvY2VzcywgY29ubmVjdCB0byBpdCB1c2luZyB0aGUgY2xp
ZW50X2Zvcl90ZXN0aW5nCi0gICAgbW9kdWxlLCBhbmQgY2hlY2sgaWYgdGhlIHNlcnZlciBiZWhh
dmVzIGNvcnJlY3RseSBieSBleGNoYW5naW5nIG9wZW5pbmcKLSAgICBoYW5kc2hha2UgYW5kIGZy
YW1lcyBvdmVyIGEgVENQIGNvbm5lY3Rpb24uCi0gICAgIiIiCi0KLSAgICBkZWYgc2V0VXAoc2Vs
Zik6Ci0gICAgICAgIHNlbGYuc2VydmVyX3N0ZGVyciA9IE5vbmUKLSAgICAgICAgc2VsZi50b3Bf
ZGlyID0gb3MucGF0aC5qb2luKG9zLnBhdGguc3BsaXQoX19maWxlX18pWzBdLCAnLi4nKQotICAg
ICAgICBvcy5wdXRlbnYoJ1BZVEhPTlBBVEgnLCBvcy5wYXRoLnBhdGhzZXAuam9pbihzeXMucGF0
aCkpCi0gICAgICAgIHNlbGYuc3RhbmRhbG9uZV9jb21tYW5kID0gb3MucGF0aC5qb2luKAotICAg
ICAgICAgICAgc2VsZi50b3BfZGlyLCAnbW9kX3B5d2Vic29ja2V0JywgJ3N0YW5kYWxvbmUucHkn
KQotICAgICAgICBzZWxmLmRvY3VtZW50X3Jvb3QgPSBvcy5wYXRoLmpvaW4oc2VsZi50b3BfZGly
LCAnZXhhbXBsZScpCi0gICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KCkKLSAgICAgICAgcy5iaW5k
KCgnbG9jYWxob3N0JywgMCkpCi0gICAgICAgIChfLCBzZWxmLnRlc3RfcG9ydCkgPSBzLmdldHNv
Y2tuYW1lKCkKLSAgICAgICAgcy5jbG9zZSgpCi0KLSAgICAgICAgc2VsZi5fb3B0aW9ucyA9IGNs
aWVudF9mb3JfdGVzdGluZy5DbGllbnRPcHRpb25zKCkKLSAgICAgICAgc2VsZi5fb3B0aW9ucy5z
ZXJ2ZXJfaG9zdCA9ICdsb2NhbGhvc3QnCi0gICAgICAgIHNlbGYuX29wdGlvbnMub3JpZ2luID0g
J2h0dHA6Ly9sb2NhbGhvc3QnCi0gICAgICAgIHNlbGYuX29wdGlvbnMucmVzb3VyY2UgPSAnL2Vj
aG8nCi0KLSAgICAgICAgIyBUT0RPKHRveW9zaGltKTogRWxpbWluYXRlIGxhdW5jaGluZyBhIHN0
YW5kYWxvbmUgc2VydmVyIG9uIHVzaW5nCi0gICAgICAgICMgZXh0ZXJuYWwgc2VydmVyLgotCi0g
ICAgICAgIGlmIF91c2VfZXh0ZXJuYWxfc2VydmVyOgotICAgICAgICAgICAgc2VsZi5fb3B0aW9u
cy5zZXJ2ZXJfcG9ydCA9IF9leHRlcm5hbF9zZXJ2ZXJfcG9ydAotICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfcG9ydCA9IHNlbGYudGVzdF9wb3J0Ci0KLSAg
ICAjIFRPRE8odHlvc2hpbm8pOiBVc2UgdGVhckRvd24gdG8ga2lsbCB0aGUgc2VydmVyLgotCi0g
ICAgZGVmIF9ydW5fcHl0aG9uX2NvbW1hbmQoc2VsZiwgY29tbWFuZGxpbmUsIHN0ZG91dD1Ob25l
LCBzdGRlcnI9Tm9uZSk6Ci0gICAgICAgIHJldHVybiBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhl
Y3V0YWJsZV0gKyBjb21tYW5kbGluZSwgY2xvc2VfZmRzPVRydWUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZG91dD1zdGRvdXQsIHN0ZGVycj1zdGRlcnIpCi0KLSAgICBkZWYg
X3J1bl9zZXJ2ZXIoc2VsZik6Ci0gICAgICAgIGFyZ3MgPSBbc2VsZi5zdGFuZGFsb25lX2NvbW1h
bmQsCi0gICAgICAgICAgICAgICAgJy1IJywgJ2xvY2FsaG9zdCcsCi0gICAgICAgICAgICAgICAg
Jy1WJywgJ2xvY2FsaG9zdCcsCi0gICAgICAgICAgICAgICAgJy1wJywgc3RyKHNlbGYudGVzdF9w
b3J0KSwKLSAgICAgICAgICAgICAgICAnLVAnLCBzdHIoc2VsZi50ZXN0X3BvcnQpLAotICAgICAg
ICAgICAgICAgICctZCcsIHNlbGYuZG9jdW1lbnRfcm9vdF0KLQotICAgICAgICAjIEluaGVyaXQg
dGhlIGxldmVsIHNldCB0byB0aGUgcm9vdCBsb2dnZXIgYnkgdGVzdCBydW5uZXIuCi0gICAgICAg
IHJvb3RfbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoKQotICAgICAgICBsb2dfbGV2ZWwgPSBy
b290X2xvZ2dlci5nZXRFZmZlY3RpdmVMZXZlbCgpCi0gICAgICAgIGlmIGxvZ19sZXZlbCAhPSBs
b2dnaW5nLk5PVFNFVDoKLSAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCctLWxvZy1sZXZlbCcpCi0g
ICAgICAgICAgICBhcmdzLmFwcGVuZChsb2dnaW5nLmdldExldmVsTmFtZShsb2dfbGV2ZWwpLmxv
d2VyKCkpCi0KLSAgICAgICAgcmV0dXJuIHNlbGYuX3J1bl9weXRob25fY29tbWFuZChhcmdzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zZWxmLnNlcnZl
cl9zdGRlcnIpCi0KLSAgICBkZWYgX2tpbGxfcHJvY2VzcyhzZWxmLCBwaWQpOgotICAgICAgICBp
ZiBzeXMucGxhdGZvcm0gaW4gKCd3aW4zMicsICdjeWd3aW4nKToKLSAgICAgICAgICAgIHN1YnBy
b2Nlc3MuY2FsbCgKLSAgICAgICAgICAgICAgICAoJ3Rhc2traWxsLmV4ZScsICcvZicsICcvcGlk
Jywgc3RyKHBpZCkpLCBjbG9zZV9mZHM9VHJ1ZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IG9zLmtpbGwocGlkLCBzaWduYWwuU0lHS0lMTCkKLQotCi1jbGFzcyBFbmRUb0VuZEh5QmlUZXN0
KEVuZFRvRW5kVGVzdEJhc2UpOgotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgRW5kVG9F
bmRUZXN0QmFzZS5zZXRVcChzZWxmKQotCi0gICAgZGVmIF9ydW5fdGVzdF93aXRoX2NsaWVudF9v
cHRpb25zKHNlbGYsIHRlc3RfZnVuY3Rpb24sIG9wdGlvbnMpOgotICAgICAgICBzZXJ2ZXIgPSBz
ZWxmLl9ydW5fc2VydmVyKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgIyBUT0RPKHR5b3No
aW5vKTogYWRkIHNvbWUgbG9naWMgdG8gcG9sbCB0aGUgc2VydmVyIHVudGlsIGl0Ci0gICAgICAg
ICAgICAjIGJlY29tZXMgcmVhZHkKLSAgICAgICAgICAgIHRpbWUuc2xlZXAoX1NFUlZFUl9XQVJN
VVBfSU5fU0VDKQotCi0gICAgICAgICAgICBjbGllbnQgPSBjbGllbnRfZm9yX3Rlc3RpbmcuY3Jl
YXRlX2NsaWVudChvcHRpb25zKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHRl
c3RfZnVuY3Rpb24oY2xpZW50KQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAg
ICBjbGllbnQuY2xvc2Vfc29ja2V0KCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNl
bGYuX2tpbGxfcHJvY2VzcyhzZXJ2ZXIucGlkKQotCi0gICAgZGVmIF9ydW5fdGVzdChzZWxmLCB0
ZXN0X2Z1bmN0aW9uKToKLSAgICAgICAgc2VsZi5fcnVuX3Rlc3Rfd2l0aF9jbGllbnRfb3B0aW9u
cyh0ZXN0X2Z1bmN0aW9uLCBzZWxmLl9vcHRpb25zKQotCi0gICAgZGVmIF9ydW5fZGVmbGF0ZV9m
cmFtZV90ZXN0KHNlbGYsIHRlc3RfZnVuY3Rpb24pOgotICAgICAgICBzZXJ2ZXIgPSBzZWxmLl9y
dW5fc2VydmVyKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdGltZS5zbGVlcChfU0VSVkVS
X1dBUk1VUF9JTl9TRUMpCi0KLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuZW5hYmxlX2RlZmxh
dGVfZnJhbWUoKQotICAgICAgICAgICAgY2xpZW50ID0gY2xpZW50X2Zvcl90ZXN0aW5nLmNyZWF0
ZV9jbGllbnQoc2VsZi5fb3B0aW9ucykKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAg
ICB0ZXN0X2Z1bmN0aW9uKGNsaWVudCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAg
ICAgICAgY2xpZW50LmNsb3NlX3NvY2tldCgpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAg
ICBzZWxmLl9raWxsX3Byb2Nlc3Moc2VydmVyLnBpZCkKLQotICAgIGRlZiBfcnVuX3Blcm1lc3Nh
Z2VfZGVmbGF0ZV90ZXN0KAotICAgICAgICAgICAgc2VsZiwgb2ZmZXIsIHJlc3BvbnNlX2NoZWNr
ZXIsIHRlc3RfZnVuY3Rpb24pOgotICAgICAgICBzZXJ2ZXIgPSBzZWxmLl9ydW5fc2VydmVyKCkK
LSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdGltZS5zbGVlcChfU0VSVkVSX1dBUk1VUF9JTl9T
RUMpCi0KLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuZXh0ZW5zaW9ucyArPSBvZmZlcgotICAg
ICAgICAgICAgc2VsZi5fb3B0aW9ucy5jaGVja19wZXJtZXNzYWdlX2RlZmxhdGUgPSByZXNwb25z
ZV9jaGVja2VyCi0gICAgICAgICAgICBjbGllbnQgPSBjbGllbnRfZm9yX3Rlc3RpbmcuY3JlYXRl
X2NsaWVudChzZWxmLl9vcHRpb25zKQotCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAg
ICAgY2xpZW50LmNvbm5lY3QoKQotCi0gICAgICAgICAgICAgICAgaWYgdGVzdF9mdW5jdGlvbiBp
cyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgdGVzdF9mdW5jdGlvbihjbGllbnQpCi0K
LSAgICAgICAgICAgICAgICBjbGllbnQuYXNzZXJ0X2Nvbm5lY3Rpb25fY2xvc2VkKCkKLSAgICAg
ICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgY2xpZW50LmNsb3NlX3NvY2tldCgpCi0g
ICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9raWxsX3Byb2Nlc3Moc2VydmVyLnBp
ZCkKLQotICAgIGRlZiBfcnVuX2Nsb3NlX3dpdGhfY29kZV9hbmRfcmVhc29uX3Rlc3Qoc2VsZiwg
dGVzdF9mdW5jdGlvbiwgY29kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVhc29uKToKLSAgICAgICAgc2VydmVyID0gc2VsZi5fcnVuX3NlcnZl
cigpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHRpbWUuc2xlZXAoX1NFUlZFUl9XQVJNVVBf
SU5fU0VDKQotCi0gICAgICAgICAgICBjbGllbnQgPSBjbGllbnRfZm9yX3Rlc3RpbmcuY3JlYXRl
X2NsaWVudChzZWxmLl9vcHRpb25zKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAg
IHRlc3RfZnVuY3Rpb24oY2xpZW50LCBjb2RlLCByZWFzb24pCi0gICAgICAgICAgICBmaW5hbGx5
OgotICAgICAgICAgICAgICAgIGNsaWVudC5jbG9zZV9zb2NrZXQoKQotICAgICAgICBmaW5hbGx5
OgotICAgICAgICAgICAgc2VsZi5fa2lsbF9wcm9jZXNzKHNlcnZlci5waWQpCi0KLSAgICBkZWYg
X3J1bl9odHRwX2ZhbGxiYWNrX3Rlc3Qoc2VsZiwgb3B0aW9ucywgc3RhdHVzKToKLSAgICAgICAg
c2VydmVyID0gc2VsZi5fcnVuX3NlcnZlcigpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHRp
bWUuc2xlZXAoX1NFUlZFUl9XQVJNVVBfSU5fU0VDKQotCi0gICAgICAgICAgICBjbGllbnQgPSBj
bGllbnRfZm9yX3Rlc3RpbmcuY3JlYXRlX2NsaWVudChvcHRpb25zKQotICAgICAgICAgICAgdHJ5
OgotICAgICAgICAgICAgICAgIGNsaWVudC5jb25uZWN0KCkKLSAgICAgICAgICAgICAgICBzZWxm
LmZhaWwoJ0NvdWxkIG5vdCBjYXRjaCBIdHRwU3RhdHVzRXhjZXB0aW9uJykKLSAgICAgICAgICAg
IGV4Y2VwdCBjbGllbnRfZm9yX3Rlc3RpbmcuSHR0cFN0YXR1c0V4Y2VwdGlvbiwgZToKLSAgICAg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgZS5zdGF0dXMpCi0gICAgICAgICAg
ICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnQ2F0Y2gg
dW5leHBlY3RlZCBleGNlcHRpb24nKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAg
ICAgICBjbGllbnQuY2xvc2Vfc29ja2V0KCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAg
IHNlbGYuX2tpbGxfcHJvY2VzcyhzZXJ2ZXIucGlkKQotCi0gICAgZGVmIF9ydW5fbXV4X3Rlc3Qo
c2VsZiwgdGVzdF9mdW5jdGlvbik6Ci0gICAgICAgIHNlcnZlciA9IHNlbGYuX3J1bl9zZXJ2ZXIo
KQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB0aW1lLnNsZWVwKF9TRVJWRVJfV0FSTVVQX0lO
X1NFQykKLQotICAgICAgICAgICAgY2xpZW50ID0gbXV4X2NsaWVudF9mb3JfdGVzdGluZy5NdXhD
bGllbnQoc2VsZi5fb3B0aW9ucykKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB0
ZXN0X2Z1bmN0aW9uKGNsaWVudCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAg
ICAgY2xpZW50LmNsb3NlX3NvY2tldCgpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBz
ZWxmLl9raWxsX3Byb2Nlc3Moc2VydmVyLnBpZCkKLQotICAgIGRlZiB0ZXN0X2VjaG8oc2VsZik6
Ci0gICAgICAgIHNlbGYuX3J1bl90ZXN0KF9lY2hvX2NoZWNrX3Byb2NlZHVyZSkKLQotICAgIGRl
ZiB0ZXN0X2VjaG9fYmluYXJ5KHNlbGYpOgotICAgICAgICBzZWxmLl9ydW5fdGVzdChfZWNob19j
aGVja19wcm9jZWR1cmVfd2l0aF9iaW5hcnkpCi0KLSAgICBkZWYgdGVzdF9lY2hvX3NlcnZlcl9j
bG9zZShzZWxmKToKLSAgICAgICAgc2VsZi5fcnVuX3Rlc3QoX2VjaG9fY2hlY2tfcHJvY2VkdXJl
X3dpdGhfZ29vZGJ5ZSkKLQotICAgIGRlZiB0ZXN0X3VubWFza2VkX2ZyYW1lKHNlbGYpOgotICAg
ICAgICBzZWxmLl9ydW5fdGVzdChfdW5tYXNrZWRfZnJhbWVfY2hlY2tfcHJvY2VkdXJlKQotCi0g
ICAgZGVmIHRlc3RfZWNob19kZWZsYXRlX2ZyYW1lKHNlbGYpOgotICAgICAgICBzZWxmLl9ydW5f
ZGVmbGF0ZV9mcmFtZV90ZXN0KF9lY2hvX2NoZWNrX3Byb2NlZHVyZSkKLQotICAgIGRlZiB0ZXN0
X2VjaG9fZGVmbGF0ZV9mcmFtZV9zZXJ2ZXJfY2xvc2Uoc2VsZik6Ci0gICAgICAgIHNlbGYuX3J1
bl9kZWZsYXRlX2ZyYW1lX3Rlc3QoCi0gICAgICAgICAgICBfZWNob19jaGVja19wcm9jZWR1cmVf
d2l0aF9nb29kYnllKQotCi0gICAgZGVmIHRlc3RfZWNob19wZXJtZXNzYWdlX2RlZmxhdGUoc2Vs
Zik6Ci0gICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGNsaWVudCk6Ci0gICAgICAgICAgICAjIEZy
b20gdGhlIGV4YW1wbGVzIGluIHRoZSBzcGVjLgotICAgICAgICAgICAgY29tcHJlc3NlZF9oZWxs
byA9ICdceGYyXHg0OFx4Y2RceGM5XHhjOVx4MDdceDAwJwotICAgICAgICAgICAgY2xpZW50Ll9z
dHJlYW0uc2VuZF9kYXRhKAotICAgICAgICAgICAgICAgICAgICBjb21wcmVzc2VkX2hlbGxvLAot
ICAgICAgICAgICAgICAgICAgICBjbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQsCi0gICAg
ICAgICAgICAgICAgICAgIHJzdjE9MSkKLSAgICAgICAgICAgIGNsaWVudC5fc3RyZWFtLmFzc2Vy
dF9yZWNlaXZlX2JpbmFyeSgKLSAgICAgICAgICAgICAgICAgICAgY29tcHJlc3NlZF9oZWxsbywK
LSAgICAgICAgICAgICAgICAgICAgb3Bjb2RlPWNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfVEVY
VCwKLSAgICAgICAgICAgICAgICAgICAgcnN2MT0xKQotCi0gICAgICAgICAgICBjbGllbnQuc2Vu
ZF9jbG9zZSgpCi0gICAgICAgICAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmVfY2xvc2UoKQotCi0g
ICAgICAgIGRlZiByZXNwb25zZV9jaGVja2VyKHBhcmFtZXRlcik6Ci0gICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFscygncGVybWVzc2FnZS1kZWZsYXRlJywgcGFyYW1ldGVyLm5hbWUoKSkKLSAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFtdLCBwYXJhbWV0ZXIuZ2V0X3BhcmFtZXRlcnMo
KSkKLQotICAgICAgICBzZWxmLl9ydW5fcGVybWVzc2FnZV9kZWZsYXRlX3Rlc3QoCi0gICAgICAg
ICAgICAgICAgWydwZXJtZXNzYWdlLWRlZmxhdGUnXSwKLSAgICAgICAgICAgICAgICByZXNwb25z
ZV9jaGVja2VyLAotICAgICAgICAgICAgICAgIHRlc3RfZnVuY3Rpb24pCi0KLSAgICBkZWYgdGVz
dF9lY2hvX3Blcm1lc3NhZ2VfZGVmbGF0ZV90d29fZnJhbWVzKHNlbGYpOgotICAgICAgICBkZWYg
dGVzdF9mdW5jdGlvbihjbGllbnQpOgotICAgICAgICAgICAgIyBGcm9tIHRoZSBleGFtcGxlcyBp
biB0aGUgc3BlYy4KLSAgICAgICAgICAgIGNsaWVudC5fc3RyZWFtLnNlbmRfZGF0YSgKLSAgICAg
ICAgICAgICAgICAgICAgJ1x4ZjJceDQ4XHhjZCcsCi0gICAgICAgICAgICAgICAgICAgIGNsaWVu
dF9mb3JfdGVzdGluZy5PUENPREVfVEVYVCwKLSAgICAgICAgICAgICAgICAgICAgZW5kPUZhbHNl
LAotICAgICAgICAgICAgICAgICAgICByc3YxPTEpCi0gICAgICAgICAgICBjbGllbnQuX3N0cmVh
bS5zZW5kX2RhdGEoCi0gICAgICAgICAgICAgICAgICAgICdceGM5XHhjOVx4MDdceDAwJywKLSAg
ICAgICAgICAgICAgICAgICAgY2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhUKQotICAgICAg
ICAgICAgY2xpZW50Ll9zdHJlYW0uYXNzZXJ0X3JlY2VpdmVfYmluYXJ5KAotICAgICAgICAgICAg
ICAgICAgICAnXHhmMlx4NDhceGNkXHhjOVx4YzlceDA3XHgwMCcsCi0gICAgICAgICAgICAgICAg
ICAgIG9wY29kZT1jbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQsCi0gICAgICAgICAgICAg
ICAgICAgIHJzdjE9MSkKLQotICAgICAgICAgICAgY2xpZW50LnNlbmRfY2xvc2UoKQotICAgICAg
ICAgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKCkKLQotICAgICAgICBkZWYgcmVzcG9u
c2VfY2hlY2tlcihwYXJhbWV0ZXIpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJ3Bl
cm1lc3NhZ2UtZGVmbGF0ZScsIHBhcmFtZXRlci5uYW1lKCkpCi0gICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFscyhbXSwgcGFyYW1ldGVyLmdldF9wYXJhbWV0ZXJzKCkpCi0KLSAgICAgICAgc2Vs
Zi5fcnVuX3Blcm1lc3NhZ2VfZGVmbGF0ZV90ZXN0KAotICAgICAgICAgICAgICAgIFsncGVybWVz
c2FnZS1kZWZsYXRlJ10sCi0gICAgICAgICAgICAgICAgcmVzcG9uc2VfY2hlY2tlciwKLSAgICAg
ICAgICAgICAgICB0ZXN0X2Z1bmN0aW9uKQotCi0gICAgZGVmIHRlc3RfZWNob19wZXJtZXNzYWdl
X2RlZmxhdGVfdHdvX21lc3NhZ2VzKHNlbGYpOgotICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbihj
bGllbnQpOgotICAgICAgICAgICAgIyBGcm9tIHRoZSBleGFtcGxlcyBpbiB0aGUgc3BlYy4KLSAg
ICAgICAgICAgIGNsaWVudC5fc3RyZWFtLnNlbmRfZGF0YSgKLSAgICAgICAgICAgICAgICAgICAg
J1x4ZjJceDQ4XHhjZFx4YzlceGM5XHgwN1x4MDAnLAotICAgICAgICAgICAgICAgICAgICBjbGll
bnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQsCi0gICAgICAgICAgICAgICAgICAgIHJzdjE9MSkK
LSAgICAgICAgICAgIGNsaWVudC5fc3RyZWFtLnNlbmRfZGF0YSgKLSAgICAgICAgICAgICAgICAg
ICAgJ1x4ZjJceDAwXHgxMVx4MDBceDAwJywKLSAgICAgICAgICAgICAgICAgICAgY2xpZW50X2Zv
cl90ZXN0aW5nLk9QQ09ERV9URVhULAotICAgICAgICAgICAgICAgICAgICByc3YxPTEpCi0gICAg
ICAgICAgICBjbGllbnQuX3N0cmVhbS5hc3NlcnRfcmVjZWl2ZV9iaW5hcnkoCi0gICAgICAgICAg
ICAgICAgICAgICdceGYyXHg0OFx4Y2RceGM5XHhjOVx4MDdceDAwJywKLSAgICAgICAgICAgICAg
ICAgICAgb3Bjb2RlPWNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfVEVYVCwKLSAgICAgICAgICAg
ICAgICAgICAgcnN2MT0xKQotICAgICAgICAgICAgY2xpZW50Ll9zdHJlYW0uYXNzZXJ0X3JlY2Vp
dmVfYmluYXJ5KAotICAgICAgICAgICAgICAgICAgICAnXHhmMlx4MDBceDExXHgwMFx4MDAnLAot
ICAgICAgICAgICAgICAgICAgICBvcGNvZGU9Y2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhU
LAotICAgICAgICAgICAgICAgICAgICByc3YxPTEpCi0KLSAgICAgICAgICAgIGNsaWVudC5zZW5k
X2Nsb3NlKCkKLSAgICAgICAgICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9zZSgpCi0KLSAg
ICAgICAgZGVmIHJlc3BvbnNlX2NoZWNrZXIocGFyYW1ldGVyKToKLSAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKCdwZXJtZXNzYWdlLWRlZmxhdGUnLCBwYXJhbWV0ZXIubmFtZSgpKQotICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoW10sIHBhcmFtZXRlci5nZXRfcGFyYW1ldGVycygp
KQotCi0gICAgICAgIHNlbGYuX3J1bl9wZXJtZXNzYWdlX2RlZmxhdGVfdGVzdCgKLSAgICAgICAg
ICAgICAgICBbJ3Blcm1lc3NhZ2UtZGVmbGF0ZSddLAotICAgICAgICAgICAgICAgIHJlc3BvbnNl
X2NoZWNrZXIsCi0gICAgICAgICAgICAgICAgdGVzdF9mdW5jdGlvbikKLQotICAgIGRlZiB0ZXN0
X2VjaG9fcGVybWVzc2FnZV9kZWZsYXRlX3R3b19tc2dzX3NlcnZlcl9ub19jb250ZXh0X3Rha2Vv
dmVyKHNlbGYpOgotICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbihjbGllbnQpOgotICAgICAgICAg
ICAgIyBGcm9tIHRoZSBleGFtcGxlcyBpbiB0aGUgc3BlYy4KLSAgICAgICAgICAgIGNsaWVudC5f
c3RyZWFtLnNlbmRfZGF0YSgKLSAgICAgICAgICAgICAgICAgICAgJ1x4ZjJceDQ4XHhjZFx4Yzlc
eGM5XHgwN1x4MDAnLAotICAgICAgICAgICAgICAgICAgICBjbGllbnRfZm9yX3Rlc3RpbmcuT1BD
T0RFX1RFWFQsCi0gICAgICAgICAgICAgICAgICAgIHJzdjE9MSkKLSAgICAgICAgICAgIGNsaWVu
dC5fc3RyZWFtLnNlbmRfZGF0YSgKLSAgICAgICAgICAgICAgICAgICAgJ1x4ZjJceDAwXHgxMVx4
MDBceDAwJywKLSAgICAgICAgICAgICAgICAgICAgY2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9U
RVhULAotICAgICAgICAgICAgICAgICAgICByc3YxPTEpCi0gICAgICAgICAgICBjbGllbnQuX3N0
cmVhbS5hc3NlcnRfcmVjZWl2ZV9iaW5hcnkoCi0gICAgICAgICAgICAgICAgICAgICdceGYyXHg0
OFx4Y2RceGM5XHhjOVx4MDdceDAwJywKLSAgICAgICAgICAgICAgICAgICAgb3Bjb2RlPWNsaWVu
dF9mb3JfdGVzdGluZy5PUENPREVfVEVYVCwKLSAgICAgICAgICAgICAgICAgICAgcnN2MT0xKQot
ICAgICAgICAgICAgY2xpZW50Ll9zdHJlYW0uYXNzZXJ0X3JlY2VpdmVfYmluYXJ5KAotICAgICAg
ICAgICAgICAgICAgICAnXHhmMlx4NDhceGNkXHhjOVx4YzlceDA3XHgwMCcsCi0gICAgICAgICAg
ICAgICAgICAgIG9wY29kZT1jbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQsCi0gICAgICAg
ICAgICAgICAgICAgIHJzdjE9MSkKLQotICAgICAgICAgICAgY2xpZW50LnNlbmRfY2xvc2UoKQot
ICAgICAgICAgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKCkKLQotICAgICAgICBkZWYg
cmVzcG9uc2VfY2hlY2tlcihwYXJhbWV0ZXIpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScsIHBhcmFtZXRlci5uYW1lKCkpCi0gICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscyhbKCdzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcicsIE5vbmUpXSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlci5nZXRfcGFyYW1ldGVycygp
KQotCi0gICAgICAgIHNlbGYuX3J1bl9wZXJtZXNzYWdlX2RlZmxhdGVfdGVzdCgKLSAgICAgICAg
ICAgICAgICBbJ3Blcm1lc3NhZ2UtZGVmbGF0ZTsgc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXIn
XSwKLSAgICAgICAgICAgICAgICByZXNwb25zZV9jaGVja2VyLAotICAgICAgICAgICAgICAgIHRl
c3RfZnVuY3Rpb24pCi0KLSAgICBkZWYgdGVzdF9lY2hvX3Blcm1lc3NhZ2VfZGVmbGF0ZV9wcmVm
ZXJlbmNlKHNlbGYpOgotICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbihjbGllbnQpOgotICAgICAg
ICAgICAgIyBGcm9tIHRoZSBleGFtcGxlcyBpbiB0aGUgc3BlYy4KLSAgICAgICAgICAgIGNvbXBy
ZXNzZWRfaGVsbG8gPSAnXHhmMlx4NDhceGNkXHhjOVx4YzlceDA3XHgwMCcKLSAgICAgICAgICAg
IGNsaWVudC5fc3RyZWFtLnNlbmRfZGF0YSgKLSAgICAgICAgICAgICAgICAgICAgY29tcHJlc3Nl
ZF9oZWxsbywKLSAgICAgICAgICAgICAgICAgICAgY2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9U
RVhULAotICAgICAgICAgICAgICAgICAgICByc3YxPTEpCi0gICAgICAgICAgICBjbGllbnQuX3N0
cmVhbS5hc3NlcnRfcmVjZWl2ZV9iaW5hcnkoCi0gICAgICAgICAgICAgICAgICAgIGNvbXByZXNz
ZWRfaGVsbG8sCi0gICAgICAgICAgICAgICAgICAgIG9wY29kZT1jbGllbnRfZm9yX3Rlc3Rpbmcu
T1BDT0RFX1RFWFQsCi0gICAgICAgICAgICAgICAgICAgIHJzdjE9MSkKLQotICAgICAgICAgICAg
Y2xpZW50LnNlbmRfY2xvc2UoKQotICAgICAgICAgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Ns
b3NlKCkKLQotICAgICAgICBkZWYgcmVzcG9uc2VfY2hlY2tlcihwYXJhbWV0ZXIpOgotICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScsIHBhcmFtZXRlci5u
YW1lKCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhbXSwgcGFyYW1ldGVyLmdldF9w
YXJhbWV0ZXJzKCkpCi0KLSAgICAgICAgc2VsZi5fcnVuX3Blcm1lc3NhZ2VfZGVmbGF0ZV90ZXN0
KAotICAgICAgICAgICAgICAgIFsncGVybWVzc2FnZS1kZWZsYXRlJywgJ2RlZmxhdGUtZnJhbWUn
XSwKLSAgICAgICAgICAgICAgICByZXNwb25zZV9jaGVja2VyLAotICAgICAgICAgICAgICAgIHRl
c3RfZnVuY3Rpb24pCi0KLSAgICBkZWYgdGVzdF9lY2hvX3Blcm1lc3NhZ2VfZGVmbGF0ZV93aXRo
X3BhcmFtZXRlcnMoc2VsZik6Ci0gICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGNsaWVudCk6Ci0g
ICAgICAgICAgICAjIEZyb20gdGhlIGV4YW1wbGVzIGluIHRoZSBzcGVjLgotICAgICAgICAgICAg
Y29tcHJlc3NlZF9oZWxsbyA9ICdceGYyXHg0OFx4Y2RceGM5XHhjOVx4MDdceDAwJwotICAgICAg
ICAgICAgY2xpZW50Ll9zdHJlYW0uc2VuZF9kYXRhKAotICAgICAgICAgICAgICAgICAgICBjb21w
cmVzc2VkX2hlbGxvLAotICAgICAgICAgICAgICAgICAgICBjbGllbnRfZm9yX3Rlc3RpbmcuT1BD
T0RFX1RFWFQsCi0gICAgICAgICAgICAgICAgICAgIHJzdjE9MSkKLSAgICAgICAgICAgIGNsaWVu
dC5fc3RyZWFtLmFzc2VydF9yZWNlaXZlX2JpbmFyeSgKLSAgICAgICAgICAgICAgICAgICAgY29t
cHJlc3NlZF9oZWxsbywKLSAgICAgICAgICAgICAgICAgICAgb3Bjb2RlPWNsaWVudF9mb3JfdGVz
dGluZy5PUENPREVfVEVYVCwKLSAgICAgICAgICAgICAgICAgICAgcnN2MT0xKQotCi0gICAgICAg
ICAgICBjbGllbnQuc2VuZF9jbG9zZSgpCi0gICAgICAgICAgICBjbGllbnQuYXNzZXJ0X3JlY2Vp
dmVfY2xvc2UoKQotCi0gICAgICAgIGRlZiByZXNwb25zZV9jaGVja2VyKHBhcmFtZXRlcik6Ci0g
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscygncGVybWVzc2FnZS1kZWZsYXRlJywgcGFyYW1l
dGVyLm5hbWUoKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFsoJ3NlcnZlcl9tYXhf
d2luZG93X2JpdHMnLCAnMTAnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ3Nl
cnZlcl9ub19jb250ZXh0X3Rha2VvdmVyJywgTm9uZSldLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcGFyYW1ldGVyLmdldF9wYXJhbWV0ZXJzKCkpCi0KLSAgICAgICAgc2VsZi5fcnVu
X3Blcm1lc3NhZ2VfZGVmbGF0ZV90ZXN0KAotICAgICAgICAgICAgICAgIFsncGVybWVzc2FnZS1k
ZWZsYXRlOyBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzPTEwOyAnCi0gICAgICAgICAgICAgICAgICdz
ZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlciddLAotICAgICAgICAgICAgICAgIHJlc3BvbnNlX2No
ZWNrZXIsCi0gICAgICAgICAgICAgICAgdGVzdF9mdW5jdGlvbikKLQotICAgIGRlZiB0ZXN0X2Vj
aG9fcGVybWVzc2FnZV9kZWZsYXRlX3dpdGhfYmFkX3NlcnZlcl9tYXhfd2luZG93X2JpdHMoc2Vs
Zik6Ci0gICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGNsaWVudCk6Ci0gICAgICAgICAgICBjbGll
bnQuc2VuZF9jbG9zZSgpCi0gICAgICAgICAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmVfY2xvc2Uo
KQotCi0gICAgICAgIGRlZiByZXNwb25zZV9jaGVja2VyKHBhcmFtZXRlcik6Ci0gICAgICAgICAg
ICByYWlzZSBFeGNlcHRpb24oJ1VuZXhwZWN0ZWQgYWNjZXB0YW5jZSBvZiBwZXJtZXNzYWdlLWRl
ZmxhdGUnKQotCi0gICAgICAgIHNlbGYuX3J1bl9wZXJtZXNzYWdlX2RlZmxhdGVfdGVzdCgKLSAg
ICAgICAgICAgICAgICBbJ3Blcm1lc3NhZ2UtZGVmbGF0ZTsgc2VydmVyX21heF93aW5kb3dfYml0
cz0zMDAwMDAwJ10sCi0gICAgICAgICAgICAgICAgcmVzcG9uc2VfY2hlY2tlciwKLSAgICAgICAg
ICAgICAgICB0ZXN0X2Z1bmN0aW9uKQotCi0gICAgZGVmIHRlc3RfZWNob19wZXJtZXNzYWdlX2Rl
ZmxhdGVfd2l0aF9iYWRfc2VydmVyX21heF93aW5kb3dfYml0cyhzZWxmKToKLSAgICAgICAgZGVm
IHRlc3RfZnVuY3Rpb24oY2xpZW50KToKLSAgICAgICAgICAgIGNsaWVudC5zZW5kX2Nsb3NlKCkK
LSAgICAgICAgICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9zZSgpCi0KLSAgICAgICAgZGVm
IHJlc3BvbnNlX2NoZWNrZXIocGFyYW1ldGVyKToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlv
bignVW5leHBlY3RlZCBhY2NlcHRhbmNlIG9mIHBlcm1lc3NhZ2UtZGVmbGF0ZScpCi0KLSAgICAg
ICAgc2VsZi5fcnVuX3Blcm1lc3NhZ2VfZGVmbGF0ZV90ZXN0KAotICAgICAgICAgICAgICAgIFsn
cGVybWVzc2FnZS1kZWZsYXRlOyBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzPTMwMDAwMDAnXSwKLSAg
ICAgICAgICAgICAgICByZXNwb25zZV9jaGVja2VyLAotICAgICAgICAgICAgICAgIHRlc3RfZnVu
Y3Rpb24pCi0KLSAgICBkZWYgdGVzdF9lY2hvX3Blcm1lc3NhZ2VfZGVmbGF0ZV93aXRoX3VuZGVm
aW5lZF9wYXJhbWV0ZXIoc2VsZik6Ci0gICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGNsaWVudCk6
Ci0gICAgICAgICAgICBjbGllbnQuc2VuZF9jbG9zZSgpCi0gICAgICAgICAgICBjbGllbnQuYXNz
ZXJ0X3JlY2VpdmVfY2xvc2UoKQotCi0gICAgICAgIGRlZiByZXNwb25zZV9jaGVja2VyKHBhcmFt
ZXRlcik6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1VuZXhwZWN0ZWQgYWNjZXB0YW5j
ZSBvZiBwZXJtZXNzYWdlLWRlZmxhdGUnKQotCi0gICAgICAgIHNlbGYuX3J1bl9wZXJtZXNzYWdl
X2RlZmxhdGVfdGVzdCgKLSAgICAgICAgICAgICAgICBbJ3Blcm1lc3NhZ2UtZGVmbGF0ZTsgZm9v
PWJhciddLAotICAgICAgICAgICAgICAgIHJlc3BvbnNlX2NoZWNrZXIsCi0gICAgICAgICAgICAg
ICAgdGVzdF9mdW5jdGlvbikKLQotICAgIGRlZiB0ZXN0X2VjaG9fY2xvc2Vfd2l0aF9jb2RlX2Fu
ZF9yZWFzb24oc2VsZik6Ci0gICAgICAgIHNlbGYuX29wdGlvbnMucmVzb3VyY2UgPSAnL2Nsb3Nl
JwotICAgICAgICBzZWxmLl9ydW5fY2xvc2Vfd2l0aF9jb2RlX2FuZF9yZWFzb25fdGVzdCgKLSAg
ICAgICAgICAgIF9lY2hvX2NoZWNrX3Byb2NlZHVyZV93aXRoX2NvZGVfYW5kX3JlYXNvbiwgMzMz
MywgJ3N1bnN1bnN1bnN1bicpCi0KLSAgICBkZWYgdGVzdF9lY2hvX2Nsb3NlX3dpdGhfZW1wdHlf
Ym9keShzZWxmKToKLSAgICAgICAgc2VsZi5fb3B0aW9ucy5yZXNvdXJjZSA9ICcvY2xvc2UnCi0g
ICAgICAgIHNlbGYuX3J1bl9jbG9zZV93aXRoX2NvZGVfYW5kX3JlYXNvbl90ZXN0KAotICAgICAg
ICAgICAgX2VjaG9fY2hlY2tfcHJvY2VkdXJlX3dpdGhfY29kZV9hbmRfcmVhc29uLCBOb25lLCAn
JykKLQotICAgIGRlZiB0ZXN0X211eF9lY2hvKHNlbGYpOgotICAgICAgICBzZWxmLl9ydW5fbXV4
X3Rlc3QoX211eF9lY2hvX2NoZWNrX3Byb2NlZHVyZSkKLQotICAgIGRlZiB0ZXN0X2Nsb3NlX29u
X3Byb3RvY29sX2Vycm9yKHNlbGYpOgotICAgICAgICAiIiJUZXN0cyB0aGF0IHRoZSBzZXJ2ZXIg
c2VuZHMgYSBjbG9zZSBmcmFtZSB3aXRoIHByb3RvY29sIGVycm9yIHN0YXR1cwotICAgICAgICBj
b2RlIHdoZW4gdGhlIGNsaWVudCBzZW5kcyBkYXRhIHdpdGggc29tZSBwcm90b2NvbCBlcnJvci4K
LSAgICAgICAgIiIiCi0KLSAgICAgICAgZGVmIHRlc3RfZnVuY3Rpb24oY2xpZW50KToKLSAgICAg
ICAgICAgIGNsaWVudC5jb25uZWN0KCkKLQotICAgICAgICAgICAgIyBJbnRlcm1lZGlhdGUgZnJh
bWUgd2l0aG91dCBhbnkgcHJlY2VkaW5nIHN0YXJ0IG9mIGZyYWdtZW50YXRpb24KLSAgICAgICAg
ICAgICMgZnJhbWUuCi0gICAgICAgICAgICBjbGllbnQuc2VuZF9mcmFtZV9vZl9hcmJpdHJhcnlf
Ynl0ZXMoJ1x4ODBceDgwJywgJycpCi0gICAgICAgICAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmVf
Y2xvc2UoCi0gICAgICAgICAgICAgICAgY2xpZW50X2Zvcl90ZXN0aW5nLlNUQVRVU19QUk9UT0NP
TF9FUlJPUikKLQotICAgICAgICBzZWxmLl9ydW5fdGVzdCh0ZXN0X2Z1bmN0aW9uKQotCi0gICAg
ZGVmIHRlc3RfY2xvc2Vfb25fdW5zdXBwb3J0ZWRfZnJhbWUoc2VsZik6Ci0gICAgICAgICIiIlRl
c3RzIHRoYXQgdGhlIHNlcnZlciBzZW5kcyBhIGNsb3NlIGZyYW1lIHdpdGggdW5zdXBwb3J0ZWQg
b3BlcmF0aW9uCi0gICAgICAgIHN0YXR1cyBjb2RlIHdoZW4gdGhlIGNsaWVudCBzZW5kcyBkYXRh
IGFza2luZyBzb21lIG9wZXJhdGlvbiB0aGF0IGlzCi0gICAgICAgIG5vdCBzdXBwb3J0ZWQgYnkg
dGhlIHNlcnZlci4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgZGVmIHRlc3RfZnVuY3Rpb24oY2xp
ZW50KToKLSAgICAgICAgICAgIGNsaWVudC5jb25uZWN0KCkKLQotICAgICAgICAgICAgIyBUZXh0
IGZyYW1lIHdpdGggUlNWMyBiaXQgcmFpc2VkLgotICAgICAgICAgICAgY2xpZW50LnNlbmRfZnJh
bWVfb2ZfYXJiaXRyYXJ5X2J5dGVzKCdceDkxXHg4MCcsICcnKQotICAgICAgICAgICAgY2xpZW50
LmFzc2VydF9yZWNlaXZlX2Nsb3NlKAotICAgICAgICAgICAgICAgIGNsaWVudF9mb3JfdGVzdGlu
Zy5TVEFUVVNfVU5TVVBQT1JURURfREFUQSkKLQotICAgICAgICBzZWxmLl9ydW5fdGVzdCh0ZXN0
X2Z1bmN0aW9uKQotCi0gICAgZGVmIHRlc3RfY2xvc2Vfb25faW52YWxpZF9mcmFtZShzZWxmKToK
LSAgICAgICAgIiIiVGVzdHMgdGhhdCB0aGUgc2VydmVyIHNlbmRzIGEgY2xvc2UgZnJhbWUgd2l0
aCBpbnZhbGlkIGZyYW1lIHBheWxvYWQKLSAgICAgICAgZGF0YSBzdGF0dXMgY29kZSB3aGVuIHRo
ZSBjbGllbnQgc2VuZHMgYW4gaW52YWxpZCBmcmFtZSBsaWtlIGNvbnRhaW5pbmcKLSAgICAgICAg
aW52YWxpZCBVVEYtOCBjaGFyYWN0ZXIuCi0gICAgICAgICIiIgotCi0gICAgICAgIGRlZiB0ZXN0
X2Z1bmN0aW9uKGNsaWVudCk6Ci0gICAgICAgICAgICBjbGllbnQuY29ubmVjdCgpCi0KLSAgICAg
ICAgICAgICMgVGV4dCBmcmFtZSB3aXRoIGludmFsaWQgVVRGLTggc3RyaW5nLgotICAgICAgICAg
ICAgY2xpZW50LnNlbmRfbWVzc2FnZSgnXHg4MCcsIHJhdz1UcnVlKQotICAgICAgICAgICAgY2xp
ZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKAotICAgICAgICAgICAgICAgIGNsaWVudF9mb3JfdGVz
dGluZy5TVEFUVVNfSU5WQUxJRF9GUkFNRV9QQVlMT0FEX0RBVEEpCi0KLSAgICAgICAgc2VsZi5f
cnVuX3Rlc3QodGVzdF9mdW5jdGlvbikKLQotICAgIGRlZiB0ZXN0X2Nsb3NlX29uX2ludGVybmFs
X2VuZHBvaW50X2Vycm9yKHNlbGYpOgotICAgICAgICAiIiJUZXN0cyB0aGF0IHRoZSBzZXJ2ZXIg
c2VuZHMgYSBjbG9zZSBmcmFtZSB3aXRoIGludGVybmFsIGVuZHBvaW50Ci0gICAgICAgIGVycm9y
IHN0YXR1cyBjb2RlIHdoZW4gdGhlIGhhbmRsZXIgZG9lcyBiYWQgb3BlcmF0aW9uLgotICAgICAg
ICAiIiIKLQotICAgICAgICBzZWxmLl9vcHRpb25zLnJlc291cmNlID0gJy9pbnRlcm5hbF9lcnJv
cicKLQotICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbihjbGllbnQpOgotICAgICAgICAgICAgY2xp
ZW50LmNvbm5lY3QoKQotICAgICAgICAgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKAot
ICAgICAgICAgICAgICAgIGNsaWVudF9mb3JfdGVzdGluZy5TVEFUVVNfSU5URVJOQUxfRU5EUE9J
TlRfRVJST1IpCi0KLSAgICAgICAgc2VsZi5fcnVuX3Rlc3QodGVzdF9mdW5jdGlvbikKLQotICAg
ICMgVE9ETyh0b3lvc2hpbSk6IEFkZCB0ZXN0cyB0byB2ZXJpZnkgaW52YWxpZCBhYnNvbHV0ZSB1
cmkgaGFuZGxpbmcgbGlrZQotICAgICMgaG9zdCB1bm1hdGNoLCBwb3J0IHVubWF0Y2ggYW5kIGlu
dmFsaWQgcG9ydCBkZXNjcmlwdGlvbiAoJzonIHdpdGhvdXQgcG9ydAotICAgICMgbnVtYmVyKS4K
LQotICAgIGRlZiB0ZXN0X2Fic29sdXRlX3VyaShzZWxmKToKLSAgICAgICAgIiIiVGVzdHMgYWJz
b2x1dGUgdXJpIHJlcXVlc3QuIiIiCi0KLSAgICAgICAgb3B0aW9ucyA9IHNlbGYuX29wdGlvbnMK
LSAgICAgICAgb3B0aW9ucy5yZXNvdXJjZSA9ICd3czovL2xvY2FsaG9zdDolZC9lY2hvJyAlIG9w
dGlvbnMuc2VydmVyX3BvcnQKLSAgICAgICAgc2VsZi5fcnVuX3Rlc3Rfd2l0aF9jbGllbnRfb3B0
aW9ucyhfZWNob19jaGVja19wcm9jZWR1cmUsIG9wdGlvbnMpCi0KLSAgICBkZWYgdGVzdF9vcmln
aW5fY2hlY2soc2VsZik6Ci0gICAgICAgICIiIlRlc3RzIGh0dHAgZmFsbGJhY2sgb24gb3JpZ2lu
IGNoZWNrIGZhaWwuIiIiCi0KLSAgICAgICAgb3B0aW9ucyA9IHNlbGYuX29wdGlvbnMKLSAgICAg
ICAgb3B0aW9ucy5yZXNvdXJjZSA9ICcvb3JpZ2luX2NoZWNrJwotICAgICAgICAjIFNlcnZlciBz
aG93cyB3YXJuaW5nIG1lc3NhZ2UgZm9yIGh0dHAgNDAzIGZhbGxiYWNrLiBUaGlzIHdhcm5pbmcK
LSAgICAgICAgIyBtZXNzYWdlIGlzIGNvbmZ1c2luZy4gRm9sbG93aW5nIHBpcGUgZGlzcG9zZXMg
d2FybmluZyBtZXNzYWdlcy4KLSAgICAgICAgc2VsZi5zZXJ2ZXJfc3RkZXJyID0gc3VicHJvY2Vz
cy5QSVBFCi0gICAgICAgIHNlbGYuX3J1bl9odHRwX2ZhbGxiYWNrX3Rlc3Qob3B0aW9ucywgNDAz
KQotCi0gICAgZGVmIHRlc3RfdmVyc2lvbl9jaGVjayhzZWxmKToKLSAgICAgICAgIiIiVGVzdHMg
aHR0cCBmYWxsYmFjayBvbiB2ZXJzaW9uIGNoZWNrIGZhaWwuIiIiCi0KLSAgICAgICAgb3B0aW9u
cyA9IHNlbGYuX29wdGlvbnMKLSAgICAgICAgb3B0aW9ucy52ZXJzaW9uID0gOTkKLSAgICAgICAg
c2VsZi5fcnVuX2h0dHBfZmFsbGJhY2tfdGVzdChvcHRpb25zLCA0MDApCi0KLQotY2xhc3MgRW5k
VG9FbmRIeUJpMDBUZXN0KEVuZFRvRW5kVGVzdEJhc2UpOgotICAgIGRlZiBzZXRVcChzZWxmKToK
LSAgICAgICAgRW5kVG9FbmRUZXN0QmFzZS5zZXRVcChzZWxmKQotCi0gICAgZGVmIF9ydW5fdGVz
dChzZWxmLCB0ZXN0X2Z1bmN0aW9uKToKLSAgICAgICAgc2VydmVyID0gc2VsZi5fcnVuX3NlcnZl
cigpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHRpbWUuc2xlZXAoX1NFUlZFUl9XQVJNVVBf
SU5fU0VDKQotCi0gICAgICAgICAgICBjbGllbnQgPSBjbGllbnRfZm9yX3Rlc3RpbmcuY3JlYXRl
X2NsaWVudF9oeWJpMDAoc2VsZi5fb3B0aW9ucykKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAg
ICAgICAgICB0ZXN0X2Z1bmN0aW9uKGNsaWVudCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAg
ICAgICAgICAgICAgY2xpZW50LmNsb3NlX3NvY2tldCgpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAg
ICAgICAgICBzZWxmLl9raWxsX3Byb2Nlc3Moc2VydmVyLnBpZCkKLQotICAgIGRlZiB0ZXN0X2Vj
aG8oc2VsZik6Ci0gICAgICAgIHNlbGYuX3J1bl90ZXN0KF9lY2hvX2NoZWNrX3Byb2NlZHVyZSkK
LQotICAgIGRlZiB0ZXN0X2VjaG9fc2VydmVyX2Nsb3NlKHNlbGYpOgotICAgICAgICBzZWxmLl9y
dW5fdGVzdChfZWNob19jaGVja19wcm9jZWR1cmVfd2l0aF9nb29kYnllKQotCi0KLWNsYXNzIEVu
ZFRvRW5kVGVzdFdpdGhFY2hvQ2xpZW50KEVuZFRvRW5kVGVzdEJhc2UpOgotICAgIGRlZiBzZXRV
cChzZWxmKToKLSAgICAgICAgRW5kVG9FbmRUZXN0QmFzZS5zZXRVcChzZWxmKQotCi0gICAgZGVm
IF9jaGVja19leGFtcGxlX2VjaG9fY2xpZW50X3Jlc3VsdCgKLSAgICAgICAgc2VsZiwgZXhwZWN0
ZWQsIHN0ZG91dGRhdGEsIHN0ZGVycmRhdGEpOgotICAgICAgICBhY3R1YWwgPSBzdGRvdXRkYXRh
LmRlY29kZSgidXRmLTgiKQotICAgICAgICBpZiBhY3R1YWwgIT0gZXhwZWN0ZWQ6Ci0gICAgICAg
ICAgICByYWlzZSBFeGNlcHRpb24oJ1VuZXhwZWN0ZWQgcmVzdWx0IG9uIGV4YW1wbGUgZWNobyBj
bGllbnQ6ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJXIgKGV4cGVjdGVkKSB2cyAl
ciAoYWN0dWFsKScgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChleHBlY3RlZCwgYWN0
dWFsKSkKLSAgICAgICAgaWYgc3RkZXJyZGF0YSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHJh
aXNlIEV4Y2VwdGlvbignVW5leHBlY3RlZCBlcnJvciBtZXNzYWdlIG9uIGV4YW1wbGUgZWNobyAn
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NsaWVudDogJXInICUgc3RkZXJyZGF0YSkK
LQotICAgIGRlZiB0ZXN0X2V4YW1wbGVfZWNob19jbGllbnQoc2VsZik6Ci0gICAgICAgICIiIlRl
c3RzIHRoYXQgdGhlIGVjaG9fY2xpZW50LnB5IGV4YW1wbGUgY2FuIHRhbGsgd2l0aCB0aGUgc2Vy
dmVyLiIiIgotCi0gICAgICAgIHNlcnZlciA9IHNlbGYuX3J1bl9zZXJ2ZXIoKQotICAgICAgICB0
cnk6Ci0gICAgICAgICAgICB0aW1lLnNsZWVwKF9TRVJWRVJfV0FSTVVQX0lOX1NFQykKLQotICAg
ICAgICAgICAgY2xpZW50X2NvbW1hbmQgPSBvcy5wYXRoLmpvaW4oCi0gICAgICAgICAgICAgICAg
c2VsZi50b3BfZGlyLCAnZXhhbXBsZScsICdlY2hvX2NsaWVudC5weScpCi0KLSAgICAgICAgICAg
ICMgRXhwZWN0ZWQgb3V0cHV0IGZvciB0aGUgZGVmYXVsdCBtZXNzYWdlcy4KLSAgICAgICAgICAg
IGRlZmF1bHRfZXhwZWN0YXRpb24gPSAoJ1NlbmQ6IEhlbGxvXG4nICdSZWN2OiBIZWxsb1xuJwot
ICAgICAgICAgICAgICAgIHUnU2VuZDogXHU2NWU1XHU2NzJjXG4nIHUnUmVjdjogXHU2NWU1XHU2
NzJjXG4nCi0gICAgICAgICAgICAgICAgJ1NlbmQgY2xvc2VcbicgJ1JlY3YgYWNrXG4nKQotCi0g
ICAgICAgICAgICBhcmdzID0gW2NsaWVudF9jb21tYW5kLAotICAgICAgICAgICAgICAgICAgICAn
LXAnLCBzdHIoc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfcG9ydCldCi0gICAgICAgICAgICBjbGllbnQg
PSBzZWxmLl9ydW5fcHl0aG9uX2NvbW1hbmQoYXJncywgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkK
LSAgICAgICAgICAgIHN0ZG91dGRhdGEsIHN0ZGVycmRhdGEgPSBjbGllbnQuY29tbXVuaWNhdGUo
KQotICAgICAgICAgICAgc2VsZi5fY2hlY2tfZXhhbXBsZV9lY2hvX2NsaWVudF9yZXN1bHQoCi0g
ICAgICAgICAgICAgICAgICAgIGRlZmF1bHRfZXhwZWN0YXRpb24sIHN0ZG91dGRhdGEsIHN0ZGVy
cmRhdGEpCi0KLSAgICAgICAgICAgICMgUHJvY2VzcyBhIGJpZyBtZXNzYWdlIGZvciB3aGljaCBl
eHRlbmRlZCBwYXlsb2FkIGxlbmd0aCBpcyB1c2VkLgotICAgICAgICAgICAgIyBUbyBoYW5kbGUg
ZXh0ZW5kZWQgcGF5bG9hZCBsZW5ndGgsIHdzX3ZlcnNpb24gYXR0cmlidXRlIHdpbGwgYmUKLSAg
ICAgICAgICAgICMgYWNjZXNzZWQuIFRoaXMgdGVzdCBjaGVja3MgdGhhdCB3c192ZXJzaW9uIGlz
IGNvcnJlY3RseSBzZXQuCi0gICAgICAgICAgICBiaWdfbWVzc2FnZSA9ICdhJyAqIDEwMjQKLSAg
ICAgICAgICAgIGFyZ3MgPSBbY2xpZW50X2NvbW1hbmQsCi0gICAgICAgICAgICAgICAgICAgICct
cCcsIHN0cihzZWxmLl9vcHRpb25zLnNlcnZlcl9wb3J0KSwKLSAgICAgICAgICAgICAgICAgICAg
Jy1tJywgYmlnX21lc3NhZ2VdCi0gICAgICAgICAgICBjbGllbnQgPSBzZWxmLl9ydW5fcHl0aG9u
X2NvbW1hbmQoYXJncywgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKLSAgICAgICAgICAgIHN0ZG91
dGRhdGEsIHN0ZGVycmRhdGEgPSBjbGllbnQuY29tbXVuaWNhdGUoKQotICAgICAgICAgICAgZXhw
ZWN0ZWQgPSAoJ1NlbmQ6ICVzXG5SZWN2OiAlc1xuU2VuZCBjbG9zZVxuUmVjdiBhY2tcbicgJQot
ICAgICAgICAgICAgICAgICAgICAgICAgKGJpZ19tZXNzYWdlLCBiaWdfbWVzc2FnZSkpCi0gICAg
ICAgICAgICBzZWxmLl9jaGVja19leGFtcGxlX2VjaG9fY2xpZW50X3Jlc3VsdCgKLSAgICAgICAg
ICAgICAgICBleHBlY3RlZCwgc3Rkb3V0ZGF0YSwgc3RkZXJyZGF0YSkKLQotICAgICAgICAgICAg
IyBUZXN0IHRoZSBwZXJtZXNzYWdlLWRlZmxhdGUgZXh0ZW5zaW9uLgotICAgICAgICAgICAgYXJn
cyA9IFtjbGllbnRfY29tbWFuZCwKLSAgICAgICAgICAgICAgICAgICAgJy1wJywgc3RyKHNlbGYu
X29wdGlvbnMuc2VydmVyX3BvcnQpLAotICAgICAgICAgICAgICAgICAgICAnLS11c2VfcGVybWVz
c2FnZV9kZWZsYXRlJ10KLSAgICAgICAgICAgIGNsaWVudCA9IHNlbGYuX3J1bl9weXRob25fY29t
bWFuZChhcmdzLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKQotICAgICAgICAgICAgc3Rkb3V0ZGF0
YSwgc3RkZXJyZGF0YSA9IGNsaWVudC5jb21tdW5pY2F0ZSgpCi0gICAgICAgICAgICBzZWxmLl9j
aGVja19leGFtcGxlX2VjaG9fY2xpZW50X3Jlc3VsdCgKLSAgICAgICAgICAgICAgICAgICAgZGVm
YXVsdF9leHBlY3RhdGlvbiwgc3Rkb3V0ZGF0YSwgc3RkZXJyZGF0YSkKLSAgICAgICAgZmluYWxs
eToKLSAgICAgICAgICAgIHNlbGYuX2tpbGxfcHJvY2VzcyhzZXJ2ZXIucGlkKQotCi0KLWlmIF9f
bmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdW5pdHRlc3QubWFpbigpCi0KLQotIyB2aTpzdHM9
NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RfZXh0ZW5zaW9ucy5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvc3JjL3Rlc3QvdGVzdF9leHRlbnNpb25zLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA2YzhiMTI2MmQ4OWI5NDk2NDk2NWMzYzM4ZDVjYzQ5NDQ3OWMxYjY3Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVz
dF9leHRlbnNpb25zLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzYwICswLDAgQEAKLSMhL3Vzci9i
aW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KLSMgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0Ogot
IwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiVGVzdHMgZm9yIGV4dGVu
c2lvbnMgbW9kdWxlLiIiIgotCi0KLWltcG9ydCB1bml0dGVzdAotaW1wb3J0IHpsaWIKLQotaW1w
b3J0IHNldF9zeXNfcGF0aCAgIyBVcGRhdGUgc3lzLnBhdGggdG8gbG9jYXRlIG1vZF9weXdlYnNv
Y2tldCBtb2R1bGUuCi0KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KLWZyb20g
bW9kX3B5d2Vic29ja2V0IGltcG9ydCBleHRlbnNpb25zCi0KLQotY2xhc3MgRXh0ZW5zaW9uc1Rl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIkEgdW5pdHRlc3QgZm9yIG5vbi1jbGFzcyBt
ZXRob2RzIGluIGV4dGVuc2lvbnMucHkiIiIKLQotICAgIGRlZiB0ZXN0X3BhcnNlX3dpbmRvd19i
aXRzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBleHRlbnNp
b25zLl9wYXJzZV93aW5kb3dfYml0cywgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMo
VmFsdWVFcnJvciwgZXh0ZW5zaW9ucy5fcGFyc2Vfd2luZG93X2JpdHMsICdmb29iYXInKQotICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9wYXJzZV93aW5k
b3dfYml0cywgJyA4ICcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV4
dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCAnYThhJykKLSAgICAgICAgc2VsZi5hc3NlcnRS
YWlzZXMoVmFsdWVFcnJvciwgZXh0ZW5zaW9ucy5fcGFyc2Vfd2luZG93X2JpdHMsICcwMDAwMCcp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV4dGVuc2lvbnMuX3BhcnNl
X3dpbmRvd19iaXRzLCAnMDAwMDgnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVy
cm9yLCBleHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0cywgJzB4OCcpCi0KLSAgICAgICAgc2Vs
Zi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZXh0ZW5zaW9ucy5fcGFyc2Vfd2luZG93X2JpdHMs
ICc5LjUnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBleHRlbnNpb25z
Ll9wYXJzZV93aW5kb3dfYml0cywgJzguMCcpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGV4
dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCAnOCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShleHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0cywgJzE1JykKLQotICAgICAgICBzZWxmLmFz
c2VydFJhaXNlcyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0cywgJy04
JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZXh0ZW5zaW9ucy5fcGFy
c2Vfd2luZG93X2JpdHMsICcwJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJv
ciwgZXh0ZW5zaW9ucy5fcGFyc2Vfd2luZG93X2JpdHMsICc3JykKLQotICAgICAgICBzZWxmLmFz
c2VydFJhaXNlcyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0cywgJzE2
JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCi0gICAgICAgICAgICAgICAgVmFsdWVFcnJv
ciwgZXh0ZW5zaW9ucy5fcGFyc2Vfd2luZG93X2JpdHMsICcxMDAwMDAwMCcpCi0KLQotY2xhc3Mg
Q29tcHJlc3Npb25NZXRob2RQYXJhbWV0ZXJQYXJzZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
LSAgICAiIiJBIHVuaXR0ZXN0IGZvciBfcGFyc2VfY29tcHJlc3Npb25fbWV0aG9kIHdoaWNoIHBh
cnNlcyB0aGUgY29tcHJlc3Npb24KLSAgICBtZXRob2QgZGVzY3JpcHRpb24gdXNlZCBieSBwZXJm
cmFtZS1jb21wcmVzc2lvbiBhbmQgcGVybWVzc2FnZS1jb21wcmVzc2lvbgotICAgIGV4dGVuc2lv
biBpbiB0aGVpciAibWV0aG9kIiBleHRlbnNpb24gcGFyYW1ldGVyLgotICAgICIiIgotCi0gICAg
ZGVmIHRlc3RfcGFyc2VfbWV0aG9kX3NpbXBsZShzZWxmKToKLSAgICAgICAgbWV0aG9kX2xpc3Qg
PSBleHRlbnNpb25zLl9wYXJzZV9jb21wcmVzc2lvbl9tZXRob2QoJ2ZvbycpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoMSwgbGVuKG1ldGhvZF9saXN0KSkKLSAgICAgICAgbWV0aG9kID0gbWV0
aG9kX2xpc3RbMF0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZm9vJywgbWV0aG9kLm5hbWUo
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBsZW4obWV0aG9kLmdldF9wYXJhbWV0ZXJz
KCkpKQotCi0gICAgZGVmIHRlc3RfcGFyc2VfbWV0aG9kX3dpdGhfcGFyYW1ldGVyKHNlbGYpOgot
ICAgICAgICBtZXRob2RfbGlzdCA9IGV4dGVuc2lvbnMuX3BhcnNlX2NvbXByZXNzaW9uX21ldGhv
ZCgnZm9vOyB4OyB5PTEwJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4obWV0aG9k
X2xpc3QpKQotICAgICAgICBtZXRob2QgPSBtZXRob2RfbGlzdFswXQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCdmb28nLCBtZXRob2QubmFtZSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KDIsIGxlbihtZXRob2QuZ2V0X3BhcmFtZXRlcnMoKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShtZXRob2QuaGFzX3BhcmFtZXRlcigneCcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5v
bmUsIG1ldGhvZC5nZXRfcGFyYW1ldGVyX3ZhbHVlKCd4JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShtZXRob2QuaGFzX3BhcmFtZXRlcigneScpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCcxMCcsIG1ldGhvZC5nZXRfcGFyYW1ldGVyX3ZhbHVlKCd5JykpCi0KLSAgICBkZWYgdGVzdF9w
YXJzZV9tZXRob2Rfd2l0aF9xdW90ZWRfcGFyYW1ldGVyKHNlbGYpOgotICAgICAgICBtZXRob2Rf
bGlzdCA9IGV4dGVuc2lvbnMuX3BhcnNlX2NvbXByZXNzaW9uX21ldGhvZCgKLSAgICAgICAgICAg
ICdmb287IHg9IkhlbGxvIFdvcmxkIjsgeT0xMCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
MSwgbGVuKG1ldGhvZF9saXN0KSkKLSAgICAgICAgbWV0aG9kID0gbWV0aG9kX2xpc3RbMF0KLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZm9vJywgbWV0aG9kLm5hbWUoKSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgyLCBsZW4obWV0aG9kLmdldF9wYXJhbWV0ZXJzKCkpKQotICAgICAgICBz
ZWxmLmFzc2VydFRydWUobWV0aG9kLmhhc19wYXJhbWV0ZXIoJ3gnKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnSGVsbG8gV29ybGQnLCBtZXRob2QuZ2V0X3BhcmFtZXRlcl92YWx1ZSgneCcp
KQotICAgICAgICBzZWxmLmFzc2VydFRydWUobWV0aG9kLmhhc19wYXJhbWV0ZXIoJ3knKSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMTAnLCBtZXRob2QuZ2V0X3BhcmFtZXRlcl92YWx1ZSgn
eScpKQotCi0gICAgZGVmIHRlc3RfcGFyc2VfbWV0aG9kX211bHRpcGxlKHNlbGYpOgotICAgICAg
ICBtZXRob2RfbGlzdCA9IGV4dGVuc2lvbnMuX3BhcnNlX2NvbXByZXNzaW9uX21ldGhvZCgnZm9v
LCBiYXInKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGxlbihtZXRob2RfbGlzdCkpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2ZvbycsIG1ldGhvZF9saXN0WzBdLm5hbWUoKSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBsZW4obWV0aG9kX2xpc3RbMF0uZ2V0X3BhcmFtZXRl
cnMoKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2JhcicsIG1ldGhvZF9saXN0WzFdLm5h
bWUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBsZW4obWV0aG9kX2xpc3RbMV0uZ2V0
X3BhcmFtZXRlcnMoKSkpCi0KLSAgICBkZWYgdGVzdF9wYXJzZV9tZXRob2RfbXVsdGlwbGVfbWV0
aG9kc193aXRoX3F1b3RlZF9wYXJhbWV0ZXIoc2VsZik6Ci0gICAgICAgIG1ldGhvZF9saXN0ID0g
ZXh0ZW5zaW9ucy5fcGFyc2VfY29tcHJlc3Npb25fbWV0aG9kKAotICAgICAgICAgICAgJ2Zvbzsg
eD0iSGVsbG8gV29ybGQiLCBiYXI7IHk9MTAnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIs
IGxlbihtZXRob2RfbGlzdCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2ZvbycsIG1ldGhv
ZF9saXN0WzBdLm5hbWUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4obWV0aG9k
X2xpc3RbMF0uZ2V0X3BhcmFtZXRlcnMoKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtZXRo
b2RfbGlzdFswXS5oYXNfcGFyYW1ldGVyKCd4JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
J0hlbGxvIFdvcmxkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2RfbGlzdFswXS5n
ZXRfcGFyYW1ldGVyX3ZhbHVlKCd4JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2Jhcics
IG1ldGhvZF9saXN0WzFdLm5hbWUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4o
bWV0aG9kX2xpc3RbMV0uZ2V0X3BhcmFtZXRlcnMoKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShtZXRob2RfbGlzdFsxXS5oYXNfcGFyYW1ldGVyKCd5JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJzEwJywgbWV0aG9kX2xpc3RbMV0uZ2V0X3BhcmFtZXRlcl92YWx1ZSgneScpKQotCi0g
ICAgZGVmIHRlc3RfY3JlYXRlX21ldGhvZF9kZXNjX3NpbXBsZShzZWxmKToKLSAgICAgICAgcGFy
YW1zID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcignZm9vJykKLSAgICAgICAgZGVzYyA9IGV4
dGVuc2lvbnMuX2NyZWF0ZV9hY2NlcHRlZF9tZXRob2RfZGVzYygnZm9vJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0X3Bh
cmFtZXRlcnMoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZm9vJywgZGVzYykKLQotICAg
IGRlZiB0ZXN0X2NyZWF0ZV9tZXRob2RfZGVzY193aXRoX3BhcmFtZXRlcnMoc2VsZik6Ci0gICAg
ICAgIHBhcmFtcyA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ2ZvbycpCi0gICAgICAgIHBh
cmFtcy5hZGRfcGFyYW1ldGVyKCd4JywgJ0hlbGxvLCBXb3JsZCcpCi0gICAgICAgIHBhcmFtcy5h
ZGRfcGFyYW1ldGVyKCd5JywgJzEwJykKLSAgICAgICAgZGVzYyA9IGV4dGVuc2lvbnMuX2NyZWF0
ZV9hY2NlcHRlZF9tZXRob2RfZGVzYygnZm9vJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0X3BhcmFtZXRlcnMoKSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZm9vOyB4PSJIZWxsbywgV29ybGQiOyB5PTEwJywgZGVz
YykKLQotCi1jbGFzcyBEZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3JQYXJzaW5nVGVzdCh1
bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiQSB1bml0dGVzdCBmb3IgY2hlY2tpbmcgdGhhdCBE
ZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IgcGFyc2VzIGdpdmVuCi0gICAgZXh0ZW5zaW9u
IHBhcmFtZXRlciBjb3JyZWN0bHkuCi0gICAgIiIiCi0KLSAgICBkZWYgdGVzdF9yZWdpc3RyeShz
ZWxmKToKLSAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5nZXRfZXh0ZW5zaW9uX3Byb2Nl
c3NvcigKLSAgICAgICAgICAgICAgICBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKCdkZWZsYXRl
LWZyYW1lJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShwcm9jZXNzb3IsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25zLkRlZmxhdGVGcmFtZUV4dGVuc2lv
blByb2Nlc3NvcikKLQotICAgICAgICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLmdldF9leHRlbnNp
b25fcHJvY2Vzc29yKAotICAgICAgICAgICAgICAgIGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIo
J3gtd2Via2l0LWRlZmxhdGUtZnJhbWUnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNl
KHByb2Nlc3NvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbnMuRGVm
bGF0ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yKQotCi0gICAgZGVmIHRlc3RfbWluaW1hbF9vZmZl
cihzZWxmKToKLSAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5EZWZsYXRlRnJhbWVFeHRl
bnNpb25Qcm9jZXNzb3IoCi0gICAgICAgICAgICBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKCdw
ZXJmcmFtZS1kZWZsYXRlJykpCi0KLSAgICAgICAgcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4
dGVuc2lvbl9yZXNwb25zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3BlcmZyYW1lLWRl
ZmxhdGUnLCByZXNwb25zZS5uYW1lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgbGVu
KHJlc3BvbnNlLmdldF9wYXJhbWV0ZXJzKCkpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
emxpYi5NQVhfV0JJVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc29yLl9yZmMx
OTc5X2RlZmxhdGVyLl93aW5kb3dfYml0cykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShwcm9j
ZXNzb3IuX3JmYzE5NzlfZGVmbGF0ZXIuX25vX2NvbnRleHRfdGFrZW92ZXIpCi0KLSAgICBkZWYg
dGVzdF9vZmZlcl93aXRoX21heF93aW5kb3dfYml0cyhzZWxmKToKLSAgICAgICAgcGFyYW1ldGVy
ID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigncGVyZnJhbWUtZGVmbGF0ZScpCi0gICAgICAg
IHBhcmFtZXRlci5hZGRfcGFyYW1ldGVyKCdtYXhfd2luZG93X2JpdHMnLCAnMTAnKQotICAgICAg
ICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLkRlZmxhdGVGcmFtZUV4dGVuc2lvblByb2Nlc3Nvcihw
YXJhbWV0ZXIpCi0KLSAgICAgICAgcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9y
ZXNwb25zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3BlcmZyYW1lLWRlZmxhdGUnLCBy
ZXNwb25zZS5uYW1lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgbGVuKHJlc3BvbnNl
LmdldF9wYXJhbWV0ZXJzKCkpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTAsIHByb2Nl
c3Nvci5fcmZjMTk3OV9kZWZsYXRlci5fd2luZG93X2JpdHMpCi0KLSAgICBkZWYgdGVzdF9vZmZl
cl93aXRoX291dF9vZl9yYW5nZV9tYXhfd2luZG93X2JpdHMoc2VsZik6Ci0gICAgICAgIHBhcmFt
ZXRlciA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3BlcmZyYW1lLWRlZmxhdGUnKQotICAg
ICAgICBwYXJhbWV0ZXIuYWRkX3BhcmFtZXRlcignbWF4X3dpbmRvd19iaXRzJywgJzAnKQotICAg
ICAgICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLkRlZmxhdGVGcmFtZUV4dGVuc2lvblByb2Nlc3Nv
cihwYXJhbWV0ZXIpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocHJvY2Vzc29yLmdldF9l
eHRlbnNpb25fcmVzcG9uc2UoKSkKLQotICAgIGRlZiB0ZXN0X29mZmVyX3dpdGhfbWF4X3dpbmRv
d19iaXRzX3dpdGhvdXRfdmFsdWUoc2VsZik6Ci0gICAgICAgIHBhcmFtZXRlciA9IGNvbW1vbi5F
eHRlbnNpb25QYXJhbWV0ZXIoJ3BlcmZyYW1lLWRlZmxhdGUnKQotICAgICAgICBwYXJhbWV0ZXIu
YWRkX3BhcmFtZXRlcignbWF4X3dpbmRvd19iaXRzJywgTm9uZSkKLSAgICAgICAgcHJvY2Vzc29y
ID0gZXh0ZW5zaW9ucy5EZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IocGFyYW1ldGVyKQot
Ci0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3Bv
bnNlKCkpCi0KLSAgICBkZWYgdGVzdF9vZmZlcl93aXRoX25vX2NvbnRleHRfdGFrZW92ZXIoc2Vs
Zik6Ci0gICAgICAgIHBhcmFtZXRlciA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3BlcmZy
YW1lLWRlZmxhdGUnKQotICAgICAgICBwYXJhbWV0ZXIuYWRkX3BhcmFtZXRlcignbm9fY29udGV4
dF90YWtlb3ZlcicsIE5vbmUpCi0gICAgICAgIHByb2Nlc3NvciA9IGV4dGVuc2lvbnMuRGVmbGF0
ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yKHBhcmFtZXRlcikKLQotICAgICAgICByZXNwb25zZSA9
IHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgncGVyZnJhbWUtZGVmbGF0ZScsIHJlc3BvbnNlLm5hbWUoKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgwLCBsZW4ocmVzcG9uc2UuZ2V0X3BhcmFtZXRlcnMoKSkpCi0KLSAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKHByb2Nlc3Nvci5fcmZjMTk3OV9kZWZsYXRlci5fbm9fY29udGV4dF90
YWtlb3ZlcikKLQotICAgIGRlZiB0ZXN0X29mZmVyX3dpdGhfbm9fY29udGV4dF90YWtlb3Zlcl93
aXRoX3ZhbHVlKHNlbGYpOgotICAgICAgICBwYXJhbWV0ZXIgPSBjb21tb24uRXh0ZW5zaW9uUGFy
YW1ldGVyKCdwZXJmcmFtZS1kZWZsYXRlJykKLSAgICAgICAgcGFyYW1ldGVyLmFkZF9wYXJhbWV0
ZXIoJ25vX2NvbnRleHRfdGFrZW92ZXInLCAnZm9vYmFyJykKLSAgICAgICAgcHJvY2Vzc29yID0g
ZXh0ZW5zaW9ucy5EZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IocGFyYW1ldGVyKQotCi0g
ICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNl
KCkpCi0KLSAgICBkZWYgdGVzdF9vZmZlcl93aXRoX3Vua25vd25fcGFyYW1ldGVyKHNlbGYpOgot
ICAgICAgICBwYXJhbWV0ZXIgPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKCdwZXJmcmFtZS1k
ZWZsYXRlJykKLSAgICAgICAgcGFyYW1ldGVyLmFkZF9wYXJhbWV0ZXIoJ2ZvbycsICdiYXInKQot
ICAgICAgICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLkRlZmxhdGVGcmFtZUV4dGVuc2lvblByb2Nl
c3NvcihwYXJhbWV0ZXIpCi0KLSAgICAgICAgcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVu
c2lvbl9yZXNwb25zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3BlcmZyYW1lLWRlZmxh
dGUnLCByZXNwb25zZS5uYW1lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgbGVuKHJl
c3BvbnNlLmdldF9wYXJhbWV0ZXJzKCkpKQotCi0KLWNsYXNzIFBlck1lc3NhZ2VEZWZsYXRlRXh0
ZW5zaW9uUHJvY2Vzc29yUGFyc2luZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIkEg
dW5pdHRlc3QgZm9yIGNoZWNraW5nIHRoYXQgUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9j
ZXNzb3IgcGFyc2VzCi0gICAgZ2l2ZW4gZXh0ZW5zaW9uIHBhcmFtZXRlciBjb3JyZWN0bHkuCi0g
ICAgIiIiCi0KLSAgICBkZWYgdGVzdF9yZWdpc3RyeShzZWxmKToKLSAgICAgICAgcHJvY2Vzc29y
ID0gZXh0ZW5zaW9ucy5nZXRfZXh0ZW5zaW9uX3Byb2Nlc3NvcigKLSAgICAgICAgICAgICAgICBj
b21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKCdwZXJtZXNzYWdlLWRlZmxhdGUnKSkKLSAgICAgICAg
c2VsZi5hc3NlcnRJc0luc3RhbmNlKHByb2Nlc3NvciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGV4dGVuc2lvbnMuUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IpCi0K
LSAgICBkZWYgdGVzdF9taW5pbWFsX29mZmVyKHNlbGYpOgotICAgICAgICBwcm9jZXNzb3IgPSBl
eHRlbnNpb25zLlBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKAotICAgICAgICAg
ICAgY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigncGVybWVzc2FnZS1kZWZsYXRlJykpCi0KLSAg
ICAgICAgcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScsIHJlc3BvbnNlLm5hbWUo
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBsZW4ocmVzcG9uc2UuZ2V0X3BhcmFtZXRl
cnMoKSkpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6bGliLk1BWF9XQklUUywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICBwcm9jZXNzb3IuX3JmYzE5NzlfZGVmbGF0ZXIuX3dpbmRvd19i
aXRzKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHByb2Nlc3Nvci5fcmZjMTk3OV9kZWZsYXRl
ci5fbm9fY29udGV4dF90YWtlb3ZlcikKLQotICAgIGRlZiB0ZXN0X29mZmVyX3dpdGhfbWF4X3dp
bmRvd19iaXRzKHNlbGYpOgotICAgICAgICBwYXJhbWV0ZXIgPSBjb21tb24uRXh0ZW5zaW9uUGFy
YW1ldGVyKCdwZXJtZXNzYWdlLWRlZmxhdGUnKQotICAgICAgICBwYXJhbWV0ZXIuYWRkX3BhcmFt
ZXRlcignc2VydmVyX21heF93aW5kb3dfYml0cycsICcxMCcpCi0gICAgICAgIHByb2Nlc3NvciA9
IGV4dGVuc2lvbnMuUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IocGFyYW1ldGVy
KQotCi0gICAgICAgIHJlc3BvbnNlID0gcHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2Uo
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdwZXJtZXNzYWdlLWRlZmxhdGUnLCByZXNwb25z
ZS5uYW1lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWygnc2VydmVyX21heF93aW5kb3df
Yml0cycsICcxMCcpXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5nZXRfcGFy
YW1ldGVycygpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTAsIHByb2Nlc3Nvci5fcmZj
MTk3OV9kZWZsYXRlci5fd2luZG93X2JpdHMpCi0KLSAgICBkZWYgdGVzdF9vZmZlcl93aXRoX291
dF9vZl9yYW5nZV9tYXhfd2luZG93X2JpdHMoc2VsZik6Ci0gICAgICAgIHBhcmFtZXRlciA9IGNv
bW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScpCi0gICAgICAgIHBh
cmFtZXRlci5hZGRfcGFyYW1ldGVyKCdzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzJywgJzAnKQotICAg
ICAgICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLlBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJv
Y2Vzc29yKHBhcmFtZXRlcikKLQotICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwcm9jZXNzb3Iu
Z2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpKQotCi0gICAgZGVmIHRlc3Rfb2ZmZXJfd2l0aF9tYXhf
d2luZG93X2JpdHNfd2l0aG91dF92YWx1ZShzZWxmKToKLSAgICAgICAgcGFyYW1ldGVyID0gY29t
bW9uLkV4dGVuc2lvblBhcmFtZXRlcigncGVybWVzc2FnZS1kZWZsYXRlJykKLSAgICAgICAgcGFy
YW1ldGVyLmFkZF9wYXJhbWV0ZXIoJ3NlcnZlcl9tYXhfd2luZG93X2JpdHMnLCBOb25lKQotICAg
ICAgICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLlBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJv
Y2Vzc29yKHBhcmFtZXRlcikKLQotICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwcm9jZXNzb3Iu
Z2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpKQotCi0gICAgZGVmIHRlc3Rfb2ZmZXJfd2l0aF9ub19j
b250ZXh0X3Rha2VvdmVyKHNlbGYpOgotICAgICAgICBwYXJhbWV0ZXIgPSBjb21tb24uRXh0ZW5z
aW9uUGFyYW1ldGVyKCdwZXJtZXNzYWdlLWRlZmxhdGUnKQotICAgICAgICBwYXJhbWV0ZXIuYWRk
X3BhcmFtZXRlcignc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXInLCBOb25lKQotICAgICAgICBw
cm9jZXNzb3IgPSBleHRlbnNpb25zLlBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29y
KHBhcmFtZXRlcikKLQotICAgICAgICByZXNwb25zZSA9IHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9u
X3Jlc3BvbnNlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgncGVybWVzc2FnZS1kZWZsYXRl
JywgcmVzcG9uc2UubmFtZSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsoJ3NlcnZlcl9u
b19jb250ZXh0X3Rha2VvdmVyJywgTm9uZSldLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJl
c3BvbnNlLmdldF9wYXJhbWV0ZXJzKCkpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHByb2Nl
c3Nvci5fcmZjMTk3OV9kZWZsYXRlci5fbm9fY29udGV4dF90YWtlb3ZlcikKLQotICAgIGRlZiB0
ZXN0X29mZmVyX3dpdGhfbm9fY29udGV4dF90YWtlb3Zlcl93aXRoX3ZhbHVlKHNlbGYpOgotICAg
ICAgICBwYXJhbWV0ZXIgPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKCdwZXJtZXNzYWdlLWRl
ZmxhdGUnKQotICAgICAgICBwYXJhbWV0ZXIuYWRkX3BhcmFtZXRlcignc2VydmVyX25vX2NvbnRl
eHRfdGFrZW92ZXInLCAnZm9vYmFyJykKLSAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5Q
ZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcihwYXJhbWV0ZXIpCi0KLSAgICAgICAg
c2VsZi5hc3NlcnRJc05vbmUocHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoKSkKLQot
ICAgIGRlZiB0ZXN0X29mZmVyX3dpdGhfdW5rbm93bl9wYXJhbWV0ZXIoc2VsZik6Ci0gICAgICAg
IHBhcmFtZXRlciA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3Blcm1lc3NhZ2UtZGVmbGF0
ZScpCi0gICAgICAgIHBhcmFtZXRlci5hZGRfcGFyYW1ldGVyKCdmb28nLCAnYmFyJykKLSAgICAg
ICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5QZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nl
c3NvcihwYXJhbWV0ZXIpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocHJvY2Vzc29yLmdl
dF9leHRlbnNpb25fcmVzcG9uc2UoKSkKLQotCi1jbGFzcyBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVu
c2lvblByb2Nlc3NvckJ1aWxkaW5nVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiQSB1
bml0dGVzdCBmb3IgY2hlY2tpbmcgdGhhdCBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nl
c3NvciBidWlsZHMKLSAgICBhIHJlc3BvbnNlIGJhc2VkIG9uIHNwZWNpZmllZCBvcHRpb25zIGNv
cnJlY3RseS4KLSAgICAiIiIKLQotICAgIGRlZiB0ZXN0X3Jlc3BvbnNlX3dpdGhfbWF4X3dpbmRv
d19iaXRzKHNlbGYpOgotICAgICAgICBwYXJhbWV0ZXIgPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1l
dGVyKCdwZXJtZXNzYWdlLWRlZmxhdGUnKQotICAgICAgICBwYXJhbWV0ZXIuYWRkX3BhcmFtZXRl
cignY2xpZW50X21heF93aW5kb3dfYml0cycsIE5vbmUpCi0gICAgICAgIHByb2Nlc3NvciA9IGV4
dGVuc2lvbnMuUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IocGFyYW1ldGVyKQot
ICAgICAgICBwcm9jZXNzb3Iuc2V0X2NsaWVudF9tYXhfd2luZG93X2JpdHMoMTApCi0KLSAgICAg
ICAgcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScsIHJlc3BvbnNlLm5hbWUoKSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbKCdjbGllbnRfbWF4X3dpbmRvd19iaXRzJywgJzEw
JyldLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmdldF9wYXJhbWV0ZXJzKCkp
Ci0KLSAgICBkZWYgdGVzdF9yZXNwb25zZV93aXRoX21heF93aW5kb3dfYml0c193aXRob3V0X2Ns
aWVudF9wZXJtaXNzaW9uKHNlbGYpOgotICAgICAgICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLlBl
ck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKAotICAgICAgICAgICAgY29tbW9uLkV4
dGVuc2lvblBhcmFtZXRlcigncGVybWVzc2FnZS1kZWZsYXRlJykpCi0gICAgICAgIHByb2Nlc3Nv
ci5zZXRfY2xpZW50X21heF93aW5kb3dfYml0cygxMCkKLQotICAgICAgICByZXNwb25zZSA9IHBy
b2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRJc05v
bmUocmVzcG9uc2UpCi0KLSAgICBkZWYgdGVzdF9yZXNwb25zZV93aXRoX3RydWVfZm9yX25vX2Nv
bnRleHRfdGFrZW92ZXIoc2VsZik6Ci0gICAgICAgIHByb2Nlc3NvciA9IGV4dGVuc2lvbnMuUGVy
TWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IoCi0gICAgICAgICAgICBjb21tb24uRXh0
ZW5zaW9uUGFyYW1ldGVyKCdwZXJtZXNzYWdlLWRlZmxhdGUnKSkKLQotICAgICAgICBwcm9jZXNz
b3Iuc2V0X2NsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyKFRydWUpCi0KLSAgICAgICAgcmVzcG9u
c2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScsIHJlc3BvbnNlLm5hbWUoKSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChbKCdjbGllbnRfbm9fY29udGV4dF90YWtlb3ZlcicsIE5vbmUpXSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5nZXRfcGFyYW1ldGVycygpKQotCi0g
ICAgZGVmIHRlc3RfcmVzcG9uc2Vfd2l0aF9mYWxzZV9mb3Jfbm9fY29udGV4dF90YWtlb3Zlcihz
ZWxmKToKLSAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5QZXJNZXNzYWdlRGVmbGF0ZUV4
dGVuc2lvblByb2Nlc3NvcigKLSAgICAgICAgICAgIGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIo
J3Blcm1lc3NhZ2UtZGVmbGF0ZScpKQotCi0gICAgICAgIHByb2Nlc3Nvci5zZXRfY2xpZW50X25v
X2NvbnRleHRfdGFrZW92ZXIoRmFsc2UpCi0KLSAgICAgICAgcmVzcG9uc2UgPSBwcm9jZXNzb3Iu
Z2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3Blcm1l
c3NhZ2UtZGVmbGF0ZScsIHJlc3BvbnNlLm5hbWUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgwLCBsZW4ocmVzcG9uc2UuZ2V0X3BhcmFtZXRlcnMoKSkpCi0KLQotY2xhc3MgUGVyTWVzc2Fn
ZUNvbXByZXNzRXh0ZW5zaW9uUHJvY2Vzc29yVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAg
ZGVmIHRlc3RfcmVnaXN0cnkoc2VsZik6Ci0gICAgICAgIHByb2Nlc3NvciA9IGV4dGVuc2lvbnMu
Z2V0X2V4dGVuc2lvbl9wcm9jZXNzb3IoCi0gICAgICAgICAgICAgICAgY29tbW9uLkV4dGVuc2lv
blBhcmFtZXRlcigncGVybWVzc2FnZS1jb21wcmVzcycpKQotICAgICAgICBzZWxmLmFzc2VydElz
SW5zdGFuY2UocHJvY2Vzc29yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5z
aW9ucy5QZXJNZXNzYWdlQ29tcHJlc3NFeHRlbnNpb25Qcm9jZXNzb3IpCi0KLQotaWYgX19uYW1l
X18gPT0gJ19fbWFpbl9fJzoKLSAgICB1bml0dGVzdC5tYWluKCkKLQotCi0jIHZpOnN0cz00IHN3
PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdF9oYW5kc2hha2UucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0
L3NyYy90ZXN0L3Rlc3RfaGFuZHNoYWtlLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBhYTc4YWMwNWU1ODcxZDE1OWE2N2Y3ZTQxNmYzMDI3MDBmYTBmOTI2Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdF9oYW5k
c2hha2UucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxODggKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYg
cHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJl
c2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlz
dHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJUZXN0cyBmb3IgaGFuZHNoYWtlLl9i
YXNlIG1vZHVsZS4iIiIKLQotCi1pbXBvcnQgdW5pdHRlc3QKLQotaW1wb3J0IHNldF9zeXNfcGF0
aCAgIyBVcGRhdGUgc3lzLnBhdGggdG8gbG9jYXRlIG1vZF9weXdlYnNvY2tldCBtb2R1bGUuCi0K
LWZyb20gbW9kX3B5d2Vic29ja2V0LmNvbW1vbiBpbXBvcnQgRXh0ZW5zaW9uUGFyYW1ldGVyCi1m
cm9tIG1vZF9weXdlYnNvY2tldC5jb21tb24gaW1wb3J0IEV4dGVuc2lvblBhcnNpbmdFeGNlcHRp
b24KLWZyb20gbW9kX3B5d2Vic29ja2V0LmNvbW1vbiBpbXBvcnQgZm9ybWF0X2V4dGVuc2lvbnMK
LWZyb20gbW9kX3B5d2Vic29ja2V0LmNvbW1vbiBpbXBvcnQgcGFyc2VfZXh0ZW5zaW9ucwotZnJv
bSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBIYW5kc2hha2VFeGNlcHRp
b24KLWZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgdmFsaWRhdGVf
c3VicHJvdG9jb2wKLQotCi1jbGFzcyBWYWxpZGF0ZVN1YnByb3RvY29sVGVzdCh1bml0dGVzdC5U
ZXN0Q2FzZSk6Ci0gICAgIiIiQSB1bml0dGVzdCBmb3IgdmFsaWRhdGVfc3VicHJvdG9jb2wgbWV0
aG9kLiIiIgotCi0gICAgZGVmIHRlc3RfdmFsaWRhdGVfc3VicHJvdG9jb2woc2VsZik6Ci0gICAg
ICAgICMgU2hvdWxkIHN1Y2NlZWQuCi0gICAgICAgIHZhbGlkYXRlX3N1YnByb3RvY29sKCdzYW1w
bGUnKQotICAgICAgICB2YWxpZGF0ZV9zdWJwcm90b2NvbCgnU2FtcGxlJykKLSAgICAgICAgdmFs
aWRhdGVfc3VicHJvdG9jb2woJ3NhbXBsZVx4N2Vwcm90b2NvbCcpCi0KLSAgICAgICAgIyBTaG91
bGQgZmFpbC4KLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSGFuZHNoYWtlRXhjZXB0aW9uLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZV9zdWJwcm90b2NvbCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEhhbmRzaGFr
ZUV4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVfc3VicHJvdG9j
b2wsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdzYW1wbGVceDA5cHJvdG9jb2wnKQotICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcyhIYW5kc2hha2VFeGNlcHRpb24sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIHZhbGlkYXRlX3N1YnByb3RvY29sLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAnc2FtcGxlXHgxOXByb3RvY29sJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSGFu
ZHNoYWtlRXhjZXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZV9zdWJw
cm90b2NvbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NhbXBsZVx4MjBwcm90b2NvbCcp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEhhbmRzaGFrZUV4Y2VwdGlvbiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmFsaWRhdGVfc3VicHJvdG9jb2wsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICdzYW1wbGVceDdmcHJvdG9jb2wnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNl
cyhIYW5kc2hha2VFeGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRl
X3N1YnByb3RvY29sLAotICAgICAgICAgICAgICAgICAgICAgICAgICAjICJKYXBhbiIgaW4gSmFw
YW5lc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdSdcdTY1ZTVcdTY3MmMnKQotCi0KLV9U
RVNUX1RPS0VOX0VYVEVOU0lPTl9EQVRBID0gWwotICAgICgnZm9vJywgWygnZm9vJywgW10pXSks
Ci0gICAgKCdmb287IGJhcicsIFsoJ2ZvbycsIFsoJ2JhcicsIE5vbmUpXSldKSwKLSAgICAoJ2Zv
bzsgYmFyPWJheicsIFsoJ2ZvbycsIFsoJ2JhcicsICdiYXonKV0pXSksCi0gICAgKCdmb287IGJh
cj1iYXo7IGNhcj1jZHInLCBbKCdmb28nLCBbKCdiYXInLCAnYmF6JyksICgnY2FyJywgJ2Nkcicp
XSldKSwKLSAgICAoJ2ZvbzsgYmFyPWJheiwgY2FyOyBjZHInLAotICAgICBbKCdmb28nLCBbKCdi
YXInLCAnYmF6JyldKSwgKCdjYXInLCBbKCdjZHInLCBOb25lKV0pXSksCi0gICAgKCdhLCBiLCBj
LCBkJywKLSAgICAgWygnYScsIFtdKSwgKCdiJywgW10pLCAoJ2MnLCBbXSksICgnZCcsIFtdKV0p
LAotICAgIF0KLQotCi1fVEVTVF9RVU9URURfRVhURU5TSU9OX0RBVEEgPSBbCi0gICAgKCdmb287
IGJhcj0iIicsIFsoJ2ZvbycsIFsoJ2JhcicsICcnKV0pXSksCi0gICAgKCdmb287IGJhcj0iIGJh
eiAiJywgWygnZm9vJywgWygnYmFyJywgJyBiYXogJyldKV0pLAotICAgICgnZm9vOyBiYXI9Iixi
YXo7IicsIFsoJ2ZvbycsIFsoJ2JhcicsICcsYmF6OycpXSldKSwKLSAgICAoJ2ZvbzsgYmFyPSJc
XFxyXFxcbmJheiInLCBbKCdmb28nLCBbKCdiYXInLCAnXHJcbmJheicpXSldKSwKLSAgICAoJ2Zv
bzsgYmFyPSJcXCJiYXoiJywgWygnZm9vJywgWygnYmFyJywgJyJiYXonKV0pXSksCi0gICAgKCdm
b287IGJhcj0iXHhiYmJheiInLCBbKCdmb28nLCBbKCdiYXInLCAnXHhiYmJheicpXSldKSwKLSAg
ICBdCi0KLQotX1RFU1RfUkVEVU5EQU5UX1RPS0VOX0VYVEVOU0lPTl9EQVRBID0gWwotICAgICgn
Zm9vIFx0ICcsIFsoJ2ZvbycsIFtdKV0pLAotICAgICgnZm9vOyBcclxuIGJhcicsIFsoJ2Zvbycs
IFsoJ2JhcicsIE5vbmUpXSldKSwKLSAgICAoJ2ZvbzsgYmFyPVxyXG4gXHJcbiBiYXonLCBbKCdm
b28nLCBbKCdiYXInLCAnYmF6JyldKV0pLAotICAgICgnZm9vIDtiYXIgPSBiYXogJywgWygnZm9v
JywgWygnYmFyJywgJ2JheicpXSldKSwKLSAgICAoJ2ZvbyxiYXIsLGJheicsIFsoJ2ZvbycsIFtd
KSwgKCdiYXInLCBbXSksICgnYmF6JywgW10pXSksCi0gICAgXQotCi0KLV9URVNUX1JFRFVOREFO
VF9RVU9URURfRVhURU5TSU9OX0RBVEEgPSBbCi0gICAgKCdmb287IGJhcj0iXHJcbiBcclxuIGJh
eiInLCBbKCdmb28nLCBbKCdiYXInLCAnICBiYXonKV0pXSksCi0gICAgXQotCi0KLWNsYXNzIEV4
dGVuc2lvbnNQYXJzZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLQotICAgIGRlZiBfdmVyaWZ5
X2V4dGVuc2lvbl9saXN0KHNlbGYsIGV4cGVjdGVkX2xpc3QsIGFjdHVhbF9saXN0KToKLSAgICAg
ICAgIiIiVmVyaWZpZXMgdGhhdCBFeHRlbnNpb25QYXJhbWV0ZXIgb2JqZWN0cyBpbiBhY3R1YWxf
bGlzdCBoYXZlIHRoZQotICAgICAgICBzYW1lIG1lbWJlcnMgYXMgZXh0ZW5zaW9uIGRlZmluaXRp
b25zIGluIGV4cGVjdGVkX2xpc3QuIEV4dGVuc2lvbgotICAgICAgICBkZWZpbml0aW9uIHVzZWQg
aW4gdGhpcyB0ZXN0IGlzIGEgcGFpciBvZiBhbiBleHRlbnNpb24gbmFtZSBhbmQgYQotICAgICAg
ICBwYXJhbWV0ZXIgZGljdGlvbmFyeS4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChsZW4oZXhwZWN0ZWRfbGlzdCksIGxlbihhY3R1YWxfbGlzdCkpCi0gICAgICAgIGZv
ciBleHBlY3RlZCwgYWN0dWFsIGluIHppcChleHBlY3RlZF9saXN0LCBhY3R1YWxfbGlzdCk6Ci0g
ICAgICAgICAgICAobmFtZSwgcGFyYW1ldGVycykgPSBleHBlY3RlZAotICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChuYW1lLCBhY3R1YWwuX25hbWUpCi0gICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHBhcmFtZXRlcnMsIGFjdHVhbC5fcGFyYW1ldGVycykKLQotICAgIGRlZiB0ZXN0X3Bh
cnNlKHNlbGYpOgotICAgICAgICBmb3IgZm9ybWF0dGVkX3N0cmluZywgZGVmaW5pdGlvbiBpbiBf
VEVTVF9UT0tFTl9FWFRFTlNJT05fREFUQToKLSAgICAgICAgICAgIHNlbGYuX3ZlcmlmeV9leHRl
bnNpb25fbGlzdCgKLSAgICAgICAgICAgICAgICBkZWZpbml0aW9uLCBwYXJzZV9leHRlbnNpb25z
KGZvcm1hdHRlZF9zdHJpbmcpKQotCi0gICAgZGVmIHRlc3RfcGFyc2VfcXVvdGVkX2RhdGEoc2Vs
Zik6Ci0gICAgICAgIGZvciBmb3JtYXR0ZWRfc3RyaW5nLCBkZWZpbml0aW9uIGluIF9URVNUX1FV
T1RFRF9FWFRFTlNJT05fREFUQToKLSAgICAgICAgICAgIHNlbGYuX3ZlcmlmeV9leHRlbnNpb25f
bGlzdCgKLSAgICAgICAgICAgICAgICBkZWZpbml0aW9uLCBwYXJzZV9leHRlbnNpb25zKGZvcm1h
dHRlZF9zdHJpbmcpKQotCi0gICAgZGVmIHRlc3RfcGFyc2VfcmVkdW5kYW50X2RhdGEoc2VsZik6
Ci0gICAgICAgIGZvciAoZm9ybWF0dGVkX3N0cmluZywKLSAgICAgICAgICAgICBkZWZpbml0aW9u
KSBpbiBfVEVTVF9SRURVTkRBTlRfVE9LRU5fRVhURU5TSU9OX0RBVEE6Ci0gICAgICAgICAgICBz
ZWxmLl92ZXJpZnlfZXh0ZW5zaW9uX2xpc3QoCi0gICAgICAgICAgICAgICAgZGVmaW5pdGlvbiwg
cGFyc2VfZXh0ZW5zaW9ucyhmb3JtYXR0ZWRfc3RyaW5nKSkKLQotICAgIGRlZiB0ZXN0X3BhcnNl
X3JlZHVuZGFudF9xdW90ZWRfZGF0YShzZWxmKToKLSAgICAgICAgZm9yIChmb3JtYXR0ZWRfc3Ry
aW5nLAotICAgICAgICAgICAgIGRlZmluaXRpb24pIGluIF9URVNUX1JFRFVOREFOVF9RVU9URURf
RVhURU5TSU9OX0RBVEE6Ci0gICAgICAgICAgICBzZWxmLl92ZXJpZnlfZXh0ZW5zaW9uX2xpc3Qo
Ci0gICAgICAgICAgICAgICAgZGVmaW5pdGlvbiwgcGFyc2VfZXh0ZW5zaW9ucyhmb3JtYXR0ZWRf
c3RyaW5nKSkKLQotICAgIGRlZiB0ZXN0X3BhcnNlX2JhZF9kYXRhKHNlbGYpOgotICAgICAgICBf
VEVTVF9CQURfRVhURU5TSU9OX0RBVEEgPSBbCi0gICAgICAgICAgICAoJ2ZvbzsgOyAnKSwKLSAg
ICAgICAgICAgICgnZm9vOyBhIGEnKSwKLSAgICAgICAgICAgICgnZm9vIGZvbycpLAotICAgICAg
ICAgICAgKCcsLCwnKSwKLSAgICAgICAgICAgICgnZm9vOyBiYXI9JyksCi0gICAgICAgICAgICAo
J2ZvbzsgYmFyPSJob2dlJyksCi0gICAgICAgICAgICAoJ2ZvbzsgYmFyPSJhXHIiJyksCi0gICAg
ICAgICAgICAoJ2ZvbzsgYmFyPSJcXFx4ZmYiJyksCi0gICAgICAgICAgICAoJ2ZvbzsgYmFyPVxy
YScpLAotICAgICAgICAgICAgXQotCi0gICAgICAgIGZvciBmb3JtYXR0ZWRfc3RyaW5nIGluIF9U
RVNUX0JBRF9FWFRFTlNJT05fREFUQToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAot
ICAgICAgICAgICAgICAgIEV4dGVuc2lvblBhcnNpbmdFeGNlcHRpb24sIHBhcnNlX2V4dGVuc2lv
bnMsIGZvcm1hdHRlZF9zdHJpbmcpCi0KLQotY2xhc3MgRm9ybWF0RXh0ZW5zaW9uc1Rlc3QodW5p
dHRlc3QuVGVzdENhc2UpOgotCi0gICAgZGVmIHRlc3RfZm9ybWF0X2V4dGVuc2lvbnMoc2VsZik6
Ci0gICAgICAgIGZvciBmb3JtYXR0ZWRfc3RyaW5nLCBkZWZpbml0aW9ucyBpbiBfVEVTVF9UT0tF
Tl9FWFRFTlNJT05fREFUQToKLSAgICAgICAgICAgIGV4dGVuc2lvbnMgPSBbXQotICAgICAgICAg
ICAgZm9yIGRlZmluaXRpb24gaW4gZGVmaW5pdGlvbnM6Ci0gICAgICAgICAgICAgICAgKG5hbWUs
IHBhcmFtZXRlcnMpID0gZGVmaW5pdGlvbgotICAgICAgICAgICAgICAgIGV4dGVuc2lvbiA9IEV4
dGVuc2lvblBhcmFtZXRlcihuYW1lKQotICAgICAgICAgICAgICAgIGV4dGVuc2lvbi5fcGFyYW1l
dGVycyA9IHBhcmFtZXRlcnMKLSAgICAgICAgICAgICAgICBleHRlbnNpb25zLmFwcGVuZChleHRl
bnNpb24pCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgICAgIGZv
cm1hdHRlZF9zdHJpbmcsIGZvcm1hdF9leHRlbnNpb25zKGV4dGVuc2lvbnMpKQotCi0KLWlmIF9f
bmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdW5pdHRlc3QubWFpbigpCi0KLQotIyB2aTpzdHM9
NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RfaGFuZHNoYWtlX2h5Ymku
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RfaGFuZHNoYWtlX2h5YmkucHkKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDZjODcxMzgyMzBiMzAzYmYzOGRjNGNmODRjMTI5MGE4OGY3YmQ4ZDIu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMv
dGVzdC90ZXN0X2hhbmRzaGFrZV9oeWJpLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNTM0ICswLDAg
QEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIElu
Yy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwot
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
IyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiVGVz
dHMgZm9yIGhhbmRzaGFrZSBtb2R1bGUuIiIiCi0KLQotaW1wb3J0IHVuaXR0ZXN0Ci0KLWltcG9y
dCBzZXRfc3lzX3BhdGggICMgVXBkYXRlIHN5cy5wYXRoIHRvIGxvY2F0ZSBtb2RfcHl3ZWJzb2Nr
ZXQgbW9kdWxlLgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgotZnJvbSBtb2Rf
cHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBBYm9ydGVkQnlVc2VyRXhjZXB0aW9u
Ci1mcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IEhhbmRzaGFrZUV4
Y2VwdGlvbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBWZXJz
aW9uRXhjZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuaHliaSBpbXBvcnQg
SGFuZHNoYWtlcgotCi1pbXBvcnQgbW9jawotCi0KLWNsYXNzIFJlcXVlc3REZWZpbml0aW9uKG9i
amVjdCk6Ci0gICAgIiIiQSBjbGFzcyBmb3IgaG9sZGluZyBkYXRhIGZvciBjb25zdHJ1Y3Rpbmcg
b3BlbmluZyBoYW5kc2hha2Ugc3RyaW5ncyBmb3IKLSAgICB0ZXN0aW5nIHRoZSBvcGVuaW5nIGhh
bmRzaGFrZSBwcm9jZXNzb3IuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbWV0
aG9kLCB1cmksIGhlYWRlcnMpOgotICAgICAgICBzZWxmLm1ldGhvZCA9IG1ldGhvZAotICAgICAg
ICBzZWxmLnVyaSA9IHVyaQotICAgICAgICBzZWxmLmhlYWRlcnMgPSBoZWFkZXJzCi0KLQotZGVm
IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpOgotICAgIHJldHVybiBSZXF1ZXN0RGVmaW5pdGlv
bigKLSAgICAgICAgJ0dFVCcsICcvZGVtbycsCi0gICAgICAgIHsnSG9zdCc6ICdzZXJ2ZXIuZXhh
bXBsZS5jb20nLAotICAgICAgICAgJ1VwZ3JhZGUnOiAnd2Vic29ja2V0JywKLSAgICAgICAgICdD
b25uZWN0aW9uJzogJ1VwZ3JhZGUnLAotICAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5JzogJ2RH
aGxJSE5oYlhCc1pTQnViMjVqWlE9PScsCi0gICAgICAgICAnU2VjLVdlYlNvY2tldC1WZXJzaW9u
JzogJzEzJywKLSAgICAgICAgICdPcmlnaW4nOiAnaHR0cDovL2V4YW1wbGUuY29tJ30pCi0KLQot
ZGVmIF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZik6Ci0gICAgY29ubiA9IG1vY2suTW9ja0Nv
bm4oJycpCi0gICAgcmV0dXJuIG1vY2suTW9ja1JlcXVlc3QoCi0gICAgICAgIG1ldGhvZD1yZXF1
ZXN0X2RlZi5tZXRob2QsCi0gICAgICAgIHVyaT1yZXF1ZXN0X2RlZi51cmksCi0gICAgICAgIGhl
YWRlcnNfaW49cmVxdWVzdF9kZWYuaGVhZGVycywKLSAgICAgICAgY29ubmVjdGlvbj1jb25uKQot
Ci0KLWRlZiBfY3JlYXRlX2hhbmRzaGFrZXIocmVxdWVzdCk6Ci0gICAgaGFuZHNoYWtlciA9IEhh
bmRzaGFrZXIocmVxdWVzdCwgbW9jay5Nb2NrRGlzcGF0Y2hlcigpKQotICAgIHJldHVybiBoYW5k
c2hha2VyCi0KLQotY2xhc3MgU3VicHJvdG9jb2xDaG9vc2luZ0Rpc3BhdGNoZXIob2JqZWN0KToK
LSAgICAiIiJBIGRpc3BhdGNoZXIgZm9yIHRlc3RpbmcuIFRoaXMgZGlzcGF0Y2hlciBzZXRzIHRo
ZSBpLXRoIHN1YnByb3RvY29sCi0gICAgb2YgcmVxdWVzdGVkIG9uZXMgdG8gd3NfcHJvdG9jb2wg
d2hlcmUgaSBpcyBnaXZlbiBvbiBjb25zdHJ1Y3Rpb24gYXMgaW5kZXgKLSAgICBhcmd1bWVudC4g
SWYgaW5kZXggaXMgbmVnYXRpdmUsIGRlZmF1bHRfdmFsdWUgd2lsbCBiZSBzZXQgdG8gd3NfcHJv
dG9jb2wuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgaW5kZXgsIGRlZmF1bHRf
dmFsdWU9Tm9uZSk6Ci0gICAgICAgIHNlbGYuaW5kZXggPSBpbmRleAotICAgICAgICBzZWxmLmRl
ZmF1bHRfdmFsdWUgPSBkZWZhdWx0X3ZhbHVlCi0KLSAgICBkZWYgZG9fZXh0cmFfaGFuZHNoYWtl
KHNlbGYsIGNvbm5fY29udGV4dCk6Ci0gICAgICAgIGlmIHNlbGYuaW5kZXggPj0gMDoKLSAgICAg
ICAgICAgIGNvbm5fY29udGV4dC53c19wcm90b2NvbCA9IGNvbm5fY29udGV4dC53c19yZXF1ZXN0
ZWRfcHJvdG9jb2xzWwotICAgICAgICAgICAgICAgIHNlbGYuaW5kZXhdCi0gICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICBjb25uX2NvbnRleHQud3NfcHJvdG9jb2wgPSBzZWxmLmRlZmF1bHRfdmFs
dWUKLQotICAgIGRlZiB0cmFuc2Zlcl9kYXRhKHNlbGYsIGNvbm5fY29udGV4dCk6Ci0gICAgICAg
IHBhc3MKLQotCi1jbGFzcyBIYW5kc2hha2VBYm9ydGVkRXhjZXB0aW9uKEV4Y2VwdGlvbik6Ci0g
ICAgcGFzcwotCi0KLWNsYXNzIEFib3J0aW5nRGlzcGF0Y2hlcihvYmplY3QpOgotICAgICIiIkEg
ZGlzcGF0Y2hlciBmb3IgdGVzdGluZy4gVGhpcyBkaXNwYXRjaGVyIHJhaXNlcyBhbiBleGNlcHRp
b24gaW4KLSAgICBkb19leHRyYV9oYW5kc2hha2UgdG8gcmVqZWN0IHRoZSByZXF1ZXN0LgotICAg
ICIiIgotCi0gICAgZGVmIGRvX2V4dHJhX2hhbmRzaGFrZShzZWxmLCBjb25uX2NvbnRleHQpOgot
ICAgICAgICByYWlzZSBIYW5kc2hha2VBYm9ydGVkRXhjZXB0aW9uKCdBbiBleGNlcHRpb24gdG8g
cmVqZWN0IHRoZSByZXF1ZXN0JykKLQotICAgIGRlZiB0cmFuc2Zlcl9kYXRhKHNlbGYsIGNvbm5f
Y29udGV4dCk6Ci0gICAgICAgIHBhc3MKLQotCi1jbGFzcyBBYm9ydGVkQnlVc2VyRGlzcGF0Y2hl
cihvYmplY3QpOgotICAgICIiIkEgZGlzcGF0Y2hlciBmb3IgdGVzdGluZy4gVGhpcyBkaXNwYXRj
aGVyIHJhaXNlcyBhbgotICAgIEFib3J0ZWRCeVVzZXJFeGNlcHRpb24gaW4gZG9fZXh0cmFfaGFu
ZHNoYWtlIHRvIHJlamVjdCB0aGUgcmVxdWVzdC4KLSAgICAiIiIKLQotICAgIGRlZiBkb19leHRy
YV9oYW5kc2hha2Uoc2VsZiwgY29ubl9jb250ZXh0KToKLSAgICAgICAgcmFpc2UgQWJvcnRlZEJ5
VXNlckV4Y2VwdGlvbignQW4gQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbiB0byByZWplY3QgdGhlICcK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVxdWVzdCcpCi0KLSAgICBk
ZWYgdHJhbnNmZXJfZGF0YShzZWxmLCBjb25uX2NvbnRleHQpOgotICAgICAgICBwYXNzCi0KLQot
X0VYUEVDVEVEX1JFU1BPTlNFID0gKAotICAgICdIVFRQLzEuMSAxMDEgU3dpdGNoaW5nIFByb3Rv
Y29sc1xyXG4nCi0gICAgJ1VwZ3JhZGU6IHdlYnNvY2tldFxyXG4nCi0gICAgJ0Nvbm5lY3Rpb246
IFVwZ3JhZGVcclxuJwotICAgICdTZWMtV2ViU29ja2V0LUFjY2VwdDogczNwUExNQmlUeGFROWtZ
R3p6aFpSYksreE9vPVxyXG5cclxuJykKLQotCi1jbGFzcyBIYW5kc2hha2VyVGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSk6Ci0gICAgIiIiQSB1bml0dGVzdCBmb3IgZHJhZnQtaWV0Zi1oeWJpLXRoZXdl
YnNvY2tldHByb3RvY29sLTA2IGFuZCBsYXRlcgotICAgIGhhbmRzaGFrZSBwcm9jZXNzb3IuCi0g
ICAgIiIiCi0KLSAgICBkZWYgdGVzdF9kb19oYW5kc2hha2Uoc2VsZik6Ci0gICAgICAgIHJlcXVl
c3QgPSBfY3JlYXRlX3JlcXVlc3QoX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkpCi0gICAgICAg
IGRpc3BhdGNoZXIgPSBtb2NrLk1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgaGFuZHNoYWtlciA9
IEhhbmRzaGFrZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgaGFuZHNoYWtlci5kb19o
YW5kc2hha2UoKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkaXNwYXRjaGVyLmRvX2V4dHJh
X2hhbmRzaGFrZV9jYWxsZWQpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAg
ICAgIF9FWFBFQ1RFRF9SRVNQT05TRSwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgp
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcvZGVtbycsIHJlcXVlc3Qud3NfcmVzb3VyY2Up
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2h0dHA6Ly9leGFtcGxlLmNvbScsIHJlcXVlc3Qu
d3Nfb3JpZ2luKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIHJlcXVlc3Qud3NfcHJv
dG9jb2wpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgcmVxdWVzdC53c19leHRlbnNp
b25zKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1vbi5WRVJTSU9OX0hZQklfTEFURVNU
LCByZXF1ZXN0LndzX3ZlcnNpb24pCi0KLSAgICBkZWYgdGVzdF9kb19oYW5kc2hha2Vfd2l0aF9l
eHRyYV9oZWFkZXJzKHNlbGYpOgotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9y
ZXF1ZXN0X2RlZigpCi0gICAgICAgICMgQWRkIGhlYWRlcnMgbm90IHJlbGF0ZWQgdG8gV2ViU29j
a2V0IG9wZW5pbmcgaGFuZHNoYWtlLgotICAgICAgICByZXF1ZXN0X2RlZi5oZWFkZXJzWydGb29L
ZXknXSA9ICdCYXJWYWx1ZScKLSAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snRW1wdHlLZXkn
XSA9ICcnCi0KLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikK
LSAgICAgICAgaGFuZHNoYWtlciA9IF9jcmVhdGVfaGFuZHNoYWtlcihyZXF1ZXN0KQotICAgICAg
ICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0g
ICAgICAgICAgICBfRVhQRUNURURfUkVTUE9OU0UsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVu
X2RhdGEoKSkKLQotICAgIGRlZiB0ZXN0X2RvX2hhbmRzaGFrZV93aXRoX2NhcGl0YWxpemVkX3Zh
bHVlKHNlbGYpOgotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2Rl
ZigpCi0gICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ3VwZ3JhZGUnXSA9ICdXRUJTT0NLRVQn
Ci0KLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikKLSAgICAg
ICAgaGFuZHNoYWtlciA9IF9jcmVhdGVfaGFuZHNoYWtlcihyZXF1ZXN0KQotICAgICAgICBoYW5k
c2hha2VyLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAg
ICAgICBfRVhQRUNURURfUkVTUE9OU0UsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEo
KSkKLQotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCi0g
ICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ0Nvbm5lY3Rpb24nXSA9ICdVUEdSQURFJwotCi0g
ICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QocmVxdWVzdF9kZWYpCi0gICAgICAgIGhh
bmRzaGFrZXIgPSBfY3JlYXRlX2hhbmRzaGFrZXIocmVxdWVzdCkKLSAgICAgICAgaGFuZHNoYWtl
ci5kb19oYW5kc2hha2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAg
X0VYUEVDVEVEX1JFU1BPTlNFLCByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0K
LSAgICBkZWYgdGVzdF9kb19oYW5kc2hha2Vfd2l0aF9tdWx0aXBsZV9jb25uZWN0aW9uX3ZhbHVl
cyhzZWxmKToKLSAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYo
KQotICAgICAgICByZXF1ZXN0X2RlZi5oZWFkZXJzWydDb25uZWN0aW9uJ10gPSAnVXBncmFkZSwg
a2VlcC1hbGl2ZSwgLCAnCi0KLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1
ZXN0X2RlZikKLSAgICAgICAgaGFuZHNoYWtlciA9IF9jcmVhdGVfaGFuZHNoYWtlcihyZXF1ZXN0
KQotICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCi0gICAgICAgICAgICBfRVhQRUNURURfUkVTUE9OU0UsIHJlcXVlc3QuY29ubmVjdGlv
bi53cml0dGVuX2RhdGEoKSkKLQotICAgIGRlZiB0ZXN0X2Fib3J0aW5nX2hhbmRzaGFrZShzZWxm
KToKLSAgICAgICAgaGFuZHNoYWtlciA9IEhhbmRzaGFrZXIoCi0gICAgICAgICAgICBfY3JlYXRl
X3JlcXVlc3QoX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkpLAotICAgICAgICAgICAgQWJvcnRp
bmdEaXNwYXRjaGVyKCkpCi0gICAgICAgICMgZG9fZXh0cmFfaGFuZHNoYWtlIHJhaXNlcyBhbiBl
eGNlcHRpb24uIENoZWNrIHRoYXQgaXQncyBub3QgY2F1Z2h0IGJ5Ci0gICAgICAgICMgZG9faGFu
ZHNoYWtlLgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhIYW5kc2hha2VBYm9ydGVkRXhjZXB0
aW9uLCBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSkKLQotICAgIGRlZiB0ZXN0X2RvX2hhbmRzaGFr
ZV93aXRoX3Byb3RvY29sKHNlbGYpOgotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29v
ZF9yZXF1ZXN0X2RlZigpCi0gICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJTb2Nr
ZXQtUHJvdG9jb2wnXSA9ICdjaGF0LCBzdXBlcmNoYXQnCi0KLSAgICAgICAgcmVxdWVzdCA9IF9j
cmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikKLSAgICAgICAgaGFuZHNoYWtlciA9IEhhbmRzaGFr
ZXIocmVxdWVzdCwgU3VicHJvdG9jb2xDaG9vc2luZ0Rpc3BhdGNoZXIoMCkpCi0gICAgICAgIGhh
bmRzaGFrZXIuZG9faGFuZHNoYWtlKCkKLQotICAgICAgICBFWFBFQ1RFRF9SRVNQT05TRSA9ICgK
LSAgICAgICAgICAgICdIVFRQLzEuMSAxMDEgU3dpdGNoaW5nIFByb3RvY29sc1xyXG4nCi0gICAg
ICAgICAgICAnVXBncmFkZTogd2Vic29ja2V0XHJcbicKLSAgICAgICAgICAgICdDb25uZWN0aW9u
OiBVcGdyYWRlXHJcbicKLSAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LUFjY2VwdDogczNwUExN
QmlUeGFROWtZR3p6aFpSYksreE9vPVxyXG4nCi0gICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1Q
cm90b2NvbDogY2hhdFxyXG5cclxuJykKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEVYUEVD
VEVEX1JFU1BPTlNFLCByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ2NoYXQnLCByZXF1ZXN0LndzX3Byb3RvY29sKQotCi0gICAgZGVm
IHRlc3RfZG9faGFuZHNoYWtlX3Byb3RvY29sX25vdF9pbl9yZXF1ZXN0X2J1dF9pbl9yZXNwb25z
ZShzZWxmKToKLSAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYo
KQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KHJlcXVlc3RfZGVmKQotICAgICAg
ICBoYW5kc2hha2VyID0gSGFuZHNoYWtlcigKLSAgICAgICAgICAgIHJlcXVlc3QsIFN1YnByb3Rv
Y29sQ2hvb3NpbmdEaXNwYXRjaGVyKC0xLCAnZm9vYmFyJykpCi0gICAgICAgICMgTm8gcmVxdWVz
dCBoYXMgYmVlbiBtYWRlIGJ1dCB3c19wcm90b2NvbCBpcyBzZXQuIEhhbmRzaGFrZUV4Y2VwdGlv
bgotICAgICAgICAjIG11c3QgYmUgcmFpc2VkLgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhI
YW5kc2hha2VFeGNlcHRpb24sIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKQotCi0gICAgZGVmIHRl
c3RfZG9faGFuZHNoYWtlX3dpdGhfcHJvdG9jb2xfbm9fcHJvdG9jb2xfc2VsZWN0aW9uKHNlbGYp
OgotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCi0gICAg
ICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJTb2NrZXQtUHJvdG9jb2wnXSA9ICdjaGF0
LCBzdXBlcmNoYXQnCi0KLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0
X2RlZikKLSAgICAgICAgaGFuZHNoYWtlciA9IF9jcmVhdGVfaGFuZHNoYWtlcihyZXF1ZXN0KQot
ICAgICAgICAjIHdzX3Byb3RvY29sIGlzIG5vdCBzZXQuIEhhbmRzaGFrZUV4Y2VwdGlvbiBtdXN0
IGJlIHJhaXNlZC4KLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSGFuZHNoYWtlRXhjZXB0aW9u
LCBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSkKLQotICAgIGRlZiB0ZXN0X2RvX2hhbmRzaGFrZV93
aXRoX2V4dGVuc2lvbnMoc2VsZik6Ci0gICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29k
X3JlcXVlc3RfZGVmKCkKLSAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snU2VjLVdlYlNvY2tl
dC1FeHRlbnNpb25zJ10gPSAoCi0gICAgICAgICAgICAncGVybWVzc2FnZS1jb21wcmVzczsgbWV0
aG9kPWRlZmxhdGUsIHVua25vd24nKQotCi0gICAgICAgIEVYUEVDVEVEX1JFU1BPTlNFID0gKAot
ICAgICAgICAgICAgJ0hUVFAvMS4xIDEwMSBTd2l0Y2hpbmcgUHJvdG9jb2xzXHJcbicKLSAgICAg
ICAgICAgICdVcGdyYWRlOiB3ZWJzb2NrZXRcclxuJwotICAgICAgICAgICAgJ0Nvbm5lY3Rpb246
IFVwZ3JhZGVcclxuJwotICAgICAgICAgICAgJ1NlYy1XZWJTb2NrZXQtQWNjZXB0OiBzM3BQTE1C
aVR4YVE5a1lHenpoWlJiSyt4T289XHJcbicKLSAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LUV4
dGVuc2lvbnM6IHBlcm1lc3NhZ2UtY29tcHJlc3M7IG1ldGhvZD1kZWZsYXRlXHJcbicKLSAgICAg
ICAgICAgICdcclxuJykKLQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KHJlcXVl
c3RfZGVmKQotICAgICAgICBoYW5kc2hha2VyID0gX2NyZWF0ZV9oYW5kc2hha2VyKHJlcXVlc3Qp
Ci0gICAgICAgIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChFWFBFQ1RFRF9SRVNQT05TRSwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgp
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihyZXF1ZXN0LndzX2V4dGVuc2lvbnMp
KQotICAgICAgICBleHRlbnNpb24gPSByZXF1ZXN0LndzX2V4dGVuc2lvbnNbMF0KLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjb21tb24uUEVSTUVTU0FHRV9DT01QUkVTU0lPTl9FWFRFTlNJT04s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9uLm5hbWUoKSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChbJ21ldGhvZCddLCBleHRlbnNpb24uZ2V0X3BhcmFtZXRlcl9uYW1lcygp
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdkZWZsYXRlJywgZXh0ZW5zaW9uLmdldF9wYXJh
bWV0ZXJfdmFsdWUoJ21ldGhvZCcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihy
ZXF1ZXN0LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChjb21tb24uUEVSTUVTU0FHRV9DT01QUkVTU0lPTl9FWFRFTlNJT04sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgcmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29yc1swXS5uYW1lKCkpCi0K
LSAgICBkZWYgdGVzdF9kb19oYW5kc2hha2Vfd2l0aF9wZXJtZXNzYWdlX2NvbXByZXNzKHNlbGYp
OgotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCi0gICAg
ICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyddID0gKAot
ICAgICAgICAgICAgJ3Blcm1lc3NhZ2UtY29tcHJlc3M7IG1ldGhvZD1kZWZsYXRlJykKLSAgICAg
ICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikKLSAgICAgICAgaGFuZHNo
YWtlciA9IF9jcmVhdGVfaGFuZHNoYWtlcihyZXF1ZXN0KQotICAgICAgICBoYW5kc2hha2VyLmRv
X2hhbmRzaGFrZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHJlcXVlc3Qud3Nf
ZXh0ZW5zaW9ucykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLlBFUk1FU1NBR0Vf
Q09NUFJFU1NJT05fRVhURU5TSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qu
d3NfZXh0ZW5zaW9uc1swXS5uYW1lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVu
KHJlcXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnMpKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGNvbW1vbi5QRVJNRVNTQUdFX0NPTVBSRVNTSU9OX0VYVEVOU0lPTiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICByZXF1ZXN0LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzWzBdLm5hbWUoKSkK
LQotICAgIGRlZiB0ZXN0X2RvX2hhbmRzaGFrZV93aXRoX3F1b3RlZF9leHRlbnNpb25zKHNlbGYp
OgotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCi0gICAg
ICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyddID0gKAot
ICAgICAgICAgICAgJ3Blcm1lc3NhZ2UtY29tcHJlc3M7IG1ldGhvZD1kZWZsYXRlLCAsICcKLSAg
ICAgICAgICAgICd1bmtub3duOyBlICAgPSAgICAibWNeMiI7IG1hPSJcclxuICAgICAgXFxccmYg
ICI7IHB2PW5ydCcpCi0KLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0
X2RlZikKLSAgICAgICAgaGFuZHNoYWtlciA9IF9jcmVhdGVfaGFuZHNoYWtlcihyZXF1ZXN0KQot
ICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoMiwgbGVuKHJlcXVlc3Qud3NfcmVxdWVzdGVkX2V4dGVuc2lvbnMpKQotICAgICAgICBmaXJz
dF9leHRlbnNpb24gPSByZXF1ZXN0LndzX3JlcXVlc3RlZF9leHRlbnNpb25zWzBdCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ3Blcm1lc3NhZ2UtY29tcHJlc3MnLCBmaXJzdF9leHRlbnNpb24u
bmFtZSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnbWV0aG9kJ10sIGZpcnN0X2V4dGVu
c2lvbi5nZXRfcGFyYW1ldGVyX25hbWVzKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2Rl
ZmxhdGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0X2V4dGVuc2lvbi5nZXRfcGFy
YW1ldGVyX3ZhbHVlKCdtZXRob2QnKSkKLSAgICAgICAgc2Vjb25kX2V4dGVuc2lvbiA9IHJlcXVl
c3Qud3NfcmVxdWVzdGVkX2V4dGVuc2lvbnNbMV0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
dW5rbm93bicsIHNlY29uZF9leHRlbnNpb24ubmFtZSgpKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKAotICAgICAgICAgICAgWydlJywgJ21hJywgJ3B2J10sIHNlY29uZF9leHRlbnNpb24uZ2V0
X3BhcmFtZXRlcl9uYW1lcygpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdtY14yJywgc2Vj
b25kX2V4dGVuc2lvbi5nZXRfcGFyYW1ldGVyX3ZhbHVlKCdlJykpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJyBccmYgJywgc2Vjb25kX2V4dGVuc2lvbi5nZXRfcGFyYW1ldGVyX3ZhbHVlKCdt
YScpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCducnQnLCBzZWNvbmRfZXh0ZW5zaW9uLmdl
dF9wYXJhbWV0ZXJfdmFsdWUoJ3B2JykpCi0KLSAgICBkZWYgdGVzdF9kb19oYW5kc2hha2Vfd2l0
aF9vcHRpb25hbF9oZWFkZXJzKHNlbGYpOgotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVf
Z29vZF9yZXF1ZXN0X2RlZigpCi0gICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ0VtcHR5VmFs
dWUnXSA9ICcnCi0gICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ0FLZXknXSA9ICdBVmFsdWUn
Ci0KLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikKLSAgICAg
ICAgaGFuZHNoYWtlciA9IF9jcmVhdGVfaGFuZHNoYWtlcihyZXF1ZXN0KQotICAgICAgICBoYW5k
c2hha2VyLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAg
ICAgICAnQVZhbHVlJywgcmVxdWVzdC5oZWFkZXJzX2luWydBS2V5J10pCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICAnJywgcmVxdWVzdC5oZWFkZXJzX2luWydFbXB0eVZh
bHVlJ10pCi0KLSAgICBkZWYgdGVzdF9hYm9ydF9leHRyYV9oYW5kc2hha2Uoc2VsZik6Ci0gICAg
ICAgIGhhbmRzaGFrZXIgPSBIYW5kc2hha2VyKAotICAgICAgICAgICAgX2NyZWF0ZV9yZXF1ZXN0
KF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpKSwKLSAgICAgICAgICAgIEFib3J0ZWRCeVVzZXJE
aXNwYXRjaGVyKCkpCi0gICAgICAgICMgZG9fZXh0cmFfaGFuZHNoYWtlIHJhaXNlcyBhbiBBYm9y
dGVkQnlVc2VyRXhjZXB0aW9uLiBDaGVjayB0aGF0IGl0J3MKLSAgICAgICAgIyBub3QgY2F1Z2h0
IGJ5IGRvX2hhbmRzaGFrZS4KLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQWJvcnRlZEJ5VXNl
ckV4Y2VwdGlvbiwgaGFuZHNoYWtlci5kb19oYW5kc2hha2UpCi0KLSAgICBkZWYgdGVzdF9kb19o
YW5kc2hha2Vfd2l0aF9tdXhfYW5kX2RlZmxhdGVfZnJhbWUoc2VsZik6Ci0gICAgICAgIHJlcXVl
c3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKLSAgICAgICAgcmVxdWVzdF9kZWYu
aGVhZGVyc1snU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zJ10gPSAoJyVzLCAlcycgJSAoCi0gICAg
ICAgICAgICAgICAgY29tbW9uLk1VWF9FWFRFTlNJT04sCi0gICAgICAgICAgICAgICAgY29tbW9u
LkRFRkxBVEVfRlJBTUVfRVhURU5TSU9OKSkKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVx
dWVzdChyZXF1ZXN0X2RlZikKLSAgICAgICAgaGFuZHNoYWtlciA9IF9jcmVhdGVfaGFuZHNoYWtl
cihyZXF1ZXN0KQotICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgICMg
bXV4IHNob3VsZCBiZSByZWplY3RlZC4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4o
cmVxdWVzdC53c19leHRlbnNpb25zKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tb24u
REVGTEFURV9GUkFNRV9FWFRFTlNJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVz
dC53c19leHRlbnNpb25zWzBdLm5hbWUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBs
ZW4ocmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29ycykpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoY29tbW9uLk1VWF9FWFRFTlNJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVx
dWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29yc1swXS5uYW1lKCkpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoY29tbW9uLkRFRkxBVEVfRlJBTUVfRVhURU5TSU9OLAotICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlcXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnNbMV0ubmFtZSgpKQotICAg
ICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIocmVxdWVzdCwgJ211eF9wcm9jZXNzb3InKSkK
LQotICAgIGRlZiB0ZXN0X2RvX2hhbmRzaGFrZV93aXRoX2RlZmxhdGVfZnJhbWVfYW5kX211eChz
ZWxmKToKLSAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQot
ICAgICAgICByZXF1ZXN0X2RlZi5oZWFkZXJzWydTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMnXSA9
ICgnJXMsICVzJyAlICgKLSAgICAgICAgICAgICAgICBjb21tb24uREVGTEFURV9GUkFNRV9FWFRF
TlNJT04sCi0gICAgICAgICAgICAgICAgY29tbW9uLk1VWF9FWFRFTlNJT04pKQotICAgICAgICBy
ZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KHJlcXVlc3RfZGVmKQotICAgICAgICBoYW5kc2hha2Vy
ID0gX2NyZWF0ZV9oYW5kc2hha2VyKHJlcXVlc3QpCi0gICAgICAgIGhhbmRzaGFrZXIuZG9faGFu
ZHNoYWtlKCkKLSAgICAgICAgIyBtdXggc2hvdWxkIGJlIHJlamVjdGVkLgotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKDEsIGxlbihyZXF1ZXN0LndzX2V4dGVuc2lvbnMpKQotICAgICAgICBmaXJz
dF9leHRlbnNpb24gPSByZXF1ZXN0LndzX2V4dGVuc2lvbnNbMF0KLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChjb21tb24uREVGTEFURV9GUkFNRV9FWFRFTlNJT04sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgZmlyc3RfZXh0ZW5zaW9uLm5hbWUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgyLCBsZW4ocmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29ycykpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoY29tbW9uLkRFRkxBVEVfRlJBTUVfRVhURU5TSU9OLAotICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlcXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnNbMF0ubmFtZSgpKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1vbi5NVVhfRVhURU5TSU9OLAotICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlcXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnNbMV0ubmFtZSgp
KQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIocmVxdWVzdCwgJ211eCcpKQotCi0g
ICAgZGVmIHRlc3RfZG9faGFuZHNoYWtlX3dpdGhfcGVybWVzc2FnZV9jb21wcmVzc19hbmRfbXV4
KHNlbGYpOgotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigp
Ci0gICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucydd
ID0gKAotICAgICAgICAgICAgJyVzOyBtZXRob2Q9ZGVmbGF0ZSwgJXMnICUgKAotICAgICAgICAg
ICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0NPTVBSRVNTSU9OX0VYVEVOU0lPTiwKLSAgICAgICAg
ICAgICAgICBjb21tb24uTVVYX0VYVEVOU0lPTikpCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRl
X3JlcXVlc3QocmVxdWVzdF9kZWYpCi0gICAgICAgIGhhbmRzaGFrZXIgPSBfY3JlYXRlX2hhbmRz
aGFrZXIocmVxdWVzdCkKLSAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQotCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHJlcXVlc3Qud3NfZXh0ZW5zaW9ucykpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLk1VWF9FWFRFTlNJT04sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgcmVxdWVzdC53c19leHRlbnNpb25zWzBdLm5hbWUoKSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgyLCBsZW4ocmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29ycykpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLlBFUk1FU1NBR0VfQ09NUFJFU1NJT05fRVhU
RU5TSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qud3NfZXh0ZW5zaW9uX3By
b2Nlc3NvcnNbMF0ubmFtZSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1vbi5NVVhf
RVhURU5TSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qud3NfZXh0ZW5zaW9u
X3Byb2Nlc3NvcnNbMV0ubmFtZSgpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihy
ZXF1ZXN0LCAnbXV4X3Byb2Nlc3NvcicpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmVxdWVz
dC5tdXhfcHJvY2Vzc29yLmlzX2FjdGl2ZSgpKQotICAgICAgICBtdXhfZXh0ZW5zaW9ucyA9IHJl
cXVlc3QubXV4X3Byb2Nlc3Nvci5leHRlbnNpb25zKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgxLCBsZW4obXV4X2V4dGVuc2lvbnMpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1v
bi5QRVJNRVNTQUdFX0NPTVBSRVNTSU9OX0VYVEVOU0lPTiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICBtdXhfZXh0ZW5zaW9uc1swXS5uYW1lKCkpCi0KLSAgICBkZWYgdGVzdF9kb19oYW5kc2hh
a2Vfd2l0aF9tdXhfYW5kX3Blcm1lc3NhZ2VfY29tcHJlc3Moc2VsZik6Ci0gICAgICAgIHJlcXVl
c3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKLSAgICAgICAgcmVxdWVzdF9kZWYu
aGVhZGVyc1snU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zJ10gPSAoCi0gICAgICAgICAgICAnJXMs
ICVzOyBtZXRob2Q9ZGVmbGF0ZScgJSAoCi0gICAgICAgICAgICAgICAgY29tbW9uLk1VWF9FWFRF
TlNJT04sCi0gICAgICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfQ09NUFJFU1NJT05fRVhU
RU5TSU9OKSkKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikK
LSAgICAgICAgaGFuZHNoYWtlciA9IF9jcmVhdGVfaGFuZHNoYWtlcihyZXF1ZXN0KQotICAgICAg
ICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgICMgbXV4IHNob3VsZCBiZSByZWpl
Y3RlZC4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4ocmVxdWVzdC53c19leHRlbnNp
b25zKSkKLSAgICAgICAgZmlyc3RfZXh0ZW5zaW9uID0gcmVxdWVzdC53c19leHRlbnNpb25zWzBd
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLlBFUk1FU1NBR0VfQ09NUFJFU1NJT05f
RVhURU5TSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0X2V4dGVuc2lvbi5uYW1l
KCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgbGVuKHJlcXVlc3Qud3NfZXh0ZW5zaW9u
X3Byb2Nlc3NvcnMpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1vbi5NVVhfRVhURU5T
SU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nl
c3NvcnNbMF0ubmFtZSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1vbi5QRVJNRVNT
QUdFX0NPTVBSRVNTSU9OX0VYVEVOU0lPTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1
ZXN0LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzWzFdLm5hbWUoKSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRGYWxzZShoYXNhdHRyKHJlcXVlc3QsICdtdXhfcHJvY2Vzc29yJykpCi0KLSAgICBkZWYgdGVz
dF9iYWRfcmVxdWVzdHMoc2VsZik6Ci0gICAgICAgIGJhZF9jYXNlcyA9IFsKLSAgICAgICAgICAg
ICgnSFRUUCByZXF1ZXN0JywKLSAgICAgICAgICAgICBSZXF1ZXN0RGVmaW5pdGlvbigKLSAgICAg
ICAgICAgICAgICAgJ0dFVCcsICcvZGVtbycsCi0gICAgICAgICAgICAgICAgIHsnSG9zdCc6ICd3
d3cuZ29vZ2xlLmNvbScsCi0gICAgICAgICAgICAgICAgICAnVXNlci1BZ2VudCc6Ci0gICAgICAg
ICAgICAgICAgICAgICAgJ01vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBY
IDEwLjU7JwotICAgICAgICAgICAgICAgICAgICAgICcgZW4tVVM7IHJ2OjEuOS4xLjMpIEdlY2tv
LzIwMDkwODI0IEZpcmVmb3gvMy41LjMnCi0gICAgICAgICAgICAgICAgICAgICAgJyBHVEI2IEdU
QkEnLAotICAgICAgICAgICAgICAgICAgJ0FjY2VwdCc6Ci0gICAgICAgICAgICAgICAgICAgICAg
J3RleHQvaHRtbCxhcHBsaWNhdGlvbi94aHRtbCt4bWwsYXBwbGljYXRpb24veG1sO3E9MC45LCcK
LSAgICAgICAgICAgICAgICAgICAgICAnKi8qO3E9MC44JywKLSAgICAgICAgICAgICAgICAgICdB
Y2NlcHQtTGFuZ3VhZ2UnOiAnZW4tdXMsZW47cT0wLjUnLAotICAgICAgICAgICAgICAgICAgJ0Fj
Y2VwdC1FbmNvZGluZyc6ICdnemlwLGRlZmxhdGUnLAotICAgICAgICAgICAgICAgICAgJ0FjY2Vw
dC1DaGFyc2V0JzogJ0lTTy04ODU5LTEsdXRmLTg7cT0wLjcsKjtxPTAuNycsCi0gICAgICAgICAg
ICAgICAgICAnS2VlcC1BbGl2ZSc6ICczMDAnLAotICAgICAgICAgICAgICAgICAgJ0Nvbm5lY3Rp
b24nOiAna2VlcC1hbGl2ZSd9KSwgTm9uZSwgVHJ1ZSldCi0KLSAgICAgICAgcmVxdWVzdF9kZWYg
PSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQotICAgICAgICByZXF1ZXN0X2RlZi5tZXRob2Qg
PSAnUE9TVCcKLSAgICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgoJ1dyb25nIG1ldGhvZCcsIHJlcXVl
c3RfZGVmLCBOb25lLCBUcnVlKSkKLQotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29v
ZF9yZXF1ZXN0X2RlZigpCi0gICAgICAgIGRlbCByZXF1ZXN0X2RlZi5oZWFkZXJzWydIb3N0J10K
LSAgICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgoJ01pc3NpbmcgSG9zdCcsIHJlcXVlc3RfZGVmLCBO
b25lLCBUcnVlKSkKLQotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0
X2RlZigpCi0gICAgICAgIGRlbCByZXF1ZXN0X2RlZi5oZWFkZXJzWydVcGdyYWRlJ10KLSAgICAg
ICAgYmFkX2Nhc2VzLmFwcGVuZCgoJ01pc3NpbmcgVXBncmFkZScsIHJlcXVlc3RfZGVmLCBOb25l
LCBUcnVlKSkKLQotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2Rl
ZigpCi0gICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1VwZ3JhZGUnXSA9ICdub253ZWJzb2Nr
ZXQnCi0gICAgICAgIGJhZF9jYXNlcy5hcHBlbmQoKCdXcm9uZyBVcGdyYWRlJywgcmVxdWVzdF9k
ZWYsIE5vbmUsIFRydWUpKQotCi0gICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3Jl
cXVlc3RfZGVmKCkKLSAgICAgICAgZGVsIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ0Nvbm5lY3Rpb24n
XQotICAgICAgICBiYWRfY2FzZXMuYXBwZW5kKCgnTWlzc2luZyBDb25uZWN0aW9uJywgcmVxdWVz
dF9kZWYsIE5vbmUsIFRydWUpKQotCi0gICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29k
X3JlcXVlc3RfZGVmKCkKLSAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snQ29ubmVjdGlvbidd
ID0gJ0Rvd25ncmFkZScKLSAgICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgoJ1dyb25nIENvbm5lY3Rp
b24nLCByZXF1ZXN0X2RlZiwgTm9uZSwgVHJ1ZSkpCi0KLSAgICAgICAgcmVxdWVzdF9kZWYgPSBf
Y3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQotICAgICAgICBkZWwgcmVxdWVzdF9kZWYuaGVhZGVy
c1snU2VjLVdlYlNvY2tldC1LZXknXQotICAgICAgICBiYWRfY2FzZXMuYXBwZW5kKCgnTWlzc2lu
ZyBTZWMtV2ViU29ja2V0LUtleScsIHJlcXVlc3RfZGVmLCA0MDAsIFRydWUpKQotCi0gICAgICAg
IHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKLSAgICAgICAgcmVxdWVz
dF9kZWYuaGVhZGVyc1snU2VjLVdlYlNvY2tldC1LZXknXSA9ICgKLSAgICAgICAgICAgICdkR2hs
SUhOaGJYQnNaU0J1YjI1alpRPT1nYXJiYWdlJykKLSAgICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgo
J1dyb25nIFNlYy1XZWJTb2NrZXQtS2V5ICh3aXRoIGdhcmJhZ2Ugb24gdGhlIHRhaWwpJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdF9kZWYsIDQwMCwgVHJ1ZSkpCi0KLSAgICAg
ICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQotICAgICAgICByZXF1
ZXN0X2RlZi5oZWFkZXJzWydTZWMtV2ViU29ja2V0LUtleSddID0gJ1lRPT0nICAjIEJBU0U2NCBv
ZiAnYScKLSAgICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgKLSAgICAgICAgICAgICgnV3JvbmcgU2Vj
LVdlYlNvY2tldC1LZXkgKGRlY29kZWQgdmFsdWUgaXMgbm90IDE2IG9jdGV0cyBsb25nKScsCi0g
ICAgICAgICAgICAgcmVxdWVzdF9kZWYsIDQwMCwgVHJ1ZSkpCi0KLSAgICAgICAgcmVxdWVzdF9k
ZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQotICAgICAgICAjIFRoZSBsYXN0IGNoYXJh
Y3RlciByaWdodCBiZWZvcmUgPT0gbXVzdCBiZSBhbnkgb2YgQSwgUSwgdyBhbmQgZy4KLSAgICAg
ICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snU2VjLVdlYlNvY2tldC1LZXknXSA9ICgKLSAgICAgICAg
ICAgICdBUUlEQkFVR0J3Z0pDZ3NNRFE0UEVDPT0nKQotICAgICAgICBiYWRfY2FzZXMuYXBwZW5k
KAotICAgICAgICAgICAgKCdXcm9uZyBTZWMtV2ViU29ja2V0LUtleSAocGFkZGluZyBiaXRzIGFy
ZSBub3QgemVybyknLAotICAgICAgICAgICAgIHJlcXVlc3RfZGVmLCA0MDAsIFRydWUpKQotCi0g
ICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKLSAgICAgICAg
cmVxdWVzdF9kZWYuaGVhZGVyc1snU2VjLVdlYlNvY2tldC1LZXknXSA9ICgKLSAgICAgICAgICAg
ICdkR2hsSUhOaGJYQnNaU0J1YjI1alpRPT0sZEdobElITmhiWEJzWlNCdWIyNWpaUT09JykKLSAg
ICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgKLSAgICAgICAgICAgICgnV3JvbmcgU2VjLVdlYlNvY2tl
dC1LZXkgKG11bHRpcGxlIHZhbHVlcyknLAotICAgICAgICAgICAgIHJlcXVlc3RfZGVmLCA0MDAs
IFRydWUpKQotCi0gICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVm
KCkKLSAgICAgICAgZGVsIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJTb2NrZXQtVmVyc2lv
biddCi0gICAgICAgIGJhZF9jYXNlcy5hcHBlbmQoKCdNaXNzaW5nIFNlYy1XZWJTb2NrZXQtVmVy
c2lvbicsIHJlcXVlc3RfZGVmLCBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICBUcnVl
KSkKLQotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCi0g
ICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJTb2NrZXQtVmVyc2lvbiddID0gJzMn
Ci0gICAgICAgIGJhZF9jYXNlcy5hcHBlbmQoKCdXcm9uZyBTZWMtV2ViU29ja2V0LVZlcnNpb24n
LCByZXF1ZXN0X2RlZiwgTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgRmFsc2UpKQot
Ci0gICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKLSAgICAg
ICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snU2VjLVdlYlNvY2tldC1WZXJzaW9uJ10gPSAnMTMsIDEz
JwotICAgICAgICBiYWRfY2FzZXMuYXBwZW5kKCgnV3JvbmcgU2VjLVdlYlNvY2tldC1WZXJzaW9u
IChtdWx0aXBsZSB2YWx1ZXMpJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdF9k
ZWYsIDQwMCwgVHJ1ZSkpCi0KLSAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVx
dWVzdF9kZWYoKQotICAgICAgICByZXF1ZXN0X2RlZi5oZWFkZXJzWydTZWMtV2ViU29ja2V0LVBy
b3RvY29sJ10gPSAnaWxsZWdhbFx4MDlwcm90b2NvbCcKLSAgICAgICAgYmFkX2Nhc2VzLmFwcGVu
ZCgoJ0lsbGVnYWwgU2VjLVdlYlNvY2tldC1Qcm90b2NvbCcsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlcXVlc3RfZGVmLCA0MDAsIFRydWUpKQotCi0gICAgICAgIHJlcXVlc3RfZGVmID0g
X2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKLSAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1sn
U2VjLVdlYlNvY2tldC1Qcm90b2NvbCddID0gJycKLSAgICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgo
J0VtcHR5IFNlYy1XZWJTb2NrZXQtUHJvdG9jb2wnLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXF1ZXN0X2RlZiwgNDAwLCBUcnVlKSkKLQotICAgICAgICBmb3IgKGNhc2VfbmFtZSwgcmVx
dWVzdF9kZWYsIGV4cGVjdGVkX3N0YXR1cywKLSAgICAgICAgICAgICBleHBlY3RfaGFuZHNoYWtl
X2V4Y2VwdGlvbikgaW4gYmFkX2Nhc2VzOgotICAgICAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVf
cmVxdWVzdChyZXF1ZXN0X2RlZikKLSAgICAgICAgICAgIGhhbmRzaGFrZXIgPSBIYW5kc2hha2Vy
KHJlcXVlc3QsIG1vY2suTW9ja0Rpc3BhdGNoZXIoKSkKLSAgICAgICAgICAgIHRyeToKLSAgICAg
ICAgICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgICAgICAgICAgc2Vs
Zi5mYWlsKCdObyBleGNlcHRpb24gdGhyb3duIGZvciBcJyVzXCcgY2FzZScgJSBjYXNlX25hbWUp
Ci0gICAgICAgICAgICBleGNlcHQgSGFuZHNoYWtlRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShleHBlY3RfaGFuZHNoYWtlX2V4Y2VwdGlvbikKLSAgICAgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3N0YXR1cywgZS5zdGF0dXMpCi0gICAg
ICAgICAgICBleGNlcHQgVmVyc2lvbkV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgICAgICBzZWxm
LmFzc2VydEZhbHNlKGV4cGVjdF9oYW5kc2hha2VfZXhjZXB0aW9uKQotCi0KLWlmIF9fbmFtZV9f
ID09ICdfX21haW5fXyc6Ci0gICAgdW5pdHRlc3QubWFpbigpCi0KLQotIyB2aTpzdHM9NCBzdz00
IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RfaGFuZHNoYWtlX2h5YmkwMC5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvc3JjL3Rlc3QvdGVzdF9oYW5kc2hha2VfaHliaTAwLnB5CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA3M2Y5ZjI3Y2EyZDk0MjFiMjMwMTVmNThjODkzYWNmMWRjMDA5ZGVmLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rl
c3QvdGVzdF9oYW5kc2hha2VfaHliaTAwLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNTE2ICswLDAg
QEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIElu
Yy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwot
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
IyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiVGVz
dHMgZm9yIGhhbmRzaGFrZS5oeWJpMDAgbW9kdWxlLiIiIgotCi0KLWltcG9ydCB1bml0dGVzdAot
Ci1pbXBvcnQgc2V0X3N5c19wYXRoICAjIFVwZGF0ZSBzeXMucGF0aCB0byBsb2NhdGUgbW9kX3B5
d2Vic29ja2V0IG1vZHVsZS4KLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNl
IGltcG9ydCBIYW5kc2hha2VFeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFr
ZS5oeWJpMDAgaW1wb3J0IEhhbmRzaGFrZXIKLWZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFr
ZS5oeWJpMDAgaW1wb3J0IF92YWxpZGF0ZV9zdWJwcm90b2NvbAotZnJvbSB0ZXN0IGltcG9ydCBt
b2NrCi0KLQotX1RFU1RfS0VZMSA9ICc0IEAxICA0NjU0NnhXJTBsIDEgNScKLV9URVNUX0tFWTIg
PSAnMTI5OTggNSBZMyAxICAuUDAwJwotX1RFU1RfS0VZMyA9ICdebjpkc1s0VScKLV9URVNUX0NI
QUxMRU5HRV9SRVNQT05TRSA9ICc4aktTXCd5OkcqQ28sV3hhLScKLQotCi1fR09PRF9SRVFVRVNU
ID0gKAotICAgIDgwLAotICAgICdHRVQnLAotICAgICcvZGVtbycsCi0gICAgewotICAgICAgICAn
SG9zdCc6ICdleGFtcGxlLmNvbScsCi0gICAgICAgICdDb25uZWN0aW9uJzogJ1VwZ3JhZGUnLAot
ICAgICAgICAnU2VjLVdlYlNvY2tldC1LZXkyJzogX1RFU1RfS0VZMiwKLSAgICAgICAgJ1NlYy1X
ZWJTb2NrZXQtUHJvdG9jb2wnOiAnc2FtcGxlJywKLSAgICAgICAgJ1VwZ3JhZGUnOiAnV2ViU29j
a2V0JywKLSAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5MSc6IF9URVNUX0tFWTEsCi0gICAgICAg
ICdPcmlnaW4nOiAnaHR0cDovL2V4YW1wbGUuY29tJywKLSAgICB9LAotICAgIF9URVNUX0tFWTMp
Ci0KLV9HT09EX1JFUVVFU1RfQ0FQSVRBTElaRURfSEVBREVSX1ZBTFVFUyA9ICgKLSAgICA4MCwK
LSAgICAnR0VUJywKLSAgICAnL2RlbW8nLAotICAgIHsKLSAgICAgICAgJ0hvc3QnOiAnZXhhbXBs
ZS5jb20nLAotICAgICAgICAnQ29ubmVjdGlvbic6ICdVUEdSQURFJywKLSAgICAgICAgJ1NlYy1X
ZWJTb2NrZXQtS2V5Mic6IF9URVNUX0tFWTIsCi0gICAgICAgICdTZWMtV2ViU29ja2V0LVByb3Rv
Y29sJzogJ3NhbXBsZScsCi0gICAgICAgICdVcGdyYWRlJzogJ1dFQlNPQ0tFVCcsCi0gICAgICAg
ICdTZWMtV2ViU29ja2V0LUtleTEnOiBfVEVTVF9LRVkxLAotICAgICAgICAnT3JpZ2luJzogJ2h0
dHA6Ly9leGFtcGxlLmNvbScsCi0gICAgfSwKLSAgICBfVEVTVF9LRVkzKQotCi1fR09PRF9SRVFV
RVNUX0NBU0VfTUlYRURfSEVBREVSX05BTUVTID0gKAotICAgIDgwLAotICAgICdHRVQnLAotICAg
ICcvZGVtbycsCi0gICAgewotICAgICAgICAnaE9zVCc6ICdleGFtcGxlLmNvbScsCi0gICAgICAg
ICdjT25OZUN0SW9OJzogJ1VwZ3JhZGUnLAotICAgICAgICAnc0VjLXdFYnNPY0tlVC1rRXkyJzog
X1RFU1RfS0VZMiwKLSAgICAgICAgJ3NFYy13RWJzT2NLZVQtcFJvVG9Db0wnOiAnc2FtcGxlJywK
LSAgICAgICAgJ3VQZ1JhRGUnOiAnV2ViU29ja2V0JywKLSAgICAgICAgJ3NFYy13RWJzT2NLZVQt
a0V5MSc6IF9URVNUX0tFWTEsCi0gICAgICAgICdvUmlHaU4nOiAnaHR0cDovL2V4YW1wbGUuY29t
JywKLSAgICB9LAotICAgIF9URVNUX0tFWTMpCi0KLV9HT09EX1JFU1BPTlNFX0RFRkFVTFRfUE9S
VCA9ICgKLSAgICAnSFRUUC8xLjEgMTAxIFdlYlNvY2tldCBQcm90b2NvbCBIYW5kc2hha2Vcclxu
JwotICAgICdVcGdyYWRlOiBXZWJTb2NrZXRcclxuJwotICAgICdDb25uZWN0aW9uOiBVcGdyYWRl
XHJcbicKLSAgICAnU2VjLVdlYlNvY2tldC1Mb2NhdGlvbjogd3M6Ly9leGFtcGxlLmNvbS9kZW1v
XHJcbicKLSAgICAnU2VjLVdlYlNvY2tldC1PcmlnaW46IGh0dHA6Ly9leGFtcGxlLmNvbVxyXG4n
Ci0gICAgJ1NlYy1XZWJTb2NrZXQtUHJvdG9jb2w6IHNhbXBsZVxyXG4nCi0gICAgJ1xyXG4nICsK
LSAgICBfVEVTVF9DSEFMTEVOR0VfUkVTUE9OU0UpCi0KLV9HT09EX1JFU1BPTlNFX1NFQ1VSRSA9
ICgKLSAgICAnSFRUUC8xLjEgMTAxIFdlYlNvY2tldCBQcm90b2NvbCBIYW5kc2hha2VcclxuJwot
ICAgICdVcGdyYWRlOiBXZWJTb2NrZXRcclxuJwotICAgICdDb25uZWN0aW9uOiBVcGdyYWRlXHJc
bicKLSAgICAnU2VjLVdlYlNvY2tldC1Mb2NhdGlvbjogd3NzOi8vZXhhbXBsZS5jb20vZGVtb1xy
XG4nCi0gICAgJ1NlYy1XZWJTb2NrZXQtT3JpZ2luOiBodHRwOi8vZXhhbXBsZS5jb21cclxuJwot
ICAgICdTZWMtV2ViU29ja2V0LVByb3RvY29sOiBzYW1wbGVcclxuJwotICAgICdcclxuJyArCi0g
ICAgX1RFU1RfQ0hBTExFTkdFX1JFU1BPTlNFKQotCi1fR09PRF9SRVFVRVNUX05PTkRFRkFVTFRf
UE9SVCA9ICgKLSAgICA4MDgxLAotICAgICdHRVQnLAotICAgICcvZGVtbycsCi0gICAgewotICAg
ICAgICAnSG9zdCc6ICdleGFtcGxlLmNvbTo4MDgxJywKLSAgICAgICAgJ0Nvbm5lY3Rpb24nOiAn
VXBncmFkZScsCi0gICAgICAgICdTZWMtV2ViU29ja2V0LUtleTInOiBfVEVTVF9LRVkyLAotICAg
ICAgICAnU2VjLVdlYlNvY2tldC1Qcm90b2NvbCc6ICdzYW1wbGUnLAotICAgICAgICAnVXBncmFk
ZSc6ICdXZWJTb2NrZXQnLAotICAgICAgICAnU2VjLVdlYlNvY2tldC1LZXkxJzogX1RFU1RfS0VZ
MSwKLSAgICAgICAgJ09yaWdpbic6ICdodHRwOi8vZXhhbXBsZS5jb20nLAotICAgIH0sCi0gICAg
X1RFU1RfS0VZMykKLQotX0dPT0RfUkVTUE9OU0VfTk9OREVGQVVMVF9QT1JUID0gKAotICAgICdI
VFRQLzEuMSAxMDEgV2ViU29ja2V0IFByb3RvY29sIEhhbmRzaGFrZVxyXG4nCi0gICAgJ1VwZ3Jh
ZGU6IFdlYlNvY2tldFxyXG4nCi0gICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJwotICAgICdT
ZWMtV2ViU29ja2V0LUxvY2F0aW9uOiB3czovL2V4YW1wbGUuY29tOjgwODEvZGVtb1xyXG4nCi0g
ICAgJ1NlYy1XZWJTb2NrZXQtT3JpZ2luOiBodHRwOi8vZXhhbXBsZS5jb21cclxuJwotICAgICdT
ZWMtV2ViU29ja2V0LVByb3RvY29sOiBzYW1wbGVcclxuJwotICAgICdcclxuJyArCi0gICAgX1RF
U1RfQ0hBTExFTkdFX1JFU1BPTlNFKQotCi1fR09PRF9SRVNQT05TRV9TRUNVUkVfTk9OREVGID0g
KAotICAgICdIVFRQLzEuMSAxMDEgV2ViU29ja2V0IFByb3RvY29sIEhhbmRzaGFrZVxyXG4nCi0g
ICAgJ1VwZ3JhZGU6IFdlYlNvY2tldFxyXG4nCi0gICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxu
JwotICAgICdTZWMtV2ViU29ja2V0LUxvY2F0aW9uOiB3c3M6Ly9leGFtcGxlLmNvbTo4MDgxL2Rl
bW9cclxuJwotICAgICdTZWMtV2ViU29ja2V0LU9yaWdpbjogaHR0cDovL2V4YW1wbGUuY29tXHJc
bicKLSAgICAnU2VjLVdlYlNvY2tldC1Qcm90b2NvbDogc2FtcGxlXHJcbicKLSAgICAnXHJcbicg
KwotICAgIF9URVNUX0NIQUxMRU5HRV9SRVNQT05TRSkKLQotX0dPT0RfUkVRVUVTVF9OT19QUk9U
T0NPTCA9ICgKLSAgICA4MCwKLSAgICAnR0VUJywKLSAgICAnL2RlbW8nLAotICAgIHsKLSAgICAg
ICAgJ0hvc3QnOiAnZXhhbXBsZS5jb20nLAotICAgICAgICAnQ29ubmVjdGlvbic6ICdVcGdyYWRl
JywKLSAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5Mic6IF9URVNUX0tFWTIsCi0gICAgICAgICdV
cGdyYWRlJzogJ1dlYlNvY2tldCcsCi0gICAgICAgICdTZWMtV2ViU29ja2V0LUtleTEnOiBfVEVT
VF9LRVkxLAotICAgICAgICAnT3JpZ2luJzogJ2h0dHA6Ly9leGFtcGxlLmNvbScsCi0gICAgfSwK
LSAgICBfVEVTVF9LRVkzKQotCi1fR09PRF9SRVNQT05TRV9OT19QUk9UT0NPTCA9ICgKLSAgICAn
SFRUUC8xLjEgMTAxIFdlYlNvY2tldCBQcm90b2NvbCBIYW5kc2hha2VcclxuJwotICAgICdVcGdy
YWRlOiBXZWJTb2NrZXRcclxuJwotICAgICdDb25uZWN0aW9uOiBVcGdyYWRlXHJcbicKLSAgICAn
U2VjLVdlYlNvY2tldC1Mb2NhdGlvbjogd3M6Ly9leGFtcGxlLmNvbS9kZW1vXHJcbicKLSAgICAn
U2VjLVdlYlNvY2tldC1PcmlnaW46IGh0dHA6Ly9leGFtcGxlLmNvbVxyXG4nCi0gICAgJ1xyXG4n
ICsKLSAgICBfVEVTVF9DSEFMTEVOR0VfUkVTUE9OU0UpCi0KLV9HT09EX1JFUVVFU1RfV0lUSF9P
UFRJT05BTF9IRUFERVJTID0gKAotICAgIDgwLAotICAgICdHRVQnLAotICAgICcvZGVtbycsCi0g
ICAgewotICAgICAgICAnSG9zdCc6ICdleGFtcGxlLmNvbScsCi0gICAgICAgICdDb25uZWN0aW9u
JzogJ1VwZ3JhZGUnLAotICAgICAgICAnU2VjLVdlYlNvY2tldC1LZXkyJzogX1RFU1RfS0VZMiwK
LSAgICAgICAgJ0VtcHR5VmFsdWUnOiAnJywKLSAgICAgICAgJ1NlYy1XZWJTb2NrZXQtUHJvdG9j
b2wnOiAnc2FtcGxlJywKLSAgICAgICAgJ0FLZXknOiAnQVZhbHVlJywKLSAgICAgICAgJ1VwZ3Jh
ZGUnOiAnV2ViU29ja2V0JywKLSAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5MSc6IF9URVNUX0tF
WTEsCi0gICAgICAgICdPcmlnaW4nOiAnaHR0cDovL2V4YW1wbGUuY29tJywKLSAgICB9LAotICAg
IF9URVNUX0tFWTMpCi0KLSMgVE9ETyh0eW9zaGlubyk6IEluY2x1ZGUgXHIgXG4gaW4ga2V5Mywg
Y2hhbGxlbmdlIHJlc3BvbnNlLgotCi1fR09PRF9SRVFVRVNUX1dJVEhfTk9OUFJJTlRBQkxFX0tF
WSA9ICgKLSAgICA4MCwKLSAgICAnR0VUJywKLSAgICAnL2RlbW8nLAotICAgIHsKLSAgICAgICAg
J0hvc3QnOiAnZXhhbXBsZS5jb20nLAotICAgICAgICAnQ29ubmVjdGlvbic6ICdVcGdyYWRlJywK
LSAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5Mic6ICd5ICBSMiA0OCBRMU80ICBlfEJWMyBpNSAx
ICB1LSA2NScsCi0gICAgICAgICdTZWMtV2ViU29ja2V0LVByb3RvY29sJzogJ3NhbXBsZScsCi0g
ICAgICAgICdVcGdyYWRlJzogJ1dlYlNvY2tldCcsCi0gICAgICAgICdTZWMtV2ViU29ja2V0LUtl
eTEnOiAnMzYgNyAgIDc0IGkgIDkyIDJcJ20gOSAwRycsCi0gICAgICAgICdPcmlnaW4nOiAnaHR0
cDovL2V4YW1wbGUuY29tJywKLSAgICB9LAotICAgICcnLmpvaW4obWFwKGNociwgWzB4MDEsIDB4
ZDEsIDB4ZGQsIDB4M2IsIDB4ZDEsIDB4NTYsIDB4NjMsIDB4ZmZdKSkpCi0KLV9HT09EX1JFU1BP
TlNFX1dJVEhfTk9OUFJJTlRBQkxFX0tFWSA9ICgKLSAgICAnSFRUUC8xLjEgMTAxIFdlYlNvY2tl
dCBQcm90b2NvbCBIYW5kc2hha2VcclxuJwotICAgICdVcGdyYWRlOiBXZWJTb2NrZXRcclxuJwot
ICAgICdDb25uZWN0aW9uOiBVcGdyYWRlXHJcbicKLSAgICAnU2VjLVdlYlNvY2tldC1Mb2NhdGlv
bjogd3M6Ly9leGFtcGxlLmNvbS9kZW1vXHJcbicKLSAgICAnU2VjLVdlYlNvY2tldC1PcmlnaW46
IGh0dHA6Ly9leGFtcGxlLmNvbVxyXG4nCi0gICAgJ1NlYy1XZWJTb2NrZXQtUHJvdG9jb2w6IHNh
bXBsZVxyXG4nCi0gICAgJ1xyXG4nICsKLSAgICAnJy5qb2luKG1hcChjaHIsIFsweDBiLCAweDk5
LCAweGZhLCAweDU1LCAweGJkLCAweDAxLCAweDIzLCAweDdiLAotICAgICAgICAgICAgICAgICAg
ICAgIDB4NDUsIDB4YTIsIDB4ZjEsIDB4ZDAsIDB4ODcsIDB4OGEsIDB4ZWUsIDB4ZWJdKSkpCi0K
LV9HT09EX1JFUVVFU1RfV0lUSF9RVUVSWV9QQVJUID0gKAotICAgIDgwLAotICAgICdHRVQnLAot
ICAgICcvZGVtbz9lPW1jMicsCi0gICAgewotICAgICAgICAnSG9zdCc6ICdleGFtcGxlLmNvbScs
Ci0gICAgICAgICdDb25uZWN0aW9uJzogJ1VwZ3JhZGUnLAotICAgICAgICAnU2VjLVdlYlNvY2tl
dC1LZXkyJzogX1RFU1RfS0VZMiwKLSAgICAgICAgJ1NlYy1XZWJTb2NrZXQtUHJvdG9jb2wnOiAn
c2FtcGxlJywKLSAgICAgICAgJ1VwZ3JhZGUnOiAnV2ViU29ja2V0JywKLSAgICAgICAgJ1NlYy1X
ZWJTb2NrZXQtS2V5MSc6IF9URVNUX0tFWTEsCi0gICAgICAgICdPcmlnaW4nOiAnaHR0cDovL2V4
YW1wbGUuY29tJywKLSAgICB9LAotICAgIF9URVNUX0tFWTMpCi0KLV9HT09EX1JFU1BPTlNFX1dJ
VEhfUVVFUllfUEFSVCA9ICgKLSAgICAnSFRUUC8xLjEgMTAxIFdlYlNvY2tldCBQcm90b2NvbCBI
YW5kc2hha2VcclxuJwotICAgICdVcGdyYWRlOiBXZWJTb2NrZXRcclxuJwotICAgICdDb25uZWN0
aW9uOiBVcGdyYWRlXHJcbicKLSAgICAnU2VjLVdlYlNvY2tldC1Mb2NhdGlvbjogd3M6Ly9leGFt
cGxlLmNvbS9kZW1vP2U9bWMyXHJcbicKLSAgICAnU2VjLVdlYlNvY2tldC1PcmlnaW46IGh0dHA6
Ly9leGFtcGxlLmNvbVxyXG4nCi0gICAgJ1NlYy1XZWJTb2NrZXQtUHJvdG9jb2w6IHNhbXBsZVxy
XG4nCi0gICAgJ1xyXG4nICsKLSAgICBfVEVTVF9DSEFMTEVOR0VfUkVTUE9OU0UpCi0KLV9CQURf
UkVRVUVTVFMgPSAoCi0gICAgKCAgIyBIVFRQIHJlcXVlc3QKLSAgICAgICAgODAsCi0gICAgICAg
ICdHRVQnLAotICAgICAgICAnL2RlbW8nLAotICAgICAgICB7Ci0gICAgICAgICAgICAnSG9zdCc6
ICd3d3cuZ29vZ2xlLmNvbScsCi0gICAgICAgICAgICAnVXNlci1BZ2VudCc6ICdNb3ppbGxhLzUu
MCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMC41OycKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgJyBlbi1VUzsgcnY6MS45LjEuMykgR2Vja28vMjAwOTA4MjQgRmlyZWZveC8zLjUu
MycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJyBHVEI2IEdUQkEnLAotICAgICAgICAgICAg
J0FjY2VwdCc6ICd0ZXh0L2h0bWwsYXBwbGljYXRpb24veGh0bWwreG1sLGFwcGxpY2F0aW9uL3ht
bDtxPTAuOSwnCi0gICAgICAgICAgICAgICAgICAgICAgJyovKjtxPTAuOCcsCi0gICAgICAgICAg
ICAnQWNjZXB0LUxhbmd1YWdlJzogJ2VuLXVzLGVuO3E9MC41JywKLSAgICAgICAgICAgICdBY2Nl
cHQtRW5jb2RpbmcnOiAnZ3ppcCxkZWZsYXRlJywKLSAgICAgICAgICAgICdBY2NlcHQtQ2hhcnNl
dCc6ICdJU08tODg1OS0xLHV0Zi04O3E9MC43LCo7cT0wLjcnLAotICAgICAgICAgICAgJ0tlZXAt
QWxpdmUnOiAnMzAwJywKLSAgICAgICAgICAgICdDb25uZWN0aW9uJzogJ2tlZXAtYWxpdmUnLAot
ICAgICAgICB9KSwKLSAgICAoICAjIFdyb25nIG1ldGhvZAotICAgICAgICA4MCwKLSAgICAgICAg
J1BPU1QnLAotICAgICAgICAnL2RlbW8nLAotICAgICAgICB7Ci0gICAgICAgICAgICAnSG9zdCc6
ICdleGFtcGxlLmNvbScsCi0gICAgICAgICAgICAnQ29ubmVjdGlvbic6ICdVcGdyYWRlJywKLSAg
ICAgICAgICAgICdTZWMtV2ViU29ja2V0LUtleTInOiBfVEVTVF9LRVkyLAotICAgICAgICAgICAg
J1NlYy1XZWJTb2NrZXQtUHJvdG9jb2wnOiAnc2FtcGxlJywKLSAgICAgICAgICAgICdVcGdyYWRl
JzogJ1dlYlNvY2tldCcsCi0gICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1LZXkxJzogX1RFU1Rf
S0VZMSwKLSAgICAgICAgICAgICdPcmlnaW4nOiAnaHR0cDovL2V4YW1wbGUuY29tJywKLSAgICAg
ICAgfSwKLSAgICAgICAgX1RFU1RfS0VZMyksCi0gICAgKCAgIyBNaXNzaW5nIFVwZ3JhZGUKLSAg
ICAgICAgODAsCi0gICAgICAgICdHRVQnLAotICAgICAgICAnL2RlbW8nLAotICAgICAgICB7Ci0g
ICAgICAgICAgICAnSG9zdCc6ICdleGFtcGxlLmNvbScsCi0gICAgICAgICAgICAnQ29ubmVjdGlv
bic6ICdVcGdyYWRlJywKLSAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LUtleTInOiBfVEVTVF9L
RVkyLAotICAgICAgICAgICAgJ1NlYy1XZWJTb2NrZXQtUHJvdG9jb2wnOiAnc2FtcGxlJywKLSAg
ICAgICAgICAgICdTZWMtV2ViU29ja2V0LUtleTEnOiBfVEVTVF9LRVkxLAotICAgICAgICAgICAg
J09yaWdpbic6ICdodHRwOi8vZXhhbXBsZS5jb20nLAotICAgICAgICB9LAotICAgICAgICBfVEVT
VF9LRVkzKSwKLSAgICAoICAjIFdyb25nIFVwZ3JhZGUKLSAgICAgICAgODAsCi0gICAgICAgICdH
RVQnLAotICAgICAgICAnL2RlbW8nLAotICAgICAgICB7Ci0gICAgICAgICAgICAnSG9zdCc6ICdl
eGFtcGxlLmNvbScsCi0gICAgICAgICAgICAnQ29ubmVjdGlvbic6ICdVcGdyYWRlJywKLSAgICAg
ICAgICAgICdTZWMtV2ViU29ja2V0LUtleTInOiBfVEVTVF9LRVkyLAotICAgICAgICAgICAgJ1Nl
Yy1XZWJTb2NrZXQtUHJvdG9jb2wnOiAnc2FtcGxlJywKLSAgICAgICAgICAgICdVcGdyYWRlJzog
J05vbldlYlNvY2tldCcsCi0gICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1LZXkxJzogX1RFU1Rf
S0VZMSwKLSAgICAgICAgICAgICdPcmlnaW4nOiAnaHR0cDovL2V4YW1wbGUuY29tJywKLSAgICAg
ICAgfSwKLSAgICAgICAgX1RFU1RfS0VZMyksCi0gICAgKCAgIyBFbXB0eSBXZWJTb2NrZXQtUHJv
dG9jb2wKLSAgICAgICAgODAsCi0gICAgICAgICdHRVQnLAotICAgICAgICAnL2RlbW8nLAotICAg
ICAgICB7Ci0gICAgICAgICAgICAnSG9zdCc6ICdleGFtcGxlLmNvbScsCi0gICAgICAgICAgICAn
Q29ubmVjdGlvbic6ICdVcGdyYWRlJywKLSAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LUtleTIn
OiBfVEVTVF9LRVkyLAotICAgICAgICAgICAgJ1NlYy1XZWJTb2NrZXQtUHJvdG9jb2wnOiAnJywK
LSAgICAgICAgICAgICdVcGdyYWRlJzogJ1dlYlNvY2tldCcsCi0gICAgICAgICAgICAnU2VjLVdl
YlNvY2tldC1LZXkxJzogX1RFU1RfS0VZMSwKLSAgICAgICAgICAgICdPcmlnaW4nOiAnaHR0cDov
L2V4YW1wbGUuY29tJywKLSAgICAgICAgfSwKLSAgICAgICAgX1RFU1RfS0VZMyksCi0gICAgKCAg
IyBXcm9uZyBwb3J0IG51bWJlciBmb3JtYXQKLSAgICAgICAgODAsCi0gICAgICAgICdHRVQnLAot
ICAgICAgICAnL2RlbW8nLAotICAgICAgICB7Ci0gICAgICAgICAgICAnSG9zdCc6ICdleGFtcGxl
LmNvbToweDUwJywKLSAgICAgICAgICAgICdDb25uZWN0aW9uJzogJ1VwZ3JhZGUnLAotICAgICAg
ICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5Mic6IF9URVNUX0tFWTIsCi0gICAgICAgICAgICAnU2Vj
LVdlYlNvY2tldC1Qcm90b2NvbCc6ICdzYW1wbGUnLAotICAgICAgICAgICAgJ1VwZ3JhZGUnOiAn
V2ViU29ja2V0JywKLSAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LUtleTEnOiBfVEVTVF9LRVkx
LAotICAgICAgICAgICAgJ09yaWdpbic6ICdodHRwOi8vZXhhbXBsZS5jb20nLAotICAgICAgICB9
LAotICAgICAgICBfVEVTVF9LRVkzKSwKLSAgICAoICAjIEhlYWRlci9jb25uZWN0aW9uIHBvcnQg
bWlzbWF0Y2gKLSAgICAgICAgODA4MCwKLSAgICAgICAgJ0dFVCcsCi0gICAgICAgICcvZGVtbycs
Ci0gICAgICAgIHsKLSAgICAgICAgICAgICdIb3N0JzogJ2V4YW1wbGUuY29tJywKLSAgICAgICAg
ICAgICdDb25uZWN0aW9uJzogJ1VwZ3JhZGUnLAotICAgICAgICAgICAgJ1NlYy1XZWJTb2NrZXQt
S2V5Mic6IF9URVNUX0tFWTIsCi0gICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1Qcm90b2NvbCc6
ICdzYW1wbGUnLAotICAgICAgICAgICAgJ1VwZ3JhZGUnOiAnV2ViU29ja2V0JywKLSAgICAgICAg
ICAgICdTZWMtV2ViU29ja2V0LUtleTEnOiBfVEVTVF9LRVkxLAotICAgICAgICAgICAgJ09yaWdp
bic6ICdodHRwOi8vZXhhbXBsZS5jb20nLAotICAgICAgICB9LAotICAgICAgICBfVEVTVF9LRVkz
KSwKLSAgICAoICAjIElsbGVnYWwgV2ViU29ja2V0LVByb3RvY29sCi0gICAgICAgIDgwLAotICAg
ICAgICAnR0VUJywKLSAgICAgICAgJy9kZW1vJywKLSAgICAgICAgewotICAgICAgICAgICAgJ0hv
c3QnOiAnZXhhbXBsZS5jb20nLAotICAgICAgICAgICAgJ0Nvbm5lY3Rpb24nOiAnVXBncmFkZScs
Ci0gICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1LZXkyJzogX1RFU1RfS0VZMiwKLSAgICAgICAg
ICAgICdTZWMtV2ViU29ja2V0LVByb3RvY29sJzogJ2lsbGVnYWxceDA5cHJvdG9jb2wnLAotICAg
ICAgICAgICAgJ1VwZ3JhZGUnOiAnV2ViU29ja2V0JywKLSAgICAgICAgICAgICdTZWMtV2ViU29j
a2V0LUtleTEnOiBfVEVTVF9LRVkxLAotICAgICAgICAgICAgJ09yaWdpbic6ICdodHRwOi8vZXhh
bXBsZS5jb20nLAotICAgICAgICB9LAotICAgICAgICBfVEVTVF9LRVkzKSwKLSkKLQotCi1kZWYg
X2NyZWF0ZV9yZXF1ZXN0KHJlcXVlc3RfZGVmKToKLSAgICBkYXRhID0gJycKLSAgICBpZiBsZW4o
cmVxdWVzdF9kZWYpID4gNDoKLSAgICAgICAgZGF0YSA9IHJlcXVlc3RfZGVmWzRdCi0gICAgY29u
biA9IG1vY2suTW9ja0Nvbm4oZGF0YSkKLSAgICBjb25uLmxvY2FsX2FkZHIgPSAoJzAuMC4wLjAn
LCByZXF1ZXN0X2RlZlswXSkKLSAgICByZXR1cm4gbW9jay5Nb2NrUmVxdWVzdCgKLSAgICAgICAg
bWV0aG9kPXJlcXVlc3RfZGVmWzFdLAotICAgICAgICB1cmk9cmVxdWVzdF9kZWZbMl0sCi0gICAg
ICAgIGhlYWRlcnNfaW49cmVxdWVzdF9kZWZbM10sCi0gICAgICAgIGNvbm5lY3Rpb249Y29ubikK
LQotCi1kZWYgX2NyZWF0ZV9nZXRfbWVtb3JpemVkX2xpbmVzKGxpbmVzKToKLSAgICAiIiJDcmVh
dGVzIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBnaXZlbiBzdHJpbmcuIiIiCi0KLSAgICBk
ZWYgZ2V0X21lbW9yaXplZF9saW5lcygpOgotICAgICAgICByZXR1cm4gbGluZXMKLSAgICByZXR1
cm4gZ2V0X21lbW9yaXplZF9saW5lcwotCi0KLWRlZiBfY3JlYXRlX3JlcXVlc3RzX3dpdGhfbGlu
ZXMocmVxdWVzdF9saW5lc19zZXQpOgotICAgIHJlcXVlc3RzID0gW10KLSAgICBmb3IgbGluZXMg
aW4gcmVxdWVzdF9saW5lc19zZXQ6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3Qo
X0dPT0RfUkVRVUVTVCkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLmdldF9tZW1vcml6ZWRf
bGluZXMgPSBfY3JlYXRlX2dldF9tZW1vcml6ZWRfbGluZXMoCi0gICAgICAgICAgICAgICAgbGlu
ZXMpCi0gICAgICAgIHJlcXVlc3RzLmFwcGVuZChyZXF1ZXN0KQotICAgIHJldHVybiByZXF1ZXN0
cwotCi0KLWNsYXNzIEh5QmkwMEhhbmRzaGFrZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLQot
ICAgIGRlZiB0ZXN0X2dvb2RfcmVxdWVzdF9kZWZhdWx0X3BvcnQoc2VsZik6Ci0gICAgICAgIHJl
cXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoX0dPT0RfUkVRVUVTVCkKLSAgICAgICAgaGFuZHNoYWtl
ciA9IEhhbmRzaGFrZXIocmVxdWVzdCwgbW9jay5Nb2NrRGlzcGF0Y2hlcigpKQotICAgICAgICBo
YW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX0dPT0Rf
UkVTUE9OU0VfREVGQVVMVF9QT1JULAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qu
Y29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnL2Rl
bW8nLCByZXF1ZXN0LndzX3Jlc291cmNlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdodHRw
Oi8vZXhhbXBsZS5jb20nLCByZXF1ZXN0LndzX29yaWdpbikKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgnd3M6Ly9leGFtcGxlLmNvbS9kZW1vJywgcmVxdWVzdC53c19sb2NhdGlvbikKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgnc2FtcGxlJywgcmVxdWVzdC53c19wcm90b2NvbCkKLQotICAg
IGRlZiB0ZXN0X2dvb2RfcmVxdWVzdF9jYXBpdGFsaXplZF9oZWFkZXJfdmFsdWVzKHNlbGYpOgot
ICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KF9HT09EX1JFUVVFU1RfQ0FQSVRBTEla
RURfSEVBREVSX1ZBTFVFUykKLSAgICAgICAgaGFuZHNoYWtlciA9IEhhbmRzaGFrZXIocmVxdWVz
dCwgbW9jay5Nb2NrRGlzcGF0Y2hlcigpKQotICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFr
ZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX0dPT0RfUkVTUE9OU0VfREVGQVVMVF9QT1JU
LAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2Rh
dGEoKSkKLQotICAgIGRlZiB0ZXN0X2dvb2RfcmVxdWVzdF9jYXNlX21peGVkX2hlYWRlcl9uYW1l
cyhzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChfR09PRF9SRVFVRVNU
X0NBU0VfTUlYRURfSEVBREVSX05BTUVTKQotICAgICAgICBoYW5kc2hha2VyID0gSGFuZHNoYWtl
cihyZXF1ZXN0LCBtb2NrLk1vY2tEaXNwYXRjaGVyKCkpCi0gICAgICAgIGhhbmRzaGFrZXIuZG9f
aGFuZHNoYWtlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfR09PRF9SRVNQT05TRV9ERUZB
VUxUX1BPUlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndy
aXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3RfZ29vZF9yZXF1ZXN0X3NlY3VyZV9kZWZhdWx0
X3BvcnQoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoX0dPT0RfUkVR
VUVTVCkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLmxvY2FsX2FkZHIgPSAoJzAuMC4wLjAn
LCA0NDMpCi0gICAgICAgIHJlcXVlc3QuaXNfaHR0cHNfID0gVHJ1ZQotICAgICAgICBoYW5kc2hh
a2VyID0gSGFuZHNoYWtlcihyZXF1ZXN0LCBtb2NrLk1vY2tEaXNwYXRjaGVyKCkpCi0gICAgICAg
IGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfR09P
RF9SRVNQT05TRV9TRUNVUkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25u
ZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdzYW1wbGUn
LCByZXF1ZXN0LndzX3Byb3RvY29sKQotCi0gICAgZGVmIHRlc3RfZ29vZF9yZXF1ZXN0X25vbmRl
ZmF1bHRfcG9ydChzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChfR09P
RF9SRVFVRVNUX05PTkRFRkFVTFRfUE9SVCkKLSAgICAgICAgaGFuZHNoYWtlciA9IEhhbmRzaGFr
ZXIocmVxdWVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1v
Y2suTW9ja0Rpc3BhdGNoZXIoKSkKLSAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9HT09EX1JFU1BPTlNFX05PTkRFRkFVTFRfUE9SVCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRh
KCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3NhbXBsZScsIHJlcXVlc3Qud3NfcHJvdG9j
b2wpCi0KLSAgICBkZWYgdGVzdF9nb29kX3JlcXVlc3Rfc2VjdXJlX25vbl9kZWZhdWx0X3BvcnQo
c2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoX0dPT0RfUkVRVUVTVF9O
T05ERUZBVUxUX1BPUlQpCi0gICAgICAgIHJlcXVlc3QuaXNfaHR0cHNfID0gVHJ1ZQotICAgICAg
ICBoYW5kc2hha2VyID0gSGFuZHNoYWtlcihyZXF1ZXN0LCBtb2NrLk1vY2tEaXNwYXRjaGVyKCkp
Ci0gICAgICAgIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChfR09PRF9SRVNQT05TRV9TRUNVUkVfTk9OREVGLAotICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgnc2FtcGxlJywgcmVxdWVzdC53c19wcm90b2NvbCkKLQotICAgIGRlZiB0ZXN0X2dv
b2RfcmVxdWVzdF9kZWZhdWx0X25vX3Byb3RvY29sKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0g
X2NyZWF0ZV9yZXF1ZXN0KF9HT09EX1JFUVVFU1RfTk9fUFJPVE9DT0wpCi0gICAgICAgIGhhbmRz
aGFrZXIgPSBIYW5kc2hha2VyKHJlcXVlc3QsIG1vY2suTW9ja0Rpc3BhdGNoZXIoKSkKLSAgICAg
ICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9H
T09EX1JFU1BPTlNFX05PX1BST1RPQ09MLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVl
c3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChO
b25lLCByZXF1ZXN0LndzX3Byb3RvY29sKQotCi0gICAgZGVmIHRlc3RfZ29vZF9yZXF1ZXN0X29w
dGlvbmFsX2hlYWRlcnMoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3Qo
X0dPT0RfUkVRVUVTVF9XSVRIX09QVElPTkFMX0hFQURFUlMpCi0gICAgICAgIGhhbmRzaGFrZXIg
PSBIYW5kc2hha2VyKHJlcXVlc3QsIG1vY2suTW9ja0Rpc3BhdGNoZXIoKSkKLSAgICAgICAgaGFu
ZHNoYWtlci5kb19oYW5kc2hha2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdBVmFsdWUn
LAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuaGVhZGVyc19pblsnQUtleSddKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJl
cXVlc3QuaGVhZGVyc19pblsnRW1wdHlWYWx1ZSddKQotCi0gICAgZGVmIHRlc3RfZ29vZF9yZXF1
ZXN0X3dpdGhfbm9ucHJpbnRhYmxlX2tleShzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVh
dGVfcmVxdWVzdChfR09PRF9SRVFVRVNUX1dJVEhfTk9OUFJJTlRBQkxFX0tFWSkKLSAgICAgICAg
aGFuZHNoYWtlciA9IEhhbmRzaGFrZXIocmVxdWVzdCwgbW9jay5Nb2NrRGlzcGF0Y2hlcigpKQot
ICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoX0dPT0RfUkVTUE9OU0VfV0lUSF9OT05QUklOVEFCTEVfS0VZLAotICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgnc2FtcGxlJywgcmVxdWVzdC53c19wcm90b2NvbCkKLQotICAgIGRlZiB0
ZXN0X2dvb2RfcmVxdWVzdF93aXRoX3F1ZXJ5X3BhcnQoc2VsZik6Ci0gICAgICAgIHJlcXVlc3Qg
PSBfY3JlYXRlX3JlcXVlc3QoX0dPT0RfUkVRVUVTVF9XSVRIX1FVRVJZX1BBUlQpCi0gICAgICAg
IGhhbmRzaGFrZXIgPSBIYW5kc2hha2VyKHJlcXVlc3QsIG1vY2suTW9ja0Rpc3BhdGNoZXIoKSkK
LSAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKF9HT09EX1JFU1BPTlNFX1dJVEhfUVVFUllfUEFSVCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJ3dzOi8vZXhhbXBsZS5jb20vZGVtbz9lPW1jMicsIHJlcXVlc3Qud3NfbG9jYXRp
b24pCi0KLSAgICBkZWYgdGVzdF9iYWRfcmVxdWVzdHMoc2VsZik6Ci0gICAgICAgIGZvciByZXF1
ZXN0IGluIG1hcChfY3JlYXRlX3JlcXVlc3QsIF9CQURfUkVRVUVTVFMpOgotICAgICAgICAgICAg
aGFuZHNoYWtlciA9IEhhbmRzaGFrZXIocmVxdWVzdCwgbW9jay5Nb2NrRGlzcGF0Y2hlcigpKQot
ICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSGFuZHNoYWtlRXhjZXB0aW9uLCBoYW5kc2hh
a2VyLmRvX2hhbmRzaGFrZSkKLQotCi1jbGFzcyBIeUJpMDBWYWxpZGF0ZVN1YnByb3RvY29sVGVz
dCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHRlc3RfdmFsaWRhdGVfc3VicHJvdG9jb2wo
c2VsZik6Ci0gICAgICAgICMgc2hvdWxkIHN1Y2NlZWQuCi0gICAgICAgIF92YWxpZGF0ZV9zdWJw
cm90b2NvbCgnc2FtcGxlJykKLSAgICAgICAgX3ZhbGlkYXRlX3N1YnByb3RvY29sKCdTYW1wbGUn
KQotICAgICAgICBfdmFsaWRhdGVfc3VicHJvdG9jb2woJ3NhbXBsZVx4N2Vwcm90b2NvbCcpCi0g
ICAgICAgIF92YWxpZGF0ZV9zdWJwcm90b2NvbCgnc2FtcGxlXHgyMHByb3RvY29sJykKLQotICAg
ICAgICAjIHNob3VsZCBmYWlsLgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhIYW5kc2hha2VF
eGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF92YWxpZGF0ZV9zdWJwcm90b2Nv
bCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFp
c2VzKEhhbmRzaGFrZUV4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZhbGlk
YXRlX3N1YnByb3RvY29sLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnc2FtcGxlXHgxOXBy
b3RvY29sJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSGFuZHNoYWtlRXhjZXB0aW9uLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICBfdmFsaWRhdGVfc3VicHJvdG9jb2wsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICdzYW1wbGVceDdmcHJvdG9jb2wnKQotICAgICAgICBzZWxmLmFz
c2VydFJhaXNlcyhIYW5kc2hha2VFeGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
IF92YWxpZGF0ZV9zdWJwcm90b2NvbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIyAiSmFw
YW4iIGluIEphcGFuZXNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHUnXHU2NWU1XHU2NzJj
JykKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHVuaXR0ZXN0Lm1haW4oKQot
Ci0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0X2h0
dHBfaGVhZGVyX3V0aWwucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RfaHR0cF9oZWFkZXJfdXRpbC5w
eQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDM2ZGM1N2MzNzMxMDcxZmUyOTAxOTE5
ZTMzZjI0YzFiNTU5ZjYwNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RfaHR0cF9oZWFkZXJfdXRpbC5weQorKysgL2Rldi9u
dWxsCkBAIC0xLDkwICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmln
aHQgMjAxMSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0j
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0KLQotIiIiVGVzdHMgZm9yIGh0dHBfaGVhZGVyX3V0aWwgbW9kdWxlLiIiIgotCi0K
LWltcG9ydCB1bml0dGVzdAotCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgaHR0cF9oZWFk
ZXJfdXRpbAotCi0KLWNsYXNzIFVuaXRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAiIiJB
IHVuaXR0ZXN0IGZvciBodHRwX2hlYWRlcl91dGlsIG1vZHVsZS4iIiIKLQotICAgIGRlZiB0ZXN0
X3BhcnNlX3JlbGF0aXZlX3VyaShzZWxmKToKLSAgICAgICAgaG9zdCwgcG9ydCwgcmVzb3VyY2Ug
PSBodHRwX2hlYWRlcl91dGlsLnBhcnNlX3VyaSgnL3dzL3Rlc3QnKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKE5vbmUsIGhvc3QpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgcG9y
dCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnL3dzL3Rlc3QnLCByZXNvdXJjZSkKLQotICAg
IGRlZiB0ZXN0X3BhcnNlX2Fic29sdXRlX3VyaShzZWxmKToKLSAgICAgICAgaG9zdCwgcG9ydCwg
cmVzb3VyY2UgPSBodHRwX2hlYWRlcl91dGlsLnBhcnNlX3VyaSgKLSAgICAgICAgICAgICd3czov
L2xvY2FsaG9zdDoxMDA4MC93cy90ZXN0JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnbG9j
YWxob3N0JywgaG9zdCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxMDA4MCwgcG9ydCkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnL3dzL3Rlc3QnLCByZXNvdXJjZSkKLQotICAgICAgICBo
b3N0LCBwb3J0LCByZXNvdXJjZSA9IGh0dHBfaGVhZGVyX3V0aWwucGFyc2VfdXJpKAotICAgICAg
ICAgICAgJ3dzOi8vZXhhbXBsZS5jb20vd3MvdGVzdCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJ2V4YW1wbGUuY29tJywgaG9zdCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg4MCwgcG9y
dCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnL3dzL3Rlc3QnLCByZXNvdXJjZSkKLQotICAg
ICAgICBob3N0LCBwb3J0LCByZXNvdXJjZSA9IGh0dHBfaGVhZGVyX3V0aWwucGFyc2VfdXJpKAot
ICAgICAgICAgICAgJ3dzczovL2V4YW1wbGUuY29tLycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJ2V4YW1wbGUuY29tJywgaG9zdCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg0NDMsIHBv
cnQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy8nLCByZXNvdXJjZSkKLQotICAgICAgICBo
b3N0LCBwb3J0LCByZXNvdXJjZSA9IGh0dHBfaGVhZGVyX3V0aWwucGFyc2VfdXJpKAotICAgICAg
ICAgICAgJ3dzOi8vZXhhbXBsZS5jb206ODA4MCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
J2V4YW1wbGUuY29tJywgaG9zdCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg4MDgwLCBwb3J0
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcvJywgcmVzb3VyY2UpCi0KLSAgICBkZWYgdGVz
dF9wYXJzZV9pbnZhbGlkX3VyaShzZWxmKToKLSAgICAgICAgaG9zdCwgcG9ydCwgcmVzb3VyY2Ug
PSBodHRwX2hlYWRlcl91dGlsLnBhcnNlX3VyaSgnd3M6Ly8vJykKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChOb25lLCByZXNvdXJjZSkKLQotICAgICAgICBob3N0LCBwb3J0LCByZXNvdXJjZSA9
IGh0dHBfaGVhZGVyX3V0aWwucGFyc2VfdXJpKCd3czovL2xvY2FsaG9zdDonKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKE5vbmUsIHJlc291cmNlKQotCi0gICAgICAgIGhvc3QsIHBvcnQsIHJl
c291cmNlID0gaHR0cF9oZWFkZXJfdXRpbC5wYXJzZV91cmkoJ3dzOi8vbG9jYWxob3N0Oi93cycp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgcmVzb3VyY2UpCi0KLQotaWYgX19uYW1l
X18gPT0gJ19fbWFpbl9fJzoKLSAgICB1bml0dGVzdC5tYWluKCkKLQotCi0jIHZpOnN0cz00IHN3
PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdF9tZW1vcml6aW5nZmlsZS5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvc3JjL3Rlc3QvdGVzdF9tZW1vcml6aW5nZmlsZS5weQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggOGYxYjhlZWY0MzM3OGE5YjAwNjI1ZjIyMGM5N2ZlMjJmNzQwYThmNy4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0
L3Rlc3RfbWVtb3JpemluZ2ZpbGUucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMDQgKzAsMCBAQAot
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgot
IyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
IyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJUZXN0cyBm
b3IgbWVtb3JpemluZ2ZpbGUgbW9kdWxlLiIiIgotCi0KLWltcG9ydCBTdHJpbmdJTwotaW1wb3J0
IHVuaXR0ZXN0Ci0KLWltcG9ydCBzZXRfc3lzX3BhdGggICMgVXBkYXRlIHN5cy5wYXRoIHRvIGxv
Y2F0ZSBtb2RfcHl3ZWJzb2NrZXQgbW9kdWxlLgotCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBv
cnQgbWVtb3JpemluZ2ZpbGUKLQotCi1jbGFzcyBVdGlsVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
Ci0gICAgIiIiQSB1bml0dGVzdCBmb3IgbWVtb3JpemluZ2ZpbGUgbW9kdWxlLiIiIgotCi0gICAg
ZGVmIGNoZWNrKHNlbGYsIG1lbW9yaXppbmdfZmlsZSwgbnVtX3JlYWQsIGV4cGVjdGVkX2xpc3Qp
OgotICAgICAgICBmb3IgdW51c2VkIGluIHJhbmdlKG51bV9yZWFkKToKLSAgICAgICAgICAgIG1l
bW9yaXppbmdfZmlsZS5yZWFkbGluZSgpCi0gICAgICAgIGFjdHVhbF9saXN0ID0gbWVtb3Jpemlu
Z19maWxlLmdldF9tZW1vcml6ZWRfbGluZXMoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxl
bihleHBlY3RlZF9saXN0KSwgbGVuKGFjdHVhbF9saXN0KSkKLSAgICAgICAgZm9yIGV4cGVjdGVk
LCBhY3R1YWwgaW4gemlwKGV4cGVjdGVkX2xpc3QsIGFjdHVhbF9saXN0KToKLSAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIGFjdHVhbCkKLQotICAgIGRlZiBjaGVja193aXRo
X3NpemUoc2VsZiwgbWVtb3JpemluZ19maWxlLCByZWFkX3NpemUsIGV4cGVjdGVkX2xpc3QpOgot
ICAgICAgICByZWFkX2xpc3QgPSBbXQotICAgICAgICByZWFkX2xpbmUgPSAnJwotICAgICAgICB3
aGlsZSBUcnVlOgotICAgICAgICAgICAgbGluZSA9IG1lbW9yaXppbmdfZmlsZS5yZWFkbGluZShy
ZWFkX3NpemUpCi0gICAgICAgICAgICBsaW5lX2xlbmd0aCA9IGxlbihsaW5lKQotICAgICAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKGxpbmVfbGVuZ3RoIDw9IHJlYWRfc2l6ZSkKLSAgICAgICAgICAg
IGlmIGxpbmVfbGVuZ3RoID09IDA6Ci0gICAgICAgICAgICAgICAgaWYgcmVhZF9saW5lICE9ICcn
OgotICAgICAgICAgICAgICAgICAgICByZWFkX2xpc3QuYXBwZW5kKHJlYWRfbGluZSkKLSAgICAg
ICAgICAgICAgICBicmVhawotICAgICAgICAgICAgcmVhZF9saW5lICs9IGxpbmUKLSAgICAgICAg
ICAgIGlmIGxpbmVbbGluZV9sZW5ndGggLSAxXSA9PSAnXG4nOgotICAgICAgICAgICAgICAgIHJl
YWRfbGlzdC5hcHBlbmQocmVhZF9saW5lKQotICAgICAgICAgICAgICAgIHJlYWRfbGluZSA9ICcn
Ci0gICAgICAgIGFjdHVhbF9saXN0ID0gbWVtb3JpemluZ19maWxlLmdldF9tZW1vcml6ZWRfbGlu
ZXMoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihleHBlY3RlZF9saXN0KSwgbGVuKGFj
dHVhbF9saXN0KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZXhwZWN0ZWRfbGlzdCks
IGxlbihyZWFkX2xpc3QpKQotICAgICAgICBmb3IgZXhwZWN0ZWQsIGFjdHVhbCwgcmVhZCBpbiB6
aXAoZXhwZWN0ZWRfbGlzdCwgYWN0dWFsX2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZWFkX2xpc3QpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChleHBlY3RlZCwgYWN0dWFsKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3Rl
ZCwgcmVhZCkKLQotICAgIGRlZiB0ZXN0X2dldF9tZW1vcml6ZWRfbGluZXMoc2VsZik6Ci0gICAg
ICAgIG1lbW9yaXppbmdfZmlsZSA9IG1lbW9yaXppbmdmaWxlLk1lbW9yaXppbmdGaWxlKFN0cmlu
Z0lPLlN0cmluZ0lPKAotICAgICAgICAgICAgICAgICdIZWxsb1xuV29ybGRcbldlbGNvbWUnKSkK
LSAgICAgICAgc2VsZi5jaGVjayhtZW1vcml6aW5nX2ZpbGUsIDMsIFsnSGVsbG9cbicsICdXb3Js
ZFxuJywgJ1dlbGNvbWUnXSkKLQotICAgIGRlZiB0ZXN0X2dldF9tZW1vcml6ZWRfbGluZXNfbGlt
aXRfbWVtb3JpemVkX2xpbmVzKHNlbGYpOgotICAgICAgICBtZW1vcml6aW5nX2ZpbGUgPSBtZW1v
cml6aW5nZmlsZS5NZW1vcml6aW5nRmlsZShTdHJpbmdJTy5TdHJpbmdJTygKLSAgICAgICAgICAg
ICAgICAnSGVsbG9cbldvcmxkXG5XZWxjb21lJyksIDIpCi0gICAgICAgIHNlbGYuY2hlY2sobWVt
b3JpemluZ19maWxlLCAzLCBbJ0hlbGxvXG4nLCAnV29ybGRcbiddKQotCi0gICAgZGVmIHRlc3Rf
Z2V0X21lbW9yaXplZF9saW5lc19lbXB0eV9maWxlKHNlbGYpOgotICAgICAgICBtZW1vcml6aW5n
X2ZpbGUgPSBtZW1vcml6aW5nZmlsZS5NZW1vcml6aW5nRmlsZShTdHJpbmdJTy5TdHJpbmdJTygK
LSAgICAgICAgICAgICAgICAnJykpCi0gICAgICAgIHNlbGYuY2hlY2sobWVtb3JpemluZ19maWxl
LCAxMCwgW10pCi0KLSAgICBkZWYgdGVzdF9nZXRfbWVtb3JpemVkX2xpbmVzX3dpdGhfc2l6ZShz
ZWxmKToKLSAgICAgICAgZm9yIHNpemUgaW4gcmFuZ2UoMSwgMTApOgotICAgICAgICAgICAgbWVt
b3JpemluZ19maWxlID0gbWVtb3JpemluZ2ZpbGUuTWVtb3JpemluZ0ZpbGUoU3RyaW5nSU8uU3Ry
aW5nSU8oCi0gICAgICAgICAgICAgICAgJ0hlbGxvXG5Xb3JsZFxuV2VsY29tZScpKQotICAgICAg
ICAgICAgc2VsZi5jaGVja193aXRoX3NpemUobWVtb3JpemluZ19maWxlLCBzaXplLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgWydIZWxsb1xuJywgJ1dvcmxkXG4nLCAnV2VsY29t
ZSddKQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHVuaXR0ZXN0Lm1haW4oKQot
Ci0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0X21v
Y2sucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RfbW9jay5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggN2RjMjNhNzNkOGZiMWEwN2FlYjNlNWFlOTQwMmNjODZiOGZjYzM2Ni4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rl
c3RfbW9jay5weQorKysgL2Rldi9udWxsCkBAIC0xLDE0NSArMCwwIEBACi0jIS91c3IvYmluL2Vu
diBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMg
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBk
aXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0j
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0j
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIlRlc3RzIGZvciBtb2NrIG1vZHVs
ZS4iIiIKLQotCi1pbXBvcnQgUXVldWUKLWltcG9ydCB0aHJlYWRpbmcKLWltcG9ydCB1bml0dGVz
dAotCi1pbXBvcnQgc2V0X3N5c19wYXRoICAjIFVwZGF0ZSBzeXMucGF0aCB0byBsb2NhdGUgbW9k
X3B5d2Vic29ja2V0IG1vZHVsZS4KLQotZnJvbSB0ZXN0IGltcG9ydCBtb2NrCi0KLQotY2xhc3Mg
TW9ja0Nvbm5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAiIiJBIHVuaXR0ZXN0IGZvciBN
b2NrQ29ubiBjbGFzcy4iIiIKLQotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5f
Y29ubiA9IG1vY2suTW9ja0Nvbm4oJ0FCQ1xyXG5ERUZHXHJcblxyXG5ISUpLJykKLQotICAgIGRl
ZiB0ZXN0X3JlYWRsaW5lKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdBQkNcclxu
Jywgc2VsZi5fY29ubi5yZWFkbGluZSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdERUZH
XHJcbicsIHNlbGYuX2Nvbm4ucmVhZGxpbmUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
XHJcbicsIHNlbGYuX2Nvbm4ucmVhZGxpbmUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
SElKSycsIHNlbGYuX2Nvbm4ucmVhZGxpbmUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
Jywgc2VsZi5fY29ubi5yZWFkbGluZSgpKQotCi0gICAgZGVmIHRlc3RfcmVhZChzZWxmKToKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnQUJDXHJcbkQnLCBzZWxmLl9jb25uLnJlYWQoNikpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0VGR1xyXG5cclxuSEknLCBzZWxmLl9jb25uLnJlYWQo
OSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0pLJywgc2VsZi5fY29ubi5yZWFkKDEwKSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJywgc2VsZi5fY29ubi5yZWFkKDEwKSkKLQotICAg
IGRlZiB0ZXN0X3JlYWRfYW5kX3JlYWRsaW5lKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCdBQkNcclxuRCcsIHNlbGYuX2Nvbm4ucmVhZCg2KSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgnRUZHXHJcbicsIHNlbGYuX2Nvbm4ucmVhZGxpbmUoKSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgnXHJcbkhJSksnLCBzZWxmLl9jb25uLnJlYWQoOSkpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJycsIHNlbGYuX2Nvbm4ucmVhZGxpbmUoKSkKLQotICAgIGRlZiB0ZXN0X3dyaXRl
KHNlbGYpOgotICAgICAgICBzZWxmLl9jb25uLndyaXRlKCdIZWxsb1xyXG4nKQotICAgICAgICBz
ZWxmLl9jb25uLndyaXRlKCdXb3JsZFxyXG4nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdI
ZWxsb1xyXG5Xb3JsZFxyXG4nLCBzZWxmLl9jb25uLndyaXR0ZW5fZGF0YSgpKQotCi0KLWNsYXNz
IE1vY2tCbG9ja2luZ0Nvbm5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAiIiJBIHVuaXR0
ZXN0IGZvciBNb2NrQmxvY2tpbmdDb25uIGNsYXNzLiIiIgotCi0gICAgZGVmIHRlc3RfcmVhZChz
ZWxmKToKLSAgICAgICAgIiIiVGVzdHMgdGhhdCBkYXRhIHB1dCB0byBNb2NrQmxvY2tpbmdDb25u
IGJ5IHB1dF9ieXRlcyBtZXRob2QgY2FuIGJlCi0gICAgICAgIHJlYWQgZnJvbSBpdC4KLSAgICAg
ICAgIiIiCi0KLSAgICAgICAgY2xhc3MgTGluZVJlYWRlcih0aHJlYWRpbmcuVGhyZWFkKToKLSAg
ICAgICAgICAgICIiIkEgdGVzdCBjbGFzcyB0aGF0IGxhdW5jaGVzIGEgdGhyZWFkLCBjYWxscyBy
ZWFkbGluZSBvbiB0aGUKLSAgICAgICAgICAgIHNwZWNpZmllZCBjb25uIHJlcGVhdGVkbHkgYW5k
IHB1dHMgdGhlIHJlYWQgZGF0YSB0byB0aGUgc3BlY2lmaWVkCi0gICAgICAgICAgICBxdWV1ZS4K
LSAgICAgICAgICAgICIiIgotCi0gICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgY29ubiwg
cXVldWUpOgotICAgICAgICAgICAgICAgIHRocmVhZGluZy5UaHJlYWQuX19pbml0X18oc2VsZikK
LSAgICAgICAgICAgICAgICBzZWxmLl9xdWV1ZSA9IHF1ZXVlCi0gICAgICAgICAgICAgICAgc2Vs
Zi5fY29ubiA9IGNvbm4KLSAgICAgICAgICAgICAgICBzZWxmLnNldERhZW1vbihUcnVlKQotICAg
ICAgICAgICAgICAgIHNlbGYuc3RhcnQoKQotCi0gICAgICAgICAgICBkZWYgcnVuKHNlbGYpOgot
ICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICAgICAgICAgIGRhdGEgPSBz
ZWxmLl9jb25uLnJlYWRsaW5lKCkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fcXVldWUucHV0
KGRhdGEpCi0KLSAgICAgICAgY29ubiA9IG1vY2suTW9ja0Jsb2NraW5nQ29ubigpCi0gICAgICAg
IHF1ZXVlID0gUXVldWUuUXVldWUoKQotICAgICAgICByZWFkZXIgPSBMaW5lUmVhZGVyKGNvbm4s
IHF1ZXVlKQotICAgICAgICBzZWxmLmZhaWxVbmxlc3MocXVldWUuZW1wdHkoKSkKLSAgICAgICAg
Y29ubi5wdXRfYnl0ZXMoJ0ZvbyBiYXJcclxuJykKLSAgICAgICAgcmVhZCA9IHF1ZXVlLmdldCgp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0ZvbyBiYXJcclxuJywgcmVhZCkKLQotCi1jbGFz
cyBNb2NrVGFibGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAiIiJBIHVuaXR0ZXN0IGZv
ciBNb2NrVGFibGUgY2xhc3MuIiIiCi0KLSAgICBkZWYgdGVzdF9jcmVhdGVfZnJvbV9kaWN0KHNl
bGYpOgotICAgICAgICB0YWJsZSA9IG1vY2suTW9ja1RhYmxlKHsnS2V5JzogJ1ZhbHVlJ30pCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFibGUuZ2V0KCdLRVknKSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZVsna2V5J10pCi0KLSAgICBkZWYgdGVz
dF9jcmVhdGVfZnJvbV9saXN0KHNlbGYpOgotICAgICAgICB0YWJsZSA9IG1vY2suTW9ja1RhYmxl
KFsoJ0tleScsICdWYWx1ZScpXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVmFsdWUnLCB0
YWJsZS5nZXQoJ0tFWScpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdWYWx1ZScsIHRhYmxl
WydrZXknXSkKLQotICAgIGRlZiB0ZXN0X2NyZWF0ZV9mcm9tX3R1cGxlKHNlbGYpOgotICAgICAg
ICB0YWJsZSA9IG1vY2suTW9ja1RhYmxlKCgoJ0tleScsICdWYWx1ZScpLCkpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFibGUuZ2V0KCdLRVknKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZVsna2V5J10pCi0KLSAgICBkZWYgdGVzdF9zZXRfYW5k
X2dldChzZWxmKToKLSAgICAgICAgdGFibGUgPSBtb2NrLk1vY2tUYWJsZSgpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoTm9uZSwgdGFibGUuZ2V0KCdLZXknKSkKLSAgICAgICAgdGFibGVbJ0tl
eSddID0gJ1ZhbHVlJwotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdWYWx1ZScsIHRhYmxlLmdl
dCgnS2V5JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFibGUuZ2V0KCdr
ZXknKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZS5nZXQoJ0tFWScp
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdWYWx1ZScsIHRhYmxlWydLZXknXSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZVsna2V5J10pCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFibGVbJ0tFWSddKQotCi0KLWlmIF9fbmFtZV9fID09ICdf
X21haW5fXyc6Ci0gICAgdW5pdHRlc3QubWFpbigpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RfbXNndXRpbC5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3Qv
dGVzdF9tc2d1dGlsLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZmVkY2Y5MmY2
MWZlOGNkOWU1NjBmMjc0YTg5YTAzYjQzYTcyYmRhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdF9tc2d1dGlsLnB5CisrKyAv
ZGV2L251bGwKQEAgLTEsMTM1NiArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMg
Q29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0j
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0j
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotCi0KLSIiIlRlc3RzIGZvciBtc2d1dGlsIG1vZHVsZS4iIiIKLQotCi1p
bXBvcnQgYXJyYXkKLWltcG9ydCBRdWV1ZQotaW1wb3J0IHJhbmRvbQotaW1wb3J0IHN0cnVjdAot
aW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgemxpYgotCi1pbXBvcnQgc2V0X3N5c19wYXRoICAjIFVw
ZGF0ZSBzeXMucGF0aCB0byBsb2NhdGUgbW9kX3B5d2Vic29ja2V0IG1vZHVsZS4KLQotZnJvbSBt
b2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuZXh0ZW5z
aW9ucyBpbXBvcnQgRGVmbGF0ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yCi1mcm9tIG1vZF9weXdl
YnNvY2tldC5leHRlbnNpb25zIGltcG9ydCBQZXJNZXNzYWdlQ29tcHJlc3NFeHRlbnNpb25Qcm9j
ZXNzb3IKLWZyb20gbW9kX3B5d2Vic29ja2V0LmV4dGVuc2lvbnMgaW1wb3J0IFBlck1lc3NhZ2VE
ZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgbXNn
dXRpbAotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuc3RyZWFtIGltcG9ydCBJbnZhbGlkVVRGOEV4Y2Vw
dGlvbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuc3RyZWFtIGltcG9ydCBTdHJlYW0KLWZyb20gbW9k
X3B5d2Vic29ja2V0LnN0cmVhbSBpbXBvcnQgU3RyZWFtSGl4aWU3NQotZnJvbSBtb2RfcHl3ZWJz
b2NrZXQuc3RyZWFtIGltcG9ydCBTdHJlYW1PcHRpb25zCi1mcm9tIG1vZF9weXdlYnNvY2tldCBp
bXBvcnQgdXRpbAotZnJvbSB0ZXN0IGltcG9ydCBtb2NrCi0KLQotIyBXZSB1c2Ugb25lIGZpeGVk
IG5vbmNlIGZvciB0ZXN0aW5nIGluc3RlYWQgb2YgY3J5cHRvZ3JhcGhpY2FsbHkgc2VjdXJlIFBS
TkcuCi1fTUFTS0lOR19OT05DRSA9ICdBQkNEJwotCi0KLWRlZiBfbWFza19oeWJpKGZyYW1lKToK
LSAgICBmcmFtZV9rZXkgPSBtYXAob3JkLCBfTUFTS0lOR19OT05DRSkKLSAgICBmcmFtZV9rZXlf
bGVuID0gbGVuKGZyYW1lX2tleSkKLSAgICByZXN1bHQgPSBhcnJheS5hcnJheSgnQicpCi0gICAg
cmVzdWx0LmZyb21zdHJpbmcoZnJhbWUpCi0gICAgY291bnQgPSAwCi0gICAgZm9yIGkgaW4geHJh
bmdlKGxlbihyZXN1bHQpKToKLSAgICAgICAgcmVzdWx0W2ldIF49IGZyYW1lX2tleVtjb3VudF0K
LSAgICAgICAgY291bnQgPSAoY291bnQgKyAxKSAlIGZyYW1lX2tleV9sZW4KLSAgICByZXR1cm4g
X01BU0tJTkdfTk9OQ0UgKyByZXN1bHQudG9zdHJpbmcoKQotCi0KLWRlZiBfaW5zdGFsbF9leHRl
bnNpb25fcHJvY2Vzc29yKHByb2Nlc3NvciwgcmVxdWVzdCwgc3RyZWFtX29wdGlvbnMpOgotICAg
IHJlc3BvbnNlID0gcHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoKQotICAgIGlmIHJl
c3BvbnNlIGlzIG5vdCBOb25lOgotICAgICAgICBwcm9jZXNzb3Iuc2V0dXBfc3RyZWFtX29wdGlv
bnMoc3RyZWFtX29wdGlvbnMpCi0gICAgICAgIHJlcXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3Nv
cnMuYXBwZW5kKHByb2Nlc3NvcikKLQotCi1kZWYgX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0
YSgKLSAgICAgICAgcmVhZF9kYXRhLAotICAgICAgICBkZWZsYXRlX2ZyYW1lX3JlcXVlc3Q9Tm9u
ZSwKLSAgICAgICAgcGVybWVzc2FnZV9jb21wcmVzc2lvbl9yZXF1ZXN0PU5vbmUsCi0gICAgICAg
IHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0PU5vbmUpOgotICAgIHJlcSA9IG1vY2suTW9ja1Jl
cXVlc3QoY29ubmVjdGlvbj1tb2NrLk1vY2tDb25uKCcnLmpvaW4ocmVhZF9kYXRhKSkpCi0gICAg
cmVxLndzX3ZlcnNpb24gPSBjb21tb24uVkVSU0lPTl9IWUJJX0xBVEVTVAotICAgIHJlcS53c19l
eHRlbnNpb25fcHJvY2Vzc29ycyA9IFtdCi0KLSAgICBwcm9jZXNzb3IgPSBOb25lCi0gICAgaWYg
ZGVmbGF0ZV9mcmFtZV9yZXF1ZXN0IGlzIG5vdCBOb25lOgotICAgICAgICBwcm9jZXNzb3IgPSBE
ZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IoZGVmbGF0ZV9mcmFtZV9yZXF1ZXN0KQotICAg
IGVsaWYgcGVybWVzc2FnZV9jb21wcmVzc2lvbl9yZXF1ZXN0IGlzIG5vdCBOb25lOgotICAgICAg
ICBwcm9jZXNzb3IgPSBQZXJNZXNzYWdlQ29tcHJlc3NFeHRlbnNpb25Qcm9jZXNzb3IoCi0gICAg
ICAgICAgICAgICAgcGVybWVzc2FnZV9jb21wcmVzc2lvbl9yZXF1ZXN0KQotICAgIGVsaWYgcGVy
bWVzc2FnZV9kZWZsYXRlX3JlcXVlc3QgaXMgbm90IE5vbmU6Ci0gICAgICAgIHByb2Nlc3NvciA9
IFBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKAotICAgICAgICAgICAgICAgIHBl
cm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0KQotCi0gICAgc3RyZWFtX29wdGlvbnMgPSBTdHJlYW1P
cHRpb25zKCkKLSAgICBpZiBwcm9jZXNzb3IgaXMgbm90IE5vbmU6Ci0gICAgICAgIF9pbnN0YWxs
X2V4dGVuc2lvbl9wcm9jZXNzb3IocHJvY2Vzc29yLCByZXEsIHN0cmVhbV9vcHRpb25zKQotICAg
IHJlcS53c19zdHJlYW0gPSBTdHJlYW0ocmVxLCBzdHJlYW1fb3B0aW9ucykKLQotICAgIHJldHVy
biByZXEKLQotCi1kZWYgX2NyZWF0ZV9yZXF1ZXN0KCpmcmFtZXMpOgotICAgICIiIkNyZWF0ZXMg
TW9ja1JlcXVlc3QgdXNpbmcgZGF0YSBnaXZlbiBhcyBmcmFtZXMuCi0KLSAgICBmcmFtZXMgd2ls
bCBiZSByZXR1cm5lZCBvbiBjYWxsaW5nIHJlcXVlc3QuY29ubmVjdGlvbi5yZWFkKCkgd2hlcmUg
cmVxdWVzdAotICAgIGlzIE1vY2tSZXF1ZXN0IHJldHVybmVkIGJ5IHRoaXMgZnVuY3Rpb24uCi0g
ICAgIiIiCi0KLSAgICByZWFkX2RhdGEgPSBbXQotICAgIGZvciAoaGVhZGVyLCBib2R5KSBpbiBm
cmFtZXM6Ci0gICAgICAgIHJlYWRfZGF0YS5hcHBlbmQoaGVhZGVyICsgX21hc2tfaHliaShib2R5
KSkKLQotICAgIHJldHVybiBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKHJlYWRfZGF0YSkK
LQotCi1kZWYgX2NyZWF0ZV9ibG9ja2luZ19yZXF1ZXN0KCk6Ci0gICAgIiIiQ3JlYXRlcyBNb2Nr
UmVxdWVzdC4KLQotICAgIERhdGEgd3JpdHRlbiB0byBhIE1vY2tSZXF1ZXN0IGNhbiBiZSByZWFk
IG91dCBieSBjYWxsaW5nCi0gICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpLgot
ICAgICIiIgotCi0gICAgcmVxID0gbW9jay5Nb2NrUmVxdWVzdChjb25uZWN0aW9uPW1vY2suTW9j
a0Jsb2NraW5nQ29ubigpKQotICAgIHJlcS53c192ZXJzaW9uID0gY29tbW9uLlZFUlNJT05fSFlC
SV9MQVRFU1QKLSAgICBzdHJlYW1fb3B0aW9ucyA9IFN0cmVhbU9wdGlvbnMoKQotICAgIHJlcS53
c19zdHJlYW0gPSBTdHJlYW0ocmVxLCBzdHJlYW1fb3B0aW9ucykKLSAgICByZXR1cm4gcmVxCi0K
LQotZGVmIF9jcmVhdGVfcmVxdWVzdF9oaXhpZTc1KHJlYWRfZGF0YT0nJyk6Ci0gICAgcmVxID0g
bW9jay5Nb2NrUmVxdWVzdChjb25uZWN0aW9uPW1vY2suTW9ja0Nvbm4ocmVhZF9kYXRhKSkKLSAg
ICByZXEud3Nfc3RyZWFtID0gU3RyZWFtSGl4aWU3NShyZXEpCi0gICAgcmV0dXJuIHJlcQotCi0K
LWRlZiBfY3JlYXRlX2Jsb2NraW5nX3JlcXVlc3RfaGl4aWU3NSgpOgotICAgIHJlcSA9IG1vY2su
TW9ja1JlcXVlc3QoY29ubmVjdGlvbj1tb2NrLk1vY2tCbG9ja2luZ0Nvbm4oKSkKLSAgICByZXEu
d3Nfc3RyZWFtID0gU3RyZWFtSGl4aWU3NShyZXEpCi0gICAgcmV0dXJuIHJlcQotCi0KLWNsYXNz
IEJhc2ljTWVzc2FnZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIkJhc2ljIHRlc3Rz
IGZvciBTdHJlYW0uIiIiCi0KLSAgICBkZWYgdGVzdF9zZW5kX21lc3NhZ2Uoc2VsZik6Ci0gICAg
ICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVz
c2FnZShyZXF1ZXN0LCAnSGVsbG8nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDgxXHgw
NUhlbGxvJywgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgICAgIHBh
eWxvYWQgPSAnYScgKiAxMjUKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgpCi0g
ICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsIHBheWxvYWQpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJ1x4ODFceDdkJyArIHBheWxvYWQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3Rf
c2VuZF9tZWRpdW1fbWVzc2FnZShzZWxmKToKLSAgICAgICAgcGF5bG9hZCA9ICdhJyAqIDEyNgot
ICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCkKLSAgICAgICAgbXNndXRpbC5zZW5k
X21lc3NhZ2UocmVxdWVzdCwgcGF5bG9hZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHg4
MVx4N2VceDAwXHg3ZScgKyBwYXlsb2FkLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVl
c3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAgICAgICBwYXlsb2FkID0gJ2EnICog
KCgxIDw8IDE2KSAtIDEpCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKQotICAg
ICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCBwYXlsb2FkKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCdceDgxXHg3ZVx4ZmZceGZmJyArIHBheWxvYWQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVm
IHRlc3Rfc2VuZF9sYXJnZV9tZXNzYWdlKHNlbGYpOgotICAgICAgICBwYXlsb2FkID0gJ2EnICog
KDEgPDwgMTYpCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKQotICAgICAgICBt
c2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCBwYXlsb2FkKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdceDgxXHg3Zlx4MDBceDAwXHgwMFx4MDBceDAwXHgwMVx4MDBceDAwJyArIHBheWxv
YWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5f
ZGF0YSgpKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlX3VuaWNvZGUoc2VsZik6Ci0gICAg
ICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVz
c2FnZShyZXF1ZXN0LCB1J1x1NjVlNScpCi0gICAgICAgICMgVSs2NWU1IGlzIGVuY29kZWQgYXMg
ZTYsOTcsYTUgaW4gVVRGLTgKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHg4MVx4MDNceGU2
XHg5N1x4YTUnLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53
cml0dGVuX2RhdGEoKSkKLQotICAgIGRlZiB0ZXN0X3NlbmRfbWVzc2FnZV9mcmFnbWVudHMoc2Vs
Zik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKQotICAgICAgICBtc2d1dGls
LnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnSGVsbG8nLCBGYWxzZSkKLSAgICAgICAgbXNndXRpbC5z
ZW5kX21lc3NhZ2UocmVxdWVzdCwgJyAnLCBGYWxzZSkKLSAgICAgICAgbXNndXRpbC5zZW5kX21l
c3NhZ2UocmVxdWVzdCwgJ1dvcmxkJywgRmFsc2UpCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNz
YWdlKHJlcXVlc3QsICchJywgVHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHgwMVx4
MDVIZWxsb1x4MDBceDAxIFx4MDBceDA1V29ybGRceDgwXHgwMSEnLAotICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAgIGRlZiB0
ZXN0X3NlbmRfZnJhZ21lbnRzX2ltbWVkaWF0ZV96ZXJvX3Rlcm1pbmF0aW9uKHNlbGYpOgotICAg
ICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCkKLSAgICAgICAgbXNndXRpbC5zZW5kX21l
c3NhZ2UocmVxdWVzdCwgJ0hlbGxvIFdvcmxkIScsIEZhbHNlKQotICAgICAgICBtc2d1dGlsLnNl
bmRfbWVzc2FnZShyZXF1ZXN0LCAnJywgVHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
XHgwMVx4MGNIZWxsbyBXb3JsZCFceDgwXHgwMCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
cmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3RfcmVjZWl2
ZV9tZXNzYWdlKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KAotICAg
ICAgICAgICAgKCdceDgxXHg4NScsICdIZWxsbycpLCAoJ1x4ODFceDg2JywgJ1dvcmxkIScpKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdIZWxsbycsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdl
KHJlcXVlc3QpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdXb3JsZCEnLCBtc2d1dGlsLnJl
Y2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLQotICAgICAgICBwYXlsb2FkID0gJ2EnICogMTI1Ci0g
ICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKCdceDgxXHhmZCcsIHBheWxvYWQpKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBheWxvYWQsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdl
KHJlcXVlc3QpKQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9tZWRpdW1fbWVzc2FnZShzZWxmKToK
LSAgICAgICAgcGF5bG9hZCA9ICdhJyAqIDEyNgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9y
ZXF1ZXN0KCgnXHg4MVx4ZmVceDAwXHg3ZScsIHBheWxvYWQpKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHBheWxvYWQsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotCi0gICAg
ICAgIHBheWxvYWQgPSAnYScgKiAoKDEgPDwgMTYpIC0gMSkKLSAgICAgICAgcmVxdWVzdCA9IF9j
cmVhdGVfcmVxdWVzdCgoJ1x4ODFceGZlXHhmZlx4ZmYnLCBwYXlsb2FkKSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChwYXlsb2FkLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkK
LQotICAgIGRlZiB0ZXN0X3JlY2VpdmVfbGFyZ2VfbWVzc2FnZShzZWxmKToKLSAgICAgICAgcGF5
bG9hZCA9ICdhJyAqICgxIDw8IDE2KQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0
KAotICAgICAgICAgICAgKCdceDgxXHhmZlx4MDBceDAwXHgwMFx4MDBceDAwXHgwMVx4MDBceDAw
JywgcGF5bG9hZCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF5bG9hZCwgbXNndXRpbC5y
ZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX2xlbmd0aF9u
b3RfZW5jb2RlZF91c2luZ19taW5pbWFsX251bWJlcl9vZl9ieXRlcyhzZWxmKToKLSAgICAgICAg
IyBMb2cgd2FybmluZyBvbiByZWNlaXZpbmcgYmFkIHBheWxvYWQgbGVuZ3RoIGZpZWxkIHRoYXQg
ZG9lc24ndCB1c2UKLSAgICAgICAgIyBtaW5pbWFsIG51bWJlciBvZiBieXRlcyBidXQgY29udGlu
dWUgcHJvY2Vzc2luZy4KLQotICAgICAgICBwYXlsb2FkID0gJ2EnCi0gICAgICAgICMgMSBieXRl
IGNhbiBiZSByZXByZXNlbnRlZCB3aXRob3V0IGV4dGVuZGVkIHBheWxvYWQgbGVuZ3RoIGZpZWxk
LgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KAotICAgICAgICAgICAgKCdceDgx
XHhmZlx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAxJywgcGF5bG9hZCkpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwocGF5bG9hZCwgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVz
dCkpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX21lc3NhZ2VfdW5pY29kZShzZWxmKToKLSAgICAg
ICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgoJ1x4ODFceDgzJywgJ1x4ZTZceDljXHhhYycp
KQotICAgICAgICAjIFUrNjcyYyBpcyBlbmNvZGVkIGFzIGU2LDljLGFjIGluIFVURi04Ci0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwodSdcdTY3MmMnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShy
ZXF1ZXN0KSkKLQotICAgIGRlZiB0ZXN0X3JlY2VpdmVfbWVzc2FnZV9lcnJvbmVvdXNfdW5pY29k
ZShzZWxmKToKLSAgICAgICAgIyBceDgwIGFuZCBceDgxIGFyZSBpbnZhbGlkIGFzIFVURi04Lgot
ICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCgnXHg4MVx4ODInLCAnXHg4MFx4ODEn
KSkKLSAgICAgICAgIyBJbnZhbGlkIGNoYXJhY3RlcnMgc2hvdWxkIHJhaXNlIEludmFsaWRVVEY4
RXhjZXB0aW9uCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRVVEY4RXhjZXB0aW9u
LAotICAgICAgICAgICAgICAgICAgICAgICAgICBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCkKLQotICAgIGRlZiB0ZXN0X3JlY2VpdmVf
ZnJhZ21lbnRzKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KAotICAg
ICAgICAgICAgKCdceDAxXHg4NScsICdIZWxsbycpLAotICAgICAgICAgICAgKCdceDAwXHg4MScs
ICcgJyksCi0gICAgICAgICAgICAoJ1x4MDBceDg1JywgJ1dvcmxkJyksCi0gICAgICAgICAgICAo
J1x4ODBceDgxJywgJyEnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVsbG8gV29ybGQh
JywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0KLSAgICBkZWYgdGVzdF9yZWNl
aXZlX2ZyYWdtZW50c191bmljb2RlKHNlbGYpOgotICAgICAgICAjIFVURi04IGVuY29kZXMgVSs2
ZjIyIGludG8gZTZiY2EyIGFuZCBVKzViNTcgaW50byBlNWFkOTcuCi0gICAgICAgIHJlcXVlc3Qg
PSBfY3JlYXRlX3JlcXVlc3QoCi0gICAgICAgICAgICAoJ1x4MDFceDgyJywgJ1x4ZTZceGJjJyks
Ci0gICAgICAgICAgICAoJ1x4MDBceDgyJywgJ1x4YTJceGU1JyksCi0gICAgICAgICAgICAoJ1x4
ODBceDgyJywgJ1x4YWRceDk3JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodSdcdTZmMjJc
dTViNTcnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLQotICAgIGRlZiB0ZXN0
X3JlY2VpdmVfZnJhZ21lbnRzX2ltbWVkaWF0ZV96ZXJvX3Rlcm1pbmF0aW9uKHNlbGYpOgotICAg
ICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KAotICAgICAgICAgICAgKCdceDAxXHg4Yycs
ICdIZWxsbyBXb3JsZCEnKSwgKCdceDgwXHg4MCcsICcnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgnSGVsbG8gV29ybGQhJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0K
LSAgICBkZWYgdGVzdF9yZWNlaXZlX2ZyYWdtZW50c19kdXBsaWNhdGVfc3RhcnQoc2VsZik6Ci0g
ICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoCi0gICAgICAgICAgICAoJ1x4MDFceDg1
JywgJ0hlbGxvJyksICgnXHgwMVx4ODUnLCAnV29ybGQnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRS
YWlzZXMobXNndXRpbC5JbnZhbGlkRnJhbWVFeGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXF1ZXN0KQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9mcmFnbWVudHNfaW50ZXJtZWRpYXRl
X2J1dF9ub3Rfc3RhcnRlZChzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVz
dCgoJ1x4MDBceDg1JywgJ0hlbGxvJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG1zZ3V0
aWwuSW52YWxpZEZyYW1lRXhjZXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtc2d1
dGlsLnJlY2VpdmVfbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCkK
LQotICAgIGRlZiB0ZXN0X3JlY2VpdmVfZnJhZ21lbnRzX2VuZF9idXRfbm90X3N0YXJ0ZWQoc2Vs
Zik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKCdceDgwXHg4NScsICdIZWxs
bycpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhtc2d1dGlsLkludmFsaWRGcmFtZUV4Y2Vw
dGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2Us
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QpCi0KLSAgICBkZWYgdGVzdF9yZWNl
aXZlX21lc3NhZ2VfZGlzY2FyZChzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVx
dWVzdCgKLSAgICAgICAgICAgICgnXHg4Zlx4ODYnLCAnSUdOT1JFJyksICgnXHg4MVx4ODUnLCAn
SGVsbG8nKSwKLSAgICAgICAgICAgICgnXHg4Zlx4ODknLCAnRElTUkVHQVJEJyksICgnXHg4MVx4
ODYnLCAnV29ybGQhJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG1zZ3V0aWwuVW5zdXBw
b3J0ZWRGcmFtZUV4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbXNndXRpbC5y
ZWNlaXZlX21lc3NhZ2UsIHJlcXVlc3QpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxv
JywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0
UmFpc2VzKG1zZ3V0aWwuVW5zdXBwb3J0ZWRGcmFtZUV4Y2VwdGlvbiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UsIHJlcXVlc3QpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJ1dvcmxkIScsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3Qp
KQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9jbG9zZShzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9
IF9jcmVhdGVfcmVxdWVzdCgKLSAgICAgICAgICAgICgnXHg4OFx4OGEnLCBzdHJ1Y3QucGFjaygn
IUgnLCAxMDAwKSArICdHb29kIGJ5ZScpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUs
IG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKDEwMDAsIHJlcXVlc3Qud3NfY2xvc2VfY29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgnR29vZCBieWUnLCByZXF1ZXN0LndzX2Nsb3NlX3JlYXNvbikKLQotICAgIGRlZiB0ZXN0X3Nl
bmRfbG9uZ2VzdF9jbG9zZShzZWxmKToKLSAgICAgICAgcmVhc29uID0gJ2EnICogMTIzCi0gICAg
ICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoCi0gICAgICAgICAgICAoJ1x4ODhceGZkJywK
LSAgICAgICAgICAgICBzdHJ1Y3QucGFjaygnIUgnLCBjb21tb24uU1RBVFVTX05PUk1BTF9DTE9T
VVJFKSArIHJlYXNvbikpCi0gICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rp
b24oY29tbW9uLlNUQVRVU19OT1JNQUxfQ0xPU1VSRSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZWFzb24pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVx
dWVzdC53c19jbG9zZV9jb2RlLCBjb21tb24uU1RBVFVTX05PUk1BTF9DTE9TVVJFKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHJlcXVlc3Qud3NfY2xvc2VfcmVhc29uLCByZWFzb24pCi0KLSAg
ICBkZWYgdGVzdF9zZW5kX2Nsb3NlX3Rvb19sb25nKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0g
X2NyZWF0ZV9yZXF1ZXN0KCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMobXNndXRpbC5CYWRP
cGVyYXRpb25FeGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmVhbS5jbG9z
ZV9jb25uZWN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LndzX3N0cmVh
bSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uLlNUQVRVU19OT1JNQUxfQ0xPU1VS
RSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ2EnICogMTI0KQotCi0gICAgZGVmIHRlc3Rf
c2VuZF9jbG9zZV9pbmNvbnNpc3RlbnRfY29kZV9hbmRfcmVhc29uKHNlbGYpOgotICAgICAgICBy
ZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCkKLSAgICAgICAgIyByZWFzb24gcGFyYW1ldGVyIG11
c3Qgbm90IGJlIHNwZWNpZmllZCB3aGVuIGNvZGUgaXMgTm9uZS4KLSAgICAgICAgc2VsZi5hc3Nl
cnRSYWlzZXMobXNndXRpbC5CYWRPcGVyYXRpb25FeGNlcHRpb24sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIFN0cmVhbS5jbG9zZV9jb25uZWN0aW9uLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXF1ZXN0LndzX3N0cmVhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgJ2EnKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9waW5n
KHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCkKLSAgICAgICAgbXNn
dXRpbC5zZW5kX3BpbmcocmVxdWVzdCwgJ0hlbGxvIFdvcmxkIScpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJ1x4ODlceDBjSGVsbG8gV29ybGQhJywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICBkZWYgdGVzdF9zZW5k
X2xvbmdlc3RfcGluZyhzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgp
Ci0gICAgICAgIG1zZ3V0aWwuc2VuZF9waW5nKHJlcXVlc3QsICdhJyAqIDEyNSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgnXHg4OVx4N2QnICsgJ2EnICogMTI1LAotICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAgIGRlZiB0
ZXN0X3NlbmRfcGluZ190b29fbG9uZyhzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVf
cmVxdWVzdCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG1zZ3V0aWwuQmFkT3BlcmF0aW9u
RXhjZXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtc2d1dGlsLnNlbmRfcGluZywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ2EnICogMTI2KQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9waW5nKHNlbGYpOgotICAg
ICAgICAiIiJUZXN0cyByZWNlaXZpbmcgYSBwaW5nIGNvbnRyb2wgZnJhbWUuIiIiCi0KLSAgICAg
ICAgZGVmIGhhbmRsZXIocmVxdWVzdCwgbWVzc2FnZSk6Ci0gICAgICAgICAgICByZXF1ZXN0LmNh
bGxlZCA9IFRydWUKLQotICAgICAgICAjIFN0cmVhbSBhdXRvbWF0aWNhbGx5IHJlc3BvbmQgdG8g
cGluZyB3aXRoIHBvbmcgd2l0aG91dCBhbnkgYWN0aW9uCi0gICAgICAgICMgYnkgYXBwbGljYXRp
b24gbGF5ZXIuCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoCi0gICAgICAgICAg
ICAoJ1x4ODlceDg1JywgJ0hlbGxvJyksICgnXHg4MVx4ODUnLCAnV29ybGQnKSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgnV29ybGQnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHg4YVx4MDVIZWxsbycsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAg
ICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoCi0gICAgICAgICAgICAoJ1x4ODlceDg1Jywg
J0hlbGxvJyksICgnXHg4MVx4ODUnLCAnV29ybGQnKSkKLSAgICAgICAgcmVxdWVzdC5vbl9waW5n
X2hhbmRsZXIgPSBoYW5kbGVyCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1dvcmxkJywgbXNn
dXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShy
ZXF1ZXN0LmNhbGxlZCkKLQotICAgIGRlZiB0ZXN0X3JlY2VpdmVfbG9uZ2VzdF9waW5nKHNlbGYp
OgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KAotICAgICAgICAgICAgKCdceDg5
XHhmZCcsICdhJyAqIDEyNSksICgnXHg4MVx4ODUnLCAnV29ybGQnKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnV29ybGQnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHg4YVx4N2QnICsgJ2EnICogMTI1LAotICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAg
IGRlZiB0ZXN0X3JlY2VpdmVfcGluZ190b29fbG9uZyhzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9
IF9jcmVhdGVfcmVxdWVzdCgoJ1x4ODlceGZlXHgwMFx4N2UnLCAnYScgKiAxMjYpKQotICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhtc2d1dGlsLkludmFsaWRGcmFtZUV4Y2VwdGlvbiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlcXVlc3QpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX3Bvbmcoc2Vs
Zik6Ci0gICAgICAgICIiIlRlc3RzIHJlY2VpdmluZyBhIHBvbmcgY29udHJvbCBmcmFtZS4iIiIK
LQotICAgICAgICBkZWYgaGFuZGxlcihyZXF1ZXN0LCBtZXNzYWdlKToKLSAgICAgICAgICAgIHJl
cXVlc3QuY2FsbGVkID0gVHJ1ZQotCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3Qo
Ci0gICAgICAgICAgICAoJ1x4OGFceDg1JywgJ0hlbGxvJyksICgnXHg4MVx4ODUnLCAnV29ybGQn
KSkKLSAgICAgICAgcmVxdWVzdC5vbl9wb25nX2hhbmRsZXIgPSBoYW5kbGVyCi0gICAgICAgIG1z
Z3V0aWwuc2VuZF9waW5nKHJlcXVlc3QsICdIZWxsbycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJ1x4ODlceDA1SGVsbG8nLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29u
bmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLSAgICAgICAgIyBWYWxpZCBwb25nIGlzIHJlY2VpdmVk
LCBidXQgcmVjZWl2ZV9tZXNzYWdlIHdvbid0IHJldHVybiBmb3IgaXQuCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJ1dvcmxkJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0g
ICAgICAgICMgQ2hlY2sgdGhhdCBub3RoaW5nIHdhcyB3cml0dGVuIGFmdGVyIHJlY2VpdmVfbWVz
c2FnZSBjYWxsLgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDg5XHgwNUhlbGxvJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkp
Ci0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlcXVlc3QuY2FsbGVkKQotCi0gICAgZGVmIHRl
c3RfcmVjZWl2ZV91bnNvbGljaXRlZF9wb25nKHNlbGYpOgotICAgICAgICAjIFVuc29saWNpdGVk
IHBvbmcgaXMgYWxsb3dlZCBmcm9tIEh5QmkgMDcuCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRl
X3JlcXVlc3QoCi0gICAgICAgICAgICAoJ1x4OGFceDg1JywgJ0hlbGxvJyksICgnXHg4MVx4ODUn
LCAnV29ybGQnKSkKLSAgICAgICAgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkKLQot
ICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KAotICAgICAgICAgICAgKCdceDhhXHg4
NScsICdIZWxsbycpLCAoJ1x4ODFceDg1JywgJ1dvcmxkJykpCi0gICAgICAgIG1zZ3V0aWwuc2Vu
ZF9waW5nKHJlcXVlc3QsICdKdW1ibycpCi0gICAgICAgICMgQm9keSBtaXNtYXRjaC4KLSAgICAg
ICAgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkKLQotICAgIGRlZiB0ZXN0X3Bpbmdf
Y2Fubm90X2JlX2ZyYWdtZW50ZWQoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3Jl
cXVlc3QoKCdceDA5XHg4NScsICdIZWxsbycpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyht
c2d1dGlsLkludmFsaWRGcmFtZUV4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
bXNndXRpbC5yZWNlaXZlX21lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVl
c3QpCi0KLSAgICBkZWYgdGVzdF9waW5nX3dpdGhfdG9vX2xvbmdfcGF5bG9hZChzZWxmKToKLSAg
ICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgoJ1x4ODlceGZlXHgwMVx4MDAnLCAnYScg
KiAyNTYpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhtc2d1dGlsLkludmFsaWRGcmFtZUV4
Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbXNndXRpbC5yZWNlaXZlX21lc3Nh
Z2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QpCi0KLQotY2xhc3MgRGVmbGF0
ZUZyYW1lVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiVGVzdHMgZm9yIGNoZWNraW5n
IGRlZmxhdGUtZnJhbWUgZXh0ZW5zaW9uLiIiIgotCi0gICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdl
KHNlbGYpOgotICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAgICAg
ICB6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwgLXpsaWIuTUFYX1dC
SVRTKQotCi0gICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoY29t
bW9uLkRFRkxBVEVfRlJBTUVfRVhURU5TSU9OKQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9y
ZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKLSAgICAgICAgICAgICcnLCBkZWZsYXRlX2ZyYW1lX3JlcXVl
c3Q9ZXh0ZW5zaW9uKQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnSGVs
bG8nKQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnV29ybGQnKQotCi0g
ICAgICAgIGV4cGVjdGVkID0gJycKLQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJl
c3MuY29tcHJlc3MoJ0hlbGxvJykKLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyArPSBjb21wcmVz
cy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNv
bXByZXNzZWRfaGVsbG9bOi00XQotICAgICAgICBleHBlY3RlZCArPSAnXHhjMSVjJyAlIGxlbihj
b21wcmVzc2VkX2hlbGxvKQotICAgICAgICBleHBlY3RlZCArPSBjb21wcmVzc2VkX2hlbGxvCi0K
LSAgICAgICAgY29tcHJlc3NlZF93b3JsZCA9IGNvbXByZXNzLmNvbXByZXNzKCdXb3JsZCcpCi0g
ICAgICAgIGNvbXByZXNzZWRfd29ybGQgKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxV
U0gpCi0gICAgICAgIGNvbXByZXNzZWRfd29ybGQgPSBjb21wcmVzc2VkX3dvcmxkWzotNF0KLSAg
ICAgICAgZXhwZWN0ZWQgKz0gJ1x4YzElYycgJSBsZW4oY29tcHJlc3NlZF93b3JsZCkKLSAgICAg
ICAgZXhwZWN0ZWQgKz0gY29tcHJlc3NlZF93b3JsZAotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoZXhwZWN0ZWQsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAgIGRl
ZiB0ZXN0X3NlbmRfbWVzc2FnZV9iZmluYWwoc2VsZik6Ci0gICAgICAgIGV4dGVuc2lvbiA9IGNv
bW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoY29tbW9uLkRFRkxBVEVfRlJBTUVfRVhURU5TSU9OKQot
ICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKLSAgICAgICAg
ICAgICcnLCBkZWZsYXRlX2ZyYW1lX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFscygxLCBsZW4ocmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29ycykpCi0gICAg
ICAgIGRlZmxhdGVfZnJhbWVfcHJvY2Vzc29yID0gcmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vz
c29yc1swXQotICAgICAgICBkZWZsYXRlX2ZyYW1lX3Byb2Nlc3Nvci5zZXRfYmZpbmFsKFRydWUp
Ci0gICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxsbycpCi0gICAgICAg
IG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdXb3JsZCcpCi0KLSAgICAgICAgZXhwZWN0
ZWQgPSAnJwotCi0gICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVzc29iaigKLSAgICAgICAg
ICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELCAtemxpYi5NQVhf
V0JJVFMpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzcy5jb21wcmVzcygnSGVs
bG8nKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9G
SU5JU0gpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzc2VkX2hlbGxvICsgY2hy
KDApCi0gICAgICAgIGV4cGVjdGVkICs9ICdceGMxJWMnICUgbGVuKGNvbXByZXNzZWRfaGVsbG8p
Ci0gICAgICAgIGV4cGVjdGVkICs9IGNvbXByZXNzZWRfaGVsbG8KLQotICAgICAgICBjb21wcmVz
cyA9IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAgICAgICB6bGliLlpfREVGQVVMVF9DT01QUkVT
U0lPTiwgemxpYi5ERUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRTKQotICAgICAgICBjb21wcmVzc2Vk
X3dvcmxkID0gY29tcHJlc3MuY29tcHJlc3MoJ1dvcmxkJykKLSAgICAgICAgY29tcHJlc3NlZF93
b3JsZCArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfRklOSVNIKQotICAgICAgICBjb21wcmVzc2Vk
X3dvcmxkID0gY29tcHJlc3NlZF93b3JsZCArIGNocigwKQotICAgICAgICBleHBlY3RlZCArPSAn
XHhjMSVjJyAlIGxlbihjb21wcmVzc2VkX3dvcmxkKQotICAgICAgICBleHBlY3RlZCArPSBjb21w
cmVzc2VkX3dvcmxkCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgcmVxdWVz
dC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdl
X2NvbXBfYml0KHNlbGYpOgotICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCi0g
ICAgICAgICAgICB6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwgLXps
aWIuTUFYX1dCSVRTKQotCi0gICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJh
bWV0ZXIoY29tbW9uLkRFRkxBVEVfRlJBTUVfRVhURU5TSU9OKQotICAgICAgICByZXF1ZXN0ID0g
X2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKLSAgICAgICAgICAgICcnLCBkZWZsYXRlX2Zy
YW1lX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygxLCBsZW4o
cmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29ycykpCi0gICAgICAgIGRlZmxhdGVfZnJhbWVf
cHJvY2Vzc29yID0gcmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29yc1swXQotICAgICAgICBt
c2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnSGVsbG8nKQotICAgICAgICBkZWZsYXRlX2Zy
YW1lX3Byb2Nlc3Nvci5kaXNhYmxlX291dGdvaW5nX2NvbXByZXNzaW9uKCkKLSAgICAgICAgbXNn
dXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0hlbGxvJykKLSAgICAgICAgZGVmbGF0ZV9mcmFt
ZV9wcm9jZXNzb3IuZW5hYmxlX291dGdvaW5nX2NvbXByZXNzaW9uKCkKLSAgICAgICAgbXNndXRp
bC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0hlbGxvJykKLQotICAgICAgICBleHBlY3RlZCA9ICcn
Ci0KLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzLmNvbXByZXNzKCdIZWxsbycp
Ci0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNf
RkxVU0gpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzc2VkX2hlbGxvWzotNF0K
LSAgICAgICAgZXhwZWN0ZWQgKz0gJ1x4YzElYycgJSBsZW4oY29tcHJlc3NlZF9oZWxsbykKLSAg
ICAgICAgZXhwZWN0ZWQgKz0gY29tcHJlc3NlZF9oZWxsbwotCi0gICAgICAgIGV4cGVjdGVkICs9
ICdceDgxXHgwNUhlbGxvJwotCi0gICAgICAgIGNvbXByZXNzZWRfMm5kX2hlbGxvID0gY29tcHJl
c3MuY29tcHJlc3MoJ0hlbGxvJykKLSAgICAgICAgY29tcHJlc3NlZF8ybmRfaGVsbG8gKz0gY29t
cHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIGNvbXByZXNzZWRfMm5kX2hl
bGxvID0gY29tcHJlc3NlZF8ybmRfaGVsbG9bOi00XQotICAgICAgICBleHBlY3RlZCArPSAnXHhj
MSVjJyAlIGxlbihjb21wcmVzc2VkXzJuZF9oZWxsbykKLSAgICAgICAgZXhwZWN0ZWQgKz0gY29t
cHJlc3NlZF8ybmRfaGVsbG8KLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkLCBy
ZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICBkZWYgdGVzdF9zZW5kX21l
c3NhZ2Vfbm9fY29udGV4dF90YWtlb3Zlcl9wYXJhbWV0ZXIoc2VsZik6Ci0gICAgICAgIGNvbXBy
ZXNzID0gemxpYi5jb21wcmVzc29iaigKLSAgICAgICAgICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBS
RVNTSU9OLCB6bGliLkRFRkxBVEVELCAtemxpYi5NQVhfV0JJVFMpCi0KLSAgICAgICAgZXh0ZW5z
aW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcihjb21tb24uREVGTEFURV9GUkFNRV9FWFRF
TlNJT04pCi0gICAgICAgIGV4dGVuc2lvbi5hZGRfcGFyYW1ldGVyKCdub19jb250ZXh0X3Rha2Vv
dmVyJywgTm9uZSkKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2Rh
dGEoCi0gICAgICAgICAgICAnJywgZGVmbGF0ZV9mcmFtZV9yZXF1ZXN0PWV4dGVuc2lvbikKLSAg
ICAgICAgZm9yIGkgaW4geHJhbmdlKDMpOgotICAgICAgICAgICAgbXNndXRpbC5zZW5kX21lc3Nh
Z2UocmVxdWVzdCwgJ0hlbGxvJykKLQotICAgICAgICBjb21wcmVzc2VkX21lc3NhZ2UgPSBjb21w
cmVzcy5jb21wcmVzcygnSGVsbG8nKQotICAgICAgICBjb21wcmVzc2VkX21lc3NhZ2UgKz0gY29t
cHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIGNvbXByZXNzZWRfbWVzc2Fn
ZSA9IGNvbXByZXNzZWRfbWVzc2FnZVs6LTRdCi0gICAgICAgIGV4cGVjdGVkID0gJ1x4YzElYycg
JSBsZW4oY29tcHJlc3NlZF9tZXNzYWdlKQotICAgICAgICBleHBlY3RlZCArPSBjb21wcmVzc2Vk
X21lc3NhZ2UKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgZXhwZWN0
ZWQgKyBleHBlY3RlZCArIGV4cGVjdGVkLCByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRh
KCkpCi0KLSAgICBkZWYgdGVzdF9iYWRfcmVxdWVzdF9wYXJhbWV0ZXJzKHNlbGYpOgotICAgICAg
ICAiIiJUZXN0cyB0aGF0IGlmIHRoZXJlJ3MgYW55dGhpbmcgd3Jvbmcgd2l0aCBkZWZsYXRlLWZy
YW1lIGV4dGVuc2lvbgotICAgICAgICByZXF1ZXN0LCBkZWZsYXRlLWZyYW1lIGlzIHJlamVjdGVk
LgotICAgICAgICAiIiIKLQotICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFy
YW1ldGVyKGNvbW1vbi5ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTikKLSAgICAgICAgIyBtYXhfd2lu
ZG93X2JpdHMgbGVzcyB0aGFuIDggaXMgaWxsZWdhbC4KLSAgICAgICAgZXh0ZW5zaW9uLmFkZF9w
YXJhbWV0ZXIoJ21heF93aW5kb3dfYml0cycsICc3JykKLSAgICAgICAgcHJvY2Vzc29yID0gRGVm
bGF0ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yKGV4dGVuc2lvbikKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChOb25lLCBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpKQotCi0gICAg
ICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoY29tbW9uLkRFRkxBVEVf
RlJBTUVfRVhURU5TSU9OKQotICAgICAgICAjIG1heF93aW5kb3dfYml0cyBncmVhdGVyIHRoYW4g
MTUgaXMgaWxsZWdhbC4KLSAgICAgICAgZXh0ZW5zaW9uLmFkZF9wYXJhbWV0ZXIoJ21heF93aW5k
b3dfYml0cycsICcxNicpCi0gICAgICAgIHByb2Nlc3NvciA9IERlZmxhdGVGcmFtZUV4dGVuc2lv
blByb2Nlc3NvcihleHRlbnNpb24pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgcHJv
Y2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoKSkKLQotICAgICAgICBleHRlbnNpb24gPSBj
b21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKGNvbW1vbi5ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTikK
LSAgICAgICAgIyBOb24gaW50ZWdlciBtYXhfd2luZG93X2JpdHMgaXMgaWxsZWdhbC4KLSAgICAg
ICAgZXh0ZW5zaW9uLmFkZF9wYXJhbWV0ZXIoJ21heF93aW5kb3dfYml0cycsICdmb29iYXInKQot
ICAgICAgICBwcm9jZXNzb3IgPSBEZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IoZXh0ZW5z
aW9uKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIHByb2Nlc3Nvci5nZXRfZXh0ZW5z
aW9uX3Jlc3BvbnNlKCkpCi0KLSAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBh
cmFtZXRlcihjb21tb24uREVGTEFURV9GUkFNRV9FWFRFTlNJT04pCi0gICAgICAgICMgbm9fY29u
dGV4dF90YWtlb3ZlciBtdXN0IG5vdCBoYXZlIGFueSB2YWx1ZS4KLSAgICAgICAgZXh0ZW5zaW9u
LmFkZF9wYXJhbWV0ZXIoJ25vX2NvbnRleHRfdGFrZW92ZXInLCAnZm9vYmFyJykKLSAgICAgICAg
cHJvY2Vzc29yID0gRGVmbGF0ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yKGV4dGVuc2lvbikKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNw
b25zZSgpKQotCi0gICAgZGVmIHRlc3RfcmVzcG9uc2VfcGFyYW1ldGVycyhzZWxmKToKLSAgICAg
ICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcihjb21tb24uREVGTEFURV9G
UkFNRV9FWFRFTlNJT04pCi0gICAgICAgIHByb2Nlc3NvciA9IERlZmxhdGVGcmFtZUV4dGVuc2lv
blByb2Nlc3NvcihleHRlbnNpb24pCi0gICAgICAgIHByb2Nlc3Nvci5zZXRfcmVzcG9uc2Vfd2lu
ZG93X2JpdHMoOCkKLSAgICAgICAgcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9y
ZXNwb25zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXNwb25zZS5oYXNfcGFyYW1ldGVy
KCdtYXhfd2luZG93X2JpdHMnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnOCcsIHJlc3Bv
bnNlLmdldF9wYXJhbWV0ZXJfdmFsdWUoJ21heF93aW5kb3dfYml0cycpKQotCi0gICAgICAgIGV4
dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoY29tbW9uLkRFRkxBVEVfRlJBTUVf
RVhURU5TSU9OKQotICAgICAgICBwcm9jZXNzb3IgPSBEZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9j
ZXNzb3IoZXh0ZW5zaW9uKQotICAgICAgICBwcm9jZXNzb3Iuc2V0X3Jlc3BvbnNlX25vX2NvbnRl
eHRfdGFrZW92ZXIoVHJ1ZSkKLSAgICAgICAgcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVu
c2lvbl9yZXNwb25zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXNwb25zZS5oYXNfcGFy
YW1ldGVyKCdub19jb250ZXh0X3Rha2VvdmVyJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgK
LSAgICAgICAgICAgIHJlc3BvbnNlLmdldF9wYXJhbWV0ZXJfdmFsdWUoJ25vX2NvbnRleHRfdGFr
ZW92ZXInKSBpcyBOb25lKQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9tZXNzYWdlKHNlbGYpOgot
ICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAgICAgICB6bGliLlpf
REVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRTKQotCi0g
ICAgICAgIGRhdGEgPSAnJwotCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzcy5j
b21wcmVzcygnSGVsbG8nKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvICs9IGNvbXByZXNzLmZs
dXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJl
c3NlZF9oZWxsb1s6LTRdCi0gICAgICAgIGRhdGEgKz0gJ1x4YzElYycgJSAobGVuKGNvbXByZXNz
ZWRfaGVsbG8pIHwgMHg4MCkKLSAgICAgICAgZGF0YSArPSBfbWFza19oeWJpKGNvbXByZXNzZWRf
aGVsbG8pCi0KLSAgICAgICAgY29tcHJlc3NlZF93ZWJzb2NrZXQgPSBjb21wcmVzcy5jb21wcmVz
cygnV2ViU29ja2V0JykKLSAgICAgICAgY29tcHJlc3NlZF93ZWJzb2NrZXQgKz0gY29tcHJlc3Mu
Zmx1c2goemxpYi5aX0ZJTklTSCkKLSAgICAgICAgY29tcHJlc3NlZF93ZWJzb2NrZXQgKz0gJ1x4
MDAnCi0gICAgICAgIGRhdGEgKz0gJ1x4YzElYycgJSAobGVuKGNvbXByZXNzZWRfd2Vic29ja2V0
KSB8IDB4ODApCi0gICAgICAgIGRhdGEgKz0gX21hc2tfaHliaShjb21wcmVzc2VkX3dlYnNvY2tl
dCkKLQotICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAgICAgICB6
bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRT
KQotCi0gICAgICAgIGNvbXByZXNzZWRfd29ybGQgPSBjb21wcmVzcy5jb21wcmVzcygnV29ybGQn
KQotICAgICAgICBjb21wcmVzc2VkX3dvcmxkICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5D
X0ZMVVNIKQotICAgICAgICBjb21wcmVzc2VkX3dvcmxkID0gY29tcHJlc3NlZF93b3JsZFs6LTRd
Ci0gICAgICAgIGRhdGEgKz0gJ1x4YzElYycgJSAobGVuKGNvbXByZXNzZWRfd29ybGQpIHwgMHg4
MCkKLSAgICAgICAgZGF0YSArPSBfbWFza19oeWJpKGNvbXByZXNzZWRfd29ybGQpCi0KLSAgICAg
ICAgIyBDbG9zZSBmcmFtZQotICAgICAgICBkYXRhICs9ICdceDg4XHg4YScgKyBfbWFza19oeWJp
KHN0cnVjdC5wYWNrKCchSCcsIDEwMDApICsgJ0dvb2QgYnllJykKLQotICAgICAgICBleHRlbnNp
b24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKGNvbW1vbi5ERUZMQVRFX0ZSQU1FX0VYVEVO
U0lPTikKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEoCi0g
ICAgICAgICAgICBkYXRhLCBkZWZsYXRlX2ZyYW1lX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdIZWxsbycsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVl
c3QpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdXZWJTb2NrZXQnLCBtc2d1dGlsLnJlY2Vp
dmVfbWVzc2FnZShyZXF1ZXN0KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnV29ybGQnLCBt
c2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKE5vbmUsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotCi0gICAgZGVmIHRl
c3RfcmVjZWl2ZV9tZXNzYWdlX2NsaWVudF91c2luZ19zbWFsbGVyX3dpbmRvdyhzZWxmKToKLSAg
ICAgICAgIiIiVGVzdCB0aGF0IGZyYW1lcyBjb21pbmcgZnJvbSBhIGNsaWVudCB3aGljaCBpcyB1
c2luZyBzbWFsbGVyIHdpbmRvdwotICAgICAgICBzaXplIHRoYXQgdGhlIHNlcnZlciBhcmUgY29y
cmVjdGx5IHJlY2VpdmVkLgotICAgICAgICAiIiIKLQotICAgICAgICAjIFVzaW5nIHRoZSBzbWFs
bGVzdCB3aW5kb3cgYml0cyBvZiA4IGZvciBnZW5lcmF0aW5nIGlucHV0IGZyYW1lcy4KLSAgICAg
ICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKAotICAgICAgICAgICAgemxpYi5aX0RFRkFV
TFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsIC04KQotCi0gICAgICAgIGRhdGEgPSAnJwot
Ci0gICAgICAgICMgVXNlIGEgZnJhbWUgd2hvc2UgY29udGVudCBpcyBiaWdnZXIgdGhhbiB0aGUg
Y2xpZW50cycgREVGTEFURSB3aW5kb3cKLSAgICAgICAgIyBzaXplIGJlZm9yZSBjb21wcmVzc2lv
bi4gVGhlIGNvbnRlbnQgbWFpbmx5IGNvbnNpc3RzIG9mICdhJyBidXQKLSAgICAgICAgIyByZXBl
dGl0aW9uIG9mICdiJyBpcyBwdXQgYXQgdGhlIGhlYWQgYW5kIHRhaWwgc28gdGhhdCBpZiB0aGUg
d2luZG93Ci0gICAgICAgICMgc2l6ZSBpcyBiaWcsIHRoZSBoZWFkIGlzIGJhY2stcmVmZXJlbmNl
ZCBidXQgaWYgc21hbGwsIG5vdC4KLSAgICAgICAgcGF5bG9hZCA9ICdiJyAqIDY0ICsgJ2EnICog
MTAyNCArICdiJyAqIDY0Ci0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzcy5jb21w
cmVzcyhwYXlsb2FkKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvICs9IGNvbXByZXNzLmZsdXNo
KHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJlc3Nl
ZF9oZWxsb1s6LTRdCi0gICAgICAgIGRhdGEgKz0gJ1x4YzElYycgJSAobGVuKGNvbXByZXNzZWRf
aGVsbG8pIHwgMHg4MCkKLSAgICAgICAgZGF0YSArPSBfbWFza19oeWJpKGNvbXByZXNzZWRfaGVs
bG8pCi0KLSAgICAgICAgIyBDbG9zZSBmcmFtZQotICAgICAgICBkYXRhICs9ICdceDg4XHg4YScg
KyBfbWFza19oeWJpKHN0cnVjdC5wYWNrKCchSCcsIDEwMDApICsgJ0dvb2QgYnllJykKLQotICAg
ICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKGNvbW1vbi5ERUZMQVRF
X0ZSQU1FX0VYVEVOU0lPTikKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9t
X3Jhd2RhdGEoCi0gICAgICAgICAgICBkYXRhLCBkZWZsYXRlX2ZyYW1lX3JlcXVlc3Q9ZXh0ZW5z
aW9uKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBheWxvYWQsIG1zZ3V0aWwucmVjZWl2ZV9t
ZXNzYWdlKHJlcXVlc3QpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgbXNndXRp
bC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX21lc3Nh
Z2VfY29tcF9iaXQoc2VsZik6Ci0gICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVzc29iaigK
LSAgICAgICAgICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELCAt
emxpYi5NQVhfV0JJVFMpCi0KLSAgICAgICAgZGF0YSA9ICcnCi0KLSAgICAgICAgY29tcHJlc3Nl
ZF9oZWxsbyA9IGNvbXByZXNzLmNvbXByZXNzKCdIZWxsbycpCi0gICAgICAgIGNvbXByZXNzZWRf
aGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIGNvbXBy
ZXNzZWRfaGVsbG8gPSBjb21wcmVzc2VkX2hlbGxvWzotNF0KLSAgICAgICAgZGF0YSArPSAnXHhj
MSVjJyAlIChsZW4oY29tcHJlc3NlZF9oZWxsbykgfCAweDgwKQotICAgICAgICBkYXRhICs9IF9t
YXNrX2h5YmkoY29tcHJlc3NlZF9oZWxsbykKLQotICAgICAgICBkYXRhICs9ICdceDgxXHg4NScg
KyBfbWFza19oeWJpKCdIZWxsbycpCi0KLSAgICAgICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNz
b2JqKAotICAgICAgICAgICAgemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFU
RUQsIC16bGliLk1BWF9XQklUUykKLQotICAgICAgICBjb21wcmVzc2VkXzJuZF9oZWxsbyA9IGNv
bXByZXNzLmNvbXByZXNzKCdIZWxsbycpCi0gICAgICAgIGNvbXByZXNzZWRfMm5kX2hlbGxvICs9
IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBjb21wcmVzc2VkXzJu
ZF9oZWxsbyA9IGNvbXByZXNzZWRfMm5kX2hlbGxvWzotNF0KLSAgICAgICAgZGF0YSArPSAnXHhj
MSVjJyAlIChsZW4oY29tcHJlc3NlZF8ybmRfaGVsbG8pIHwgMHg4MCkKLSAgICAgICAgZGF0YSAr
PSBfbWFza19oeWJpKGNvbXByZXNzZWRfMm5kX2hlbGxvKQotCi0gICAgICAgIGV4dGVuc2lvbiA9
IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoY29tbW9uLkRFRkxBVEVfRlJBTUVfRVhURU5TSU9O
KQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKLSAgICAg
ICAgICAgIGRhdGEsIGRlZmxhdGVfZnJhbWVfcmVxdWVzdD1leHRlbnNpb24pCi0gICAgICAgIGZv
ciBpIGluIHhyYW5nZSgzKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvJywg
bXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZl
X21lc3NhZ2VfdmFyaW91c19idHlwZShzZWxmKToKLSAgICAgICAgY29tcHJlc3MgPSB6bGliLmNv
bXByZXNzb2JqKAotICAgICAgICAgICAgemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIu
REVGTEFURUQsIC16bGliLk1BWF9XQklUUykKLQotICAgICAgICBkYXRhID0gJycKLQotICAgICAg
ICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJlc3MuY29tcHJlc3MoJ0hlbGxvJykKLSAgICAgICAg
Y29tcHJlc3NlZF9oZWxsbyArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKLSAg
ICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzZWRfaGVsbG9bOi00XQotICAgICAgICBk
YXRhICs9ICdceGMxJWMnICUgKGxlbihjb21wcmVzc2VkX2hlbGxvKSB8IDB4ODApCi0gICAgICAg
IGRhdGEgKz0gX21hc2tfaHliaShjb21wcmVzc2VkX2hlbGxvKQotCi0gICAgICAgIGNvbXByZXNz
ZWRfd2Vic29ja2V0ID0gY29tcHJlc3MuY29tcHJlc3MoJ1dlYlNvY2tldCcpCi0gICAgICAgIGNv
bXByZXNzZWRfd2Vic29ja2V0ICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9GSU5JU0gpCi0gICAg
ICAgIGNvbXByZXNzZWRfd2Vic29ja2V0ICs9ICdceDAwJwotICAgICAgICBkYXRhICs9ICdceGMx
JWMnICUgKGxlbihjb21wcmVzc2VkX3dlYnNvY2tldCkgfCAweDgwKQotICAgICAgICBkYXRhICs9
IF9tYXNrX2h5YmkoY29tcHJlc3NlZF93ZWJzb2NrZXQpCi0KLSAgICAgICAgY29tcHJlc3MgPSB6
bGliLmNvbXByZXNzb2JqKAotICAgICAgICAgICAgemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04s
IHpsaWIuREVGTEFURUQsIC16bGliLk1BWF9XQklUUykKLQotICAgICAgICBjb21wcmVzc2VkX3dv
cmxkID0gY29tcHJlc3MuY29tcHJlc3MoJ1dvcmxkJykKLSAgICAgICAgY29tcHJlc3NlZF93b3Js
ZCArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKLSAgICAgICAgY29tcHJlc3Nl
ZF93b3JsZCA9IGNvbXByZXNzZWRfd29ybGRbOi00XQotICAgICAgICBkYXRhICs9ICdceGMxJWMn
ICUgKGxlbihjb21wcmVzc2VkX3dvcmxkKSB8IDB4ODApCi0gICAgICAgIGRhdGEgKz0gX21hc2tf
aHliaShjb21wcmVzc2VkX3dvcmxkKQotCi0gICAgICAgICMgQ2xvc2UgZnJhbWUKLSAgICAgICAg
ZGF0YSArPSAnXHg4OFx4OGEnICsgX21hc2tfaHliaShzdHJ1Y3QucGFjaygnIUgnLCAxMDAwKSAr
ICdHb29kIGJ5ZScpCi0KLSAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFt
ZXRlcihjb21tb24uREVGTEFURV9GUkFNRV9FWFRFTlNJT04pCi0gICAgICAgIHJlcXVlc3QgPSBf
Y3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAotICAgICAgICAgICAgZGF0YSwgZGVmbGF0ZV9m
cmFtZV9yZXF1ZXN0PWV4dGVuc2lvbikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVsbG8n
LCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgnV2ViU29ja2V0JywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1dvcmxkJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVx
dWVzdCkpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBtc2d1dGlsLnJlY2VpdmVf
bWVzc2FnZShyZXF1ZXN0KSkKLQotCi1jbGFzcyBQZXJNZXNzYWdlRGVmbGF0ZVRlc3QodW5pdHRl
c3QuVGVzdENhc2UpOgotICAgICIiIlRlc3RzIGZvciBwZXJtZXNzYWdlLWRlZmxhdGUgZXh0ZW5z
aW9uLiIiIgotCi0gICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlKHNlbGYpOgotICAgICAgICBleHRl
bnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAotICAgICAgICAgICAgICAgIGNvbW1v
bi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0
ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKLSAgICAgICAgICAgICAgICAnJywgcGVybWVzc2FnZV9k
ZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShy
ZXF1ZXN0LCAnSGVsbG8nKQotCi0gICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVzc29iaigK
LSAgICAgICAgICAgICAgICB6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRF
RCwgLXpsaWIuTUFYX1dCSVRTKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJlc3Mu
Y29tcHJlc3MoJ0hlbGxvJykKLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyArPSBjb21wcmVzcy5m
bHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXBy
ZXNzZWRfaGVsbG9bOi00XQotICAgICAgICBleHBlY3RlZCA9ICdceGMxJWMnICUgbGVuKGNvbXBy
ZXNzZWRfaGVsbG8pCi0gICAgICAgIGV4cGVjdGVkICs9IGNvbXByZXNzZWRfaGVsbG8KLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5f
ZGF0YSgpKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9lbXB0eV9tZXNzYWdlKHNlbGYpOgotICAgICAg
ICAiIiJUZXN0IHRoYXQgYW4gZW1wdHkgbWVzc2FnZSBpcyBjb21wcmVzc2VkIGNvcnJlY3RseS4i
IiIKLQotICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAotICAg
ICAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQotICAgICAg
ICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKLSAgICAgICAgICAgICAg
ICAnJywgcGVybWVzc2FnZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotCi0gICAgICAgIG1z
Z3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICcnKQotCi0gICAgICAgICMgUGF5bG9hZCBpbiBi
aW5hcnk6IDBiMDAwMDAwMTAgMGIwMDAwMDAwMAotICAgICAgICAjIEZyb20gTFNCLAotICAgICAg
ICAjIC0gMSBiaXQgb2YgQkZJTkFMICgwKQotICAgICAgICAjIC0gMiBiaXRzIG9mIEJUWVBFICgw
MSB0aGF0IG1lYW5zIGZpeGVkIEh1ZmZtYW4pCi0gICAgICAgICMgLSA3IGJpdHMgb2YgdGhlIGZp
cnN0IGNvZGUgKDAwMDAwMDAgdGhhdCBpcyB0aGUgY29kZSBmb3IgdGhlCi0gICAgICAgICMgICBl
bmQtb2YtYmxvY2spCi0gICAgICAgICMgLSAxIGJpdCBvZiBCRklOQUwgKDApCi0gICAgICAgICMg
LSAyIGJpdHMgb2YgQlRZUEUgKG5vIGNvbXByZXNzaW9uKQotICAgICAgICAjIC0gMyBiaXRzIG9m
IHBhZGRpbmcKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHhjMVx4MDJceDAyXHgwMCcsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgp
KQotCi0gICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlX3dpdGhfbnVsbF9jaGFyYWN0ZXIoc2VsZik6
Ci0gICAgICAgICIiIlRlc3QgdGhhdCBhIHNpbXBsZSBwYXlsb2FkIChvbmUgbnVsbCkgaXMgZnJh
bWVkIGNvcnJlY3RseS4iIiIKLQotICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9u
UGFyYW1ldGVyKAotICAgICAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhU
RU5TSU9OKQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgK
LSAgICAgICAgICAgICAgICAnJywgcGVybWVzc2FnZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9u
KQotCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdceDAwJykKLQotICAg
ICAgICAjIFBheWxvYWQgaW4gYmluYXJ5OiAwYjAxMTAwMDEwIDBiMDAwMDAwMDAgMGIwMDAwMDAw
MAotICAgICAgICAjIEZyb20gTFNCLAotICAgICAgICAjIC0gMSBiaXQgb2YgQkZJTkFMICgwKQot
ICAgICAgICAjIC0gMiBiaXRzIG9mIEJUWVBFICgwMSB0aGF0IG1lYW5zIGZpeGVkIEh1ZmZtYW4p
Ci0gICAgICAgICMgLSA4IGJpdHMgb2YgdGhlIGZpcnN0IGNvZGUgKDAwMTEwMDAwIHRoYXQgaXMg
dGhlIGNvZGUgZm9yIHRoZSBsaXRlcmFsCi0gICAgICAgICMgICBhbHBoYWJldCAweDAwKQotICAg
ICAgICAjIC0gNyBiaXRzIG9mIHRoZSBzZWNvbmQgY29kZSAoMDAwMDAwMCB0aGF0IGlzIHRoZSBj
b2RlIGZvciB0aGUKLSAgICAgICAgIyAgIGVuZC1vZi1ibG9jaykKLSAgICAgICAgIyAtIDEgYml0
IG9mIEJGSU5BTCAoMCkKLSAgICAgICAgIyAtIDIgYml0cyBvZiBCVFlQRSAobm8gY29tcHJlc3Np
b24pCi0gICAgICAgICMgLSAyIGJpdHMgb2YgcGFkZGluZwotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCdceGMxXHgwM1x4NjJceDAwXHgwMCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVx
dWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3Rfc2VuZF90d29f
bWVzc2FnZXMoc2VsZik6Ci0gICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJh
bWV0ZXIoCi0gICAgICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJ
T04pCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAotICAg
ICAgICAgICAgICAgICcnLCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVxdWVzdD1leHRlbnNpb24pCi0g
ICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxsbycpCi0gICAgICAgIG1z
Z3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdXb3JsZCcpCi0KLSAgICAgICAgY29tcHJlc3Mg
PSB6bGliLmNvbXByZXNzb2JqKAotICAgICAgICAgICAgICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBS
RVNTSU9OLCB6bGliLkRFRkxBVEVELCAtemxpYi5NQVhfV0JJVFMpCi0KLSAgICAgICAgZXhwZWN0
ZWQgPSAnJwotCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzcy5jb21wcmVzcygn
SGVsbG8nKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIu
Wl9TWU5DX0ZMVVNIKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJlc3NlZF9oZWxs
b1s6LTRdCi0gICAgICAgIGV4cGVjdGVkICs9ICdceGMxJWMnICUgbGVuKGNvbXByZXNzZWRfaGVs
bG8pCi0gICAgICAgIGV4cGVjdGVkICs9IGNvbXByZXNzZWRfaGVsbG8KLQotICAgICAgICBjb21w
cmVzc2VkX3dvcmxkID0gY29tcHJlc3MuY29tcHJlc3MoJ1dvcmxkJykKLSAgICAgICAgY29tcHJl
c3NlZF93b3JsZCArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKLSAgICAgICAg
Y29tcHJlc3NlZF93b3JsZCA9IGNvbXByZXNzZWRfd29ybGRbOi00XQotICAgICAgICBleHBlY3Rl
ZCArPSAnXHhjMSVjJyAlIGxlbihjb21wcmVzc2VkX3dvcmxkKQotICAgICAgICBleHBlY3RlZCAr
PSBjb21wcmVzc2VkX3dvcmxkCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwg
cmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9t
ZXNzYWdlX2ZyYWdtZW50ZWQoc2VsZik6Ci0gICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRl
bnNpb25QYXJhbWV0ZXIoCi0gICAgICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFU
RV9FWFRFTlNJT04pCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdk
YXRhKAotICAgICAgICAgICAgICAgICcnLCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVxdWVzdD1leHRl
bnNpb24pCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxsbycsIGVu
ZD1GYWxzZSkKLSAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0dvb2RieWUn
LCBlbmQ9RmFsc2UpCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdXb3Js
ZCcpCi0KLSAgICAgICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKAotICAgICAgICAgICAg
ICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELCAtemxpYi5NQVhf
V0JJVFMpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzcy5jb21wcmVzcygnSGVs
bG8nKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9T
WU5DX0ZMVVNIKQotICAgICAgICBleHBlY3RlZCA9ICdceDQxJWMnICUgbGVuKGNvbXByZXNzZWRf
aGVsbG8pCi0gICAgICAgIGV4cGVjdGVkICs9IGNvbXByZXNzZWRfaGVsbG8KLSAgICAgICAgY29t
cHJlc3NlZF9nb29kYnllID0gY29tcHJlc3MuY29tcHJlc3MoJ0dvb2RieWUnKQotICAgICAgICBj
b21wcmVzc2VkX2dvb2RieWUgKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0g
ICAgICAgIGV4cGVjdGVkICs9ICdceDAwJWMnICUgbGVuKGNvbXByZXNzZWRfZ29vZGJ5ZSkKLSAg
ICAgICAgZXhwZWN0ZWQgKz0gY29tcHJlc3NlZF9nb29kYnllCi0gICAgICAgIGNvbXByZXNzZWRf
d29ybGQgPSBjb21wcmVzcy5jb21wcmVzcygnV29ybGQnKQotICAgICAgICBjb21wcmVzc2VkX3dv
cmxkICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBjb21wcmVz
c2VkX3dvcmxkID0gY29tcHJlc3NlZF93b3JsZFs6LTRdCi0gICAgICAgIGV4cGVjdGVkICs9ICdc
eDgwJWMnICUgbGVuKGNvbXByZXNzZWRfd29ybGQpCi0gICAgICAgIGV4cGVjdGVkICs9IGNvbXBy
ZXNzZWRfd29ybGQKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgcmVxdWVzdC5j
b25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlX2Zy
YWdtZW50ZWRfZW1wdHlfZmlyc3RfZnJhbWUoc2VsZik6Ci0gICAgICAgIGV4dGVuc2lvbiA9IGNv
bW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCi0gICAgICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NB
R0VfREVGTEFURV9FWFRFTlNJT04pCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3Rf
ZnJvbV9yYXdkYXRhKAotICAgICAgICAgICAgICAgICcnLCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVx
dWVzdD1leHRlbnNpb24pCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICcn
LCBlbmQ9RmFsc2UpCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxs
bycpCi0KLSAgICAgICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKAotICAgICAgICAgICAg
ICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELCAtemxpYi5NQVhf
V0JJVFMpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzcy5jb21wcmVzcygnJykK
LSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19G
TFVTSCkKLSAgICAgICAgZXhwZWN0ZWQgPSAnXHg0MSVjJyAlIGxlbihjb21wcmVzc2VkX2hlbGxv
KQotICAgICAgICBleHBlY3RlZCArPSBjb21wcmVzc2VkX2hlbGxvCi0gICAgICAgIGNvbXByZXNz
ZWRfZW1wdHkgPSBjb21wcmVzcy5jb21wcmVzcygnSGVsbG8nKQotICAgICAgICBjb21wcmVzc2Vk
X2VtcHR5ICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBjb21w
cmVzc2VkX2VtcHR5ID0gY29tcHJlc3NlZF9lbXB0eVs6LTRdCi0gICAgICAgIGV4cGVjdGVkICs9
ICdceDgwJWMnICUgbGVuKGNvbXByZXNzZWRfZW1wdHkpCi0gICAgICAgIGV4cGVjdGVkICs9IGNv
bXByZXNzZWRfZW1wdHkKLSAgICAgICAgcHJpbnQgJyVyJyAlIGV4cGVjdGVkCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEo
KSkKLQotICAgIGRlZiB0ZXN0X3NlbmRfbWVzc2FnZV9mcmFnbWVudGVkX2VtcHR5X2xhc3RfZnJh
bWUoc2VsZik6Ci0gICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIo
Ci0gICAgICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04pCi0g
ICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAotICAgICAgICAg
ICAgICAgICcnLCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVxdWVzdD1leHRlbnNpb24pCi0gICAgICAg
IG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxsbycsIGVuZD1GYWxzZSkKLSAgICAg
ICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJycpCi0KLSAgICAgICAgY29tcHJlc3Mg
PSB6bGliLmNvbXByZXNzb2JqKAotICAgICAgICAgICAgICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBS
RVNTSU9OLCB6bGliLkRFRkxBVEVELCAtemxpYi5NQVhfV0JJVFMpCi0gICAgICAgIGNvbXByZXNz
ZWRfaGVsbG8gPSBjb21wcmVzcy5jb21wcmVzcygnSGVsbG8nKQotICAgICAgICBjb21wcmVzc2Vk
X2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBleHBl
Y3RlZCA9ICdceDQxJWMnICUgbGVuKGNvbXByZXNzZWRfaGVsbG8pCi0gICAgICAgIGV4cGVjdGVk
ICs9IGNvbXByZXNzZWRfaGVsbG8KLSAgICAgICAgY29tcHJlc3NlZF9lbXB0eSA9IGNvbXByZXNz
LmNvbXByZXNzKCcnKQotICAgICAgICBjb21wcmVzc2VkX2VtcHR5ICs9IGNvbXByZXNzLmZsdXNo
KHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBjb21wcmVzc2VkX2VtcHR5ID0gY29tcHJlc3Nl
ZF9lbXB0eVs6LTRdCi0gICAgICAgIGV4cGVjdGVkICs9ICdceDgwJWMnICUgbGVuKGNvbXByZXNz
ZWRfZW1wdHkpCi0gICAgICAgIGV4cGVjdGVkICs9IGNvbXByZXNzZWRfZW1wdHkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0
YSgpKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlX3VzaW5nX3NtYWxsX3dpbmRvdyhzZWxm
KToKLSAgICAgICAgY29tbW9uX3BhcnQgPSAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonCi0g
ICAgICAgIHRlc3RfbWVzc2FnZSA9IGNvbW1vbl9wYXJ0ICsgJy0nICogMzAwMDAgKyBjb21tb25f
cGFydAotCi0gICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCi0g
ICAgICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04pCi0gICAg
ICAgIGV4dGVuc2lvbi5hZGRfcGFyYW1ldGVyKCdzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzJywgJzgn
KQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKLSAgICAg
ICAgICAgICAgICAnJywgcGVybWVzc2FnZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotICAg
ICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCB0ZXN0X21lc3NhZ2UpCi0KLSAgICAg
ICAgZXhwZWN0ZWRfd2Vic29ja2V0X2hlYWRlcl9zaXplID0gMgotICAgICAgICBleHBlY3RlZF93
ZWJzb2NrZXRfcGF5bG9hZF9zaXplID0gOTEKLQotICAgICAgICBhY3R1YWxfZnJhbWUgPSByZXF1
ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChl
eHBlY3RlZF93ZWJzb2NrZXRfaGVhZGVyX3NpemUgKwotICAgICAgICAgICAgICAgICAgICAgICAg
IGV4cGVjdGVkX3dlYnNvY2tldF9wYXlsb2FkX3NpemUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgbGVuKGFjdHVhbF9mcmFtZSkpCi0gICAgICAgIGFjdHVhbF9oZWFkZXIgPSBhY3R1YWxfZnJh
bWVbMDpleHBlY3RlZF93ZWJzb2NrZXRfaGVhZGVyX3NpemVdCi0gICAgICAgIGFjdHVhbF9wYXls
b2FkID0gYWN0dWFsX2ZyYW1lW2V4cGVjdGVkX3dlYnNvY2tldF9oZWFkZXJfc2l6ZTpdCi0KLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgICAgICAnXHhjMSVjJyAlIGV4cGVj
dGVkX3dlYnNvY2tldF9wYXlsb2FkX3NpemUsIGFjdHVhbF9oZWFkZXIpCi0gICAgICAgIGRlY29t
cHJlc3MgPSB6bGliLmRlY29tcHJlc3NvYmooLTgpCi0gICAgICAgIGRlY29tcHJlc3NlZF9tZXNz
YWdlID0gZGVjb21wcmVzcy5kZWNvbXByZXNzKAotICAgICAgICAgICAgICAgIGFjdHVhbF9wYXls
b2FkICsgJ1x4MDBceDAwXHhmZlx4ZmYnKQotICAgICAgICBkZWNvbXByZXNzZWRfbWVzc2FnZSAr
PSBkZWNvbXByZXNzLmZsdXNoKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0X21lc3Nh
Z2UsIGRlY29tcHJlc3NlZF9tZXNzYWdlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGxl
bihkZWNvbXByZXNzLnVudXNlZF9kYXRhKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBs
ZW4oZGVjb21wcmVzcy51bmNvbnN1bWVkX3RhaWwpKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9tZXNz
YWdlX25vX2NvbnRleHRfdGFrZW92ZXJfcGFyYW1ldGVyKHNlbGYpOgotICAgICAgICBleHRlbnNp
b24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAotICAgICAgICAgICAgICAgIGNvbW1vbi5Q
RVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQotICAgICAgICBleHRlbnNpb24uYWRkX3BhcmFt
ZXRlcignc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXInLCBOb25lKQotICAgICAgICByZXF1ZXN0
ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKLSAgICAgICAgICAgICAgICAnJywgcGVy
bWVzc2FnZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotICAgICAgICBmb3IgaSBpbiB4cmFu
Z2UoMyk6Ci0gICAgICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnSGVsbG8n
LCBlbmQ9RmFsc2UpCi0gICAgICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAn
SGVsbG8nLCBlbmQ9VHJ1ZSkKLQotICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmoo
Ci0gICAgICAgICAgICAgICAgemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFU
RUQsIC16bGliLk1BWF9XQklUUykKLQotICAgICAgICBmaXJzdF9oZWxsbyA9IGNvbXByZXNzLmNv
bXByZXNzKCdIZWxsbycpCi0gICAgICAgIGZpcnN0X2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHps
aWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBleHBlY3RlZCA9ICdceDQxJWMnICUgbGVuKGZpcnN0
X2hlbGxvKQotICAgICAgICBleHBlY3RlZCArPSBmaXJzdF9oZWxsbwotICAgICAgICBzZWNvbmRf
aGVsbG8gPSBjb21wcmVzcy5jb21wcmVzcygnSGVsbG8nKQotICAgICAgICBzZWNvbmRfaGVsbG8g
Kz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIHNlY29uZF9oZWxs
byA9IHNlY29uZF9oZWxsb1s6LTRdCi0gICAgICAgIGV4cGVjdGVkICs9ICdceDgwJWMnICUgbGVu
KHNlY29uZF9oZWxsbykKLSAgICAgICAgZXhwZWN0ZWQgKz0gc2Vjb25kX2hlbGxvCi0KLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgICAgICBleHBlY3RlZCArIGV4cGVjdGVk
ICsgZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5f
ZGF0YSgpKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlX2ZyYWdtZW50ZWRfYmZpbmFsKHNl
bGYpOgotICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAotICAg
ICAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQotICAgICAg
ICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKLSAgICAgICAgICAgICAg
ICAnJywgcGVybWVzc2FnZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFscygxLCBsZW4ocmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29ycykpCi0g
ICAgICAgIHJlcXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnNbMF0uc2V0X2JmaW5hbChUcnVl
KQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnSGVsbG8nLCBlbmQ9RmFs
c2UpCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdXb3JsZCcsIGVuZD1U
cnVlKQotCi0gICAgICAgIGV4cGVjdGVkID0gJycKLQotICAgICAgICBjb21wcmVzcyA9IHpsaWIu
Y29tcHJlc3NvYmooCi0gICAgICAgICAgICB6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxp
Yi5ERUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRTKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0g
Y29tcHJlc3MuY29tcHJlc3MoJ0hlbGxvJykKLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyArPSBj
b21wcmVzcy5mbHVzaCh6bGliLlpfRklOSVNIKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0g
Y29tcHJlc3NlZF9oZWxsbyArIGNocigwKQotICAgICAgICBleHBlY3RlZCArPSAnXHg0MSVjJyAl
IGxlbihjb21wcmVzc2VkX2hlbGxvKQotICAgICAgICBleHBlY3RlZCArPSBjb21wcmVzc2VkX2hl
bGxvCi0KLSAgICAgICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKAotICAgICAgICAgICAg
emxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsIC16bGliLk1BWF9XQklU
UykKLSAgICAgICAgY29tcHJlc3NlZF93b3JsZCA9IGNvbXByZXNzLmNvbXByZXNzKCdXb3JsZCcp
Ci0gICAgICAgIGNvbXByZXNzZWRfd29ybGQgKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX0ZJTklT
SCkKLSAgICAgICAgY29tcHJlc3NlZF93b3JsZCA9IGNvbXByZXNzZWRfd29ybGQgKyBjaHIoMCkK
LSAgICAgICAgZXhwZWN0ZWQgKz0gJ1x4ODAlYycgJSBsZW4oY29tcHJlc3NlZF93b3JsZCkKLSAg
ICAgICAgZXhwZWN0ZWQgKz0gY29tcHJlc3NlZF93b3JsZAotCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoZXhwZWN0ZWQsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAg
IGRlZiB0ZXN0X3JlY2VpdmVfbWVzc2FnZV9kZWZsYXRlKHNlbGYpOgotICAgICAgICBjb21wcmVz
cyA9IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAgICAgICB6bGliLlpfREVGQVVMVF9DT01QUkVT
U0lPTiwgemxpYi5ERUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRTKQotCi0gICAgICAgIGNvbXByZXNz
ZWRfaGVsbG8gPSBjb21wcmVzcy5jb21wcmVzcygnSGVsbG8nKQotICAgICAgICBjb21wcmVzc2Vk
X2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBjb21w
cmVzc2VkX2hlbGxvID0gY29tcHJlc3NlZF9oZWxsb1s6LTRdCi0gICAgICAgIGRhdGEgPSAnXHhj
MSVjJyAlIChsZW4oY29tcHJlc3NlZF9oZWxsbykgfCAweDgwKQotICAgICAgICBkYXRhICs9IF9t
YXNrX2h5YmkoY29tcHJlc3NlZF9oZWxsbykKLQotICAgICAgICAjIENsb3NlIGZyYW1lCi0gICAg
ICAgIGRhdGEgKz0gJ1x4ODhceDhhJyArIF9tYXNrX2h5Ymkoc3RydWN0LnBhY2soJyFIJywgMTAw
MCkgKyAnR29vZCBieWUnKQotCi0gICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25Q
YXJhbWV0ZXIoCi0gICAgICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRF
TlNJT04pCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAot
ICAgICAgICAgICAgICAgIGRhdGEsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0PWV4dGVuc2lv
bikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVsbG8nLCBtc2d1dGlsLnJlY2VpdmVfbWVz
c2FnZShyZXF1ZXN0KSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIG1zZ3V0aWwu
cmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9tZXNzYWdl
X3JhbmRvbV9zZWN0aW9uKHNlbGYpOgotICAgICAgICAiIiJUZXN0IHRoYXQgYSBjb21wcmVzc2Vk
IG1lc3NhZ2UgZnJhZ21lbnRlZCBpbnRvIGxvdHMgb2YgY2h1bmtzIGlzCi0gICAgICAgIGNvcnJl
Y3RseSByZWNlaXZlZC4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgcmFuZG9tLnNlZWQoYT0wKQot
ICAgICAgICBwYXlsb2FkID0gJycuam9pbigKLSAgICAgICAgICAgIFtjaHIocmFuZG9tLnJhbmRp
bnQoMCwgMjU1KSkgZm9yIGkgaW4geHJhbmdlKDEwMDApXSkKLQotICAgICAgICBjb21wcmVzcyA9
IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAgICAgICB6bGliLlpfREVGQVVMVF9DT01QUkVTU0lP
TiwgemxpYi5ERUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRTKQotICAgICAgICBjb21wcmVzc2VkX3Bh
eWxvYWQgPSBjb21wcmVzcy5jb21wcmVzcyhwYXlsb2FkKQotICAgICAgICBjb21wcmVzc2VkX3Bh
eWxvYWQgKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIGNvbXBy
ZXNzZWRfcGF5bG9hZCA9IGNvbXByZXNzZWRfcGF5bG9hZFs6LTRdCi0KLSAgICAgICAgIyBGcmFn
bWVudCB0aGUgY29tcHJlc3NlZCBwYXlsb2FkIGludG8gbG90cyBvZiBmcmFtZXMuCi0gICAgICAg
IGJ5dGVzX2NodW5rZWQgPSAwCi0gICAgICAgIGRhdGEgPSAnJwotICAgICAgICBmcmFtZV9jb3Vu
dCA9IDAKLQotICAgICAgICBjaHVua19zaXplcyA9IFtdCi0KLSAgICAgICAgd2hpbGUgYnl0ZXNf
Y2h1bmtlZCA8IGxlbihjb21wcmVzc2VkX3BheWxvYWQpOgotICAgICAgICAgICAgIyBNYWtlIHN1
cmUgdGhhdAotICAgICAgICAgICAgIyAtIHRoZSBsZW5ndGggb2YgY2h1bmtzIGFyZSBlcXVhbCBv
ciBsZXNzIHRoYW4gMTI1IHNvIHRoYXQgd2UgY2FuCi0gICAgICAgICAgICAjICAgdXNlIDEgb2N0
ZXQgbGVuZ3RoIGhlYWRlciBmb3JtYXQgZm9yIGFsbCBmcmFtZXMuCi0gICAgICAgICAgICAjIC0g
YXQgbGVhc3QgMTAgY2h1bmtzIGFyZSBjcmVhdGVkLgotICAgICAgICAgICAgY2h1bmtfc2l6ZSA9
IHJhbmRvbS5yYW5kaW50KAotICAgICAgICAgICAgICAgIDEsIG1pbigxMjUsCi0gICAgICAgICAg
ICAgICAgICAgICAgIGxlbihjb21wcmVzc2VkX3BheWxvYWQpIC8gMTAsCi0gICAgICAgICAgICAg
ICAgICAgICAgIGxlbihjb21wcmVzc2VkX3BheWxvYWQpIC0gYnl0ZXNfY2h1bmtlZCkpCi0gICAg
ICAgICAgICBjaHVua19zaXplcy5hcHBlbmQoY2h1bmtfc2l6ZSkKLSAgICAgICAgICAgIGNodW5r
ID0gY29tcHJlc3NlZF9wYXlsb2FkWwotICAgICAgICAgICAgICAgIGJ5dGVzX2NodW5rZWQ6Ynl0
ZXNfY2h1bmtlZCArIGNodW5rX3NpemVdCi0gICAgICAgICAgICBieXRlc19jaHVua2VkICs9IGNo
dW5rX3NpemUKLQotICAgICAgICAgICAgZmlyc3Rfb2N0ZXQgPSAweDAwCi0gICAgICAgICAgICBp
ZiBsZW4oZGF0YSkgPT0gMDoKLSAgICAgICAgICAgICAgICBmaXJzdF9vY3RldCA9IGZpcnN0X29j
dGV0IHwgMHg0MgotICAgICAgICAgICAgaWYgYnl0ZXNfY2h1bmtlZCA9PSBsZW4oY29tcHJlc3Nl
ZF9wYXlsb2FkKToKLSAgICAgICAgICAgICAgICBmaXJzdF9vY3RldCA9IGZpcnN0X29jdGV0IHwg
MHg4MAotCi0gICAgICAgICAgICBkYXRhICs9ICclYyVjJyAlIChmaXJzdF9vY3RldCwgY2h1bmtf
c2l6ZSB8IDB4ODApCi0gICAgICAgICAgICBkYXRhICs9IF9tYXNrX2h5YmkoY2h1bmspCi0KLSAg
ICAgICAgICAgIGZyYW1lX2NvdW50ICs9IDEKLQotICAgICAgICBwcmludCAiQ2h1bmsgc2l6ZXM6
ICVyIiAlIGNodW5rX3NpemVzCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsZW4oY2h1bmtfc2l6
ZXMpID4gMTApCi0KLSAgICAgICAgIyBDbG9zZSBmcmFtZQotICAgICAgICBkYXRhICs9ICdceDg4
XHg4YScgKyBfbWFza19oeWJpKHN0cnVjdC5wYWNrKCchSCcsIDEwMDApICsgJ0dvb2QgYnllJykK
LQotICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAotICAgICAg
ICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04pCi0gICAgICAgIHJlcXVl
c3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAotICAgICAgICAgICAgZGF0YSwgcGVy
bWVzc2FnZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHBheWxvYWQsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkp
Ci0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX3R3b19tZXNzYWdlcyhzZWxmKToKLSAgICAgICAgY29t
cHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKAotICAgICAgICAgICAgICAgIHpsaWIuWl9ERUZBVUxU
X0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELCAtemxpYi5NQVhfV0JJVFMpCi0KLSAgICAgICAg
ZGF0YSA9ICcnCi0KLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzLmNvbXByZXNz
KCdIZWxsb1dlYlNvY2tldCcpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gKz0gY29tcHJlc3Mu
Zmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21w
cmVzc2VkX2hlbGxvWzotNF0KLSAgICAgICAgc3BsaXRfcG9zaXRpb24gPSBsZW4oY29tcHJlc3Nl
ZF9oZWxsbykgLyAyCi0gICAgICAgIGRhdGEgKz0gJ1x4NDElYycgJSAoc3BsaXRfcG9zaXRpb24g
fCAweDgwKQotICAgICAgICBkYXRhICs9IF9tYXNrX2h5YmkoY29tcHJlc3NlZF9oZWxsb1s6c3Bs
aXRfcG9zaXRpb25dKQotCi0gICAgICAgIGRhdGEgKz0gJ1x4ODAlYycgJSAoKGxlbihjb21wcmVz
c2VkX2hlbGxvKSAtIHNwbGl0X3Bvc2l0aW9uKSB8IDB4ODApCi0gICAgICAgIGRhdGEgKz0gX21h
c2tfaHliaShjb21wcmVzc2VkX2hlbGxvW3NwbGl0X3Bvc2l0aW9uOl0pCi0KLSAgICAgICAgY29t
cHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKAotICAgICAgICAgICAgICAgIHpsaWIuWl9ERUZBVUxU
X0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELCAtemxpYi5NQVhfV0JJVFMpCi0KLSAgICAgICAg
Y29tcHJlc3NlZF93b3JsZCA9IGNvbXByZXNzLmNvbXByZXNzKCdXb3JsZCcpCi0gICAgICAgIGNv
bXByZXNzZWRfd29ybGQgKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAg
ICAgIGNvbXByZXNzZWRfd29ybGQgPSBjb21wcmVzc2VkX3dvcmxkWzotNF0KLSAgICAgICAgZGF0
YSArPSAnXHhjMSVjJyAlIChsZW4oY29tcHJlc3NlZF93b3JsZCkgfCAweDgwKQotICAgICAgICBk
YXRhICs9IF9tYXNrX2h5YmkoY29tcHJlc3NlZF93b3JsZCkKLQotICAgICAgICAjIENsb3NlIGZy
YW1lCi0gICAgICAgIGRhdGEgKz0gJ1x4ODhceDhhJyArIF9tYXNrX2h5Ymkoc3RydWN0LnBhY2so
JyFIJywgMTAwMCkgKyAnR29vZCBieWUnKQotCi0gICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5F
eHRlbnNpb25QYXJhbWV0ZXIoCi0gICAgICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVG
TEFURV9FWFRFTlNJT04pCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9y
YXdkYXRhKAotICAgICAgICAgICAgICAgIGRhdGEsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0
PWV4dGVuc2lvbikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVsbG9XZWJTb2NrZXQnLCBt
c2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgnV29ybGQnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKE5vbmUsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQot
Ci0gICAgZGVmIHRlc3RfcmVjZWl2ZV9tZXNzYWdlX21peGVkX2J0eXBlKHNlbGYpOgotICAgICAg
ICAiIiJUZXN0IHRoYXQgYSBtZXNzYWdlIGNvbXByZXNzZWQgdXNpbmcgbG90cyBvZiBERUZMQVRF
IGJsb2NrcyB3aXRoCi0gICAgICAgIHZhcmlvdXMgZmx1c2ggbW9kZSBpcyBjb3JyZWN0bHkgcmVj
ZWl2ZWQuCi0gICAgICAgICIiIgotCi0gICAgICAgIHJhbmRvbS5zZWVkKGE9MCkKLSAgICAgICAg
cGF5bG9hZCA9ICcnLmpvaW4oCi0gICAgICAgICAgICBbY2hyKHJhbmRvbS5yYW5kaW50KDAsIDI1
NSkpIGZvciBpIGluIHhyYW5nZSgxMDAwKV0pCi0KLSAgICAgICAgY29tcHJlc3MgPSBOb25lCi0K
LSAgICAgICAgIyBGcmFnbWVudCB0aGUgY29tcHJlc3NlZCBwYXlsb2FkIGludG8gbG90cyBvZiBm
cmFtZXMuCi0gICAgICAgIGJ5dGVzX2NodW5rZWQgPSAwCi0gICAgICAgIGNvbXByZXNzZWRfcGF5
bG9hZCA9ICcnCi0KLSAgICAgICAgY2h1bmtfc2l6ZXMgPSBbXQotICAgICAgICBtZXRob2RzID0g
W10KLSAgICAgICAgc3luY191c2VkID0gRmFsc2UKLSAgICAgICAgZmluaXNoX3VzZWQgPSBGYWxz
ZQotCi0gICAgICAgIHdoaWxlIGJ5dGVzX2NodW5rZWQgPCBsZW4ocGF5bG9hZCk6Ci0gICAgICAg
ICAgICAjIE1ha2Ugc3VyZSBhdCBsZWFzdCAxMCBjaHVua3MgYXJlIGNyZWF0ZWQuCi0gICAgICAg
ICAgICBjaHVua19zaXplID0gcmFuZG9tLnJhbmRpbnQoCi0gICAgICAgICAgICAgICAgMSwgbWlu
KDEwMCwgbGVuKHBheWxvYWQpIC0gYnl0ZXNfY2h1bmtlZCkpCi0gICAgICAgICAgICBjaHVua19z
aXplcy5hcHBlbmQoY2h1bmtfc2l6ZSkKLSAgICAgICAgICAgIGNodW5rID0gcGF5bG9hZFtieXRl
c19jaHVua2VkOmJ5dGVzX2NodW5rZWQgKyBjaHVua19zaXplXQotCi0gICAgICAgICAgICBieXRl
c19jaHVua2VkICs9IGNodW5rX3NpemUKLQotICAgICAgICAgICAgaWYgY29tcHJlc3MgaXMgTm9u
ZToKLSAgICAgICAgICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAg
ICAgICAgICAgICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLAotICAgICAgICAgICAgICAg
ICAgICB6bGliLkRFRkxBVEVELAotICAgICAgICAgICAgICAgICAgICAtemxpYi5NQVhfV0JJVFMp
Ci0KLSAgICAgICAgICAgIGlmIGJ5dGVzX2NodW5rZWQgPT0gbGVuKHBheWxvYWQpOgotICAgICAg
ICAgICAgICAgIGNvbXByZXNzZWRfcGF5bG9hZCArPSBjb21wcmVzcy5jb21wcmVzcyhjaHVuaykK
LSAgICAgICAgICAgICAgICBjb21wcmVzc2VkX3BheWxvYWQgKz0gY29tcHJlc3MuZmx1c2goemxp
Yi5aX1NZTkNfRkxVU0gpCi0gICAgICAgICAgICAgICAgY29tcHJlc3NlZF9wYXlsb2FkID0gY29t
cHJlc3NlZF9wYXlsb2FkWzotNF0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAg
bWV0aG9kID0gcmFuZG9tLnJhbmRpbnQoMCwgMSkKLSAgICAgICAgICAgICAgICBtZXRob2RzLmFw
cGVuZChtZXRob2QpCi0gICAgICAgICAgICAgICAgaWYgbWV0aG9kID09IDA6Ci0gICAgICAgICAg
ICAgICAgICAgIGNvbXByZXNzZWRfcGF5bG9hZCArPSBjb21wcmVzcy5jb21wcmVzcyhjaHVuaykK
LSAgICAgICAgICAgICAgICAgICAgY29tcHJlc3NlZF9wYXlsb2FkICs9IGNvbXByZXNzLmZsdXNo
KHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICAgICAgICAgICAgICBzeW5jX3VzZWQgPSBUcnVl
Ci0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgY29tcHJlc3NlZF9w
YXlsb2FkICs9IGNvbXByZXNzLmNvbXByZXNzKGNodW5rKQotICAgICAgICAgICAgICAgICAgICBj
b21wcmVzc2VkX3BheWxvYWQgKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX0ZJTklTSCkKLSAgICAg
ICAgICAgICAgICAgICAgY29tcHJlc3MgPSBOb25lCi0gICAgICAgICAgICAgICAgICAgIGZpbmlz
aF91c2VkID0gVHJ1ZQotCi0gICAgICAgIHByaW50ICJDaHVuayBzaXplczogJXIiICUgY2h1bmtf
c2l6ZXMKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbihjaHVua19zaXplcykgPiAxMCkKLSAg
ICAgICAgcHJpbnQgIk1ldGhvZHM6ICVyIiAlIG1ldGhvZHMKLSAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKHN5bmNfdXNlZCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZpbmlzaF91c2VkKQotCi0g
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgxMjUgPCBsZW4oY29tcHJlc3NlZF9wYXlsb2FkKSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbihjb21wcmVzc2VkX3BheWxvYWQpIDwgNjU1MzYpCi0g
ICAgICAgIGRhdGEgPSAnXHhjMlx4ZmUnICsgc3RydWN0LnBhY2soJyFIJywgbGVuKGNvbXByZXNz
ZWRfcGF5bG9hZCkpCi0gICAgICAgIGRhdGEgKz0gX21hc2tfaHliaShjb21wcmVzc2VkX3BheWxv
YWQpCi0KLSAgICAgICAgIyBDbG9zZSBmcmFtZQotICAgICAgICBkYXRhICs9ICdceDg4XHg4YScg
KyBfbWFza19oeWJpKHN0cnVjdC5wYWNrKCchSCcsIDEwMDApICsgJ0dvb2QgYnllJykKLQotICAg
ICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAotICAgICAgICAgICAg
Y29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04pCi0gICAgICAgIHJlcXVlc3QgPSBf
Y3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAotICAgICAgICAgICAgZGF0YSwgcGVybWVzc2Fn
ZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBh
eWxvYWQsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoTm9uZSwgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0KLQot
Y2xhc3MgUGVyTWVzc2FnZUNvbXByZXNzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIi
VGVzdHMgZm9yIGNoZWNraW5nIHBlcm1lc3NhZ2UtY29tcHJlc3Npb24gZXh0ZW5zaW9uLiIiIgot
Ci0gICAgZGVmIHRlc3RfZGVmbGF0ZV9yZXNwb25zZV9wYXJhbWV0ZXJzKHNlbGYpOgotICAgICAg
ICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAotICAgICAgICAgICAgY29t
bW9uLlBFUk1FU1NBR0VfQ09NUFJFU1NJT05fRVhURU5TSU9OKQotICAgICAgICBleHRlbnNpb24u
YWRkX3BhcmFtZXRlcignbWV0aG9kJywgJ2RlZmxhdGUnKQotICAgICAgICBwcm9jZXNzb3IgPSBQ
ZXJNZXNzYWdlQ29tcHJlc3NFeHRlbnNpb25Qcm9jZXNzb3IoZXh0ZW5zaW9uKQotICAgICAgICBy
ZXNwb25zZSA9IHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgnZGVmbGF0ZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9u
c2UuZ2V0X3BhcmFtZXRlcl92YWx1ZSgnbWV0aG9kJykpCi0KLSAgICAgICAgZXh0ZW5zaW9uID0g
Y29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigKLSAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdF
X0NPTVBSRVNTSU9OX0VYVEVOU0lPTikKLSAgICAgICAgZXh0ZW5zaW9uLmFkZF9wYXJhbWV0ZXIo
J21ldGhvZCcsICdkZWZsYXRlJykKLSAgICAgICAgcHJvY2Vzc29yID0gUGVyTWVzc2FnZUNvbXBy
ZXNzRXh0ZW5zaW9uUHJvY2Vzc29yKGV4dGVuc2lvbikKLQotICAgICAgICBkZWYgX2NvbXByZXNz
aW9uX3Byb2Nlc3Nvcl9ob29rKGNvbXByZXNzaW9uX3Byb2Nlc3Nvcik6Ci0gICAgICAgICAgICBj
b21wcmVzc2lvbl9wcm9jZXNzb3Iuc2V0X2NsaWVudF9tYXhfd2luZG93X2JpdHMoOCkKLSAgICAg
ICAgICAgIGNvbXByZXNzaW9uX3Byb2Nlc3Nvci5zZXRfY2xpZW50X25vX2NvbnRleHRfdGFrZW92
ZXIoVHJ1ZSkKLSAgICAgICAgcHJvY2Vzc29yLnNldF9jb21wcmVzc2lvbl9wcm9jZXNzb3JfaG9v
aygKLSAgICAgICAgICAgIF9jb21wcmVzc2lvbl9wcm9jZXNzb3JfaG9vaykKLSAgICAgICAgcmVz
cG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICAnZGVmbGF0ZTsgY2xpZW50X21heF93aW5kb3dfYml0
cz04OyBjbGllbnRfbm9fY29udGV4dF90YWtlb3ZlcicsCi0gICAgICAgICAgICByZXNwb25zZS5n
ZXRfcGFyYW1ldGVyX3ZhbHVlKCdtZXRob2QnKSkKLQotCi1jbGFzcyBNZXNzYWdlVGVzdEhpeGll
NzUodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIlRlc3RzIGZvciBkcmFmdC1oaXhpZS10aGV3
ZWJzb2NrZXRwcm90b2NvbC03NiBzdHJlYW0gY2xhc3MuIiIiCi0KLSAgICBkZWYgdGVzdF9zZW5k
X21lc3NhZ2Uoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfaGl4aWU3
NSgpCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxsbycpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4MDBIZWxsb1x4ZmYnLCByZXF1ZXN0LmNvbm5lY3Rpb24u
d3JpdHRlbl9kYXRhKCkpCi0KLSAgICBkZWYgdGVzdF9zZW5kX21lc3NhZ2VfdW5pY29kZShzZWxm
KToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9oaXhpZTc1KCkKLSAgICAgICAg
bXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgdSdcdTY1ZTUnKQotICAgICAgICAjIFUrNjVl
NSBpcyBlbmNvZGVkIGFzIGU2LDk3LGE1IGluIFVURi04Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJ1x4MDBceGU2XHg5N1x4YTVceGZmJywKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1
ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX21l
c3NhZ2Uoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfaGl4aWU3NSgn
XHgwMEhlbGxvXHhmZlx4MDBXb3JsZCFceGZmJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
SGVsbG8nLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnV29ybGQhJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0K
LSAgICBkZWYgdGVzdF9yZWNlaXZlX21lc3NhZ2VfdW5pY29kZShzZWxmKToKLSAgICAgICAgcmVx
dWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9oaXhpZTc1KCdceDAwXHhlNlx4OWNceGFjXHhmZicpCi0g
ICAgICAgICMgVSs2NzJjIGlzIGVuY29kZWQgYXMgZTYsOWMsYWMgaW4gVVRGLTgKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCh1J1x1NjcyYycsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVl
c3QpKQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9tZXNzYWdlX2Vycm9uZW91c191bmljb2RlKHNl
bGYpOgotICAgICAgICAjIFx4ODAgYW5kIFx4ODEgYXJlIGludmFsaWQgYXMgVVRGLTguCi0gICAg
ICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfaGl4aWU3NSgnXHgwMFx4ODBceDgxXHhmZicp
Ci0gICAgICAgICMgSW52YWxpZCBjaGFyYWN0ZXJzIHNob3VsZCBiZSByZXBsYWNlZCB3aXRoCi0g
ICAgICAgICMgVStmZmZkIFJFUExBQ0VNRU5UIENIQVJBQ1RFUgotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHUnXHVmZmZkXHVmZmZkJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkp
Ci0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX21lc3NhZ2VfZGlzY2FyZChzZWxmKToKLSAgICAgICAg
cmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9oaXhpZTc1KCdceDgwXHgwNklHTk9SRVx4MDBIZWxs
b1x4ZmYnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXHgwMURJ
U1JFR0FSRFx4ZmZceDAwV29ybGQhXHhmZicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hl
bGxvJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJ1dvcmxkIScsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotCi0K
LWNsYXNzIE1lc3NhZ2VSZWNlaXZlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIlRl
c3RzIHRoZSBTdHJlYW0gY2xhc3MgdXNpbmcgTWVzc2FnZVJlY2VpdmVyLiIiIgotCi0gICAgZGVm
IHRlc3RfcXVldWUoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX2Jsb2NraW5nX3Jl
cXVlc3QoKQotICAgICAgICByZWNlaXZlciA9IG1zZ3V0aWwuTWVzc2FnZVJlY2VpdmVyKHJlcXVl
c3QpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCByZWNlaXZlci5yZWNlaXZlX25v
d2FpdCgpKQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoJ1x4ODFceDg2
JyArIF9tYXNrX2h5YmkoJ0hlbGxvIScpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdIZWxs
byEnLCByZWNlaXZlci5yZWNlaXZlKCkpCi0KLSAgICBkZWYgdGVzdF9vbm1lc3NhZ2Uoc2VsZik6
Ci0gICAgICAgIG9ubWVzc2FnZV9xdWV1ZSA9IFF1ZXVlLlF1ZXVlKCkKLQotICAgICAgICBkZWYg
b25tZXNzYWdlX2hhbmRsZXIobWVzc2FnZSk6Ci0gICAgICAgICAgICBvbm1lc3NhZ2VfcXVldWUu
cHV0KG1lc3NhZ2UpCi0KLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfYmxvY2tpbmdfcmVxdWVz
dCgpCi0gICAgICAgIHJlY2VpdmVyID0gbXNndXRpbC5NZXNzYWdlUmVjZWl2ZXIocmVxdWVzdCwg
b25tZXNzYWdlX2hhbmRsZXIpCi0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRl
cygnXHg4MVx4ODYnICsgX21hc2tfaHliaSgnSGVsbG8hJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ0hlbGxvIScsIG9ubWVzc2FnZV9xdWV1ZS5nZXQoKSkKLQotCi1jbGFzcyBNZXNzYWdl
UmVjZWl2ZXJIaXhpZTc1VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiVGVzdHMgdGhl
IFN0cmVhbUhpeGllNzUgY2xhc3MgdXNpbmcgTWVzc2FnZVJlY2VpdmVyLiIiIgotCi0gICAgZGVm
IHRlc3RfcXVldWUoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX2Jsb2NraW5nX3Jl
cXVlc3RfaGl4aWU3NSgpCi0gICAgICAgIHJlY2VpdmVyID0gbXNndXRpbC5NZXNzYWdlUmVjZWl2
ZXIocmVxdWVzdCkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIHJlY2VpdmVyLnJl
Y2VpdmVfbm93YWl0KCkpCi0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygn
XHgwMEhlbGxvIVx4ZmYnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdIZWxsbyEnLCByZWNl
aXZlci5yZWNlaXZlKCkpCi0KLSAgICBkZWYgdGVzdF9vbm1lc3NhZ2Uoc2VsZik6Ci0gICAgICAg
IG9ubWVzc2FnZV9xdWV1ZSA9IFF1ZXVlLlF1ZXVlKCkKLQotICAgICAgICBkZWYgb25tZXNzYWdl
X2hhbmRsZXIobWVzc2FnZSk6Ci0gICAgICAgICAgICBvbm1lc3NhZ2VfcXVldWUucHV0KG1lc3Nh
Z2UpCi0KLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfYmxvY2tpbmdfcmVxdWVzdF9oaXhpZTc1
KCkKLSAgICAgICAgcmVjZWl2ZXIgPSBtc2d1dGlsLk1lc3NhZ2VSZWNlaXZlcihyZXF1ZXN0LCBv
bm1lc3NhZ2VfaGFuZGxlcikKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVz
KCdceDAwSGVsbG8hXHhmZicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvIScsIG9u
bWVzc2FnZV9xdWV1ZS5nZXQoKSkKLQotCi1jbGFzcyBNZXNzYWdlU2VuZGVyVGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSk6Ci0gICAgIiIiVGVzdHMgdGhlIFN0cmVhbSBjbGFzcyB1c2luZyBNZXNzYWdl
U2VuZGVyLiIiIgotCi0gICAgZGVmIHRlc3Rfc2VuZChzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9
IF9jcmVhdGVfYmxvY2tpbmdfcmVxdWVzdCgpCi0gICAgICAgIHNlbmRlciA9IG1zZ3V0aWwuTWVz
c2FnZVNlbmRlcihyZXF1ZXN0KQotCi0gICAgICAgIHNlbmRlci5zZW5kKCdXb3JsZCcpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4ODFceDA1V29ybGQnLCByZXF1ZXN0LmNvbm5lY3Rpb24u
d3JpdHRlbl9kYXRhKCkpCi0KLSAgICBkZWYgdGVzdF9zZW5kX25vd2FpdChzZWxmKToKLSAgICAg
ICAgIyBVc2UgYSBxdWV1ZSB0byBjaGVjayB0aGUgYnl0ZXMgd3JpdHRlbiBieSBNZXNzYWdlU2Vu
ZGVyLgotICAgICAgICAjIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSBjYW5ub3Qg
YmUgdXNlZCBoZXJlIGJlY2F1c2UKLSAgICAgICAgIyBNZXNzYWdlU2VuZGVyIHJ1bnMgaW4gYSBz
ZXBhcmF0ZSB0aHJlYWQuCi0gICAgICAgIHNlbmRfcXVldWUgPSBRdWV1ZS5RdWV1ZSgpCi0KLSAg
ICAgICAgZGVmIHdyaXRlKGJ5dGVzKToKLSAgICAgICAgICAgIHNlbmRfcXVldWUucHV0KGJ5dGVz
KQotCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX2Jsb2NraW5nX3JlcXVlc3QoKQotICAgICAg
ICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUgPSB3cml0ZQotCi0gICAgICAgIHNlbmRlciA9IG1z
Z3V0aWwuTWVzc2FnZVNlbmRlcihyZXF1ZXN0KQotCi0gICAgICAgIHNlbmRlci5zZW5kX25vd2Fp
dCgnSGVsbG8nKQotICAgICAgICBzZW5kZXIuc2VuZF9ub3dhaXQoJ1dvcmxkJykKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgnXHg4MVx4MDVIZWxsbycsIHNlbmRfcXVldWUuZ2V0KCkpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4ODFceDA1V29ybGQnLCBzZW5kX3F1ZXVlLmdldCgpKQot
Ci0KLWNsYXNzIE1lc3NhZ2VTZW5kZXJIaXhpZTc1VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0g
ICAgIiIiVGVzdHMgdGhlIFN0cmVhbUhpeGllNzUgY2xhc3MgdXNpbmcgTWVzc2FnZVNlbmRlci4i
IiIKLQotICAgIGRlZiB0ZXN0X3NlbmQoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRl
X2Jsb2NraW5nX3JlcXVlc3RfaGl4aWU3NSgpCi0gICAgICAgIHNlbmRlciA9IG1zZ3V0aWwuTWVz
c2FnZVNlbmRlcihyZXF1ZXN0KQotCi0gICAgICAgIHNlbmRlci5zZW5kKCdXb3JsZCcpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4MDBXb3JsZFx4ZmYnLCByZXF1ZXN0LmNvbm5lY3Rpb24u
d3JpdHRlbl9kYXRhKCkpCi0KLSAgICBkZWYgdGVzdF9zZW5kX25vd2FpdChzZWxmKToKLSAgICAg
ICAgIyBVc2UgYSBxdWV1ZSB0byBjaGVjayB0aGUgYnl0ZXMgd3JpdHRlbiBieSBNZXNzYWdlU2Vu
ZGVyLgotICAgICAgICAjIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSBjYW5ub3Qg
YmUgdXNlZCBoZXJlIGJlY2F1c2UKLSAgICAgICAgIyBNZXNzYWdlU2VuZGVyIHJ1bnMgaW4gYSBz
ZXBhcmF0ZSB0aHJlYWQuCi0gICAgICAgIHNlbmRfcXVldWUgPSBRdWV1ZS5RdWV1ZSgpCi0KLSAg
ICAgICAgZGVmIHdyaXRlKGJ5dGVzKToKLSAgICAgICAgICAgIHNlbmRfcXVldWUucHV0KGJ5dGVz
KQotCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX2Jsb2NraW5nX3JlcXVlc3RfaGl4aWU3NSgp
Ci0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZSA9IHdyaXRlCi0KLSAgICAgICAgc2Vu
ZGVyID0gbXNndXRpbC5NZXNzYWdlU2VuZGVyKHJlcXVlc3QpCi0KLSAgICAgICAgc2VuZGVyLnNl
bmRfbm93YWl0KCdIZWxsbycpCi0gICAgICAgIHNlbmRlci5zZW5kX25vd2FpdCgnV29ybGQnKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDAwSGVsbG9ceGZmJywgc2VuZF9xdWV1ZS5nZXQo
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHgwMFdvcmxkXHhmZicsIHNlbmRfcXVldWUu
Z2V0KCkpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB1bml0dGVzdC5tYWlu
KCkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVz
dF9tdXgucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RfbXV4LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBkNDU5ODk0NGUwODdjYmQyYzJiMmNlMmE0YjA4OWFhZmQ3YTMzNGMyLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3Qv
dGVzdF9tdXgucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyMDg5ICswLDAgQEAKLSMhL3Vzci9iaW4v
ZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwot
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0j
IGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0j
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiVGVzdHMgZm9yIG11eCBtb2R1
bGUuIiIiCi0KLWltcG9ydCBRdWV1ZQotaW1wb3J0IGNvcHkKLWltcG9ydCBsb2dnaW5nCi1pbXBv
cnQgb3B0cGFyc2UKLWltcG9ydCBzdHJ1Y3QKLWltcG9ydCBzeXMKLWltcG9ydCB1bml0dGVzdAot
aW1wb3J0IHRpbWUKLWltcG9ydCB6bGliCi0KLWltcG9ydCBzZXRfc3lzX3BhdGggICMgVXBkYXRl
IHN5cy5wYXRoIHRvIGxvY2F0ZSBtb2RfcHl3ZWJzb2NrZXQgbW9kdWxlLgotCi1mcm9tIG1vZF9w
eXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgbXV4
Ci1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2Jhc2UgaW1wb3J0IENvbm5lY3Rpb25UZXJt
aW5hdGVkRXhjZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2Jhc2UgaW1wb3J0
IFVuc3VwcG9ydGVkRnJhbWVFeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1f
aHliaSBpbXBvcnQgRnJhbWUKLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1faHliaSBpbXBv
cnQgU3RyZWFtCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0IFN0cmVh
bU9wdGlvbnMKLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1faHliaSBpbXBvcnQgY3JlYXRl
X2JpbmFyeV9mcmFtZQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9oeWJpIGltcG9ydCBj
cmVhdGVfY2xvc2VfZnJhbWUKLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1faHliaSBpbXBv
cnQgY3JlYXRlX2Nsb3NpbmdfaGFuZHNoYWtlX2JvZHkKLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9z
dHJlYW1faHliaSBpbXBvcnQgcGFyc2VfZnJhbWUKLWZyb20gbW9kX3B5d2Vic29ja2V0LmV4dGVu
c2lvbnMgaW1wb3J0IE11eEV4dGVuc2lvblByb2Nlc3NvcgotCi0KLWltcG9ydCBtb2NrCi0KLQot
X1RFU1RfSEVBREVSUyA9IHsnSG9zdCc6ICdzZXJ2ZXIuZXhhbXBsZS5jb20nLAotICAgICAgICAg
ICAgICAgICAnVXBncmFkZSc6ICd3ZWJzb2NrZXQnLAotICAgICAgICAgICAgICAgICAnQ29ubmVj
dGlvbic6ICdVcGdyYWRlJywKLSAgICAgICAgICAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5Jzog
J2RHaGxJSE5oYlhCc1pTQnViMjVqWlE9PScsCi0gICAgICAgICAgICAgICAgICdTZWMtV2ViU29j
a2V0LVZlcnNpb24nOiAnMTMnLAotICAgICAgICAgICAgICAgICAnT3JpZ2luJzogJ2h0dHA6Ly9l
eGFtcGxlLmNvbSd9Ci0KLQotY2xhc3MgX091dGdvaW5nQ2hhbm5lbERhdGEob2JqZWN0KToKLSAg
ICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYubWVzc2FnZXMgPSBbXQotICAgICAg
ICBzZWxmLmNvbnRyb2xfbWVzc2FnZXMgPSBbXQotCi0gICAgICAgIHNlbGYuYnVpbGRlciA9IG11
eC5fSW5uZXJNZXNzYWdlQnVpbGRlcigpCi0KLWNsYXNzIF9Nb2NrTXV4Q29ubmVjdGlvbihtb2Nr
Lk1vY2tCbG9ja2luZ0Nvbm4pOgotICAgICIiIk1vY2sgY2xhc3Mgb2YgbW9kX3B5dGhvbiBjb25u
ZWN0aW9uIGZvciBtdXguIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIG1v
Y2suTW9ja0Jsb2NraW5nQ29ubi5fX2luaXRfXyhzZWxmKQotICAgICAgICBzZWxmLl9jb250cm9s
X2Jsb2NrcyA9IFtdCi0gICAgICAgIHNlbGYuX2NoYW5uZWxfZGF0YSA9IHt9Ci0KLSAgICAgICAg
c2VsZi5fY3VycmVudF9vcGNvZGUgPSBOb25lCi0gICAgICAgIHNlbGYuX3BlbmRpbmdfZnJhZ21l
bnRzID0gW10KLQotICAgICAgICBzZWxmLnNlcnZlcl9jbG9zZV9jb2RlID0gTm9uZQotCi0gICAg
ZGVmIHdyaXRlKHNlbGYsIGRhdGEpOgotICAgICAgICAiIiJPdmVycmlkZSBNb2NrQmxvY2tpbmdD
b25uLndyaXRlLiIiIgotCi0gICAgICAgIHNlbGYuX2N1cnJlbnRfZGF0YSA9IGRhdGEKLSAgICAg
ICAgc2VsZi5fcG9zaXRpb24gPSAwCi0KLSAgICAgICAgZGVmIF9yZWNlaXZlX2J5dGVzKGxlbmd0
aCk6Ci0gICAgICAgICAgICBpZiBzZWxmLl9wb3NpdGlvbiArIGxlbmd0aCA+IGxlbihzZWxmLl9j
dXJyZW50X2RhdGEpOgotICAgICAgICAgICAgICAgIHJhaXNlIENvbm5lY3Rpb25UZXJtaW5hdGVk
RXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICAgICAnRmFpbGVkIHRvIHJlY2VpdmUgJWQgYnl0
ZXMgZnJvbSBlbmNhcHN1bGF0ZWQgJwotICAgICAgICAgICAgICAgICAgICAnZnJhbWUnICUgbGVu
Z3RoKQotICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2N1cnJlbnRfZGF0YVtzZWxmLl9wb3NpdGlv
bjpzZWxmLl9wb3NpdGlvbitsZW5ndGhdCi0gICAgICAgICAgICBzZWxmLl9wb3NpdGlvbiArPSBs
ZW5ndGgKLSAgICAgICAgICAgIHJldHVybiBkYXRhCi0KLSAgICAgICAgIyBQYXJzZSBwaHlzaWNh
bCBmcmFtZXMgYW5kIGFzc2VtYmxlIGEgbWVzc2FnZSBpZiB0aGUgbWVzc2FnZSBpcwotICAgICAg
ICAjIGZyYWdtZW50ZWQuCi0gICAgICAgIG9wY29kZSwgcGF5bG9hZCwgZmluLCByc3YxLCByc3Yy
LCByc3YzID0gKAotICAgICAgICAgICAgcGFyc2VfZnJhbWUoX3JlY2VpdmVfYnl0ZXMsIHVubWFz
a19yZWNlaXZlPUZhbHNlKSkKLQotICAgICAgICBzZWxmLl9wZW5kaW5nX2ZyYWdtZW50cy5hcHBl
bmQocGF5bG9hZCkKLQotICAgICAgICBpZiBzZWxmLl9jdXJyZW50X29wY29kZSBpcyBOb25lOgot
ICAgICAgICAgICAgaWYgb3Bjb2RlID09IGNvbW1vbi5PUENPREVfQ09OVElOVUFUSU9OOgotICAg
ICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignU2VuZGluZyBpbnZhbGlkIGNvbnRpbnVhdGlv
biBvcGNvZGUnKQotICAgICAgICAgICAgc2VsZi5fY3VycmVudF9vcGNvZGUgPSBvcGNvZGUKLSAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIG9wY29kZSAhPSBjb21tb24uT1BDT0RFX0NPTlRJ
TlVBVElPTjoKLSAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1NlbmRpbmcgaW52YWxp
ZCBvcGNvZGUgJWQnICUgb3Bjb2RlKQotICAgICAgICBpZiBub3QgZmluOgotICAgICAgICAgICAg
cmV0dXJuCi0KLSAgICAgICAgaW5uZXJfZnJhbWVfZGF0YSA9ICcnLmpvaW4oc2VsZi5fcGVuZGlu
Z19mcmFnbWVudHMpCi0gICAgICAgIHNlbGYuX3BlbmRpbmdfZnJhZ21lbnRzID0gW10KLSAgICAg
ICAgc2VsZi5fY3VycmVudF9vcGNvZGUgPSBOb25lCi0KLSAgICAgICAgIyBIYW5kbGUgYSBjb250
cm9sIG1lc3NhZ2Ugb24gdGhlIHBoeXNpY2FsIGNoYW5uZWwuCi0gICAgICAgICMgVE9ETyhiYXNo
aSk6IFN1cHBvcnQgb3RoZXIgb3Bjb2RlcyBpZiBuZWVkZWQuCi0gICAgICAgIGlmIG9wY29kZSA9
PSBjb21tb24uT1BDT0RFX0NMT1NFOgotICAgICAgICAgICAgaWYgbGVuKHBheWxvYWQpID49IDI6
Ci0gICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfY2xvc2VfY29kZSA9IHN0cnVjdC51bnBhY2so
JyFIJywgcGF5bG9hZFs6Ml0pWzBdCi0gICAgICAgICAgICBjbG9zZV9ib2R5ID0gY3JlYXRlX2Ns
b3NpbmdfaGFuZHNoYWtlX2JvZHkoCi0gICAgICAgICAgICAgICAgY29tbW9uLlNUQVRVU19OT1JN
QUxfQ0xPU1VSRSwgJycpCi0gICAgICAgICAgICBjbG9zZV9mcmFtZSA9IGNyZWF0ZV9jbG9zZV9m
cmFtZShjbG9zZV9ib2R5LCBtYXNrPVRydWUpCi0gICAgICAgICAgICBzZWxmLnB1dF9ieXRlcyhj
bG9zZV9mcmFtZSkKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgICMgUGFyc2UgdGhlIHBh
eWxvYWQgb2YgdGhlIG1lc3NhZ2Ugb24gcGh5c2ljYWwgY2hhbm5lbC4KLSAgICAgICAgcGFyc2Vy
ID0gbXV4Ll9NdXhGcmFtZVBheWxvYWRQYXJzZXIoaW5uZXJfZnJhbWVfZGF0YSkKLSAgICAgICAg
Y2hhbm5lbF9pZCA9IHBhcnNlci5yZWFkX2NoYW5uZWxfaWQoKQotICAgICAgICBpZiBjaGFubmVs
X2lkID09IG11eC5fQ09OVFJPTF9DSEFOTkVMX0lEOgotICAgICAgICAgICAgc2VsZi5fY29udHJv
bF9ibG9ja3MuZXh0ZW5kKGxpc3QocGFyc2VyLnJlYWRfY29udHJvbF9ibG9ja3MoKSkpCi0gICAg
ICAgICAgICByZXR1cm4KLQotICAgICAgICBpZiBub3QgY2hhbm5lbF9pZCBpbiBzZWxmLl9jaGFu
bmVsX2RhdGE6Ci0gICAgICAgICAgICBzZWxmLl9jaGFubmVsX2RhdGFbY2hhbm5lbF9pZF0gPSBf
T3V0Z29pbmdDaGFubmVsRGF0YSgpCi0gICAgICAgIGNoYW5uZWxfZGF0YSA9IHNlbGYuX2NoYW5u
ZWxfZGF0YVtjaGFubmVsX2lkXQotCi0gICAgICAgICMgUGFyc2UgbG9naWNhbCBmcmFtZXMgYW5k
IGFzc2VtYmxlIGFuIGlubmVyIChsb2dpY2FsKSBtZXNzYWdlLgotICAgICAgICAoaW5uZXJfZmlu
LCBpbm5lcl9yc3YxLCBpbm5lcl9yc3YyLCBpbm5lcl9yc3YzLCBpbm5lcl9vcGNvZGUsCi0gICAg
ICAgICBpbm5lcl9wYXlsb2FkKSA9IHBhcnNlci5yZWFkX2lubmVyX2ZyYW1lKCkKLSAgICAgICAg
aW5uZXJfZnJhbWUgPSBGcmFtZShpbm5lcl9maW4sIGlubmVyX3JzdjEsIGlubmVyX3JzdjIsIGlu
bmVyX3JzdjMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5uZXJfb3Bjb2RlLCBpbm5l
cl9wYXlsb2FkKQotICAgICAgICBtZXNzYWdlID0gY2hhbm5lbF9kYXRhLmJ1aWxkZXIuYnVpbGQo
aW5uZXJfZnJhbWUpCi0gICAgICAgIGlmIG1lc3NhZ2UgaXMgTm9uZToKLSAgICAgICAgICAgIHJl
dHVybgotCi0gICAgICAgIGlmIChtZXNzYWdlLm9wY29kZSA9PSBjb21tb24uT1BDT0RFX1RFWFQg
b3IKLSAgICAgICAgICAgIG1lc3NhZ2Uub3Bjb2RlID09IGNvbW1vbi5PUENPREVfQklOQVJZKToK
LSAgICAgICAgICAgIGNoYW5uZWxfZGF0YS5tZXNzYWdlcy5hcHBlbmQobWVzc2FnZS5wYXlsb2Fk
KQotCi0gICAgICAgICAgICBzZWxmLm9uX2RhdGFfbWVzc2FnZShtZXNzYWdlLnBheWxvYWQpCi0g
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjaGFubmVsX2RhdGEuY29udHJvbF9tZXNzYWdlcy5h
cHBlbmQoCi0gICAgICAgICAgICAgICAgeydvcGNvZGUnOiBtZXNzYWdlLm9wY29kZSwKLSAgICAg
ICAgICAgICAgICAgJ21lc3NhZ2UnOiBtZXNzYWdlLnBheWxvYWR9KQotCi0gICAgZGVmIG9uX2Rh
dGFfbWVzc2FnZShzZWxmLCBtZXNzYWdlKToKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIGdldF93
cml0dGVuX2NvbnRyb2xfYmxvY2tzKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fY29udHJv
bF9ibG9ja3MKLQotICAgIGRlZiBnZXRfd3JpdHRlbl9tZXNzYWdlcyhzZWxmLCBjaGFubmVsX2lk
KToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2NoYW5uZWxfZGF0YVtjaGFubmVsX2lkXS5tZXNzYWdl
cwotCi0gICAgZGVmIGdldF93cml0dGVuX2NvbnRyb2xfbWVzc2FnZXMoc2VsZiwgY2hhbm5lbF9p
ZCk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9jaGFubmVsX2RhdGFbY2hhbm5lbF9pZF0uY29udHJv
bF9tZXNzYWdlcwotCi0KLWNsYXNzIF9GYWlsT25Xcml0ZUNvbm5lY3Rpb24oX01vY2tNdXhDb25u
ZWN0aW9uKToKLSAgICAiIiJTcGVjaWNpYWxpemVkIHZlcnNpb24gb2YgX01vY2tNdXhDb25uZWN0
aW9uLiBJdHMgd3JpdGUoKSBtZXRob2QgcmFpc2VzCi0gICAgYW4gZXhjZXB0aW9uIGZvciB0ZXN0
aW5nIHdoZW4gYSBkYXRhIG1lc3NhZ2UgaXMgd3JpdHRlbi4KLSAgICAiIiIKLQotICAgIGRlZiBv
bl9kYXRhX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSk6Ci0gICAgICAgICIiIk92ZXJyaWRlIHRvIHJh
aXNlIGFuIGV4Y2VwdGlvbi4iIiIKLQotICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0ludGVudGlv
bmFsIGZhaWx1cmUnKQotCi0KLWNsYXNzIF9DaGFubmVsRXZlbnQob2JqZWN0KToKLSAgICAiIiJB
IHN0cnVjdHVyZSB0aGF0IHJlY29yZHMgY2hhbm5lbCBldmVudHMuIiIiCi0KLSAgICBkZWYgX19p
bml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYucmVxdWVzdCA9IE5vbmUKLSAgICAgICAgc2VsZi5t
ZXNzYWdlcyA9IFtdCi0gICAgICAgIHNlbGYuZXhjZXB0aW9uID0gTm9uZQotICAgICAgICBzZWxm
LmNsaWVudF9pbml0aWF0ZWRfY2xvc2luZyA9IEZhbHNlCi0KLQotY2xhc3MgX011eE1vY2tEaXNw
YXRjaGVyKG9iamVjdCk6Ci0gICAgIiIiTW9jayBjbGFzcyBvZiBkaXNwYXRjaC5EaXNwYXRjaGVy
IGZvciBtdXguIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYuY2hh
bm5lbF9ldmVudHMgPSB7fQotCi0gICAgZGVmIGRvX2V4dHJhX2hhbmRzaGFrZShzZWxmLCByZXF1
ZXN0KToKLSAgICAgICAgaWYgcmVxdWVzdC53c19yZXF1ZXN0ZWRfcHJvdG9jb2xzIGlzIG5vdCBO
b25lOgotICAgICAgICAgICAgcmVxdWVzdC53c19wcm90b2NvbCA9IHJlcXVlc3Qud3NfcmVxdWVz
dGVkX3Byb3RvY29sc1swXQotCi0gICAgZGVmIF9kb19lY2hvKHNlbGYsIHJlcXVlc3QsIGNoYW5u
ZWxfZXZlbnRzKToKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIG1lc3NhZ2UgPSBy
ZXF1ZXN0LndzX3N0cmVhbS5yZWNlaXZlX21lc3NhZ2UoKQotICAgICAgICAgICAgaWYgbWVzc2Fn
ZSA9PSBOb25lOgotICAgICAgICAgICAgICAgIGNoYW5uZWxfZXZlbnRzLmNsaWVudF9pbml0aWF0
ZWRfY2xvc2luZyA9IFRydWUKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIGlm
IG1lc3NhZ2UgPT0gJ0dvb2RieWUnOgotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAg
ICAgY2hhbm5lbF9ldmVudHMubWVzc2FnZXMuYXBwZW5kKG1lc3NhZ2UpCi0gICAgICAgICAgICAj
IGVjaG8gYmFjawotICAgICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKG1l
c3NhZ2UpCi0KLSAgICBkZWYgX2RvX3Bpbmcoc2VsZiwgcmVxdWVzdCwgY2hhbm5lbF9ldmVudHMp
OgotICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5zZW5kX3BpbmcoJ1BpbmchJykKLQotICAgIGRl
ZiBfZG9fcGluZ193aGlsZV9oZWxsb193b3JsZChzZWxmLCByZXF1ZXN0LCBjaGFubmVsX2V2ZW50
cyk6Ci0gICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRfbWVzc2FnZSgnSGVsbG8gJywgZW5k
PUZhbHNlKQotICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5zZW5kX3BpbmcoJ1BpbmchJykKLSAg
ICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKCdXb3JsZCEnLCBlbmQ9VHJ1ZSkK
LQotICAgIGRlZiBfZG9fdHdvX3Bpbmdfd2hpbGVfaGVsbG9fd29ybGQoc2VsZiwgcmVxdWVzdCwg
Y2hhbm5lbF9ldmVudHMpOgotICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5zZW5kX21lc3NhZ2Uo
J0hlbGxvICcsIGVuZD1GYWxzZSkKLSAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9waW5n
KCdQaW5nIScpCi0gICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRfcGluZygnUG9uZyEnKQot
ICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5zZW5kX21lc3NhZ2UoJ1dvcmxkIScsIGVuZD1UcnVl
KQotCi0gICAgZGVmIHRyYW5zZmVyX2RhdGEoc2VsZiwgcmVxdWVzdCk6Ci0gICAgICAgIHNlbGYu
Y2hhbm5lbF9ldmVudHNbcmVxdWVzdC5jaGFubmVsX2lkXSA9IF9DaGFubmVsRXZlbnQoKQotICAg
ICAgICBzZWxmLmNoYW5uZWxfZXZlbnRzW3JlcXVlc3QuY2hhbm5lbF9pZF0ucmVxdWVzdCA9IHJl
cXVlc3QKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICAjIE5vdGU6IG1vcmUgaGFuZGxlciB3
aWxsIGJlIGFkZGVkLgotICAgICAgICAgICAgaWYgcmVxdWVzdC51cmkuZW5kc3dpdGgoJ2VjaG8n
KToKLSAgICAgICAgICAgICAgICBzZWxmLl9kb19lY2hvKHJlcXVlc3QsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZWxmLmNoYW5uZWxfZXZlbnRzW3JlcXVlc3QuY2hhbm5lbF9pZF0p
Ci0gICAgICAgICAgICBlbGlmIHJlcXVlc3QudXJpLmVuZHN3aXRoKCdwaW5nJyk6Ci0gICAgICAg
ICAgICAgICAgc2VsZi5fZG9fcGluZyhyZXF1ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZi5jaGFubmVsX2V2ZW50c1tyZXF1ZXN0LmNoYW5uZWxfaWRdKQotICAgICAgICAg
ICAgZWxpZiByZXF1ZXN0LnVyaS5lbmRzd2l0aCgndHdvX3Bpbmdfd2hpbGVfaGVsbG9fd29ybGQn
KToKLSAgICAgICAgICAgICAgICBzZWxmLl9kb190d29fcGluZ193aGlsZV9oZWxsb193b3JsZCgK
LSAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCwgc2VsZi5jaGFubmVsX2V2ZW50c1tyZXF1ZXN0
LmNoYW5uZWxfaWRdKQotICAgICAgICAgICAgZWxpZiByZXF1ZXN0LnVyaS5lbmRzd2l0aCgncGlu
Z193aGlsZV9oZWxsb193b3JsZCcpOgotICAgICAgICAgICAgICAgIHNlbGYuX2RvX3Bpbmdfd2hp
bGVfaGVsbG9fd29ybGQoCi0gICAgICAgICAgICAgICAgICAgIHJlcXVlc3QsIHNlbGYuY2hhbm5l
bF9ldmVudHNbcmVxdWVzdC5jaGFubmVsX2lkXSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignQ2Fubm90IGhhbmRsZSBwYXRoICVyJyAlIHJlcXVl
c3QucGF0aCkKLSAgICAgICAgICAgIGlmIG5vdCByZXF1ZXN0LnNlcnZlcl90ZXJtaW5hdGVkOgot
ICAgICAgICAgICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oKQotICAg
ICAgICBleGNlcHQgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24sIGU6Ci0gICAgICAgICAg
ICBzZWxmLmNoYW5uZWxfZXZlbnRzW3JlcXVlc3QuY2hhbm5lbF9pZF0uZXhjZXB0aW9uID0gZQot
ICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgc2VsZi5jaGFubmVsX2V2
ZW50c1tyZXF1ZXN0LmNoYW5uZWxfaWRdLmV4Y2VwdGlvbiA9IGUKLSAgICAgICAgICAgIHJhaXNl
Ci0KLQotZGVmIF9jcmVhdGVfbW9ja19yZXF1ZXN0KGNvbm5lY3Rpb249Tm9uZSwgbG9naWNhbF9j
aGFubmVsX2V4dGVuc2lvbnM9Tm9uZSk6Ci0gICAgaWYgY29ubmVjdGlvbiBpcyBOb25lOgotICAg
ICAgICBjb25uZWN0aW9uID0gX01vY2tNdXhDb25uZWN0aW9uKCkKLQotICAgIHJlcXVlc3QgPSBt
b2NrLk1vY2tSZXF1ZXN0KHVyaT0nL2VjaG8nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGhlYWRlcnNfaW49X1RFU1RfSEVBREVSUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25uZWN0aW9uPWNvbm5lY3Rpb24pCi0gICAgcmVxdWVzdC53c19zdHJlYW0gPSBTdHJl
YW0ocmVxdWVzdCwgb3B0aW9ucz1TdHJlYW1PcHRpb25zKCkpCi0gICAgcmVxdWVzdC5tdXhfcHJv
Y2Vzc29yID0gTXV4RXh0ZW5zaW9uUHJvY2Vzc29yKAotICAgICAgICBjb21tb24uRXh0ZW5zaW9u
UGFyYW1ldGVyKGNvbW1vbi5NVVhfRVhURU5TSU9OKSkKLSAgICBpZiBsb2dpY2FsX2NoYW5uZWxf
ZXh0ZW5zaW9ucyBpcyBub3QgTm9uZToKLSAgICAgICAgcmVxdWVzdC5tdXhfcHJvY2Vzc29yLnNl
dF9leHRlbnNpb25zKGxvZ2ljYWxfY2hhbm5lbF9leHRlbnNpb25zKQotICAgIHJlcXVlc3QubXV4
X3Byb2Nlc3Nvci5zZXRfcXVvdGEoOCAqIDEwMjQpCi0gICAgcmV0dXJuIHJlcXVlc3QKLQotCi1k
ZWYgX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKGNoYW5uZWxfaWQsIGVuY29kaW5n
LCBlbmNvZGVkX2hhbmRzaGFrZSk6Ci0gICAgIyBBbGxvdyBpbnZhbGlkIGVuY29kaW5nIGZvciB0
ZXN0aW5nLgotICAgIGZpcnN0X2J5dGUgPSAoKG11eC5fTVVYX09QQ09ERV9BRERfQ0hBTk5FTF9S
RVFVRVNUIDw8IDUpIHwgZW5jb2RpbmcpCi0gICAgcGF5bG9hZCA9IChjaHIoZmlyc3RfYnl0ZSkg
KwotICAgICAgICAgICAgICAgbXV4Ll9lbmNvZGVfY2hhbm5lbF9pZChjaGFubmVsX2lkKSArCi0g
ICAgICAgICAgICAgICBtdXguX2VuY29kZV9udW1iZXIobGVuKGVuY29kZWRfaGFuZHNoYWtlKSkg
KwotICAgICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgcmV0dXJuIGNyZWF0ZV9i
aW5hcnlfZnJhbWUoCi0gICAgICAgIChtdXguX2VuY29kZV9jaGFubmVsX2lkKG11eC5fQ09OVFJP
TF9DSEFOTkVMX0lEKSArIHBheWxvYWQpLCBtYXNrPVRydWUpCi0KLQotZGVmIF9jcmVhdGVfZHJv
cF9jaGFubmVsX2ZyYW1lKGNoYW5uZWxfaWQsIGNvZGU9Tm9uZSwgbWVzc2FnZT0nJyk6Ci0gICAg
cGF5bG9hZCA9IG11eC5fY3JlYXRlX2Ryb3BfY2hhbm5lbChjaGFubmVsX2lkLCBjb2RlLCBtZXNz
YWdlKQotICAgIHJldHVybiBjcmVhdGVfYmluYXJ5X2ZyYW1lKAotICAgICAgICAobXV4Ll9lbmNv
ZGVfY2hhbm5lbF9pZChtdXguX0NPTlRST0xfQ0hBTk5FTF9JRCkgKyBwYXlsb2FkKSwgbWFzaz1U
cnVlKQotCi0KLWRlZiBfY3JlYXRlX2Zsb3dfY29udHJvbF9mcmFtZShjaGFubmVsX2lkLCByZXBs
ZW5pc2hlZF9xdW90YSk6Ci0gICAgcGF5bG9hZCA9IG11eC5fY3JlYXRlX2Zsb3dfY29udHJvbChj
aGFubmVsX2lkLCByZXBsZW5pc2hlZF9xdW90YSkKLSAgICByZXR1cm4gY3JlYXRlX2JpbmFyeV9m
cmFtZSgKLSAgICAgICAgKG11eC5fZW5jb2RlX2NoYW5uZWxfaWQobXV4Ll9DT05UUk9MX0NIQU5O
RUxfSUQpICsgcGF5bG9hZCksIG1hc2s9VHJ1ZSkKLQotCi1kZWYgX2NyZWF0ZV9sb2dpY2FsX2Zy
YW1lKGNoYW5uZWxfaWQsIG1lc3NhZ2UsIG9wY29kZT1jb21tb24uT1BDT0RFX0JJTkFSWSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgZmluPVRydWUsIHJzdjE9RmFsc2UsIHJzdjI9RmFsc2Us
IHJzdjM9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1hc2s9VHJ1ZSk6Ci0gICAg
Yml0cyA9IGNocigoZmluIDw8IDcpIHwgKHJzdjEgPDwgNikgfCAocnN2MiA8PCA1KSB8IChyc3Yz
IDw8IDQpIHwgb3Bjb2RlKQotICAgIHBheWxvYWQgPSBtdXguX2VuY29kZV9jaGFubmVsX2lkKGNo
YW5uZWxfaWQpICsgYml0cyArIG1lc3NhZ2UKLSAgICByZXR1cm4gY3JlYXRlX2JpbmFyeV9mcmFt
ZShwYXlsb2FkLCBtYXNrPVRydWUpCi0KLQotZGVmIF9jcmVhdGVfcmVxdWVzdF9oZWFkZXIocGF0
aD0nL2VjaG8nLCBleHRlbnNpb25zPU5vbmUpOgotICAgIGhlYWRlcnMgPSAoCi0gICAgICAgICdH
RVQgJXMgSFRUUC8xLjFcclxuJwotICAgICAgICAnSG9zdDogc2VydmVyLmV4YW1wbGUuY29tXHJc
bicKLSAgICAgICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJwotICAgICAgICAnT3JpZ2luOiBo
dHRwOi8vZXhhbXBsZS5jb21cclxuJykgJSBwYXRoCi0gICAgaWYgZXh0ZW5zaW9uczoKLSAgICAg
ICAgaGVhZGVycyArPSAnJXM6ICVzJyAlICgKLSAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VCU09D
S0VUX0VYVEVOU0lPTlNfSEVBREVSLCBleHRlbnNpb25zKQotICAgIHJldHVybiBoZWFkZXJzCi0K
LQotY2xhc3MgTXV4VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiQSB1bml0dGVzdCBm
b3IgbXV4IG1vZHVsZS4iIiIKLQotICAgIGRlZiB0ZXN0X2NoYW5uZWxfaWRfZGVjb2RlKHNlbGYp
OgotICAgICAgICBkYXRhID0gJ1x4MDBceDAxXHhiZlx4ZmZceGRmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmJwotICAgICAgICBwYXJzZXIgPSBtdXguX011eEZyYW1lUGF5bG9hZFBhcnNlcihkYXRh
KQotICAgICAgICBjaGFubmVsX2lkID0gcGFyc2VyLnJlYWRfY2hhbm5lbF9pZCgpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoMCwgY2hhbm5lbF9pZCkKLSAgICAgICAgY2hhbm5lbF9pZCA9IHBh
cnNlci5yZWFkX2NoYW5uZWxfaWQoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGNoYW5u
ZWxfaWQpCi0gICAgICAgIGNoYW5uZWxfaWQgPSBwYXJzZXIucmVhZF9jaGFubmVsX2lkKCkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyICoqIDE0IC0gMSwgY2hhbm5lbF9pZCkKLSAgICAgICAg
Y2hhbm5lbF9pZCA9IHBhcnNlci5yZWFkX2NoYW5uZWxfaWQoKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKDIgKiogMjEgLSAxLCBjaGFubmVsX2lkKQotICAgICAgICBjaGFubmVsX2lkID0gcGFy
c2VyLnJlYWRfY2hhbm5lbF9pZCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiAqKiAyOSAt
IDEsIGNoYW5uZWxfaWQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRhdGEpLCBwYXJz
ZXIuX3JlYWRfcG9zaXRpb24pCi0KLSAgICBkZWYgdGVzdF9jaGFubmVsX2lkX2VuY29kZShzZWxm
KToKLSAgICAgICAgZW5jb2RlZCA9IG11eC5fZW5jb2RlX2NoYW5uZWxfaWQoMCkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgnXHgwMCcsIGVuY29kZWQpCi0gICAgICAgIGVuY29kZWQgPSBtdXgu
X2VuY29kZV9jaGFubmVsX2lkKDIgKiogMTQgLSAxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCdceGJmXHhmZicsIGVuY29kZWQpCi0gICAgICAgIGVuY29kZWQgPSBtdXguX2VuY29kZV9jaGFu
bmVsX2lkKDIgKiogMTQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4YzBAXHgwMCcsIGVu
Y29kZWQpCi0gICAgICAgIGVuY29kZWQgPSBtdXguX2VuY29kZV9jaGFubmVsX2lkKDIgKiogMjEg
LSAxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceGRmXHhmZlx4ZmYnLCBlbmNvZGVkKQot
ICAgICAgICBlbmNvZGVkID0gbXV4Ll9lbmNvZGVfY2hhbm5lbF9pZCgyICoqIDIxKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdceGUwIFx4MDBceDAwJywgZW5jb2RlZCkKLSAgICAgICAgZW5j
b2RlZCA9IG11eC5fZW5jb2RlX2NoYW5uZWxfaWQoMiAqKiAyOSAtIDEpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJ1x4ZmZceGZmXHhmZlx4ZmYnLCBlbmNvZGVkKQotICAgICAgICAjIGNoYW5u
ZWxfaWQgaXMgdG9vIGxhcmdlCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3Is
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5fZW5jb2RlX2NoYW5uZWxfaWQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgIDIgKiogMjkpCi0KLSAgICBkZWYgdGVzdF9yZWFkX211bHRp
cGxlX2NvbnRyb2xfYmxvY2tzKHNlbGYpOgotICAgICAgICAjIFVzZSBBZGRDaGFubmVsUmVxdWVz
dCBiZWNhdXNlIGl0IGNhbiBjb250YWluIGFyYml0cmFyeSBsZW5ndGggb2YgZGF0YQotICAgICAg
ICBkYXRhID0gKCdceDAwXHgwMVx4MDFhJwotICAgICAgICAgICAgICAgICdceDAwXHgwMlx4N2Ql
cycKLSAgICAgICAgICAgICAgICAnXHgwMFx4MDNceDdlXHhmZlx4ZmYlcycKLSAgICAgICAgICAg
ICAgICAnXHgwMFx4MDRceDdmXHgwMFx4MDBceDAwXHgwMFx4MDBceDAxXHgwMFx4MDAlcycpICUg
KAotICAgICAgICAgICAgJ2EnICogMHg3ZCwgJ2InICogMHhmZmZmLCAnYycgKiAweDEwMDAwKQot
ICAgICAgICBwYXJzZXIgPSBtdXguX011eEZyYW1lUGF5bG9hZFBhcnNlcihkYXRhKQotICAgICAg
ICBibG9ja3MgPSBsaXN0KHBhcnNlci5yZWFkX2NvbnRyb2xfYmxvY2tzKCkpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoNCwgbGVuKGJsb2NrcykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChtdXguX01VWF9PUENPREVfQUREX0NIQU5ORUxfUkVRVUVTVCwgYmxvY2tzWzBdLm9wY29kZSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBibG9ja3NbMF0uY2hhbm5lbF9pZCkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oYmxvY2tzWzBdLmVuY29kZWRfaGFuZHNoYWtlKSkK
LQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG11eC5fTVVYX09QQ09ERV9BRERfQ0hBTk5FTF9S
RVFVRVNULCBibG9ja3NbMV0ub3Bjb2RlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGJs
b2Nrc1sxXS5jaGFubmVsX2lkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDB4N2QsIGxlbihi
bG9ja3NbMV0uZW5jb2RlZF9oYW5kc2hha2UpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bXV4Ll9NVVhfT1BDT0RFX0FERF9DSEFOTkVMX1JFUVVFU1QsIGJsb2Nrc1syXS5vcGNvZGUpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMywgYmxvY2tzWzJdLmNoYW5uZWxfaWQpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoMHhmZmZmLCBsZW4oYmxvY2tzWzJdLmVuY29kZWRfaGFuZHNoYWtl
KSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG11eC5fTVVYX09QQ09ERV9BRERfQ0hBTk5F
TF9SRVFVRVNULCBibG9ja3NbM10ub3Bjb2RlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDQs
IGJsb2Nrc1szXS5jaGFubmVsX2lkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDB4MTAwMDAs
IGxlbihibG9ja3NbM10uZW5jb2RlZF9oYW5kc2hha2UpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwobGVuKGRhdGEpLCBwYXJzZXIuX3JlYWRfcG9zaXRpb24pCi0KLSAgICBkZWYgdGVzdF9y
ZWFkX2FkZF9jaGFubmVsX3JlcXVlc3Qoc2VsZik6Ci0gICAgICAgIGRhdGEgPSAnXHgwMFx4MDFc
eDAxYScKLSAgICAgICAgcGFyc2VyID0gbXV4Ll9NdXhGcmFtZVBheWxvYWRQYXJzZXIoZGF0YSkK
LSAgICAgICAgYmxvY2tzID0gbGlzdChwYXJzZXIucmVhZF9jb250cm9sX2Jsb2NrcygpKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKG11eC5fTVVYX09QQ09ERV9BRERfQ0hBTk5FTF9SRVFVRVNU
LCBibG9ja3NbMF0ub3Bjb2RlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGJsb2Nrc1sw
XS5jaGFubmVsX2lkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihibG9ja3NbMF0u
ZW5jb2RlZF9oYW5kc2hha2UpKQotCi0gICAgZGVmIHRlc3RfcmVhZF9kcm9wX2NoYW5uZWwoc2Vs
Zik6Ci0gICAgICAgIGRhdGEgPSAnXHg2MFx4MDFceDAwJwotICAgICAgICBwYXJzZXIgPSBtdXgu
X011eEZyYW1lUGF5bG9hZFBhcnNlcihkYXRhKQotICAgICAgICBibG9ja3MgPSBsaXN0KHBhcnNl
ci5yZWFkX2NvbnRyb2xfYmxvY2tzKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVu
KGJsb2NrcykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgYmxvY2tzWzBdLmNoYW5uZWxf
aWQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXV4Ll9NVVhfT1BDT0RFX0RST1BfQ0hBTk5F
TCwgYmxvY2tzWzBdLm9wY29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBibG9j
a3NbMF0uZHJvcF9jb2RlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGxlbihibG9ja3Nb
MF0uZHJvcF9tZXNzYWdlKSkKLQotICAgICAgICBkYXRhID0gJ1x4NjBceDAyXHgwOVx4MDNceGU4
U3VjY2VzcycKLSAgICAgICAgcGFyc2VyID0gbXV4Ll9NdXhGcmFtZVBheWxvYWRQYXJzZXIoZGF0
YSkKLSAgICAgICAgYmxvY2tzID0gbGlzdChwYXJzZXIucmVhZF9jb250cm9sX2Jsb2NrcygpKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihibG9ja3MpKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKDIsIGJsb2Nrc1swXS5jaGFubmVsX2lkKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKG11eC5fTVVYX09QQ09ERV9EUk9QX0NIQU5ORUwsIGJsb2Nrc1swXS5vcGNvZGUpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTAwMCwgYmxvY2tzWzBdLmRyb3BfY29kZSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgnU3VjY2VzcycsIGJsb2Nrc1swXS5kcm9wX21lc3NhZ2UpCi0KLSAg
ICAgICAgIyBSZWFzb24gaXMgdG9vIHNob3J0LgotICAgICAgICBkYXRhID0gJ1x4NjBceDAxXHgw
MVx4MDAnCi0gICAgICAgIHBhcnNlciA9IG11eC5fTXV4RnJhbWVQYXlsb2FkUGFyc2VyKGRhdGEp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG11eC5QaHlzaWNhbENvbm5lY3Rpb25FcnJvciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhOiBsaXN0KHBhcnNlci5yZWFkX2NvbnRy
b2xfYmxvY2tzKCkpKQotCi0gICAgZGVmIHRlc3RfcmVhZF9mbG93X2NvbnRyb2woc2VsZik6Ci0g
ICAgICAgIGRhdGEgPSAnXHg0MFx4MDFceDAyJwotICAgICAgICBwYXJzZXIgPSBtdXguX011eEZy
YW1lUGF5bG9hZFBhcnNlcihkYXRhKQotICAgICAgICBibG9ja3MgPSBsaXN0KHBhcnNlci5yZWFk
X2NvbnRyb2xfYmxvY2tzKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGJsb2Nr
cykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgYmxvY2tzWzBdLmNoYW5uZWxfaWQpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXV4Ll9NVVhfT1BDT0RFX0ZMT1dfQ09OVFJPTCwgYmxv
Y2tzWzBdLm9wY29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBibG9ja3NbMF0uc2Vu
ZF9xdW90YSkKLQotICAgIGRlZiB0ZXN0X3JlYWRfbmV3X2NoYW5uZWxfc2xvdChzZWxmKToKLSAg
ICAgICAgZGF0YSA9ICdceDgwXHgwMVx4MDJceDAyXHgwMycKLSAgICAgICAgcGFyc2VyID0gbXV4
Ll9NdXhGcmFtZVBheWxvYWRQYXJzZXIoZGF0YSkKLSAgICAgICAgIyBUT0RPKGJhc2hpKTogSW1w
bGVtZW50Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG11eC5QaHlzaWNhbENvbm5lY3Rpb25F
cnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhOiBsaXN0KHBhcnNlci5yZWFk
X2NvbnRyb2xfYmxvY2tzKCkpKQotCi0gICAgZGVmIHRlc3RfcmVhZF9pbnZhbGlkX251bWJlcl9m
aWVsZF9pbl9jb250cm9sX2Jsb2NrKHNlbGYpOgotICAgICAgICAjIE5vIG51bWJlciBmaWVsZC4K
LSAgICAgICAgZGF0YSA9ICcnCi0gICAgICAgIHBhcnNlciA9IG11eC5fTXV4RnJhbWVQYXlsb2Fk
UGFyc2VyKGRhdGEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHBhcnNl
ci5fcmVhZF9udW1iZXIpCi0KLSAgICAgICAgIyBUaGUgbGFzdCB0d28gYnl0ZXMgYXJlIG1pc3Np
bmcuCi0gICAgICAgIGRhdGEgPSAnXHg3ZScKLSAgICAgICAgcGFyc2VyID0gbXV4Ll9NdXhGcmFt
ZVBheWxvYWRQYXJzZXIoZGF0YSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJv
ciwgcGFyc2VyLl9yZWFkX251bWJlcikKLQotICAgICAgICAjIE1pc3NpbmcgdGhlIGxhc3Qgb25l
IGJ5dGUuCi0gICAgICAgIGRhdGEgPSAnXHg3Zlx4MDBceDAwXHgwMFx4MDBceDAwXHgwMVx4MDAn
Ci0gICAgICAgIHBhcnNlciA9IG11eC5fTXV4RnJhbWVQYXlsb2FkUGFyc2VyKGRhdGEpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHBhcnNlci5fcmVhZF9udW1iZXIpCi0K
LSAgICAgICAgIyBUaGUgbGVuZ3RoIG9mIG51bWJlciBmaWVsZCBpcyB0b28gbGFyZ2UuCi0gICAg
ICAgIGRhdGEgPSAnXHg3Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmJwotICAgICAg
ICBwYXJzZXIgPSBtdXguX011eEZyYW1lUGF5bG9hZFBhcnNlcihkYXRhKQotICAgICAgICBzZWxm
LmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwYXJzZXIuX3JlYWRfbnVtYmVyKQotCi0gICAgICAg
ICMgVGhlIG1zYiBvZiB0aGUgZmlyc3QgYnl0ZSBpcyBzZXQuCi0gICAgICAgIGRhdGEgPSAnXHg4
MCcKLSAgICAgICAgcGFyc2VyID0gbXV4Ll9NdXhGcmFtZVBheWxvYWRQYXJzZXIoZGF0YSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcGFyc2VyLl9yZWFkX251bWJlcikK
LQotICAgICAgICAjIFVzaW5nIDMgYnl0ZXMgZW5jb2RpbmcgZm9yIDEyNS4KLSAgICAgICAgZGF0
YSA9ICdceDdlXHgwMFx4N2QnCi0gICAgICAgIHBhcnNlciA9IG11eC5fTXV4RnJhbWVQYXlsb2Fk
UGFyc2VyKGRhdGEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHBhcnNl
ci5fcmVhZF9udW1iZXIpCi0KLSAgICAgICAgIyBVc2luZyA5IGJ5dGVzIGVuY29kaW5nIGZvciAw
eGZmZmYKLSAgICAgICAgZGF0YSA9ICdceDdmXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHhmZlx4
ZmYnCi0gICAgICAgIHBhcnNlciA9IG11eC5fTXV4RnJhbWVQYXlsb2FkUGFyc2VyKGRhdGEpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHBhcnNlci5fcmVhZF9udW1iZXIp
Ci0KLSAgICBkZWYgdGVzdF9yZWFkX2ludmFsaWRfc2l6ZV9hbmRfY29udGVudHMoc2VsZik6Ci0g
ICAgICAgICMgT25seSBjb250YWluIG51bWJlciBmaWVsZC4KLSAgICAgICAgZGF0YSA9ICdceDAx
JwotICAgICAgICBwYXJzZXIgPSBtdXguX011eEZyYW1lUGF5bG9hZFBhcnNlcihkYXRhKQotICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcyhtdXguUGh5c2ljYWxDb25uZWN0aW9uRXJyb3IsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci5fcmVhZF9zaXplX2FuZF9jb250ZW50cykKLQot
ICAgIGRlZiB0ZXN0X2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXNwb25zZShzZWxmKToKLSAgICAgICAg
ZGF0YSA9IG11eC5fY3JlYXRlX2FkZF9jaGFubmVsX3Jlc3BvbnNlKGNoYW5uZWxfaWQ9MSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZWRfaGFu
ZHNoYWtlPSdGb29CYXInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlamVjdGVkPUZhbHNlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdc
eDIwXHgwMVx4MDZGb29CYXInLCBkYXRhKQotCi0gICAgICAgIGRhdGEgPSBtdXguX2NyZWF0ZV9h
ZGRfY2hhbm5lbF9yZXNwb25zZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT0nSGVsbG8nLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9MSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdGVk
PVRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4MzFceDAyXHgwNUhlbGxvJywgZGF0
YSkKLQotICAgIGRlZiB0ZXN0X2NyZWF0ZV9kcm9wX2NoYW5uZWwoc2VsZik6Ci0gICAgICAgIGRh
dGEgPSBtdXguX2NyZWF0ZV9kcm9wX2NoYW5uZWwoY2hhbm5lbF9pZD0xKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCdceDYwXHgwMVx4MDAnLCBkYXRhKQotCi0gICAgICAgIGRhdGEgPSBtdXgu
X2NyZWF0ZV9kcm9wX2NoYW5uZWwoY2hhbm5lbF9pZD0xLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvZGU9MjAwMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtZXNzYWdlPSdlcnJvcicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
J1x4NjBceDAxXHgwN1x4MDdceGQwZXJyb3InLCBkYXRhKQotCi0gICAgICAgICMgcmVhc29uIG11
c3QgYmUgZW1wdHkgaWYgY29kZSBpcyBOb25lCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZh
bHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5fY3JlYXRlX2Ryb3BfY2hh
bm5lbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgTm9uZSwgJ0Zvb0JhcicpCi0KLSAg
ICBkZWYgdGVzdF9wYXJzZV9yZXF1ZXN0X3RleHQoc2VsZik6Ci0gICAgICAgIHJlcXVlc3RfdGV4
dCA9IF9jcmVhdGVfcmVxdWVzdF9oZWFkZXIoKQotICAgICAgICBjb21tYW5kLCBwYXRoLCB2ZXJz
aW9uLCBoZWFkZXJzID0gbXV4Ll9wYXJzZV9yZXF1ZXN0X3RleHQocmVxdWVzdF90ZXh0KQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKCdHRVQnLCBjb21tYW5kKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCcvZWNobycsIHBhdGgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hUVFAvMS4x
JywgdmVyc2lvbikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgzLCBsZW4oaGVhZGVycykpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3NlcnZlci5leGFtcGxlLmNvbScsIGhlYWRlcnNbJ0hv
c3QnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaHR0cDovL2V4YW1wbGUuY29tJywgaGVh
ZGVyc1snT3JpZ2luJ10pCi0KLQotY2xhc3MgTXV4SGFuZGxlclRlc3QodW5pdHRlc3QuVGVzdENh
c2UpOgotCi0gICAgZGVmIHRlc3RfYWRkX2NoYW5uZWwoc2VsZik6Ci0gICAgICAgIHJlcXVlc3Qg
PSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAgIGRpc3BhdGNoZXIgPSBfTXV4TW9ja0Rp
c3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4SGFuZGxlcihyZXF1ZXN0
LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0gICAgICAgIG11eF9o
YW5kbGVyLmFkZF9jaGFubmVsX3Nsb3RzKG11eC5fSU5JVElBTF9OVU1CRVJfT0ZfQ0hBTk5FTF9T
TE9UUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV4Ll9JTklUSUFM
X1FVT1RBX0ZPUl9DTElFTlQpCi0KLSAgICAgICAgZW5jb2RlZF9oYW5kc2hha2UgPSBfY3JlYXRl
X3JlcXVlc3RfaGVhZGVyKHBhdGg9Jy9lY2hvJykKLSAgICAgICAgYWRkX2NoYW5uZWxfcmVxdWVz
dCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAgICAgICAgICAgIGNoYW5u
ZWxfaWQ9MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVuY29kZWRfaGFuZHNoYWtlPWVuY29k
ZWRfaGFuZHNoYWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGFkZF9j
aGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgZmxvd19jb250cm9sID0gX2NyZWF0ZV9mbG93X2Nv
bnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90YT02KQotICAgICAgICByZXF1ZXN0
LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJvbCkKLQotICAgICAgICBlbmNvZGVkX2hh
bmRzaGFrZSA9IF9jcmVhdGVfcmVxdWVzdF9oZWFkZXIocGF0aD0nL2VjaG8nKQotICAgICAgICBh
ZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAot
ICAgICAgICAgICAgY2hhbm5lbF9pZD0zLCBlbmNvZGluZz0wLAotICAgICAgICAgICAgZW5jb2Rl
ZF9oYW5kc2hha2U9ZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlv
bi5wdXRfYnl0ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkKLQotICAgICAgICBmbG93X2NvbnRyb2wg
PSBfY3JlYXRlX2Zsb3dfY29udHJvbF9mcmFtZShjaGFubmVsX2lkPTMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTYp
Ci0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0g
ICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRl
X2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPSdIZWxsbycpKQotICAgICAgICBy
ZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2Fs
X2ZyYW1lKGNoYW5uZWxfaWQ9MywgbWVzc2FnZT0nV29ybGQnKSkKLSAgICAgICAgcmVxdWVzdC5j
b25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShj
aGFubmVsX2lkPTEsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0
aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVs
X2lkPTIsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1
dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTMs
IG1lc3NhZ2U9J0dvb2RieWUnKSkKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRs
ZXIud2FpdF91bnRpbF9kb25lKHRpbWVvdXQ9MikpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChbXSwgZGlzcGF0Y2hlci5jaGFubmVsX2V2ZW50c1sxXS5tZXNzYWdlcykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChbJ0hlbGxvJ10sIGRpc3BhdGNoZXIuY2hhbm5lbF9ldmVudHNbMl0ubWVz
c2FnZXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydXb3JsZCddLCBkaXNwYXRjaGVyLmNo
YW5uZWxfZXZlbnRzWzNdLm1lc3NhZ2VzKQotICAgICAgICAjIENoYW5uZWwgMgotICAgICAgICBt
ZXNzYWdlcyA9IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9tZXNzYWdlcygyKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihtZXNzYWdlcykpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJ0hlbGxvJywgbWVzc2FnZXNbMF0pCi0gICAgICAgICMgQ2hhbm5lbCAzCi0gICAg
ICAgIG1lc3NhZ2VzID0gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX21lc3NhZ2VzKDMp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKG1lc3NhZ2VzKSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgnV29ybGQnLCBtZXNzYWdlc1swXSkKLSAgICAgICAgY29udHJvbF9ibG9j
a3MgPSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29udHJvbF9ibG9ja3MoKQotICAg
ICAgICAjIFRoZXJlIHNob3VsZCBiZSA4IGNvbnRyb2wgYmxvY2tzOgotICAgICAgICAjICAgLSAx
IE5ld0NoYW5uZWxTbG90Ci0gICAgICAgICMgICAtIDIgQWRkQ2hhbm5lbFJlc3BvbnNlcyBmb3Ig
Y2hhbm5lbCBpZCAyIGFuZCAzCi0gICAgICAgICMgICAtIDYgRmxvd0NvbnRyb2xzIGZvciBjaGFu
bmVsIGlkIDEgKGluaXRpYWxpemUpLCAnSGVsbG8nLCAnV29ybGQnLAotICAgICAgICAjICAgICBh
bmQgMyAnR29vZGJ5ZSdzCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoOSwgbGVuKGNvbnRyb2xf
YmxvY2tzKSkKLQotICAgIGRlZiB0ZXN0X3BoeXNpY2FsX2Nvbm5lY3Rpb25fd3JpdGVfZmFpbHVy
ZShzZWxmKToKLSAgICAgICAgIyBVc2UgX0ZhaWxPbldyaXRlQ29ubmVjdGlvbi4KLSAgICAgICAg
cmVxdWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KGNvbm5lY3Rpb249X0ZhaWxPbldyaXRlQ29u
bmVjdGlvbigpKQotCi0gICAgICAgIGRpc3BhdGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQot
ICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVy
KQotICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0KLSAgICAgICAgIyBMZXQgdGhlIHdvcmtl
ciBlY2hvIGJhY2sgJ0hlbGxvJy4gSXQgY2F1c2VzIF9GYWlsT25Xcml0ZUNvbm5lY3Rpb24KLSAg
ICAgICAgIyByYWlzaW5nIGFuIGV4Y2VwdGlvbi4KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9u
LnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lk
PTEsIG1lc3NhZ2U9J0hlbGxvJykpCi0KLSAgICAgICAgIyBMZXQgdGhlIHdvcmtlciBleGl0LiBU
aGlzIHdpbGwgYmUgdW5uZWNlc3Nhcnkgd2hlbgotICAgICAgICAjIF9Mb2dpY2FsQ29ubmVjdGlv
bi53cml0ZSgpIGlzIGNoYW5nZWQgdG8gdGhyb3cgYW4gZXhjZXB0aW9uIGlmCi0gICAgICAgICMg
d29rZSB1cCBieSBvbl93cml0ZXJfZG9uZS4KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1
dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTEs
IG1lc3NhZ2U9J0dvb2RieWUnKSkKLQotICAgICAgICAjIEFsbCB0aHJlYWRzIHNob3VsZCBiZSBk
b25lLgotICAgICAgICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25l
KHRpbWVvdXQ9MikpCi0KLSAgICBkZWYgdGVzdF9zZW5kX2Jsb2NrZWQoc2VsZik6Ci0gICAgICAg
IHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAgIGRpc3BhdGNoZXIgPSBf
TXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4SGFuZGxl
cihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0KLSAg
ICAgICAgbXV4X2hhbmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05VTUJFUl9P
Rl9DSEFOTkVMX1NMT1RTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
dXguX0lOSVRJQUxfUVVPVEFfRk9SX0NMSUVOVCkKLQotICAgICAgICBlbmNvZGVkX2hhbmRzaGFr
ZSA9IF9jcmVhdGVfcmVxdWVzdF9oZWFkZXIocGF0aD0nL2VjaG8nKQotICAgICAgICBhZGRfY2hh
bm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAg
ICAgICAgY2hhbm5lbF9pZD0yLCBlbmNvZGluZz0wLAotICAgICAgICAgICAgZW5jb2RlZF9oYW5k
c2hha2U9ZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRf
Ynl0ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkKLQotICAgICAgICAjIE9uIHJlY2VpdmluZyB0aGlz
ICdIZWxsbycsIHRoZSBzZXJ2ZXIgdHJpZXMgdG8gZWNobyBiYWNrICdIZWxsbycsCi0gICAgICAg
ICMgYnV0IGl0IHdpbGwgYmUgYmxvY2tlZCBzaW5jZSB0aGVyZSdzIG5vIHNlbmQgcXVvdGEgYXZh
aWxhYmxlIGZvciB0aGUKLSAgICAgICAgIyBjaGFubmVsIDIuCi0gICAgICAgIHJlcXVlc3QuY29u
bmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hh
bm5lbF9pZD0yLCBtZXNzYWdlPSdIZWxsbycpKQotCi0gICAgICAgICMgV2FpdCB1bnRpbCB0aGUg
d29ya2VyIGlzIGJsb2NrZWQgZHVlIHRvIHNlbmQgcXVvdGEgc2hvcnRhZ2UuCi0gICAgICAgIHRp
bWUuc2xlZXAoMSkKLQotICAgICAgICAjIENsb3NlIHRoZSBjaGFubmVsIDIuIFRoZSB3b3JrZXIg
c2hvdWxkIGJlIG5vdGlmaWVkIG9mIHRoZSBlbmQgb2YKLSAgICAgICAgIyB3cml0ZXIgdGhyZWFk
IGFuZCBzdG9wIHdhaXRpbmcgZm9yIHNlbmQgcXVvdGEgdG8gYmUgcmVwbGVuaXNoZWQuCi0gICAg
ICAgIGRyb3BfY2hhbm5lbCA9IF9jcmVhdGVfZHJvcF9jaGFubmVsX2ZyYW1lKGNoYW5uZWxfaWQ9
MikKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGRyb3BfY2hhbm5lbCkK
LQotICAgICAgICAjIE1ha2Ugc3VyZSB0aGUgY2hhbm5lbCAxIGlzIGFsc28gY2xvc2VkLgotICAg
ICAgICBkcm9wX2NoYW5uZWwgPSBfY3JlYXRlX2Ryb3BfY2hhbm5lbF9mcmFtZShjaGFubmVsX2lk
PTEpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZHJvcF9jaGFubmVsKQot
Ci0gICAgICAgICMgQWxsIHRocmVhZHMgc2hvdWxkIGJlIGRvbmUuCi0gICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgIGRl
ZiB0ZXN0X2FkZF9jaGFubmVsX2RlbHRhX2VuY29kaW5nKHNlbGYpOgotICAgICAgICByZXF1ZXN0
ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tE
aXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVz
dCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBtdXhf
aGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxf
U0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5fSU5JVElB
TF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0gICAgICAgIGRlbHRhID0gJ0dFVCAvZWNobyBIVFRQLzEu
MVxyXG5cclxuJwotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hh
bm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5lbF9pZD0yLCBlbmNvZGluZz0x
LCBlbmNvZGVkX2hhbmRzaGFrZT1kZWx0YSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1
dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9j
cmVhdGVfZmxvd19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9NikKLSAg
ICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAg
ICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9n
aWNhbF9mcmFtZShjaGFubmVsX2lkPTIsIG1lc3NhZ2U9J0hlbGxvJykpCi0gICAgICAgIHJlcXVl
c3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJh
bWUoY2hhbm5lbF9pZD0xLCBtZXNzYWdlPSdHb29kYnllJykpCi0gICAgICAgIHJlcXVlc3QuY29u
bmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hh
bm5lbF9pZD0yLCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoWydIZWxsbyddLCBkaXNwYXRjaGVyLmNoYW5uZWxfZXZlbnRzWzJdLm1lc3Nh
Z2VzKQotICAgICAgICBtZXNzYWdlcyA9IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9t
ZXNzYWdlcygyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihtZXNzYWdlcykpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvJywgbWVzc2FnZXNbMF0pCi0KLSAgICBkZWYg
dGVzdF9hZGRfY2hhbm5lbF9kZWx0YV9lbmNvZGluZ19vdmVycmlkZShzZWxmKToKLSAgICAgICAg
cmVxdWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9N
dXhNb2NrRGlzcGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVy
KHJlcXVlc3QsIGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAgICAg
ICAgbXV4X2hhbmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05VTUJFUl9PRl9D
SEFOTkVMX1NMT1RTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXgu
X0lOSVRJQUxfUVVPVEFfRk9SX0NMSUVOVCkKLQotICAgICAgICAjIE92ZXJyaWRlIFNlYy1XZWJT
b2NrZXQtUHJvdG9jb2wuCi0gICAgICAgIGRlbHRhID0gKCdHRVQgL2VjaG8gSFRUUC8xLjFcclxu
JwotICAgICAgICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1Qcm90b2NvbDogeC1mb29cclxuJwot
ICAgICAgICAgICAgICAgICAnXHJcbicpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBf
Y3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lk
PTIsIGVuY29kaW5nPTEsIGVuY29kZWRfaGFuZHNoYWtlPWRlbHRhKQotICAgICAgICByZXF1ZXN0
LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgZmxv
d19jb250cm9sID0gX2NyZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsZW5pc2hl
ZF9xdW90YT02KQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3dfY29u
dHJvbCkKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAg
ICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwgbWVzc2FnZT0nSGVsbG8nKSkK
LSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVh
dGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTEsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLSAgICAg
ICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9n
aWNhbF9mcmFtZShjaGFubmVsX2lkPTIsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLQotICAgICAgICBz
ZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRpbWVvdXQ9MikpCi0K
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0hlbGxvJ10sIGRpc3BhdGNoZXIuY2hhbm5lbF9l
dmVudHNbMl0ubWVzc2FnZXMpCi0gICAgICAgIG1lc3NhZ2VzID0gcmVxdWVzdC5jb25uZWN0aW9u
LmdldF93cml0dGVuX21lc3NhZ2VzKDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVu
KG1lc3NhZ2VzKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVsbG8nLCBtZXNzYWdlc1sw
XSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgneC1mb28nLAotICAgICAgICAgICAgICAgICAg
ICAgICAgIGRpc3BhdGNoZXIuY2hhbm5lbF9ldmVudHNbMl0ucmVxdWVzdC53c19wcm90b2NvbCkK
LQotICAgIGRlZiB0ZXN0X2FkZF9jaGFubmVsX2RlbHRhX2FmdGVyX2lkZW50aXR5KHNlbGYpOgot
ICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRj
aGVyID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011
eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQo
KQotICAgICAgICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVN
QkVSX09GX0NIQU5ORUxfU0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG11eC5fSU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotICAgICAgICAjIFNlYy1XZWJTb2Nr
ZXQtUHJvdG9jb2wgaXMgZGlmZmVyZW50IGZyb20gY2xpZW50J3Mgb3BlbmluZyBoYW5kc2hha2UK
LSAgICAgICAgIyBvZiB0aGUgcGh5c2ljYWwgY29ubmVjdGlvbi4KLSAgICAgICAgIyBUT0RPKGJh
c2hpKTogUmVtb3ZlIFVwZ3JhZGUsIENvbm5lY3Rpb24sIFNlYy1XZWJTb2NrZXQtS2V5IGFuZAot
ICAgICAgICAjIFNlYy1XZWJTb2NrZXQtVmVyc2lvbi4KLSAgICAgICAgZW5jb2RlZF9oYW5kc2hh
a2UgPSAoCi0gICAgICAgICAgICAnR0VUIC9lY2hvIEhUVFAvMS4xXHJcbicKLSAgICAgICAgICAg
ICdIb3N0OiBzZXJ2ZXIuZXhhbXBsZS5jb21cclxuJwotICAgICAgICAgICAgJ1NlYy1XZWJTb2Nr
ZXQtUHJvdG9jb2w6IHgtZm9vXHJcbicKLSAgICAgICAgICAgICdDb25uZWN0aW9uOiBVcGdyYWRl
XHJcbicKLSAgICAgICAgICAgICdPcmlnaW46IGh0dHA6Ly9leGFtcGxlLmNvbVxyXG4nCi0gICAg
ICAgICAgICAnXHJcbicpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3JlYXRlX2Fk
ZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lkPTIsIGVuY29k
aW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNvZGVkX2hhbmRzaGFrZSkK
LSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0
KQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250cm9sX2ZyYW1lKGNo
YW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9NikKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1
dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAgICAgZGVsdGEgPSAnR0VUIC9lY2hvIEhUVFAv
MS4xXHJcblxyXG4nCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9j
aGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lkPTMsIGVuY29kaW5n
PTEsIGVuY29kZWRfaGFuZHNoYWtlPWRlbHRhKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24u
cHV0X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgZmxvd19jb250cm9sID0g
X2NyZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0zLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90YT02KQot
ICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJvbCkKLQotICAg
ICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9s
b2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwgbWVzc2FnZT0nSGVsbG8nKSkKLSAgICAgICAgcmVx
dWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9m
cmFtZShjaGFubmVsX2lkPTMsIG1lc3NhZ2U9J1dvcmxkJykpCi0gICAgICAgIHJlcXVlc3QuY29u
bmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hh
bm5lbF9pZD0xLCBtZXNzYWdlPSdHb29kYnllJykpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlv
bi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9p
ZD0yLCBtZXNzYWdlPSdHb29kYnllJykpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRf
Ynl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0zLCBt
ZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVy
LndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
W10sIGRpc3BhdGNoZXIuY2hhbm5lbF9ldmVudHNbMV0ubWVzc2FnZXMpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoWydIZWxsbyddLCBkaXNwYXRjaGVyLmNoYW5uZWxfZXZlbnRzWzJdLm1lc3Nh
Z2VzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnV29ybGQnXSwgZGlzcGF0Y2hlci5jaGFu
bmVsX2V2ZW50c1szXS5tZXNzYWdlcykKLSAgICAgICAgIyBDaGFubmVsIDIKLSAgICAgICAgbWVz
c2FnZXMgPSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fbWVzc2FnZXMoMikKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4obWVzc2FnZXMpKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdIZWxsbycsIG1lc3NhZ2VzWzBdKQotICAgICAgICAjIENoYW5uZWwgMwotICAgICAg
ICBtZXNzYWdlcyA9IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9tZXNzYWdlcygzKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihtZXNzYWdlcykpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJ1dvcmxkJywgbWVzc2FnZXNbMF0pCi0gICAgICAgICMgSGFuZHNoYWtlIGJh
c2Ugc2hvdWxkIGJlIHVwZGF0ZWQuCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAg
ICAgICAneC1mb28nLAotICAgICAgICAgICAgbXV4X2hhbmRsZXIuX2hhbmRzaGFrZV9iYXNlLl9o
ZWFkZXJzWydTZWMtV2ViU29ja2V0LVByb3RvY29sJ10pCi0KLSAgICBkZWYgdGVzdF9hZGRfY2hh
bm5lbF9kZWx0YV9yZW1vdmVfaGVhZGVyKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0
ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tEaXNwYXRjaGVy
KCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0
Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBtdXhfaGFuZGxlci5h
ZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxfU0xPVFMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5fSU5JVElBTF9RVU9UQV9G
T1JfQ0xJRU5UKQotICAgICAgICAjIE92ZXJyaWRlIGhhbmRzaGFrZSBkZWx0YSBiYXNlLgotICAg
ICAgICBlbmNvZGVkX2hhbmRzaGFrZSA9ICgKLSAgICAgICAgICAgICdHRVQgL2VjaG8gSFRUUC8x
LjFcclxuJwotICAgICAgICAgICAgJ0hvc3Q6IHNlcnZlci5leGFtcGxlLmNvbVxyXG4nCi0gICAg
ICAgICAgICAnU2VjLVdlYlNvY2tldC1Qcm90b2NvbDogeC1mb29cclxuJwotICAgICAgICAgICAg
J0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJwotICAgICAgICAgICAgJ09yaWdpbjogaHR0cDovL2V4
YW1wbGUuY29tXHJcbicKLSAgICAgICAgICAgICdcclxuJykKLSAgICAgICAgYWRkX2NoYW5uZWxf
cmVxdWVzdCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAgICAgICAgICAg
IGNoYW5uZWxfaWQ9MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVuY29kZWRfaGFuZHNoYWtl
PWVuY29kZWRfaGFuZHNoYWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVz
KGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgZmxvd19jb250cm9sID0gX2NyZWF0ZV9m
bG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90YT02KQotICAgICAgICBy
ZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJvbCkKLQotICAgICAgICAjIFJl
bW92ZSBTZWMtV2ViU29ja2V0LVByb3RvY29sIGhlYWRlci4KLSAgICAgICAgZGVsdGEgPSAoJ0dF
VCAvZWNobyBIVFRQLzEuMVxyXG4nCi0gICAgICAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LVBy
b3RvY29sOicKLSAgICAgICAgICAgICAgICAgJ1xyXG4nKQotICAgICAgICBhZGRfY2hhbm5lbF9y
ZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAg
Y2hhbm5lbF9pZD0zLCBlbmNvZGluZz0xLCBlbmNvZGVkX2hhbmRzaGFrZT1kZWx0YSkKLSAgICAg
ICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0g
ICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250cm9sX2ZyYW1lKGNoYW5uZWxf
aWQ9MywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVwbGVuaXNoZWRfcXVvdGE9NikKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRl
cyhmbG93X2NvbnRyb2wpCi0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygK
LSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIsIG1lc3NhZ2U9
J0hlbGxvJykpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAg
ICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0zLCBtZXNzYWdlPSdXb3JsZCcp
KQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2Ny
ZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MSwgbWVzc2FnZT0nR29vZGJ5ZScpKQotICAg
ICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9s
b2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwgbWVzc2FnZT0nR29vZGJ5ZScpKQotICAgICAgICBy
ZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2Fs
X2ZyYW1lKGNoYW5uZWxfaWQ9MywgbWVzc2FnZT0nR29vZGJ5ZScpKQotCi0gICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKFtdLCBkaXNwYXRjaGVyLmNoYW5uZWxfZXZlbnRzWzFdLm1l
c3NhZ2VzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnSGVsbG8nXSwgZGlzcGF0Y2hlci5j
aGFubmVsX2V2ZW50c1syXS5tZXNzYWdlcykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ1dv
cmxkJ10sIGRpc3BhdGNoZXIuY2hhbm5lbF9ldmVudHNbM10ubWVzc2FnZXMpCi0gICAgICAgICMg
Q2hhbm5lbCAyCi0gICAgICAgIG1lc3NhZ2VzID0gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0
dGVuX21lc3NhZ2VzKDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKG1lc3NhZ2Vz
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVsbG8nLCBtZXNzYWdlc1swXSkKLSAgICAg
ICAgIyBDaGFubmVsIDMKLSAgICAgICAgbWVzc2FnZXMgPSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0
X3dyaXR0ZW5fbWVzc2FnZXMoMykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4obWVz
c2FnZXMpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdXb3JsZCcsIG1lc3NhZ2VzWzBdKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgJ3gtZm9vJywKLSAgICAgICAg
ICAgIGRpc3BhdGNoZXIuY2hhbm5lbF9ldmVudHNbMl0ucmVxdWVzdC53c19wcm90b2NvbCkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIE5vbmUsCi0gICAgICAgICAgICBk
aXNwYXRjaGVyLmNoYW5uZWxfZXZlbnRzWzNdLnJlcXVlc3Qud3NfcHJvdG9jb2wpCi0KLSAgICBk
ZWYgdGVzdF9hZGRfY2hhbm5lbF9kZWx0YV9lbmNvZGluZ19wZXJtZXNzYWdlX2NvbXByZXNzKHNl
bGYpOgotICAgICAgICAjIEVuYWJsZSBwZXJtZXNzYWdlIGNvbXByZXNzIGV4dGVuc2lvbiBvbiB0
aGUgaW1wbGljaXRseSBvcGVuZWQgY2hhbm5lbC4KLSAgICAgICAgZXh0ZW5zaW9ucyA9IGNvbW1v
bi5wYXJzZV9leHRlbnNpb25zKAotICAgICAgICAgICAgJyVzOyBtZXRob2Q9ZGVmbGF0ZScgJSBj
b21tb24uUEVSTUVTU0FHRV9DT01QUkVTU0lPTl9FWFRFTlNJT04pCi0gICAgICAgIHJlcXVlc3Qg
PSBfY3JlYXRlX21vY2tfcmVxdWVzdCgKLSAgICAgICAgICAgIGxvZ2ljYWxfY2hhbm5lbF9leHRl
bnNpb25zPWV4dGVuc2lvbnMpCi0gICAgICAgIGRpc3BhdGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNo
ZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNw
YXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0gICAgICAgIG11eF9oYW5kbGVy
LmFkZF9jaGFubmVsX3Nsb3RzKG11eC5fSU5JVElBTF9OVU1CRVJfT0ZfQ0hBTk5FTF9TTE9UUywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV4Ll9JTklUSUFMX1FVT1RB
X0ZPUl9DTElFTlQpCi0KLSAgICAgICAgZGVsdGEgPSAnR0VUIC9lY2hvIEhUVFAvMS4xXHJcblxy
XG4nCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3Jl
cXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lkPTIsIGVuY29kaW5nPTEsIGVuY29k
ZWRfaGFuZHNoYWtlPWRlbHRhKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVz
KGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgZmxvd19jb250cm9sID0gX2NyZWF0ZV9m
bG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90YT0yMCkKLSAgICAgICAg
cmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAgICAgIyBT
ZW5kIGNvbXByZXNzZWQgJ0hlbGxvJyBvbiBsb2dpY2FsIGNoYW5uZWwgMSBhbmQgMi4KLSAgICAg
ICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKAotICAgICAgICAgICAgemxpYi5aX0RFRkFV
TFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsIC16bGliLk1BWF9XQklUUykKLSAgICAgICAg
Y29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzLmNvbXByZXNzKCdIZWxsbycpCi0gICAgICAgIGNv
bXByZXNzZWRfaGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAg
ICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzc2VkX2hlbGxvWzotNF0KLQotICAgICAgICBy
ZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2Fs
X2ZyYW1lKGNoYW5uZWxfaWQ9MSwgbWVzc2FnZT1jb21wcmVzc2VkX2hlbGxvLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJzdjE9VHJ1ZSkpCi0gICAgICAgIHJlcXVlc3QuY29u
bmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hh
bm5lbF9pZD0yLCBtZXNzYWdlPWNvbXByZXNzZWRfaGVsbG8sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcnN2MT1UcnVlKSkKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24u
cHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9
MSwgbWVzc2FnZT0nR29vZGJ5ZScpKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5
dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwgbWVz
c2FnZT0nR29vZGJ5ZScpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53
YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsn
SGVsbG8nXSwgZGlzcGF0Y2hlci5jaGFubmVsX2V2ZW50c1sxXS5tZXNzYWdlcykKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChbJ0hlbGxvJ10sIGRpc3BhdGNoZXIuY2hhbm5lbF9ldmVudHNbMl0u
bWVzc2FnZXMpCi0gICAgICAgICMgV3JpdHRlbiAnSGVsbG8ncyBzaG91bGQgYmUgY29tcHJlc3Nl
ZC4KLSAgICAgICAgbWVzc2FnZXMgPSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fbWVz
c2FnZXMoMSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4obWVzc2FnZXMpKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXByZXNzZWRfaGVsbG8sIG1lc3NhZ2VzWzBdKQotICAg
ICAgICBtZXNzYWdlcyA9IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9tZXNzYWdlcygy
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihtZXNzYWdlcykpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoY29tcHJlc3NlZF9oZWxsbywgbWVzc2FnZXNbMF0pCi0KLSAgICBkZWYg
dGVzdF9hZGRfY2hhbm5lbF9kZWx0YV9lbmNvZGluZ19yZW1vdmVfZXh0ZW5zaW9ucyhzZWxmKToK
LSAgICAgICAgIyBFbmFibGUgcGVybWVzc2FnZSBjb21wcmVzcyBleHRlbnNpb24gb24gdGhlIGlt
cGxpY2l0bHkgb3BlbmVkIGNoYW5uZWwuCi0gICAgICAgIGV4dGVuc2lvbnMgPSBjb21tb24ucGFy
c2VfZXh0ZW5zaW9ucygKLSAgICAgICAgICAgICclczsgbWV0aG9kPWRlZmxhdGUnICUgY29tbW9u
LlBFUk1FU1NBR0VfQ09NUFJFU1NJT05fRVhURU5TSU9OKQotICAgICAgICByZXF1ZXN0ID0gX2Ny
ZWF0ZV9tb2NrX3JlcXVlc3QoCi0gICAgICAgICAgICBsb2dpY2FsX2NoYW5uZWxfZXh0ZW5zaW9u
cz1leHRlbnNpb25zKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tEaXNwYXRjaGVyKCkK
LSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hl
cikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBtdXhfaGFuZGxlci5hZGRf
Y2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxfU0xPVFMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5fSU5JVElBTF9RVU9UQV9GT1Jf
Q0xJRU5UKQotCi0gICAgICAgICMgUmVtb3ZlIHBlcm1lc3NhZ2UgY29tcHJlc3MgZXh0ZW5zaW9u
LgotICAgICAgICBkZWx0YSA9ICgnR0VUIC9lY2hvIEhUVFAvMS4xXHJcbicKLSAgICAgICAgICAg
ICAgICAgJ1NlYy1XZWJTb2NrZXQtRXh0ZW5zaW9uczpcclxuJwotICAgICAgICAgICAgICAgICAn
XHJcbicpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVs
X3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lkPTIsIGVuY29kaW5nPTEsIGVu
Y29kZWRfaGFuZHNoYWtlPWRlbHRhKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5
dGVzKGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgZmxvd19jb250cm9sID0gX2NyZWF0
ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90YT0yMCkKLSAgICAg
ICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAgICAg
IyBTZW5kIGNvbXByZXNzZWQgbWVzc2FnZSBvbiBsb2dpY2FsIGNoYW5uZWwgMi4gVGhlIG1lc3Nh
Z2Ugc2hvdWxkCi0gICAgICAgICMgYmUgcmVqZWN0ZWQgKHNpbmNlIHJzdjEgaXMgc2V0KS4KLSAg
ICAgICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKAotICAgICAgICAgICAgemxpYi5aX0RF
RkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsIC16bGliLk1BWF9XQklUUykKLSAgICAg
ICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzLmNvbXByZXNzKCdIZWxsbycpCi0gICAgICAg
IGNvbXByZXNzZWRfaGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0g
ICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzc2VkX2hlbGxvWzotNF0KLSAgICAgICAg
cmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNh
bF9mcmFtZShjaGFubmVsX2lkPTIsIG1lc3NhZ2U9Y29tcHJlc3NlZF9oZWxsbywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByc3YxPVRydWUpKQotCi0gICAgICAgIHJlcXVlc3Qu
Y29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUo
Y2hhbm5lbF9pZD0xLCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIGRy
b3BfY2hhbm5lbCA9IG5leHQoCi0gICAgICAgICAgICBiIGZvciBiIGluIHJlcXVlc3QuY29ubmVj
dGlvbi5nZXRfd3JpdHRlbl9jb250cm9sX2Jsb2NrcygpCi0gICAgICAgICAgICBpZiBiLm9wY29k
ZSA9PSBtdXguX01VWF9PUENPREVfRFJPUF9DSEFOTkVMKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKG11eC5fRFJPUF9DT0RFX05PUk1BTF9DTE9TVVJFLCBkcm9wX2NoYW5uZWwuZHJvcF9jb2Rl
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGRyb3BfY2hhbm5lbC5jaGFubmVsX2lkKQot
ICAgICAgICAjIFVuc3VwcG9ydGVkRnJhbWVFeGNlcHRpb24gc2hvdWxkIGJlIHJhaXNlZCBvbiBs
b2dpY2FsIGNoYW5uZWwgMi4KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoZGlz
cGF0Y2hlci5jaGFubmVsX2V2ZW50c1syXS5leGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFVuc3VwcG9ydGVkRnJhbWVFeGNlcHRpb24pKQotCi0gICAgZGVmIHRl
c3RfYWRkX2NoYW5uZWxfaW52YWxpZF9lbmNvZGluZyhzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9
IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9NdXhNb2NrRGlz
cGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJlcXVlc3Qs
IGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAgICAgICAgbXV4X2hh
bmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05VTUJFUl9PRl9DSEFOTkVMX1NM
T1RTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXguX0lOSVRJQUxf
UVVPVEFfRk9SX0NMSUVOVCkKLQotICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSA9IF9jcmVhdGVf
cmVxdWVzdF9oZWFkZXIocGF0aD0nL2VjaG8nKQotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0
ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5l
bF9pZD0yLCBlbmNvZGluZz0zLAotICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2U9ZW5jb2Rl
ZF9oYW5kc2hha2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRkX2No
YW5uZWxfcmVxdWVzdCkKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIud2Fp
dF91bnRpbF9kb25lKHRpbWVvdXQ9MikpCi0KLSAgICAgICAgZHJvcF9jaGFubmVsID0gbmV4dCgK
LSAgICAgICAgICAgIGIgZm9yIGIgaW4gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX2Nv
bnRyb2xfYmxvY2tzKCkKLSAgICAgICAgICAgIGlmIGIub3Bjb2RlID09IG11eC5fTVVYX09QQ09E
RV9EUk9QX0NIQU5ORUwpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXV4Ll9EUk9QX0NPREVf
VU5LTk9XTl9SRVFVRVNUX0VOQ09ESU5HLAotICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3Bf
Y2hhbm5lbC5kcm9wX2NvZGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLlNUQVRV
U19JTlRFUk5BTF9FTkRQT0lOVF9FUlJPUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1
ZXN0LmNvbm5lY3Rpb24uc2VydmVyX2Nsb3NlX2NvZGUpCi0KLSAgICBkZWYgdGVzdF9hZGRfY2hh
bm5lbF9pbmNvbXBsZXRlX2hhbmRzaGFrZShzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVh
dGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9NdXhNb2NrRGlzcGF0Y2hl
cigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJlcXVlc3QsIGRpc3Bh
dGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAgICAgICAgbXV4X2hhbmRsZXIu
YWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05VTUJFUl9PRl9DSEFOTkVMX1NMT1RTLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXguX0lOSVRJQUxfUVVPVEFf
Rk9SX0NMSUVOVCkKLQotICAgICAgICBpbmNvbXBsZXRlX2VuY29kZWRfaGFuZHNoYWtlID0gJ0dF
VCAvZWNobyBIVFRQLzEuMScKLSAgICAgICAgYWRkX2NoYW5uZWxfcmVxdWVzdCA9IF9jcmVhdGVf
YWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAgICAgICAgICAgIGNoYW5uZWxfaWQ9MiwgZW5j
b2Rpbmc9MCwKLSAgICAgICAgICAgIGVuY29kZWRfaGFuZHNoYWtlPWluY29tcGxldGVfZW5jb2Rl
ZF9oYW5kc2hha2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRkX2No
YW5uZWxfcmVxdWVzdCkKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAot
ICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MSwgbWVzc2FnZT0n
R29vZGJ5ZScpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0X3Vu
dGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUoMSBpbiBkaXNw
YXRjaGVyLmNoYW5uZWxfZXZlbnRzKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IDIgaW4g
ZGlzcGF0Y2hlci5jaGFubmVsX2V2ZW50cykKLQotICAgIGRlZiB0ZXN0X2FkZF9jaGFubmVsX2R1
cGxpY2F0ZV9jaGFubmVsX2lkKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2Nr
X3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAg
ICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikK
LSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBtdXhfaGFuZGxlci5hZGRfY2hh
bm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxfU0xPVFMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5fSU5JVElBTF9RVU9UQV9GT1JfQ0xJ
RU5UKQotCi0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtlID0gX2NyZWF0ZV9yZXF1ZXN0X2hlYWRl
cihwYXRoPScvZWNobycpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3JlYXRlX2Fk
ZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lkPTIsIGVuY29k
aW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNvZGVkX2hhbmRzaGFrZSkK
LSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0
KQotCi0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtlID0gX2NyZWF0ZV9yZXF1ZXN0X2hlYWRlcihw
YXRoPScvZWNobycpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9j
aGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lkPTIsIGVuY29kaW5n
PTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNvZGVkX2hhbmRzaGFrZSkKLSAg
ICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQot
Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUodGlt
ZW91dD0yKSkKLQotICAgICAgICBkcm9wX2NoYW5uZWwgPSBuZXh0KAotICAgICAgICAgICAgYiBm
b3IgYiBpbiByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29udHJvbF9ibG9ja3MoKQot
ICAgICAgICAgICAgaWYgYi5vcGNvZGUgPT0gbXV4Ll9NVVhfT1BDT0RFX0RST1BfQ0hBTk5FTCkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdXguX0RST1BfQ09ERV9DSEFOTkVMX0FMUkVBRFlf
RVhJU1RTLAotICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3BfY2hhbm5lbC5kcm9wX2NvZGUp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLlNUQVRVU19JTlRFUk5BTF9FTkRQT0lO
VF9FUlJPUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24uc2Vy
dmVyX2Nsb3NlX2NvZGUpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX2Ryb3BfY2hhbm5lbChzZWxm
KToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlz
cGF0Y2hlciA9IF9NdXhNb2NrRGlzcGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4
Ll9NdXhIYW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0
YXJ0KCkKLSAgICAgICAgbXV4X2hhbmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFM
X05VTUJFUl9PRl9DSEFOTkVMX1NMT1RTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtdXguX0lOSVRJQUxfUVVPVEFfRk9SX0NMSUVOVCkKLQotICAgICAgICBlbmNvZGVk
X2hhbmRzaGFrZSA9IF9jcmVhdGVfcmVxdWVzdF9oZWFkZXIocGF0aD0nL2VjaG8nKQotICAgICAg
ICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1l
KAotICAgICAgICAgICAgY2hhbm5lbF9pZD0yLCBlbmNvZGluZz0wLAotICAgICAgICAgICAgZW5j
b2RlZF9oYW5kc2hha2U9ZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVj
dGlvbi5wdXRfYnl0ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkKLQotICAgICAgICBkcm9wX2NoYW5u
ZWwgPSBfY3JlYXRlX2Ryb3BfY2hhbm5lbF9mcmFtZShjaGFubmVsX2lkPTIpCi0gICAgICAgIHJl
cXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZHJvcF9jaGFubmVsKQotCi0gICAgICAgICMgVGVy
bWluYXRlIGltcGxpY2l0bHkgb3BlbmVkIGNoYW5uZWwuCi0gICAgICAgIHJlcXVlc3QuY29ubmVj
dGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5l
bF9pZD0xLCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG11
eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIGV4Y2VwdGlv
biA9IGRpc3BhdGNoZXIuY2hhbm5lbF9ldmVudHNbMl0uZXhjZXB0aW9uCi0gICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZShleGNlcHRpb24uX19jbGFzc19fID09IENvbm5lY3Rpb25UZXJtaW5hdGVkRXhj
ZXB0aW9uKQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9waW5nX2ZyYW1lKHNlbGYpOgotICAgICAg
ICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0g
X011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRs
ZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAg
ICAgICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09G
X0NIQU5ORUxfU0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11
eC5fSU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtl
ID0gX2NyZWF0ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScvZWNobycpCi0gICAgICAgIGFkZF9jaGFu
bmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAg
ICAgICBjaGFubmVsX2lkPTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRz
aGFrZT1lbmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9i
eXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVh
dGVfZmxvd19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9MTMpCi0gICAg
ICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAg
IHBpbmdfZnJhbWUgPSBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J0hlbGxvIFdvcmxk
IScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Bjb2RlPWNv
bW1vbi5PUENPREVfUElORykKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhw
aW5nX2ZyYW1lKQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAg
ICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0xLCBtZXNzYWdlPSdHb29k
YnllJykpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAg
ICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPSdHb29kYnllJykp
Ci0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0
aW1lb3V0PTIpKQotCi0gICAgICAgIG1lc3NhZ2VzID0gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93
cml0dGVuX2NvbnRyb2xfbWVzc2FnZXMoMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21t
b24uT1BDT0RFX1BPTkcsIG1lc3NhZ2VzWzBdWydvcGNvZGUnXSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgnSGVsbG8gV29ybGQhJywgbWVzc2FnZXNbMF1bJ21lc3NhZ2UnXSkKLQotICAgIGRl
ZiB0ZXN0X3JlY2VpdmVfZnJhZ21lbnRlZF9waW5nKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0g
X2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tEaXNw
YXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVzdCwg
ZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBtdXhfaGFu
ZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxfU0xP
VFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5fSU5JVElBTF9R
VU9UQV9GT1JfQ0xJRU5UKQotCi0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtlID0gX2NyZWF0ZV9y
ZXF1ZXN0X2hlYWRlcihwYXRoPScvZWNobycpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3Qg
PSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVs
X2lkPTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNvZGVk
X2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hh
bm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250
cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9MTMpCi0gICAgICAgIHJlcXVlc3Qu
Y29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAgICMgU2VuZCBhIHBp
bmcgd2l0aCBtZXNzYWdlICdIZWxsbyB3b3JsZCEnIGluIHR3byBmcmFnbWVudGVkIGZyYW1lcy4K
LSAgICAgICAgcGluZ19mcmFtZTEgPSBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0y
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdI
ZWxsbyAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW49
RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wY29k
ZT1jb21tb24uT1BDT0RFX1BJTkcpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0
ZXMocGluZ19mcmFtZTEpCi0gICAgICAgIHBpbmdfZnJhbWUyID0gX2NyZWF0ZV9sb2dpY2FsX2Zy
YW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbWVzc2FnZT0nV29ybGQhJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmluPVRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9wY29kZT1jb21tb24uT1BDT0RFX0NPTlRJTlVBVElPTikKLSAgICAgICAgcmVx
dWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhwaW5nX2ZyYW1lMikKLQotICAgICAgICByZXF1ZXN0
LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1l
KGNoYW5uZWxfaWQ9MSwgbWVzc2FnZT0nR29vZGJ5ZScpKQotICAgICAgICByZXF1ZXN0LmNvbm5l
Y3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5u
ZWxfaWQ9MiwgbWVzc2FnZT0nR29vZGJ5ZScpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSht
dXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgICAgICBtZXNzYWdl
cyA9IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9jb250cm9sX21lc3NhZ2VzKDIpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLk9QQ09ERV9QT05HLCBtZXNzYWdlc1swXVsn
b3Bjb2RlJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvIFdvcmxkIScsIG1lc3Nh
Z2VzWzBdWydtZXNzYWdlJ10pCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX2ZyYWdtZW50ZWRfcGlu
Z193aGlsZV9yZWNlaXZpbmdfZnJhZ21lbnRlZF9tZXNzYWdlKHNlbGYpOgotICAgICAgICByZXF1
ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1v
Y2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVx
dWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBt
dXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5O
RUxfU0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5fSU5J
VElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtlID0gX2Ny
ZWF0ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScvZWNobycpCi0gICAgICAgIGFkZF9jaGFubmVsX3Jl
cXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBj
aGFubmVsX2lkPTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1l
bmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhh
ZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxv
d19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9MTkpCi0gICAgICAgIHJl
cXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAgICMgU2Vu
ZCBhIGZyYWdtZW50ZWQgZnJhbWUgb2YgbWVzc2FnZSAnSGVsbG8gJy4KLSAgICAgICAgaGVsbG8g
PSBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdIZWxsbyAnLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmaW49RmFsc2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlv
bi5wdXRfYnl0ZXMoaGVsbG8pCi0KLSAgICAgICAgIyBCZWZvcmUgc2VuZGluZyB0aGUgbGFzdCBm
cmFnbWVudGVkIGZyYW1lIG9mIHRoZSBtZXNzYWdlLCBzZW5kIGEKLSAgICAgICAgIyBmcmFnbWVu
dGVkIHBpbmcuCi0gICAgICAgIHBpbmcxID0gX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxf
aWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nUGkn
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW49RmFsc2UsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wY29kZT1jb21tb24uT1BDT0RFX1BJ
TkcpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMocGluZzEpCi0gICAgICAg
IHBpbmcyID0gX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nbmchJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZmluPVRydWUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9wY29kZT1jb21tb24uT1BDT0RFX0NPTlRJTlVBVElPTikKLSAgICAg
ICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhwaW5nMikKLQotICAgICAgICAjIFNlbmQg
dGhlIGxhc3QgZnJhZ21lbnRlZCBmcmFtZSBvZiB0aGUgbWVzc2FnZS4KLSAgICAgICAgd29ybGQg
PSBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdXb3JsZCEnLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmaW49VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgb3Bjb2RlPWNvbW1vbi5PUENPREVfQ09OVElOVUFUSU9OKQotICAgICAgICBy
ZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKHdvcmxkKQotCi0gICAgICAgIHJlcXVlc3QuY29u
bmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hh
bm5lbF9pZD0xLCBtZXNzYWdlPSdHb29kYnllJykpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlv
bi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9p
ZD0yLCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9o
YW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIG1lc3NhZ2VzID0g
cmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX21lc3NhZ2VzKDIpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoWydIZWxsbyBXb3JsZCEnXSwgbWVzc2FnZXMpCi0gICAgICAgIGNvbnRyb2xf
bWVzc2FnZXMgPSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29udHJvbF9tZXNzYWdl
cygyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1vbi5PUENPREVfUE9ORywgY29udHJv
bF9tZXNzYWdlc1swXVsnb3Bjb2RlJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1Bpbmch
JywgY29udHJvbF9tZXNzYWdlc1swXVsnbWVzc2FnZSddKQotCi0gICAgZGVmIHRlc3RfcmVjZWl2
ZV90d29fcGluZ193aGlsZV9yZWNlaXZpbmdfZnJhZ21lbnRlZF9tZXNzYWdlKHNlbGYpOgotICAg
ICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVy
ID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhh
bmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQot
ICAgICAgICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVS
X09GX0NIQU5ORUxfU0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG11eC5fSU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0gICAgICAgIGVuY29kZWRfaGFuZHNo
YWtlID0gX2NyZWF0ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScvZWNobycpCi0gICAgICAgIGFkZF9j
aGFubmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAg
ICAgICAgICBjaGFubmVsX2lkPTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hh
bmRzaGFrZT1lbmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1
dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9j
cmVhdGVfZmxvd19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9MjUpCi0g
ICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0gICAg
ICAgICMgU2VuZCBhIGZyYWdtZW50ZWQgZnJhbWUgb2YgbWVzc2FnZSAnSGVsbG8gJy4KLSAgICAg
ICAgaGVsbG8gPSBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdIZWxsbyAnLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW49RmFsc2UpCi0gICAgICAgIHJlcXVlc3Qu
Y29ubmVjdGlvbi5wdXRfYnl0ZXMoaGVsbG8pCi0KLSAgICAgICAgIyBCZWZvcmUgc2VuZGluZyB0
aGUgbGFzdCBmcmFnbWVudGVkIGZyYW1lIG9mIHRoZSBtZXNzYWdlLCBzZW5kIGEKLSAgICAgICAg
IyBmcmFnbWVudGVkIHBpbmcgYW5kIGEgbm9uLWZyYWdtZW50ZWQgcGluZy4KLSAgICAgICAgcGlu
ZzEgPSBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdQaScsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZpbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgb3Bjb2RlPWNvbW1vbi5PUENPREVfUElORykKLSAgICAgICAgcmVxdWVzdC5j
b25uZWN0aW9uLnB1dF9ieXRlcyhwaW5nMSkKLSAgICAgICAgcGluZzIgPSBfY3JlYXRlX2xvZ2lj
YWxfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtZXNzYWdlPSduZyEnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmaW49VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Bjb2Rl
PWNvbW1vbi5PUENPREVfQ09OVElOVUFUSU9OKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24u
cHV0X2J5dGVzKHBpbmcyKQotICAgICAgICBwaW5nMyA9IF9jcmVhdGVfbG9naWNhbF9mcmFtZShj
aGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3Nh
Z2U9J1BvbmchJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluPVRy
dWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wY29kZT1jb21tb24u
T1BDT0RFX1BJTkcpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMocGluZzMp
Ci0KLSAgICAgICAgIyBTZW5kIHRoZSBsYXN0IGZyYWdtZW50ZWQgZnJhbWUgb2YgdGhlIG1lc3Nh
Z2UuCi0gICAgICAgIHdvcmxkID0gX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nV29ybGQhJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluPVRydWUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wY29kZT1jb21tb24uT1BDT0RFX0NPTlRJ
TlVBVElPTikKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyh3b3JsZCkKLQot
ICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0
ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MSwgbWVzc2FnZT0nR29vZGJ5ZScpKQotICAgICAg
ICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dp
Y2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwgbWVzc2FnZT0nR29vZGJ5ZScpKQotCi0gICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQot
ICAgICAgICBtZXNzYWdlcyA9IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9tZXNzYWdl
cygyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnSGVsbG8gV29ybGQhJ10sIG1lc3NhZ2Vz
KQotICAgICAgICBjb250cm9sX21lc3NhZ2VzID0gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0
dGVuX2NvbnRyb2xfbWVzc2FnZXMoMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tb24u
T1BDT0RFX1BPTkcsIGNvbnRyb2xfbWVzc2FnZXNbMF1bJ29wY29kZSddKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCdQaW5nIScsIGNvbnRyb2xfbWVzc2FnZXNbMF1bJ21lc3NhZ2UnXSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tb24uT1BDT0RFX1BPTkcsIGNvbnRyb2xfbWVzc2Fn
ZXNbMV1bJ29wY29kZSddKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdQb25nIScsIGNvbnRy
b2xfbWVzc2FnZXNbMV1bJ21lc3NhZ2UnXSkKLQotICAgIGRlZiB0ZXN0X3JlY2VpdmVfbWVzc2Fn
ZV93aGlsZV9yZWNlaXZpbmdfZnJhZ21lbnRlZF9waW5nKHNlbGYpOgotICAgICAgICByZXF1ZXN0
ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tE
aXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVz
dCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBtdXhf
aGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxf
U0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5fSU5JVElB
TF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtlID0gX2NyZWF0
ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScvZWNobycpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVl
c3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFu
bmVsX2lkPTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNv
ZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRf
Y2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19j
b250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTE5KQotICAgICAgICByZXF1ZXN0
LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJvbCkKLQotICAgICAgICAjIFNlbmQgYSBm
cmFnbWVudGVkIHBpbmcuCi0gICAgICAgIHBpbmcxID0gX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNo
YW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2Fn
ZT0nUGknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW49RmFsc2Us
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wY29kZT1jb21tb24uT1BD
T0RFX1BJTkcpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMocGluZzEpCi0K
LSAgICAgICAgIyBCZWZvcmUgc2VuZGluZyB0aGUgbGFzdCBmcmFnbWVudGVkIHBpbmcsIHNlbmQg
YSBtZXNzYWdlLgotICAgICAgICAjIFRoZSBsb2dpY2FsIGNoYW5uZWwgKDIpIHNob3VsZCBiZSBk
cm9wcGVkLgotICAgICAgICBtZXNzYWdlID0gX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxf
aWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdI
ZWxsbyB3b3JsZCEnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZp
bj1UcnVlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKG1lc3NhZ2UpCi0K
LSAgICAgICAgIyBTZW5kIHRoZSBsYXN0IGZyYWdtZW50ZWQgZnJhbWUgb2YgdGhlIG1lc3NhZ2Uu
Ci0gICAgICAgIHBpbmcyID0gX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nbmchJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluPVRydWUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG9wY29kZT1jb21tb24uT1BDT0RFX0NPTlRJTlVBVElP
TikKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhwaW5nMikKLQotICAgICAg
ICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dp
Y2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MSwgbWVzc2FnZT0nR29vZGJ5ZScpKQotCi0gICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQot
ICAgICAgICBkcm9wX2NoYW5uZWwgPSBuZXh0KAotICAgICAgICAgICAgYiBmb3IgYiBpbiByZXF1
ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29udHJvbF9ibG9ja3MoKQotICAgICAgICAgICAg
aWYgYi5vcGNvZGUgPT0gbXV4Ll9NVVhfT1BDT0RFX0RST1BfQ0hBTk5FTCkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgyLCBkcm9wX2NoYW5uZWwuY2hhbm5lbF9pZCkKLSAgICAgICAgIyBObyBt
ZXNzYWdlIHNob3VsZCBiZSBzZW50IG9uIGNoYW5uZWwgMi4KLSAgICAgICAgc2VsZi5hc3NlcnRS
YWlzZXMoS2V5RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVj
dGlvbi5nZXRfd3JpdHRlbl9tZXNzYWdlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgMikK
LSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9jb250cm9sX21lc3NhZ2VzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAyKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9waW5nKHNl
bGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBk
aXNwYXRjaGVyID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBt
dXguX011eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIu
c3RhcnQoKQotICAgICAgICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJ
QUxfTlVNQkVSX09GX0NIQU5ORUxfU0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG11eC5fSU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0gICAgICAgIGVuY29k
ZWRfaGFuZHNoYWtlID0gX2NyZWF0ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScvcGluZycpCi0gICAg
ICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJh
bWUoCi0gICAgICAgICAgICBjaGFubmVsX2lkPTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBl
bmNvZGVkX2hhbmRzaGFrZT1lbmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25u
ZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIGZsb3dfY29u
dHJvbCA9IF9jcmVhdGVfZmxvd19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVv
dGE9NikKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wp
Ci0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9j
cmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTEsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLQot
ICAgICAgICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRpbWVv
dXQ9MikpCi0KLSAgICAgICAgbWVzc2FnZXMgPSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0
ZW5fY29udHJvbF9tZXNzYWdlcygyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1vbi5P
UENPREVfUElORywgbWVzc2FnZXNbMF1bJ29wY29kZSddKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCdQaW5nIScsIG1lc3NhZ2VzWzBdWydtZXNzYWdlJ10pCi0KLSAgICBkZWYgdGVzdF9zZW5k
X2ZyYWdtZW50ZWRfcGluZyhzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfbW9ja19y
ZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9NdXhNb2NrRGlzcGF0Y2hlcigpCi0gICAg
ICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIpCi0g
ICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAgICAgICAgbXV4X2hhbmRsZXIuYWRkX2NoYW5u
ZWxfc2xvdHMobXV4Ll9JTklUSUFMX05VTUJFUl9PRl9DSEFOTkVMX1NMT1RTLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXguX0lOSVRJQUxfUVVPVEFfRk9SX0NMSUVO
VCkKLQotICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSA9IF9jcmVhdGVfcmVxdWVzdF9oZWFkZXIo
cGF0aD0nL3BpbmcnKQotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRf
Y2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5lbF9pZD0yLCBlbmNvZGlu
Zz0wLAotICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2U9ZW5jb2RlZF9oYW5kc2hha2UpCi0g
ICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkK
LQotICAgICAgICAjIFJlcGxlbmlzaCAzIGJ5dGVzLiBUaGlzIGlzbid0IGVub3VnaCB0byBzZW5k
IHRoZSB3aG9sZSBwaW5nIGZyYW1lCi0gICAgICAgICMgYmVjYXVzZSB0aGUgZnJhbWUgd2lsbCBo
YXZlIDUgYnl0ZXMgbWVzc2FnZSgnUGluZyEnKS4gVGhlIGZyYW1lCi0gICAgICAgICMgc2hvdWxk
IGJlIGZyYWdtZW50ZWQuCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250
cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9MykKLSAgICAgICAgcmVxdWVzdC5j
b25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAgICAgIyBXYWl0IHVudGls
IHRoZSB3b3JrZXIgaXMgYmxvY2tlZCBkdWUgdG8gc2VuZCBxdW90YSBzaG9ydGFnZS4KLSAgICAg
ICAgdGltZS5zbGVlcCgxKQotCi0gICAgICAgICMgUmVwbGVuaXNoIHJlbWFpbmluZyAyICsgMSBi
eXRlcyAoaW5jbHVkaW5nIGV4dHJhIGNvc3QpLgotICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3Jl
YXRlX2Zsb3dfY29udHJvbF9mcmFtZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTMpCi0gICAg
ICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAg
IHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2lj
YWxfZnJhbWUoY2hhbm5lbF9pZD0xLCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0g
ICAgICAgIG1lc3NhZ2VzID0gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX2NvbnRyb2xf
bWVzc2FnZXMoMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tb24uT1BDT0RFX1BJTkcs
IG1lc3NhZ2VzWzBdWydvcGNvZGUnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnUGluZyEn
LCBtZXNzYWdlc1swXVsnbWVzc2FnZSddKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9mcmFnbWVudGVk
X3Bpbmdfd2hpbGVfc2VuZGluZ19mcmFnbWVudGVkX21lc3NhZ2Uoc2VsZik6Ci0gICAgICAgIHJl
cXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAgIGRpc3BhdGNoZXIgPSBfTXV4
TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4SGFuZGxlcihy
ZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0gICAgICAg
IG11eF9oYW5kbGVyLmFkZF9jaGFubmVsX3Nsb3RzKG11eC5fSU5JVElBTF9OVU1CRVJfT0ZfQ0hB
Tk5FTF9TTE9UUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV4Ll9J
TklUSUFMX1FVT1RBX0ZPUl9DTElFTlQpCi0KLSAgICAgICAgZW5jb2RlZF9oYW5kc2hha2UgPSBf
Y3JlYXRlX3JlcXVlc3RfaGVhZGVyKAotICAgICAgICAgICAgcGF0aD0nL3Bpbmdfd2hpbGVfaGVs
bG9fd29ybGQnKQotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hh
bm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5lbF9pZD0yLCBlbmNvZGluZz0w
LAotICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2U9ZW5jb2RlZF9oYW5kc2hha2UpCi0gICAg
ICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkKLQot
ICAgICAgICAjIEFwcGxpY2F0aW9uIHdpbGwgc2VuZDoKLSAgICAgICAgIyAtIHRleHQgbWVzc2Fn
ZSAnSGVsbG8gJyB3aXRoIGZpbj0wCi0gICAgICAgICMgLSBwaW5nIHdpdGggJ1BpbmchJyBtZXNz
YWdlCi0gICAgICAgICMgLSB0ZXh0IG1lc3NhZ2UgJ1dvcmxkIScgd2l0aCBmaW49MQotICAgICAg
ICAjIFJlcGxlbmlzaCAoNiArIDEpICsgKDIgKyAxKSBieXRlcyBzbyB0aGF0IHRoZSBwaW5nIHdp
bGwgYmUKLSAgICAgICAgIyBmcmFnbWVudGVkIG9uIHRoZSBsb2dpY2FsIGNoYW5uZWwuCi0gICAg
ICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9
MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVw
bGVuaXNoZWRfcXVvdGE9MTApCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMo
Zmxvd19jb250cm9sKQotCi0gICAgICAgIHRpbWUuc2xlZXAoMSkKLQotICAgICAgICAjIFJlcGxl
bmlzaCByZW1haW5pbmcgMyArIDYgYnl0ZXMuCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVh
dGVfZmxvd19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9OSkKLSAgICAg
ICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAgICAg
cmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNh
bF9mcmFtZShjaGFubmVsX2lkPTEsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLQotICAgICAgICBzZWxm
LmFzc2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRpbWVvdXQ9MikpCi0KLSAg
ICAgICAgbWVzc2FnZXMgPSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fbWVzc2FnZXMo
MikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0hlbGxvIFdvcmxkISddLCBtZXNzYWdlcykK
LSAgICAgICAgY29udHJvbF9tZXNzYWdlcyA9IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRl
bl9jb250cm9sX21lc3NhZ2VzKDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLk9Q
Q09ERV9QSU5HLCBjb250cm9sX21lc3NhZ2VzWzBdWydvcGNvZGUnXSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnUGluZyEnLCBjb250cm9sX21lc3NhZ2VzWzBdWydtZXNzYWdlJ10pCi0KLSAg
ICBkZWYgdGVzdF9zZW5kX2ZyYWdtZW50ZWRfdHdvX3Bpbmdfd2hpbGVfc2VuZGluZ19mcmFnbWVu
dGVkX21lc3NhZ2Uoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVz
dCgpCi0gICAgICAgIGRpc3BhdGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBt
dXhfaGFuZGxlciA9IG11eC5fTXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAg
ICBtdXhfaGFuZGxlci5zdGFydCgpCi0gICAgICAgIG11eF9oYW5kbGVyLmFkZF9jaGFubmVsX3Ns
b3RzKG11eC5fSU5JVElBTF9OVU1CRVJfT0ZfQ0hBTk5FTF9TTE9UUywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbXV4Ll9JTklUSUFMX1FVT1RBX0ZPUl9DTElFTlQpCi0K
LSAgICAgICAgZW5jb2RlZF9oYW5kc2hha2UgPSBfY3JlYXRlX3JlcXVlc3RfaGVhZGVyKAotICAg
ICAgICAgICAgcGF0aD0nL3R3b19waW5nX3doaWxlX2hlbGxvX3dvcmxkJykKLSAgICAgICAgYWRk
X2NoYW5uZWxfcmVxdWVzdCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAg
ICAgICAgICAgIGNoYW5uZWxfaWQ9MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVuY29kZWRf
aGFuZHNoYWtlPWVuY29kZWRfaGFuZHNoYWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24u
cHV0X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgIyBBcHBsaWNhdGlvbiB3
aWxsIHNlbmQ6Ci0gICAgICAgICMgLSB0ZXh0IG1lc3NhZ2UgJ0hlbGxvICcgd2l0aCBmaW49MAot
ICAgICAgICAjIC0gcGluZyB3aXRoICdQaW5nIScgbWVzc2FnZQotICAgICAgICAjIC0gcGluZyB3
aXRoICdQb25nIScgbWVzc2FnZQotICAgICAgICAjIC0gdGV4dCBtZXNzYWdlICdXb3JsZCEnIHdp
dGggZmluPTEKLSAgICAgICAgIyBSZXBsZW5pc2ggKDYgKyAxKSArICgyICsgMSkgYnl0ZXMgc28g
dGhhdCB0aGUgZmlyc3QgcGluZyB3aWxsIGJlCi0gICAgICAgICMgZnJhZ21lbnRlZCBvbiB0aGUg
bG9naWNhbCBjaGFubmVsLgotICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3JlYXRlX2Zsb3dfY29u
dHJvbF9mcmFtZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTEwKQotICAgICAgICByZXF1ZXN0
LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJvbCkKLQotICAgICAgICB0aW1lLnNsZWVw
KDEpCi0KLSAgICAgICAgIyBSZXBsZW5pc2ggcmVtYWluaW5nIDMgKyAoNSArIDEpICsgNiBieXRl
cy4gVGhlIHNlY29uZCBwaW5nIHdvbid0Ci0gICAgICAgICMgYmUgZnJhZ21lbnRlZCBvbiB0aGUg
bG9naWNhbCBjaGFubmVsLgotICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3JlYXRlX2Zsb3dfY29u
dHJvbF9mcmFtZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTE1KQotICAgICAgICByZXF1ZXN0
LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJvbCkKLQotICAgICAgICByZXF1ZXN0LmNv
bm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNo
YW5uZWxfaWQ9MSwgbWVzc2FnZT0nR29vZGJ5ZScpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgICAgICBtZXNz
YWdlcyA9IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9tZXNzYWdlcygyKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKFsnSGVsbG8gV29ybGQhJ10sIG1lc3NhZ2VzKQotICAgICAgICBj
b250cm9sX21lc3NhZ2VzID0gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX2NvbnRyb2xf
bWVzc2FnZXMoMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tb24uT1BDT0RFX1BJTkcs
IGNvbnRyb2xfbWVzc2FnZXNbMF1bJ29wY29kZSddKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCdQaW5nIScsIGNvbnRyb2xfbWVzc2FnZXNbMF1bJ21lc3NhZ2UnXSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChjb21tb24uT1BDT0RFX1BJTkcsIGNvbnRyb2xfbWVzc2FnZXNbMV1bJ29wY29k
ZSddKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdQb25nIScsIGNvbnRyb2xfbWVzc2FnZXNb
MV1bJ21lc3NhZ2UnXSkKLQotICAgIGRlZiB0ZXN0X3NlbmRfZHJvcF9jaGFubmVsKHNlbGYpOgot
ICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRj
aGVyID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011
eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQo
KQotCi0gICAgICAgICMgRHJvcENoYW5uZWwgZm9yIGNoYW5uZWwgaWQgMSB3aGljaCBkb2Vzbid0
IGhhdmUgcmVhc29uLgotICAgICAgICBmcmFtZSA9IGNyZWF0ZV9iaW5hcnlfZnJhbWUoJ1x4MDBc
eDYwXHgwMVx4MDAnLCBtYXNrPVRydWUpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRf
Ynl0ZXMoZnJhbWUpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRf
dW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIGRyb3BfY2hhbm5lbCA9IG5leHQoCi0g
ICAgICAgICAgICBiIGZvciBiIGluIHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9jb250
cm9sX2Jsb2NrcygpCi0gICAgICAgICAgICBpZiBiLm9wY29kZSA9PSBtdXguX01VWF9PUENPREVf
RFJPUF9DSEFOTkVMKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG11eC5fRFJPUF9DT0RFX0FD
S05PV0xFREdFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBkcm9wX2NoYW5uZWwuZHJvcF9j
b2RlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGRyb3BfY2hhbm5lbC5jaGFubmVsX2lk
KQotCi0gICAgZGVmIHRlc3RfdHdvX2Zsb3dfY29udHJvbChzZWxmKToKLSAgICAgICAgcmVxdWVz
dCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9NdXhNb2Nr
RGlzcGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJlcXVl
c3QsIGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAgICAgICAgbXV4
X2hhbmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05VTUJFUl9PRl9DSEFOTkVM
X1NMT1RTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXguX0lOSVRJ
QUxfUVVPVEFfRk9SX0NMSUVOVCkKLQotICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSA9IF9jcmVh
dGVfcmVxdWVzdF9oZWFkZXIocGF0aD0nL2VjaG8nKQotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1
ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hh
bm5lbF9pZD0yLCBlbmNvZGluZz0wLAotICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2U9ZW5j
b2RlZF9oYW5kc2hha2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRk
X2NoYW5uZWxfcmVxdWVzdCkKLQotICAgICAgICAjIFJlcGxlbmlzaCA1IGJ5dGVzLgotICAgICAg
ICBmbG93X2NvbnRyb2wgPSBfY3JlYXRlX2Zsb3dfY29udHJvbF9mcmFtZShjaGFubmVsX2lkPTIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxl
bmlzaGVkX3F1b3RhPTUpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxv
d19jb250cm9sKQotCi0gICAgICAgICMgU2VuZCAxMCBieXRlcy4gVGhlIHNlcnZlciB3aWxsIHRy
eSBlY2hvIGJhY2sgMTAgYnl0ZXMuCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0
ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLCBtZXNz
YWdlPSdIZWxsb1dvcmxkJykpCi0KLSAgICAgICAgIyBSZXBsZW5pc2ggNSArIDEgKHBlci1tZXNz
YWdlIGV4dHJhIGNvc3QpIGJ5dGVzLgotICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3JlYXRlX2Zs
b3dfY29udHJvbF9mcmFtZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTYpCi0gICAgICAgIHJl
cXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAgIHJlcXVl
c3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJh
bWUoY2hhbm5lbF9pZD0xLCBtZXNzYWdlPSdHb29kYnllJykpCi0gICAgICAgIHJlcXVlc3QuY29u
bmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hh
bm5lbF9pZD0yLCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIG1lc3Nh
Z2VzID0gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX21lc3NhZ2VzKDIpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoWydIZWxsb1dvcmxkJ10sIG1lc3NhZ2VzKQotICAgICAgICByZWNl
aXZlZF9mbG93X2NvbnRyb2xzID0gWwotICAgICAgICAgICAgYiBmb3IgYiBpbiByZXF1ZXN0LmNv
bm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29udHJvbF9ibG9ja3MoKQotICAgICAgICAgICAgaWYgYi5v
cGNvZGUgPT0gbXV4Ll9NVVhfT1BDT0RFX0ZMT1dfQ09OVFJPTCBhbmQgYi5jaGFubmVsX2lkID09
IDJdCi0gICAgICAgICMgUmVwbGVuaXNobWVudCBmb3IgJ0hlbGxvV29ybGQnICsgMQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKDExLCByZWNlaXZlZF9mbG93X2NvbnRyb2xzWzBdLnNlbmRfcXVv
dGEpCi0gICAgICAgICMgUmVwbGVuaXNobWVudCBmb3IgJ0dvb2RieWUnICsgMQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKDgsIHJlY2VpdmVkX2Zsb3dfY29udHJvbHNbMV0uc2VuZF9xdW90YSkK
LQotICAgIGRlZiB0ZXN0X25vX3NlbmRfcXVvdGFfb25fc2VydmVyKHNlbGYpOgotICAgICAgICBy
ZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011
eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIo
cmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAg
ICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NI
QU5ORUxfU0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5f
SU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtlID0g
X2NyZWF0ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScvZWNobycpCi0gICAgICAgIGFkZF9jaGFubmVs
X3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAg
ICBjaGFubmVsX2lkPTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFr
ZT1lbmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRl
cyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRf
Ynl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLCBt
ZXNzYWdlPSdIZWxsb1dvcmxkJykpCi0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9i
eXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTEsIG1l
c3NhZ2U9J0dvb2RieWUnKSkKLQotICAgICAgICAjIEp1c3Qgd2FpdCBmb3IgMSBzZWMgc28gdGhh
dCB0aGUgc2VydmVyIGF0dGVtcHRzIHRvIGVjaG8gYmFjawotICAgICAgICAjICdIZWxsb1dvcmxk
Jy4KLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUo
dGltZW91dD0xKSkKLQotICAgICAgICAjIE5vIG1lc3NhZ2Ugc2hvdWxkIGJlIHNlbnQgb24gY2hh
bm5lbCAyLgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX21lc3NhZ2VzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAyKQotCi0gICAgZGVmIHRlc3Rfbm9fc2VuZF9xdW90
YV9vbl9zZXJ2ZXJfZm9yX3Blcm1lc3NhZ2VfZXh0cmFfY29zdChzZWxmKToKLSAgICAgICAgcmVx
dWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9NdXhN
b2NrRGlzcGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJl
cXVlc3QsIGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAgICAgICAg
bXV4X2hhbmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05VTUJFUl9PRl9DSEFO
TkVMX1NMT1RTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXguX0lO
SVRJQUxfUVVPVEFfRk9SX0NMSUVOVCkKLQotICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSA9IF9j
cmVhdGVfcmVxdWVzdF9oZWFkZXIocGF0aD0nL2VjaG8nKQotICAgICAgICBhZGRfY2hhbm5lbF9y
ZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAg
Y2hhbm5lbF9pZD0yLCBlbmNvZGluZz0wLAotICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2U9
ZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMo
YWRkX2NoYW5uZWxfcmVxdWVzdCkKLQotICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3JlYXRlX2Zs
b3dfY29udHJvbF9mcmFtZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTYpCi0gICAgICAgIHJl
cXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotICAgICAgICByZXF1ZXN0
LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1l
KGNoYW5uZWxfaWQ9MiwgbWVzc2FnZT0nSGVsbG8nKSkKLSAgICAgICAgIyBSZXBsZW5pc2ggb25s
eSBsZW4oJ1dvcmxkJykgYnl0ZXMuCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxv
d19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9NSkKLSAgICAgICAgcmVx
dWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0gICAgICAgICMgU2VydmVy
IHNob3VsZCBub3QgY2FsbGJhY2sgZm9yIHRoaXMgbWVzc2FnZS4KLSAgICAgICAgcmVxdWVzdC5j
b25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShj
aGFubmVsX2lkPTIsIG1lc3NhZ2U9J1dvcmxkJykpCi0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0
aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVs
X2lkPTEsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLQotICAgICAgICAjIEp1c3Qgd2FpdCBmb3IgMSBz
ZWMgc28gdGhhdCB0aGUgc2VydmVyIGF0dGVtcHRzIHRvIGVjaG8gYmFjawotICAgICAgICAjICdX
b3JsZCcuCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobXV4X2hhbmRsZXIud2FpdF91bnRpbF9k
b25lKHRpbWVvdXQ9MSkpCi0KLSAgICAgICAgIyBPbmx5IG9uZSBtZXNzYWdlIHNob3VsZCBiZSBz
ZW50IG9uIGNoYW5uZWwgMi4KLSAgICAgICAgbWVzc2FnZXMgPSByZXF1ZXN0LmNvbm5lY3Rpb24u
Z2V0X3dyaXR0ZW5fbWVzc2FnZXMoMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0hlbGxv
J10sIG1lc3NhZ2VzKQotCi0gICAgZGVmIHRlc3RfcXVvdGFfdmlvbGF0aW9uX2J5X2NsaWVudChz
ZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAg
ZGlzcGF0Y2hlciA9IF9NdXhNb2NrRGlzcGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVyID0g
bXV4Ll9NdXhIYW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVy
LnN0YXJ0KCkKLSAgICAgICAgbXV4X2hhbmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9JTklU
SUFMX05VTUJFUl9PRl9DSEFOTkVMX1NMT1RTLCAwKQotCi0gICAgICAgIGVuY29kZWRfaGFuZHNo
YWtlID0gX2NyZWF0ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScvZWNobycpCi0gICAgICAgIGFkZF9j
aGFubmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAg
ICAgICAgICBjaGFubmVsX2lkPTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hh
bmRzaGFrZT1lbmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1
dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlv
bi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9p
ZD0yLCBtZXNzYWdlPSdIZWxsb1dvcmxkJykpCi0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9u
LnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lk
PTEsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUobXV4X2hh
bmRsZXIud2FpdF91bnRpbF9kb25lKHRpbWVvdXQ9MikpCi0KLSAgICAgICAgY29udHJvbF9ibG9j
a3MgPSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29udHJvbF9ibG9ja3MoKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKDUsIGxlbihjb250cm9sX2Jsb2NrcykpCi0gICAgICAgIGRy
b3BfY2hhbm5lbCA9IG5leHQoCi0gICAgICAgICAgICBiIGZvciBiIGluIGNvbnRyb2xfYmxvY2tz
Ci0gICAgICAgICAgICBpZiBiLm9wY29kZSA9PSBtdXguX01VWF9PUENPREVfRFJPUF9DSEFOTkVM
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG11eC5fRFJPUF9DT0RFX1NFTkRfUVVPVEFfVklP
TEFUSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3BfY2hhbm5lbC5kcm9wX2NvZGUp
Ci0KLSAgICBkZWYgdGVzdF9jb25zdW1lX3F1b3RhX2VtcHR5X21lc3NhZ2Uoc2VsZik6Ci0gICAg
ICAgIHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAgIGRpc3BhdGNoZXIg
PSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4SGFu
ZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0g
ICAgICAgICMgQ2xpZW50IGhhcyAxIGJ5dGUgcXVvdGEuCi0gICAgICAgIG11eF9oYW5kbGVyLmFk
ZF9jaGFubmVsX3Nsb3RzKG11eC5fSU5JVElBTF9OVU1CRVJfT0ZfQ0hBTk5FTF9TTE9UUywgMSkK
LQotICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSA9IF9jcmVhdGVfcmVxdWVzdF9oZWFkZXIocGF0
aD0nL2VjaG8nKQotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hh
bm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5lbF9pZD0yLCBlbmNvZGluZz0w
LAotICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2U9ZW5jb2RlZF9oYW5kc2hha2UpCi0gICAg
ICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkKLQot
ICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3JlYXRlX2Zsb3dfY29udHJvbF9mcmFtZShjaGFubmVs
X2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlcGxlbmlzaGVkX3F1b3RhPTIpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0
ZXMoZmxvd19jb250cm9sKQotICAgICAgICAjIFNlbmQgYW4gZW1wdHkgbWVzc2FnZS4gUHl3ZWJz
b2NrZXQgYWx3YXlzIHJlcGxlbmlzaGVzIDEgYnl0ZSBxdW90YQotICAgICAgICAjIGZvciBlbXB0
eSBtZXNzYWdlCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAg
ICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPScnKSkKLQot
ICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0
ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MSwgbWVzc2FnZT0nR29vZGJ5ZScpKQotICAgICAg
ICAjIFRoaXMgbWVzc2FnZSB2aW9sYXRlcyBxdW90YSBvbiBjaGFubmVsIGlkIDIuCi0gICAgICAg
IHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2lj
YWxfZnJhbWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGRpc3BhdGNoZXIuY2hhbm5lbF9ldmVudHNb
Ml0ubWVzc2FnZXMpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLCBkaXNwYXRjaGVyLmNo
YW5uZWxfZXZlbnRzWzJdLm1lc3NhZ2VzWzBdKQotCi0gICAgICAgIHJlY2VpdmVkX2Zsb3dfY29u
dHJvbHMgPSBbCi0gICAgICAgICAgICBiIGZvciBiIGluIHJlcXVlc3QuY29ubmVjdGlvbi5nZXRf
d3JpdHRlbl9jb250cm9sX2Jsb2NrcygpCi0gICAgICAgICAgICBpZiBiLm9wY29kZSA9PSBtdXgu
X01VWF9PUENPREVfRkxPV19DT05UUk9MIGFuZCBiLmNoYW5uZWxfaWQgPT0gMl0KLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4ocmVjZWl2ZWRfZmxvd19jb250cm9scykpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoMSwgcmVjZWl2ZWRfZmxvd19jb250cm9sc1swXS5zZW5kX3F1b3Rh
KQotCi0gICAgICAgIGRyb3BfY2hhbm5lbCA9IG5leHQoCi0gICAgICAgICAgICBiIGZvciBiIGlu
IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9jb250cm9sX2Jsb2NrcygpCi0gICAgICAg
ICAgICBpZiBiLm9wY29kZSA9PSBtdXguX01VWF9PUENPREVfRFJPUF9DSEFOTkVMKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKDIsIGRyb3BfY2hhbm5lbC5jaGFubmVsX2lkKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKG11eC5fRFJPUF9DT0RFX1NFTkRfUVVPVEFfVklPTEFUSU9OLAotICAg
ICAgICAgICAgICAgICAgICAgICAgIGRyb3BfY2hhbm5lbC5kcm9wX2NvZGUpCi0KLSAgICBkZWYg
dGVzdF9jb25zdW1lX3F1b3RhX2ZyYWdtZW50ZWRfbWVzc2FnZShzZWxmKToKLSAgICAgICAgcmVx
dWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9NdXhN
b2NrRGlzcGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJl
cXVlc3QsIGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAgICAgICAg
IyBDbGllbnQgaGFzIGxlbignSGVsbG8nKSArIGxlbignR29vZGJ5ZScpICsgMiBieXRlcyBxdW90
YS4KLSAgICAgICAgbXV4X2hhbmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05V
TUJFUl9PRl9DSEFOTkVMX1NMT1RTLCAxNCkKLQotICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSA9
IF9jcmVhdGVfcmVxdWVzdF9oZWFkZXIocGF0aD0nL2VjaG8nKQotICAgICAgICBhZGRfY2hhbm5l
bF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAg
ICAgY2hhbm5lbF9pZD0yLCBlbmNvZGluZz0wLAotICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hh
a2U9ZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0
ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkKLQotICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3JlYXRl
X2Zsb3dfY29udHJvbF9mcmFtZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTYpCi0gICAgICAg
IHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotICAgICAgICByZXF1
ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2Zy
YW1lKGNoYW5uZWxfaWQ9MiwgbWVzc2FnZT0nSGUnLCBmaW49RmFsc2UsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3Bjb2RlPWNvbW1vbi5PUENPREVfVEVYVCkpCi0gICAgICAg
IHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2lj
YWxfZnJhbWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPSdsbG8nLCBmaW49VHJ1ZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBvcGNvZGU9Y29tbW9uLk9QQ09ERV9DT05USU5VQVRJ
T04pKQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAg
ICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0xLCBtZXNzYWdlPSdHb29kYnllJykp
Ci0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3Jl
YXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0
PTIpKQotCi0gICAgICAgIG1lc3NhZ2VzID0gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVu
X21lc3NhZ2VzKDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydIZWxsbyddLCBtZXNzYWdl
cykKLQotICAgIGRlZiB0ZXN0X2ZyYWdtZW50ZWRfY29udHJvbF9tZXNzYWdlKHNlbGYpOgotICAg
ICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVy
ID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhh
bmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQot
ICAgICAgICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVS
X09GX0NIQU5ORUxfU0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG11eC5fSU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0gICAgICAgIGVuY29kZWRfaGFuZHNo
YWtlID0gX2NyZWF0ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScvcGluZycpCi0gICAgICAgIGFkZF9j
aGFubmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAg
ICAgICAgICBjaGFubmVsX2lkPTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hh
bmRzaGFrZT1lbmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1
dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgICMgUmVwbGVuaXNoIHRvdGFs
IDYgYnl0ZXMgaW4gMyBGbG93Q29udHJvbHMuCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVh
dGVfZmxvd19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9MSkKLSAgICAg
ICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAgICAg
Zmxvd19jb250cm9sID0gX2NyZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0yLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsZW5p
c2hlZF9xdW90YT0yKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3df
Y29udHJvbCkKLQotICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3JlYXRlX2Zsb3dfY29udHJvbF9m
cmFtZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTMpCi0gICAgICAgIHJlcXVlc3QuY29ubmVj
dGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlv
bi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9p
ZD0xLCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9o
YW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIG1lc3NhZ2VzID0g
cmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX2NvbnRyb2xfbWVzc2FnZXMoMikKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChjb21tb24uT1BDT0RFX1BJTkcsIG1lc3NhZ2VzWzBdWydvcGNv
ZGUnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnUGluZyEnLCBtZXNzYWdlc1swXVsnbWVz
c2FnZSddKQotCi0gICAgZGVmIHRlc3RfY2hhbm5lbF9zbG90X3Zpb2xhdGlvbl9ieV9jbGllbnQo
c2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAg
IGRpc3BhdGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9
IG11eC5fTXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxl
ci5zdGFydCgpCi0gICAgICAgIG11eF9oYW5kbGVyLmFkZF9jaGFubmVsX3Nsb3RzKHNsb3RzPTEs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRfcXVvdGE9bXV4Ll9J
TklUSUFMX1FVT1RBX0ZPUl9DTElFTlQpCi0KLSAgICAgICAgZW5jb2RlZF9oYW5kc2hha2UgPSBf
Y3JlYXRlX3JlcXVlc3RfaGVhZGVyKHBhdGg9Jy9lY2hvJykKLSAgICAgICAgYWRkX2NoYW5uZWxf
cmVxdWVzdCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAgICAgICAgICAg
IGNoYW5uZWxfaWQ9MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVuY29kZWRfaGFuZHNoYWtl
PWVuY29kZWRfaGFuZHNoYWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVz
KGFkZF9jaGFubmVsX3JlcXVlc3QpCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxv
d19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9NikKLSAgICAgICAgcmVx
dWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAgICAgcmVxdWVz
dC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFt
ZShjaGFubmVsX2lkPTIsIG1lc3NhZ2U9J0hlbGxvJykpCi0KLSAgICAgICAgIyBUaGlzIHJlcXVl
c3Qgc2hvdWxkIGJlIHJlamVjdGVkLgotICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSA9IF9jcmVh
dGVfcmVxdWVzdF9oZWFkZXIocGF0aD0nL2VjaG8nKQotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1
ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hh
bm5lbF9pZD0zLCBlbmNvZGluZz0wLAotICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2U9ZW5j
b2RlZF9oYW5kc2hha2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRk
X2NoYW5uZWxfcmVxdWVzdCkKLSAgICAgICAgZmxvd19jb250cm9sID0gX2NyZWF0ZV9mbG93X2Nv
bnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90YT02KQotICAgICAgICByZXF1ZXN0
LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJvbCkKLQotICAgICAgICByZXF1ZXN0LmNv
bm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNo
YW5uZWxfaWQ9MywgbWVzc2FnZT0nSGVsbG8nKSkKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rp
b24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxf
aWQ9MSwgbWVzc2FnZT0nR29vZGJ5ZScpKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0
X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9Miwg
bWVzc2FnZT0nR29vZGJ5ZScpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxl
ci53YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KFtdLCBkaXNwYXRjaGVyLmNoYW5uZWxfZXZlbnRzWzFdLm1lc3NhZ2VzKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKFsnSGVsbG8nXSwgZGlzcGF0Y2hlci5jaGFubmVsX2V2ZW50c1syXS5tZXNz
YWdlcykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShkaXNwYXRjaGVyLmNoYW5uZWxfZXZlbnRz
Lmhhc19rZXkoMykpCi0gICAgICAgIGRyb3BfY2hhbm5lbCA9IG5leHQoCi0gICAgICAgICAgICBi
IGZvciBiIGluIHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9jb250cm9sX2Jsb2Nrcygp
Ci0gICAgICAgICAgICBpZiBiLm9wY29kZSA9PSBtdXguX01VWF9PUENPREVfRFJPUF9DSEFOTkVM
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDMsIGRyb3BfY2hhbm5lbC5jaGFubmVsX2lkKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG11eC5fRFJPUF9DT0RFX05FV19DSEFOTkVMX1NMT1Rf
VklPTEFUSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3BfY2hhbm5lbC5kcm9wX2Nv
ZGUpCi0KLSAgICBkZWYgdGVzdF9xdW90YV9vdmVyZmxvd19ieV9jbGllbnQoc2VsZik6Ci0gICAg
ICAgIHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAgIGRpc3BhdGNoZXIg
PSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4SGFu
ZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0g
ICAgICAgIG11eF9oYW5kbGVyLmFkZF9jaGFubmVsX3Nsb3RzKHNsb3RzPTEsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRfcXVvdGE9bXV4Ll9JTklUSUFMX1FVT1RB
X0ZPUl9DTElFTlQpCi0KLSAgICAgICAgZW5jb2RlZF9oYW5kc2hha2UgPSBfY3JlYXRlX3JlcXVl
c3RfaGVhZGVyKHBhdGg9Jy9lY2hvJykKLSAgICAgICAgYWRkX2NoYW5uZWxfcmVxdWVzdCA9IF9j
cmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAgICAgICAgICAgIGNoYW5uZWxfaWQ9
MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVuY29kZWRfaGFuZHNoYWtlPWVuY29kZWRfaGFu
ZHNoYWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGFkZF9jaGFubmVs
X3JlcXVlc3QpCi0gICAgICAgICMgUmVwbGVuaXNoIDB4N0ZGRkZGRkZGRkZGRkZGRiBieXRlcyB0
d2ljZS4KLSAgICAgICAgZmxvd19jb250cm9sID0gX2NyZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUo
Ci0gICAgICAgICAgICBjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90
YT0weDdGRkZGRkZGRkZGRkZGRkYpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0
ZXMoZmxvd19jb250cm9sKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZs
b3dfY29udHJvbCkKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAg
ICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MSwgbWVzc2FnZT0nR29v
ZGJ5ZScpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0X3VudGls
X2RvbmUodGltZW91dD0yKSkKLQotICAgICAgICBkcm9wX2NoYW5uZWwgPSBuZXh0KAotICAgICAg
ICAgICAgYiBmb3IgYiBpbiByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29udHJvbF9i
bG9ja3MoKQotICAgICAgICAgICAgaWYgYi5vcGNvZGUgPT0gbXV4Ll9NVVhfT1BDT0RFX0RST1Bf
Q0hBTk5FTCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBkcm9wX2NoYW5uZWwuY2hhbm5l
bF9pZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdXguX0RST1BfQ09ERV9TRU5EX1FVT1RB
X09WRVJGTE9XLAotICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3BfY2hhbm5lbC5kcm9wX2Nv
ZGUpCi0KLSAgICBkZWYgdGVzdF9pbnZhbGlkX2VuY2Fwc3VsYXRlZF9tZXNzYWdlKHNlbGYpOgot
ICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRj
aGVyID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011
eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQo
KQotCi0gICAgICAgIGZpcnN0X2J5dGUgPSAobXV4Ll9NVVhfT1BDT0RFX0FERF9DSEFOTkVMX1JF
UVVFU1QgPDwgNSkKLSAgICAgICAgYmxvY2sgPSAoY2hyKGZpcnN0X2J5dGUpICsKLSAgICAgICAg
ICAgICAgICAgbXV4Ll9lbmNvZGVfY2hhbm5lbF9pZCgxKSArCi0gICAgICAgICAgICAgICAgIG11
eC5fZW5jb2RlX251bWJlcigwKSkKLSAgICAgICAgcGF5bG9hZCA9IG11eC5fZW5jb2RlX2NoYW5u
ZWxfaWQobXV4Ll9DT05UUk9MX0NIQU5ORUxfSUQpICsgYmxvY2sKLSAgICAgICAgdGV4dF9mcmFt
ZSA9IGNyZWF0ZV9iaW5hcnlfZnJhbWUocGF5bG9hZCwgb3Bjb2RlPWNvbW1vbi5PUENPREVfVEVY
VCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFzaz1UcnVlKQot
ICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKHRleHRfZnJhbWUpCi0KLSAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIp
KQotCi0gICAgICAgIGRyb3BfY2hhbm5lbCA9IG5leHQoCi0gICAgICAgICAgICBiIGZvciBiIGlu
IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9jb250cm9sX2Jsb2NrcygpCi0gICAgICAg
ICAgICBpZiBiLm9wY29kZSA9PSBtdXguX01VWF9PUENPREVfRFJPUF9DSEFOTkVMKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKG11eC5fRFJPUF9DT0RFX0lOVkFMSURfRU5DQVBTVUxBVElOR19N
RVNTQUdFLAotICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3BfY2hhbm5lbC5kcm9wX2NvZGUp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLlNUQVRVU19JTlRFUk5BTF9FTkRQT0lO
VF9FUlJPUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24uc2Vy
dmVyX2Nsb3NlX2NvZGUpCi0KLSAgICBkZWYgdGVzdF9jaGFubmVsX2lkX3RydW5jYXRlZChzZWxm
KToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlz
cGF0Y2hlciA9IF9NdXhNb2NrRGlzcGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4
Ll9NdXhIYW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0
YXJ0KCkKLQotICAgICAgICAjIFRoZSBsYXN0IGJ5dGUgb2YgdGhlIGNoYW5uZWwgaWQgaXMgbWlz
c2luZy4KLSAgICAgICAgZnJhbWUgPSBjcmVhdGVfYmluYXJ5X2ZyYW1lKCdceDgwJywgbWFzaz1U
cnVlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZyYW1lKQotCi0gICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91dD0y
KSkKLQotICAgICAgICBkcm9wX2NoYW5uZWwgPSBuZXh0KAotICAgICAgICAgICAgYiBmb3IgYiBp
biByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29udHJvbF9ibG9ja3MoKQotICAgICAg
ICAgICAgaWYgYi5vcGNvZGUgPT0gbXV4Ll9NVVhfT1BDT0RFX0RST1BfQ0hBTk5FTCkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChtdXguX0RST1BfQ09ERV9DSEFOTkVMX0lEX1RSVU5DQVRFRCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICBkcm9wX2NoYW5uZWwuZHJvcF9jb2RlKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGNvbW1vbi5TVEFUVVNfSU5URVJOQUxfRU5EUE9JTlRfRVJST1Is
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnNlcnZlcl9jbG9z
ZV9jb2RlKQotCi0gICAgZGVmIHRlc3RfaW5uZXJfZnJhbWVfdHJ1bmNhdGVkKHNlbGYpOgotICAg
ICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVy
ID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhh
bmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQot
Ci0gICAgICAgICMgSnVzdCBjb250YWluIGNoYW5uZWwgaWQgMS4KLSAgICAgICAgZnJhbWUgPSBj
cmVhdGVfYmluYXJ5X2ZyYW1lKCdceDAxJywgbWFzaz1UcnVlKQotICAgICAgICByZXF1ZXN0LmNv
bm5lY3Rpb24ucHV0X2J5dGVzKGZyYW1lKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhf
aGFuZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgICAgICBkcm9wX2NoYW5u
ZWwgPSBuZXh0KAotICAgICAgICAgICAgYiBmb3IgYiBpbiByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0
X3dyaXR0ZW5fY29udHJvbF9ibG9ja3MoKQotICAgICAgICAgICAgaWYgYi5vcGNvZGUgPT0gbXV4
Ll9NVVhfT1BDT0RFX0RST1BfQ0hBTk5FTCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdXgu
X0RST1BfQ09ERV9FTkNBUFNVTEFURURfRlJBTUVfSVNfVFJVTkNBVEVELAotICAgICAgICAgICAg
ICAgICAgICAgICAgIGRyb3BfY2hhbm5lbC5kcm9wX2NvZGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoY29tbW9uLlNUQVRVU19JTlRFUk5BTF9FTkRQT0lOVF9FUlJPUiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24uc2VydmVyX2Nsb3NlX2NvZGUpCi0KLSAg
ICBkZWYgdGVzdF91bmtub3duX211eF9vcGNvZGUoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBf
Y3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAgIGRpc3BhdGNoZXIgPSBfTXV4TW9ja0Rpc3Bh
dGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4SGFuZGxlcihyZXF1ZXN0LCBk
aXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0KLSAgICAgICAgIyBVbmRl
ZmluZWQgb3Bjb2RlIDUKLSAgICAgICAgZnJhbWUgPSBjcmVhdGVfYmluYXJ5X2ZyYW1lKCdceDAw
XHhhMCcsIG1hc2s9VHJ1ZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhm
cmFtZSkKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9k
b25lKHRpbWVvdXQ9MikpCi0KLSAgICAgICAgZHJvcF9jaGFubmVsID0gbmV4dCgKLSAgICAgICAg
ICAgIGIgZm9yIGIgaW4gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX2NvbnRyb2xfYmxv
Y2tzKCkKLSAgICAgICAgICAgIGlmIGIub3Bjb2RlID09IG11eC5fTVVYX09QQ09ERV9EUk9QX0NI
QU5ORUwpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXV4Ll9EUk9QX0NPREVfVU5LTk9XTl9N
VVhfT1BDT0RFLAotICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3BfY2hhbm5lbC5kcm9wX2Nv
ZGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLlNUQVRVU19JTlRFUk5BTF9FTkRQ
T0lOVF9FUlJPUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24u
c2VydmVyX2Nsb3NlX2NvZGUpCi0KLSAgICBkZWYgdGVzdF9pbnZhbGlkX211eF9jb250cm9sX2Js
b2NrKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAg
ICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRs
ZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hh
bmRsZXIuc3RhcnQoKQotCi0gICAgICAgICMgRHJvcENoYW5uZWwgY29udGFpbnMgMSBieXRlIHJl
YXNvbgotICAgICAgICBmcmFtZSA9IGNyZWF0ZV9iaW5hcnlfZnJhbWUoJ1x4MDBceDYwXHgwMFx4
MDFceDAwJywgbWFzaz1UcnVlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVz
KGZyYW1lKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0X3VudGls
X2RvbmUodGltZW91dD0yKSkKLQotICAgICAgICBkcm9wX2NoYW5uZWwgPSBuZXh0KAotICAgICAg
ICAgICAgYiBmb3IgYiBpbiByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29udHJvbF9i
bG9ja3MoKQotICAgICAgICAgICAgaWYgYi5vcGNvZGUgPT0gbXV4Ll9NVVhfT1BDT0RFX0RST1Bf
Q0hBTk5FTCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdXguX0RST1BfQ09ERV9JTlZBTElE
X01VWF9DT05UUk9MX0JMT0NLLAotICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3BfY2hhbm5l
bC5kcm9wX2NvZGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLlNUQVRVU19JTlRF
Uk5BTF9FTkRQT0lOVF9FUlJPUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNv
bm5lY3Rpb24uc2VydmVyX2Nsb3NlX2NvZGUpCi0KLSAgICBkZWYgdGVzdF9wZXJtZXNzYWdlX2Nv
bXByZXNzKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQot
ICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hh
bmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4
X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyht
dXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxfU0xPVFMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG11eC5fSU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0gICAg
ICAgICMgRW5hYmxlIHBlcm1lc3NhZ2UgY29tcHJlc3MgZXh0ZW5zaW9uIG9uIGxvZ2ljYWwgY2hh
bm5lbCAyLgotICAgICAgICBleHRlbnNpb25zID0gJyVzOyBtZXRob2Q9ZGVmbGF0ZScgJSAoCi0g
ICAgICAgICAgICBjb21tb24uUEVSTUVTU0FHRV9DT01QUkVTU0lPTl9FWFRFTlNJT04pCi0gICAg
ICAgIGVuY29kZWRfaGFuZHNoYWtlID0gX2NyZWF0ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScvZWNo
bycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
eHRlbnNpb25zPWV4dGVuc2lvbnMpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3Jl
YXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lkPTIs
IGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNvZGVkX2hhbmRz
aGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9y
ZXF1ZXN0KQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250cm9sX2Zy
YW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9MjApCi0gICAgICAgIHJlcXVlc3QuY29ubmVj
dGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAgICMgU2VuZCBjb21wcmVzc2Vk
ICdIZWxsbycgdHdpY2UuCi0gICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVzc29iaigKLSAg
ICAgICAgICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELCAtemxp
Yi5NQVhfV0JJVFMpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8xID0gY29tcHJlc3MuY29tcHJl
c3MoJ0hlbGxvJykKLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbzEgKz0gY29tcHJlc3MuZmx1c2go
emxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8xID0gY29tcHJlc3Nl
ZF9oZWxsbzFbOi00XQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAg
ICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwgbWVzc2FnZT1jb21w
cmVzc2VkX2hlbGxvMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByc3YxPVRy
dWUpKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvMiA9IGNvbXByZXNzLmNvbXByZXNzKCdIZWxs
bycpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8yICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9T
WU5DX0ZMVVNIKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvMiA9IGNvbXByZXNzZWRfaGVsbG8y
WzotNF0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAg
IF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIsIG1lc3NhZ2U9Y29tcHJlc3NlZF9o
ZWxsbzIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnN2MT1UcnVlKSkKLQot
ICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0
ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MSwgbWVzc2FnZT0nR29vZGJ5ZScpKQotICAgICAg
ICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dp
Y2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwgbWVzc2FnZT0nR29vZGJ5ZScpKQotCi0gICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnSGVsbG8nLCAnSGVsbG8nXSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICBkaXNwYXRjaGVyLmNoYW5uZWxfZXZlbnRzWzJdLm1lc3NhZ2VzKQotICAg
ICAgICAjIFdyaXR0ZW4gJ0hlbGxvJ3Mgc2hvdWxkIGJlIGNvbXByZXNzZWQuCi0gICAgICAgIG1l
c3NhZ2VzID0gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX21lc3NhZ2VzKDIpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgbGVuKG1lc3NhZ2VzKSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChjb21wcmVzc2VkX2hlbGxvMSwgbWVzc2FnZXNbMF0pCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoY29tcHJlc3NlZF9oZWxsbzIsIG1lc3NhZ2VzWzFdKQotCi0KLSAgICBkZWYgdGVz
dF9wZXJtZXNzYWdlX2NvbXByZXNzX2ZyYWdtZW50ZWRfbWVzc2FnZShzZWxmKToKLSAgICAgICAg
ZXh0ZW5zaW9ucyA9IGNvbW1vbi5wYXJzZV9leHRlbnNpb25zKAotICAgICAgICAgICAgJyVzOyBt
ZXRob2Q9ZGVmbGF0ZScgJSBjb21tb24uUEVSTUVTU0FHRV9DT01QUkVTU0lPTl9FWFRFTlNJT04p
Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgKLSAgICAgICAgICAgIGxv
Z2ljYWxfY2hhbm5lbF9leHRlbnNpb25zPWV4dGVuc2lvbnMpCi0gICAgICAgIGRpc3BhdGNoZXIg
PSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4SGFu
ZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0g
ICAgICAgIG11eF9oYW5kbGVyLmFkZF9jaGFubmVsX3Nsb3RzKG11eC5fSU5JVElBTF9OVU1CRVJf
T0ZfQ0hBTk5FTF9TTE9UUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bXV4Ll9JTklUSUFMX1FVT1RBX0ZPUl9DTElFTlQpCi0KLSAgICAgICAgIyBTZW5kIGNvbXByZXNz
ZWQgJ0hlbGxvSGVsbG9IZWxsbycgYXMgZnJhZ21lbnRlZCBtZXNzYWdlLgotICAgICAgICBjb21w
cmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAgICAgICB6bGliLlpfREVGQVVMVF9DT01Q
UkVTU0lPTiwgemxpYi5ERUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRTKQotICAgICAgICBjb21wcmVz
c2VkX2hlbGxvID0gY29tcHJlc3MuY29tcHJlc3MoJ0hlbGxvSGVsbG9IZWxsbycpCi0gICAgICAg
IGNvbXByZXNzZWRfaGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0g
ICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzc2VkX2hlbGxvWzotNF0KLQotICAgICAg
ICBtID0gbGVuKGNvbXByZXNzZWRfaGVsbG8pIC8gMgotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rp
b24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxf
aWQ9MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPWNvbXByZXNz
ZWRfaGVsbG9bOm1dLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbj1GYWxz
ZSwgcnN2MT1UcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wY29kZT1j
b21tb24uT1BDT0RFX1RFWFQpKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVz
KAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPWNvbXByZXNzZWRfaGVsbG9bbTpd
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbj1UcnVlLCByc3YxPUZhbHNl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wY29kZT1jb21tb24uT1BDT0RF
X0NPTlRJTlVBVElPTikpCi0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygK
LSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTEsIG1lc3NhZ2U9
J0dvb2RieWUnKSkKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91
bnRpbF9kb25lKHRpbWVvdXQ9MikpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0hlbGxv
SGVsbG9IZWxsbyddLAotICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoZXIuY2hhbm5l
bF9ldmVudHNbMV0ubWVzc2FnZXMpCi0gICAgICAgIG1lc3NhZ2VzID0gcmVxdWVzdC5jb25uZWN0
aW9uLmdldF93cml0dGVuX21lc3NhZ2VzKDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwg
bGVuKG1lc3NhZ2VzKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wcmVzc2VkX2hlbGxv
LCBtZXNzYWdlc1swXSkKLQotICAgIGRlZiB0ZXN0X3JlY2VpdmVfYmFkX2ZyYWdtZW50ZWRfbWVz
c2FnZShzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAg
ICAgICAgZGlzcGF0Y2hlciA9IF9NdXhNb2NrRGlzcGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5k
bGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9o
YW5kbGVyLnN0YXJ0KCkKLSAgICAgICAgbXV4X2hhbmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMobXV4
Ll9JTklUSUFMX05VTUJFUl9PRl9DSEFOTkVMX1NMT1RTLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtdXguX0lOSVRJQUxfUVVPVEFfRk9SX0NMSUVOVCkKLQotICAgICAg
ICBlbmNvZGVkX2hhbmRzaGFrZSA9IF9jcmVhdGVfcmVxdWVzdF9oZWFkZXIocGF0aD0nL2VjaG8n
KQotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1
ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5lbF9pZD0yLCBlbmNvZGluZz0wLAotICAgICAg
ICAgICAgZW5jb2RlZF9oYW5kc2hha2U9ZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgICAgIHJlcXVl
c3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkKLQotICAgICAgICAj
IFNlbmQgYSBmcmFtZSB3aXRoIGZpbj1GYWxzZSwgYW5kIHRoZW4gc2VuZCBhIGZyYW1lIHdpdGgK
LSAgICAgICAgIyBvcGNvZGU9VEVYVCAobm90IENPTlRJTlVBVElPTikuIExvZ2ljYWwgY2hhbm5l
bCAyIHNob3VsZCBiZSBkcm9wcGVkLgotICAgICAgICBmcmFtZTEgPSBfY3JlYXRlX2xvZ2ljYWxf
ZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbWVzc2FnZT0nSGVsbG8gJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZpbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9w
Y29kZT1jb21tb24uT1BDT0RFX1RFWFQpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRf
Ynl0ZXMoZnJhbWUxKQotICAgICAgICBmcmFtZTIgPSBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hh
bm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2Fn
ZT0nV29ybGQhJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbj1U
cnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Bjb2RlPWNvbW1v
bi5PUENPREVfVEVYVCkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmcmFt
ZTIpCi0KLSAgICAgICAgZW5jb2RlZF9oYW5kc2hha2UgPSBfY3JlYXRlX3JlcXVlc3RfaGVhZGVy
KHBhdGg9Jy9lY2hvJykKLSAgICAgICAgYWRkX2NoYW5uZWxfcmVxdWVzdCA9IF9jcmVhdGVfYWRk
X2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAgICAgICAgICAgIGNoYW5uZWxfaWQ9MywgZW5jb2Rp
bmc9MCwKLSAgICAgICAgICAgIGVuY29kZWRfaGFuZHNoYWtlPWVuY29kZWRfaGFuZHNoYWtlKQot
ICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVlc3Qp
Ci0KLSAgICAgICAgIyBTZW5kIGEgZnJhbWUgd2l0aCBvcGNvZGU9Q09OVElOVUFUSU9OIHdpdGhv
dXQgYSBwcmVjZWRpbmcgZnJhbWUKLSAgICAgICAgIyB0aGUgZmluIG9mIHdoaWNoIGlzIG5vdCBz
ZXQuIExvZ2ljYWwgY2hhbm5lbCAzIHNob3VsZCBiZSBkcm9wcGVkLgotICAgICAgICBmcmFtZTMg
PSBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0zLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nSGVsbG8nLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmluPVRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvcGNvZGU9Y29tbW9uLk9QQ09ERV9DT05USU5VQVRJT04pCi0gICAgICAg
IHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZnJhbWUzKQotCi0gICAgICAgIGVuY29kZWRf
aGFuZHNoYWtlID0gX2NyZWF0ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScvZWNobycpCi0gICAgICAg
IGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUo
Ci0gICAgICAgICAgICBjaGFubmVsX2lkPTQsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNv
ZGVkX2hhbmRzaGFrZT1lbmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0
aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgICMgU2VuZCBhIGZy
YW1lIHdpdGggb3Bjb2RlPVBJTkcgYW5kIGZpbj1GYWxzZSwgYW5kIHRoZW4gc2VuZCBhIGZyYW1l
Ci0gICAgICAgICMgd2l0aCBvcGNvZGU9VEVYVCAobm90IENPTlRJTlVBVElPTikuIExvZ2ljYWwg
Y2hhbm5lbCA0IHNob3VsZCBiZQotICAgICAgICAjIGRyb3BwZWQuCi0gICAgICAgIGZyYW1lNCA9
IF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdQaW5nJywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZpbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG9wY29kZT1jb21tb24uT1BDT0RFX1BJTkcpCi0gICAgICAgIHJlcXVlc3Qu
Y29ubmVjdGlvbi5wdXRfYnl0ZXMoZnJhbWU0KQotICAgICAgICBmcmFtZTUgPSBfY3JlYXRlX2xv
Z2ljYWxfZnJhbWUoY2hhbm5lbF9pZD00LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWVzc2FnZT0nSGVsbG8nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmluPVRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvcGNvZGU9Y29tbW9uLk9QQ09ERV9URVhUKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24u
cHV0X2J5dGVzKGZyYW1lNSkKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVz
KAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MSwgbWVzc2Fn
ZT0nR29vZGJ5ZScpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0
X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgICAgICBkcm9wX2NoYW5uZWxzID0gWwotICAg
ICAgICAgICAgYiBmb3IgYiBpbiByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29udHJv
bF9ibG9ja3MoKQotICAgICAgICAgICAgaWYgYi5vcGNvZGUgPT0gbXV4Ll9NVVhfT1BDT0RFX0RS
T1BfQ0hBTk5FTF0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgzLCBsZW4oZHJvcF9jaGFubmVs
cykpCi0gICAgICAgIGZvciBkIGluIGRyb3BfY2hhbm5lbHM6Ci0gICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKG11eC5fRFJPUF9DT0RFX0JBRF9GUkFHTUVOVEFUSU9OLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkLmRyb3BfY29kZSkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWlu
X18nOgotICAgIHVuaXR0ZXN0Lm1haW4oKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0X3N0cmVhbS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdF9z
dHJlYW0ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxYWNmZWIwNDhkM2IyMDMy
YTc5NDhjZmEyYWRlYTdjZTY0Zjk1YWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0X3N0cmVhbS5weQorKysgL2Rldi9udWxs
CkBAIC0xLDc3ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQg
MjAxMSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0KLQotIiIiVGVzdHMgZm9yIHN0cmVhbSBtb2R1bGUuIiIiCi0KLQotaW1wb3J0IHVuaXR0
ZXN0Ci0KLWltcG9ydCBzZXRfc3lzX3BhdGggICMgVXBkYXRlIHN5cy5wYXRoIHRvIGxvY2F0ZSBt
b2RfcHl3ZWJzb2NrZXQgbW9kdWxlLgotCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29t
bW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgc3RyZWFtCi0KLQotY2xhc3MgU3RyZWFt
VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiQSB1bml0dGVzdCBmb3Igc3RyZWFtIG1v
ZHVsZS4iIiIKLQotICAgIGRlZiB0ZXN0X2NyZWF0ZV9oZWFkZXIoc2VsZik6Ci0gICAgICAgICMg
bW9yZSwgcnN2MSwgLi4uLCByc3Y0IGFyZSBhbGwgdHJ1ZQotICAgICAgICBoZWFkZXIgPSBzdHJl
YW0uY3JlYXRlX2hlYWRlcihjb21tb24uT1BDT0RFX1RFWFQsIDEsIDEsIDEsIDEsIDEsIDEpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4ZjFceDgxJywgaGVhZGVyKQotCi0gICAgICAgICMg
TWF4aW11bSBwYXlsb2FkIHNpemUKLSAgICAgICAgaGVhZGVyID0gc3RyZWFtLmNyZWF0ZV9oZWFk
ZXIoCi0gICAgICAgICAgICBjb21tb24uT1BDT0RFX1RFWFQsICgxIDw8IDYzKSAtIDEsIDAsIDAs
IDAsIDAsIDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4MDFceDdmXHg3Zlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmYnLCBoZWFkZXIpCi0KLSAgICAgICAgIyBJbnZhbGlkIG9wY29k
ZSAweDEwCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cmVhbS5jcmVhdGVfaGVhZGVyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAweDEwLCAwLCAwLCAwLCAwLCAwLCAwKQotCi0gICAgICAgICMgSW52YWxpZCB2YWx1
ZSAweGYgcGFzc2VkIHRvIG1vcmUgcGFyYW1ldGVyCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2Vz
KFZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbS5jcmVhdGVfaGVh
ZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb24uT1BDT0RFX1RFWFQsIDAsIDB4
ZiwgMCwgMCwgMCwgMCkKLQotICAgICAgICAjIFRvbyBsb25nIHBheWxvYWRfbGVuZ3RoCi0gICAg
ICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0cmVhbS5jcmVhdGVfaGVhZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb21t
b24uT1BDT0RFX1RFWFQsIDEgPDwgNjMsIDAsIDAsIDAsIDAsIDApCi0KLQotaWYgX19uYW1lX18g
PT0gJ19fbWFpbl9fJzoKLSAgICB1bml0dGVzdC5tYWluKCkKLQotCi0jIHZpOnN0cz00IHN3PTQg
ZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdF9zdHJlYW1faGl4aWU3NS5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvc3JjL3Rlc3QvdGVzdF9zdHJlYW1faGl4aWU3NS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggY2E5YWM3MTMwYjczMDRlYjkyZGJiYmMxNTMzYWE0MTU0NWUwMjQ2ZC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rl
c3Rfc3RyZWFtX2hpeGllNzUucHkKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0jIS91
c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCi0jIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1l
dDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIlRlc3RzIGZvciBz
dHJlYW0gbW9kdWxlLiIiIgotCi0KLWltcG9ydCB1bml0dGVzdAotCi1pbXBvcnQgc2V0X3N5c19w
YXRoICAjIFVwZGF0ZSBzeXMucGF0aCB0byBsb2NhdGUgbW9kX3B5d2Vic29ja2V0IG1vZHVsZS4K
LQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuc3RyZWFtIGltcG9ydCBTdHJlYW1IaXhpZTc1Ci1mcm9t
IHRlc3QudGVzdF9tc2d1dGlsIGltcG9ydCBfY3JlYXRlX3JlcXVlc3RfaGl4aWU3NQotCi0KLWNs
YXNzIFN0cmVhbUhpeGllNzVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAiIiJBIHVuaXR0
ZXN0IGZvciBTdHJlYW1IaXhpZTc1IGNsYXNzLiIiIgotCi0gICAgZGVmIHRlc3RfcGF5bG9hZF9s
ZW5ndGgoc2VsZik6Ci0gICAgICAgIGZvciBsZW5ndGgsIGJ5dGVzIGluICgoMCwgJ1x4MDAnKSwg
KDB4N2YsICdceDdmJyksICgweDgwLCAnXHg4MVx4MDAnKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICgweDEyMzQsICdceDgwXHhhNFx4MzQnKSk6Ci0gICAgICAgICAgICB0ZXN0X3N0
cmVhbSA9IFN0cmVhbUhpeGllNzUoX2NyZWF0ZV9yZXF1ZXN0X2hpeGllNzUoYnl0ZXMpKQotICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgICAgICBsZW5ndGgsIHRlc3Rf
c3RyZWFtLl9yZWFkX3BheWxvYWRfbGVuZ3RoX2hpeGllNzUoKSkKLQotCi1pZiBfX25hbWVfXyA9
PSAnX19tYWluX18nOgotICAgIHVuaXR0ZXN0Lm1haW4oKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBl
dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0X3V0aWwucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0
L3Rlc3RfdXRpbC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjBmNGFiMDU5NjUy
YzU4NjllYzIwNWExMjhkZjkzOTE0Y2E4YzcxZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RfdXRpbC5weQorKysgL2Rldi9u
dWxsCkBAIC0xLDIwMCArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJp
Z2h0IDIwMTEsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotCi0KLSIiIlRlc3RzIGZvciB1dGlsIG1vZHVsZS4iIiIKLQotCi1pbXBvcnQgb3MK
LWltcG9ydCByYW5kb20KLWltcG9ydCBzeXMKLWltcG9ydCB1bml0dGVzdAotCi1pbXBvcnQgc2V0
X3N5c19wYXRoICAjIFVwZGF0ZSBzeXMucGF0aCB0byBsb2NhdGUgbW9kX3B5d2Vic29ja2V0IG1v
ZHVsZS4KLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHV0aWwKLQotCi1fVEVTVF9EQVRB
X0RJUiA9IG9zLnBhdGguam9pbihvcy5wYXRoLnNwbGl0KF9fZmlsZV9fKVswXSwgJ3Rlc3RkYXRh
JykKLQotCi1jbGFzcyBVdGlsVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiQSB1bml0
dGVzdCBmb3IgdXRpbCBtb2R1bGUuIiIiCi0KLSAgICBkZWYgdGVzdF9nZXRfc3RhY2tfdHJhY2Uo
c2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ05vbmVcbicsIHV0aWwuZ2V0X3N0YWNr
X3RyYWNlKCkpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGEgPSAxIC8gMCAgIyBJbnRlbnRp
b25hbGx5IHJhaXNlIGV4Y2VwdGlvbi4KLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAg
ICAgICAgIHRyYWNlID0gdXRpbC5nZXRfc3RhY2tfdHJhY2UoKQotICAgICAgICAgICAgc2VsZi5m
YWlsVW5sZXNzKHRyYWNlLnN0YXJ0c3dpdGgoJ1RyYWNlYmFjaycpKQotICAgICAgICAgICAgc2Vs
Zi5mYWlsVW5sZXNzKHRyYWNlLmZpbmQoJ1plcm9EaXZpc2lvbkVycm9yJykgIT0gLTEpCi0KLSAg
ICBkZWYgdGVzdF9wcmVwZW5kX21lc3NhZ2VfdG9fZXhjZXB0aW9uKHNlbGYpOgotICAgICAgICBl
eGMgPSBFeGNlcHRpb24oJ1dvcmxkJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnV29ybGQn
LCBzdHIoZXhjKSkKLSAgICAgICAgdXRpbC5wcmVwZW5kX21lc3NhZ2VfdG9fZXhjZXB0aW9uKCdI
ZWxsbyAnLCBleGMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvIFdvcmxkJywgc3Ry
KGV4YykpCi0KLSAgICBkZWYgdGVzdF9nZXRfc2NyaXB0X2ludGVycChzZWxmKToKLSAgICAgICAg
Y3lnd2luX3BhdGggPSAnYzpcXGN5Z3dpblxcYmluJwotICAgICAgICBjeWd3aW5fcGVybCA9IG9z
LnBhdGguam9pbihjeWd3aW5fcGF0aCwgJ3BlcmwnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KE5vbmUsIHV0aWwuZ2V0X3NjcmlwdF9pbnRlcnAoCi0gICAgICAgICAgICBvcy5wYXRoLmpvaW4o
X1RFU1RfREFUQV9ESVIsICdSRUFETUUnKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9u
ZSwgdXRpbC5nZXRfc2NyaXB0X2ludGVycCgKLSAgICAgICAgICAgIG9zLnBhdGguam9pbihfVEVT
VF9EQVRBX0RJUiwgJ1JFQURNRScpLCBjeWd3aW5fcGF0aCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJy91c3IvYmluL3BlcmwgLXdUJywgdXRpbC5nZXRfc2NyaXB0X2ludGVycCgKLSAgICAg
ICAgICAgIG9zLnBhdGguam9pbihfVEVTVF9EQVRBX0RJUiwgJ2hlbGxvLnBsJykpKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGN5Z3dpbl9wZXJsICsgJyAtd1QnLCB1dGlsLmdldF9zY3JpcHRf
aW50ZXJwKAotICAgICAgICAgICAgb3MucGF0aC5qb2luKF9URVNUX0RBVEFfRElSLCAnaGVsbG8u
cGwnKSwgY3lnd2luX3BhdGgpKQotCi0gICAgZGVmIHRlc3RfaGV4aWZ5KHNlbGYpOgotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCc2MSA3YSA0MSA1YSAzMCAzOSAyMCAwOSAwZCAwYSAwMCBmZics
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgdXRpbC5oZXhpZnkoJ2F6QVowOSBcdFxyXG5ceDAw
XHhmZicpKQotCi0KLWNsYXNzIFJlcGVhdGVkWG9yTWFza2VyVGVzdCh1bml0dGVzdC5UZXN0Q2Fz
ZSk6Ci0gICAgIiIiQSB1bml0dGVzdCBmb3IgUmVwZWF0ZWRYb3JNYXNrZXIgY2xhc3MuIiIiCi0K
LSAgICBkZWYgdGVzdF9tYXNrKHNlbGYpOgotICAgICAgICAjIFNhbXBsZSBpbnB1dCBlNiw5Nyxh
NSBpcyBVKzY1ZTUgaW4gVVRGLTgKLSAgICAgICAgbWFza2VyID0gdXRpbC5SZXBlYXRlZFhvck1h
c2tlcignXHhmZlx4ZmZceGZmXHhmZicpCi0gICAgICAgIHJlc3VsdCA9IG1hc2tlci5tYXNrKCdc
eGU2XHg5N1x4YTUnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDE5XHg2OFx4NWEnLCBy
ZXN1bHQpCi0KLSAgICAgICAgbWFza2VyID0gdXRpbC5SZXBlYXRlZFhvck1hc2tlcignXHgwMFx4
MDBceDAwXHgwMCcpCi0gICAgICAgIHJlc3VsdCA9IG1hc2tlci5tYXNrKCdceGU2XHg5N1x4YTUn
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceGU2XHg5N1x4YTUnLCByZXN1bHQpCi0KLSAg
ICAgICAgbWFza2VyID0gdXRpbC5SZXBlYXRlZFhvck1hc2tlcignXHhlNlx4OTdceGE1XHgyMCcp
Ci0gICAgICAgIHJlc3VsdCA9IG1hc2tlci5tYXNrKCdceGU2XHg5N1x4YTUnKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCdceDAwXHgwMFx4MDAnLCByZXN1bHQpCi0KLSAgICBkZWYgdGVzdF9t
YXNrX3R3aWNlKHNlbGYpOgotICAgICAgICBtYXNrZXIgPSB1dGlsLlJlcGVhdGVkWG9yTWFza2Vy
KCdceDAwXHg3Zlx4ZmZceDIwJykKLSAgICAgICAgIyBtYXNrWzBdLCBtYXNrWzFdLCAuLi4gd2ls
bCBiZSB1c2VkLgotICAgICAgICByZXN1bHQgPSBtYXNrZXIubWFzaygnXHgwMFx4MDBceDAwXHgw
MFx4MDAnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDAwXHg3Zlx4ZmZceDIwXHgwMCcs
IHJlc3VsdCkKLSAgICAgICAgIyBtYXNrWzJdLCBtYXNrWzBdLCAuLi4gd2lsbCBiZSB1c2VkIGZv
ciB0aGUgbmV4dCBjYWxsLgotICAgICAgICByZXN1bHQgPSBtYXNrZXIubWFzaygnXHgwMFx4MDBc
eDAwXHgwMFx4MDAnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDdmXHhmZlx4MjBceDAw
XHg3ZicsIHJlc3VsdCkKLQotICAgIGRlZiB0ZXN0X21hc2tfbGFyZ2VfZGF0YShzZWxmKToKLSAg
ICAgICAgbWFza2VyID0gdXRpbC5SZXBlYXRlZFhvck1hc2tlcignbUFTaycpCi0gICAgICAgIG9y
aWdpbmFsID0gJycuam9pbihbY2hyKGkgJSAyNTYpIGZvciBpIGluIHhyYW5nZSgxMDAwKV0pCi0g
ICAgICAgIHJlc3VsdCA9IG1hc2tlci5tYXNrKG9yaWdpbmFsKQotICAgICAgICBleHBlY3RlZCA9
ICcnLmpvaW4oCi0gICAgICAgICAgICAgICAgW2NocigoaSAlIDI1NikgXiBvcmQoJ21BU2snW2kg
JSA0XSkpIGZvciBpIGluIHhyYW5nZSgxMDAwKV0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZXhwZWN0ZWQsIHJlc3VsdCkKLQotICAgICAgICBtYXNrZXIgPSB1dGlsLlJlcGVhdGVkWG9yTWFz
a2VyKCdNYVNrJykKLSAgICAgICAgZmlyc3RfcGFydCA9ICdUaGUgV2ViU29ja2V0IFByb3RvY29s
IGVuYWJsZXMgdHdvLXdheSBjb21tdW5pY2F0aW9uLicKLSAgICAgICAgcmVzdWx0ID0gbWFza2Vy
Lm1hc2soZmlyc3RfcGFydCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAg
ICAgICAnXHgxOVx0NktceDFhXHgwNDE4Ilx4MDI4XHgwZTlBXHgwM1x4MTkiXHgxNTxceDA4Ilxy
c1x4MGUjJwotICAgICAgICAgICAgICAgICdceDAwMVx4MDcoXHgxMnNceDFmOlx4MGV+XHgxYyxc
eDE4c1x4MDgiXHgwYz5ceDFlI1x4MDgwXG45JwotICAgICAgICAgICAgICAgICdceDA4PFx4MDVj
JywKLSAgICAgICAgICAgICAgICByZXN1bHQpCi0gICAgICAgIHNlY29uZF9wYXJ0ID0gJ0l0IGhh
cyB0d28gcGFydHM6IGEgaGFuZHNoYWtlIGFuZCB0aGUgZGF0YSB0cmFuc2Zlci4nCi0gICAgICAg
IHJlc3VsdCA9IG1hc2tlci5tYXNrKHNlY29uZF9wYXJ0KQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKAotICAgICAgICAgICAgICAgICIoJ0slXHgwMCBLOVx4MTY8Sz1ceDAwIVx4MWY+W3Ncbm1c
dDJceDA1KVx4MTI7XG4mXHgwNHNcbiMiCi0gICAgICAgICAgICAgICAgIlx4MDVzXHgxZiVceDA0
c1x4MGYsXHgxNTJLOVx4MTMyXHgwNT5ceDA3Nlx4MTljIiwKLSAgICAgICAgICAgICAgICByZXN1
bHQpCi0KLQotZGVmIGdldF9yYW5kb21fc2VjdGlvbihzb3VyY2UsIG1pbl9udW1fY2h1bmtzKToK
LSAgICBjaHVua3MgPSBbXQotICAgIGJ5dGVzX2NodW5rZWQgPSAwCi0KLSAgICB3aGlsZSBieXRl
c19jaHVua2VkIDwgbGVuKHNvdXJjZSk6Ci0gICAgICAgIGNodW5rX3NpemUgPSByYW5kb20ucmFu
ZGludCgKLSAgICAgICAgICAgIDEsCi0gICAgICAgICAgICBtaW4obGVuKHNvdXJjZSkgLyBtaW5f
bnVtX2NodW5rcywgbGVuKHNvdXJjZSkgLSBieXRlc19jaHVua2VkKSkKLSAgICAgICAgY2h1bmsg
PSBzb3VyY2VbYnl0ZXNfY2h1bmtlZDpieXRlc19jaHVua2VkICsgY2h1bmtfc2l6ZV0KLSAgICAg
ICAgY2h1bmtzLmFwcGVuZChjaHVuaykKLSAgICAgICAgYnl0ZXNfY2h1bmtlZCArPSBjaHVua19z
aXplCi0KLSAgICByZXR1cm4gY2h1bmtzCi0KLQotY2xhc3MgSW5mbGF0ZXJEZWZsYXRlclRlc3Qo
dW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIkEgdW5pdHRlc3QgZm9yIF9JbmZsYXRlciBhbmQg
X0RlZmxhdGVyIGNsYXNzLiIiIgotCi0gICAgZGVmIHRlc3RfaW5mbGF0ZV9kZWZsYXRlX2RlZmF1
bHQoc2VsZik6Ci0gICAgICAgIGlucHV0ID0gYidoZWxsbycgKyAnLScgKiAzMDAwMCArIGInaGVs
bG8nCi0gICAgICAgIGluZmxhdGVyMTUgPSB1dGlsLl9JbmZsYXRlcigxNSkKLSAgICAgICAgZGVm
bGF0ZXIxNSA9IHV0aWwuX0RlZmxhdGVyKDE1KQotICAgICAgICBpbmZsYXRlcjggPSB1dGlsLl9J
bmZsYXRlcig4KQotICAgICAgICBkZWZsYXRlcjggPSB1dGlsLl9EZWZsYXRlcig4KQotCi0gICAg
ICAgIGNvbXByZXNzZWQxNSA9IGRlZmxhdGVyMTUuY29tcHJlc3NfYW5kX2ZpbmlzaChpbnB1dCkK
LSAgICAgICAgY29tcHJlc3NlZDggPSBkZWZsYXRlcjguY29tcHJlc3NfYW5kX2ZpbmlzaChpbnB1
dCkKLQotICAgICAgICBpbmZsYXRlcjE1LmFwcGVuZChjb21wcmVzc2VkMTUpCi0gICAgICAgIGlu
ZmxhdGVyOC5hcHBlbmQoY29tcHJlc3NlZDgpCi0KLSAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVh
bChjb21wcmVzc2VkMTUsIGNvbXByZXNzZWQ4KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlu
cHV0LCBpbmZsYXRlcjE1LmRlY29tcHJlc3MoLTEpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGlucHV0LCBpbmZsYXRlcjguZGVjb21wcmVzcygtMSkpCi0KLSAgICBkZWYgdGVzdF9yYW5kb21f
c2VjdGlvbihzZWxmKToKLSAgICAgICAgcmFuZG9tLnNlZWQoYT0wKQotICAgICAgICBzb3VyY2Ug
PSAnJy5qb2luKAotICAgICAgICAgICAgW2NocihyYW5kb20ucmFuZGludCgwLCAyNTUpKSBmb3Ig
aSBpbiB4cmFuZ2UoMTAwICogMTAyNCldKQotCi0gICAgICAgIGNodW5rZWRfaW5wdXQgPSBnZXRf
cmFuZG9tX3NlY3Rpb24oc291cmNlLCAxMCkKLSAgICAgICAgcHJpbnQgIklucHV0IGNodW5rIHNp
emVzOiAlciIgJSBbbGVuKGMpIGZvciBjIGluIGNodW5rZWRfaW5wdXRdCi0KLSAgICAgICAgZGVm
bGF0ZXIgPSB1dGlsLl9EZWZsYXRlcigxNSkKLSAgICAgICAgY29tcHJlc3NlZCA9IFtdCi0gICAg
ICAgIGZvciBjaHVuayBpbiBjaHVua2VkX2lucHV0OgotICAgICAgICAgICAgY29tcHJlc3NlZC5h
cHBlbmQoZGVmbGF0ZXIuY29tcHJlc3MoY2h1bmspKQotICAgICAgICBjb21wcmVzc2VkLmFwcGVu
ZChkZWZsYXRlci5jb21wcmVzc19hbmRfZmluaXNoKCcnKSkKLQotICAgICAgICBjaHVua2VkX2V4
cGVjdGF0aW9uID0gZ2V0X3JhbmRvbV9zZWN0aW9uKHNvdXJjZSwgMTApCi0gICAgICAgIHByaW50
ICgiRXhwZWN0YXRpb24gY2h1bmsgc2l6ZXM6ICVyIiAlCi0gICAgICAgICAgICAgICBbbGVuKGMp
IGZvciBjIGluIGNodW5rZWRfZXhwZWN0YXRpb25dKQotCi0gICAgICAgIGluZmxhdGVyID0gdXRp
bC5fSW5mbGF0ZXIoMTUpCi0gICAgICAgIGluZmxhdGVyLmFwcGVuZCgnJy5qb2luKGNvbXByZXNz
ZWQpKQotICAgICAgICBmb3IgY2h1bmsgaW4gY2h1bmtlZF9leHBlY3RhdGlvbjoKLSAgICAgICAg
ICAgIGRlY29tcHJlc3NlZCA9IGluZmxhdGVyLmRlY29tcHJlc3MobGVuKGNodW5rKSkKLSAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2h1bmssIGRlY29tcHJlc3NlZCkKLQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCcnLCBpbmZsYXRlci5kZWNvbXByZXNzKC0xKSkKLQotCi1pZiBfX25h
bWVfXyA9PSAnX19tYWluX18nOgotICAgIHVuaXR0ZXN0Lm1haW4oKQotCi0KLSMgdmk6c3RzPTQg
c3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0ZGF0YS9SRUFETUUgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0
L3NyYy90ZXN0L3Rlc3RkYXRhL1JFQURNRQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YzAwMWFhNTU5NWNkZDEzNDA3ZjU3MjhlY2Q1MzJhNWQxMjI2M2VmYS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL1JF
QURNRQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVRlc3QgZGF0YSBkaXJlY3RvcnkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvYWJvcnRfYnlfdXNlcl93
c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL2Fib3J0X2J5X3VzZXJfd3No
LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNjdmOTkzMGY3ODI0YzNhNTM1OTE0
YTViMzc3OWY2YjZmYmEyNDNmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvYWJvcnRfYnlfdXNlcl93
c2gucHkKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0jIENvcHlyaWdodCAyMDExLCBH
b29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
Ci0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQot
Ci1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgaGFuZHNoYWtlCi0KLQotZGVmIHdlYl9zb2Nr
ZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgotICAgIHJhaXNlIGhhbmRzaGFrZS5BYm9y
dGVkQnlVc2VyRXhjZXB0aW9uKCJhYm9ydCBmb3IgdGVzdCIpCi0KLQotZGVmIHdlYl9zb2NrZXRf
dHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKLSAgICByYWlzZSBoYW5kc2hha2UuQWJvcnRlZEJ5VXNl
ckV4Y2VwdGlvbigiYWJvcnQgZm9yIHRlc3QiKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9ibGFua193c2gucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29j
a2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL2JsYW5rX3dzaC5weQpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggN2Y4N2M2YWYyM2RmMDhlZmUzNTc1Y2FlMjA4ZGU1MDIyY2JhYTY2
MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Ny
Yy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL2JsYW5rX3dzaC5weQorKysgL2Rldi9udWxsCkBAIC0x
LDMxICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMg
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBk
aXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0j
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0j
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSMgaW50ZW50aW9uYWxseSBsZWZ0IGJs
YW5rCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL29yaWdpbl9j
aGVja193c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL29yaWdpbl9jaGVj
a193c2gucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjMTM5ZmExNzZjYzM0MTdi
ZTk2ZGU3OThlNmE4MWVkMTQ5YjE5OTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9vcmlnaW5fY2hl
Y2tfd3NoLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAw
OSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0j
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0KLQotZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgotICAgIGlm
IHJlcXVlc3Qud3Nfb3JpZ2luID09ICdodHRwOi8vZXhhbXBsZS5jb20nOgotICAgICAgICByZXR1
cm4KLSAgICByYWlzZSBWYWx1ZUVycm9yKCdVbmFjY2VwdGFibGUgb3JpZ2luOiAlcicgJSByZXF1
ZXN0LndzX29yaWdpbikKLQotCi1kZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3Qp
OgotICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZSgnb3JpZ2luX2NoZWNrX3dzaC5weSBpcyBj
YWxsZWQgZm9yICVzLCAlcycgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVxdWVz
dC53c19yZXNvdXJjZSwgcmVxdWVzdC53c19wcm90b2NvbCkpCi0KLQotIyB2aTpzdHM9NCBzdz00
IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9leGNl
cHRpb25faW5fdHJhbnNmZXJfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVy
cy9zdWIvZXhjZXB0aW9uX2luX3RyYW5zZmVyX3dzaC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYjk4MmQwMjMxZWYwMGYwMmUwZDkwZGY2NzhlYjgwNGJhNDM4NjJkOS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rl
c3RkYXRhL2hhbmRsZXJzL3N1Yi9leGNlcHRpb25faW5fdHJhbnNmZXJfd3NoLnB5CisrKyAvZGV2
L251bGwKQEAgLTEsNDQgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KLSMg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMg
bWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
IyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiRXhjZXB0aW9u
IGluIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YSgpLgotIiIiCi0KLQotZGVmIHdlYl9zb2NrZXRf
ZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgotICAgIHBhc3MKLQotCi1kZWYgd2ViX3NvY2tl
dF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgotICAgIHJhaXNlIEV4Y2VwdGlvbignSW50ZW50aW9u
YWwgRXhjZXB0aW9uIGZvciAlcywgJXMnICUKLSAgICAgICAgICAgICAgICAgICAgKHJlcXVlc3Qu
d3NfcmVzb3VyY2UsIHJlcXVlc3Qud3NfcHJvdG9jb2wpKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBl
dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvbm9fd3No
X2F0X3RoZV9lbmQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9ub193
c2hfYXRfdGhlX2VuZC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTdlN2JlMTgw
MmUzYzY2YzYzODQ5ODc1ZWEzNWUyNDA2YTM4MWU2MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1
Yi9ub193c2hfYXRfdGhlX2VuZC5weQorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLSMg
Q29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0j
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0j
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotCi0KLSIiIkNvcnJlY3Qgc2lnbmF0dXJlcywgd3JvbmcgZmlsZSBuYW1l
LgotIiIiCi0KLQotZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgot
ICAgIHBhc3MKLQotCi1kZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgotICAg
IHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZSgKLSAgICAgICAgICAgICdzdWIvbm9fd3NoX2F0X3Ro
ZV9lbmQucHkgaXMgY2FsbGVkIGZvciAlcywgJXMnICUKLSAgICAgICAgICAgIChyZXF1ZXN0Lndz
X3Jlc291cmNlLCByZXF1ZXN0LndzX3Byb3RvY29sKSkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL25vbl9jYWxs
YWJsZV93c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9ub25fY2Fs
bGFibGVfd3NoLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNjM1MmViNGNhMjM4
OTUyMjM5ZTM1NDI3MjhjZTNiMzhkODNkZDZiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL25v
bl9jYWxsYWJsZV93c2gucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0jIENvcHly
aWdodCAyMDA5LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0j
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLQotCi0iIiJOb24tY2FsbGFibGUgaGFuZGxlcnMuCi0iIiIKLQotCi13ZWJfc29j
a2V0X2RvX2V4dHJhX2hhbmRzaGFrZSA9IFRydWUKLXdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YSA9
IDEKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVz
dGRhdGEvaGFuZGxlcnMvc3ViL3BsYWluX3dzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdGRhdGEv
aGFuZGxlcnMvc3ViL3BsYWluX3dzaC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZGIzZmY2OTMwMjU2YmMxYjEzZTJjNGMyZDFjODQzYzRiN2M4MGFhNC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hh
bmRsZXJzL3N1Yi9wbGFpbl93c2gucHkKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0j
IENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwot
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0j
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgot
IyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLQotCi1kZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVx
dWVzdCk6Ci0gICAgcGFzcwotCi0KLWRlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVz
dCk6Ci0gICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKCdzdWIvcGxhaW5fd3NoLnB5IGlzIGNh
bGxlZCBmb3IgJXMsICVzJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXF1ZXN0
LndzX3Jlc291cmNlLCByZXF1ZXN0LndzX3Byb3RvY29sKSkKLQotCi0jIHZpOnN0cz00IHN3PTQg
ZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL3czYy1p
bXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvdzNjLWltcG9y
dC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhZDNmMmU4NTkxMGNiNjdjYTIz
NmIxNDNmZDEwYTVhMjc3ZWRlZDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvdzNjLWltcG9y
dC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBk
aXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBt
b2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEg
cHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzCi0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13
M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3Zl
IHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90
ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9leGNlcHRpb25faW5fdHJhbnNmZXJfd3NoLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNv
Y2tldC9zcmMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvbm9fd3NoX2F0X3RoZV9lbmQucHkK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9ub25fY2FsbGFibGVfd3NoLnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC9zcmMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvcGxhaW5fd3NoLnB5Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tl
dC9zcmMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvd3JvbmdfaGFuZHNoYWtlX3NpZ193c2gu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi93cm9uZ190cmFuc2Zlcl9z
aWdfd3NoLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1
Yi93cm9uZ19oYW5kc2hha2Vfc2lnX3dzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdGRhdGEvaGFu
ZGxlcnMvc3ViL3dyb25nX2hhbmRzaGFrZV9zaWdfd3NoLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA2YmY2NTliYzlhZjAxYzEwN2VmMzUwOGIyYjVkMDE3M2RjZjU5MDA5Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3Qv
dGVzdGRhdGEvaGFuZGxlcnMvc3ViL3dyb25nX2hhbmRzaGFrZV9zaWdfd3NoLnB5CisrKyAvZGV2
L251bGwKQEAgLTEsNDUgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KLSMg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMg
bWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
IyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiV3Jvbmcgd2Vi
X3NvY2tldF9kb19leHRyYV9oYW5kc2hha2Ugc2lnbmF0dXJlLgotIiIiCi0KLQotZGVmIG5vX3dl
Yl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgotICAgIHBhc3MKLQotCi1kZWYg
d2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgotICAgIHJlcXVlc3QuY29ubmVjdGlv
bi53cml0ZSgKLSAgICAgICAgICAgICdzdWIvd3JvbmdfaGFuZHNoYWtlX3NpZ193c2gucHkgaXMg
Y2FsbGVkIGZvciAlcywgJXMnICUKLSAgICAgICAgICAgICAocmVxdWVzdC53c19yZXNvdXJjZSwg
cmVxdWVzdC53c19wcm90b2NvbCkpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi93cm9uZ190cmFuc2Zlcl9zaWdf
d3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvd3JvbmdfdHJhbnNm
ZXJfc2lnX3dzaC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTBlMmU1NTA3OTRi
N2I5OTBlMGI0NGIzM2NmYzJkNGQxNTJlNmMwNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi93
cm9uZ190cmFuc2Zlcl9zaWdfd3NoLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAot
IyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMK
LSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
IyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4K
LSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiV3Jvbmcgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKCkg
c2lnbmF0dXJlLgotIiIiCi0KLQotZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJl
cXVlc3QpOgotICAgIHBhc3MKLQotCi1kZWYgbm9fd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJl
cXVlc3QpOgotICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZSgKLSAgICAgICAgICAgICdzdWIv
d3JvbmdfdHJhbnNmZXJfc2lnX3dzaC5weSBpcyBjYWxsZWQgZm9yICVzLCAlcycgJQotICAgICAg
ICAgICAgKHJlcXVlc3Qud3NfcmVzb3VyY2UsIHJlcXVlc3Qud3NfcHJvdG9jb2wpKQotCi0KLSMg
dmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0ZGF0YS9oYW5k
bGVycy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvdzNj
LWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0MDI4YWU0Nzc2Y2Q2
NzlkZjNiNDM0NjhjNzE2MzFhMTVhZjBiMTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy93M2MtaW1w
b3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlz
IGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9U
IG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUg
YSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0
LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1v
dmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3Jj
L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvYWJvcnRfYnlfdXNlcl93c2gucHkKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90
ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL2JsYW5rX3dzaC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdGRh
dGEvaGFuZGxlcnMvb3JpZ2luX2NoZWNrX3dzaC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVz
dC90ZXN0ZGF0YS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdGRhdGEvdzNjLWlt
cG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlNTMxZjkxMzQxZjg2ZmFh
ZTQ4MTBhN2MwMjM0ZjY3NDA3YjMyYTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0ZGF0YS93M2MtaW1wb3J0LmxvZworKysg
L2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3
ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVz
ZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVl
c3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBp
biBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxl
LgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhl
czoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9u
ZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdGRh
dGEvUkVBRE1FCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3czYy1pbXBvcnQubG9nIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tl
dC9zcmMvdGVzdC93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
OGVlNzI0MGRhMjg5OTIyM2M2YzIyNDk5NzM2YWNiZGM2M2FmZDU4Mi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3czYy1pbXBvcnQu
bG9nCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGly
ZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9k
aWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1
bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cwotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNj
LXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0
aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9y
IHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVz
dC9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvY2xpZW50X2Zvcl90ZXN0aW5nLnB5Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tl
dC9zcmMvdGVzdC9lbmR0b2VuZF93aXRoX2V4dGVybmFsX3NlcnZlci5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rl
c3QvbW9jay5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvbXV4X2NsaWVudF9mb3JfdGVzdGluZy5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvc3JjL3Rlc3QvcnVuX2FsbC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3Qvc2V0X3N5c19wYXRoLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNv
Y2tldC9zcmMvdGVzdC90ZXN0X2Rpc3BhdGNoLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0X2VuZHRv
ZW5kLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0X2V4dGVuc2lvbnMucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0
L3Rlc3RfaGFuZHNoYWtlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0X2hhbmRzaGFrZV9oeWJpLnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC9zcmMvdGVzdC90ZXN0X2hhbmRzaGFrZV9oeWJpMDAucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0
L3Rlc3RfaHR0cF9oZWFkZXJfdXRpbC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdF9tZW1vcml6aW5n
ZmlsZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdF9tb2NrLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0
X21zZ3V0aWwucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RfbXV4LnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90
ZXN0X3N0cmVhbS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdF9zdHJlYW1faGl4aWU3NS5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvc3JjL3Rlc3QvdGVzdF91dGlsLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy93M2MtaW1wb3J0
LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvc3JjL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA3ZDMyYTZiNmJiYmY4NmNlODhjZTY5YWJjM2RlNWE1MzQwMDE2YzZkLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3czYy1pbXBvcnQu
bG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGly
ZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9k
aWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1
bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cwotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNj
LXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0
aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9y
IHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvQ09Q
WUlORwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvc3JjL01BTklGRVNULmluCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvUkVBRE1FCi0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMv
c2V0dXAucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC9fX2luaXRfXy5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC9f
X2luaXRfXy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTY4MzRiODI4NWE1NmJl
ZjBlMTU0M2ZkOTAxYzdlNmYyZjhiYzIwMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvX19pbml0X18ucHkKKysrIC9kZXYvbnVsbApAQCAt
MSArMCwwIEBACi0jIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0
aGlzIGRpcmVjdG9yeSBmb3IgbW9kdWxlcy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3B5d2Vic29ja2V0L3Rlc3QvY2VydC9jYWNlcnQucGVtIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L2NlcnQvY2Fj
ZXJ0LnBlbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGRhZGFlMTIxYmRkM2FkYjc0
NDM4M2NkM2JmMDhjMjI2Zjg1NTRiYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvY2VydC9jYWNlcnQucGVtCisrKyAvZGV2L251bGwKQEAg
LTEsMTcgKzAsMCBAQAotLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCi1NSUlDdkRDQ0FpV2dB
d0lCQWdJSkFLcVZnaGtHRjFyU01BMEdDU3FHU0liM0RRRUJCUVVBTUVreEN6QUpCZ05WCi1CQVlU
QWtwUU1RNHdEQVlEVlFRSUV3VlViMnQ1YnpFVU1CSUdBMVVFQ2hNTGNIbDNaV0p6YjJOclpYUXhG
REFTCi1CZ05WQkFNVEMzQjVkMlZpYzI5amEyVjBNQjRYRFRFeU1EWXdOakEzTWpRek0xb1hEVE01
TVRBeU16QTNNalF6Ci1NMW93U1RFTE1Ba0dBMVVFQmhNQ1NsQXhEakFNQmdOVkJBZ1RCVlJ2YTNs
dk1SUXdFZ1lEVlFRS0V3dHdlWGRsCi1Zbk52WTJ0bGRERVVNQklHQTFVRUF4TUxjSGwzWldKemIy
TnJaWFF3Z1o4d0RRWUpLb1pJaHZjTkFRRUJCUUFECi1nWTBBTUlHSkFvR0JBS29TRVcyYmlReFZy
TU1LZG4vOFBKekRZaVNYRFBSOVdRYkxSUlExR201amtDWWlhaFhXCi11MkNiVFRoZlBQZmkyTkhB
M0krSGxUN2dPOXlSN1JWVXZONklTVXpHd1hERXE0ZjRVTnF0UU9oUWFxcUsrQ1o5Ci1MTy9CaE8v
WVlmTnJiU1BsWXpIVUthVDllc2U3eE85VnpWS0xXK3FVZjJNamg0LytTenhCRE5QN0FnTUJBQUdq
Ci1nYXN3Z2Fnd0hRWURWUjBPQkJZRUZPc1dkeENTdXlod2FaZWFiNkJvVGhvMysrYnpNSGtHQTFV
ZEl3UnlNSENBCi1GT3NXZHhDU3V5aHdhWmVhYjZCb1RobzMrK2J6b1Uya1N6QkpNUXN3Q1FZRFZR
UUdFd0pLVURFT01Bd0dBMVVFCi1DQk1GVkc5cmVXOHhGREFTQmdOVkJBb1RDM0I1ZDJWaWMyOWph
MlYwTVJRd0VnWURWUVFERXd0d2VYZGxZbk52Ci1ZMnRsZElJSkFLcVZnaGtHRjFyU01Bd0dBMVVk
RXdRRk1BTUJBZjh3RFFZSktvWklodmNOQVFFRkJRQURnWUVBCi1nc01JMVdFWXFOdy9qaFVJZHJU
QmNDeEowWDZoSnZBOXppS0FOVm0xUnMrNFAzWURBcmtROGJDcjZ4WStLdzdzCi1acDB5RTdkTThH
TWRpK0RVNmhMM3QzRTVlTWtUUzF5WnI5V0NLNGYyUkxvK2V0OThzZWxaeWRwSGVtRjNESkozCi1n
QWo4U3g0TEJhRzhDYi9XbkVNUHYzTXhHM2ZCRTVmYXZGNlY0alUwN2hRPQotLS0tLS1FTkQgQ0VS
VElGSUNBVEUtLS0tLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L2NlcnQvY2VydC5wZW0gYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0
L3Rlc3QvY2VydC9jZXJ0LnBlbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjUzNzlh
NzJiMGRhYzVmNDE5NzljODAyYzY2M2RmOGI4OGRlYTgyOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvY2VydC9jZXJ0LnBlbQorKysgL2Rl
di9udWxsCkBAIC0xLDYxICswLDAgQEAKLUNlcnRpZmljYXRlOgotICAgIERhdGE6Ci0gICAgICAg
IFZlcnNpb246IDMgKDB4MikKLSAgICAgICAgU2VyaWFsIE51bWJlcjogMSAoMHgxKQotICAgICAg
ICBTaWduYXR1cmUgQWxnb3JpdGhtOiBzaGExV2l0aFJTQUVuY3J5cHRpb24KLSAgICAgICAgSXNz
dWVyOiBDPUpQLCBTVD1Ub2t5bywgTz1weXdlYnNvY2tldCwgQ049cHl3ZWJzb2NrZXQKLSAgICAg
ICAgVmFsaWRpdHkKLSAgICAgICAgICAgIE5vdCBCZWZvcmU6IEp1biAgNiAwNzoyNTowOCAyMDEy
IEdNVAotICAgICAgICAgICAgTm90IEFmdGVyIDogT2N0IDIzIDA3OjI1OjA4IDIwMzkgR01UCi0g
ICAgICAgIFN1YmplY3Q6IEM9SlAsIFNUPVRva3lvLCBPPXB5d2Vic29ja2V0LCBDTj1weXdlYnNv
Y2tldAotICAgICAgICBTdWJqZWN0IFB1YmxpYyBLZXkgSW5mbzoKLSAgICAgICAgICAgIFB1Ymxp
YyBLZXkgQWxnb3JpdGhtOiByc2FFbmNyeXB0aW9uCi0gICAgICAgICAgICBSU0EgUHVibGljIEtl
eTogKDEwMjQgYml0KQotICAgICAgICAgICAgICAgIE1vZHVsdXMgKDEwMjQgYml0KToKLSAgICAg
ICAgICAgICAgICAgICAgMDA6ZGU6MTA6Y2U6M2E6NWE6MDQ6YTQ6MWM6Mjk6OTM6NWM6MjM6ODI6
MWE6Ci0gICAgICAgICAgICAgICAgICAgIGYyOjA2OjAxOmU2OjJiOmE0OjBmOmRkOjc3OjQ5Ojc2
Ojg5OjAzOmEyOjIxOgotICAgICAgICAgICAgICAgICAgICBkZTowNDo3NTpjNjplMjpkZDpmYjoz
NToyNzozYTphMjo5Mjo4ZToxMjo2MjoKLSAgICAgICAgICAgICAgICAgICAgMmI6M2U6MWY6ZjQ6
Nzg6ZGY6YjY6OTQ6Y2I6Mjc6ZDY6Y2I6ZDY6Mzc6ZDc6Ci0gICAgICAgICAgICAgICAgICAgIDVj
OjA4OmYwOjA5OjNlOmM5OmNlOjI0OjJkOjAwOmM5OmRmOjRhOmUwOjk5OgotICAgICAgICAgICAg
ICAgICAgICBlNTpmYjoyMzphOTplMjpkNjpjOTozZDo5NjpmYTowMTo4ODpkZTo1YTo4OToKLSAg
ICAgICAgICAgICAgICAgICAgYjA6Y2Y6MDM6Njc6NmY6MDQ6ODY6MWQ6ZWY6NjI6MWM6NTU6YTk6
MDc6OWE6Ci0gICAgICAgICAgICAgICAgICAgIDJlOjY2OjJhOjczOjViOjRjOjYyOjAzOmY5Ojgy
OjgzOmRiOjY4OmJmOmI4OgotICAgICAgICAgICAgICAgICAgICA0YjowYjo4Yjo5MzoxMTpiODo1
NDo3Mzo3YgotICAgICAgICAgICAgICAgIEV4cG9uZW50OiA2NTUzNyAoMHgxMDAwMSkKLSAgICAg
ICAgWDUwOXYzIGV4dGVuc2lvbnM6Ci0gICAgICAgICAgICBYNTA5djMgQmFzaWMgQ29uc3RyYWlu
dHM6IAotICAgICAgICAgICAgICAgIENBOkZBTFNFCi0gICAgICAgICAgICBOZXRzY2FwZSBDZXJ0
IFR5cGU6IAotICAgICAgICAgICAgICAgIFNTTCBTZXJ2ZXIKLSAgICAgICAgICAgIE5ldHNjYXBl
IENvbW1lbnQ6IAotICAgICAgICAgICAgICAgIE9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRl
Ci0gICAgICAgICAgICBYNTA5djMgU3ViamVjdCBLZXkgSWRlbnRpZmllcjogCi0gICAgICAgICAg
ICAgICAgODI6QTE6NzM6OEI6MTY6MEM6N0M6RTQ6RDM6NDY6OTU6MTM6OTU6MUE6MzI6QzE6ODQ6
RTk6MDY6MDAKLSAgICAgICAgICAgIFg1MDl2MyBBdXRob3JpdHkgS2V5IElkZW50aWZpZXI6IAot
ICAgICAgICAgICAgICAgIGtleWlkOkVCOjE2Ojc3OjEwOjkyOkJCOjI4OjcwOjY5Ojk3OjlBOjZG
OkEwOjY4OjRFOjFBOjM3OkZCOkU2OkYzCi0KLSAgICBTaWduYXR1cmUgQWxnb3JpdGhtOiBzaGEx
V2l0aFJTQUVuY3J5cHRpb24KLSAgICAgICAgNmI6YjM6NDY6Mjk6MDI6ZGY6YjA6Yzg6OGU6YzQ6
ZDc6N2Y6YTA6MWU6MGQ6MWE6ZWI6MmY6Ci0gICAgICAgIGRmOmQxOjQ4OjU3OjM2OjVmOjk1Ojhj
OjFiOmYwOjUxOmQ2OjUyOmU3OjhkOjg0OjNiOjlmOgotICAgICAgICBkODplZDoyMjo5YzphYTpi
ZDplZTo5Yjo5MDoxZDo4NDphMzo0YzowYjpjYjplYjo2NDo3MzoKLSAgICAgICAgYmE6Zjc6MTU6
Y2U6ZGE6NWY6ZGI6OGI6MTU6MDc6YTY6Mjg6N2Y6Yjk6OGM6MTE6OWI6NjQ6Ci0gICAgICAgIGQz
OmYxOmJlOjUyOjRmOmMzOmQ4OjU4OmZlOmRlOjU2OjYzOjYzOjNiOjUxOmVkOmE3OjgxOgotICAg
ICAgICBmOTowNTo1MTo3MDo2MzozMjowOTowZTo5NDo3ZTowNTpmZTphMTo1NjoxODozNDo5ODpk
NToKLSAgICAgICAgOTk6MWU6NGU6Mjc6Mzg6ODk6OTA6NmE6ZTU6Y2U6NjA6MzU6MDE6ZjU6ZGU6
MzQ6NjA6YjE6Ci0gICAgICAgIGNiOmFlCi0tLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KLU1J
SUNtRENDQWdHZ0F3SUJBZ0lCQVRBTkJna3Foa2lHOXcwQkFRVUZBREJKTVFzd0NRWURWUVFHRXdK
S1VERU8KLU1Bd0dBMVVFQ0JNRlZHOXJlVzh4RkRBU0JnTlZCQW9UQzNCNWQyVmljMjlqYTJWME1S
UXdFZ1lEVlFRREV3dHcKLWVYZGxZbk52WTJ0bGREQWVGdzB4TWpBMk1EWXdOekkxTURoYUZ3MHpP
VEV3TWpNd056STFNRGhhTUVreEN6QUoKLUJnTlZCQVlUQWtwUU1RNHdEQVlEVlFRSUV3VlViMnQ1
YnpFVU1CSUdBMVVFQ2hNTGNIbDNaV0p6YjJOclpYUXgKLUZEQVNCZ05WQkFNVEMzQjVkMlZpYzI5
amEyVjBNSUdmTUEwR0NTcUdTSWIzRFFFQkFRVUFBNEdOQURDQmlRS0IKLWdRRGVFTTQ2V2dTa0hD
bVRYQ09DR3ZJR0FlWXJwQS9kZDBsMmlRT2lJZDRFZGNiaTNmczFKenFpa280U1lpcysKLUgvUjQz
N2FVeXlmV3k5WTMxMXdJOEFrK3ljNGtMUURKMzByZ21lWDdJNm5pMXNrOWx2b0JpTjVhaWJEUEEy
ZHYKLUJJWWQ3MkljVmFrSG1pNW1Lbk5iVEdJRCtZS0QyMmkvdUVzTGk1TVJ1RlJ6ZXdJREFRQUJv
NEdQTUlHTU1Ba0cKLUExVWRFd1FDTUFBd0VRWUpZSVpJQVliNFFnRUJCQVFEQWdaQU1Dd0dDV0NH
U0FHRytFSUJEUVFmRmgxUGNHVnUKLVUxTk1JRWRsYm1WeVlYUmxaQ0JEWlhKMGFXWnBZMkYwWlRB
ZEJnTlZIUTRFRmdRVWdxRnppeFlNZk9UVFJwVVQKLWxSb3l3WVRwQmdBd0h3WURWUjBqQkJnd0Zv
QVU2eFozRUpLN0tIQnBsNXB2b0doT0dqZjc1dk13RFFZSktvWkkKLWh2Y05BUUVGQlFBRGdZRUFh
N05HS1FMZnNNaU94TmQvb0I0Tkd1c3YzOUZJVnpaZmxZd2I4RkhXVXVlTmhEdWYKLTJPMGluS3E5
N3B1UUhZU2pUQXZMNjJSenV2Y1Z6dHBmMjRzVkI2WW9mN21NRVp0azAvRytVay9EMkZqKzNsWmoK
LVl6dFI3YWVCK1FWUmNHTXlDUTZVZmdYK29WWVlOSmpWbVI1T0p6aUprR3Jsem1BMUFmWGVOR0N4
eTY0PQotLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L2Nl
cnQvY2xpZW50X2NlcnQucDEyIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L2NlcnQvY2xpZW50X2NlcnQucDEyCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNGUxMzk5Mjc5ODJmYTk4MjNhNTcyMzFhZjExMzQ5
OWQ2YTVhOGIwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCkdJVCBi
aW5hcnkgcGF0Y2gKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpsaXRlcmFsIDI1ODIKemNtWStGWEgq
amk3S01gIzB0QmcycXpGaXRQIWY8UEhBLSpOTG9AVl9nY2YwdDhXQigjST97JVlSRngqdWAlKXlK
CnoxbkchSzM1YnFoWHJYN0FiOVElamY4NnVseCVadi0+JUheQWFacHdla1A0MllufWc2diNPdVlB
OEd0bXZWalNJagp6RnBoNVUoKFolZkFTd1N1a1lYR3A9RipBKTBSZmk8YCVlT2ReRnBCaS1mI3M3
ZmlyPz4yY1ckVCM7MipHQVBfQWUKejFfI2xybjJFKGVLT01KNk4yNllKbmVfQGhwfVNLUFhVQjdG
TWVyX341fDFxZ0N7VHFubkJ1djEka3BwNU9CeiVACno8bXlTdys/WT5eakFaNCNYQS19KiFRc2J1
T2hXKHNPODM2NigkOygxQT5tbyhPLSV4KGhuKD15Wjt5fk5HI1FYMQp6Z0hrU2leXjhjdjRUVFNM
OXZuNXFSKD5fRDNmJm9jKmp3UGdJI0tAUSNBc0wpRDtCRCZXYjJkK0kxXko3bj59WVoKemJDWG85
Zk9AZyFAZFdZYTJWJX07KSF7PHpEY3wocHZKSWF4VzdOZE8lTzZmPnImYU9ycEhre29fUjltUTQ3
dW9iCno/bD45fG58WDNgYWdwXkc7THdYUjU8KGxyK1I8Y0w1alRRKD9eRDxrUm8hSF9UI3A/eTNk
fV50Q1lWIThSXk4/fQp6QyolWG05TGVmPmo3aGxyLT9qSGxwfHdmQSZebi1zOzwheiRxRDF4UHEh
OEtRMX1+ZHVwd35CTTFnc35AQW87Q3EKendSZ1V8Ml5kfU4tZ1Y7QGFZa3U4SSV9fDxsNlFNPz1k
fkZZcGJHRkg5JnZOZ0taKlN5Y0lTfG1jdU9SP2wmQ093Cnpze3pkNXptZWx4cU4xRFF5e31QZ0I9
dSNmeklOUGtCMG9OKmNrM3ZgKzF7IVlYUH57RVZJN1ZxaCp+dWFXX35VQwp6bFIzM1JaMDVIaGtD
LTFlSXApLUBZXnl2Yy18UiUhKjlkdzduZlcpeWpjSElZZjZyPWFDdChVaGktRkptMm57XykKeiV7
dWxCVVhSYDI8Pmx4fWVHbVNtUko+NW90a0AoK3Bqc1BxOzRoWjZGSUtsI3tueFAhQUwhMjhfX0FZ
ZmxgVmd7CnpsUlJhQVJ8Vm15MV9gXmJialpyekF7USRsWWVqSVlkXkEkWj5XJmp5bk09S2BUbDR3
Vikzd0BkMUpjYC01LUNHSgp6eHFeQDhfKCE8WkYycWxoX1p9fW5yP1MmNSp6K0ZAKXYoWjFFSXM7
SG19ITF+TVRMIWoxQGMkWkhMUn1WKD07Xm8KemRVcGZ5P28+eXpvbF9zaTw8VUVCPXQoZWVCemdK
XldZd3NIQ0c5MzRzJGQpQHFxSHdnXnlaTXtgXmpKITk7dHI2Cnplb1VheSYkK0J5R3xOXl96b0FI
XnRZSWc+aGFZd3xAfGMzMV53KG5VZDdrKFltRUo3NlZZNzkrKEMoXyQ7MU1zVQp6aGlOaStCNWdT
ckRqfDk+PEA/NlImOHpibThicj9DLU5uMWNrKCs8TkslNyk2di13V3E0PU1fVGJ0MTk0elUqeUYK
emg8b3Q8SEJXbm94QiUxazkoTTBvPE5nKVJnSFMoIz9lZEVRQiFefEZrLV8oYWBiVUJMQUsqaH5h
en4hX3h1PVQ0Cno2RzVLLWFYSm90SFFsRUM4Q1U1fFJ5TVJ1UWtYRSk/XnY2KGk9TXUpPSRebyUw
IXlzNUdWUmFYWjJTMkg0STgzTAp6cSliYHxQeHsoODlXMzJ6cTRzcXpIK0JBS1A5dWFERXBEOElJ
QTlELUg0NUMlVlQ/SkojTWErQkBpOU1QZEYtIyMKek54RjVUdX1pel9oeiRTS1owX18mIVlwMXlh
ZFZ6b2NARXkrQmVmSkN0Q1NWZDUoSnkoPEM2SWNDV31EbUh3QzhUCnpSe2txdlJAPzNyekxHMiRa
ZGN4LTV2RlJAZCRRI0REK357ZGhAbWRfZWBCQjYqVVk2Uis0XiNVJXo0bHR4OUIlOwp6TlY4eip7
R2NHTTtncTJSdHlkantIMFMwcCN6PDYlN20zISV7P01RdWE8YEBlNWJPdGJkIUVjP0dedXhmNGd4
Y0kKei1GN1NUWWl+dkRibXZDWjNORGNmSGo4PkM5RlY2amQxfShwU3dyZ0drKlFaOVJyNCk2IXNT
a1RVcWJ4YmFlYTJ1Cnp3U2AkeW9zUSllYiVvX3ZKTyohQWBkUjtZNGs+JnFZenVhLVpORTwzRkU9
SStlU1U7eCFwdF5BMzU+b0lvUGBKcQp6Wmx+KXJDNjBMK2tTeEFnb1BFfHJHalZAPzJBeSpYYj0k
Y2BjX0wzPUV6aGpCVUQ9aDFfNCVlQkNmbGomRUhabU8KenN7MWJ8TnV4Nis7SyNLQj1Ua198aWt8
eyowMWRrJDlLYTZgY1JVPU1jWWlOIWstYSkyUEQzMWg8Y1RzJWtQaG9aCnpPKTJ3X1Q5LTh3Mk5N
JiZxMnBsNF5LcX1DUGU9bDlocSRXNCF0O0pEJXxVSigyOHZEYk0qTD5WRjdiV19Ye2IxNAp6R053
KHc+RV9TOWA8O3hRbFBgQHNkPjZtM24yKUwpMHAhWFJyRCMyNWlJa1JEcykxdWpOJVNzeXcjNjJ2
ZHYmQWwKemNkai1ZbCM2K0BhMFdzY1U8M2BndlckMnctKF5IZkVSeXhzTnNxNm1LMGQ4Oz8wTFNl
TmglTkVlMEJZSjRJTChhCnokV1huZClQQlc8QVRre3klMlM5R1BhMnF5SlckXkpKX2NvX1hQMW05
RX1qKVE/XmwkIypNRHhQNXxtWTF6Y3EzeQp6Yj1AenlDWHVnd2R7Tmp4P2kyN2orelhPNCpWPn1a
ZS16QlF4KUh5bndMYE5qKCE5dCk1NGRPO3pUVn4tTyM7VTsKek13cDBQVS11VUw/IyM4TC0pJnZt
Ym5BbW4jQCZhPnY9Y1B9RVVRSlZ3YUR3OVY8LUl3WXRpVDl3KFRNZWEyJUR5Cnp8QTQwJE41dW9p
UUVeX3tTMS1pYHE1bHR0cGc+U0Q0cGFmaGZsQnw2UEU+IT5zaFdrb0VtWmhnK34wSHA8M0tUQAp6
OWprJHFNQz0wJkJia15mUm80ZjM4Sn5pV0N8eEdQMGB3WjNGI2s4ZypJZE5ZJEdGLUF4OF48RHJC
XmoyOFhiNnMKelJ8O1Z2YXIlPHxUWkt+PjMwa0QzKVckQUQjKHR0YCNAeDdROE9ZYXBUX0p5TTF2
VD9sYngtK19GKEpGJXlTME8kCnpwUyNsfXcqMGo+Yn1NM2U7NEk+e3BNTT5zJWA/ZlNBRV9RYmBB
bj5fViFraX0kOXdNTjkoZlUxdUpHbTBNaTdoSwp6QTVsMGUxd1ZjXiRxbD81Z20+OEV2QnBTYVdm
NVRJZzNaU2J1SmhwO2ElKFora2N7Y2R2MVB1WCRlMkdBTj9KZjgKeldLTmdTPChNMkZOVWBSeGRC
R31mPVMxcm5RKmVSMTJxRl9DJiZwbkBgeSVDfkw5XlFfWjlsaCZHPVh2R0MhNDEwCnp5bik1bz0p
eDJpSlkrXj9eRUxqbnRISGB9Syl6YT9JPXx2ISRoTDBuJkd6eXB6YUx3TmRlTT1Pald8LS09bVJf
agp6eXQ/flZ4X185QkV2Y2hMPzlodVVvYi01bityMT88eEBjZ301YXxWfEZjRlFPKmVJcHdaRW5+
VkdMZXF2U0BXazIKeikhK0QzLTt7NEBPTyliK2JRTyM9LUUrQmVPQGYhMzxpVDBtYjJwYjM4OHtH
SVJhcmpkblRpJUA/NHF3eSNxNjBZCnpxaUF8e3Q2bzQ5RU0xOEomdzhEQSN3UUREc0Z3TiRIRypN
VEwyMUJRailZUmBXNUw7WmZNTTwqckw9RklnfDBiSgp6VDlyN0ZsQkxMXnJWJTFVTyEzfEdERWFN
IWpIUExyPzVRQnVDQyFXKT5kcmZeUkNgYDdZUllaKEs+aWUwPnBKZF4KekpXX0h7JSleYyE2Pmx8
OVA4P2M9aihCNTdZSno4P1h5UXpFOXVHYX1kVjBQVHAzITtwIVNGKX10LWk+QzxFZEgrCnpNS0FT
blYjISZTV2ZkfTBkbGpYc3lRZnpzQDZpMCtkcVNISkx+Rjd+b3R8JEh3ZitGKjBqQ0sqdzVXb0ZA
UTloTgp6aGxrJVN7aDZDNTdDSTJfNVI5O2YzO3AtMT5EVW4qVV5lb0dqaHFvOypSKiRrVkUwMUo+
VEpRUnN2OW96JmshM3oKemtXVDsqMFFlME0zVUNMdzBEPUorZkdmY0Z2SlV8YFVkc0tfMzR0VHZI
e2YmLVk4V0ZHaD9eUCFYNTt5PUZadURzCmZmcldrMCVNKE9HblRNTjxoJnFAeUxkRFVfJk1jQWY/
fDFrTWVqVU5vCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L2NlcnQva2V5LnBlbSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVz
dC9jZXJ0L2tleS5wZW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhZTg1ODMxOGYy
OWJhNmI0NjIzYmQ1ZmJjNGEwOGNlNzNkOTAzMTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L2NlcnQva2V5LnBlbQorKysgL2Rldi9udWxs
CkBAIC0xLDE1ICswLDAgQEAKLS0tLS0tQkVHSU4gUlNBIFBSSVZBVEUgS0VZLS0tLS0KLU1JSUNY
Z0lCQUFLQmdRRGVFTTQ2V2dTa0hDbVRYQ09DR3ZJR0FlWXJwQS9kZDBsMmlRT2lJZDRFZGNiaTNm
czEKLUp6cWlrbzRTWWlzK0gvUjQzN2FVeXlmV3k5WTMxMXdJOEFrK3ljNGtMUURKMzByZ21lWDdJ
Nm5pMXNrOWx2b0IKLWlONWFpYkRQQTJkdkJJWWQ3MkljVmFrSG1pNW1Lbk5iVEdJRCtZS0QyMmkv
dUVzTGk1TVJ1RlJ6ZXdJREFRQUIKLUFvR0JBSXVDdVYxVmNuYjdybThDd3RnWlA1WGdtWTh2U2p4
VGxkYWZhNlh2YXdFWVVUUDBTNzd2LzFsbGcxWXYKLVVJVitJK1BRZ0c5b1ZvWU9sMjJMb2ltSFMv
WjNlMWZzb3Q1dERZc3pHZTgvR2tzdDRvYVJlU294dkJVYTZXWHAKLVFTbzdZRkNhanVIdEUrVy9n
ekYrVUhiZHp6WElEalFaMzE0TE5GNXQrNFVuc0VQQkFrRUErZ2lySW1xV29NMnQKLTNVUjhmOG9l
a0VSd3NtRU1mOURINVlwSDRjdlVudkkra3dlc0MvcjJVOFNobysrZnlFTVVObTdhSVhHcU5MZ2EK
LW9nQU0rNE5YNFFKQkFPTmRTeFNheTIyZWdUR05vSWhMbmRsaldrdU90LzlGV2oya2xmLzRReEQ0
YmxNSlE1T3EKLVFkT0dBaDduVlFqcFBMUTVEN0NCVkFLcEdNMkNEK1FKQnRzQ1FFUDJrejM1cHhQ
eWxHM3VyY0MybWZReEJra1cKLVpDVmlCTlA1OEd3SjBiT2F1VE9TQkV3RlhXdUxxVHc4YUR3eEw0
OVVObXFjME4wZnBlMmZBZWhqM1VFQ1FRQ20KLUZIL0RqVThMdzd5YmRkak50bTZYWFB1WU5hZ3h6
M2Nia0I0QjNGY2hEbGVJVUR3TW9WRjBNVzliSTUvNTRtVjEKLVFEazF0VUtvcnR4dlFaSmFBRDRC
QWtFQWhHT0hRcVBkNmJCQm9GQnZwYUx6UEpNeHdMS3JCK1d0a3EvUWxDNzIKLUNsUmlNbjJnOFNB
TGlJTDNCRGdHWEtjS0UvV3k3am8vYWYvSkN6US9jUHF0L0E9PQotLS0tLS1FTkQgUlNBIFBSSVZB
VEUgS0VZLS0tLS0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC9jZXJ0L3czYy1pbXBvcnQubG9nIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNv
Y2tldC90ZXN0L2NlcnQvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGQ4MTI0MTZiODZiNWU1OGZkZjUyZTFlNTk2YzcxZGJlYjFiNDQ1MWUuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L2NlcnQvdzNjLWlt
cG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhp
cyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5P
VCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRl
IGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93
ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9y
dC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVt
b3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rl
c3QvY2VydC9jYWNlcnQucGVtCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L2NlcnQvY2VydC5wZW0KLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3Qv
Y2VydC9jbGllbnRfY2VydC5wMTIKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvY2VydC9rZXkucGVtCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L3Rlc3QvY2xpZW50X2Zvcl90ZXN0aW5nLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L2NsaWVudF9mb3Jf
dGVzdGluZy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMThkMTg1NzEyZWVhNDA4
YTIzZDI0ZmJjY2UxYWFmNDkzYTVhYTdlMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvY2xpZW50X2Zvcl90ZXN0aW5nLnB5CisrKyAvZGV2
L251bGwKQEAgLTEsMTEwMCArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29w
eXJpZ2h0IDIwMTIsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
LSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotCi0KLSIiIldlYlNvY2tldCBjbGllbnQgdXRpbGl0eSBmb3IgdGVzdGluZy4K
LQotVGhpcyBtb2R1bGUgY29udGFpbnMgaGVscGVyIG1ldGhvZHMgZm9yIHBlcmZvcm1pbmcgaGFu
ZHNoYWtlLCBmcmFtZQotc2VuZGluZy9yZWNlaXZpbmcgYXMgYSBXZWJTb2NrZXQgY2xpZW50Lgot
Ci1UaGlzIGlzIGNvZGUgZm9yIHRlc3RpbmcgbW9kX3B5d2Vic29ja2V0LiBLZWVwIHRoaXMgY29k
ZSBpbmRlcGVuZGVudCBmcm9tCi1tb2RfcHl3ZWJzb2NrZXQuIERvbid0IGltcG9ydCBlLmcuIFN0
cmVhbSBjbGFzcyBmb3IgZ2VuZXJhdGluZyBmcmFtZSBmb3IKLXRlc3RpbmcuIFVzaW5nIHV0aWwu
aGV4aWZ5LCBldGMuIHRoYXQgYXJlIG5vdCByZWxhdGVkIHRvIHByb3RvY29sIHByb2Nlc3NpbmcK
LWlzIGFsbG93ZWQuCi0KLU5vdGU6Ci1UaGlzIGNvZGUgaXMgZmFyIGZyb20gcm9idXN0LCBlLmcu
LCB3ZSBjdXQgY29ybmVycyBpbiBoYW5kc2hha2UuCi0iIiIKLQotCi1pbXBvcnQgYmFzZTY0Ci1p
bXBvcnQgZXJybm8KLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgb3MKLWltcG9ydCByYW5kb20KLWlt
cG9ydCByZQotaW1wb3J0IHNvY2tldAotaW1wb3J0IHN0cnVjdAotaW1wb3J0IHRpbWUKLQotZnJv
bSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1w
b3J0IHV0aWwKLQotCi1ERUZBVUxUX1BPUlQgPSA4MAotREVGQVVMVF9TRUNVUkVfUE9SVCA9IDQ0
MwotCi0jIE9wY29kZXMgaW50cm9kdWNlZCBpbiBJRVRGIEh5QmkgMDEgZm9yIHRoZSBuZXcgZnJh
bWluZyBmb3JtYXQKLU9QQ09ERV9DT05USU5VQVRJT04gPSAweDAKLU9QQ09ERV9DTE9TRSA9IDB4
OAotT1BDT0RFX1BJTkcgPSAweDkKLU9QQ09ERV9QT05HID0gMHhhCi1PUENPREVfVEVYVCA9IDB4
MQotT1BDT0RFX0JJTkFSWSA9IDB4MgotCi0jIFN0cmluZ3MgdXNlZCBmb3IgaGFuZHNoYWtlCi1f
VVBHUkFERV9IRUFERVIgPSAnVXBncmFkZTogd2Vic29ja2V0XHJcbicKLV9VUEdSQURFX0hFQURF
Ul9ISVhJRTc1ID0gJ1VwZ3JhZGU6IFdlYlNvY2tldFxyXG4nCi1fQ09OTkVDVElPTl9IRUFERVIg
PSAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nCi0KLVdFQlNPQ0tFVF9BQ0NFUFRfVVVJRCA9ICcy
NThFQUZBNS1FOTE0LTQ3REEtOTVDQS1DNUFCMERDODVCMTEnCi0KLSMgU3RhdHVzIGNvZGVzCi1T
VEFUVVNfTk9STUFMX0NMT1NVUkUgPSAxMDAwCi1TVEFUVVNfR09JTkdfQVdBWSA9IDEwMDEKLVNU
QVRVU19QUk9UT0NPTF9FUlJPUiA9IDEwMDIKLVNUQVRVU19VTlNVUFBPUlRFRF9EQVRBID0gMTAw
MwotU1RBVFVTX05PX1NUQVRVU19SRUNFSVZFRCA9IDEwMDUKLVNUQVRVU19BQk5PUk1BTF9DTE9T
VVJFID0gMTAwNgotU1RBVFVTX0lOVkFMSURfRlJBTUVfUEFZTE9BRF9EQVRBID0gMTAwNwotU1RB
VFVTX1BPTElDWV9WSU9MQVRJT04gPSAxMDA4Ci1TVEFUVVNfTUVTU0FHRV9UT09fQklHID0gMTAw
OQotU1RBVFVTX01BTkRBVE9SWV9FWFQgPSAxMDEwCi1TVEFUVVNfSU5URVJOQUxfRU5EUE9JTlRf
RVJST1IgPSAxMDExCi1TVEFUVVNfVExTX0hBTkRTSEFLRSA9IDEwMTUKLQotIyBFeHRlbnNpb24g
dG9rZW5zCi1fREVGTEFURV9GUkFNRV9FWFRFTlNJT04gPSAnZGVmbGF0ZS1mcmFtZScKLSMgVE9E
TyhiYXNoaSk6IFVwZGF0ZSBhZnRlciBtdXggaW1wbGVtZW50YXRpb24gZmluaXNoZWQuCi1fTVVY
X0VYVEVOU0lPTiA9ICdtdXhfRE9fTk9UX1VTRScKLV9QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5T
SU9OID0gJ3Blcm1lc3NhZ2UtZGVmbGF0ZScKLQotZGVmIF9tZXRob2RfbGluZShyZXNvdXJjZSk6
Ci0gICAgcmV0dXJuICdHRVQgJXMgSFRUUC8xLjFcclxuJyAlIHJlc291cmNlCi0KLQotZGVmIF9z
ZWNfb3JpZ2luX2hlYWRlcihvcmlnaW4pOgotICAgIHJldHVybiAnU2VjLVdlYlNvY2tldC1Pcmln
aW46ICVzXHJcbicgJSBvcmlnaW4ubG93ZXIoKQotCi0KLWRlZiBfb3JpZ2luX2hlYWRlcihvcmln
aW4pOgotICAgICMgNC4xIDEzLiBjb25jYXRlbmF0aW9uIG9mIHRoZSBzdHJpbmcgIk9yaWdpbjoi
LCBhIFUrMDAyMCBTUEFDRSBjaGFyYWN0ZXIsCi0gICAgIyBhbmQgdGhlIC9vcmlnaW4vIHZhbHVl
LCBjb252ZXJ0ZWQgdG8gQVNDSUkgbG93ZXJjYXNlLCB0byAvZmllbGRzLy4KLSAgICByZXR1cm4g
J09yaWdpbjogJXNcclxuJyAlIG9yaWdpbi5sb3dlcigpCi0KLQotZGVmIF9mb3JtYXRfaG9zdF9o
ZWFkZXIoaG9zdCwgcG9ydCwgc2VjdXJlKToKLSAgICAjIDQuMSA5LiBMZXQgL2hvc3Rwb3J0LyBi
ZSBhbiBlbXB0eSBzdHJpbmcuCi0gICAgIyA0LjEgMTAuIEFwcGVuZCB0aGUgL2hvc3QvIHZhbHVl
LCBjb252ZXJ0ZWQgdG8gQVNDSUkgbG93ZXJjYXNlLCB0bwotICAgICMgL2hvc3Rwb3J0LwotICAg
IGhvc3Rwb3J0ID0gaG9zdC5sb3dlcigpCi0gICAgIyA0LjEgMTEuIElmIC9zZWN1cmUvIGlzIGZh
bHNlLCBhbmQgL3BvcnQvIGlzIG5vdCA4MCwgb3IgaWYgL3NlY3VyZS8KLSAgICAjIGlzIHRydWUs
IGFuZCAvcG9ydC8gaXMgbm90IDQ0MywgdGhlbiBhcHBlbmQgYSBVKzAwM0EgQ09MT04gY2hhcmFj
dGVyCi0gICAgIyAoOikgZm9sbG93ZWQgYnkgdGhlIHZhbHVlIG9mIC9wb3J0LywgZXhwcmVzc2Vk
IGFzIGEgYmFzZS10ZW4gaW50ZWdlciwKLSAgICAjIHRvIC9ob3N0cG9ydC8KLSAgICBpZiAoKG5v
dCBzZWN1cmUgYW5kIHBvcnQgIT0gREVGQVVMVF9QT1JUKSBvcgotICAgICAgICAoc2VjdXJlIGFu
ZCBwb3J0ICE9IERFRkFVTFRfU0VDVVJFX1BPUlQpKToKLSAgICAgICAgaG9zdHBvcnQgKz0gJzon
ICsgc3RyKHBvcnQpCi0gICAgIyA0LjEgMTIuIGNvbmNhdGVuYXRpb24gb2YgdGhlIHN0cmluZyAi
SG9zdDoiLCBhIFUrMDAyMCBTUEFDRQotICAgICMgY2hhcmFjdGVyLCBhbmQgL2hvc3Rwb3J0Lywg
dG8gL2ZpZWxkcy8uCi0gICAgcmV0dXJuICdIb3N0OiAlc1xyXG4nICUgaG9zdHBvcnQKLQotCi0j
IFRPRE8odHlvc2hpbm8pOiBEZWZpbmUgYSBiYXNlIGNsYXNzIGFuZCBtb3ZlIHRoZXNlIHNoYXJl
ZCBtZXRob2RzIHRvIHRoYXQuCi0KLQotZGVmIHJlY2VpdmVfYnl0ZXMoc29ja2V0LCBsZW5ndGgp
OgotICAgIHJlY2VpdmVkX2J5dGVzID0gW10KLSAgICByZW1haW5pbmcgPSBsZW5ndGgKLSAgICB3
aGlsZSByZW1haW5pbmcgPiAwOgotICAgICAgICBuZXdfcmVjZWl2ZWRfYnl0ZXMgPSBzb2NrZXQu
cmVjdihyZW1haW5pbmcpCi0gICAgICAgIGlmIG5vdCBuZXdfcmVjZWl2ZWRfYnl0ZXM6Ci0gICAg
ICAgICAgICByYWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ0Nvbm5lY3Rpb24gY2xv
c2VkIGJlZm9yZSByZWNlaXZpbmcgcmVxdWVzdGVkIGxlbmd0aCAnCi0gICAgICAgICAgICAgICAg
JyhyZXF1ZXN0ZWQgJWQgYnl0ZXMgYnV0IHJlY2VpdmVkIG9ubHkgJWQgYnl0ZXMpJyAlCi0gICAg
ICAgICAgICAgICAgKGxlbmd0aCwgbGVuZ3RoIC0gcmVtYWluaW5nKSkKLSAgICAgICAgcmVjZWl2
ZWRfYnl0ZXMuYXBwZW5kKG5ld19yZWNlaXZlZF9ieXRlcykKLSAgICAgICAgcmVtYWluaW5nIC09
IGxlbihuZXdfcmVjZWl2ZWRfYnl0ZXMpCi0gICAgcmV0dXJuICcnLmpvaW4ocmVjZWl2ZWRfYnl0
ZXMpCi0KLQotIyBUT0RPKHR5b3NoaW5vKTogTm93IHRoZSBXZWJTb2NrZXRIYW5kc2hha2UgY2xh
c3MgZGl2ZXJ0cyB0aGVzZSBtZXRob2RzLiBXZQotIyBzaG91bGQgbW92ZSB0byBIVFRQIHBhcnNl
ciBhcyBzcGVjaWZpZWQgaW4gUkZDIDY0NTUuIEZvciBIeUJpIDAwIGFuZAotIyBIaXhpZSA3NSwg
cGFjayB0aGVzZSBtZXRob2RzIGFzIHNvbWUgcGFyc2VyIGNsYXNzLgotCi0KLWRlZiBfcmVhZF9m
aWVsZHMoc29ja2V0KToKLSAgICAjIDQuMSAzMi4gbGV0IC9maWVsZHMvIGJlIGEgbGlzdCBvZiBu
YW1lLXZhbHVlIHBhaXJzLCBpbml0aWFsbHkgZW1wdHkuCi0gICAgZmllbGRzID0ge30KLSAgICB3
aGlsZSBUcnVlOgotICAgICAgICAjIDQuMSAzMy4gbGV0IC9uYW1lLyBhbmQgL3ZhbHVlLyBiZSBl
bXB0eSBieXRlIGFycmF5cwotICAgICAgICBuYW1lID0gJycKLSAgICAgICAgdmFsdWUgPSAnJwot
ICAgICAgICAjIDQuMSAzNC4gcmVhZCAvbmFtZS8KLSAgICAgICAgbmFtZSA9IF9yZWFkX25hbWUo
c29ja2V0KQotICAgICAgICBpZiBuYW1lIGlzIE5vbmU6Ci0gICAgICAgICAgICBicmVhawotICAg
ICAgICAjIDQuMSAzNS4gcmVhZCBzcGFjZXMKLSAgICAgICAgIyBUT0RPKHR5b3NoaW5vKTogU2tp
cCBvbmx5IG9uZSBzcGFjZSBhcyBkZXNjcmliZWQgaW4gdGhlIHNwZWMuCi0gICAgICAgIGNoID0g
X3NraXBfc3BhY2VzKHNvY2tldCkKLSAgICAgICAgIyA0LjEgMzYuIHJlYWQgL3ZhbHVlLwotICAg
ICAgICB2YWx1ZSA9IF9yZWFkX3ZhbHVlKHNvY2tldCwgY2gpCi0gICAgICAgICMgNC4xIDM3LiBy
ZWFkIGEgYnl0ZSBmcm9tIHRoZSBzZXJ2ZXIKLSAgICAgICAgY2ggPSByZWNlaXZlX2J5dGVzKHNv
Y2tldCwgMSkKLSAgICAgICAgaWYgY2ggIT0gJ1xuJzogICMgMHgwQQotICAgICAgICAgICAgcmFp
c2UgRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdFeHBlY3RlZCBMRiBidXQgZm91bmQgJXIg
d2hpbGUgcmVhZGluZyB2YWx1ZSAlciBmb3IgaGVhZGVyICcKLSAgICAgICAgICAgICAgICAnJXIn
ICUgKGNoLCBuYW1lLCB2YWx1ZSkpCi0gICAgICAgICMgNC4xIDM4LiBhcHBlbmQgYW4gZW50cnkg
dG8gdGhlIC9maWVsZHMvIGxpc3QgdGhhdCBoYXMgdGhlIG5hbWUKLSAgICAgICAgIyBnaXZlbiBi
eSB0aGUgc3RyaW5nIG9idGFpbmVkIGJ5IGludGVycHJldGluZyB0aGUgL25hbWUvIGJ5dGUKLSAg
ICAgICAgIyBhcnJheSBhcyBhIFVURi04IHN0cmVhbSBhbmQgdGhlIHZhbHVlIGdpdmVuIGJ5IHRo
ZSBzdHJpbmcKLSAgICAgICAgIyBvYnRhaW5lZCBieSBpbnRlcnByZXRpbmcgdGhlIC92YWx1ZS8g
Ynl0ZSBhcnJheSBhcyBhIFVURi04IGJ5dGUKLSAgICAgICAgIyBzdHJlYW0uCi0gICAgICAgIGZp
ZWxkcy5zZXRkZWZhdWx0KG5hbWUsIFtdKS5hcHBlbmQodmFsdWUpCi0gICAgICAgICMgNC4xIDM5
LiByZXR1cm4gdG8gdGhlICJGaWVsZCIgc3RlcCBhYm92ZQotICAgIHJldHVybiBmaWVsZHMKLQot
Ci1kZWYgX3JlYWRfbmFtZShzb2NrZXQpOgotICAgICMgNC4xIDMzLiBsZXQgL25hbWUvIGJlIGVt
cHR5IGJ5dGUgYXJyYXlzCi0gICAgbmFtZSA9ICcnCi0gICAgd2hpbGUgVHJ1ZToKLSAgICAgICAg
IyA0LjEgMzQuIHJlYWQgYSBieXRlIGZyb20gdGhlIHNlcnZlcgotICAgICAgICBjaCA9IHJlY2Vp
dmVfYnl0ZXMoc29ja2V0LCAxKQotICAgICAgICBpZiBjaCA9PSAnXHInOiAgIyAweDBECi0gICAg
ICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBlbGlmIGNoID09ICdcbic6ICAjIDB4MEEKLSAg
ICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBM
RiB3aGVuIHJlYWRpbmcgaGVhZGVyIG5hbWUgJXInICUgbmFtZSkKLSAgICAgICAgZWxpZiBjaCA9
PSAnOic6ICAjIDB4M0EKLSAgICAgICAgICAgIHJldHVybiBuYW1lCi0gICAgICAgIGVsaWYgY2gg
Pj0gJ0EnIGFuZCBjaCA8PSAnWic6ICAjIHJhbmdlIDB4MzEgdG8gMHg1QQotICAgICAgICAgICAg
Y2ggPSBjaHIob3JkKGNoKSArIDB4MjApCi0gICAgICAgICAgICBuYW1lICs9IGNoCi0gICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICBuYW1lICs9IGNoCi0KLQotZGVmIF9za2lwX3NwYWNlcyhzb2Nr
ZXQpOgotICAgICMgNC4xIDM1LiByZWFkIGEgYnl0ZSBmcm9tIHRoZSBzZXJ2ZXIKLSAgICB3aGls
ZSBUcnVlOgotICAgICAgICBjaCA9IHJlY2VpdmVfYnl0ZXMoc29ja2V0LCAxKQotICAgICAgICBp
ZiBjaCA9PSAnICc6ICAjIDB4MjAKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIHJldHVy
biBjaAotCi0KLWRlZiBfcmVhZF92YWx1ZShzb2NrZXQsIGNoKToKLSAgICAjIDQuMSAzMy4gbGV0
IC92YWx1ZS8gYmUgZW1wdHkgYnl0ZSBhcnJheXMKLSAgICB2YWx1ZSA9ICcnCi0gICAgIyA0LjEg
MzYuIHJlYWQgYSBieXRlIGZyb20gc2VydmVyLgotICAgIHdoaWxlIFRydWU6Ci0gICAgICAgIGlm
IGNoID09ICdccic6ICAjIDB4MEQKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZQotICAgICAgICBl
bGlmIGNoID09ICdcbic6ICAjIDB4MEEKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAg
ICAgICAgICAgICAgICAnVW5leHBlY3RlZCBMRiB3aGVuIHJlYWRpbmcgaGVhZGVyIHZhbHVlICVy
JyAlIHZhbHVlKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdmFsdWUgKz0gY2gKLSAgICAg
ICAgY2ggPSByZWNlaXZlX2J5dGVzKHNvY2tldCwgMSkKLQotCi1kZWYgcmVhZF9mcmFtZV9oZWFk
ZXIoc29ja2V0KToKLSAgICByZWNlaXZlZCA9IHJlY2VpdmVfYnl0ZXMoc29ja2V0LCAyKQotCi0g
ICAgZmlyc3RfYnl0ZSA9IG9yZChyZWNlaXZlZFswXSkKLSAgICBmaW4gPSAoZmlyc3RfYnl0ZSA+
PiA3KSAmIDEKLSAgICByc3YxID0gKGZpcnN0X2J5dGUgPj4gNikgJiAxCi0gICAgcnN2MiA9IChm
aXJzdF9ieXRlID4+IDUpICYgMQotICAgIHJzdjMgPSAoZmlyc3RfYnl0ZSA+PiA0KSAmIDEKLSAg
ICBvcGNvZGUgPSBmaXJzdF9ieXRlICYgMHhmCi0KLSAgICBzZWNvbmRfYnl0ZSA9IG9yZChyZWNl
aXZlZFsxXSkKLSAgICBtYXNrID0gKHNlY29uZF9ieXRlID4+IDcpICYgMQotICAgIHBheWxvYWRf
bGVuZ3RoID0gc2Vjb25kX2J5dGUgJiAweDdmCi0KLSAgICBpZiBtYXNrICE9IDA6Ci0gICAgICAg
IHJhaXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAgICdNYXNrIGJpdCBtdXN0IGJlIDAgZm9yIGZy
YW1lcyBjb21pbmcgZnJvbSBzZXJ2ZXInKQotCi0gICAgaWYgcGF5bG9hZF9sZW5ndGggPT0gMTI3
OgotICAgICAgICBleHRlbmRlZF9wYXlsb2FkX2xlbmd0aCA9IHJlY2VpdmVfYnl0ZXMoc29ja2V0
LCA4KQotICAgICAgICBwYXlsb2FkX2xlbmd0aCA9IHN0cnVjdC51bnBhY2soCi0gICAgICAgICAg
ICAnIVEnLCBleHRlbmRlZF9wYXlsb2FkX2xlbmd0aClbMF0KLSAgICAgICAgaWYgcGF5bG9hZF9s
ZW5ndGggPiAweDdGRkZGRkZGRkZGRkZGRkY6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24o
J0V4dGVuZGVkIHBheWxvYWQgbGVuZ3RoID49IDJeNjMnKQotICAgIGVsaWYgcGF5bG9hZF9sZW5n
dGggPT0gMTI2OgotICAgICAgICBleHRlbmRlZF9wYXlsb2FkX2xlbmd0aCA9IHJlY2VpdmVfYnl0
ZXMoc29ja2V0LCAyKQotICAgICAgICBwYXlsb2FkX2xlbmd0aCA9IHN0cnVjdC51bnBhY2soCi0g
ICAgICAgICAgICAnIUgnLCBleHRlbmRlZF9wYXlsb2FkX2xlbmd0aClbMF0KLQotICAgIHJldHVy
biBmaW4sIHJzdjEsIHJzdjIsIHJzdjMsIG9wY29kZSwgcGF5bG9hZF9sZW5ndGgKLQotCi1jbGFz
cyBfVExTU29ja2V0KG9iamVjdCk6Ci0gICAgIiIiV3JhcHBlciBmb3IgYSBUTFMgY29ubmVjdGlv
bi4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByYXdfc29ja2V0KToKLSAgICAgICAgc2Vs
Zi5fc3NsID0gc29ja2V0LnNzbChyYXdfc29ja2V0KQotCi0gICAgZGVmIHNlbmQoc2VsZiwgYnl0
ZXMpOgotICAgICAgICByZXR1cm4gc2VsZi5fc3NsLndyaXRlKGJ5dGVzKQotCi0gICAgZGVmIHJl
Y3Yoc2VsZiwgc2l6ZT0tMSk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9zc2wucmVhZChzaXplKQot
Ci0gICAgZGVmIGNsb3NlKHNlbGYpOgotICAgICAgICAjIE5vdGhpbmcgdG8gZG8uCi0gICAgICAg
IHBhc3MKLQotCi1jbGFzcyBIdHRwU3RhdHVzRXhjZXB0aW9uKEV4Y2VwdGlvbik6Ci0gICAgIiIi
VGhpcyBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQgd2hlbiB1bmV4cGVjdGVkIGh0dHAgc3RhdHVz
IGNvZGUgd2FzCi0gICAgcmVjZWl2ZWQgYXMgYSByZXN1bHQgb2YgaGFuZHNoYWtlLgotICAgICIi
IgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHN0YXR1cyk6Ci0gICAgICAgIHN1cGVy
KEh0dHBTdGF0dXNFeGNlcHRpb24sIHNlbGYpLl9faW5pdF9fKG5hbWUpCi0gICAgICAgIHNlbGYu
c3RhdHVzID0gc3RhdHVzCi0KLQotY2xhc3MgV2ViU29ja2V0SGFuZHNoYWtlKG9iamVjdCk6Ci0g
ICAgIiIiT3BlbmluZyBoYW5kc2hha2UgcHJvY2Vzc29yIGZvciB0aGUgV2ViU29ja2V0IHByb3Rv
Y29sIChSRkMgNjQ1NSkuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucyk6Ci0g
ICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQotCi0gICAg
ICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCi0KLSAgICBkZWYgaGFuZHNoYWtlKHNlbGYsIHNv
Y2tldCk6Ci0gICAgICAgICIiIkhhbmRzaGFrZSBXZWJTb2NrZXQuCi0KLSAgICAgICAgUmFpc2Vz
OgotICAgICAgICAgICAgRXhjZXB0aW9uOiBoYW5kc2hha2UgZmFpbGVkLgotICAgICAgICAiIiIK
LQotICAgICAgICBzZWxmLl9zb2NrZXQgPSBzb2NrZXQKLQotICAgICAgICByZXF1ZXN0X2xpbmUg
PSBfbWV0aG9kX2xpbmUoc2VsZi5fb3B0aW9ucy5yZXNvdXJjZSkKLSAgICAgICAgc2VsZi5fbG9n
Z2VyLmRlYnVnKCdPcGVuaW5nIGhhbmRzaGFrZSBSZXF1ZXN0LUxpbmU6ICVyJywgcmVxdWVzdF9s
aW5lKQotICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZGFsbChyZXF1ZXN0X2xpbmUpCi0KLSAgICAg
ICAgZmllbGRzID0gW10KLSAgICAgICAgZmllbGRzLmFwcGVuZChfVVBHUkFERV9IRUFERVIpCi0g
ICAgICAgIGZpZWxkcy5hcHBlbmQoX0NPTk5FQ1RJT05fSEVBREVSKQotCi0gICAgICAgIGZpZWxk
cy5hcHBlbmQoX2Zvcm1hdF9ob3N0X2hlYWRlcigKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMu
c2VydmVyX2hvc3QsCi0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLnNlcnZlcl9wb3J0LAotICAg
ICAgICAgICAgc2VsZi5fb3B0aW9ucy51c2VfdGxzKSkKLQotICAgICAgICBpZiBzZWxmLl9vcHRp
b25zLnZlcnNpb24gPT0gODoKLSAgICAgICAgICAgIGZpZWxkcy5hcHBlbmQoX3NlY19vcmlnaW5f
aGVhZGVyKHNlbGYuX29wdGlvbnMub3JpZ2luKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IGZpZWxkcy5hcHBlbmQoX29yaWdpbl9oZWFkZXIoc2VsZi5fb3B0aW9ucy5vcmlnaW4pKQotCi0g
ICAgICAgIG9yaWdpbmFsX2tleSA9IG9zLnVyYW5kb20oMTYpCi0gICAgICAgIGtleSA9IGJhc2U2
NC5iNjRlbmNvZGUob3JpZ2luYWxfa2V5KQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0g
ICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1LZXk6ICVzICglcyknLCBrZXksIHV0aWwuaGV4aWZ5
KG9yaWdpbmFsX2tleSkpCi0gICAgICAgIGZpZWxkcy5hcHBlbmQoJ1NlYy1XZWJTb2NrZXQtS2V5
OiAlc1xyXG4nICUga2V5KQotCi0gICAgICAgIGZpZWxkcy5hcHBlbmQoJ1NlYy1XZWJTb2NrZXQt
VmVyc2lvbjogJWRcclxuJyAlIHNlbGYuX29wdGlvbnMudmVyc2lvbikKLQotICAgICAgICAjIFNl
dHRpbmcgdXAgZXh0ZW5zaW9ucy4KLSAgICAgICAgaWYgbGVuKHNlbGYuX29wdGlvbnMuZXh0ZW5z
aW9ucykgPiAwOgotICAgICAgICAgICAgZmllbGRzLmFwcGVuZCgnU2VjLVdlYlNvY2tldC1FeHRl
bnNpb25zOiAlc1xyXG4nICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJywgJy5qb2luKHNl
bGYuX29wdGlvbnMuZXh0ZW5zaW9ucykpCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdP
cGVuaW5nIGhhbmRzaGFrZSByZXF1ZXN0IGhlYWRlcnM6ICVyJywgZmllbGRzKQotCi0gICAgICAg
IGZvciBmaWVsZCBpbiBmaWVsZHM6Ci0gICAgICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZGFsbChm
aWVsZCkKLSAgICAgICAgc2VsZi5fc29ja2V0LnNlbmRhbGwoJ1xyXG4nKQotCi0gICAgICAgIHNl
bGYuX2xvZ2dlci5pbmZvKCdTZW50IG9wZW5pbmcgaGFuZHNoYWtlIHJlcXVlc3QnKQotCi0gICAg
ICAgIGZpZWxkID0gJycKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIGNoID0gcmVj
ZWl2ZV9ieXRlcyhzZWxmLl9zb2NrZXQsIDEpCi0gICAgICAgICAgICBmaWVsZCArPSBjaAotICAg
ICAgICAgICAgaWYgY2ggPT0gJ1xuJzoKLSAgICAgICAgICAgICAgICBicmVhawotCi0gICAgICAg
IHNlbGYuX2xvZ2dlci5kZWJ1ZygnT3BlbmluZyBoYW5kc2hha2UgUmVzcG9uc2UtTGluZTogJXIn
LCBmaWVsZCkKLQotICAgICAgICBpZiBsZW4oZmllbGQpIDwgNyBvciBub3QgZmllbGQuZW5kc3dp
dGgoJ1xyXG4nKToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignV3Jvbmcgc3RhdHVzIGxp
bmU6ICVyJyAlIGZpZWxkKQotICAgICAgICBtID0gcmUubWF0Y2goJ1teIF0qIChbXiBdKikgLion
LCBmaWVsZCkKLSAgICAgICAgaWYgbSBpcyBOb25lOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0
aW9uKAotICAgICAgICAgICAgICAgICdObyBIVFRQIHN0YXR1cyBjb2RlIGZvdW5kIGluIHN0YXR1
cyBsaW5lOiAlcicgJSBmaWVsZCkKLSAgICAgICAgY29kZSA9IG0uZ3JvdXAoMSkKLSAgICAgICAg
aWYgbm90IHJlLm1hdGNoKCdbMC05XVswLTldWzAtOV0nLCBjb2RlKToKLSAgICAgICAgICAgIHJh
aXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnSFRUUCBzdGF0dXMgY29kZSAlciBpcyBu
b3QgdGhyZWUgZGlnaXQgaW4gc3RhdHVzIGxpbmU6ICVyJyAlCi0gICAgICAgICAgICAgICAgKGNv
ZGUsIGZpZWxkKSkKLSAgICAgICAgaWYgY29kZSAhPSAnMTAxJzoKLSAgICAgICAgICAgIHJhaXNl
IEh0dHBTdGF0dXNFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ0V4cGVjdGVkIEhUVFAgc3Rh
dHVzIGNvZGUgMTAxIGJ1dCBmb3VuZCAlciBpbiBzdGF0dXMgbGluZTogJwotICAgICAgICAgICAg
ICAgICclcicgJSAoY29kZSwgZmllbGQpLCBpbnQoY29kZSkpCi0gICAgICAgIGZpZWxkcyA9IF9y
ZWFkX2ZpZWxkcyhzZWxmLl9zb2NrZXQpCi0gICAgICAgIGNoID0gcmVjZWl2ZV9ieXRlcyhzZWxm
Ll9zb2NrZXQsIDEpCi0gICAgICAgIGlmIGNoICE9ICdcbic6ICAjIDB4MEEKLSAgICAgICAgICAg
IHJhaXNlIEV4Y2VwdGlvbignRXhwZWN0ZWQgTEYgYnV0IGZvdW5kOiAlcicgJSBjaCkKLQotICAg
ICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ09wZW5pbmcgaGFuZHNoYWtlIHJlc3BvbnNlIGhlYWRl
cnM6ICVyJywgZmllbGRzKQotCi0gICAgICAgICMgQ2hlY2sgL2ZpZWxkcy8KLSAgICAgICAgaWYg
bGVuKGZpZWxkc1sndXBncmFkZSddKSAhPSAxOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9u
KAotICAgICAgICAgICAgICAgICdNdWx0aXBsZSBVcGdyYWRlIGhlYWRlcnMgZm91bmQ6ICVzJyAl
IGZpZWxkc1sndXBncmFkZSddKQotICAgICAgICBpZiBsZW4oZmllbGRzWydjb25uZWN0aW9uJ10p
ICE9IDE6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ011
bHRpcGxlIENvbm5lY3Rpb24gaGVhZGVycyBmb3VuZDogJXMnICUgZmllbGRzWydjb25uZWN0aW9u
J10pCi0gICAgICAgIGlmIGZpZWxkc1sndXBncmFkZSddWzBdICE9ICd3ZWJzb2NrZXQnOgotICAg
ICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIFVw
Z3JhZGUgaGVhZGVyIHZhbHVlOiAlcycgJSBmaWVsZHNbJ3VwZ3JhZGUnXVswXSkKLSAgICAgICAg
aWYgZmllbGRzWydjb25uZWN0aW9uJ11bMF0ubG93ZXIoKSAhPSAndXBncmFkZSc6Ci0gICAgICAg
ICAgICByYWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgQ29ubmVj
dGlvbiBoZWFkZXIgdmFsdWU6ICVzJyAlCi0gICAgICAgICAgICAgICAgZmllbGRzWydjb25uZWN0
aW9uJ11bMF0pCi0KLSAgICAgICAgaWYgbGVuKGZpZWxkc1snc2VjLXdlYnNvY2tldC1hY2NlcHQn
XSkgIT0gMToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAn
TXVsdGlwbGUgU2VjLVdlYlNvY2tldC1BY2NlcHQgaGVhZGVycyBmb3VuZDogJXMnICUKLSAgICAg
ICAgICAgICAgICBmaWVsZHNbJ3NlYy13ZWJzb2NrZXQtYWNjZXB0J10pCi0KLSAgICAgICAgYWNj
ZXB0ID0gZmllbGRzWydzZWMtd2Vic29ja2V0LWFjY2VwdCddWzBdCi0KLSAgICAgICAgIyBWYWxp
ZGF0ZQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBkZWNvZGVkX2FjY2VwdCA9IGJhc2U2NC5i
NjRkZWNvZGUoYWNjZXB0KQotICAgICAgICBleGNlcHQgVHlwZUVycm9yIGFzIGU6Ci0gICAgICAg
ICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ0lsbGVnYWwg
dmFsdWUgZm9yIGhlYWRlciBTZWMtV2ViU29ja2V0LUFjY2VwdDogJyArIGFjY2VwdCkKLQotICAg
ICAgICBpZiBsZW4oZGVjb2RlZF9hY2NlcHQpICE9IDIwOgotICAgICAgICAgICAgcmFpc2UgSGFu
ZHNoYWtlRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdEZWNvZGVkIHZhbHVlIG9mIFNlYy1X
ZWJTb2NrZXQtQWNjZXB0IGlzIG5vdCAyMC1ieXRlIGxvbmcnKQotCi0gICAgICAgIHNlbGYuX2xv
Z2dlci5kZWJ1ZygnQWN0dWFsIFNlYy1XZWJTb2NrZXQtQWNjZXB0OiAlciAoJXMpJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFjY2VwdCwgdXRpbC5oZXhpZnkoZGVjb2RlZF9hY2NlcHQp
KQotCi0gICAgICAgIG9yaWdpbmFsX2V4cGVjdGVkX2FjY2VwdCA9IHV0aWwuc2hhMV9oYXNoKAot
ICAgICAgICAgICAga2V5ICsgV0VCU09DS0VUX0FDQ0VQVF9VVUlEKS5kaWdlc3QoKQotICAgICAg
ICBleHBlY3RlZF9hY2NlcHQgPSBiYXNlNjQuYjY0ZW5jb2RlKG9yaWdpbmFsX2V4cGVjdGVkX2Fj
Y2VwdCkKLQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0V4cGVjdGVkIFNlYy1XZWJTb2Nr
ZXQtQWNjZXB0OiAlciAoJXMpJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVk
X2FjY2VwdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0aWwuaGV4aWZ5KG9yaWdpbmFs
X2V4cGVjdGVkX2FjY2VwdCkpCi0KLSAgICAgICAgaWYgYWNjZXB0ICE9IGV4cGVjdGVkX2FjY2Vw
dDoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnSW52YWxp
ZCBTZWMtV2ViU29ja2V0LUFjY2VwdCBoZWFkZXI6ICVyIChleHBlY3RlZCkgIT0gJXIgJwotICAg
ICAgICAgICAgICAgICcoYWN0dWFsKScgJSAoYWNjZXB0LCBleHBlY3RlZF9hY2NlcHQpKQotCi0g
ICAgICAgIHNlcnZlcl9leHRlbnNpb25zX2hlYWRlciA9IGZpZWxkcy5nZXQoJ3NlYy13ZWJzb2Nr
ZXQtZXh0ZW5zaW9ucycpCi0gICAgICAgIGFjY2VwdGVkX2V4dGVuc2lvbnMgPSBbXQotICAgICAg
ICBpZiBzZXJ2ZXJfZXh0ZW5zaW9uc19oZWFkZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBh
Y2NlcHRlZF9leHRlbnNpb25zID0gY29tbW9uLnBhcnNlX2V4dGVuc2lvbnMoCi0gICAgICAgICAg
ICAgICAgICAgICcsICcuam9pbihzZXJ2ZXJfZXh0ZW5zaW9uc19oZWFkZXIpKQotCi0gICAgICAg
ICMgU2NhbiBhY2NlcHRlZCBleHRlbnNpb24gbGlzdCB0byBjaGVjayBpZiB0aGVyZSBpcyBhbnkg
dW5yZWNvZ25pemVkCi0gICAgICAgICMgZXh0ZW5zaW9ucyBvciBleHRlbnNpb25zIHdlIGRpZG4n
dCByZXF1ZXN0IGluIGl0LiBUaGVuLCBmb3IKLSAgICAgICAgIyBleHRlbnNpb25zIHdlIHJlcXVl
c3QsIHBhcnNlIHRoZW0gYW5kIHN0b3JlIHBhcmFtZXRlcnMuIFRoZXkgd2lsbCBiZQotICAgICAg
ICAjIHVzZWQgbGF0ZXIgYnkgZWFjaCBleHRlbnNpb24uCi0gICAgICAgIGRlZmxhdGVfZnJhbWVf
YWNjZXB0ZWQgPSBGYWxzZQotICAgICAgICBtdXhfYWNjZXB0ZWQgPSBGYWxzZQotICAgICAgICBm
b3IgZXh0ZW5zaW9uIGluIGFjY2VwdGVkX2V4dGVuc2lvbnM6Ci0gICAgICAgICAgICBpZiBleHRl
bnNpb24ubmFtZSgpID09IF9ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTjoKLSAgICAgICAgICAgICAg
ICBpZiBzZWxmLl9vcHRpb25zLnVzZV9kZWZsYXRlX2ZyYW1lOgotICAgICAgICAgICAgICAgICAg
ICBkZWZsYXRlX2ZyYW1lX2FjY2VwdGVkID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICBjb250
aW51ZQotICAgICAgICAgICAgaWYgZXh0ZW5zaW9uLm5hbWUoKSA9PSBfTVVYX0VYVEVOU0lPTjoK
LSAgICAgICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnVzZV9tdXg6Ci0gICAgICAgICAgICAg
ICAgICAgIG11eF9hY2NlcHRlZCA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUK
LSAgICAgICAgICAgIGlmIGV4dGVuc2lvbi5uYW1lKCkgPT0gX1BFUk1FU1NBR0VfREVGTEFURV9F
WFRFTlNJT046Ci0gICAgICAgICAgICAgICAgY2hlY2tlciA9IHNlbGYuX29wdGlvbnMuY2hlY2tf
cGVybWVzc2FnZV9kZWZsYXRlCi0gICAgICAgICAgICAgICAgaWYgY2hlY2tlcjoKLSAgICAgICAg
ICAgICAgICAgICAgY2hlY2tlcihleHRlbnNpb24pCi0gICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlCi0KLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnUmVj
ZWl2ZWQgdW5yZWNvZ25pemVkIGV4dGVuc2lvbjogJXMnICUgZXh0ZW5zaW9uLm5hbWUoKSkKLQot
ICAgICAgICAjIExldCBhbGwgZXh0ZW5zaW9ucyBjaGVjayB0aGUgcmVzcG9uc2UgZm9yIGV4dGVu
c2lvbiByZXF1ZXN0LgotCi0gICAgICAgIGlmIChzZWxmLl9vcHRpb25zLnVzZV9kZWZsYXRlX2Zy
YW1lIGFuZAotICAgICAgICAgICAgbm90IGRlZmxhdGVfZnJhbWVfYWNjZXB0ZWQpOgotICAgICAg
ICAgICAgcmFpc2UgRXhjZXB0aW9uKCclcyBleHRlbnNpb24gbm90IGFjY2VwdGVkJyAlCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX0RFRkxBVEVfRlJBTUVfRVhURU5TSU9OKQotCi0gICAg
ICAgIGlmIHNlbGYuX29wdGlvbnMudXNlX211eCBhbmQgbm90IG11eF9hY2NlcHRlZDoKLSAgICAg
ICAgICAgIHJhaXNlIEV4Y2VwdGlvbignJXMgZXh0ZW5zaW9uIG5vdCBhY2NlcHRlZCcgJSBfTVVY
X0VYVEVOU0lPTikKLQotCi1jbGFzcyBXZWJTb2NrZXRIeWJpMDBIYW5kc2hha2Uob2JqZWN0KToK
LSAgICAiIiJPcGVuaW5nIGhhbmRzaGFrZSBwcm9jZXNzb3IgZm9yIHRoZSBXZWJTb2NrZXQgcHJv
dG9jb2wgdmVyc2lvbiBIeUJpIDAwLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYs
IG9wdGlvbnMsIGRyYWZ0X2ZpZWxkKToKLSAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRf
Y2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKLSAg
ICAgICAgc2VsZi5fZHJhZnRfZmllbGQgPSBkcmFmdF9maWVsZAotCi0gICAgZGVmIGhhbmRzaGFr
ZShzZWxmLCBzb2NrZXQpOgotICAgICAgICAiIiJIYW5kc2hha2UgV2ViU29ja2V0LgotCi0gICAg
ICAgIFJhaXNlczoKLSAgICAgICAgICAgIEV4Y2VwdGlvbjogaGFuZHNoYWtlIGZhaWxlZC4KLSAg
ICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi5fc29ja2V0ID0gc29ja2V0Ci0KLSAgICAgICAgIyA0
LjEgNS4gc2VuZCByZXF1ZXN0IGxpbmUuCi0gICAgICAgIHJlcXVlc3RfbGluZSA9IF9tZXRob2Rf
bGluZShzZWxmLl9vcHRpb25zLnJlc291cmNlKQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWco
J09wZW5pbmcgaGFuZHNoYWtlIFJlcXVlc3QtTGluZTogJXInLCByZXF1ZXN0X2xpbmUpCi0gICAg
ICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKHJlcXVlc3RfbGluZSkKLSAgICAgICAgIyA0LjEgNi4g
TGV0IC9maWVsZHMvIGJlIGFuIGVtcHR5IGxpc3Qgb2Ygc3RyaW5ncy4KLSAgICAgICAgZmllbGRz
ID0gW10KLSAgICAgICAgIyA0LjEgNy4gQWRkIHRoZSBzdHJpbmcgIlVwZ3JhZGU6IFdlYlNvY2tl
dCIgdG8gL2ZpZWxkcy8uCi0gICAgICAgIGZpZWxkcy5hcHBlbmQoX1VQR1JBREVfSEVBREVSX0hJ
WElFNzUpCi0gICAgICAgICMgNC4xIDguIEFkZCB0aGUgc3RyaW5nICJDb25uZWN0aW9uOiBVcGdy
YWRlIiB0byAvZmllbGRzLy4KLSAgICAgICAgZmllbGRzLmFwcGVuZChfQ09OTkVDVElPTl9IRUFE
RVIpCi0gICAgICAgICMgNC4xIDktMTIuIEFkZCBIb3N0OiBmaWVsZCB0byAvZmllbGRzLy4KLSAg
ICAgICAgZmllbGRzLmFwcGVuZChfZm9ybWF0X2hvc3RfaGVhZGVyKAotICAgICAgICAgICAgc2Vs
Zi5fb3B0aW9ucy5zZXJ2ZXJfaG9zdCwKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuc2VydmVy
X3BvcnQsCi0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLnVzZV90bHMpKQotICAgICAgICAjIDQu
MSAxMy4gQWRkIE9yaWdpbjogZmllbGQgdG8gL2ZpZWxkcy8uCi0gICAgICAgIGZpZWxkcy5hcHBl
bmQoX29yaWdpbl9oZWFkZXIoc2VsZi5fb3B0aW9ucy5vcmlnaW4pKQotICAgICAgICAjIFRPRE86
IDQuMSAxNCBBZGQgU2VjLVdlYlNvY2tldC1Qcm90b2NvbDogZmllbGQgdG8gL2ZpZWxkcy8uCi0g
ICAgICAgICMgVE9ETzogNC4xIDE1IEFkZCBjb29raWUgaGVhZGVycyB0byAvZmllbGRzLy4KLQot
ICAgICAgICAjIDQuMSAxNi0yMy4gQWRkIFNlYy1XZWJTb2NrZXQtS2V5PG4+IHRvIC9maWVsZHMv
LgotICAgICAgICBzZWxmLl9udW1iZXIxLCBrZXkxID0gc2VsZi5fZ2VuZXJhdGVfc2VjX3dlYnNv
Y2tldF9rZXkoKQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ051bWJlcjE6ICVkJywgc2Vs
Zi5fbnVtYmVyMSkKLSAgICAgICAgZmllbGRzLmFwcGVuZCgnU2VjLVdlYlNvY2tldC1LZXkxOiAl
c1xyXG4nICUga2V5MSkKLSAgICAgICAgc2VsZi5fbnVtYmVyMiwga2V5MiA9IHNlbGYuX2dlbmVy
YXRlX3NlY193ZWJzb2NrZXRfa2V5KCkKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdOdW1i
ZXIyOiAlZCcsIHNlbGYuX251bWJlcjEpCi0gICAgICAgIGZpZWxkcy5hcHBlbmQoJ1NlYy1XZWJT
b2NrZXQtS2V5MjogJXNcclxuJyAlIGtleTIpCi0KLSAgICAgICAgZmllbGRzLmFwcGVuZCgnU2Vj
LVdlYlNvY2tldC1EcmFmdDogJXNcclxuJyAlIHNlbGYuX2RyYWZ0X2ZpZWxkKQotCi0gICAgICAg
ICMgNC4xIDI0LiBGb3IgZWFjaCBzdHJpbmcgaW4gL2ZpZWxkcy8sIGluIGEgcmFuZG9tIG9yZGVy
OiBzZW5kIHRoZQotICAgICAgICAjIHN0cmluZywgZW5jb2RlZCBhcyBVVEYtOCwgZm9sbG93ZWQg
YnkgYSBVVEYtOCBlbmNvZGVkIFUrMDAwRCBDQVJSSUFHRQotICAgICAgICAjIFJFVFVSTiBVKzAw
MEEgTElORSBGRUVEIGNoYXJhY3RlciBwYWlyIChDUkxGKS4KLSAgICAgICAgcmFuZG9tLnNodWZm
bGUoZmllbGRzKQotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnT3BlbmluZyBoYW5kc2hh
a2UgcmVxdWVzdCBoZWFkZXJzOiAlcicsIGZpZWxkcykKLSAgICAgICAgZm9yIGZpZWxkIGluIGZp
ZWxkczoKLSAgICAgICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKGZpZWxkKQotCi0gICAgICAg
ICMgNC4xIDI1LiBzZW5kIGEgVVRGLTgtZW5jb2RlZCBVKzAwMEQgQ0FSUklBR0UgUkVUVVJOIFUr
MDAwQSBMSU5FIEZFRUQKLSAgICAgICAgIyBjaGFyYWN0ZXIgcGFpciAoQ1JMRikuCi0gICAgICAg
IHNlbGYuX3NvY2tldC5zZW5kYWxsKCdcclxuJykKLSAgICAgICAgIyA0LjEgMjYuIGxldCAva2V5
My8gYmUgYSBzdHJpbmcgY29uc2lzdGluZyBvZiBlaWdodCByYW5kb20gYnl0ZXMgKG9yCi0gICAg
ICAgICMgZXF1aXZhbGVudGx5LCBhIHJhbmRvbSA2NCBiaXQgaW50ZWdlciBlbmNvZGVkIGluIGEg
YmlnLWVuZGlhbiBvcmRlcikuCi0gICAgICAgIHNlbGYuX2tleTMgPSBzZWxmLl9nZW5lcmF0ZV9r
ZXkzKCkKLSAgICAgICAgIyA0LjEgMjcuIHNlbmQgL2tleTMvIHRvIHRoZSBzZXJ2ZXIuCi0gICAg
ICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKHNlbGYuX2tleTMpCi0gICAgICAgIHNlbGYuX2xvZ2dl
ci5kZWJ1ZygKLSAgICAgICAgICAgICdLZXkzOiAlciAoJXMpJywgc2VsZi5fa2V5MywgdXRpbC5o
ZXhpZnkoc2VsZi5fa2V5MykpCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ1NlbnQgb3Bl
bmluZyBoYW5kc2hha2UgcmVxdWVzdCcpCi0KLSAgICAgICAgIyA0LjEgMjguIFJlYWQgYnl0ZXMg
ZnJvbSB0aGUgc2VydmVyIHVudGlsIGVpdGhlciB0aGUgY29ubmVjdGlvbgotICAgICAgICAjIGNs
b3Nlcywgb3IgYSAweDBBIGJ5dGUgaXMgcmVhZC4gbGV0IC9maWVsZC8gYmUgdGhlc2UgYnl0ZXMs
IGluY2x1ZGluZwotICAgICAgICAjIHRoZSAweDBBIGJ5dGVzLgotICAgICAgICBmaWVsZCA9ICcn
Ci0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICBjaCA9IHJlY2VpdmVfYnl0ZXMoc2Vs
Zi5fc29ja2V0LCAxKQotICAgICAgICAgICAgZmllbGQgKz0gY2gKLSAgICAgICAgICAgIGlmIGNo
ID09ICdcbic6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICBzZWxmLl9sb2dnZXIu
ZGVidWcoJ09wZW5pbmcgaGFuZHNoYWtlIFJlc3BvbnNlLUxpbmU6ICVyJywgZmllbGQpCi0KLSAg
ICAgICAgIyBpZiAvZmllbGQvIGlzIG5vdCBhdCBsZWFzdCBzZXZlbiBieXRlcyBsb25nLCBvciBp
ZiB0aGUgbGFzdAotICAgICAgICAjIHR3byBieXRlcyBhcmVuJ3QgMHgwRCBhbmQgMHgwQSByZXNw
ZWN0aXZlbHksIG9yIGlmIGl0IGRvZXMgbm90Ci0gICAgICAgICMgY29udGFpbiBhdCBsZWFzdCB0
d28gMHgyMCBieXRlcywgdGhlbiBmYWlsIHRoZSBXZWJTb2NrZXQgY29ubmVjdGlvbgotICAgICAg
ICAjIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KLSAgICAgICAgaWYgbGVuKGZpZWxkKSA8IDcgb3Ig
bm90IGZpZWxkLmVuZHN3aXRoKCdcclxuJyk6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24o
J1dyb25nIHN0YXR1cyBsaW5lOiAlcicgJSBmaWVsZCkKLSAgICAgICAgbSA9IHJlLm1hdGNoKCdb
XiBdKiAoW14gXSopIC4qJywgZmllbGQpCi0gICAgICAgIGlmIG0gaXMgTm9uZToKLSAgICAgICAg
ICAgIHJhaXNlIEV4Y2VwdGlvbignTm8gY29kZSBmb3VuZCBpbiBzdGF0dXMgbGluZTogJXInICUg
ZmllbGQpCi0gICAgICAgICMgNC4xIDI5LiBsZXQgL2NvZGUvIGJlIHRoZSBzdWJzdHJpbmcgb2Yg
L2ZpZWxkLyB0aGF0IHN0YXJ0cyBmcm9tIHRoZQotICAgICAgICAjIGJ5dGUgYWZ0ZXIgdGhlIGZp
cnN0IDB4MjAgYnl0ZSwgYW5kIGVuZHMgd2l0aCB0aGUgYnl0ZSBiZWZvcmUgdGhlCi0gICAgICAg
ICMgc2Vjb25kIDB4MjAgYnl0ZS4KLSAgICAgICAgY29kZSA9IG0uZ3JvdXAoMSkKLSAgICAgICAg
IyA0LjEgMzAuIGlmIC9jb2RlLyBpcyBub3QgdGhyZWUgYnl0ZXMgbG9uZywgb3IgaWYgYW55IG9m
IHRoZSBieXRlcyBpbgotICAgICAgICAjIC9jb2RlLyBhcmUgbm90IGluIHRoZSByYW5nZSAweDMw
IHRvIDB4OTAsIHRoZW4gZmFpbCB0aGUgV2ViU29ja2V0Ci0gICAgICAgICMgY29ubmVjdGlvbiBh
bmQgYWJvcnQgdGhlc2Ugc3RlcHMuCi0gICAgICAgIGlmIG5vdCByZS5tYXRjaCgnWzAtOV1bMC05
XVswLTldJywgY29kZSk6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAg
ICAgICAgJ0hUVFAgc3RhdHVzIGNvZGUgJXIgaXMgbm90IHRocmVlIGRpZ2l0IGluIHN0YXR1cyBs
aW5lOiAlcicgJQotICAgICAgICAgICAgICAgIChjb2RlLCBmaWVsZCkpCi0gICAgICAgICMgNC4x
IDMxLiBpZiAvY29kZS8sIGludGVycHJldGVkIGFzIFVURi04LCBpcyAiMTAxIiwgdGhlbiBtb3Zl
IHRvIHRoZQotICAgICAgICAjIG5leHQgc3RlcC4KLSAgICAgICAgaWYgY29kZSAhPSAnMTAxJzoK
LSAgICAgICAgICAgIHJhaXNlIEh0dHBTdGF0dXNFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAg
J0V4cGVjdGVkIEhUVFAgc3RhdHVzIGNvZGUgMTAxIGJ1dCBmb3VuZCAlciBpbiBzdGF0dXMgbGlu
ZTogJwotICAgICAgICAgICAgICAgICclcicgJSAoY29kZSwgZmllbGQpLCBpbnQoY29kZSkpCi0g
ICAgICAgICMgNC4xIDMyLTM5LiByZWFkIGZpZWxkcyBpbnRvIC9maWVsZHMvCi0gICAgICAgIGZp
ZWxkcyA9IF9yZWFkX2ZpZWxkcyhzZWxmLl9zb2NrZXQpCi0KLSAgICAgICAgc2VsZi5fbG9nZ2Vy
LmRlYnVnKCdPcGVuaW5nIGhhbmRzaGFrZSByZXNwb25zZSBoZWFkZXJzOiAlcicsIGZpZWxkcykK
LQotICAgICAgICAjIDQuMSA0MC4gX0ZpZWxkcyBwcm9jZXNzaW5nXwotICAgICAgICAjIHJlYWQg
YSBieXRlIGZyb20gc2VydmVyCi0gICAgICAgIGNoID0gcmVjZWl2ZV9ieXRlcyhzZWxmLl9zb2Nr
ZXQsIDEpCi0gICAgICAgIGlmIGNoICE9ICdcbic6ICAjIDB4MEEKLSAgICAgICAgICAgIHJhaXNl
IEV4Y2VwdGlvbignRXhwZWN0ZWQgTEYgYnV0IGZvdW5kICVyJyAlIGNoKQotICAgICAgICAjIDQu
MSA0MS4gY2hlY2sgL2ZpZWxkcy8KLSAgICAgICAgaWYgbGVuKGZpZWxkc1sndXBncmFkZSddKSAh
PSAxOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdNdWx0
aXBsZSBVcGdyYWRlIGhlYWRlcnMgZm91bmQ6ICVzJyAlIGZpZWxkc1sndXBncmFkZSddKQotICAg
ICAgICBpZiBsZW4oZmllbGRzWydjb25uZWN0aW9uJ10pICE9IDE6Ci0gICAgICAgICAgICByYWlz
ZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ011bHRpcGxlIENvbm5lY3Rpb24gaGVhZGVy
cyBmb3VuZDogJXMnICUgZmllbGRzWydjb25uZWN0aW9uJ10pCi0gICAgICAgIGlmIGxlbihmaWVs
ZHNbJ3NlYy13ZWJzb2NrZXQtb3JpZ2luJ10pICE9IDE6Ci0gICAgICAgICAgICByYWlzZSBFeGNl
cHRpb24oCi0gICAgICAgICAgICAgICAgJ011bHRpcGxlIFNlYy1XZWJTb2NrZXQtT3JpZ2luIGhl
YWRlcnMgZm91bmQ6ICVzJyAlCi0gICAgICAgICAgICAgICAgZmllbGRzWydzZWMtc2Vic29ja2V0
LW9yaWdpbiddKQotICAgICAgICBpZiBsZW4oZmllbGRzWydzZWMtd2Vic29ja2V0LWxvY2F0aW9u
J10pICE9IDE6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAg
J011bHRpcGxlIFNlYy1XZWJTb2NrZXQtTG9jYXRpb24gaGVhZGVycyBmb3VuZDogJXMnICUKLSAg
ICAgICAgICAgICAgICBmaWVsZHNbJ3NlYy1zZWJzb2NrZXQtbG9jYXRpb24nXSkKLSAgICAgICAg
IyBUT0RPKHVrYWkpOiBwcm90b2NvbAotICAgICAgICAjIGlmIHRoZSBlbnRyeSdzIG5hbWUgaXMg
InVwZ3JhZGUiCi0gICAgICAgICMgIGlmIHRoZSB2YWx1ZSBpcyBub3QgZXhhY3RseSBlcXVhbCB0
byB0aGUgc3RyaW5nICJXZWJTb2NrZXQiLAotICAgICAgICAjICB0aGVuIGZhaWwgdGhlIFdlYlNv
Y2tldCBjb25uZWN0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KLSAgICAgICAgaWYgZmllbGRz
Wyd1cGdyYWRlJ11bMF0gIT0gJ1dlYlNvY2tldCc6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRp
b24oCi0gICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgVXBncmFkZSBoZWFkZXIgdmFsdWU6ICVz
JyAlIGZpZWxkc1sndXBncmFkZSddWzBdKQotICAgICAgICAjIGlmIHRoZSBlbnRyeSdzIG5hbWUg
aXMgImNvbm5lY3Rpb24iCi0gICAgICAgICMgIGlmIHRoZSB2YWx1ZSwgY29udmVydGVkIHRvIEFT
Q0lJIGxvd2VyY2FzZSwgaXMgbm90IGV4YWN0bHkgZXF1YWwKLSAgICAgICAgIyAgdG8gdGhlIHN0
cmluZyAidXBncmFkZSIsIHRoZW4gZmFpbCB0aGUgV2ViU29ja2V0IGNvbm5lY3Rpb24gYW5kCi0g
ICAgICAgICMgIGFib3J0IHRoZXNlIHN0ZXBzLgotICAgICAgICBpZiBmaWVsZHNbJ2Nvbm5lY3Rp
b24nXVswXS5sb3dlcigpICE9ICd1cGdyYWRlJzoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlv
bigKLSAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBDb25uZWN0aW9uIGhlYWRlciB2YWx1ZTog
JXMnICUKLSAgICAgICAgICAgICAgICBmaWVsZHNbJ2Nvbm5lY3Rpb24nXVswXSkKLSAgICAgICAg
IyBUT0RPKHVrYWkpOiBjaGVjayBvcmlnaW4sIGxvY2F0aW9uLCBjb29raWUsIC4uCi0KLSAgICAg
ICAgIyA0LjEgNDIuIGxldCAvY2hhbGxlbmdlLyBiZSB0aGUgY29uY2F0ZW5hdGlvbiBvZiAvbnVt
YmVyXzEvLAotICAgICAgICAjIGV4cHJlc3NlZCBhcyBhIGJpZyBlbmRpYW4gMzIgYml0IGludGVn
ZXIsIC9udW1iZXJfMi8sIGV4cHJlc3NlZAotICAgICAgICAjIGFzIGJpZyBlbmRpYW4gMzIgYml0
IGludGVnZXIsIGFuZCB0aGUgZWlnaHQgYnl0ZXMgb2YgL2tleV8zLyBpbiB0aGUKLSAgICAgICAg
IyBvcmRlciB0aGV5IHdlcmUgc2VudCBvbiB0aGUgd2lyZS4KLSAgICAgICAgY2hhbGxlbmdlID0g
c3RydWN0LnBhY2soJyFJJywgc2VsZi5fbnVtYmVyMSkKLSAgICAgICAgY2hhbGxlbmdlICs9IHN0
cnVjdC5wYWNrKCchSScsIHNlbGYuX251bWJlcjIpCi0gICAgICAgIGNoYWxsZW5nZSArPSBzZWxm
Ll9rZXkzCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAgICAgJ0NoYWxs
ZW5nZTogJXIgKCVzKScsIGNoYWxsZW5nZSwgdXRpbC5oZXhpZnkoY2hhbGxlbmdlKSkKLQotICAg
ICAgICAjIDQuMSA0My4gbGV0IC9leHBlY3RlZC8gYmUgdGhlIE1ENSBmaW5nZXJwcmludCBvZiAv
Y2hhbGxlbmdlLyBhcyBhCi0gICAgICAgICMgYmlnLWVuZGlhbiAxMjggYml0IHN0cmluZy4KLSAg
ICAgICAgZXhwZWN0ZWQgPSB1dGlsLm1kNV9oYXNoKGNoYWxsZW5nZSkuZGlnZXN0KCkKLSAgICAg
ICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAgICAgJ0V4cGVjdGVkIGNoYWxsZW5nZSBy
ZXNwb25zZTogJXIgKCVzKScsCi0gICAgICAgICAgICBleHBlY3RlZCwgdXRpbC5oZXhpZnkoZXhw
ZWN0ZWQpKQotCi0gICAgICAgICMgNC4xIDQ0LiByZWFkIHNpeHRlZW4gYnl0ZXMgZnJvbSB0aGUg
c2VydmVyLgotICAgICAgICAjIGxldCAvcmVwbHkvIGJlIHRob3NlIGJ5dGVzLgotICAgICAgICBy
ZXBseSA9IHJlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCAxNikKLSAgICAgICAgc2VsZi5fbG9n
Z2VyLmRlYnVnKAotICAgICAgICAgICAgJ0FjdHVhbCBjaGFsbGVuZ2UgcmVzcG9uc2U6ICVyICgl
cyknLCByZXBseSwgdXRpbC5oZXhpZnkocmVwbHkpKQotCi0gICAgICAgICMgNC4xIDQ1LiBpZiAv
cmVwbHkvIGRvZXMgbm90IGV4YWN0bHkgZXF1YWwgL2V4cGVjdGVkLywgdGhlbiBmYWlsCi0gICAg
ICAgICMgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KLSAg
ICAgICAgaWYgZXhwZWN0ZWQgIT0gcmVwbHk6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24o
Ci0gICAgICAgICAgICAgICAgJ0JhZCBjaGFsbGVuZ2UgcmVzcG9uc2U6ICVyIChleHBlY3RlZCkg
IT0gJXIgKGFjdHVhbCknICUKLSAgICAgICAgICAgICAgICAoZXhwZWN0ZWQsIHJlcGx5KSkKLSAg
ICAgICAgIyA0LjEgNDYuIFRoZSAqV2ViU29ja2V0IGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQq
LgotCi0gICAgZGVmIF9nZW5lcmF0ZV9zZWNfd2Vic29ja2V0X2tleShzZWxmKToKLSAgICAgICAg
IyA0LjEgMTYuIGxldCAvc3BhY2VzX24vIGJlIGEgcmFuZG9tIGludGVnZXIgZnJvbSAxIHRvIDEy
IGluY2x1c2l2ZS4KLSAgICAgICAgc3BhY2VzID0gcmFuZG9tLnJhbmRpbnQoMSwgMTIpCi0gICAg
ICAgICMgNC4xIDE3LiBsZXQgL21heF9uLyBiZSB0aGUgbGFyZ2VzdCBpbnRlZ2VyIG5vdCBncmVh
dGVyIHRoYW4KLSAgICAgICAgIyAgNCwyOTQsOTY3LDI5NSBkaXZpZGVkIGJ5IC9zcGFjZXNfbi8u
Ci0gICAgICAgIG1heG51bSA9IDQyOTQ5NjcyOTUgLyBzcGFjZXMKLSAgICAgICAgIyA0LjEgMTgu
IGxldCAvbnVtYmVyX24vIGJlIGEgcmFuZG9tIGludGVnZXIgZnJvbSAwIHRvIC9tYXhfbi8KLSAg
ICAgICAgIyBpbmNsdXNpdmUuCi0gICAgICAgIG51bWJlciA9IHJhbmRvbS5yYW5kaW50KDAsIG1h
eG51bSkKLSAgICAgICAgIyA0LjEgMTkuIGxldCAvcHJvZHVjdF9uLyBiZSB0aGUgcmVzdWx0IG9m
IG11bHRpcGx5aW5nIC9udW1iZXJfbi8gYW5kCi0gICAgICAgICMgL3NwYWNlc19uLyB0b2dldGhl
ci4KLSAgICAgICAgcHJvZHVjdCA9IG51bWJlciAqIHNwYWNlcwotICAgICAgICAjIDQuMSAyMC4g
bGV0IC9rZXlfbi8gYmUgYSBzdHJpbmcgY29uc2lzdGluZyBvZiAvcHJvZHVjdF9uLywgZXhwcmVz
c2VkCi0gICAgICAgICMgaW4gYmFzZSB0ZW4gdXNpbmcgdGhlIG51bWVyYWxzIGluIHRoZSByYW5n
ZSBVKzAwMzAgRElHSVQgWkVSTyAoMCkgdG8KLSAgICAgICAgIyBVKzAwMzkgRElHSVQgTklORSAo
OSkuCi0gICAgICAgIGtleSA9IHN0cihwcm9kdWN0KQotICAgICAgICAjIDQuMSAyMS4gaW5zZXJ0
IGJldHdlZW4gb25lIGFuZCB0d2VsdmUgcmFuZG9tIGNoYXJhY3RlcnMgZnJvbSB0aGUKLSAgICAg
ICAgIyByYW5nZSBVKzAwMjEgdG8gVSswMDJGIGFuZCBVKzAwM0EgdG8gVSswMDdFIGludG8gL2tl
eV9uLyBhdCByYW5kb20KLSAgICAgICAgIyBwb3NpdGlvbnMuCi0gICAgICAgIGF2YWlsYWJsZV9j
aGFycyA9IHJhbmdlKDB4MjEsIDB4MmYgKyAxKSArIHJhbmdlKDB4M2EsIDB4N2UgKyAxKQotICAg
ICAgICBuID0gcmFuZG9tLnJhbmRpbnQoMSwgMTIpCi0gICAgICAgIGZvciBfIGluIHhyYW5nZShu
KToKLSAgICAgICAgICAgIGNoID0gcmFuZG9tLmNob2ljZShhdmFpbGFibGVfY2hhcnMpCi0gICAg
ICAgICAgICBwb3MgPSByYW5kb20ucmFuZGludCgwLCBsZW4oa2V5KSkKLSAgICAgICAgICAgIGtl
eSA9IGtleVswOnBvc10gKyBjaHIoY2gpICsga2V5W3BvczpdCi0gICAgICAgICMgNC4xIDIyLiBp
bnNlcnQgL3NwYWNlc19uLyBVKzAwMjAgU1BBQ0UgY2hhcmFjdGVycyBpbnRvIC9rZXlfbi8gYXQK
LSAgICAgICAgIyByYW5kb20gcG9zaXRpb25zIG90aGVyIHRoYW4gc3RhcnQgb3IgZW5kIG9mIHRo
ZSBzdHJpbmcuCi0gICAgICAgIGZvciBfIGluIHhyYW5nZShzcGFjZXMpOgotICAgICAgICAgICAg
cG9zID0gcmFuZG9tLnJhbmRpbnQoMSwgbGVuKGtleSkgLSAxKQotICAgICAgICAgICAga2V5ID0g
a2V5WzA6cG9zXSArICcgJyArIGtleVtwb3M6XQotICAgICAgICByZXR1cm4gbnVtYmVyLCBrZXkK
LQotICAgIGRlZiBfZ2VuZXJhdGVfa2V5MyhzZWxmKToKLSAgICAgICAgIyA0LjEgMjYuIGxldCAv
a2V5My8gYmUgYSBzdHJpbmcgY29uc2lzdGluZyBvZiBlaWdodCByYW5kb20gYnl0ZXMgKG9yCi0g
ICAgICAgICMgZXF1aXZhbGVudGx5LCBhIHJhbmRvbSA2NCBiaXQgaW50ZWdlciBlbmNvZGVkIGlu
IGEgYmlnLWVuZGlhbiBvcmRlcikuCi0gICAgICAgIHJldHVybiAnJy5qb2luKFtjaHIocmFuZG9t
LnJhbmRpbnQoMCwgMjU1KSkgZm9yIF8gaW4geHJhbmdlKDgpXSkKLQotCi1jbGFzcyBXZWJTb2Nr
ZXRIaXhpZTc1SGFuZHNoYWtlKG9iamVjdCk6Ci0gICAgIiIiV2ViU29ja2V0IGhhbmRzaGFrZSBw
cm9jZXNzb3IgZm9yIElFVEYgSGl4aWUgNzUuIiIiCi0KLSAgICBfRVhQRUNURURfUkVTUE9OU0Ug
PSAoCi0gICAgICAgICdIVFRQLzEuMSAxMDEgV2ViIFNvY2tldCBQcm90b2NvbCBIYW5kc2hha2Vc
clxuJyArCi0gICAgICAgIF9VUEdSQURFX0hFQURFUl9ISVhJRTc1ICsKLSAgICAgICAgX0NPTk5F
Q1RJT05fSEVBREVSKQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wdGlvbnMpOgotICAgICAg
ICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKLQotICAgICAgICBz
ZWxmLl9vcHRpb25zID0gb3B0aW9ucwotCi0gICAgZGVmIF9za2lwX2hlYWRlcnMoc2VsZik6Ci0g
ICAgICAgIHRlcm1pbmF0b3IgPSAnXHJcblxyXG4nCi0gICAgICAgIHBvcyA9IDAKLSAgICAgICAg
d2hpbGUgcG9zIDwgbGVuKHRlcm1pbmF0b3IpOgotICAgICAgICAgICAgcmVjZWl2ZWQgPSByZWNl
aXZlX2J5dGVzKHNlbGYuX3NvY2tldCwgMSkKLSAgICAgICAgICAgIGlmIHJlY2VpdmVkID09IHRl
cm1pbmF0b3JbcG9zXToKLSAgICAgICAgICAgICAgICBwb3MgKz0gMQotICAgICAgICAgICAgZWxp
ZiByZWNlaXZlZCA9PSB0ZXJtaW5hdG9yWzBdOgotICAgICAgICAgICAgICAgIHBvcyA9IDEKLSAg
ICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcG9zID0gMAotCi0gICAgZGVmIGhhbmRz
aGFrZShzZWxmLCBzb2NrZXQpOgotICAgICAgICBzZWxmLl9zb2NrZXQgPSBzb2NrZXQKLQotICAg
ICAgICByZXF1ZXN0X2xpbmUgPSBfbWV0aG9kX2xpbmUoc2VsZi5fb3B0aW9ucy5yZXNvdXJjZSkK
LSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdPcGVuaW5nIGhhbmRzaGFrZSBSZXF1ZXN0LUxp
bmU6ICVyJywgcmVxdWVzdF9saW5lKQotICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZGFsbChyZXF1
ZXN0X2xpbmUpCi0KLSAgICAgICAgaGVhZGVycyA9IF9VUEdSQURFX0hFQURFUl9ISVhJRTc1ICsg
X0NPTk5FQ1RJT05fSEVBREVSCi0gICAgICAgIGhlYWRlcnMgKz0gX2Zvcm1hdF9ob3N0X2hlYWRl
cigKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuc2VydmVyX2hvc3QsCi0gICAgICAgICAgICBz
ZWxmLl9vcHRpb25zLnNlcnZlcl9wb3J0LAotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy51c2Vf
dGxzKQotICAgICAgICBoZWFkZXJzICs9IF9vcmlnaW5faGVhZGVyKHNlbGYuX29wdGlvbnMub3Jp
Z2luKQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ09wZW5pbmcgaGFuZHNoYWtlIHJlcXVl
c3QgaGVhZGVyczogJXInLCBoZWFkZXJzKQotICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZGFsbCho
ZWFkZXJzKQotCi0gICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKCdcclxuJykKLQotICAgICAg
ICBzZWxmLl9sb2dnZXIuaW5mbygnU2VudCBvcGVuaW5nIGhhbmRzaGFrZSByZXF1ZXN0JykKLQot
ICAgICAgICBmb3IgZXhwZWN0ZWRfY2hhciBpbiBXZWJTb2NrZXRIaXhpZTc1SGFuZHNoYWtlLl9F
WFBFQ1RFRF9SRVNQT05TRToKLSAgICAgICAgICAgIHJlY2VpdmVkID0gcmVjZWl2ZV9ieXRlcyhz
ZWxmLl9zb2NrZXQsIDEpCi0gICAgICAgICAgICBpZiBleHBlY3RlZF9jaGFyICE9IHJlY2VpdmVk
OgotICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignSGFuZHNoYWtlIGZhaWx1cmUnKQot
ICAgICAgICAjIFdlIGN1dCBjb3JuZXJzIGFuZCBza2lwIG90aGVyIGhlYWRlcnMuCi0gICAgICAg
IHNlbGYuX3NraXBfaGVhZGVycygpCi0KLQotY2xhc3MgV2ViU29ja2V0U3RyZWFtKG9iamVjdCk6
Ci0gICAgIiIiRnJhbWUgcHJvY2Vzc29yIGZvciB0aGUgV2ViU29ja2V0IHByb3RvY29sIChSRkMg
NjQ1NSkuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgc29ja2V0LCBoYW5kc2hha2UpOgot
ICAgICAgICBzZWxmLl9oYW5kc2hha2UgPSBoYW5kc2hha2UKLSAgICAgICAgc2VsZi5fc29ja2V0
ID0gc29ja2V0Ci0KLSAgICAgICAgIyBGaWx0ZXJzIGFwcGxpZWQgdG8gYXBwbGljYXRpb24gZGF0
YSBwYXJ0IG9mIGRhdGEgZnJhbWVzLgotICAgICAgICBzZWxmLl9vdXRnb2luZ19mcmFtZV9maWx0
ZXIgPSBOb25lCi0gICAgICAgIHNlbGYuX2luY29taW5nX2ZyYW1lX2ZpbHRlciA9IE5vbmUKLQot
ICAgICAgICBpZiBzZWxmLl9oYW5kc2hha2UuX29wdGlvbnMudXNlX2RlZmxhdGVfZnJhbWU6Ci0g
ICAgICAgICAgICBzZWxmLl9vdXRnb2luZ19mcmFtZV9maWx0ZXIgPSAoCi0gICAgICAgICAgICAg
ICAgdXRpbC5fUkZDMTk3OURlZmxhdGVyKE5vbmUsIEZhbHNlKSkKLSAgICAgICAgICAgIHNlbGYu
X2luY29taW5nX2ZyYW1lX2ZpbHRlciA9IHV0aWwuX1JGQzE5NzlJbmZsYXRlcigpCi0KLSAgICAg
ICAgc2VsZi5fZnJhZ21lbnRlZCA9IEZhbHNlCi0KLSAgICBkZWYgX21hc2tfaHliaShzZWxmLCBz
KToKLSAgICAgICAgIyBUT0RPKHR5b3NoaW5vKTogb3MudXJhbmRvbSBkb2VzIG9wZW4vcmVhZC9j
bG9zZSBmb3IgZXZlcnkgY2FsbC4gSWYKLSAgICAgICAgIyBwZXJmb3JtYW5jZSBtYXR0ZXJzLCBj
aGFuZ2UgdGhpcyB0byBzb21lIGxpYnJhcnkgY2FsbCB0aGF0IGdlbmVyYXRlcwotICAgICAgICAj
IGNyeXB0b2dyYXBoaWNhbGx5IHNlY3VyZSBwc2V1ZG8gcmFuZG9tIG51bWJlciBzZXF1ZW5jZS4K
LSAgICAgICAgbWFza2luZ19ub25jZSA9IG9zLnVyYW5kb20oNCkKLSAgICAgICAgcmVzdWx0ID0g
W21hc2tpbmdfbm9uY2VdCi0gICAgICAgIGNvdW50ID0gMAotICAgICAgICBmb3IgYyBpbiBzOgot
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjaHIob3JkKGMpIF4gb3JkKG1hc2tpbmdfbm9uY2Vb
Y291bnRdKSkpCi0gICAgICAgICAgICBjb3VudCA9IChjb3VudCArIDEpICUgbGVuKG1hc2tpbmdf
bm9uY2UpCi0gICAgICAgIHJldHVybiAnJy5qb2luKHJlc3VsdCkKLQotICAgIGRlZiBzZW5kX2Zy
YW1lX29mX2FyYml0cmFyeV9ieXRlcyhzZWxmLCBoZWFkZXIsIGJvZHkpOgotICAgICAgICBzZWxm
Ll9zb2NrZXQuc2VuZGFsbChoZWFkZXIgKyBzZWxmLl9tYXNrX2h5YmkoYm9keSkpCi0KLSAgICBk
ZWYgc2VuZF9kYXRhKHNlbGYsIHBheWxvYWQsIGZyYW1lX3R5cGUsIGVuZD1UcnVlLCBtYXNrPVRy
dWUsCi0gICAgICAgICAgICAgICAgICByc3YxPTAsIHJzdjI9MCwgcnN2Mz0wKToKLSAgICAgICAg
aWYgc2VsZi5fb3V0Z29pbmdfZnJhbWVfZmlsdGVyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAg
cGF5bG9hZCA9IHNlbGYuX291dGdvaW5nX2ZyYW1lX2ZpbHRlci5maWx0ZXIocGF5bG9hZCkKLQot
ICAgICAgICBpZiBzZWxmLl9mcmFnbWVudGVkOgotICAgICAgICAgICAgb3Bjb2RlID0gT1BDT0RF
X0NPTlRJTlVBVElPTgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgb3Bjb2RlID0gZnJhbWVf
dHlwZQotCi0gICAgICAgIGlmIGVuZDoKLSAgICAgICAgICAgIHNlbGYuX2ZyYWdtZW50ZWQgPSBG
YWxzZQotICAgICAgICAgICAgZmluID0gMQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2Vs
Zi5fZnJhZ21lbnRlZCA9IFRydWUKLSAgICAgICAgICAgIGZpbiA9IDAKLQotICAgICAgICBpZiBz
ZWxmLl9oYW5kc2hha2UuX29wdGlvbnMudXNlX2RlZmxhdGVfZnJhbWU6Ci0gICAgICAgICAgICBy
c3YxID0gMQotCi0gICAgICAgIGlmIG1hc2s6Ci0gICAgICAgICAgICBtYXNrX2JpdCA9IDEgPDwg
NwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbWFza19iaXQgPSAwCi0KLSAgICAgICAgaGVh
ZGVyID0gY2hyKGZpbiA8PCA3IHwgcnN2MSA8PCA2IHwgcnN2MiA8PCA1IHwgcnN2MyA8PCA0IHwg
b3Bjb2RlKQotICAgICAgICBwYXlsb2FkX2xlbmd0aCA9IGxlbihwYXlsb2FkKQotICAgICAgICBp
ZiBwYXlsb2FkX2xlbmd0aCA8PSAxMjU6Ci0gICAgICAgICAgICBoZWFkZXIgKz0gY2hyKG1hc2tf
Yml0IHwgcGF5bG9hZF9sZW5ndGgpCi0gICAgICAgIGVsaWYgcGF5bG9hZF9sZW5ndGggPCAxIDw8
IDE2OgotICAgICAgICAgICAgaGVhZGVyICs9IGNocihtYXNrX2JpdCB8IDEyNikgKyBzdHJ1Y3Qu
cGFjaygnIUgnLCBwYXlsb2FkX2xlbmd0aCkKLSAgICAgICAgZWxpZiBwYXlsb2FkX2xlbmd0aCA8
IDEgPDwgNjM6Ci0gICAgICAgICAgICBoZWFkZXIgKz0gY2hyKG1hc2tfYml0IHwgMTI3KSArIHN0
cnVjdC5wYWNrKCchUScsIHBheWxvYWRfbGVuZ3RoKQotICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgcmFpc2UgRXhjZXB0aW9uKCdUb28gbG9uZyBwYXlsb2FkICglZCBieXRlKScgJSBwYXlsb2Fk
X2xlbmd0aCkKLSAgICAgICAgaWYgbWFzazoKLSAgICAgICAgICAgIHBheWxvYWQgPSBzZWxmLl9t
YXNrX2h5YmkocGF5bG9hZCkKLSAgICAgICAgc2VsZi5fc29ja2V0LnNlbmRhbGwoaGVhZGVyICsg
cGF5bG9hZCkKLQotICAgIGRlZiBzZW5kX2JpbmFyeShzZWxmLCBwYXlsb2FkLCBlbmQ9VHJ1ZSwg
bWFzaz1UcnVlKToKLSAgICAgICAgc2VsZi5zZW5kX2RhdGEocGF5bG9hZCwgT1BDT0RFX0JJTkFS
WSwgZW5kLCBtYXNrKQotCi0gICAgZGVmIHNlbmRfdGV4dChzZWxmLCBwYXlsb2FkLCBlbmQ9VHJ1
ZSwgbWFzaz1UcnVlKToKLSAgICAgICAgc2VsZi5zZW5kX2RhdGEocGF5bG9hZC5lbmNvZGUoJ3V0
Zi04JyksIE9QQ09ERV9URVhULCBlbmQsIG1hc2spCi0KLSAgICBkZWYgX2Fzc2VydF9yZWNlaXZl
X2RhdGEoc2VsZiwgcGF5bG9hZCwgb3Bjb2RlLCBmaW4sIHJzdjEsIHJzdjIsIHJzdjMpOgotICAg
ICAgICAoYWN0dWFsX2ZpbiwgYWN0dWFsX3JzdjEsIGFjdHVhbF9yc3YyLCBhY3R1YWxfcnN2Mywg
YWN0dWFsX29wY29kZSwKLSAgICAgICAgIHBheWxvYWRfbGVuZ3RoKSA9IHJlYWRfZnJhbWVfaGVh
ZGVyKHNlbGYuX3NvY2tldCkKLQotICAgICAgICBpZiBhY3R1YWxfb3Bjb2RlICE9IG9wY29kZToK
LSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnVW5leHBlY3Rl
ZCBvcGNvZGU6ICVkIChleHBlY3RlZCkgdnMgJWQgKGFjdHVhbCknICUKLSAgICAgICAgICAgICAg
ICAob3Bjb2RlLCBhY3R1YWxfb3Bjb2RlKSkKLQotICAgICAgICBpZiBhY3R1YWxfZmluICE9IGZp
bjoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnVW5leHBl
Y3RlZCBmaW46ICVkIChleHBlY3RlZCkgdnMgJWQgKGFjdHVhbCknICUKLSAgICAgICAgICAgICAg
ICAoZmluLCBhY3R1YWxfZmluKSkKLQotICAgICAgICBpZiByc3YxIGlzIE5vbmU6Ci0gICAgICAg
ICAgICByc3YxID0gMAotICAgICAgICAgICAgaWYgc2VsZi5faGFuZHNoYWtlLl9vcHRpb25zLnVz
ZV9kZWZsYXRlX2ZyYW1lOgotICAgICAgICAgICAgICAgIHJzdjEgPSAxCi0KLSAgICAgICAgaWYg
cnN2MiBpcyBOb25lOgotICAgICAgICAgICAgcnN2MiA9IDAKLQotICAgICAgICBpZiByc3YzIGlz
IE5vbmU6Ci0gICAgICAgICAgICByc3YzID0gMAotCi0gICAgICAgIGlmIGFjdHVhbF9yc3YxICE9
IHJzdjE6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ1Vu
ZXhwZWN0ZWQgcnN2MTogJXIgKGV4cGVjdGVkKSB2cyAlciAoYWN0dWFsKScgJQotICAgICAgICAg
ICAgICAgIChyc3YxLCBhY3R1YWxfcnN2MSkpCi0KLSAgICAgICAgaWYgYWN0dWFsX3JzdjIgIT0g
cnN2MjoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnVW5l
eHBlY3RlZCByc3YyOiAlciAoZXhwZWN0ZWQpIHZzICVyIChhY3R1YWwpJyAlCi0gICAgICAgICAg
ICAgICAgKHJzdjIsIGFjdHVhbF9yc3YyKSkKLQotICAgICAgICBpZiBhY3R1YWxfcnN2MyAhPSBy
c3YzOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdVbmV4
cGVjdGVkIHJzdjM6ICVyIChleHBlY3RlZCkgdnMgJXIgKGFjdHVhbCknICUKLSAgICAgICAgICAg
ICAgICAocnN2MywgYWN0dWFsX3JzdjMpKQotCi0gICAgICAgIHJlY2VpdmVkID0gcmVjZWl2ZV9i
eXRlcyhzZWxmLl9zb2NrZXQsIHBheWxvYWRfbGVuZ3RoKQotCi0gICAgICAgIGlmIHNlbGYuX2lu
Y29taW5nX2ZyYW1lX2ZpbHRlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHJlY2VpdmVkID0g
c2VsZi5faW5jb21pbmdfZnJhbWVfZmlsdGVyLmZpbHRlcihyZWNlaXZlZCkKLQotICAgICAgICBp
ZiBsZW4ocmVjZWl2ZWQpICE9IGxlbihwYXlsb2FkKToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2Vw
dGlvbigKLSAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBwYXlsb2FkIGxlbmd0aDogJWQgKGV4
cGVjdGVkKSB2cyAlZCAoYWN0dWFsKScgJQotICAgICAgICAgICAgICAgIChsZW4ocGF5bG9hZCks
IGxlbihyZWNlaXZlZCkpKQotCi0gICAgICAgIGlmIHBheWxvYWQgIT0gcmVjZWl2ZWQ6Ci0gICAg
ICAgICAgICByYWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgcGF5
bG9hZDogJXIgKGV4cGVjdGVkKSB2cyAlciAoYWN0dWFsKScgJQotICAgICAgICAgICAgICAgIChw
YXlsb2FkLCByZWNlaXZlZCkpCi0KLSAgICBkZWYgYXNzZXJ0X3JlY2VpdmVfYmluYXJ5KHNlbGYs
IHBheWxvYWQsIG9wY29kZT1PUENPREVfQklOQVJZLCBmaW49MSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJzdjE9Tm9uZSwgcnN2Mj1Ob25lLCByc3YzPU5vbmUpOgotICAgICAgICBz
ZWxmLl9hc3NlcnRfcmVjZWl2ZV9kYXRhKHBheWxvYWQsIG9wY29kZSwgZmluLCByc3YxLCByc3Yy
LCByc3YzKQotCi0gICAgZGVmIGFzc2VydF9yZWNlaXZlX3RleHQoc2VsZiwgcGF5bG9hZCwgb3Bj
b2RlPU9QQ09ERV9URVhULCBmaW49MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByc3Yx
PU5vbmUsIHJzdjI9Tm9uZSwgcnN2Mz1Ob25lKToKLSAgICAgICAgc2VsZi5fYXNzZXJ0X3JlY2Vp
dmVfZGF0YShwYXlsb2FkLmVuY29kZSgndXRmLTgnKSwgb3Bjb2RlLCBmaW4sIHJzdjEsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnN2MiwgcnN2MykKLQotICAgIGRlZiBfYnVp
bGRfY2xvc2VfZnJhbWUoc2VsZiwgY29kZSwgcmVhc29uLCBtYXNrKToKLSAgICAgICAgZnJhbWUg
PSBjaHIoMSA8PCA3IHwgT1BDT0RFX0NMT1NFKQotCi0gICAgICAgIGlmIGNvZGUgaXMgbm90IE5v
bmU6Ci0gICAgICAgICAgICBib2R5ID0gc3RydWN0LnBhY2soJyFIJywgY29kZSkgKyByZWFzb24u
ZW5jb2RlKCd1dGYtOCcpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBib2R5ID0gJycKLSAg
ICAgICAgaWYgbWFzazoKLSAgICAgICAgICAgIGZyYW1lICs9IGNocigxIDw8IDcgfCBsZW4oYm9k
eSkpICsgc2VsZi5fbWFza19oeWJpKGJvZHkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBm
cmFtZSArPSBjaHIobGVuKGJvZHkpKSArIGJvZHkKLSAgICAgICAgcmV0dXJuIGZyYW1lCi0KLSAg
ICBkZWYgc2VuZF9jbG9zZShzZWxmLCBjb2RlLCByZWFzb24pOgotICAgICAgICBzZWxmLl9zb2Nr
ZXQuc2VuZGFsbCgKLSAgICAgICAgICAgIHNlbGYuX2J1aWxkX2Nsb3NlX2ZyYW1lKGNvZGUsIHJl
YXNvbiwgVHJ1ZSkpCi0KLSAgICBkZWYgYXNzZXJ0X3JlY2VpdmVfY2xvc2Uoc2VsZiwgY29kZSwg
cmVhc29uKToKLSAgICAgICAgZXhwZWN0ZWRfZnJhbWUgPSBzZWxmLl9idWlsZF9jbG9zZV9mcmFt
ZShjb2RlLCByZWFzb24sIEZhbHNlKQotICAgICAgICBhY3R1YWxfZnJhbWUgPSByZWNlaXZlX2J5
dGVzKHNlbGYuX3NvY2tldCwgbGVuKGV4cGVjdGVkX2ZyYW1lKSkKLSAgICAgICAgaWYgYWN0dWFs
X2ZyYW1lICE9IGV4cGVjdGVkX2ZyYW1lOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAot
ICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIGNsb3NlIGZyYW1lOiAlciAoZXhwZWN0ZWQpIHZz
ICVyIChhY3R1YWwpJyAlCi0gICAgICAgICAgICAgICAgKGV4cGVjdGVkX2ZyYW1lLCBhY3R1YWxf
ZnJhbWUpKQotCi0KLWNsYXNzIFdlYlNvY2tldFN0cmVhbUhpeGllNzUob2JqZWN0KToKLSAgICAi
IiJGcmFtZSBwcm9jZXNzb3IgZm9yIHRoZSBXZWJTb2NrZXQgcHJvdG9jb2wgdmVyc2lvbiBIaXhp
ZSA3NSBhbmQgSHlCaSAwMC4KLSAgICAiIiIKLQotICAgIF9DTE9TRV9GUkFNRSA9ICdceGZmXHgw
MCcKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb2NrZXQsIHVudXNlZF9oYW5kc2hha2UpOgot
ICAgICAgICBzZWxmLl9zb2NrZXQgPSBzb2NrZXQKLQotICAgIGRlZiBzZW5kX2ZyYW1lX29mX2Fy
Yml0cmFyeV9ieXRlcyhzZWxmLCBoZWFkZXIsIGJvZHkpOgotICAgICAgICBzZWxmLl9zb2NrZXQu
c2VuZGFsbChoZWFkZXIgKyBib2R5KQotCi0gICAgZGVmIHNlbmRfZGF0YShzZWxmLCBwYXlsb2Fk
LCB1bnVzZWRfZnJhbWVfdHlwZW0sIHVudXNlZF9lbmQsIHVudXNlZF9tYXNrKToKLSAgICAgICAg
ZnJhbWUgPSAnJy5qb2luKFsnXHgwMCcsIHBheWxvYWQsICdceGZmJ10pCi0gICAgICAgIHNlbGYu
X3NvY2tldC5zZW5kYWxsKGZyYW1lKQotCi0gICAgZGVmIHNlbmRfYmluYXJ5KHNlbGYsIHVudXNl
ZF9wYXlsb2FkLCB1bnVzZWRfZW5kLCB1bnVzZWRfbWFzayk6Ci0gICAgICAgIHBhc3MKLQotICAg
IGRlZiBzZW5kX3RleHQoc2VsZiwgcGF5bG9hZCwgdW51c2VkX2VuZCwgdW51c2VkX21hc2spOgot
ICAgICAgICBlbmNvZGVkX3BheWxvYWQgPSBwYXlsb2FkLmVuY29kZSgndXRmLTgnKQotICAgICAg
ICBmcmFtZSA9ICcnLmpvaW4oWydceDAwJywgZW5jb2RlZF9wYXlsb2FkLCAnXHhmZiddKQotICAg
ICAgICBzZWxmLl9zb2NrZXQuc2VuZGFsbChmcmFtZSkKLQotICAgIGRlZiBhc3NlcnRfcmVjZWl2
ZV9iaW5hcnkoc2VsZiwgcGF5bG9hZCwgb3Bjb2RlPU9QQ09ERV9CSU5BUlksIGZpbj0xLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcnN2MT0wLCByc3YyPTAsIHJzdjM9MCk6Ci0gICAg
ICAgIHJhaXNlIEV4Y2VwdGlvbignQmluYXJ5IGZyYW1lIGlzIG5vdCBzdXBwb3J0ZWQgaW4gaGl4
aWU3NScpCi0KLSAgICBkZWYgYXNzZXJ0X3JlY2VpdmVfdGV4dChzZWxmLCBwYXlsb2FkKToKLSAg
ICAgICAgcmVjZWl2ZWQgPSByZWNlaXZlX2J5dGVzKHNlbGYuX3NvY2tldCwgMSkKLQotICAgICAg
ICBpZiByZWNlaXZlZCAhPSAnXHgwMCc6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCi0g
ICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgZnJhbWUgdHlwZTogJWQgKGV4cGVjdGVkKSB2cyAl
ZCAoYWN0dWFsKScgJQotICAgICAgICAgICAgICAgICgwLCBvcmQocmVjZWl2ZWQpKSkKLQotICAg
ICAgICByZWNlaXZlZCA9IHJlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCBsZW4ocGF5bG9hZCkg
KyAxKQotICAgICAgICBpZiByZWNlaXZlZFstMV0gIT0gJ1x4ZmYnOgotICAgICAgICAgICAgcmFp
c2UgRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdUZXJtaW5hdGlvbiBleHBlY3RlZDogMHhm
ZiAoZXhwZWN0ZWQpIHZzICVyIChhY3R1YWwpJyAlCi0gICAgICAgICAgICAgICAgcmVjZWl2ZWQp
Ci0KLSAgICAgICAgaWYgcmVjZWl2ZWRbMDotMV0gIT0gcGF5bG9hZDoKLSAgICAgICAgICAgIHJh
aXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBwYXlsb2FkOiAlciAo
ZXhwZWN0ZWQpIHZzICVyIChhY3R1YWwpJyAlCi0gICAgICAgICAgICAgICAgKHBheWxvYWQsIHJl
Y2VpdmVkWzA6LTFdKSkKLQotICAgIGRlZiBzZW5kX2Nsb3NlKHNlbGYsIGNvZGUsIHJlYXNvbik6
Ci0gICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKHNlbGYuX0NMT1NFX0ZSQU1FKQotCi0gICAg
ZGVmIGFzc2VydF9yZWNlaXZlX2Nsb3NlKHNlbGYsIHVudXNlZF9jb2RlLCB1bnVzZWRfcmVhc29u
KToKLSAgICAgICAgY2xvc2luZyA9IHJlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCBsZW4oc2Vs
Zi5fQ0xPU0VfRlJBTUUpKQotICAgICAgICBpZiBjbG9zaW5nICE9IHNlbGYuX0NMT1NFX0ZSQU1F
OgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdEaWRuXCd0IHJlY2VpdmUgY2xvc2luZyBo
YW5kc2hha2UnKQotCi0KLWNsYXNzIENsaWVudE9wdGlvbnMob2JqZWN0KToKLSAgICAiIiJIb2xk
cyBvcHRpb24gdmFsdWVzIHRvIGNvbmZpZ3VyZSB0aGUgQ2xpZW50IG9iamVjdC4iIiIKLQotICAg
IGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi52ZXJzaW9uID0gMTMKLSAgICAgICAg
c2VsZi5zZXJ2ZXJfaG9zdCA9ICcnCi0gICAgICAgIHNlbGYub3JpZ2luID0gJycKLSAgICAgICAg
c2VsZi5yZXNvdXJjZSA9ICcnCi0gICAgICAgIHNlbGYuc2VydmVyX3BvcnQgPSAtMQotICAgICAg
ICBzZWxmLnNvY2tldF90aW1lb3V0ID0gMTAwMAotICAgICAgICBzZWxmLnVzZV90bHMgPSBGYWxz
ZQotICAgICAgICBzZWxmLmV4dGVuc2lvbnMgPSBbXQotICAgICAgICAjIEVuYWJsZSBkZWZsYXRl
LWFwcGxpY2F0aW9uLWRhdGEuCi0gICAgICAgIHNlbGYudXNlX2RlZmxhdGVfZnJhbWUgPSBGYWxz
ZQotICAgICAgICAjIEVuYWJsZSBtdXgKLSAgICAgICAgc2VsZi51c2VfbXV4ID0gRmFsc2UKLQot
ICAgIGRlZiBlbmFibGVfZGVmbGF0ZV9mcmFtZShzZWxmKToKLSAgICAgICAgc2VsZi51c2VfZGVm
bGF0ZV9mcmFtZSA9IFRydWUKLSAgICAgICAgc2VsZi5leHRlbnNpb25zLmFwcGVuZChfREVGTEFU
RV9GUkFNRV9FWFRFTlNJT04pCi0KLSAgICBkZWYgZW5hYmxlX211eChzZWxmKToKLSAgICAgICAg
c2VsZi51c2VfbXV4ID0gVHJ1ZQotICAgICAgICBzZWxmLmV4dGVuc2lvbnMuYXBwZW5kKF9NVVhf
RVhURU5TSU9OKQotCi0KLWRlZiBjb25uZWN0X3NvY2tldF93aXRoX3JldHJ5KGhvc3QsIHBvcnQs
IHRpbWVvdXQsIHVzZV90bHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRyeT0x
MCwgc2xlZXBfc2VjPTAuMSk6Ci0gICAgcmV0cnlfY291bnQgPSAwCi0gICAgd2hpbGUgcmV0cnlf
Y291bnQgPCByZXRyeToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcyA9IHNvY2tldC5zb2Nr
ZXQoKQotICAgICAgICAgICAgcy5zZXR0aW1lb3V0KHRpbWVvdXQpCi0gICAgICAgICAgICBzLmNv
bm5lY3QoKGhvc3QsIHBvcnQpKQotICAgICAgICAgICAgaWYgdXNlX3RsczoKLSAgICAgICAgICAg
ICAgICByZXR1cm4gX1RMU1NvY2tldChzKQotICAgICAgICAgICAgcmV0dXJuIHMKLSAgICAgICAg
ZXhjZXB0IHNvY2tldC5lcnJvciBhcyBlOgotICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJu
by5FQ09OTlJFRlVTRUQ6Ci0gICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICAgICAgcmV0cnlfY291bnQgPSByZXRyeV9jb3VudCArIDEKLSAgICAgICAg
ICAgICAgICB0aW1lLnNsZWVwKHNsZWVwX3NlYykKLQotICAgIHJldHVybiBOb25lCi0KLQotY2xh
c3MgQ2xpZW50KG9iamVjdCk6Ci0gICAgIiIiV2ViU29ja2V0IGNsaWVudC4iIiIKLQotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBvcHRpb25zLCBoYW5kc2hha2UsIHN0cmVhbV9jbGFzcyk6Ci0gICAg
ICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQotCi0gICAgICAg
IHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCi0gICAgICAgIHNlbGYuX3NvY2tldCA9IE5vbmUKLQot
ICAgICAgICBzZWxmLl9oYW5kc2hha2UgPSBoYW5kc2hha2UKLSAgICAgICAgc2VsZi5fc3RyZWFt
X2NsYXNzID0gc3RyZWFtX2NsYXNzCi0KLSAgICBkZWYgY29ubmVjdChzZWxmKToKLSAgICAgICAg
c2VsZi5fc29ja2V0ID0gY29ubmVjdF9zb2NrZXRfd2l0aF9yZXRyeSgKLSAgICAgICAgICAgICAg
ICBzZWxmLl9vcHRpb25zLnNlcnZlcl9ob3N0LAotICAgICAgICAgICAgICAgIHNlbGYuX29wdGlv
bnMuc2VydmVyX3BvcnQsCi0gICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5zb2NrZXRfdGlt
ZW91dCwKLSAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLnVzZV90bHMpCi0KLSAgICAgICAg
c2VsZi5faGFuZHNoYWtlLmhhbmRzaGFrZShzZWxmLl9zb2NrZXQpCi0KLSAgICAgICAgc2VsZi5f
c3RyZWFtID0gc2VsZi5fc3RyZWFtX2NsYXNzKHNlbGYuX3NvY2tldCwgc2VsZi5faGFuZHNoYWtl
KQotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdDb25uZWN0aW9uIGVzdGFibGlzaGVkJykK
LQotICAgIGRlZiBzZW5kX2ZyYW1lX29mX2FyYml0cmFyeV9ieXRlcyhzZWxmLCBoZWFkZXIsIGJv
ZHkpOgotICAgICAgICBzZWxmLl9zdHJlYW0uc2VuZF9mcmFtZV9vZl9hcmJpdHJhcnlfYnl0ZXMo
aGVhZGVyLCBib2R5KQotCi0gICAgZGVmIHNlbmRfbWVzc2FnZShzZWxmLCBtZXNzYWdlLCBlbmQ9
VHJ1ZSwgYmluYXJ5PUZhbHNlLCByYXc9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICBtYXNr
PVRydWUpOgotICAgICAgICBpZiBiaW5hcnk6Ci0gICAgICAgICAgICBzZWxmLl9zdHJlYW0uc2Vu
ZF9iaW5hcnkobWVzc2FnZSwgZW5kLCBtYXNrKQotICAgICAgICBlbGlmIHJhdzoKLSAgICAgICAg
ICAgIHNlbGYuX3N0cmVhbS5zZW5kX2RhdGEobWVzc2FnZSwgT1BDT0RFX1RFWFQsIGVuZCwgbWFz
aykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuX3N0cmVhbS5zZW5kX3RleHQobWVz
c2FnZSwgZW5kLCBtYXNrKQotCi0gICAgZGVmIGFzc2VydF9yZWNlaXZlKHNlbGYsIHBheWxvYWQs
IGJpbmFyeT1GYWxzZSk6Ci0gICAgICAgIGlmIGJpbmFyeToKLSAgICAgICAgICAgIHNlbGYuX3N0
cmVhbS5hc3NlcnRfcmVjZWl2ZV9iaW5hcnkocGF5bG9hZCkKLSAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIHNlbGYuX3N0cmVhbS5hc3NlcnRfcmVjZWl2ZV90ZXh0KHBheWxvYWQpCi0KLSAgICBk
ZWYgc2VuZF9jbG9zZShzZWxmLCBjb2RlPVNUQVRVU19OT1JNQUxfQ0xPU1VSRSwgcmVhc29uPScn
KToKLSAgICAgICAgc2VsZi5fc3RyZWFtLnNlbmRfY2xvc2UoY29kZSwgcmVhc29uKQotCi0gICAg
ZGVmIGFzc2VydF9yZWNlaXZlX2Nsb3NlKHNlbGYsIGNvZGU9U1RBVFVTX05PUk1BTF9DTE9TVVJF
LCByZWFzb249JycpOgotICAgICAgICBzZWxmLl9zdHJlYW0uYXNzZXJ0X3JlY2VpdmVfY2xvc2Uo
Y29kZSwgcmVhc29uKQotCi0gICAgZGVmIGNsb3NlX3NvY2tldChzZWxmKToKLSAgICAgICAgc2Vs
Zi5fc29ja2V0LmNsb3NlKCkKLQotICAgIGRlZiBhc3NlcnRfY29ubmVjdGlvbl9jbG9zZWQoc2Vs
Zik6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJlYWRfZGF0YSA9IHJlY2VpdmVfYnl0ZXMo
c2VsZi5fc29ja2V0LCAxKQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAg
ICAgICBpZiBzdHIoZSkuZmluZCgKLSAgICAgICAgICAgICAgICAnQ29ubmVjdGlvbiBjbG9zZWQg
YmVmb3JlIHJlY2VpdmluZyByZXF1ZXN0ZWQgbGVuZ3RoICcpID09IDA6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZXJyb3JfbnVtYmVy
LCBtZXNzYWdlID0gZQotICAgICAgICAgICAgICAgIGZvciBlcnJvcl9uYW1lIGluIFsnRUNPTk5S
RVNFVCcsICdXU0FFQ09OTlJFU0VUJ106Ci0gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvcl9u
YW1lIGluIGRpcihlcnJubykgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9udW1i
ZXIgPT0gZ2V0YXR0cihlcnJubywgZXJyb3JfbmFtZSkpOgotICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuCi0gICAgICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICAgICAgcmFpc2UgZQot
ICAgICAgICAgICAgcmFpc2UgZQotCi0gICAgICAgIHJhaXNlIEV4Y2VwdGlvbignQ29ubmVjdGlv
biBpcyBub3QgY2xvc2VkIChSZWFkOiAlciknICUgcmVhZF9kYXRhKQotCi0KLWRlZiBjcmVhdGVf
Y2xpZW50KG9wdGlvbnMpOgotICAgIHJldHVybiBDbGllbnQoCi0gICAgICAgIG9wdGlvbnMsIFdl
YlNvY2tldEhhbmRzaGFrZShvcHRpb25zKSwgV2ViU29ja2V0U3RyZWFtKQotCi0KLWRlZiBjcmVh
dGVfY2xpZW50X2h5YmkwMChvcHRpb25zKToKLSAgICByZXR1cm4gQ2xpZW50KAotICAgICAgICBv
cHRpb25zLAotICAgICAgICBXZWJTb2NrZXRIeWJpMDBIYW5kc2hha2Uob3B0aW9ucywgJzAnKSwK
LSAgICAgICAgV2ViU29ja2V0U3RyZWFtSGl4aWU3NSkKLQotCi1kZWYgY3JlYXRlX2NsaWVudF9o
aXhpZTc1KG9wdGlvbnMpOgotICAgIHJldHVybiBDbGllbnQoCi0gICAgICAgIG9wdGlvbnMsIFdl
YlNvY2tldEhpeGllNzVIYW5kc2hha2Uob3B0aW9ucyksIFdlYlNvY2tldFN0cmVhbUhpeGllNzUp
Ci0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvZW5kdG9lbmRf
d2l0aF9leHRlcm5hbF9zZXJ2ZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvZW5kdG9lbmRfd2l0aF9leHRlcm5h
bF9zZXJ2ZXIucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3Zjg2ZmRiNDE2M2Q0
ZTczODk1MmIzY2NiNzdmMTkyMTZiYzU5MTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L2VuZHRvZW5kX3dpdGhfZXh0ZXJuYWxfc2VydmVy
LnB5CisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9u
Ci0jCi0jIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVk
LgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0
aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
LSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
Ci0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJUZXN0IGZvciBlbmQtdG8tZW5kIHdpdGggZXh0
ZXJuYWwgc2VydmVyLgotCi1UaGlzIHRlc3QgaXMgbm90IHJ1biBieSBydW5fYWxsLnB5IGJlY2F1
c2UgaXQgcmVxdWlyZXMgc29tZSBwcmVwYXJhdGlvbnMuCi1JZiB5b3Ugd291bGQgbGlrZSB0byBy
dW4gdGhpcyB0ZXN0IGNvcnJlY3RseSwgbGF1bmNoIEFwYWNoZSB3aXRoIG1vZF9weXRob24KLWFu
ZCBtb2RfcHl3ZWJzb2NrZXQgbWFudWFsbHkuIEluIGFkZGl0aW9uLCB5b3Ugc2hvdWxkIHBhc3Mg
YWxsb3dfZHJhZnQ3NSBvcHRpb24KLWFuZCBleGFtcGxlIHBhdGggYXMgaGFuZGxlcl9zY2FuIG9w
dGlvbiBhbmQgQXBhY2hlJ3MgRG9jdW1lbnRSb290LgotIiIiCi0KLQotaW1wb3J0IG9wdHBhcnNl
Ci1pbXBvcnQgc3lzCi1pbXBvcnQgdGVzdC50ZXN0X2VuZHRvZW5kCi1pbXBvcnQgdW5pdHRlc3QK
LQotCi1fREVGQVVMVF9XRUJfU09DS0VUX1BPUlQgPSA4MAotCi0KLWNsYXNzIEVuZFRvRW5kVGVz
dFdpdGhFeHRlcm5hbFNlcnZlcih0ZXN0LnRlc3RfZW5kdG9lbmQuRW5kVG9FbmRUZXN0KToKLSAg
ICBwYXNzCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgcGFyc2VyID0gb3B0cGFy
c2UuT3B0aW9uUGFyc2VyKCkKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLXAnLCAnLS1wb3J0Jywg
ZGVzdD0ncG9ydCcsIHR5cGU9J2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1f
REVGQVVMVF9XRUJfU09DS0VUX1BPUlQsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0nZXh0
ZXJuYWwgdGVzdCBzZXJ2ZXIgcG9ydC4nKQotICAgIChvcHRpb25zLCBhcmdzKSA9IHBhcnNlci5w
YXJzZV9hcmdzKCkKLQotICAgIHRlc3QudGVzdF9lbmR0b2VuZC5fdXNlX2V4dGVybmFsX3NlcnZl
ciA9IFRydWUKLSAgICB0ZXN0LnRlc3RfZW5kdG9lbmQuX2V4dGVybmFsX3NlcnZlcl9wb3J0ID0g
b3B0aW9ucy5wb3J0Ci0KLSAgICB1bml0dGVzdC5tYWluKGFyZ3Y9W3N5cy5hcmd2WzBdXSkKLQot
Ci0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC9tb2NrLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tl
dC90ZXN0L21vY2sucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiZmZjYWM0OGRj
NDNhNTJiOWNjZjFiY2QwMTI5NzU0MjQwNDhkNjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L21vY2sucHkKKysrIC9kZXYvbnVsbApAQCAt
MSwyMjEgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwot
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0j
IGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0j
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiTW9ja3MgZm9yIHRlc3Rpbmcu
Ci0iIiIKLQotCi1pbXBvcnQgUXVldWUKLWltcG9ydCB0aHJlYWRpbmcKLQotZnJvbSBtb2RfcHl3
ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuc3RyZWFtIGltcG9y
dCBTdHJlYW1IaXhpZTc1Ci0KLQotY2xhc3MgX01vY2tDb25uQmFzZShvYmplY3QpOgotICAgICIi
IkJhc2UgY2xhc3Mgb2YgbW9ja3MgZm9yIG1vZF9weXRob24uYXBhY2hlLm1wX2Nvbm4uCi0KLSAg
ICBUaGlzIGVuYWJsZXMgdGVzdHMgdG8gY2hlY2sgd2hhdCBpcyB3cml0dGVuIHRvIGEgKG1vY2sp
IG1wX2Nvbm4uCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNl
bGYuX3dyaXRlX2RhdGEgPSBbXQotICAgICAgICBzZWxmLnJlbW90ZV9hZGRyID0gJ2Zha2VfYWRk
cmVzcycKLQotICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKLSAgICAgICAgIiIiT3ZlcnJpZGUg
bW9kX3B5dGhvbi5hcGFjaGUubXBfY29ubi53cml0ZS4iIiIKLQotICAgICAgICBzZWxmLl93cml0
ZV9kYXRhLmFwcGVuZChkYXRhKQotCi0gICAgZGVmIHdyaXR0ZW5fZGF0YShzZWxmKToKLSAgICAg
ICAgIiIiR2V0IGJ5dGVzIHdyaXR0ZW4gdG8gdGhpcyBtb2NrLiIiIgotCi0gICAgICAgIHJldHVy
biAnJy5qb2luKHNlbGYuX3dyaXRlX2RhdGEpCi0KLQotY2xhc3MgTW9ja0Nvbm4oX01vY2tDb25u
QmFzZSk6Ci0gICAgIiIiTW9jayBmb3IgbW9kX3B5dGhvbi5hcGFjaGUubXBfY29ubi4KLQotICAg
IFRoaXMgZW5hYmxlcyB0ZXN0cyB0byBzcGVjaWZ5IHdoYXQgc2hvdWxkIGJlIHJlYWQgZnJvbSBh
IChtb2NrKSBtcF9jb25uIGFzCi0gICAgd2VsbCBhcyB0byBjaGVjayB3aGF0IGlzIHdyaXR0ZW4g
dG8gaXQuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVhZF9kYXRhKToKLSAg
ICAgICAgIiIiQ29uc3RydWN0cyBhbiBpbnN0YW5jZS4KLQotICAgICAgICBBcmdzOgotICAgICAg
ICAgICAgcmVhZF9kYXRhOiBieXRlcyB0aGF0IHNob3VsZCBiZSByZXR1cm5lZCB3aGVuIHJlYWQq
IG1ldGhvZHMgYXJlCi0gICAgICAgICAgICBjYWxsZWQuCi0gICAgICAgICIiIgotCi0gICAgICAg
IF9Nb2NrQ29ubkJhc2UuX19pbml0X18oc2VsZikKLSAgICAgICAgc2VsZi5fcmVhZF9kYXRhID0g
cmVhZF9kYXRhCi0gICAgICAgIHNlbGYuX3JlYWRfcG9zID0gMAotCi0gICAgZGVmIHJlYWRsaW5l
KHNlbGYpOgotICAgICAgICAiIiJPdmVycmlkZSBtb2RfcHl0aG9uLmFwYWNoZS5tcF9jb25uLnJl
YWRsaW5lLiIiIgotCi0gICAgICAgIGlmIHNlbGYuX3JlYWRfcG9zID49IGxlbihzZWxmLl9yZWFk
X2RhdGEpOgotICAgICAgICAgICAgcmV0dXJuICcnCi0gICAgICAgIGVuZF9pbmRleCA9IHNlbGYu
X3JlYWRfZGF0YS5maW5kKCdcbicsIHNlbGYuX3JlYWRfcG9zKSArIDEKLSAgICAgICAgaWYgbm90
IGVuZF9pbmRleDoKLSAgICAgICAgICAgIGVuZF9pbmRleCA9IGxlbihzZWxmLl9yZWFkX2RhdGEp
Ci0gICAgICAgIHJldHVybiBzZWxmLl9yZWFkX3VwX3RvKGVuZF9pbmRleCkKLQotICAgIGRlZiBy
ZWFkKHNlbGYsIGxlbmd0aCk6Ci0gICAgICAgICIiIk92ZXJyaWRlIG1vZF9weXRob24uYXBhY2hl
Lm1wX2Nvbm4ucmVhZC4iIiIKLQotICAgICAgICBpZiBzZWxmLl9yZWFkX3BvcyA+PSBsZW4oc2Vs
Zi5fcmVhZF9kYXRhKToKLSAgICAgICAgICAgIHJldHVybiAnJwotICAgICAgICBlbmRfaW5kZXgg
PSBtaW4obGVuKHNlbGYuX3JlYWRfZGF0YSksIHNlbGYuX3JlYWRfcG9zICsgbGVuZ3RoKQotICAg
ICAgICByZXR1cm4gc2VsZi5fcmVhZF91cF90byhlbmRfaW5kZXgpCi0KLSAgICBkZWYgX3JlYWRf
dXBfdG8oc2VsZiwgZW5kX2luZGV4KToKLSAgICAgICAgbGluZSA9IHNlbGYuX3JlYWRfZGF0YVtz
ZWxmLl9yZWFkX3BvczplbmRfaW5kZXhdCi0gICAgICAgIHNlbGYuX3JlYWRfcG9zID0gZW5kX2lu
ZGV4Ci0gICAgICAgIHJldHVybiBsaW5lCi0KLQotY2xhc3MgTW9ja0Jsb2NraW5nQ29ubihfTW9j
a0Nvbm5CYXNlKToKLSAgICAiIiJCbG9ja2luZyBtb2NrIGZvciBtb2RfcHl0aG9uLmFwYWNoZS5t
cF9jb25uLgotCi0gICAgVGhpcyBlbmFibGVzIHRlc3RzIHRvIHNwZWNpZnkgd2hhdCBzaG91bGQg
YmUgcmVhZCBmcm9tIGEgKG1vY2spIG1wX2Nvbm4gYXMKLSAgICB3ZWxsIGFzIHRvIGNoZWNrIHdo
YXQgaXMgd3JpdHRlbiB0byBpdC4KLSAgICBDYWxsZXJzIG9mIHJlYWQqIG1ldGhvZHMgd2lsbCBi
bG9jayBpZiB0aGVyZSBpcyBubyBieXRlcyBhdmFpbGFibGUuCi0gICAgIiIiCi0KLSAgICBkZWYg
X19pbml0X18oc2VsZik6Ci0gICAgICAgIF9Nb2NrQ29ubkJhc2UuX19pbml0X18oc2VsZikKLSAg
ICAgICAgc2VsZi5fcXVldWUgPSBRdWV1ZS5RdWV1ZSgpCi0KLSAgICBkZWYgcmVhZGxpbmUoc2Vs
Zik6Ci0gICAgICAgICIiIk92ZXJyaWRlIG1vZF9weXRob24uYXBhY2hlLm1wX2Nvbm4ucmVhZGxp
bmUuIiIiCi0gICAgICAgIGxpbmUgPSAnJwotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAg
ICAgYyA9IHNlbGYuX3F1ZXVlLmdldCgpCi0gICAgICAgICAgICBsaW5lICs9IGMKLSAgICAgICAg
ICAgIGlmIGMgPT0gJ1xuJzoKLSAgICAgICAgICAgICAgICByZXR1cm4gbGluZQotCi0gICAgZGVm
IHJlYWQoc2VsZiwgbGVuZ3RoKToKLSAgICAgICAgIiIiT3ZlcnJpZGUgbW9kX3B5dGhvbi5hcGFj
aGUubXBfY29ubi5yZWFkLiIiIgotCi0gICAgICAgIGRhdGEgPSAnJwotICAgICAgICBmb3IgdW51
c2VkIGluIHJhbmdlKGxlbmd0aCk6Ci0gICAgICAgICAgICBkYXRhICs9IHNlbGYuX3F1ZXVlLmdl
dCgpCi0gICAgICAgIHJldHVybiBkYXRhCi0KLSAgICBkZWYgcHV0X2J5dGVzKHNlbGYsIGJ5dGVz
KToKLSAgICAgICAgIiIiUHV0IGJ5dGVzIHRvIGJlIHJlYWQgZnJvbSB0aGlzIG1vY2suCi0KLSAg
ICAgICAgQXJnczoKLSAgICAgICAgICAgIGJ5dGVzOiBieXRlcyB0byBiZSByZWFkLgotICAgICAg
ICAiIiIKLQotICAgICAgICBmb3IgYnl0ZSBpbiBieXRlczoKLSAgICAgICAgICAgIHNlbGYuX3F1
ZXVlLnB1dChieXRlKQotCi0KLWNsYXNzIE1vY2tUYWJsZShkaWN0KToKLSAgICAiIiJNb2NrIHRh
YmxlLgotCi0gICAgVGhpcyBtaW1pY3MgbW9kX3B5dGhvbiBtcF90YWJsZS4gTm90ZSB0aGF0IG9u
bHkgdGhlIG1ldGhvZHMgdXNlZCBieQotICAgIHRlc3RzIGFyZSBvdmVycmlkZGVuLgotICAgICIi
IgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvcHlfZnJvbT17fSk6Ci0gICAgICAgIGlmIGlz
aW5zdGFuY2UoY29weV9mcm9tLCBkaWN0KToKLSAgICAgICAgICAgIGNvcHlfZnJvbSA9IGNvcHlf
ZnJvbS5pdGVtcygpCi0gICAgICAgIGZvciBrZXksIHZhbHVlIGluIGNvcHlfZnJvbToKLSAgICAg
ICAgICAgIHNlbGYuX19zZXRpdGVtX18oa2V5LCB2YWx1ZSkKLQotICAgIGRlZiBfX2dldGl0ZW1f
XyhzZWxmLCBrZXkpOgotICAgICAgICByZXR1cm4gc3VwZXIoTW9ja1RhYmxlLCBzZWxmKS5fX2dl
dGl0ZW1fXyhrZXkubG93ZXIoKSkKLQotICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZh
bHVlKToKLSAgICAgICAgc3VwZXIoTW9ja1RhYmxlLCBzZWxmKS5fX3NldGl0ZW1fXyhrZXkubG93
ZXIoKSwgdmFsdWUpCi0KLSAgICBkZWYgZ2V0KHNlbGYsIGtleSwgZGVmX3ZhbHVlPU5vbmUpOgot
ICAgICAgICByZXR1cm4gc3VwZXIoTW9ja1RhYmxlLCBzZWxmKS5nZXQoa2V5Lmxvd2VyKCksIGRl
Zl92YWx1ZSkKLQotCi1jbGFzcyBNb2NrUmVxdWVzdChvYmplY3QpOgotICAgICIiIk1vY2sgcmVx
dWVzdC4KLQotICAgIFRoaXMgbWltaWNzIG1vZF9weXRob24gcmVxdWVzdC4KLSAgICAiIiIKLQot
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1cmk9Tm9uZSwgaGVhZGVyc19pbj17fSwgY29ubmVjdGlv
bj1Ob25lLCBtZXRob2Q9J0dFVCcsCi0gICAgICAgICAgICAgICAgIHByb3RvY29sPSdIVFRQLzEu
MScsIGlzX2h0dHBzPUZhbHNlKToKLSAgICAgICAgIiIiQ29uc3RydWN0IGFuIGluc3RhbmNlLgot
Ci0gICAgICAgIEFyZ3VtZW50czoKLSAgICAgICAgICAgIHVyaTogVVJJIG9mIHRoZSByZXF1ZXN0
LgotICAgICAgICAgICAgaGVhZGVyc19pbjogUmVxdWVzdCBoZWFkZXJzLgotICAgICAgICAgICAg
Y29ubmVjdGlvbjogQ29ubmVjdGlvbiB1c2VkIGZvciB0aGUgcmVxdWVzdC4KLSAgICAgICAgICAg
IG1ldGhvZDogcmVxdWVzdCBtZXRob2QuCi0gICAgICAgICAgICBpc19odHRwczogV2hldGhlciB0
aGlzIHJlcXVlc3QgaXMgb3ZlciBTU0wuCi0KLSAgICAgICAgU2VlIHRoZSBkb2N1bWVudCBvZiBt
b2RfcHl0aG9uIFJlcXVlc3QgZm9yIGRldGFpbHMuCi0gICAgICAgICIiIgotICAgICAgICBzZWxm
LnVyaSA9IHVyaQotICAgICAgICBzZWxmLnVucGFyc2VkX3VyaSA9IHVyaQotICAgICAgICBzZWxm
LmNvbm5lY3Rpb24gPSBjb25uZWN0aW9uCi0gICAgICAgIHNlbGYubWV0aG9kID0gbWV0aG9kCi0g
ICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAotICAgICAgICBzZWxmLmhlYWRlcnNfaW4g
PSBNb2NrVGFibGUoaGVhZGVyc19pbikKLSAgICAgICAgIyBzZWxmLmlzX2h0dHBzXyBuZWVkcyB0
byBiZSBhY2Nlc3NpYmxlIGZyb20gdGVzdHMuICBUbyBhdm9pZCBuYW1lCi0gICAgICAgICMgY29u
ZmxpY3Qgd2l0aCBzZWxmLmlzX2h0dHBzKCksIGl0IGlzIG5hbWVkIGFzIHN1Y2guCi0gICAgICAg
IHNlbGYuaXNfaHR0cHNfID0gaXNfaHR0cHMKLSAgICAgICAgc2VsZi53c19zdHJlYW0gPSBTdHJl
YW1IaXhpZTc1KHNlbGYsIFRydWUpCi0gICAgICAgIHNlbGYud3NfY2xvc2VfY29kZSA9IE5vbmUK
LSAgICAgICAgc2VsZi53c19jbG9zZV9yZWFzb24gPSBOb25lCi0gICAgICAgIHNlbGYud3NfdmVy
c2lvbiA9IGNvbW1vbi5WRVJTSU9OX0hZQkkwMAotICAgICAgICBzZWxmLndzX2RlZmxhdGUgPSBG
YWxzZQotCi0gICAgZGVmIGlzX2h0dHBzKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gd2hldGhl
ciB0aGlzIHJlcXVlc3QgaXMgb3ZlciBTU0wuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLmlzX2h0
dHBzXwotCi0KLWNsYXNzIE1vY2tEaXNwYXRjaGVyKG9iamVjdCk6Ci0gICAgIiIiTW9jayBmb3Ig
ZGlzcGF0Y2guRGlzcGF0Y2hlci4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAg
ICAgc2VsZi5kb19leHRyYV9oYW5kc2hha2VfY2FsbGVkID0gRmFsc2UKLQotICAgIGRlZiBkb19l
eHRyYV9oYW5kc2hha2Uoc2VsZiwgY29ubl9jb250ZXh0KToKLSAgICAgICAgc2VsZi5kb19leHRy
YV9oYW5kc2hha2VfY2FsbGVkID0gVHJ1ZQotCi0gICAgZGVmIHRyYW5zZmVyX2RhdGEoc2VsZiwg
Y29ubl9jb250ZXh0KToKLSAgICAgICAgcGFzcwotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC90ZXN0L211eF9jbGllbnRfZm9yX3Rlc3RpbmcucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3Qv
bXV4X2NsaWVudF9mb3JfdGVzdGluZy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MzA0ZTdmYzk1ZDNmYzViM2VlMmQ5ZTU0ZjIwNzgyYWRkYWUyMDQwZi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvbXV4X2NsaWVudF9mb3Jf
dGVzdGluZy5weQorKysgL2Rldi9udWxsCkBAIC0xLDY5MCArMCwwIEBACi0jIS91c3IvYmluL2Vu
diBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMg
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBk
aXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0j
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0j
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIldlYlNvY2tldCBjbGllbnQgdXRp
bGl0eSBmb3IgdGVzdGluZyBtdXggZXh0ZW5zaW9uLgotCi1UaGlzIGNvZGUgc2hvdWxkIGJlIGlu
ZGVwZW5kZW50IGZyb20gbW9kX3B5d2Vic29ja2V0LiBTZWUgdGhlIGNvbW1lbnQgb2YKLWNsaWVu
dF9mb3JfdGVzdGluZy5weS4KLQotTk9URTogVGhpcyBjb2RlIGlzIGZhciBmcm9tIHJvYnVzdCBs
aWtlIGNsaWVudF9mb3JfdGVzdGluZy5weS4KLSIiIgotCi0KLQotaW1wb3J0IFF1ZXVlCi1pbXBv
cnQgYmFzZTY0Ci1pbXBvcnQgY29sbGVjdGlvbnMKLWltcG9ydCBlbWFpbAotaW1wb3J0IGVtYWls
LnBhcnNlcgotaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBtYXRoCi1pbXBvcnQgb3MKLWltcG9ydCBy
YW5kb20KLWltcG9ydCBzb2NrZXQKLWltcG9ydCBzdHJ1Y3QKLWltcG9ydCB0aHJlYWRpbmcKLQot
ZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHV0aWwKLQotZnJvbSB0ZXN0IGltcG9ydCBjbGll
bnRfZm9yX3Rlc3RpbmcKLQotCi1fQ09OVFJPTF9DSEFOTkVMX0lEID0gMAotX0RFRkFVTFRfQ0hB
Tk5FTF9JRCA9IDEKLQotX01VWF9PUENPREVfQUREX0NIQU5ORUxfUkVRVUVTVCA9IDAKLV9NVVhf
T1BDT0RFX0FERF9DSEFOTkVMX1JFU1BPTlNFID0gMQotX01VWF9PUENPREVfRkxPV19DT05UUk9M
ID0gMgotX01VWF9PUENPREVfRFJPUF9DSEFOTkVMID0gMwotX01VWF9PUENPREVfTkVXX0NIQU5O
RUxfU0xPVCA9IDQKLQotCi1jbGFzcyBfQ29udHJvbEJsb2NrOgotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBvcGNvZGUpOgotICAgICAgICBzZWxmLm9wY29kZSA9IG9wY29kZQotCi0KLWRlZiBfcGFy
c2VfaGFuZHNoYWtlX3Jlc3BvbnNlKHJlc3BvbnNlKToKLSAgICBzdGF0dXNfbGluZSwgaGVhZGVy
X2xpbmVzID0gcmVzcG9uc2Uuc3BsaXQoJ1xyXG4nLCAxKQotCi0gICAgd29yZHMgPSBzdGF0dXNf
bGluZS5zcGxpdCgnICcpCi0gICAgaWYgbGVuKHdvcmRzKSA8IDM6Ci0gICAgICAgIHJhaXNlIFZh
bHVlRXJyb3IoJ0JhZCBTdGF0dXMtTGluZSBzeW50YXggJXInICUgc3RhdHVzX2xpbmUpCi0gICAg
W3ZlcnNpb24sIHJlc3BvbnNlX2NvZGVdID0gd29yZHNbOjJdCi0gICAgaWYgdmVyc2lvbiAhPSAn
SFRUUC8xLjEnOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdCYWQgcmVzcG9uc2UgdmVyc2lv
biAlcicgJSB2ZXJzaW9uKQotCi0gICAgaWYgcmVzcG9uc2VfY29kZSAhPSAnMTAxJzoKLSAgICAg
ICAgcmFpc2UgVmFsdWVFcnJvcignQmFkIHJlc3BvbnNlIGNvZGUgJXIgJyAlIHJlc3BvbnNlX2Nv
ZGUpCi0gICAgaGVhZGVycyA9IGVtYWlsLnBhcnNlci5QYXJzZXIoKS5wYXJzZXN0cihoZWFkZXJf
bGluZXMpCi0gICAgcmV0dXJuIGhlYWRlcnMKLQotCi1kZWYgX3BhcnNlX2NoYW5uZWxfaWQoZGF0
YSwgb2Zmc2V0PTApOgotICAgIGxlbmd0aCA9IGxlbihkYXRhKQotICAgIHJlbWFpbmluZyA9IGxl
bmd0aCAtIG9mZnNldAotCi0gICAgaWYgcmVtYWluaW5nIDw9IDA6Ci0gICAgICAgIHJhaXNlIEV4
Y2VwdGlvbignTm8gY2hhbm5lbCBpZCBmb3VuZCcpCi0KLSAgICBjaGFubmVsX2lkID0gb3JkKGRh
dGFbb2Zmc2V0XSkKLSAgICBjaGFubmVsX2lkX2xlbmd0aCA9IDEKLSAgICBpZiBjaGFubmVsX2lk
ICYgMHhlMCA9PSAweGUwOgotICAgICAgICBpZiByZW1haW5pbmcgPCA0OgotICAgICAgICAgICAg
cmFpc2UgRXhjZXB0aW9uKCdJbnZhbGlkIGNoYW5uZWwgaWQgZm9ybWF0JykKLSAgICAgICAgY2hh
bm5lbF9pZCA9IHN0cnVjdC51bnBhY2soJyFMJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGF0YVtvZmZzZXQ6b2Zmc2V0KzRdKVswXSAmIDB4MWZmZmZmZmYKLSAgICAgICAg
Y2hhbm5lbF9pZF9sZW5ndGggPSA0Ci0gICAgZWxpZiBjaGFubmVsX2lkICYgMHhjMCA9PSAweGMw
OgotICAgICAgICBpZiByZW1haW5pbmcgPCAzOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9u
KCdJbnZhbGlkIGNoYW5uZWwgaWQgZm9ybWF0JykKLSAgICAgICAgY2hhbm5lbF9pZCA9ICgoKGNo
YW5uZWxfaWQgJiAweDFmKSA8PCAxNikgKwotICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdC51
bnBhY2soJyFIJywgZGF0YVtvZmZzZXQrMTpvZmZzZXQrM10pWzBdKQotICAgICAgICBjaGFubmVs
X2lkX2xlbmd0aCA9IDMKLSAgICBlbGlmIGNoYW5uZWxfaWQgJiAweDgwID09IDB4ODA6Ci0gICAg
ICAgIGlmIHJlbWFpbmluZyA8IDI6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0ludmFs
aWQgY2hhbm5lbCBpZCBmb3JtYXQnKQotICAgICAgICBjaGFubmVsX2lkID0gc3RydWN0LnVucGFj
aygnIUgnLCBkYXRhW29mZnNldDpvZmZzZXQrMl0pWzBdICYgMHgzZmZmCi0gICAgICAgIGNoYW5u
ZWxfaWRfbGVuZ3RoID0gMgotCi0gICAgcmV0dXJuIGNoYW5uZWxfaWQsIGNoYW5uZWxfaWRfbGVu
Z3RoCi0KLQotZGVmIF9wYXJzZV9udW1iZXIoZGF0YSwgb2Zmc2V0PTApOgotICAgIGZpcnN0X2J5
dGUgPSBvcmQoZGF0YVtvZmZzZXRdKQotICAgIGlmIChmaXJzdF9ieXRlICYgMHg4MCkgIT0gMDoK
LSAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdUaGUgTVNCIG9mIG51bWJlciBmaWVsZCBtdXN0IGJl
IHVuc2V0JykKLSAgICBmaXJzdF9ieXRlID0gZmlyc3RfYnl0ZSAmIDB4N2YKLSAgICBpZiBmaXJz
dF9ieXRlID09IDEyNzoKLSAgICAgICAgaWYgb2Zmc2V0ICsgOSA+IGxlbihkYXRhKToKLSAgICAg
ICAgICAgIHJhaXNlIEV4Y2VwdGlvbignSW52YWxpZCBudW1iZXInKQotICAgICAgICByZXR1cm4g
c3RydWN0LnVucGFjaygnIVEnLCBkYXRhW29mZnNldCsxOm9mZnNldCs5XSlbMF0sIDkKLSAgICBp
ZiBmaXJzdF9ieXRlID09IDEyNjoKLSAgICAgICAgaWYgb2Zmc2V0ICsgMyA+IGxlbihkYXRhKToK
LSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignSW52YWxpZCBudW1iZXInKQotICAgICAgICBy
ZXR1cm4gc3RydWN0LnVucGFjaygnIUgnLCBkYXRhW29mZnNldCsxOm9mZnNldCszXSlbMF0sIDMK
LSAgICByZXR1cm4gZmlyc3RfYnl0ZSwgMQotCi0KLWRlZiBfcGFyc2Vfc2l6ZV9hbmRfY29udGVu
dHMoZGF0YSwgb2Zmc2V0PTApOgotICAgIHNpemUsIGFkdmFuY2UgPSBfcGFyc2VfbnVtYmVyKGRh
dGEsIG9mZnNldCkKLSAgICBzdGFydF9wb3NpdGlvbiA9IG9mZnNldCArIGFkdmFuY2UKLSAgICBl
bmRfcG9zaXRpb24gPSBzdGFydF9wb3NpdGlvbiArIHNpemUKLSAgICBpZiBsZW4oZGF0YSkgPCBl
bmRfcG9zaXRpb246Ci0gICAgICAgIHJhaXNlIEV4Y2VwdGlvbignSW52YWxpZCBzaXplIG9mIGNv
bnRyb2wgYmxvY2sgKCVkIDwgJWQpJyAlICgKLSAgICAgICAgICAgICAgICBsZW4oZGF0YSksIGVu
ZF9wb3NpdGlvbikpCi0gICAgcmV0dXJuIGRhdGFbc3RhcnRfcG9zaXRpb246ZW5kX3Bvc2l0aW9u
XSwgc2l6ZSArIGFkdmFuY2UKLQotCi1kZWYgX3BhcnNlX2NvbnRyb2xfYmxvY2tzKGRhdGEpOgot
ICAgIGJsb2NrcyA9IFtdCi0gICAgbGVuZ3RoID0gbGVuKGRhdGEpCi0gICAgcG9zID0gMAotCi0g
ICAgd2hpbGUgcG9zIDwgbGVuZ3RoOgotICAgICAgICBmaXJzdF9ieXRlID0gb3JkKGRhdGFbcG9z
XSkKLSAgICAgICAgcG9zICs9IDEKLSAgICAgICAgb3Bjb2RlID0gKGZpcnN0X2J5dGUgPj4gNSkg
JiAweDcKLSAgICAgICAgYmxvY2sgPSBfQ29udHJvbEJsb2NrKG9wY29kZSkKLQotICAgICAgICAj
IFRPRE8oYmFzaGkpOiBTdXBwb3J0IG1vcmUgb3Bjb2RlCi0gICAgICAgIGlmIG9wY29kZSA9PSBf
TVVYX09QQ09ERV9BRERfQ0hBTk5FTF9SRVNQT05TRToKLSAgICAgICAgICAgIGJsb2NrLmVuY29k
ZSA9IGZpcnN0X2J5dGUgJiAzCi0gICAgICAgICAgICBibG9jay5yZWplY3RlZCA9IChmaXJzdF9i
eXRlID4+IDQpICYgMQotCi0gICAgICAgICAgICBjaGFubmVsX2lkLCBhZHZhbmNlID0gX3BhcnNl
X2NoYW5uZWxfaWQoZGF0YSwgcG9zKQotICAgICAgICAgICAgYmxvY2suY2hhbm5lbF9pZCA9IGNo
YW5uZWxfaWQKLSAgICAgICAgICAgIHBvcyArPSBhZHZhbmNlCi0KLSAgICAgICAgICAgIGVuY29k
ZWRfaGFuZHNoYWtlLCBhZHZhbmNlID0gX3BhcnNlX3NpemVfYW5kX2NvbnRlbnRzKGRhdGEsIHBv
cykKLSAgICAgICAgICAgIGJsb2NrLmVuY29kZWRfaGFuZHNoYWtlID0gZW5jb2RlZF9oYW5kc2hh
a2UKLSAgICAgICAgICAgIHBvcyArPSBhZHZhbmNlCi0gICAgICAgICAgICBibG9ja3MuYXBwZW5k
KGJsb2NrKQotICAgICAgICBlbGlmIG9wY29kZSA9PSBfTVVYX09QQ09ERV9EUk9QX0NIQU5ORUw6
Ci0gICAgICAgICAgICBibG9jay5tdXhfZXJyb3IgPSAoZmlyc3RfYnl0ZSA+PiA0KSAmIDEKLQot
ICAgICAgICAgICAgY2hhbm5lbF9pZCwgYWR2YW5jZSA9IF9wYXJzZV9jaGFubmVsX2lkKGRhdGEs
IHBvcykKLSAgICAgICAgICAgIGJsb2NrLmNoYW5uZWxfaWQgPSBjaGFubmVsX2lkCi0gICAgICAg
ICAgICBwb3MgKz0gYWR2YW5jZQotCi0gICAgICAgICAgICByZWFzb24sIGFkdmFuY2UgPSBfcGFy
c2Vfc2l6ZV9hbmRfY29udGVudHMoZGF0YSwgcG9zKQotICAgICAgICAgICAgaWYgbGVuKHJlYXNv
bikgPT0gMDoKLSAgICAgICAgICAgICAgICBibG9jay5kcm9wX2NvZGUgPSBOb25lCi0gICAgICAg
ICAgICAgICAgYmxvY2suZHJvcF9tZXNzYWdlID0gJycKLSAgICAgICAgICAgIGVsaWYgbGVuKHJl
YXNvbikgPj0gMjoKLSAgICAgICAgICAgICAgICBibG9jay5kcm9wX2NvZGUgPSBzdHJ1Y3QudW5w
YWNrKCchSCcsIHJlYXNvbls6Ml0pWzBdCi0gICAgICAgICAgICAgICAgYmxvY2suZHJvcF9tZXNz
YWdlID0gcmVhc29uWzI6XQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlz
ZSBFeGNlcHRpb24oJ0ludmFsaWQgRHJvcENoYW5uZWwnKQotICAgICAgICAgICAgcG9zICs9IGFk
dmFuY2UKLSAgICAgICAgICAgIGJsb2Nrcy5hcHBlbmQoYmxvY2spCi0gICAgICAgIGVsaWYgb3Bj
b2RlID09IF9NVVhfT1BDT0RFX0ZMT1dfQ09OVFJPTDoKLSAgICAgICAgICAgIGNoYW5uZWxfaWQs
IGFkdmFuY2UgPSBfcGFyc2VfY2hhbm5lbF9pZChkYXRhLCBwb3MpCi0gICAgICAgICAgICBibG9j
ay5jaGFubmVsX2lkID0gY2hhbm5lbF9pZAotICAgICAgICAgICAgcG9zICs9IGFkdmFuY2UKLSAg
ICAgICAgICAgIHNlbmRfcXVvdGEsIGFkdmFuY2UgPSBfcGFyc2VfbnVtYmVyKGRhdGEsIHBvcykK
LSAgICAgICAgICAgIGJsb2NrLnNlbmRfcXVvdGEgPSBzZW5kX3F1b3RhCi0gICAgICAgICAgICBw
b3MgKz0gYWR2YW5jZQotICAgICAgICAgICAgYmxvY2tzLmFwcGVuZChibG9jaykKLSAgICAgICAg
ZWxpZiBvcGNvZGUgPT0gX01VWF9PUENPREVfTkVXX0NIQU5ORUxfU0xPVDoKLSAgICAgICAgICAg
IGZhbGxiYWNrID0gZmlyc3RfYnl0ZSAmIDEKLSAgICAgICAgICAgIHNsb3RzLCBhZHZhbmNlID0g
X3BhcnNlX251bWJlcihkYXRhLCBwb3MpCi0gICAgICAgICAgICBwb3MgKz0gYWR2YW5jZQotICAg
ICAgICAgICAgc2VuZF9xdW90YSwgYWR2YW5jZSA9IF9wYXJzZV9udW1iZXIoZGF0YSwgcG9zKQot
ICAgICAgICAgICAgcG9zICs9IGFkdmFuY2UKLSAgICAgICAgICAgIGlmIGZhbGxiYWNrID09IDEg
YW5kIChzbG90cyAhPSAwIG9yIHNlbmRfcXVvdGEgIT0gMCk6Ci0gICAgICAgICAgICAgICAgcmFp
c2UgRXhjZXB0aW9uKCdzbG90cyBhbmQgc2VuZF9xdW90YSBtdXN0IGJlIHplcm8gaWYgRiBiaXQg
JwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXMgc2V0JykKLSAgICAgICAgICAg
IGJsb2NrLmZhbGxiYWNrID0gZmFsbGJhY2sKLSAgICAgICAgICAgIGJsb2NrLnNsb3RzID0gc2xv
dHMKLSAgICAgICAgICAgIGJsb2NrLnNlbmRfcXVvdGEgPSBzZW5kX3F1b3RhCi0gICAgICAgICAg
ICBibG9ja3MuYXBwZW5kKGJsb2NrKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2Ug
RXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdVbnN1cHBvcnRlZCBtdXggb3Bjb2RlICVkIHJl
Y2VpdmVkJyAlIG9wY29kZSkKLQotICAgIHJldHVybiBibG9ja3MKLQotCi1kZWYgX2VuY29kZV9j
aGFubmVsX2lkKGNoYW5uZWxfaWQpOgotICAgIGlmIGNoYW5uZWxfaWQgPCAwOgotICAgICAgICBy
YWlzZSBWYWx1ZUVycm9yKCdDaGFubmVsIGlkICVkIG11c3Qgbm90IGJlIG5lZ2F0aXZlJyAlIGNo
YW5uZWxfaWQpCi0KLSAgICBpZiBjaGFubmVsX2lkIDwgMiAqKiA3OgotICAgICAgICByZXR1cm4g
Y2hyKGNoYW5uZWxfaWQpCi0gICAgaWYgY2hhbm5lbF9pZCA8IDIgKiogMTQ6Ci0gICAgICAgIHJl
dHVybiBzdHJ1Y3QucGFjaygnIUgnLCAweDgwMDAgKyBjaGFubmVsX2lkKQotICAgIGlmIGNoYW5u
ZWxfaWQgPCAyICoqIDIxOgotICAgICAgICBmaXJzdCA9IGNocigweGMwICsgKGNoYW5uZWxfaWQg
Pj4gMTYpKQotICAgICAgICByZXR1cm4gZmlyc3QgKyBzdHJ1Y3QucGFjaygnIUgnLCBjaGFubmVs
X2lkICYgMHhmZmZmKQotICAgIGlmIGNoYW5uZWxfaWQgPCAyICoqIDI5OgotICAgICAgICByZXR1
cm4gc3RydWN0LnBhY2soJyFMJywgMHhlMDAwMDAwMCArIGNoYW5uZWxfaWQpCi0KLSAgICByYWlz
ZSBWYWx1ZUVycm9yKCdDaGFubmVsIGlkICVkIGlzIHRvbyBsYXJnZScgJSBjaGFubmVsX2lkKQot
Ci0KLWRlZiBfZW5jb2RlX251bWJlcihudW1iZXIpOgotICAgIGlmIG51bWJlciA8PSAxMjU6Ci0g
ICAgICAgIHJldHVybiBjaHIobnVtYmVyKQotICAgIGVsaWYgbnVtYmVyIDwgKDEgPDwgMTYpOgot
ICAgICAgICByZXR1cm4gY2hyKDB4N2UpICsgc3RydWN0LnBhY2soJyFIJywgbnVtYmVyKQotICAg
IGVsaWYgbnVtYmVyIDwgKDEgPDwgNjMpOgotICAgICAgICByZXR1cm4gY2hyKDB4N2YpICsgc3Ry
dWN0LnBhY2soJyFRJywgbnVtYmVyKQotICAgIGVsc2U6Ci0gICAgICAgIHJhaXNlIEV4Y2VwdGlv
bignSW52YWxpZCBudW1iZXInKQotCi0KLWRlZiBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3Qo
Y2hhbm5lbF9pZCwgZW5jb2RlZF9oYW5kc2hha2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVuY29kaW5nPTApOgotICAgIGxlbmd0aCA9IGxlbihlbmNvZGVkX2hhbmRzaGFrZSkK
LSAgICBoYW5kc2hha2VfbGVuZ3RoID0gX2VuY29kZV9udW1iZXIobGVuZ3RoKQotCi0gICAgZmly
c3RfYnl0ZSA9IChfTVVYX09QQ09ERV9BRERfQ0hBTk5FTF9SRVFVRVNUIDw8IDUpIHwgZW5jb2Rp
bmcKLSAgICByZXR1cm4gKGNocihmaXJzdF9ieXRlKSArIF9lbmNvZGVfY2hhbm5lbF9pZChjaGFu
bmVsX2lkKSArCi0gICAgICAgICAgICBoYW5kc2hha2VfbGVuZ3RoICsgZW5jb2RlZF9oYW5kc2hh
a2UpCi0KLQotZGVmIF9jcmVhdGVfZmxvd19jb250cm9sKGNoYW5uZWxfaWQsIHJlcGxlbmlzaGVk
X3F1b3RhKToKLSAgICBmaXJzdF9ieXRlID0gKF9NVVhfT1BDT0RFX0ZMT1dfQ09OVFJPTCA8PCA1
KQotICAgIHJldHVybiAoY2hyKGZpcnN0X2J5dGUpICsgX2VuY29kZV9jaGFubmVsX2lkKGNoYW5u
ZWxfaWQpICsKLSAgICAgICAgICAgIF9lbmNvZGVfbnVtYmVyKHJlcGxlbmlzaGVkX3F1b3RhKSkK
LQotCi1jbGFzcyBfTXV4UmVhZGVyVGhyZWFkKHRocmVhZGluZy5UaHJlYWQpOgotICAgICIiIk11
eCByZWFkZXIgdGhyZWFkLgotCi0gICAgUmVhZHMgZnJhbWVzIGFuZCBwYXNzZXMgdGhlbSB0byB0
aGUgbXV4IGNsaWVudC4gVGhpcyB0aHJlYWQgYWNjZXNzZXMKLSAgICBwcml2YXRlIGZ1bmN0aW9u
cy92YXJpYWJsZXMgb2YgdGhlIG11eCBjbGllbnQuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0
X18oc2VsZiwgbXV4KToKLSAgICAgICAgdGhyZWFkaW5nLlRocmVhZC5fX2luaXRfXyhzZWxmKQot
ICAgICAgICBzZWxmLnNldERhZW1vbihUcnVlKQotICAgICAgICBzZWxmLl9tdXggPSBtdXgKLSAg
ICAgICAgc2VsZi5fc3RvcF9yZXF1ZXN0ZWQgPSBGYWxzZQotCi0gICAgZGVmIF9yZWNlaXZlX21l
c3NhZ2Uoc2VsZik6Ci0gICAgICAgIGZpcnN0X29wY29kZSA9IE5vbmUKLSAgICAgICAgcGVuZGlu
Z19wYXlsb2FkID0gW10KLSAgICAgICAgd2hpbGUgbm90IHNlbGYuX3N0b3BfcmVxdWVzdGVkOgot
ICAgICAgICAgICAgZmluLCByc3YxLCByc3YyLCByc3YzLCBvcGNvZGUsIHBheWxvYWRfbGVuZ3Ro
ID0gKAotICAgICAgICAgICAgICAgIGNsaWVudF9mb3JfdGVzdGluZy5yZWFkX2ZyYW1lX2hlYWRl
cihzZWxmLl9tdXguX3NvY2tldCkpCi0KLSAgICAgICAgICAgIGlmIG5vdCBmaXJzdF9vcGNvZGU6
Ci0gICAgICAgICAgICAgICAgaWYgb3Bjb2RlID09IGNsaWVudF9mb3JfdGVzdGluZy5PUENPREVf
VEVYVDoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdSZWNlaXZlZCBhIHRl
eHQgbWVzc2FnZSBvbiBwaHlzaWNhbCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnY29ubmVjdGlvbicpCi0gICAgICAgICAgICAgICAgaWYgb3Bjb2RlID09IGNsaWVudF9m
b3JfdGVzdGluZy5PUENPREVfQ09OVElOVUFUSU9OOgotICAgICAgICAgICAgICAgICAgICByYWlz
ZSBFeGNlcHRpb24oJ1JlY2VpdmVkIGFuIGludGVybWVkaWF0ZSBmcmFtZSBidXQgJwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZyYWdtZW50YXRpb24gd2FzIG5vdCBzdGFy
dGVkJykKLSAgICAgICAgICAgICAgICBpZiAob3Bjb2RlID09IGNsaWVudF9mb3JfdGVzdGluZy5P
UENPREVfQklOQVJZIG9yCi0gICAgICAgICAgICAgICAgICAgIG9wY29kZSA9PSBjbGllbnRfZm9y
X3Rlc3RpbmcuT1BDT0RFX1BPTkcgb3IKLSAgICAgICAgICAgICAgICAgICAgb3Bjb2RlID09IGNs
aWVudF9mb3JfdGVzdGluZy5PUENPREVfUE9ORyBvcgotICAgICAgICAgICAgICAgICAgICBvcGNv
ZGUgPT0gY2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9DTE9TRSk6Ci0gICAgICAgICAgICAgICAg
ICAgIGZpcnN0X29wY29kZSA9IG9wY29kZQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignUmVjZWl2ZWQgYW4gdW5kZWZpbmVkIG9wY29k
ZSBmcmFtZTogJWQnICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wY29k
ZSkKLQotICAgICAgICAgICAgZWxpZiBvcGNvZGUgIT0gY2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09E
RV9DT05USU5VQVRJT046Ci0gICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdSZWNlaXZl
ZCBhIG5ldyBvcGNvZGUgYmVmb3JlICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J3Rlcm1pbmF0aW5nIGZyYWdtZW50YXRpb24nKQotCi0gICAgICAgICAgICBwYXlsb2FkID0gY2xp
ZW50X2Zvcl90ZXN0aW5nLnJlY2VpdmVfYnl0ZXMoCi0gICAgICAgICAgICAgICAgc2VsZi5fbXV4
Ll9zb2NrZXQsIHBheWxvYWRfbGVuZ3RoKQotCi0gICAgICAgICAgICBpZiBzZWxmLl9tdXguX2lu
Y29taW5nX2ZyYW1lX2ZpbHRlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBwYXlsb2Fk
ID0gc2VsZi5fbXV4Ll9pbmNvbWluZ19mcmFtZV9maWx0ZXIuZmlsdGVyKHBheWxvYWQpCi0KLSAg
ICAgICAgICAgIHBlbmRpbmdfcGF5bG9hZC5hcHBlbmQocGF5bG9hZCkKLQotICAgICAgICAgICAg
aWYgZmluOgotICAgICAgICAgICAgICAgIGJyZWFrCi0KLSAgICAgICAgaWYgc2VsZi5fc3RvcF9y
ZXF1ZXN0ZWQ6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZSwgTm9uZQotCi0gICAgICAgIG1lc3Nh
Z2UgPSAnJy5qb2luKHBlbmRpbmdfcGF5bG9hZCkKLSAgICAgICAgcmV0dXJuIGZpcnN0X29wY29k
ZSwgbWVzc2FnZQotCi0gICAgZGVmIHJlcXVlc3Rfc3RvcChzZWxmKToKLSAgICAgICAgc2VsZi5f
c3RvcF9yZXF1ZXN0ZWQgPSBUcnVlCi0KLSAgICBkZWYgcnVuKHNlbGYpOgotICAgICAgICB0cnk6
Ci0gICAgICAgICAgICB3aGlsZSBub3Qgc2VsZi5fc3RvcF9yZXF1ZXN0ZWQ6Ci0gICAgICAgICAg
ICAgICAgIyBvcGNvZGUgaXMgT1BDT0RFX0JJTkFSWSBvciBjb250cm9sIG9wY29kZXMgd2hlbiBh
IG1lc3NhZ2UKLSAgICAgICAgICAgICAgICAjIGlzIHN1Y2Nlc2Z1bGx5IHJlY2VpdmVkLgotICAg
ICAgICAgICAgICAgIG9wY29kZSwgbWVzc2FnZSA9IHNlbGYuX3JlY2VpdmVfbWVzc2FnZSgpCi0g
ICAgICAgICAgICAgICAgaWYgbm90IG9wY29kZToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
Ci0gICAgICAgICAgICAgICAgaWYgb3Bjb2RlID09IGNsaWVudF9mb3JfdGVzdGluZy5PUENPREVf
QklOQVJZOgotICAgICAgICAgICAgICAgICAgICBjaGFubmVsX2lkLCBhZHZhbmNlID0gX3BhcnNl
X2NoYW5uZWxfaWQobWVzc2FnZSkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fbXV4Ll9kaXNw
YXRjaF9mcmFtZShjaGFubmVsX2lkLCBtZXNzYWdlW2FkdmFuY2U6XSkKLSAgICAgICAgICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9tdXguX3Byb2Nlc3NfY29udHJvbF9t
ZXNzYWdlKG9wY29kZSwgbWVzc2FnZSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNl
bGYuX211eC5fbm90aWZ5X3JlYWRlcl9kb25lKCkKLQotCi1jbGFzcyBfSW5uZXJGcmFtZShvYmpl
Y3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaW4sIHJzdjEsIHJzdjIsIHJzdjMsIG9wY29k
ZSwgcGF5bG9hZCk6Ci0gICAgICAgIHNlbGYuZmluID0gZmluCi0gICAgICAgIHNlbGYucnN2MSA9
IHJzdjEKLSAgICAgICAgc2VsZi5yc3YyID0gcnN2MgotICAgICAgICBzZWxmLnJzdjMgPSByc3Yz
Ci0gICAgICAgIHNlbGYub3Bjb2RlID0gb3Bjb2RlCi0gICAgICAgIHNlbGYucGF5bG9hZCA9IHBh
eWxvYWQKLQotCi1jbGFzcyBfTG9naWNhbENoYW5uZWxEYXRhKG9iamVjdCk6Ci0gICAgZGVmIF9f
aW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLnF1ZXVlID0gUXVldWUuUXVldWUoKQotICAgICAg
ICBzZWxmLnNlbmRfcXVvdGEgPSAwCi0gICAgICAgIHNlbGYucmVjZWl2ZV9xdW90YSA9IDAKLQot
Ci1jbGFzcyBNdXhDbGllbnQob2JqZWN0KToKLSAgICAiIiJXZWJTb2NrZXQgbXV4IGNsaWVudC4K
LQotICAgIE5vdGUgdGhhdCB0aGlzIGNsYXNzIGlzIE5PVCB0aHJlYWQtc2FmZS4gRG8gbm90IGFj
Y2VzcyBhbiBpbnN0YW5jZSBvZiB0aGlzCi0gICAgY2xhc3MgZnJvbSBtdWx0aXBsZSB0aHJlYWRz
IGF0IGEgc2FtZSB0aW1lLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wdGlv
bnMpOgotICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikK
LQotICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucwotICAgICAgICBzZWxmLl9vcHRpb25z
LmVuYWJsZV9tdXgoKQotICAgICAgICBzZWxmLl9zdHJlYW0gPSBOb25lCi0gICAgICAgIHNlbGYu
X3NvY2tldCA9IE5vbmUKLSAgICAgICAgc2VsZi5faGFuZHNoYWtlID0gY2xpZW50X2Zvcl90ZXN0
aW5nLldlYlNvY2tldEhhbmRzaGFrZShzZWxmLl9vcHRpb25zKQotICAgICAgICBzZWxmLl9pbmNv
bWluZ19mcmFtZV9maWx0ZXIgPSBOb25lCi0gICAgICAgIHNlbGYuX291dGdvaW5nX2ZyYW1lX2Zp
bHRlciA9IE5vbmUKLQotICAgICAgICBzZWxmLl9pc19hY3RpdmUgPSBGYWxzZQotICAgICAgICBz
ZWxmLl9yZWFkX3RocmVhZCA9IE5vbmUKLSAgICAgICAgc2VsZi5fY29udHJvbF9ibG9ja3NfY29u
ZGl0aW9uID0gdGhyZWFkaW5nLkNvbmRpdGlvbigpCi0gICAgICAgIHNlbGYuX2NvbnRyb2xfYmxv
Y2tzID0gW10KLSAgICAgICAgc2VsZi5fY2hhbm5lbF9zbG90cyA9IGNvbGxlY3Rpb25zLmRlcXVl
KCkKLSAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24gPSB0aHJlYWRpbmcu
Q29uZGl0aW9uKCk7Ci0gICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHMgPSB7fQotICAgICAg
ICBzZWxmLl90aW1lb3V0ID0gMgotICAgICAgICBzZWxmLl9waHlzaWNhbF9jb25uZWN0aW9uX2Ns
b3NlX2V2ZW50ID0gTm9uZQotICAgICAgICBzZWxmLl9waHlzaWNhbF9jb25uZWN0aW9uX2Nsb3Nl
X21lc3NhZ2UgPSBOb25lCi0KLSAgICBkZWYgX3BhcnNlX2lubmVyX2ZyYW1lKHNlbGYsIGRhdGEp
OgotICAgICAgICBpZiBsZW4oZGF0YSkgPT0gMDoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlv
bignSW52YWxpZCBlbmNhcHN1bGF0ZWQgZnJhbWUgcmVjZWl2ZWQnKQotCi0gICAgICAgIGZpcnN0
X2J5dGUgPSBvcmQoZGF0YVswXSkKLSAgICAgICAgZmluID0gKGZpcnN0X2J5dGUgPDwgNykgJiAx
Ci0gICAgICAgIHJzdjEgPSAoZmlyc3RfYnl0ZSA8PCA2KSAmIDEKLSAgICAgICAgcnN2MiA9IChm
aXJzdF9ieXRlIDw8IDUpICYgMQotICAgICAgICByc3YzID0gKGZpcnN0X2J5dGUgPDwgNCkgJiAx
Ci0gICAgICAgIG9wY29kZSA9IGZpcnN0X2J5dGUgJiAweGYKLQotICAgICAgICBpZiBzZWxmLl9v
dXRnb2luZ19mcmFtZV9maWx0ZXI6Ci0gICAgICAgICAgICBwYXlsb2FkID0gc2VsZi5fb3V0Z29p
bmdfZnJhbWVfZmlsdGVyLmZpbHRlcigKLSAgICAgICAgICAgICAgICBkYXRhWzE6XSkKLSAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgIHBheWxvYWQgPSBkYXRhWzE6XQotCi0gICAgICAgIHJldHVy
biBfSW5uZXJGcmFtZShmaW4sIHJzdjEsIHJzdjIsIHJzdjMsIG9wY29kZSwgcGF5bG9hZCkKLQot
ICAgIGRlZiBfcHJvY2Vzc19tdXhfY29udHJvbF9ibG9ja3Moc2VsZik6Ci0gICAgICAgIGZvciBi
bG9jayBpbiBzZWxmLl9jb250cm9sX2Jsb2NrczoKLSAgICAgICAgICAgIGlmIGJsb2NrLm9wY29k
ZSA9PSBfTVVYX09QQ09ERV9BRERfQ0hBTk5FTF9SRVNQT05TRToKLSAgICAgICAgICAgICAgICAj
IEFkZENoYW5uZWxSZXNwb25zZSB3aWxsIGJlIGhhbmRsZWQgaW4gYWRkX2NoYW5uZWwoKS4KLSAg
ICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgZWxpZiBibG9jay5vcGNvZGUgPT0g
X01VWF9PUENPREVfRkxPV19DT05UUk9MOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24uYWNxdWlyZSgpCi0g
ICAgICAgICAgICAgICAgICAgIGlmIG5vdCBibG9jay5jaGFubmVsX2lkIGluIHNlbGYuX2xvZ2lj
YWxfY2hhbm5lbHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0lu
dmFsaWQgZmxvdyBjb250cm9sIHJlY2VpdmVkIGZvciAnCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ2NoYW5uZWwgaWQgJWQnICUgYmxvY2suY2hhbm5lbF9pZCkKLSAg
ICAgICAgICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc1tibG9jay5jaGFubmVsX2lk
XS5zZW5kX3F1b3RhICs9ICgKLSAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLnNlbmRfcXVv
dGEpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9u
Lm5vdGlmeSgpCi0gICAgICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICAgICAg
c2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24ucmVsZWFzZSgpCi0gICAgICAgICAgICBl
bGlmIGJsb2NrLm9wY29kZSA9PSBfTVVYX09QQ09ERV9ORVdfQ0hBTk5FTF9TTE9UOgotICAgICAg
ICAgICAgICAgIHNlbGYuX2NoYW5uZWxfc2xvdHMuZXh0ZW5kKFtibG9jay5zZW5kX3F1b3RhXSAq
IGJsb2NrLnNsb3RzKQotCi0gICAgZGVmIF9kaXNwYXRjaF9mcmFtZShzZWxmLCBjaGFubmVsX2lk
LCBwYXlsb2FkKToKLSAgICAgICAgaWYgY2hhbm5lbF9pZCA9PSBfQ09OVFJPTF9DSEFOTkVMX0lE
OgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNlbGYuX2NvbnRyb2xfYmxvY2tz
X2NvbmRpdGlvbi5hY3F1aXJlKCkKLSAgICAgICAgICAgICAgICBzZWxmLl9jb250cm9sX2Jsb2Nr
cyArPSBfcGFyc2VfY29udHJvbF9ibG9ja3MocGF5bG9hZCkKLSAgICAgICAgICAgICAgICBzZWxm
Ll9wcm9jZXNzX211eF9jb250cm9sX2Jsb2NrcygpCi0gICAgICAgICAgICAgICAgc2VsZi5fY29u
dHJvbF9ibG9ja3NfY29uZGl0aW9uLm5vdGlmeSgpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAg
ICAgICAgICAgICAgIHNlbGYuX2NvbnRyb2xfYmxvY2tzX2NvbmRpdGlvbi5yZWxlYXNlKCkKLSAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLl9sb2dp
Y2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5hY3F1aXJlKCkKLSAgICAgICAgICAgICAgICBpZiBub3Qg
Y2hhbm5lbF9pZCBpbiBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzOgotICAgICAgICAgICAgICAgICAg
ICByYWlzZSBFeGNlcHRpb24oJ1JlY2VpdmVkIGxvZ2ljYWwgZnJhbWUgb24gY2hhbm5lbCBpZCAn
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJWQsIHdoaWNoIGlzIG5vdCBl
c3RhYmxpc2hlZCcgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbm5l
bF9pZCkKLQotICAgICAgICAgICAgICAgIGlubmVyX2ZyYW1lID0gc2VsZi5fcGFyc2VfaW5uZXJf
ZnJhbWUocGF5bG9hZCkKLSAgICAgICAgICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzW2No
YW5uZWxfaWRdLnJlY2VpdmVfcXVvdGEgLT0gKAotICAgICAgICAgICAgICAgICAgICAgICAgbGVu
KGlubmVyX2ZyYW1lLnBheWxvYWQpKQotICAgICAgICAgICAgICAgIGlmIHNlbGYuX2xvZ2ljYWxf
Y2hhbm5lbHNbY2hhbm5lbF9pZF0ucmVjZWl2ZV9xdW90YSA8IDA6Ci0gICAgICAgICAgICAgICAg
ICAgIHJhaXNlIEV4Y2VwdGlvbignVGhlIHNlcnZlciB2aW9sYXRlcyBxdW90YSBvbiAnCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2hhbm5lbCBpZCAlZCcgJSBjaGFubmVs
X2lkKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzZWxmLl9sb2dpY2Fs
X2NoYW5uZWxzX2NvbmRpdGlvbi5yZWxlYXNlKCkKLSAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxf
Y2hhbm5lbHNbY2hhbm5lbF9pZF0ucXVldWUucHV0KGlubmVyX2ZyYW1lKQotCi0gICAgZGVmIF9w
cm9jZXNzX2NvbnRyb2xfbWVzc2FnZShzZWxmLCBvcGNvZGUsIG1lc3NhZ2UpOgotICAgICAgICAj
IFBpbmcvUG9uZyBhcmUgbm90IHN1cHBvcnRlZC4KLSAgICAgICAgaWYgb3Bjb2RlID09IGNsaWVu
dF9mb3JfdGVzdGluZy5PUENPREVfQ0xPU0U6Ci0gICAgICAgICAgICBzZWxmLl9waHlzaWNhbF9j
b25uZWN0aW9uX2Nsb3NlX21lc3NhZ2UgPSBtZXNzYWdlCi0gICAgICAgICAgICBpZiBzZWxmLl9p
c19hY3RpdmU6Ci0gICAgICAgICAgICAgICAgc2VsZi5fc3RyZWFtLnNlbmRfY2xvc2UoCi0gICAg
ICAgICAgICAgICAgICAgIGNvZGU9Y2xpZW50X2Zvcl90ZXN0aW5nLlNUQVRVU19OT1JNQUxfQ0xP
U1VSRSwgcmVhc29uPScnKQotICAgICAgICAgICAgICAgIHNlbGYuX3JlYWRfdGhyZWFkLnJlcXVl
c3Rfc3RvcCgpCi0KLSAgICAgICAgICAgIGlmIHNlbGYuX3BoeXNpY2FsX2Nvbm5lY3Rpb25fY2xv
c2VfZXZlbnQ6Ci0gICAgICAgICAgICAgICAgc2VsZi5fcGh5c2ljYWxfY29ubmVjdGlvbl9jbG9z
ZV9ldmVudC5zZXQoKQotCi0gICAgZGVmIF9ub3RpZnlfcmVhZGVyX2RvbmUoc2VsZik6Ci0gICAg
ICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnUmVhZCB0aHJlYWQgdGVybWluYXRlZC4nKQotICAgICAg
ICBzZWxmLmNsb3NlX3NvY2tldCgpCi0KLSAgICBkZWYgX2Fzc2VydF9jaGFubmVsX3Nsb3RfYXZh
aWxhYmxlKHNlbGYpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9jb250cm9sX2Js
b2Nrc19jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgICAgICBpZiBsZW4oc2VsZi5fY2hhbm5l
bF9zbG90cykgPT0gMDoKLSAgICAgICAgICAgICAgICAjIFdhaXQgb25jZQotICAgICAgICAgICAg
ICAgIHNlbGYuX2NvbnRyb2xfYmxvY2tzX2NvbmRpdGlvbi53YWl0KHRpbWVvdXQ9c2VsZi5fdGlt
ZW91dCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX2NvbnRyb2xfYmxvY2tz
X2NvbmRpdGlvbi5yZWxlYXNlKCkKLQotICAgICAgICBpZiBsZW4oc2VsZi5fY2hhbm5lbF9zbG90
cykgPT0gMDoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignRmFpbGVkIHRvIHJlY2VpdmUg
TmV3Q2hhbm5lbFNsb3QnKQotCi0gICAgZGVmIF9hc3NlcnRfc2VuZF9xdW90YV9hdmFpbGFibGUo
c2VsZiwgY2hhbm5lbF9pZCk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2lj
YWxfY2hhbm5lbHNfY29uZGl0aW9uLmFjcXVpcmUoKQotICAgICAgICAgICAgaWYgc2VsZi5fbG9n
aWNhbF9jaGFubmVsc1tjaGFubmVsX2lkXS5zZW5kX3F1b3RhID09IDA6Ci0gICAgICAgICAgICAg
ICAgIyBXYWl0IG9uY2UKLSAgICAgICAgICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2Nv
bmRpdGlvbi53YWl0KHRpbWVvdXQ9c2VsZi5fdGltZW91dCkKLSAgICAgICAgZmluYWxseToKLSAg
ICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLnJlbGVhc2UoKQotCi0g
ICAgICAgIGlmIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNbY2hhbm5lbF9pZF0uc2VuZF9xdW90YSA9
PSAwOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdGYWlsZWQgdG8gcmVjZWl2ZSBGbG93
Q29udHJvbCBmb3IgY2hhbm5lbCBpZCAlZCcgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNoYW5uZWxfaWQpCi0KLSAgICBkZWYgY29ubmVjdChzZWxmKToKLSAgICAgICAgc2VsZi5fc29j
a2V0ID0gY2xpZW50X2Zvcl90ZXN0aW5nLmNvbm5lY3Rfc29ja2V0X3dpdGhfcmV0cnkoCi0gICAg
ICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfaG9zdCwKLSAgICAgICAgICAgICAgICBz
ZWxmLl9vcHRpb25zLnNlcnZlcl9wb3J0LAotICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMu
c29ja2V0X3RpbWVvdXQsCi0gICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy51c2VfdGxzKQot
Ci0gICAgICAgIHNlbGYuX2hhbmRzaGFrZS5oYW5kc2hha2Uoc2VsZi5fc29ja2V0KQotICAgICAg
ICBzZWxmLl9zdHJlYW0gPSBjbGllbnRfZm9yX3Rlc3RpbmcuV2ViU29ja2V0U3RyZWFtKAotICAg
ICAgICAgICAgc2VsZi5fc29ja2V0LCBzZWxmLl9oYW5kc2hha2UpCi0KLSAgICAgICAgc2VsZi5f
bG9naWNhbF9jaGFubmVsc1tfREVGQVVMVF9DSEFOTkVMX0lEXSA9IF9Mb2dpY2FsQ2hhbm5lbERh
dGEoKQotCi0gICAgICAgIHNlbGYuX3JlYWRfdGhyZWFkID0gX011eFJlYWRlclRocmVhZChzZWxm
KQotICAgICAgICBzZWxmLl9yZWFkX3RocmVhZC5zdGFydCgpCi0KLSAgICAgICAgc2VsZi5fYXNz
ZXJ0X2NoYW5uZWxfc2xvdF9hdmFpbGFibGUoKQotICAgICAgICBzZWxmLl9hc3NlcnRfc2VuZF9x
dW90YV9hdmFpbGFibGUoX0RFRkFVTFRfQ0hBTk5FTF9JRCkKLQotICAgICAgICBzZWxmLl9pc19h
Y3RpdmUgPSBUcnVlCi0gICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdDb25uZWN0aW9uIGVzdGFi
bGlzaGVkJykKLQotICAgIGRlZiBhZGRfY2hhbm5lbChzZWxmLCBjaGFubmVsX2lkLCBvcHRpb25z
KToKLSAgICAgICAgaWYgbm90IHNlbGYuX2lzX2FjdGl2ZToKLSAgICAgICAgICAgIHJhaXNlIEV4
Y2VwdGlvbignTXV4IGNsaWVudCBpcyBub3QgYWN0aXZlJykKLQotICAgICAgICBpZiBjaGFubmVs
X2lkIGluIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHM6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRp
b24oJ0NoYW5uZWwgaWQgJWQgYWxyZWFkeSBleGlzdHMnICUgY2hhbm5lbF9pZCkKLQotICAgICAg
ICB0cnk6Ci0gICAgICAgICAgICBzZW5kX3F1b3RhID0gc2VsZi5fY2hhbm5lbF9zbG90cy5wb3Bs
ZWZ0KCkKLSAgICAgICAgZXhjZXB0IEluZGV4RXJyb3IgYXMgZToKLSAgICAgICAgICAgIHJhaXNl
IEV4Y2VwdGlvbignTm8gY2hhbm5lbCBzbG90czogJXInICUgZSkKLQotICAgICAgICAjIENyZWF0
ZSBBZGRDaGFubmVsIHJlcXVlc3QKLSAgICAgICAgcmVxdWVzdF9saW5lID0gJ0dFVCAlcyBIVFRQ
LzEuMVxyXG4nICUgb3B0aW9ucy5yZXNvdXJjZQotICAgICAgICBmaWVsZHMgPSBbXQotICAgICAg
ICBpZiBvcHRpb25zLnNlcnZlcl9wb3J0ID09IGNsaWVudF9mb3JfdGVzdGluZy5ERUZBVUxUX1BP
UlQ6Ci0gICAgICAgICAgICBmaWVsZHMuYXBwZW5kKCdIb3N0OiAlc1xyXG4nICUgb3B0aW9ucy5z
ZXJ2ZXJfaG9zdC5sb3dlcigpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZmllbGRzLmFw
cGVuZCgnSG9zdDogJXM6JWRcclxuJyAlIChvcHRpb25zLnNlcnZlcl9ob3N0Lmxvd2VyKCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuc2Vy
dmVyX3BvcnQpKQotICAgICAgICBmaWVsZHMuYXBwZW5kKCdPcmlnaW46ICVzXHJcbicgJSBvcHRp
b25zLm9yaWdpbi5sb3dlcigpKQotICAgICAgICBmaWVsZHMuYXBwZW5kKCdDb25uZWN0aW9uOiBV
cGdyYWRlXHJcbicpCi0KLSAgICAgICAgaWYgbGVuKG9wdGlvbnMuZXh0ZW5zaW9ucykgPiAwOgot
ICAgICAgICAgICAgZmllbGRzLmFwcGVuZCgnU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zOiAlc1xy
XG4nICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJywgJy5qb2luKG9wdGlvbnMuZXh0ZW5z
aW9ucykpCi0KLSAgICAgICAgaGFuZHNoYWtlID0gcmVxdWVzdF9saW5lICsgJycuam9pbihmaWVs
ZHMpICsgJ1xyXG4nCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9j
aGFubmVsX3JlcXVlc3QoCi0gICAgICAgICAgICBjaGFubmVsX2lkLCBoYW5kc2hha2UpCi0gICAg
ICAgIHBheWxvYWQgPSBfZW5jb2RlX2NoYW5uZWxfaWQoX0NPTlRST0xfQ0hBTk5FTF9JRCkgKyBh
ZGRfY2hhbm5lbF9yZXF1ZXN0Ci0gICAgICAgIHNlbGYuX3N0cmVhbS5zZW5kX2JpbmFyeShwYXls
b2FkKQotCi0gICAgICAgICMgV2FpdCBBZGRDaGFubmVsUmVzcG9uc2UKLSAgICAgICAgc2VsZi5f
bG9nZ2VyLmRlYnVnKCdXYWl0aW5nIEFkZENoYW5uZWxSZXNwb25zZSBmb3IgdGhlIHJlcXVlc3Qu
Li4nKQotICAgICAgICByZXNwb25zZSA9IE5vbmUKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAg
c2VsZi5fY29udHJvbF9ibG9ja3NfY29uZGl0aW9uLmFjcXVpcmUoKQotICAgICAgICAgICAgd2hp
bGUgVHJ1ZToKLSAgICAgICAgICAgICAgICBmb3IgYmxvY2sgaW4gc2VsZi5fY29udHJvbF9ibG9j
a3M6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGJsb2NrLm9wY29kZSAhPSBfTVVYX09QQ09ERV9B
RERfQ0hBTk5FTF9SRVNQT05TRToKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0g
ICAgICAgICAgICAgICAgICAgIGlmIGJsb2NrLmNoYW5uZWxfaWQgPT0gY2hhbm5lbF9pZDoKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gYmxvY2sKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbGYuX2NvbnRyb2xfYmxvY2tzLnJlbW92ZShyZXNwb25zZSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgaWYgcmVzcG9uc2U6Ci0gICAgICAg
ICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgc2VsZi5fY29udHJvbF9ibG9ja3Nf
Y29uZGl0aW9uLndhaXQoc2VsZi5fdGltZW91dCkKLSAgICAgICAgICAgICAgICBpZiBub3Qgc2Vs
Zi5faXNfYWN0aXZlOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0FkZENo
YW5uZWxSZXF1ZXN0IHRpbWVkIG91dCcpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBz
ZWxmLl9jb250cm9sX2Jsb2Nrc19jb25kaXRpb24ucmVsZWFzZSgpCi0KLSAgICAgICAgIyBWYWxp
ZGF0ZSBBZGRDaGFubmVsUmVzcG9uc2UKLSAgICAgICAgaWYgcmVzcG9uc2UucmVqZWN0ZWQ6Ci0g
ICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1RoZSBzZXJ2ZXIgcmVqZWN0ZWQgQWRkQ2hhbm5l
bFJlcXVlc3QnKQotCi0gICAgICAgIGZpZWxkcyA9IF9wYXJzZV9oYW5kc2hha2VfcmVzcG9uc2Uo
cmVzcG9uc2UuZW5jb2RlZF9oYW5kc2hha2UpCi0KLSAgICAgICAgIyBTaG91bGQgd2UgcmVqZWN0
IHdoZW4gVXBncmFkZSwgQ29ubmVjdGlvbiwgb3IgU2VjLVdlYlNvY2tldC1BY2NlcHQKLSAgICAg
ICAgIyBoZWFkZXJzIGV4aXN0PwotCi0gICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29u
ZGl0aW9uLmFjcXVpcmUoKQotICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzW2NoYW5uZWxf
aWRdID0gX0xvZ2ljYWxDaGFubmVsRGF0YSgpCi0gICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5l
bHNbY2hhbm5lbF9pZF0uc2VuZF9xdW90YSA9IHNlbmRfcXVvdGEKLSAgICAgICAgc2VsZi5fbG9n
aWNhbF9jaGFubmVsc19jb25kaXRpb24ucmVsZWFzZSgpCi0KLSAgICAgICAgc2VsZi5fbG9nZ2Vy
LmRlYnVnKCdMb2dpY2FsIGNoYW5uZWwgJWQgZXN0YWJsaXNoZWQnICUgY2hhbm5lbF9pZCkKLQot
ICAgIGRlZiBfY2hlY2tfbG9naWNhbF9jaGFubmVsX2lzX29wZW5lZChzZWxmLCBjaGFubmVsX2lk
KToKLSAgICAgICAgaWYgbm90IHNlbGYuX2lzX2FjdGl2ZToKLSAgICAgICAgICAgIHJhaXNlIEV4
Y2VwdGlvbignTXV4IGNsaWVudCBpcyBub3QgYWN0aXZlJykKLQotICAgICAgICBpZiBub3QgY2hh
bm5lbF9pZCBpbiBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzOgotICAgICAgICAgICAgcmFpc2UgRXhj
ZXB0aW9uKCdMb2dpY2FsIGNoYW5uZWwgJWQgaXMgbm90IGVzdGFibGlzaGVkLicpCi0KLSAgICBk
ZWYgZHJvcF9jaGFubmVsKHNlbGYsIGNoYW5uZWxfaWQpOgotICAgICAgICAjIFRPRE8oYmFzaGkp
OiBJbXBsZW1lbnQKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIHNlbmRfZmxvd19jb250cm9sKHNl
bGYsIGNoYW5uZWxfaWQsIHJlcGxlbmlzaGVkX3F1b3RhKToKLSAgICAgICAgc2VsZi5fY2hlY2tf
bG9naWNhbF9jaGFubmVsX2lzX29wZW5lZChjaGFubmVsX2lkKQotICAgICAgICBmbG93X2NvbnRy
b2wgPSBfY3JlYXRlX2Zsb3dfY29udHJvbChjaGFubmVsX2lkLCByZXBsZW5pc2hlZF9xdW90YSkK
LSAgICAgICAgcGF5bG9hZCA9IF9lbmNvZGVfY2hhbm5lbF9pZChfQ09OVFJPTF9DSEFOTkVMX0lE
KSArIGZsb3dfY29udHJvbAotICAgICAgICAjIFJlcGxlbmlzaCByZWNlaXZlIHF1b3RhCi0gICAg
ICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLmFj
cXVpcmUoKQotICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc1tjaGFubmVsX2lkXS5y
ZWNlaXZlX3F1b3RhICs9ICgKLSAgICAgICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90YSkKLSAg
ICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0
aW9uLnJlbGVhc2UoKQotICAgICAgICBzZWxmLl9zdHJlYW0uc2VuZF9iaW5hcnkocGF5bG9hZCkK
LQotICAgIGRlZiBzZW5kX21lc3NhZ2Uoc2VsZiwgY2hhbm5lbF9pZCwgbWVzc2FnZSwgZW5kPVRy
dWUsIGJpbmFyeT1GYWxzZSk6Ci0gICAgICAgIHNlbGYuX2NoZWNrX2xvZ2ljYWxfY2hhbm5lbF9p
c19vcGVuZWQoY2hhbm5lbF9pZCkKLQotICAgICAgICBpZiBiaW5hcnk6Ci0gICAgICAgICAgICBm
aXJzdF9ieXRlID0gKGVuZCA8PCA3KSB8IGNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfQklOQVJZ
Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmaXJzdF9ieXRlID0gKGVuZCA8PCA3KSB8IGNs
aWVudF9mb3JfdGVzdGluZy5PUENPREVfVEVYVAotICAgICAgICAgICAgbWVzc2FnZSA9IG1lc3Nh
Z2UuZW5jb2RlKCd1dGYtOCcpCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fbG9n
aWNhbF9jaGFubmVsc19jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgICAgICBpZiBzZWxmLl9s
b2dpY2FsX2NoYW5uZWxzW2NoYW5uZWxfaWRdLnNlbmRfcXVvdGEgPCBsZW4obWVzc2FnZSk6Ci0g
ICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdTZW5kIHF1b3RhIHZpb2xhdGlvbjogJWQg
PCAlZCcgJSAoCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxz
W2NoYW5uZWxfaWRdLnNlbmRfcXVvdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICBsZW4obWVz
c2FnZSkpKQotCi0gICAgICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzW2NoYW5uZWxfaWRd
LnNlbmRfcXVvdGEgLT0gbGVuKG1lc3NhZ2UpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAg
ICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5yZWxlYXNlKCkKLSAgICAgICAgcGF5
bG9hZCA9IF9lbmNvZGVfY2hhbm5lbF9pZChjaGFubmVsX2lkKSArIGNocihmaXJzdF9ieXRlKSAr
IG1lc3NhZ2UKLSAgICAgICAgc2VsZi5fc3RyZWFtLnNlbmRfYmluYXJ5KHBheWxvYWQpCi0KLSAg
ICBkZWYgYXNzZXJ0X3JlY2VpdmUoc2VsZiwgY2hhbm5lbF9pZCwgcGF5bG9hZCwgYmluYXJ5PUZh
bHNlKToKLSAgICAgICAgc2VsZi5fY2hlY2tfbG9naWNhbF9jaGFubmVsX2lzX29wZW5lZChjaGFu
bmVsX2lkKQotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGlubmVyX2ZyYW1lID0gc2VsZi5f
bG9naWNhbF9jaGFubmVsc1tjaGFubmVsX2lkXS5xdWV1ZS5nZXQoCi0gICAgICAgICAgICAgICAg
dGltZW91dD1zZWxmLl90aW1lb3V0KQotICAgICAgICBleGNlcHQgUXVldWUuRW1wdHkgYXMgZToK
LSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignQ2Fubm90IHJlY2VpdmUgbWVzc2FnZSBmcm9t
IGNoYW5uZWwgaWQgJWQnICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFubmVsX2lk
KQotCi0gICAgICAgIGlmIGJpbmFyeToKLSAgICAgICAgICAgIG9wY29kZSA9IGNsaWVudF9mb3Jf
dGVzdGluZy5PUENPREVfQklOQVJZCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBvcGNvZGUg
PSBjbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQKLQotICAgICAgICBpZiBpbm5lcl9mcmFt
ZS5vcGNvZGUgIT0gb3Bjb2RlOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdVbmV4cGVj
dGVkIG9wY29kZSByZWNlaXZlZCAoJXIgIT0gJXIpJyAlCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKGV4cGVjdGVkX29wY29kZSwgaW5uZXJfZnJhbWUub3Bjb2RlKSkKLQotICAgICAgICBp
ZiBpbm5lcl9mcmFtZS5wYXlsb2FkICE9IHBheWxvYWQ6Ci0gICAgICAgICAgICByYWlzZSBFeGNl
cHRpb24oJ1VuZXhwZWN0ZWQgcGF5bG9hZCByZWNlaXZlZCcpCi0KLSAgICBkZWYgc2VuZF9jbG9z
ZShzZWxmLCBjaGFubmVsX2lkLCBjb2RlPU5vbmUsIHJlYXNvbj0nJyk6Ci0gICAgICAgIHNlbGYu
X2NoZWNrX2xvZ2ljYWxfY2hhbm5lbF9pc19vcGVuZWQoY2hhbm5lbF9pZCkKLQotICAgICAgICBp
ZiBjb2RlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgYm9keSA9IHN0cnVjdC5wYWNrKCchSCcs
IGNvZGUpICsgcmVhc29uLmVuY29kZSgndXRmLTgnKQotICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgYm9keSA9ICcnCi0KLSAgICAgICAgZmlyc3RfYnl0ZSA9ICgxIDw8IDcpIHwgY2xpZW50X2Zv
cl90ZXN0aW5nLk9QQ09ERV9DTE9TRQotICAgICAgICBwYXlsb2FkID0gX2VuY29kZV9jaGFubmVs
X2lkKGNoYW5uZWxfaWQpICsgY2hyKGZpcnN0X2J5dGUpICsgYm9keQotICAgICAgICBzZWxmLl9z
dHJlYW0uc2VuZF9iaW5hcnkocGF5bG9hZCkKLQotICAgIGRlZiBhc3NlcnRfcmVjZWl2ZV9jbG9z
ZShzZWxmLCBjaGFubmVsX2lkKToKLSAgICAgICAgc2VsZi5fY2hlY2tfbG9naWNhbF9jaGFubmVs
X2lzX29wZW5lZChjaGFubmVsX2lkKQotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGlubmVy
X2ZyYW1lID0gc2VsZi5fbG9naWNhbF9jaGFubmVsc1tjaGFubmVsX2lkXS5xdWV1ZS5nZXQoCi0g
ICAgICAgICAgICAgICAgdGltZW91dD1zZWxmLl90aW1lb3V0KQotICAgICAgICBleGNlcHQgUXVl
dWUuRW1wdHkgYXMgZToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignQ2Fubm90IHJlY2Vp
dmUgbWVzc2FnZSBmcm9tIGNoYW5uZWwgaWQgJWQnICUKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjaGFubmVsX2lkKQotICAgICAgICBpZiBpbm5lcl9mcmFtZS5vcGNvZGUgIT0gY2xpZW50
X2Zvcl90ZXN0aW5nLk9QQ09ERV9DTE9TRToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbign
RGlkblwndCByZWNlaXZlIGNsb3NlIGZyYW1lJykKLQotICAgIGRlZiBzZW5kX3BoeXNpY2FsX2Nv
bm5lY3Rpb25fY2xvc2Uoc2VsZiwgY29kZT1Ob25lLCByZWFzb249JycpOgotICAgICAgICBzZWxm
Ll9waHlzaWNhbF9jb25uZWN0aW9uX2Nsb3NlX2V2ZW50ID0gdGhyZWFkaW5nLkV2ZW50KCkKLSAg
ICAgICAgc2VsZi5fc3RyZWFtLnNlbmRfY2xvc2UoY29kZSwgcmVhc29uKQotCi0gICAgIyBUaGlz
IG1ldGhvZCBjYW4gYmUgdXNlZCBvbmx5IGFmdGVyIGNhbGxpbmcKLSAgICAjIHNlbmRfcGh5c2lj
YWxfY29ubmVjdGlvbl9jbG9zZSgpLgotICAgIGRlZiBhc3NlcnRfcGh5c2ljYWxfY29ubmVjdGlv
bl9yZWNlaXZlX2Nsb3NlKAotICAgICAgICBzZWxmLCBjb2RlPWNsaWVudF9mb3JfdGVzdGluZy5T
VEFUVVNfTk9STUFMX0NMT1NVUkUsIHJlYXNvbj0nJyk6Ci0gICAgICAgIHNlbGYuX3BoeXNpY2Fs
X2Nvbm5lY3Rpb25fY2xvc2VfZXZlbnQud2FpdCh0aW1lb3V0PXNlbGYuX3RpbWVvdXQpCi0gICAg
ICAgIGlmIChub3Qgc2VsZi5fcGh5c2ljYWxfY29ubmVjdGlvbl9jbG9zZV9ldmVudC5pc1NldCgp
IG9yCi0gICAgICAgICAgICBub3Qgc2VsZi5fcGh5c2ljYWxfY29ubmVjdGlvbl9jbG9zZV9tZXNz
YWdlKToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignRGlkblwndCByZWNlaXZlIGNsb3Np
bmcgaGFuZHNoYWtlJykKLQotICAgIGRlZiBjbG9zZV9zb2NrZXQoc2VsZik6Ci0gICAgICAgIHNl
bGYuX2lzX2FjdGl2ZSA9IEZhbHNlCi0gICAgICAgIHNlbGYuX3NvY2tldC5jbG9zZSgpCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3B5d2Vic29ja2V0L3Rlc3QvcnVuX2FsbC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC9ydW5fYWxsLnB5CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MGE1ZDg3ZDgzODIyYjA3ODNiZTEzZTMzZGRhM2Fi
NjFhNWFmZTQwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvdGVzdC9ydW5fYWxsLnB5CisrKyAvZGV2L251bGwKQEAgLTEsODkgKzAsMCBAQAotIyEv
dXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgotIyBB
bGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBt
ZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0j
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJSdW4gYWxsIHRl
c3RzIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KLQotVGhpcyBzdWl0ZSBpcyBleHBlY3RlZCB0byBi
ZSBydW4gdW5kZXIgcHl3ZWJzb2NrZXQncyBzcmMgZGlyZWN0b3J5LCBpLmUuIHRoZQotZGlyZWN0
b3J5IGNvbnRhaW5pbmcgbW9kX3B5d2Vic29ja2V0LCB0ZXN0LCBldGMuCi0KLVRvIGNoYW5nZSBs
b2dnaW4gbGV2ZWwsIHBsZWFzZSBzcGVjaWZ5IC0tbG9nLWxldmVsIG9wdGlvbi4KLSAgICBweXRo
b24gdGVzdC9ydW5fdGVzdC5weSAtLWxvZy1sZXZlbCBkZWJ1ZwotCi1UbyBwYXNzIGFueSBvcHRp
b24gdG8gdW5pdHRlc3QgbW9kdWxlLCBwbGVhc2Ugc3BlY2lmeSBvcHRpb25zIGFmdGVyICctLScu
IEZvcgotZXhhbXBsZSwgcnVuIHRoaXMgZm9yIG1ha2luZyB0aGUgdGVzdCBydW5uZXIgdmVyYm9z
ZS4KLSAgICBweXRob24gdGVzdC9ydW5fdGVzdC5weSAtLWxvZy1sZXZlbCBkZWJ1ZyAtLSAtdgot
IiIiCi0KLQotaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBvcHRwYXJzZQotaW1wb3J0IG9zCi1pbXBv
cnQgcmUKLWltcG9ydCBzeXMKLWltcG9ydCB1bml0dGVzdAotCi0KLV9URVNUX01PRFVMRV9QQVRU
RVJOID0gcmUuY29tcGlsZShyJ14odGVzdF8uKylcLnB5JCcpCi0KLQotZGVmIF9saXN0X3Rlc3Rf
bW9kdWxlcyhkaXJlY3RvcnkpOgotICAgIG1vZHVsZV9uYW1lcyA9IFtdCi0gICAgZm9yIGZpbGVu
YW1lIGluIG9zLmxpc3RkaXIoZGlyZWN0b3J5KToKLSAgICAgICAgbWF0Y2ggPSBfVEVTVF9NT0RV
TEVfUEFUVEVSTi5zZWFyY2goZmlsZW5hbWUpCi0gICAgICAgIGlmIG1hdGNoOgotICAgICAgICAg
ICAgbW9kdWxlX25hbWVzLmFwcGVuZChtYXRjaC5ncm91cCgxKSkKLSAgICByZXR1cm4gbW9kdWxl
X25hbWVzCi0KLQotZGVmIF9zdWl0ZSgpOgotICAgIGxvYWRlciA9IHVuaXR0ZXN0LlRlc3RMb2Fk
ZXIoKQotICAgIHJldHVybiBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzKAotICAgICAgICAgICAg
X2xpc3RfdGVzdF9tb2R1bGVzKG9zLnBhdGguam9pbihvcy5wYXRoLnNwbGl0KF9fZmlsZV9fKVsw
XSwgJy4nKSkpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBwYXJzZXIgPSBv
cHRwYXJzZS5PcHRpb25QYXJzZXIoKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctLWxvZy1sZXZl
bCcsICctLWxvZ19sZXZlbCcsIHR5cGU9J2Nob2ljZScsCi0gICAgICAgICAgICAgICAgICAgICAg
ZGVzdD0nbG9nX2xldmVsJywgZGVmYXVsdD0nd2FybmluZycsCi0gICAgICAgICAgICAgICAgICAg
ICAgY2hvaWNlcz1bJ2RlYnVnJywgJ2luZm8nLCAnd2FybmluZycsICd3YXJuJywgJ2Vycm9yJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY3JpdGljYWwnXSkKLSAgICBvcHRpb25z
LCBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQotICAgIGxvZ2dpbmcuYmFzaWNDb25maWcoCi0g
ICAgICAgICAgICBsZXZlbD1sb2dnaW5nLmdldExldmVsTmFtZShvcHRpb25zLmxvZ19sZXZlbC51
cHBlcigpKSwKLSAgICAgICAgICAgIGZvcm1hdD0nJShsZXZlbG5hbWUpcyAlKGFzY3RpbWUpcyAn
Ci0gICAgICAgICAgICAgICAgICAgJyUoZmlsZW5hbWUpczolKGxpbmVubylkXSAnCi0gICAgICAg
ICAgICAgICAgICAgJyUobWVzc2FnZSlzJywKLSAgICAgICAgICAgIGRhdGVmbXQ9JyVIOiVNOiVT
JykKLSAgICB1bml0dGVzdC5tYWluKGRlZmF1bHRUZXN0PSdfc3VpdGUnLCBhcmd2PVtzeXMuYXJn
dlswXV0gKyBhcmdzKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90
ZXN0L3NldF9zeXNfcGF0aC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC9zZXRfc3lzX3BhdGgucHkKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzYzZkYjllYTRkMzgzYTM3YzI3YTA2MGEwZWYxYzU2M2Ji
YjFlMTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tl
dC90ZXN0L3NldF9zeXNfcGF0aC5weQorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLSMg
Q29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0j
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0j
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotCi0KLSIiIkNvbmZpZ3VyYXRpb24gZm9yIHRlc3RpbmcuCi0KLVRlc3Qg
ZmlsZXMgc2hvdWxkIGltcG9ydCB0aGlzIG1vZHVsZSBiZWZvcmUgbW9kX3B5d2Vic29ja2V0Lgot
IiIiCi0KLQotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi0KLQotIyBBZGQgdGhlIHBhcmVudCBkaXJl
Y3RvcnkgdG8gc3lzLnBhdGggdG8gZW5hYmxlIGltcG9ydGluZyBtb2RfcHl3ZWJzb2NrZXQuCi1z
eXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKG9zLnBhdGguc3BsaXQoX19maWxlX18pWzBd
LCAnLi4nKSkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90
ZXN0X2Rpc3BhdGNoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RfZGlzcGF0Y2gucHkKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGUxNmQ2MDU2MDljOGFiN2IzMGQ3MjA2MzgzMGZmNDM0YzFjNTZk
YzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90
ZXN0L3Rlc3RfZGlzcGF0Y2gucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyODggKzAsMCBAQAotIyEv
dXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgotIyBB
bGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBt
ZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0j
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJUZXN0cyBmb3Ig
ZGlzcGF0Y2ggbW9kdWxlLiIiIgotCi0KLWltcG9ydCBvcwotaW1wb3J0IHVuaXR0ZXN0Ci0KLWlt
cG9ydCBzZXRfc3lzX3BhdGggICMgVXBkYXRlIHN5cy5wYXRoIHRvIGxvY2F0ZSBtb2RfcHl3ZWJz
b2NrZXQgbW9kdWxlLgotCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgZGlzcGF0Y2gKLWZy
b20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBoYW5kc2hha2UKLWZyb20gdGVzdCBpbXBvcnQgbW9j
awotCi0KLV9URVNUX0hBTkRMRVJTX0RJUiA9IG9zLnBhdGguam9pbigKLSAgICAgICAgb3MucGF0
aC5zcGxpdChfX2ZpbGVfXylbMF0sICd0ZXN0ZGF0YScsICdoYW5kbGVycycpCi0KLV9URVNUX0hB
TkRMRVJTX1NVQl9ESVIgPSBvcy5wYXRoLmpvaW4oX1RFU1RfSEFORExFUlNfRElSLCAnc3ViJykK
LQotCi1jbGFzcyBEaXNwYXRjaGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiQSB1
bml0dGVzdCBmb3IgZGlzcGF0Y2ggbW9kdWxlLiIiIgotCi0gICAgZGVmIHRlc3Rfbm9ybWFsaXpl
X3BhdGgoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5hYnNwYXRoKCcv
YS9iJykucmVwbGFjZSgnXFwnLCAnLycpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3Bh
dGNoLl9ub3JtYWxpemVfcGF0aCgnL2EvYicpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9z
LnBhdGguYWJzcGF0aCgnL2EvYicpLnJlcGxhY2UoJ1xcJywgJy8nKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICBkaXNwYXRjaC5fbm9ybWFsaXplX3BhdGgoJ1xcYVxcYicpKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKG9zLnBhdGguYWJzcGF0aCgnL2EvYicpLnJlcGxhY2UoJ1xcJywgJy8n
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaC5fbm9ybWFsaXplX3BhdGgoJy9h
L2MvLi4vYicpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnBhdGguYWJzcGF0aCgnYWJj
JykucmVwbGFjZSgnXFwnLCAnLycpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNo
Ll9ub3JtYWxpemVfcGF0aCgnYWJjJykpCi0KLSAgICBkZWYgdGVzdF9jb252ZXJ0ZXIoc2VsZik6
Ci0gICAgICAgIGNvbnZlcnRlciA9IGRpc3BhdGNoLl9jcmVhdGVfcGF0aF90b19yZXNvdXJjZV9j
b252ZXJ0ZXIoJy9hL2InKQotICAgICAgICAjIFB5dGhvbiBidWlsdCBieSBNU0MgaW5zZXJ0cyBh
IGRyaXZlIG5hbWUgbGlrZSAnQzpcJyB2aWEgcmVhbHBhdGgoKS4KLSAgICAgICAgIyBDb252ZXJ0
ZXIgR2VuZXJhdG9yIGV4cGFuZHMgcHJvdmlkZWQgcGF0aCB1c2luZyByZWFscGF0aCgpIGFuZCB1
c2VzCi0gICAgICAgICMgdGhlIHBhdGggaW5jbHVkaW5nIGEgZHJpdmUgbmFtZSB0byB2ZXJpZnkg
dGhlIHByZWZpeC4KLSAgICAgICAgb3Nfcm9vdCA9IG9zLnBhdGgucmVhbHBhdGgoJy8nKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKCcvaCcsIGNvbnZlcnRlcihvc19yb290ICsgJ2EvYi9oX3dz
aC5weScpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcvYy9oJywgY29udmVydGVyKG9zX3Jv
b3QgKyAnYS9iL2MvaF93c2gucHknKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBj
b252ZXJ0ZXIob3Nfcm9vdCArICdhL2IvaC5weScpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KE5vbmUsIGNvbnZlcnRlcignYS9iL2hfd3NoLnB5JykpCi0KLSAgICAgICAgY29udmVydGVyID0g
ZGlzcGF0Y2guX2NyZWF0ZV9wYXRoX3RvX3Jlc291cmNlX2NvbnZlcnRlcignYS9iJykKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgnL2gnLCBjb252ZXJ0ZXIoZGlzcGF0Y2guX25vcm1hbGl6ZV9w
YXRoKAotICAgICAgICAgICAgJ2EvYi9oX3dzaC5weScpKSkKLQotICAgICAgICBjb252ZXJ0ZXIg
PSBkaXNwYXRjaC5fY3JlYXRlX3BhdGhfdG9fcmVzb3VyY2VfY29udmVydGVyKCcvYS9iLy8vJykK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnL2gnLCBjb252ZXJ0ZXIob3Nfcm9vdCArICdhL2Iv
aF93c2gucHknKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnL2gnLCBjb252ZXJ0ZXIoZGlz
cGF0Y2guX25vcm1hbGl6ZV9wYXRoKAotICAgICAgICAgICAgJy9hL2IvLi4vYi9oX3dzaC5weScp
KSkKLQotICAgICAgICBjb252ZXJ0ZXIgPSBkaXNwYXRjaC5fY3JlYXRlX3BhdGhfdG9fcmVzb3Vy
Y2VfY29udmVydGVyKAotICAgICAgICAgICAgJy9hLy4uL2EvYi8uLi9iLycpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJy9oJywgY29udmVydGVyKG9zX3Jvb3QgKyAnYS9iL2hfd3NoLnB5Jykp
Ci0KLSAgICAgICAgY29udmVydGVyID0gZGlzcGF0Y2guX2NyZWF0ZV9wYXRoX3RvX3Jlc291cmNl
X2NvbnZlcnRlcihyJ1xhXGInKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcvaCcsIGNvbnZl
cnRlcihvc19yb290ICsgcidhXGJcaF93c2gucHknKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgnL2gnLCBjb252ZXJ0ZXIob3Nfcm9vdCArIHInYS9iL2hfd3NoLnB5JykpCi0KLSAgICBkZWYg
dGVzdF9lbnVtZXJhdGVfaGFuZGxlcl9maWxlX3BhdGhzKHNlbGYpOgotICAgICAgICBwYXRocyA9
IGxpc3QoCi0gICAgICAgICAgICBkaXNwYXRjaC5fZW51bWVyYXRlX2hhbmRsZXJfZmlsZV9wYXRo
cyhfVEVTVF9IQU5ETEVSU19ESVIpKQotICAgICAgICBwYXRocy5zb3J0KCkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCg4LCBsZW4ocGF0aHMpKQotICAgICAgICBleHBlY3RlZF9wYXRocyA9IFsK
LSAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oX1RFU1RfSEFORExFUlNfRElSLCAnYWJvcnRf
YnlfdXNlcl93c2gucHknKSwKLSAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oX1RFU1RfSEFO
RExFUlNfRElSLCAnYmxhbmtfd3NoLnB5JyksCi0gICAgICAgICAgICAgICAgb3MucGF0aC5qb2lu
KF9URVNUX0hBTkRMRVJTX0RJUiwgJ29yaWdpbl9jaGVja193c2gucHknKSwKLSAgICAgICAgICAg
ICAgICBvcy5wYXRoLmpvaW4oX1RFU1RfSEFORExFUlNfRElSLCAnc3ViJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ2V4Y2VwdGlvbl9pbl90cmFuc2Zlcl93c2gucHknKSwKLSAgICAg
ICAgICAgICAgICBvcy5wYXRoLmpvaW4oX1RFU1RfSEFORExFUlNfRElSLCAnc3ViJywgJ25vbl9j
YWxsYWJsZV93c2gucHknKSwKLSAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oX1RFU1RfSEFO
RExFUlNfRElSLCAnc3ViJywgJ3BsYWluX3dzaC5weScpLAotICAgICAgICAgICAgICAgIG9zLnBh
dGguam9pbihfVEVTVF9IQU5ETEVSU19ESVIsICdzdWInLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnd3JvbmdfaGFuZHNoYWtlX3NpZ193c2gucHknKSwKLSAgICAgICAgICAgICAgICBv
cy5wYXRoLmpvaW4oX1RFU1RfSEFORExFUlNfRElSLCAnc3ViJywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ3dyb25nX3RyYW5zZmVyX3NpZ193c2gucHknKSwKLSAgICAgICAgICAgICAg
ICBdCi0gICAgICAgIGZvciBleHBlY3RlZCwgYWN0dWFsIGluIHppcChleHBlY3RlZF9wYXRocywg
cGF0aHMpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgYWN0dWFsKQot
Ci0gICAgZGVmIHRlc3Rfc291cmNlX2hhbmRsZXJfZmlsZShzZWxmKToKLSAgICAgICAgc2VsZi5h
c3NlcnRSYWlzZXMoCi0gICAgICAgICAgICBkaXNwYXRjaC5EaXNwYXRjaEV4Y2VwdGlvbiwgZGlz
cGF0Y2guX3NvdXJjZV9oYW5kbGVyX2ZpbGUsICcnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNl
cygKLSAgICAgICAgICAgIGRpc3BhdGNoLkRpc3BhdGNoRXhjZXB0aW9uLCBkaXNwYXRjaC5fc291
cmNlX2hhbmRsZXJfZmlsZSwgJ2RlZicpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAotICAg
ICAgICAgICAgZGlzcGF0Y2guRGlzcGF0Y2hFeGNlcHRpb24sIGRpc3BhdGNoLl9zb3VyY2VfaGFu
ZGxlcl9maWxlLCAnMS8wJykKLSAgICAgICAgc2VsZi5mYWlsVW5sZXNzKGRpc3BhdGNoLl9zb3Vy
Y2VfaGFuZGxlcl9maWxlKAotICAgICAgICAgICAgICAgICdkZWYgd2ViX3NvY2tldF9kb19leHRy
YV9oYW5kc2hha2UocmVxdWVzdCk6cGFzc1xuJwotICAgICAgICAgICAgICAgICdkZWYgd2ViX3Nv
Y2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOnBhc3NcbicpKQotCi0gICAgZGVmIHRlc3Rfc291
cmNlX3dhcm5pbmdzKHNlbGYpOgotICAgICAgICBkaXNwYXRjaGVyID0gZGlzcGF0Y2guRGlzcGF0
Y2hlcihfVEVTVF9IQU5ETEVSU19ESVIsIE5vbmUpCi0gICAgICAgIHdhcm5pbmdzID0gZGlzcGF0
Y2hlci5zb3VyY2Vfd2FybmluZ3MoKQotICAgICAgICB3YXJuaW5ncy5zb3J0KCkKLSAgICAgICAg
ZXhwZWN0ZWRfd2FybmluZ3MgPSBbCi0gICAgICAgICAgICAgICAgKG9zLnBhdGgucmVhbHBhdGgo
b3MucGF0aC5qb2luKAotICAgICAgICAgICAgICAgICAgICBfVEVTVF9IQU5ETEVSU19ESVIsICdi
bGFua193c2gucHknKSkgKwotICAgICAgICAgICAgICAgICAnOiB3ZWJfc29ja2V0X2RvX2V4dHJh
X2hhbmRzaGFrZSBpcyBub3QgZGVmaW5lZC4nKSwKLSAgICAgICAgICAgICAgICAob3MucGF0aC5y
ZWFscGF0aChvcy5wYXRoLmpvaW4oCi0gICAgICAgICAgICAgICAgICAgIF9URVNUX0hBTkRMRVJT
X0RJUiwgJ3N1YicsICdub25fY2FsbGFibGVfd3NoLnB5JykpICsKLSAgICAgICAgICAgICAgICAg
Jzogd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UgaXMgbm90IGNhbGxhYmxlLicpLAotICAg
ICAgICAgICAgICAgIChvcy5wYXRoLnJlYWxwYXRoKG9zLnBhdGguam9pbigKLSAgICAgICAgICAg
ICAgICAgICAgX1RFU1RfSEFORExFUlNfRElSLCAnc3ViJywgJ3dyb25nX2hhbmRzaGFrZV9zaWdf
d3NoLnB5JykpICsKLSAgICAgICAgICAgICAgICAgJzogd2ViX3NvY2tldF9kb19leHRyYV9oYW5k
c2hha2UgaXMgbm90IGRlZmluZWQuJyksCi0gICAgICAgICAgICAgICAgKG9zLnBhdGgucmVhbHBh
dGgob3MucGF0aC5qb2luKAotICAgICAgICAgICAgICAgICAgICBfVEVTVF9IQU5ETEVSU19ESVIs
ICdzdWInLCAnd3JvbmdfdHJhbnNmZXJfc2lnX3dzaC5weScpKSArCi0gICAgICAgICAgICAgICAg
ICc6IHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YSBpcyBub3QgZGVmaW5lZC4nKSwKLSAgICAgICAg
ICAgICAgICBdCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDQsIGxlbih3YXJuaW5ncykpCi0g
ICAgICAgIGZvciBleHBlY3RlZCwgYWN0dWFsIGluIHppcChleHBlY3RlZF93YXJuaW5ncywgd2Fy
bmluZ3MpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwZWN0ZWQsIGFjdHVhbCkK
LQotICAgIGRlZiB0ZXN0X2RvX2V4dHJhX2hhbmRzaGFrZShzZWxmKToKLSAgICAgICAgZGlzcGF0
Y2hlciA9IGRpc3BhdGNoLkRpc3BhdGNoZXIoX1RFU1RfSEFORExFUlNfRElSLCBOb25lKQotICAg
ICAgICByZXF1ZXN0ID0gbW9jay5Nb2NrUmVxdWVzdCgpCi0gICAgICAgIHJlcXVlc3Qud3NfcmVz
b3VyY2UgPSAnL29yaWdpbl9jaGVjaycKLSAgICAgICAgcmVxdWVzdC53c19vcmlnaW4gPSAnaHR0
cDovL2V4YW1wbGUuY29tJwotICAgICAgICBkaXNwYXRjaGVyLmRvX2V4dHJhX2hhbmRzaGFrZShy
ZXF1ZXN0KSAgIyBNdXN0IG5vdCByYWlzZSBleGNlcHRpb24uCi0KLSAgICAgICAgcmVxdWVzdC53
c19vcmlnaW4gPSAnaHR0cDovL2JhZC5leGFtcGxlLmNvbScKLSAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgZGlzcGF0Y2hlci5kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCkKLSAgICAgICAgICAg
IHNlbGYuZmFpbCgnQ291bGQgbm90IGNhdGNoIEhhbmRzaGFrZUV4Y2VwdGlvbiB3aXRoIDQwMyBz
dGF0dXMnKQotICAgICAgICBleGNlcHQgaGFuZHNoYWtlLkhhbmRzaGFrZUV4Y2VwdGlvbiBhcyBl
OgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoNDAzLCBlLnN0YXR1cykKLSAgICAgICAg
ZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgc2VsZi5mYWlsKCdVbmV4cGVjdGVk
IGV4Y2VwdGlvbjogJXInICUgZSkKLQotICAgIGRlZiB0ZXN0X2Fib3J0X2V4dHJhX2hhbmRzaGFr
ZShzZWxmKToKLSAgICAgICAgZGlzcGF0Y2hlciA9IGRpc3BhdGNoLkRpc3BhdGNoZXIoX1RFU1Rf
SEFORExFUlNfRElSLCBOb25lKQotICAgICAgICByZXF1ZXN0ID0gbW9jay5Nb2NrUmVxdWVzdCgp
Ci0gICAgICAgIHJlcXVlc3Qud3NfcmVzb3VyY2UgPSAnL2Fib3J0X2J5X3VzZXInCi0gICAgICAg
IHNlbGYuYXNzZXJ0UmFpc2VzKGhhbmRzaGFrZS5BYm9ydGVkQnlVc2VyRXhjZXB0aW9uLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaGVyLmRvX2V4dHJhX2hhbmRzaGFrZSwgcmVx
dWVzdCkKLQotICAgIGRlZiB0ZXN0X3RyYW5zZmVyX2RhdGEoc2VsZik6Ci0gICAgICAgIGRpc3Bh
dGNoZXIgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJTX0RJUiwgTm9uZSkKLQot
ICAgICAgICByZXF1ZXN0ID0gbW9jay5Nb2NrUmVxdWVzdChjb25uZWN0aW9uPW1vY2suTW9ja0Nv
bm4oJ1x4ZmZceDAwJykpCi0gICAgICAgIHJlcXVlc3Qud3NfcmVzb3VyY2UgPSAnL29yaWdpbl9j
aGVjaycKLSAgICAgICAgcmVxdWVzdC53c19wcm90b2NvbCA9ICdwMScKLSAgICAgICAgZGlzcGF0
Y2hlci50cmFuc2Zlcl9kYXRhKHJlcXVlc3QpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ29y
aWdpbl9jaGVja193c2gucHkgaXMgY2FsbGVkIGZvciAvb3JpZ2luX2NoZWNrLCBwMScKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAnXHhmZlx4MDAnLAotICAgICAgICAgICAgICAgICAgICAgICAg
IHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAgICAgICByZXF1ZXN0ID0g
bW9jay5Nb2NrUmVxdWVzdChjb25uZWN0aW9uPW1vY2suTW9ja0Nvbm4oJ1x4ZmZceDAwJykpCi0g
ICAgICAgIHJlcXVlc3Qud3NfcmVzb3VyY2UgPSAnL3N1Yi9wbGFpbicKLSAgICAgICAgcmVxdWVz
dC53c19wcm90b2NvbCA9IE5vbmUKLSAgICAgICAgZGlzcGF0Y2hlci50cmFuc2Zlcl9kYXRhKHJl
cXVlc3QpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3N1Yi9wbGFpbl93c2gucHkgaXMgY2Fs
bGVkIGZvciAvc3ViL3BsYWluLCBOb25lJwotICAgICAgICAgICAgICAgICAgICAgICAgICdceGZm
XHgwMCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0
ZW5fZGF0YSgpKQotCi0gICAgICAgIHJlcXVlc3QgPSBtb2NrLk1vY2tSZXF1ZXN0KGNvbm5lY3Rp
b249bW9jay5Nb2NrQ29ubignXHhmZlx4MDAnKSkKLSAgICAgICAgcmVxdWVzdC53c19yZXNvdXJj
ZSA9ICcvc3ViL3BsYWluPycKLSAgICAgICAgcmVxdWVzdC53c19wcm90b2NvbCA9IE5vbmUKLSAg
ICAgICAgZGlzcGF0Y2hlci50cmFuc2Zlcl9kYXRhKHJlcXVlc3QpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJ3N1Yi9wbGFpbl93c2gucHkgaXMgY2FsbGVkIGZvciAvc3ViL3BsYWluPywgTm9u
ZScKLSAgICAgICAgICAgICAgICAgICAgICAgICAnXHhmZlx4MDAnLAotICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAgICAgICBy
ZXF1ZXN0ID0gbW9jay5Nb2NrUmVxdWVzdChjb25uZWN0aW9uPW1vY2suTW9ja0Nvbm4oJ1x4ZmZc
eDAwJykpCi0gICAgICAgIHJlcXVlc3Qud3NfcmVzb3VyY2UgPSAnL3N1Yi9wbGFpbj9xPXYnCi0g
ICAgICAgIHJlcXVlc3Qud3NfcHJvdG9jb2wgPSBOb25lCi0gICAgICAgIGRpc3BhdGNoZXIudHJh
bnNmZXJfZGF0YShyZXF1ZXN0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdzdWIvcGxhaW5f
d3NoLnB5IGlzIGNhbGxlZCBmb3IgL3N1Yi9wbGFpbj9xPXYsIE5vbmUnCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgJ1x4ZmZceDAwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0
LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICBkZWYgdGVzdF90cmFuc2Zlcl9kYXRh
X25vX2hhbmRsZXIoc2VsZik6Ci0gICAgICAgIGRpc3BhdGNoZXIgPSBkaXNwYXRjaC5EaXNwYXRj
aGVyKF9URVNUX0hBTkRMRVJTX0RJUiwgTm9uZSkKLSAgICAgICAgZm9yIHJlc291cmNlIGluIFsn
L2JsYW5rJywgJy9zdWIvbm9uX2NhbGxhYmxlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAn
L3N1Yi9ub193c2hfYXRfdGhlX2VuZCcsICcvZG9lcy9ub3QvZXhpc3QnXToKLSAgICAgICAgICAg
IHJlcXVlc3QgPSBtb2NrLk1vY2tSZXF1ZXN0KGNvbm5lY3Rpb249bW9jay5Nb2NrQ29ubignJykp
Ci0gICAgICAgICAgICByZXF1ZXN0LndzX3Jlc291cmNlID0gcmVzb3VyY2UKLSAgICAgICAgICAg
IHJlcXVlc3Qud3NfcHJvdG9jb2wgPSAncDInCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICAgICAgZGlzcGF0Y2hlci50cmFuc2Zlcl9kYXRhKHJlcXVlc3QpCi0gICAgICAgICAgICAgICAg
c2VsZi5mYWlsKCkKLSAgICAgICAgICAgIGV4Y2VwdCBkaXNwYXRjaC5EaXNwYXRjaEV4Y2VwdGlv
biBhcyBlOgotICAgICAgICAgICAgICAgIHNlbGYuZmFpbFVubGVzcyhzdHIoZSkuZmluZCgnTm8g
aGFuZGxlcicpICE9IC0xKQotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAg
ICAgICAgICBzZWxmLmZhaWwoKQotCi0gICAgZGVmIHRlc3RfdHJhbnNmZXJfZGF0YV9oYW5kbGVy
X2V4Y2VwdGlvbihzZWxmKToKLSAgICAgICAgZGlzcGF0Y2hlciA9IGRpc3BhdGNoLkRpc3BhdGNo
ZXIoX1RFU1RfSEFORExFUlNfRElSLCBOb25lKQotICAgICAgICByZXF1ZXN0ID0gbW9jay5Nb2Nr
UmVxdWVzdChjb25uZWN0aW9uPW1vY2suTW9ja0Nvbm4oJycpKQotICAgICAgICByZXF1ZXN0Lndz
X3Jlc291cmNlID0gJy9zdWIvZXhjZXB0aW9uX2luX3RyYW5zZmVyJwotICAgICAgICByZXF1ZXN0
LndzX3Byb3RvY29sID0gJ3AzJwotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBkaXNwYXRjaGVy
LnRyYW5zZmVyX2RhdGEocmVxdWVzdCkKLSAgICAgICAgICAgIHNlbGYuZmFpbCgpCi0gICAgICAg
IGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgIHNlbGYuZmFpbFVubGVzcyhzdHIo
ZSkuZmluZCgnSW50ZW50aW9uYWwnKSAhPSAtMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnVW5leHBlY3RlZCBleGNlcHRpb246ICVzJyAlIGUpCi0KLSAgICBkZWYgdGVzdF9hYm9ydF90
cmFuc2Zlcl9kYXRhKHNlbGYpOgotICAgICAgICBkaXNwYXRjaGVyID0gZGlzcGF0Y2guRGlzcGF0
Y2hlcihfVEVTVF9IQU5ETEVSU19ESVIsIE5vbmUpCi0gICAgICAgIHJlcXVlc3QgPSBtb2NrLk1v
Y2tSZXF1ZXN0KCkKLSAgICAgICAgcmVxdWVzdC53c19yZXNvdXJjZSA9ICcvYWJvcnRfYnlfdXNl
cicKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoaGFuZHNoYWtlLkFib3J0ZWRCeVVzZXJFeGNl
cHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoZXIudHJhbnNmZXJfZGF0
YSwgcmVxdWVzdCkKLQotICAgIGRlZiB0ZXN0X3NjYW5fZGlyKHNlbGYpOgotICAgICAgICBkaXNw
ID0gZGlzcGF0Y2guRGlzcGF0Y2hlcihfVEVTVF9IQU5ETEVSU19ESVIsIE5vbmUpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoNCwgbGVuKGRpc3AuX2hhbmRsZXJfc3VpdGVfbWFwKSkKLSAgICAg
ICAgc2VsZi5mYWlsVW5sZXNzKCcvb3JpZ2luX2NoZWNrJyBpbiBkaXNwLl9oYW5kbGVyX3N1aXRl
X21hcCkKLSAgICAgICAgc2VsZi5mYWlsVW5sZXNzKAotICAgICAgICAgICAgJy9zdWIvZXhjZXB0
aW9uX2luX3RyYW5zZmVyJyBpbiBkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkKLSAgICAgICAgc2Vs
Zi5mYWlsVW5sZXNzKCcvc3ViL3BsYWluJyBpbiBkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkKLQot
ICAgIGRlZiB0ZXN0X3NjYW5fc3ViX2RpcihzZWxmKToKLSAgICAgICAgZGlzcCA9IGRpc3BhdGNo
LkRpc3BhdGNoZXIoX1RFU1RfSEFORExFUlNfRElSLCBfVEVTVF9IQU5ETEVSU19TVUJfRElSKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGxlbihkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkp
Ci0gICAgICAgIHNlbGYuZmFpbElmKCcvb3JpZ2luX2NoZWNrJyBpbiBkaXNwLl9oYW5kbGVyX3N1
aXRlX21hcCkKLSAgICAgICAgc2VsZi5mYWlsVW5sZXNzKAotICAgICAgICAgICAgJy9zdWIvZXhj
ZXB0aW9uX2luX3RyYW5zZmVyJyBpbiBkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkKLSAgICAgICAg
c2VsZi5mYWlsVW5sZXNzKCcvc3ViL3BsYWluJyBpbiBkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkK
LQotICAgIGRlZiB0ZXN0X3NjYW5fc3ViX2Rpcl9hc19yb290KHNlbGYpOgotICAgICAgICBkaXNw
ID0gZGlzcGF0Y2guRGlzcGF0Y2hlcihfVEVTVF9IQU5ETEVSU19TVUJfRElSLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfVEVTVF9IQU5ETEVSU19TVUJfRElSKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKDIsIGxlbihkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkpCi0gICAg
ICAgIHNlbGYuZmFpbElmKCcvb3JpZ2luX2NoZWNrJyBpbiBkaXNwLl9oYW5kbGVyX3N1aXRlX21h
cCkKLSAgICAgICAgc2VsZi5mYWlsSWYoJy9zdWIvZXhjZXB0aW9uX2luX3RyYW5zZmVyJyBpbiBk
aXNwLl9oYW5kbGVyX3N1aXRlX21hcCkKLSAgICAgICAgc2VsZi5mYWlsSWYoJy9zdWIvcGxhaW4n
IGluIGRpc3AuX2hhbmRsZXJfc3VpdGVfbWFwKQotICAgICAgICBzZWxmLmZhaWxVbmxlc3MoJy9l
eGNlcHRpb25faW5fdHJhbnNmZXInIGluIGRpc3AuX2hhbmRsZXJfc3VpdGVfbWFwKQotICAgICAg
ICBzZWxmLmZhaWxVbmxlc3MoJy9wbGFpbicgaW4gZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXApCi0K
LSAgICBkZWYgdGVzdF9zY2FuX2Rpcl9tdXN0X3VuZGVyX3Jvb3Qoc2VsZik6Ci0gICAgICAgIGRp
c3BhdGNoLkRpc3BhdGNoZXIoJ2EvYicsICdhL2IvYycpICAjIE9LCi0gICAgICAgIGRpc3BhdGNo
LkRpc3BhdGNoZXIoJ2EvYi8vLycsICdhL2InKSAgIyBPSwotICAgICAgICBzZWxmLmFzc2VydFJh
aXNlcyhkaXNwYXRjaC5EaXNwYXRjaEV4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGlzcGF0Y2guRGlzcGF0Y2hlciwgJ2EvYi9jJywgJ2EvYicpCi0KLSAgICBkZWYgdGVzdF9y
ZXNvdXJjZV9wYXRoX2FsaWFzKHNlbGYpOgotICAgICAgICBkaXNwID0gZGlzcGF0Y2guRGlzcGF0
Y2hlcihfVEVTVF9IQU5ETEVSU19ESVIsIE5vbmUpCi0gICAgICAgIGRpc3AuYWRkX3Jlc291cmNl
X3BhdGhfYWxpYXMoJy8nLCAnL29yaWdpbl9jaGVjaycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoNSwgbGVuKGRpc3AuX2hhbmRsZXJfc3VpdGVfbWFwKSkKLSAgICAgICAgc2VsZi5mYWlsVW5s
ZXNzKCcvb3JpZ2luX2NoZWNrJyBpbiBkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkKLSAgICAgICAg
c2VsZi5mYWlsVW5sZXNzKAotICAgICAgICAgICAgJy9zdWIvZXhjZXB0aW9uX2luX3RyYW5zZmVy
JyBpbiBkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkKLSAgICAgICAgc2VsZi5mYWlsVW5sZXNzKCcv
c3ViL3BsYWluJyBpbiBkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkKLSAgICAgICAgc2VsZi5mYWls
VW5sZXNzKCcvJyBpbiBkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkKLSAgICAgICAgc2VsZi5hc3Nl
cnRSYWlzZXMoZGlzcGF0Y2guRGlzcGF0Y2hFeGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIGRpc3AuYWRkX3Jlc291cmNlX3BhdGhfYWxpYXMsICcvYWxpYXMnLCAnL25vdC1leGlz
dCcpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB1bml0dGVzdC5tYWluKCkK
LQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X2VuZHRv
ZW5kLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC90ZXN0L3Rlc3RfZW5kdG9lbmQucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDM2ODBlYzJlYmE2NzI0YTc0OTA1YmU0ZjE1ODFmMzZhN2E3Zjc3MTMuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3Rf
ZW5kdG9lbmQucHkKKysrIC9kZXYvbnVsbApAQCAtMSw3NTMgKzAsMCBAQAotIyEvdXNyL2Jpbi9l
bnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRz
IHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0j
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMg
ZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMg
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
IyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
IyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJFbmQtdG8tZW5kIHRlc3RzIGZv
ciBweXdlYnNvY2tldC4gVGVzdHMgc3RhbmRhbG9uZS5weSBieSBkZWZhdWx0LiBZb3UKLWNhbiBh
bHNvIHRlc3QgbW9kX3B5d2Vic29ja2V0IGhvc3RlZCBvbiBhbiBBcGFjaGUgc2VydmVyIGJ5IHNl
dHRpbmcKLV91c2VfZXh0ZXJuYWxfc2VydmVyIHRvIFRydWUgYW5kIG1vZGlmeWluZyBfZXh0ZXJu
YWxfc2VydmVyX3BvcnQgdG8gcG9pbnQgdG8KLXRoZSBwb3J0IG9uIHdoaWNoIHRoZSBBcGFjaGUg
c2VydmVyIGlzIHJ1bm5pbmcuCi0iIiIKLQotCi1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IG9zCi1p
bXBvcnQgc2lnbmFsCi1pbXBvcnQgc29ja2V0Ci1pbXBvcnQgc3VicHJvY2VzcwotaW1wb3J0IHN5
cwotaW1wb3J0IHRpbWUKLWltcG9ydCB1bml0dGVzdAotCi1pbXBvcnQgc2V0X3N5c19wYXRoICAj
IFVwZGF0ZSBzeXMucGF0aCB0byBsb2NhdGUgbW9kX3B5d2Vic29ja2V0IG1vZHVsZS4KLQotZnJv
bSB0ZXN0IGltcG9ydCBjbGllbnRfZm9yX3Rlc3RpbmcKLWZyb20gdGVzdCBpbXBvcnQgbXV4X2Ns
aWVudF9mb3JfdGVzdGluZwotCi0KLSMgU3BlY2lhbCBtZXNzYWdlIHRoYXQgdGVsbHMgdGhlIGVj
aG8gc2VydmVyIHRvIHN0YXJ0IGNsb3NpbmcgaGFuZHNoYWtlCi1fR09PREJZRV9NRVNTQUdFID0g
J0dvb2RieWUnCi0KLV9TRVJWRVJfV0FSTVVQX0lOX1NFQyA9IDAuMgotCi0jIElmIHlvdSB3YW50
IHRvIHVzZSBleHRlcm5hbCBzZXJ2ZXIgdG8gcnVuIGVuZCB0byBlbmQgdGVzdHMsIHNldCBmb2xs
b3dpbmcKLSMgcGFyYW1ldGVycyBjb3JyZWN0bHkuCi1fdXNlX2V4dGVybmFsX3NlcnZlciA9IEZh
bHNlCi1fZXh0ZXJuYWxfc2VydmVyX3BvcnQgPSAwCi0KLQotIyBUZXN0IGJvZHkgZnVuY3Rpb25z
Ci1kZWYgX2VjaG9fY2hlY2tfcHJvY2VkdXJlKGNsaWVudCk6Ci0gICAgY2xpZW50LmNvbm5lY3Qo
KQotCi0gICAgY2xpZW50LnNlbmRfbWVzc2FnZSgndGVzdCcpCi0gICAgY2xpZW50LmFzc2VydF9y
ZWNlaXZlKCd0ZXN0JykKLSAgICBjbGllbnQuc2VuZF9tZXNzYWdlKCdoZWxsb3dvcmxkJykKLSAg
ICBjbGllbnQuYXNzZXJ0X3JlY2VpdmUoJ2hlbGxvd29ybGQnKQotCi0gICAgY2xpZW50LnNlbmRf
Y2xvc2UoKQotICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9zZSgpCi0KLSAgICBjbGllbnQu
YXNzZXJ0X2Nvbm5lY3Rpb25fY2xvc2VkKCkKLQotCi1kZWYgX2VjaG9fY2hlY2tfcHJvY2VkdXJl
X3dpdGhfYmluYXJ5KGNsaWVudCk6Ci0gICAgY2xpZW50LmNvbm5lY3QoKQotCi0gICAgY2xpZW50
LnNlbmRfbWVzc2FnZSgnYmluYXJ5JywgYmluYXJ5PVRydWUpCi0gICAgY2xpZW50LmFzc2VydF9y
ZWNlaXZlKCdiaW5hcnknLCBiaW5hcnk9VHJ1ZSkKLSAgICBjbGllbnQuc2VuZF9tZXNzYWdlKCdc
eDAwXHg4MFx4ZmVceGZmXHgwMFx4ODAnLCBiaW5hcnk9VHJ1ZSkKLSAgICBjbGllbnQuYXNzZXJ0
X3JlY2VpdmUoJ1x4MDBceDgwXHhmZVx4ZmZceDAwXHg4MCcsIGJpbmFyeT1UcnVlKQotCi0gICAg
Y2xpZW50LnNlbmRfY2xvc2UoKQotICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9zZSgpCi0K
LSAgICBjbGllbnQuYXNzZXJ0X2Nvbm5lY3Rpb25fY2xvc2VkKCkKLQotCi1kZWYgX2VjaG9fY2hl
Y2tfcHJvY2VkdXJlX3dpdGhfZ29vZGJ5ZShjbGllbnQpOgotICAgIGNsaWVudC5jb25uZWN0KCkK
LQotICAgIGNsaWVudC5zZW5kX21lc3NhZ2UoJ3Rlc3QnKQotICAgIGNsaWVudC5hc3NlcnRfcmVj
ZWl2ZSgndGVzdCcpCi0KLSAgICBjbGllbnQuc2VuZF9tZXNzYWdlKF9HT09EQllFX01FU1NBR0Up
Ci0gICAgY2xpZW50LmFzc2VydF9yZWNlaXZlKF9HT09EQllFX01FU1NBR0UpCi0KLSAgICBjbGll
bnQuYXNzZXJ0X3JlY2VpdmVfY2xvc2UoKQotICAgIGNsaWVudC5zZW5kX2Nsb3NlKCkKLQotICAg
IGNsaWVudC5hc3NlcnRfY29ubmVjdGlvbl9jbG9zZWQoKQotCi0KLWRlZiBfZWNob19jaGVja19w
cm9jZWR1cmVfd2l0aF9jb2RlX2FuZF9yZWFzb24oY2xpZW50LCBjb2RlLCByZWFzb24pOgotICAg
IGNsaWVudC5jb25uZWN0KCkKLQotICAgIGNsaWVudC5zZW5kX2Nsb3NlKGNvZGUsIHJlYXNvbikK
LSAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmVfY2xvc2UoY29kZSwgcmVhc29uKQotCi0gICAgY2xp
ZW50LmFzc2VydF9jb25uZWN0aW9uX2Nsb3NlZCgpCi0KLQotZGVmIF91bm1hc2tlZF9mcmFtZV9j
aGVja19wcm9jZWR1cmUoY2xpZW50KToKLSAgICBjbGllbnQuY29ubmVjdCgpCi0KLSAgICBjbGll
bnQuc2VuZF9tZXNzYWdlKCd0ZXN0JywgbWFzaz1GYWxzZSkKLSAgICBjbGllbnQuYXNzZXJ0X3Jl
Y2VpdmVfY2xvc2UoY2xpZW50X2Zvcl90ZXN0aW5nLlNUQVRVU19QUk9UT0NPTF9FUlJPUiwgJycp
Ci0KLSAgICBjbGllbnQuYXNzZXJ0X2Nvbm5lY3Rpb25fY2xvc2VkKCkKLQotCi1kZWYgX211eF9l
Y2hvX2NoZWNrX3Byb2NlZHVyZShtdXhfY2xpZW50KToKLSAgICBtdXhfY2xpZW50LmNvbm5lY3Qo
KQotICAgIG11eF9jbGllbnQuc2VuZF9mbG93X2NvbnRyb2woMSwgMTAyNCkKLQotICAgIGxvZ2lj
YWxfY2hhbm5lbF9vcHRpb25zID0gY2xpZW50X2Zvcl90ZXN0aW5nLkNsaWVudE9wdGlvbnMoKQot
ICAgIGxvZ2ljYWxfY2hhbm5lbF9vcHRpb25zLnNlcnZlcl9ob3N0ID0gJ2xvY2FsaG9zdCcKLSAg
ICBsb2dpY2FsX2NoYW5uZWxfb3B0aW9ucy5zZXJ2ZXJfcG9ydCA9IDgwCi0gICAgbG9naWNhbF9j
aGFubmVsX29wdGlvbnMub3JpZ2luID0gJ2h0dHA6Ly9sb2NhbGhvc3QnCi0gICAgbG9naWNhbF9j
aGFubmVsX29wdGlvbnMucmVzb3VyY2UgPSAnL2VjaG8nCi0gICAgbXV4X2NsaWVudC5hZGRfY2hh
bm5lbCgyLCBsb2dpY2FsX2NoYW5uZWxfb3B0aW9ucykKLSAgICBtdXhfY2xpZW50LnNlbmRfZmxv
d19jb250cm9sKDIsIDEwMjQpCi0KLSAgICBtdXhfY2xpZW50LnNlbmRfbWVzc2FnZSgyLCAndGVz
dCcpCi0gICAgbXV4X2NsaWVudC5hc3NlcnRfcmVjZWl2ZSgyLCAndGVzdCcpCi0KLSAgICBtdXhf
Y2xpZW50LmFkZF9jaGFubmVsKDMsIGxvZ2ljYWxfY2hhbm5lbF9vcHRpb25zKQotICAgIG11eF9j
bGllbnQuc2VuZF9mbG93X2NvbnRyb2woMywgMTAyNCkKLQotICAgIG11eF9jbGllbnQuc2VuZF9t
ZXNzYWdlKDIsICdoZWxsbycpCi0gICAgbXV4X2NsaWVudC5zZW5kX21lc3NhZ2UoMywgJ3dvcmxk
JykKLSAgICBtdXhfY2xpZW50LmFzc2VydF9yZWNlaXZlKDIsICdoZWxsbycpCi0gICAgbXV4X2Ns
aWVudC5hc3NlcnRfcmVjZWl2ZSgzLCAnd29ybGQnKQotCi0gICAgIyBEb24ndCBzZW5kIGNsb3Nl
IG1lc3NhZ2Ugb24gY2hhbm5lbCBpZCAxIHNvIHRoYXQgc2VydmVyLWluaXRpYXRlZAotICAgICMg
Y2xvc2luZyBoYW5kc2hha2Ugd29uJ3Qgb2NjdXIuCi0gICAgbXV4X2NsaWVudC5zZW5kX2Nsb3Nl
KDIpCi0gICAgbXV4X2NsaWVudC5zZW5kX2Nsb3NlKDMpCi0gICAgbXV4X2NsaWVudC5hc3NlcnRf
cmVjZWl2ZV9jbG9zZSgyKQotICAgIG11eF9jbGllbnQuYXNzZXJ0X3JlY2VpdmVfY2xvc2UoMykK
LQotICAgIG11eF9jbGllbnQuc2VuZF9waHlzaWNhbF9jb25uZWN0aW9uX2Nsb3NlKCkKLSAgICBt
dXhfY2xpZW50LmFzc2VydF9waHlzaWNhbF9jb25uZWN0aW9uX3JlY2VpdmVfY2xvc2UoKQotCi0K
LWNsYXNzIEVuZFRvRW5kVGVzdEJhc2UodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIkJhc2Ug
Y2xhc3MgZm9yIGVuZC10by1lbmQgdGVzdHMgdGhhdCBsYXVuY2ggcHl3ZWJzb2NrZXQgc3RhbmRh
bG9uZQotICAgIHNlcnZlciBhcyBhIHNlcGFyYXRlIHByb2Nlc3MsIGNvbm5lY3QgdG8gaXQgdXNp
bmcgdGhlIGNsaWVudF9mb3JfdGVzdGluZwotICAgIG1vZHVsZSwgYW5kIGNoZWNrIGlmIHRoZSBz
ZXJ2ZXIgYmVoYXZlcyBjb3JyZWN0bHkgYnkgZXhjaGFuZ2luZyBvcGVuaW5nCi0gICAgaGFuZHNo
YWtlIGFuZCBmcmFtZXMgb3ZlciBhIFRDUCBjb25uZWN0aW9uLgotICAgICIiIgotCi0gICAgZGVm
IHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLnNlcnZlcl9zdGRlcnIgPSBOb25lCi0gICAgICAg
IHNlbGYudG9wX2RpciA9IG9zLnBhdGguam9pbihvcy5wYXRoLnNwbGl0KF9fZmlsZV9fKVswXSwg
Jy4uJykKLSAgICAgICAgb3MucHV0ZW52KCdQWVRIT05QQVRIJywgb3MucGF0aC5wYXRoc2VwLmpv
aW4oc3lzLnBhdGgpKQotICAgICAgICBzZWxmLnN0YW5kYWxvbmVfY29tbWFuZCA9IG9zLnBhdGgu
am9pbigKLSAgICAgICAgICAgIHNlbGYudG9wX2RpciwgJ21vZF9weXdlYnNvY2tldCcsICdzdGFu
ZGFsb25lLnB5JykKLSAgICAgICAgc2VsZi5kb2N1bWVudF9yb290ID0gb3MucGF0aC5qb2luKHNl
bGYudG9wX2RpciwgJ2V4YW1wbGUnKQotICAgICAgICBzID0gc29ja2V0LnNvY2tldCgpCi0gICAg
ICAgIHMuYmluZCgoJ2xvY2FsaG9zdCcsIDApKQotICAgICAgICAoXywgc2VsZi50ZXN0X3BvcnQp
ID0gcy5nZXRzb2NrbmFtZSgpCi0gICAgICAgIHMuY2xvc2UoKQotCi0gICAgICAgIHNlbGYuX29w
dGlvbnMgPSBjbGllbnRfZm9yX3Rlc3RpbmcuQ2xpZW50T3B0aW9ucygpCi0gICAgICAgIHNlbGYu
X29wdGlvbnMuc2VydmVyX2hvc3QgPSAnbG9jYWxob3N0JwotICAgICAgICBzZWxmLl9vcHRpb25z
Lm9yaWdpbiA9ICdodHRwOi8vbG9jYWxob3N0JwotICAgICAgICBzZWxmLl9vcHRpb25zLnJlc291
cmNlID0gJy9lY2hvJwotCi0gICAgICAgICMgVE9ETyh0b3lvc2hpbSk6IEVsaW1pbmF0ZSBsYXVu
Y2hpbmcgYSBzdGFuZGFsb25lIHNlcnZlciBvbiB1c2luZwotICAgICAgICAjIGV4dGVybmFsIHNl
cnZlci4KLQotICAgICAgICBpZiBfdXNlX2V4dGVybmFsX3NlcnZlcjoKLSAgICAgICAgICAgIHNl
bGYuX29wdGlvbnMuc2VydmVyX3BvcnQgPSBfZXh0ZXJuYWxfc2VydmVyX3BvcnQKLSAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuc2VydmVyX3BvcnQgPSBzZWxmLnRlc3Rf
cG9ydAotCi0gICAgIyBUT0RPKHR5b3NoaW5vKTogVXNlIHRlYXJEb3duIHRvIGtpbGwgdGhlIHNl
cnZlci4KLQotICAgIGRlZiBfcnVuX3B5dGhvbl9jb21tYW5kKHNlbGYsIGNvbW1hbmRsaW5lLCBz
dGRvdXQ9Tm9uZSwgc3RkZXJyPU5vbmUpOgotICAgICAgICByZXR1cm4gc3VicHJvY2Vzcy5Qb3Bl
bihbc3lzLmV4ZWN1dGFibGVdICsgY29tbWFuZGxpbmUsIGNsb3NlX2Zkcz1UcnVlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3Rkb3V0LCBzdGRlcnI9c3RkZXJyKQot
Ci0gICAgZGVmIF9ydW5fc2VydmVyKHNlbGYpOgotICAgICAgICBhcmdzID0gW3NlbGYuc3RhbmRh
bG9uZV9jb21tYW5kLAotICAgICAgICAgICAgICAgICctSCcsICdsb2NhbGhvc3QnLAotICAgICAg
ICAgICAgICAgICctVicsICdsb2NhbGhvc3QnLAotICAgICAgICAgICAgICAgICctcCcsIHN0cihz
ZWxmLnRlc3RfcG9ydCksCi0gICAgICAgICAgICAgICAgJy1QJywgc3RyKHNlbGYudGVzdF9wb3J0
KSwKLSAgICAgICAgICAgICAgICAnLWQnLCBzZWxmLmRvY3VtZW50X3Jvb3RdCi0KLSAgICAgICAg
IyBJbmhlcml0IHRoZSBsZXZlbCBzZXQgdG8gdGhlIHJvb3QgbG9nZ2VyIGJ5IHRlc3QgcnVubmVy
LgotICAgICAgICByb290X2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKLSAgICAgICAgbG9n
X2xldmVsID0gcm9vdF9sb2dnZXIuZ2V0RWZmZWN0aXZlTGV2ZWwoKQotICAgICAgICBpZiBsb2df
bGV2ZWwgIT0gbG9nZ2luZy5OT1RTRVQ6Ci0gICAgICAgICAgICBhcmdzLmFwcGVuZCgnLS1sb2ct
bGV2ZWwnKQotICAgICAgICAgICAgYXJncy5hcHBlbmQobG9nZ2luZy5nZXRMZXZlbE5hbWUobG9n
X2xldmVsKS5sb3dlcigpKQotCi0gICAgICAgIHJldHVybiBzZWxmLl9ydW5fcHl0aG9uX2NvbW1h
bmQoYXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9
c2VsZi5zZXJ2ZXJfc3RkZXJyKQotCi0gICAgZGVmIF9raWxsX3Byb2Nlc3Moc2VsZiwgcGlkKToK
LSAgICAgICAgaWYgc3lzLnBsYXRmb3JtIGluICgnd2luMzInLCAnY3lnd2luJyk6Ci0gICAgICAg
ICAgICBzdWJwcm9jZXNzLmNhbGwoCi0gICAgICAgICAgICAgICAgKCd0YXNra2lsbC5leGUnLCAn
L2YnLCAnL3BpZCcsIHN0cihwaWQpKSwgY2xvc2VfZmRzPVRydWUpCi0gICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICBvcy5raWxsKHBpZCwgc2lnbmFsLlNJR0tJTEwpCi0KLQotY2xhc3MgRW5kVG9F
bmRIeUJpVGVzdChFbmRUb0VuZFRlc3RCYXNlKToKLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAg
ICAgIEVuZFRvRW5kVGVzdEJhc2Uuc2V0VXAoc2VsZikKLQotICAgIGRlZiBfcnVuX3Rlc3Rfd2l0
aF9jbGllbnRfb3B0aW9ucyhzZWxmLCB0ZXN0X2Z1bmN0aW9uLCBvcHRpb25zKToKLSAgICAgICAg
c2VydmVyID0gc2VsZi5fcnVuX3NlcnZlcigpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgICMg
VE9ETyh0eW9zaGlubyk6IGFkZCBzb21lIGxvZ2ljIHRvIHBvbGwgdGhlIHNlcnZlciB1bnRpbCBp
dAotICAgICAgICAgICAgIyBiZWNvbWVzIHJlYWR5Ci0gICAgICAgICAgICB0aW1lLnNsZWVwKF9T
RVJWRVJfV0FSTVVQX0lOX1NFQykKLQotICAgICAgICAgICAgY2xpZW50ID0gY2xpZW50X2Zvcl90
ZXN0aW5nLmNyZWF0ZV9jbGllbnQob3B0aW9ucykKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAg
ICAgICAgICB0ZXN0X2Z1bmN0aW9uKGNsaWVudCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAg
ICAgICAgICAgICAgY2xpZW50LmNsb3NlX3NvY2tldCgpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAg
ICAgICAgICBzZWxmLl9raWxsX3Byb2Nlc3Moc2VydmVyLnBpZCkKLQotICAgIGRlZiBfcnVuX3Rl
c3Qoc2VsZiwgdGVzdF9mdW5jdGlvbik6Ci0gICAgICAgIHNlbGYuX3J1bl90ZXN0X3dpdGhfY2xp
ZW50X29wdGlvbnModGVzdF9mdW5jdGlvbiwgc2VsZi5fb3B0aW9ucykKLQotICAgIGRlZiBfcnVu
X2RlZmxhdGVfZnJhbWVfdGVzdChzZWxmLCB0ZXN0X2Z1bmN0aW9uKToKLSAgICAgICAgc2VydmVy
ID0gc2VsZi5fcnVuX3NlcnZlcigpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHRpbWUuc2xl
ZXAoX1NFUlZFUl9XQVJNVVBfSU5fU0VDKQotCi0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLmVu
YWJsZV9kZWZsYXRlX2ZyYW1lKCkKLSAgICAgICAgICAgIGNsaWVudCA9IGNsaWVudF9mb3JfdGVz
dGluZy5jcmVhdGVfY2xpZW50KHNlbGYuX29wdGlvbnMpCi0gICAgICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICAgICAgdGVzdF9mdW5jdGlvbihjbGllbnQpCi0gICAgICAgICAgICBmaW5hbGx5Ogot
ICAgICAgICAgICAgICAgIGNsaWVudC5jbG9zZV9zb2NrZXQoKQotICAgICAgICBmaW5hbGx5Ogot
ICAgICAgICAgICAgc2VsZi5fa2lsbF9wcm9jZXNzKHNlcnZlci5waWQpCi0KLSAgICBkZWYgX3J1
bl9wZXJtZXNzYWdlX2RlZmxhdGVfdGVzdCgKLSAgICAgICAgICAgIHNlbGYsIG9mZmVyLCByZXNw
b25zZV9jaGVja2VyLCB0ZXN0X2Z1bmN0aW9uKToKLSAgICAgICAgc2VydmVyID0gc2VsZi5fcnVu
X3NlcnZlcigpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHRpbWUuc2xlZXAoX1NFUlZFUl9X
QVJNVVBfSU5fU0VDKQotCi0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLmV4dGVuc2lvbnMgKz0g
b2ZmZXIKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuY2hlY2tfcGVybWVzc2FnZV9kZWZsYXRl
ID0gcmVzcG9uc2VfY2hlY2tlcgotICAgICAgICAgICAgY2xpZW50ID0gY2xpZW50X2Zvcl90ZXN0
aW5nLmNyZWF0ZV9jbGllbnQoc2VsZi5fb3B0aW9ucykKLQotICAgICAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgICAgIGNsaWVudC5jb25uZWN0KCkKLQotICAgICAgICAgICAgICAgIGlmIHRlc3Rf
ZnVuY3Rpb24gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHRlc3RfZnVuY3Rpb24o
Y2xpZW50KQotCi0gICAgICAgICAgICAgICAgY2xpZW50LmFzc2VydF9jb25uZWN0aW9uX2Nsb3Nl
ZCgpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIGNsaWVudC5jbG9zZV9z
b2NrZXQoKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fa2lsbF9wcm9jZXNz
KHNlcnZlci5waWQpCi0KLSAgICBkZWYgX3J1bl9jbG9zZV93aXRoX2NvZGVfYW5kX3JlYXNvbl90
ZXN0KHNlbGYsIHRlc3RfZnVuY3Rpb24sIGNvZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlYXNvbik6Ci0gICAgICAgIHNlcnZlciA9IHNlbGYu
X3J1bl9zZXJ2ZXIoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB0aW1lLnNsZWVwKF9TRVJW
RVJfV0FSTVVQX0lOX1NFQykKLQotICAgICAgICAgICAgY2xpZW50ID0gY2xpZW50X2Zvcl90ZXN0
aW5nLmNyZWF0ZV9jbGllbnQoc2VsZi5fb3B0aW9ucykKLSAgICAgICAgICAgIHRyeToKLSAgICAg
ICAgICAgICAgICB0ZXN0X2Z1bmN0aW9uKGNsaWVudCwgY29kZSwgcmVhc29uKQotICAgICAgICAg
ICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBjbGllbnQuY2xvc2Vfc29ja2V0KCkKLSAgICAg
ICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX2tpbGxfcHJvY2VzcyhzZXJ2ZXIucGlkKQot
Ci0gICAgZGVmIF9ydW5faHR0cF9mYWxsYmFja190ZXN0KHNlbGYsIG9wdGlvbnMsIHN0YXR1cyk6
Ci0gICAgICAgIHNlcnZlciA9IHNlbGYuX3J1bl9zZXJ2ZXIoKQotICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICB0aW1lLnNsZWVwKF9TRVJWRVJfV0FSTVVQX0lOX1NFQykKLQotICAgICAgICAgICAg
Y2xpZW50ID0gY2xpZW50X2Zvcl90ZXN0aW5nLmNyZWF0ZV9jbGllbnQob3B0aW9ucykKLSAgICAg
ICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBjbGllbnQuY29ubmVjdCgpCi0gICAgICAgICAg
ICAgICAgc2VsZi5mYWlsKCdDb3VsZCBub3QgY2F0Y2ggSHR0cFN0YXR1c0V4Y2VwdGlvbicpCi0g
ICAgICAgICAgICBleGNlcHQgY2xpZW50X2Zvcl90ZXN0aW5nLkh0dHBTdGF0dXNFeGNlcHRpb24g
YXMgZToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgZS5zdGF0dXMp
Ci0gICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICAgICAgc2Vs
Zi5mYWlsKCdDYXRjaCB1bmV4cGVjdGVkIGV4Y2VwdGlvbicpCi0gICAgICAgICAgICBmaW5hbGx5
OgotICAgICAgICAgICAgICAgIGNsaWVudC5jbG9zZV9zb2NrZXQoKQotICAgICAgICBmaW5hbGx5
OgotICAgICAgICAgICAgc2VsZi5fa2lsbF9wcm9jZXNzKHNlcnZlci5waWQpCi0KLSAgICBkZWYg
X3J1bl9tdXhfdGVzdChzZWxmLCB0ZXN0X2Z1bmN0aW9uKToKLSAgICAgICAgc2VydmVyID0gc2Vs
Zi5fcnVuX3NlcnZlcigpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHRpbWUuc2xlZXAoX1NF
UlZFUl9XQVJNVVBfSU5fU0VDKQotCi0gICAgICAgICAgICBjbGllbnQgPSBtdXhfY2xpZW50X2Zv
cl90ZXN0aW5nLk11eENsaWVudChzZWxmLl9vcHRpb25zKQotICAgICAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgICAgIHRlc3RfZnVuY3Rpb24oY2xpZW50KQotICAgICAgICAgICAgZmluYWxseToK
LSAgICAgICAgICAgICAgICBjbGllbnQuY2xvc2Vfc29ja2V0KCkKLSAgICAgICAgZmluYWxseToK
LSAgICAgICAgICAgIHNlbGYuX2tpbGxfcHJvY2VzcyhzZXJ2ZXIucGlkKQotCi0gICAgZGVmIHRl
c3RfZWNobyhzZWxmKToKLSAgICAgICAgc2VsZi5fcnVuX3Rlc3QoX2VjaG9fY2hlY2tfcHJvY2Vk
dXJlKQotCi0gICAgZGVmIHRlc3RfZWNob19iaW5hcnkoc2VsZik6Ci0gICAgICAgIHNlbGYuX3J1
bl90ZXN0KF9lY2hvX2NoZWNrX3Byb2NlZHVyZV93aXRoX2JpbmFyeSkKLQotICAgIGRlZiB0ZXN0
X2VjaG9fc2VydmVyX2Nsb3NlKHNlbGYpOgotICAgICAgICBzZWxmLl9ydW5fdGVzdChfZWNob19j
aGVja19wcm9jZWR1cmVfd2l0aF9nb29kYnllKQotCi0gICAgZGVmIHRlc3RfdW5tYXNrZWRfZnJh
bWUoc2VsZik6Ci0gICAgICAgIHNlbGYuX3J1bl90ZXN0KF91bm1hc2tlZF9mcmFtZV9jaGVja19w
cm9jZWR1cmUpCi0KLSAgICBkZWYgdGVzdF9lY2hvX2RlZmxhdGVfZnJhbWUoc2VsZik6Ci0gICAg
ICAgIHNlbGYuX3J1bl9kZWZsYXRlX2ZyYW1lX3Rlc3QoX2VjaG9fY2hlY2tfcHJvY2VkdXJlKQot
Ci0gICAgZGVmIHRlc3RfZWNob19kZWZsYXRlX2ZyYW1lX3NlcnZlcl9jbG9zZShzZWxmKToKLSAg
ICAgICAgc2VsZi5fcnVuX2RlZmxhdGVfZnJhbWVfdGVzdCgKLSAgICAgICAgICAgIF9lY2hvX2No
ZWNrX3Byb2NlZHVyZV93aXRoX2dvb2RieWUpCi0KLSAgICBkZWYgdGVzdF9lY2hvX3Blcm1lc3Nh
Z2VfZGVmbGF0ZShzZWxmKToKLSAgICAgICAgZGVmIHRlc3RfZnVuY3Rpb24oY2xpZW50KToKLSAg
ICAgICAgICAgICMgRnJvbSB0aGUgZXhhbXBsZXMgaW4gdGhlIHNwZWMuCi0gICAgICAgICAgICBj
b21wcmVzc2VkX2hlbGxvID0gJ1x4ZjJceDQ4XHhjZFx4YzlceGM5XHgwN1x4MDAnCi0gICAgICAg
ICAgICBjbGllbnQuX3N0cmVhbS5zZW5kX2RhdGEoCi0gICAgICAgICAgICAgICAgICAgIGNvbXBy
ZXNzZWRfaGVsbG8sCi0gICAgICAgICAgICAgICAgICAgIGNsaWVudF9mb3JfdGVzdGluZy5PUENP
REVfVEVYVCwKLSAgICAgICAgICAgICAgICAgICAgcnN2MT0xKQotICAgICAgICAgICAgY2xpZW50
Ll9zdHJlYW0uYXNzZXJ0X3JlY2VpdmVfYmluYXJ5KAotICAgICAgICAgICAgICAgICAgICBjb21w
cmVzc2VkX2hlbGxvLAotICAgICAgICAgICAgICAgICAgICBvcGNvZGU9Y2xpZW50X2Zvcl90ZXN0
aW5nLk9QQ09ERV9URVhULAotICAgICAgICAgICAgICAgICAgICByc3YxPTEpCi0KLSAgICAgICAg
ICAgIGNsaWVudC5zZW5kX2Nsb3NlKCkKLSAgICAgICAgICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2
ZV9jbG9zZSgpCi0KLSAgICAgICAgZGVmIHJlc3BvbnNlX2NoZWNrZXIocGFyYW1ldGVyKToKLSAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdwZXJtZXNzYWdlLWRlZmxhdGUnLCBwYXJhbWV0
ZXIubmFtZSgpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoW10sIHBhcmFtZXRlci5n
ZXRfcGFyYW1ldGVycygpKQotCi0gICAgICAgIHNlbGYuX3J1bl9wZXJtZXNzYWdlX2RlZmxhdGVf
dGVzdCgKLSAgICAgICAgICAgICAgICBbJ3Blcm1lc3NhZ2UtZGVmbGF0ZSddLAotICAgICAgICAg
ICAgICAgIHJlc3BvbnNlX2NoZWNrZXIsCi0gICAgICAgICAgICAgICAgdGVzdF9mdW5jdGlvbikK
LQotICAgIGRlZiB0ZXN0X2VjaG9fcGVybWVzc2FnZV9kZWZsYXRlX3R3b19mcmFtZXMoc2VsZik6
Ci0gICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGNsaWVudCk6Ci0gICAgICAgICAgICAjIEZyb20g
dGhlIGV4YW1wbGVzIGluIHRoZSBzcGVjLgotICAgICAgICAgICAgY2xpZW50Ll9zdHJlYW0uc2Vu
ZF9kYXRhKAotICAgICAgICAgICAgICAgICAgICAnXHhmMlx4NDhceGNkJywKLSAgICAgICAgICAg
ICAgICAgICAgY2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhULAotICAgICAgICAgICAgICAg
ICAgICBlbmQ9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgIHJzdjE9MSkKLSAgICAgICAgICAg
IGNsaWVudC5fc3RyZWFtLnNlbmRfZGF0YSgKLSAgICAgICAgICAgICAgICAgICAgJ1x4YzlceGM5
XHgwN1x4MDAnLAotICAgICAgICAgICAgICAgICAgICBjbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RF
X1RFWFQpCi0gICAgICAgICAgICBjbGllbnQuX3N0cmVhbS5hc3NlcnRfcmVjZWl2ZV9iaW5hcnko
Ci0gICAgICAgICAgICAgICAgICAgICdceGYyXHg0OFx4Y2RceGM5XHhjOVx4MDdceDAwJywKLSAg
ICAgICAgICAgICAgICAgICAgb3Bjb2RlPWNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfVEVYVCwK
LSAgICAgICAgICAgICAgICAgICAgcnN2MT0xKQotCi0gICAgICAgICAgICBjbGllbnQuc2VuZF9j
bG9zZSgpCi0gICAgICAgICAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmVfY2xvc2UoKQotCi0gICAg
ICAgIGRlZiByZXNwb25zZV9jaGVja2VyKHBhcmFtZXRlcik6Ci0gICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFscygncGVybWVzc2FnZS1kZWZsYXRlJywgcGFyYW1ldGVyLm5hbWUoKSkKLSAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFtdLCBwYXJhbWV0ZXIuZ2V0X3BhcmFtZXRlcnMoKSkK
LQotICAgICAgICBzZWxmLl9ydW5fcGVybWVzc2FnZV9kZWZsYXRlX3Rlc3QoCi0gICAgICAgICAg
ICAgICAgWydwZXJtZXNzYWdlLWRlZmxhdGUnXSwKLSAgICAgICAgICAgICAgICByZXNwb25zZV9j
aGVja2VyLAotICAgICAgICAgICAgICAgIHRlc3RfZnVuY3Rpb24pCi0KLSAgICBkZWYgdGVzdF9l
Y2hvX3Blcm1lc3NhZ2VfZGVmbGF0ZV90d29fbWVzc2FnZXMoc2VsZik6Ci0gICAgICAgIGRlZiB0
ZXN0X2Z1bmN0aW9uKGNsaWVudCk6Ci0gICAgICAgICAgICAjIEZyb20gdGhlIGV4YW1wbGVzIGlu
IHRoZSBzcGVjLgotICAgICAgICAgICAgY2xpZW50Ll9zdHJlYW0uc2VuZF9kYXRhKAotICAgICAg
ICAgICAgICAgICAgICAnXHhmMlx4NDhceGNkXHhjOVx4YzlceDA3XHgwMCcsCi0gICAgICAgICAg
ICAgICAgICAgIGNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfVEVYVCwKLSAgICAgICAgICAgICAg
ICAgICAgcnN2MT0xKQotICAgICAgICAgICAgY2xpZW50Ll9zdHJlYW0uc2VuZF9kYXRhKAotICAg
ICAgICAgICAgICAgICAgICAnXHhmMlx4MDBceDExXHgwMFx4MDAnLAotICAgICAgICAgICAgICAg
ICAgICBjbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQsCi0gICAgICAgICAgICAgICAgICAg
IHJzdjE9MSkKLSAgICAgICAgICAgIGNsaWVudC5fc3RyZWFtLmFzc2VydF9yZWNlaXZlX2JpbmFy
eSgKLSAgICAgICAgICAgICAgICAgICAgJ1x4ZjJceDQ4XHhjZFx4YzlceGM5XHgwN1x4MDAnLAot
ICAgICAgICAgICAgICAgICAgICBvcGNvZGU9Y2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhU
LAotICAgICAgICAgICAgICAgICAgICByc3YxPTEpCi0gICAgICAgICAgICBjbGllbnQuX3N0cmVh
bS5hc3NlcnRfcmVjZWl2ZV9iaW5hcnkoCi0gICAgICAgICAgICAgICAgICAgICdceGYyXHgwMFx4
MTFceDAwXHgwMCcsCi0gICAgICAgICAgICAgICAgICAgIG9wY29kZT1jbGllbnRfZm9yX3Rlc3Rp
bmcuT1BDT0RFX1RFWFQsCi0gICAgICAgICAgICAgICAgICAgIHJzdjE9MSkKLQotICAgICAgICAg
ICAgY2xpZW50LnNlbmRfY2xvc2UoKQotICAgICAgICAgICAgY2xpZW50LmFzc2VydF9yZWNlaXZl
X2Nsb3NlKCkKLQotICAgICAgICBkZWYgcmVzcG9uc2VfY2hlY2tlcihwYXJhbWV0ZXIpOgotICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScsIHBhcmFtZXRl
ci5uYW1lKCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhbXSwgcGFyYW1ldGVyLmdl
dF9wYXJhbWV0ZXJzKCkpCi0KLSAgICAgICAgc2VsZi5fcnVuX3Blcm1lc3NhZ2VfZGVmbGF0ZV90
ZXN0KAotICAgICAgICAgICAgICAgIFsncGVybWVzc2FnZS1kZWZsYXRlJ10sCi0gICAgICAgICAg
ICAgICAgcmVzcG9uc2VfY2hlY2tlciwKLSAgICAgICAgICAgICAgICB0ZXN0X2Z1bmN0aW9uKQot
Ci0gICAgZGVmIHRlc3RfZWNob19wZXJtZXNzYWdlX2RlZmxhdGVfdHdvX21zZ3Nfc2VydmVyX25v
X2NvbnRleHRfdGFrZW92ZXIoc2VsZik6Ci0gICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGNsaWVu
dCk6Ci0gICAgICAgICAgICAjIEZyb20gdGhlIGV4YW1wbGVzIGluIHRoZSBzcGVjLgotICAgICAg
ICAgICAgY2xpZW50Ll9zdHJlYW0uc2VuZF9kYXRhKAotICAgICAgICAgICAgICAgICAgICAnXHhm
Mlx4NDhceGNkXHhjOVx4YzlceDA3XHgwMCcsCi0gICAgICAgICAgICAgICAgICAgIGNsaWVudF9m
b3JfdGVzdGluZy5PUENPREVfVEVYVCwKLSAgICAgICAgICAgICAgICAgICAgcnN2MT0xKQotICAg
ICAgICAgICAgY2xpZW50Ll9zdHJlYW0uc2VuZF9kYXRhKAotICAgICAgICAgICAgICAgICAgICAn
XHhmMlx4MDBceDExXHgwMFx4MDAnLAotICAgICAgICAgICAgICAgICAgICBjbGllbnRfZm9yX3Rl
c3RpbmcuT1BDT0RFX1RFWFQsCi0gICAgICAgICAgICAgICAgICAgIHJzdjE9MSkKLSAgICAgICAg
ICAgIGNsaWVudC5fc3RyZWFtLmFzc2VydF9yZWNlaXZlX2JpbmFyeSgKLSAgICAgICAgICAgICAg
ICAgICAgJ1x4ZjJceDQ4XHhjZFx4YzlceGM5XHgwN1x4MDAnLAotICAgICAgICAgICAgICAgICAg
ICBvcGNvZGU9Y2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhULAotICAgICAgICAgICAgICAg
ICAgICByc3YxPTEpCi0gICAgICAgICAgICBjbGllbnQuX3N0cmVhbS5hc3NlcnRfcmVjZWl2ZV9i
aW5hcnkoCi0gICAgICAgICAgICAgICAgICAgICdceGYyXHg0OFx4Y2RceGM5XHhjOVx4MDdceDAw
JywKLSAgICAgICAgICAgICAgICAgICAgb3Bjb2RlPWNsaWVudF9mb3JfdGVzdGluZy5PUENPREVf
VEVYVCwKLSAgICAgICAgICAgICAgICAgICAgcnN2MT0xKQotCi0gICAgICAgICAgICBjbGllbnQu
c2VuZF9jbG9zZSgpCi0gICAgICAgICAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmVfY2xvc2UoKQot
Ci0gICAgICAgIGRlZiByZXNwb25zZV9jaGVja2VyKHBhcmFtZXRlcik6Ci0gICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscygncGVybWVzc2FnZS1kZWZsYXRlJywgcGFyYW1ldGVyLm5hbWUoKSkK
LSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFsoJ3NlcnZlcl9ub19jb250ZXh0X3Rha2Vv
dmVyJywgTm9uZSldLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyLmdl
dF9wYXJhbWV0ZXJzKCkpCi0KLSAgICAgICAgc2VsZi5fcnVuX3Blcm1lc3NhZ2VfZGVmbGF0ZV90
ZXN0KAotICAgICAgICAgICAgICAgIFsncGVybWVzc2FnZS1kZWZsYXRlOyBzZXJ2ZXJfbm9fY29u
dGV4dF90YWtlb3ZlciddLAotICAgICAgICAgICAgICAgIHJlc3BvbnNlX2NoZWNrZXIsCi0gICAg
ICAgICAgICAgICAgdGVzdF9mdW5jdGlvbikKLQotICAgIGRlZiB0ZXN0X2VjaG9fcGVybWVzc2Fn
ZV9kZWZsYXRlX3ByZWZlcmVuY2Uoc2VsZik6Ci0gICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGNs
aWVudCk6Ci0gICAgICAgICAgICAjIEZyb20gdGhlIGV4YW1wbGVzIGluIHRoZSBzcGVjLgotICAg
ICAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9ICdceGYyXHg0OFx4Y2RceGM5XHhjOVx4MDdceDAw
JwotICAgICAgICAgICAgY2xpZW50Ll9zdHJlYW0uc2VuZF9kYXRhKAotICAgICAgICAgICAgICAg
ICAgICBjb21wcmVzc2VkX2hlbGxvLAotICAgICAgICAgICAgICAgICAgICBjbGllbnRfZm9yX3Rl
c3RpbmcuT1BDT0RFX1RFWFQsCi0gICAgICAgICAgICAgICAgICAgIHJzdjE9MSkKLSAgICAgICAg
ICAgIGNsaWVudC5fc3RyZWFtLmFzc2VydF9yZWNlaXZlX2JpbmFyeSgKLSAgICAgICAgICAgICAg
ICAgICAgY29tcHJlc3NlZF9oZWxsbywKLSAgICAgICAgICAgICAgICAgICAgb3Bjb2RlPWNsaWVu
dF9mb3JfdGVzdGluZy5PUENPREVfVEVYVCwKLSAgICAgICAgICAgICAgICAgICAgcnN2MT0xKQot
Ci0gICAgICAgICAgICBjbGllbnQuc2VuZF9jbG9zZSgpCi0gICAgICAgICAgICBjbGllbnQuYXNz
ZXJ0X3JlY2VpdmVfY2xvc2UoKQotCi0gICAgICAgIGRlZiByZXNwb25zZV9jaGVja2VyKHBhcmFt
ZXRlcik6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscygncGVybWVzc2FnZS1kZWZsYXRl
JywgcGFyYW1ldGVyLm5hbWUoKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFtdLCBw
YXJhbWV0ZXIuZ2V0X3BhcmFtZXRlcnMoKSkKLQotICAgICAgICBzZWxmLl9ydW5fcGVybWVzc2Fn
ZV9kZWZsYXRlX3Rlc3QoCi0gICAgICAgICAgICAgICAgWydwZXJtZXNzYWdlLWRlZmxhdGUnLCAn
ZGVmbGF0ZS1mcmFtZSddLAotICAgICAgICAgICAgICAgIHJlc3BvbnNlX2NoZWNrZXIsCi0gICAg
ICAgICAgICAgICAgdGVzdF9mdW5jdGlvbikKLQotICAgIGRlZiB0ZXN0X2VjaG9fcGVybWVzc2Fn
ZV9kZWZsYXRlX3dpdGhfcGFyYW1ldGVycyhzZWxmKToKLSAgICAgICAgZGVmIHRlc3RfZnVuY3Rp
b24oY2xpZW50KToKLSAgICAgICAgICAgICMgRnJvbSB0aGUgZXhhbXBsZXMgaW4gdGhlIHNwZWMu
Ci0gICAgICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gJ1x4ZjJceDQ4XHhjZFx4YzlceGM5XHgw
N1x4MDAnCi0gICAgICAgICAgICBjbGllbnQuX3N0cmVhbS5zZW5kX2RhdGEoCi0gICAgICAgICAg
ICAgICAgICAgIGNvbXByZXNzZWRfaGVsbG8sCi0gICAgICAgICAgICAgICAgICAgIGNsaWVudF9m
b3JfdGVzdGluZy5PUENPREVfVEVYVCwKLSAgICAgICAgICAgICAgICAgICAgcnN2MT0xKQotICAg
ICAgICAgICAgY2xpZW50Ll9zdHJlYW0uYXNzZXJ0X3JlY2VpdmVfYmluYXJ5KAotICAgICAgICAg
ICAgICAgICAgICBjb21wcmVzc2VkX2hlbGxvLAotICAgICAgICAgICAgICAgICAgICBvcGNvZGU9
Y2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhULAotICAgICAgICAgICAgICAgICAgICByc3Yx
PTEpCi0KLSAgICAgICAgICAgIGNsaWVudC5zZW5kX2Nsb3NlKCkKLSAgICAgICAgICAgIGNsaWVu
dC5hc3NlcnRfcmVjZWl2ZV9jbG9zZSgpCi0KLSAgICAgICAgZGVmIHJlc3BvbnNlX2NoZWNrZXIo
cGFyYW1ldGVyKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdwZXJtZXNzYWdlLWRl
ZmxhdGUnLCBwYXJhbWV0ZXIubmFtZSgpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
Wygnc2VydmVyX21heF93aW5kb3dfYml0cycsICcxMCcpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICgnc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXInLCBOb25lKV0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIuZ2V0X3BhcmFtZXRlcnMoKSkKLQotICAg
ICAgICBzZWxmLl9ydW5fcGVybWVzc2FnZV9kZWZsYXRlX3Rlc3QoCi0gICAgICAgICAgICAgICAg
WydwZXJtZXNzYWdlLWRlZmxhdGU7IHNlcnZlcl9tYXhfd2luZG93X2JpdHM9MTA7ICcKLSAgICAg
ICAgICAgICAgICAgJ3NlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyJ10sCi0gICAgICAgICAgICAg
ICAgcmVzcG9uc2VfY2hlY2tlciwKLSAgICAgICAgICAgICAgICB0ZXN0X2Z1bmN0aW9uKQotCi0g
ICAgZGVmIHRlc3RfZWNob19wZXJtZXNzYWdlX2RlZmxhdGVfd2l0aF9iYWRfc2VydmVyX21heF93
aW5kb3dfYml0cyhzZWxmKToKLSAgICAgICAgZGVmIHRlc3RfZnVuY3Rpb24oY2xpZW50KToKLSAg
ICAgICAgICAgIGNsaWVudC5zZW5kX2Nsb3NlKCkKLSAgICAgICAgICAgIGNsaWVudC5hc3NlcnRf
cmVjZWl2ZV9jbG9zZSgpCi0KLSAgICAgICAgZGVmIHJlc3BvbnNlX2NoZWNrZXIocGFyYW1ldGVy
KToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignVW5leHBlY3RlZCBhY2NlcHRhbmNlIG9m
IHBlcm1lc3NhZ2UtZGVmbGF0ZScpCi0KLSAgICAgICAgc2VsZi5fcnVuX3Blcm1lc3NhZ2VfZGVm
bGF0ZV90ZXN0KAotICAgICAgICAgICAgICAgIFsncGVybWVzc2FnZS1kZWZsYXRlOyBzZXJ2ZXJf
bWF4X3dpbmRvd19iaXRzPTMwMDAwMDAnXSwKLSAgICAgICAgICAgICAgICByZXNwb25zZV9jaGVj
a2VyLAotICAgICAgICAgICAgICAgIHRlc3RfZnVuY3Rpb24pCi0KLSAgICBkZWYgdGVzdF9lY2hv
X3Blcm1lc3NhZ2VfZGVmbGF0ZV93aXRoX2JhZF9zZXJ2ZXJfbWF4X3dpbmRvd19iaXRzKHNlbGYp
OgotICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbihjbGllbnQpOgotICAgICAgICAgICAgY2xpZW50
LnNlbmRfY2xvc2UoKQotICAgICAgICAgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKCkK
LQotICAgICAgICBkZWYgcmVzcG9uc2VfY2hlY2tlcihwYXJhbWV0ZXIpOgotICAgICAgICAgICAg
cmFpc2UgRXhjZXB0aW9uKCdVbmV4cGVjdGVkIGFjY2VwdGFuY2Ugb2YgcGVybWVzc2FnZS1kZWZs
YXRlJykKLQotICAgICAgICBzZWxmLl9ydW5fcGVybWVzc2FnZV9kZWZsYXRlX3Rlc3QoCi0gICAg
ICAgICAgICAgICAgWydwZXJtZXNzYWdlLWRlZmxhdGU7IHNlcnZlcl9tYXhfd2luZG93X2JpdHM9
MzAwMDAwMCddLAotICAgICAgICAgICAgICAgIHJlc3BvbnNlX2NoZWNrZXIsCi0gICAgICAgICAg
ICAgICAgdGVzdF9mdW5jdGlvbikKLQotICAgIGRlZiB0ZXN0X2VjaG9fcGVybWVzc2FnZV9kZWZs
YXRlX3dpdGhfdW5kZWZpbmVkX3BhcmFtZXRlcihzZWxmKToKLSAgICAgICAgZGVmIHRlc3RfZnVu
Y3Rpb24oY2xpZW50KToKLSAgICAgICAgICAgIGNsaWVudC5zZW5kX2Nsb3NlKCkKLSAgICAgICAg
ICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9zZSgpCi0KLSAgICAgICAgZGVmIHJlc3BvbnNl
X2NoZWNrZXIocGFyYW1ldGVyKToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignVW5leHBl
Y3RlZCBhY2NlcHRhbmNlIG9mIHBlcm1lc3NhZ2UtZGVmbGF0ZScpCi0KLSAgICAgICAgc2VsZi5f
cnVuX3Blcm1lc3NhZ2VfZGVmbGF0ZV90ZXN0KAotICAgICAgICAgICAgICAgIFsncGVybWVzc2Fn
ZS1kZWZsYXRlOyBmb289YmFyJ10sCi0gICAgICAgICAgICAgICAgcmVzcG9uc2VfY2hlY2tlciwK
LSAgICAgICAgICAgICAgICB0ZXN0X2Z1bmN0aW9uKQotCi0gICAgZGVmIHRlc3RfZWNob19jbG9z
ZV93aXRoX2NvZGVfYW5kX3JlYXNvbihzZWxmKToKLSAgICAgICAgc2VsZi5fb3B0aW9ucy5yZXNv
dXJjZSA9ICcvY2xvc2UnCi0gICAgICAgIHNlbGYuX3J1bl9jbG9zZV93aXRoX2NvZGVfYW5kX3Jl
YXNvbl90ZXN0KAotICAgICAgICAgICAgX2VjaG9fY2hlY2tfcHJvY2VkdXJlX3dpdGhfY29kZV9h
bmRfcmVhc29uLCAzMzMzLCAnc3Vuc3Vuc3Vuc3VuJykKLQotICAgIGRlZiB0ZXN0X2VjaG9fY2xv
c2Vfd2l0aF9lbXB0eV9ib2R5KHNlbGYpOgotICAgICAgICBzZWxmLl9vcHRpb25zLnJlc291cmNl
ID0gJy9jbG9zZScKLSAgICAgICAgc2VsZi5fcnVuX2Nsb3NlX3dpdGhfY29kZV9hbmRfcmVhc29u
X3Rlc3QoCi0gICAgICAgICAgICBfZWNob19jaGVja19wcm9jZWR1cmVfd2l0aF9jb2RlX2FuZF9y
ZWFzb24sIE5vbmUsICcnKQotCi0gICAgZGVmIHRlc3RfbXV4X2VjaG8oc2VsZik6Ci0gICAgICAg
IHNlbGYuX3J1bl9tdXhfdGVzdChfbXV4X2VjaG9fY2hlY2tfcHJvY2VkdXJlKQotCi0gICAgZGVm
IHRlc3RfY2xvc2Vfb25fcHJvdG9jb2xfZXJyb3Ioc2VsZik6Ci0gICAgICAgICIiIlRlc3RzIHRo
YXQgdGhlIHNlcnZlciBzZW5kcyBhIGNsb3NlIGZyYW1lIHdpdGggcHJvdG9jb2wgZXJyb3Igc3Rh
dHVzCi0gICAgICAgIGNvZGUgd2hlbiB0aGUgY2xpZW50IHNlbmRzIGRhdGEgd2l0aCBzb21lIHBy
b3RvY29sIGVycm9yLgotICAgICAgICAiIiIKLQotICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbihj
bGllbnQpOgotICAgICAgICAgICAgY2xpZW50LmNvbm5lY3QoKQotCi0gICAgICAgICAgICAjIElu
dGVybWVkaWF0ZSBmcmFtZSB3aXRob3V0IGFueSBwcmVjZWRpbmcgc3RhcnQgb2YgZnJhZ21lbnRh
dGlvbgotICAgICAgICAgICAgIyBmcmFtZS4KLSAgICAgICAgICAgIGNsaWVudC5zZW5kX2ZyYW1l
X29mX2FyYml0cmFyeV9ieXRlcygnXHg4MFx4ODAnLCAnJykKLSAgICAgICAgICAgIGNsaWVudC5h
c3NlcnRfcmVjZWl2ZV9jbG9zZSgKLSAgICAgICAgICAgICAgICBjbGllbnRfZm9yX3Rlc3Rpbmcu
U1RBVFVTX1BST1RPQ09MX0VSUk9SKQotCi0gICAgICAgIHNlbGYuX3J1bl90ZXN0KHRlc3RfZnVu
Y3Rpb24pCi0KLSAgICBkZWYgdGVzdF9jbG9zZV9vbl91bnN1cHBvcnRlZF9mcmFtZShzZWxmKToK
LSAgICAgICAgIiIiVGVzdHMgdGhhdCB0aGUgc2VydmVyIHNlbmRzIGEgY2xvc2UgZnJhbWUgd2l0
aCB1bnN1cHBvcnRlZCBvcGVyYXRpb24KLSAgICAgICAgc3RhdHVzIGNvZGUgd2hlbiB0aGUgY2xp
ZW50IHNlbmRzIGRhdGEgYXNraW5nIHNvbWUgb3BlcmF0aW9uIHRoYXQgaXMKLSAgICAgICAgbm90
IHN1cHBvcnRlZCBieSB0aGUgc2VydmVyLgotICAgICAgICAiIiIKLQotICAgICAgICBkZWYgdGVz
dF9mdW5jdGlvbihjbGllbnQpOgotICAgICAgICAgICAgY2xpZW50LmNvbm5lY3QoKQotCi0gICAg
ICAgICAgICAjIFRleHQgZnJhbWUgd2l0aCBSU1YzIGJpdCByYWlzZWQuCi0gICAgICAgICAgICBj
bGllbnQuc2VuZF9mcmFtZV9vZl9hcmJpdHJhcnlfYnl0ZXMoJ1x4OTFceDgwJywgJycpCi0gICAg
ICAgICAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmVfY2xvc2UoCi0gICAgICAgICAgICAgICAgY2xp
ZW50X2Zvcl90ZXN0aW5nLlNUQVRVU19VTlNVUFBPUlRFRF9EQVRBKQotCi0gICAgICAgIHNlbGYu
X3J1bl90ZXN0KHRlc3RfZnVuY3Rpb24pCi0KLSAgICBkZWYgdGVzdF9jbG9zZV9vbl9pbnZhbGlk
X2ZyYW1lKHNlbGYpOgotICAgICAgICAiIiJUZXN0cyB0aGF0IHRoZSBzZXJ2ZXIgc2VuZHMgYSBj
bG9zZSBmcmFtZSB3aXRoIGludmFsaWQgZnJhbWUgcGF5bG9hZAotICAgICAgICBkYXRhIHN0YXR1
cyBjb2RlIHdoZW4gdGhlIGNsaWVudCBzZW5kcyBhbiBpbnZhbGlkIGZyYW1lIGxpa2UgY29udGFp
bmluZwotICAgICAgICBpbnZhbGlkIFVURi04IGNoYXJhY3Rlci4KLSAgICAgICAgIiIiCi0KLSAg
ICAgICAgZGVmIHRlc3RfZnVuY3Rpb24oY2xpZW50KToKLSAgICAgICAgICAgIGNsaWVudC5jb25u
ZWN0KCkKLQotICAgICAgICAgICAgIyBUZXh0IGZyYW1lIHdpdGggaW52YWxpZCBVVEYtOCBzdHJp
bmcuCi0gICAgICAgICAgICBjbGllbnQuc2VuZF9tZXNzYWdlKCdceDgwJywgcmF3PVRydWUpCi0g
ICAgICAgICAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmVfY2xvc2UoCi0gICAgICAgICAgICAgICAg
Y2xpZW50X2Zvcl90ZXN0aW5nLlNUQVRVU19JTlZBTElEX0ZSQU1FX1BBWUxPQURfREFUQSkKLQot
ICAgICAgICBzZWxmLl9ydW5fdGVzdCh0ZXN0X2Z1bmN0aW9uKQotCi0gICAgZGVmIHRlc3RfY2xv
c2Vfb25faW50ZXJuYWxfZW5kcG9pbnRfZXJyb3Ioc2VsZik6Ci0gICAgICAgICIiIlRlc3RzIHRo
YXQgdGhlIHNlcnZlciBzZW5kcyBhIGNsb3NlIGZyYW1lIHdpdGggaW50ZXJuYWwgZW5kcG9pbnQK
LSAgICAgICAgZXJyb3Igc3RhdHVzIGNvZGUgd2hlbiB0aGUgaGFuZGxlciBkb2VzIGJhZCBvcGVy
YXRpb24uCi0gICAgICAgICIiIgotCi0gICAgICAgIHNlbGYuX29wdGlvbnMucmVzb3VyY2UgPSAn
L2ludGVybmFsX2Vycm9yJwotCi0gICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGNsaWVudCk6Ci0g
ICAgICAgICAgICBjbGllbnQuY29ubmVjdCgpCi0gICAgICAgICAgICBjbGllbnQuYXNzZXJ0X3Jl
Y2VpdmVfY2xvc2UoCi0gICAgICAgICAgICAgICAgY2xpZW50X2Zvcl90ZXN0aW5nLlNUQVRVU19J
TlRFUk5BTF9FTkRQT0lOVF9FUlJPUikKLQotICAgICAgICBzZWxmLl9ydW5fdGVzdCh0ZXN0X2Z1
bmN0aW9uKQotCi0gICAgIyBUT0RPKHRveW9zaGltKTogQWRkIHRlc3RzIHRvIHZlcmlmeSBpbnZh
bGlkIGFic29sdXRlIHVyaSBoYW5kbGluZyBsaWtlCi0gICAgIyBob3N0IHVubWF0Y2gsIHBvcnQg
dW5tYXRjaCBhbmQgaW52YWxpZCBwb3J0IGRlc2NyaXB0aW9uICgnOicgd2l0aG91dCBwb3J0Ci0g
ICAgIyBudW1iZXIpLgotCi0gICAgZGVmIHRlc3RfYWJzb2x1dGVfdXJpKHNlbGYpOgotICAgICAg
ICAiIiJUZXN0cyBhYnNvbHV0ZSB1cmkgcmVxdWVzdC4iIiIKLQotICAgICAgICBvcHRpb25zID0g
c2VsZi5fb3B0aW9ucwotICAgICAgICBvcHRpb25zLnJlc291cmNlID0gJ3dzOi8vbG9jYWxob3N0
OiVkL2VjaG8nICUgb3B0aW9ucy5zZXJ2ZXJfcG9ydAotICAgICAgICBzZWxmLl9ydW5fdGVzdF93
aXRoX2NsaWVudF9vcHRpb25zKF9lY2hvX2NoZWNrX3Byb2NlZHVyZSwgb3B0aW9ucykKLQotICAg
IGRlZiB0ZXN0X29yaWdpbl9jaGVjayhzZWxmKToKLSAgICAgICAgIiIiVGVzdHMgaHR0cCBmYWxs
YmFjayBvbiBvcmlnaW4gY2hlY2sgZmFpbC4iIiIKLQotICAgICAgICBvcHRpb25zID0gc2VsZi5f
b3B0aW9ucwotICAgICAgICBvcHRpb25zLnJlc291cmNlID0gJy9vcmlnaW5fY2hlY2snCi0gICAg
ICAgICMgU2VydmVyIHNob3dzIHdhcm5pbmcgbWVzc2FnZSBmb3IgaHR0cCA0MDMgZmFsbGJhY2su
IFRoaXMgd2FybmluZwotICAgICAgICAjIG1lc3NhZ2UgaXMgY29uZnVzaW5nLiBGb2xsb3dpbmcg
cGlwZSBkaXNwb3NlcyB3YXJuaW5nIG1lc3NhZ2VzLgotICAgICAgICBzZWxmLnNlcnZlcl9zdGRl
cnIgPSBzdWJwcm9jZXNzLlBJUEUKLSAgICAgICAgc2VsZi5fcnVuX2h0dHBfZmFsbGJhY2tfdGVz
dChvcHRpb25zLCA0MDMpCi0KLSAgICBkZWYgdGVzdF92ZXJzaW9uX2NoZWNrKHNlbGYpOgotICAg
ICAgICAiIiJUZXN0cyBodHRwIGZhbGxiYWNrIG9uIHZlcnNpb24gY2hlY2sgZmFpbC4iIiIKLQot
ICAgICAgICBvcHRpb25zID0gc2VsZi5fb3B0aW9ucwotICAgICAgICBvcHRpb25zLnZlcnNpb24g
PSA5OQotICAgICAgICBzZWxmLl9ydW5faHR0cF9mYWxsYmFja190ZXN0KG9wdGlvbnMsIDQwMCkK
LQotCi1jbGFzcyBFbmRUb0VuZEh5QmkwMFRlc3QoRW5kVG9FbmRUZXN0QmFzZSk6Ci0gICAgZGVm
IHNldFVwKHNlbGYpOgotICAgICAgICBFbmRUb0VuZFRlc3RCYXNlLnNldFVwKHNlbGYpCi0KLSAg
ICBkZWYgX3J1bl90ZXN0KHNlbGYsIHRlc3RfZnVuY3Rpb24pOgotICAgICAgICBzZXJ2ZXIgPSBz
ZWxmLl9ydW5fc2VydmVyKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdGltZS5zbGVlcChf
U0VSVkVSX1dBUk1VUF9JTl9TRUMpCi0KLSAgICAgICAgICAgIGNsaWVudCA9IGNsaWVudF9mb3Jf
dGVzdGluZy5jcmVhdGVfY2xpZW50X2h5YmkwMChzZWxmLl9vcHRpb25zKQotICAgICAgICAgICAg
dHJ5OgotICAgICAgICAgICAgICAgIHRlc3RfZnVuY3Rpb24oY2xpZW50KQotICAgICAgICAgICAg
ZmluYWxseToKLSAgICAgICAgICAgICAgICBjbGllbnQuY2xvc2Vfc29ja2V0KCkKLSAgICAgICAg
ZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX2tpbGxfcHJvY2VzcyhzZXJ2ZXIucGlkKQotCi0g
ICAgZGVmIHRlc3RfZWNobyhzZWxmKToKLSAgICAgICAgc2VsZi5fcnVuX3Rlc3QoX2VjaG9fY2hl
Y2tfcHJvY2VkdXJlKQotCi0gICAgZGVmIHRlc3RfZWNob19zZXJ2ZXJfY2xvc2Uoc2VsZik6Ci0g
ICAgICAgIHNlbGYuX3J1bl90ZXN0KF9lY2hvX2NoZWNrX3Byb2NlZHVyZV93aXRoX2dvb2RieWUp
Ci0KLQotY2xhc3MgRW5kVG9FbmRUZXN0V2l0aEVjaG9DbGllbnQoRW5kVG9FbmRUZXN0QmFzZSk6
Ci0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBFbmRUb0VuZFRlc3RCYXNlLnNldFVwKHNl
bGYpCi0KLSAgICBkZWYgX2NoZWNrX2V4YW1wbGVfZWNob19jbGllbnRfcmVzdWx0KAotICAgICAg
ICBzZWxmLCBleHBlY3RlZCwgc3Rkb3V0ZGF0YSwgc3RkZXJyZGF0YSk6Ci0gICAgICAgIGFjdHVh
bCA9IHN0ZG91dGRhdGEuZGVjb2RlKCJ1dGYtOCIpCi0gICAgICAgIGlmIGFjdHVhbCAhPSBleHBl
Y3RlZDoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignVW5leHBlY3RlZCByZXN1bHQgb24g
ZXhhbXBsZSBlY2hvIGNsaWVudDogJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICclciAo
ZXhwZWN0ZWQpIHZzICVyIChhY3R1YWwpJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
KGV4cGVjdGVkLCBhY3R1YWwpKQotICAgICAgICBpZiBzdGRlcnJkYXRhIGlzIG5vdCBOb25lOgot
ICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdVbmV4cGVjdGVkIGVycm9yIG1lc3NhZ2Ugb24g
ZXhhbXBsZSBlY2hvICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2xpZW50OiAlcicg
JSBzdGRlcnJkYXRhKQotCi0gICAgZGVmIHRlc3RfZXhhbXBsZV9lY2hvX2NsaWVudChzZWxmKToK
LSAgICAgICAgIiIiVGVzdHMgdGhhdCB0aGUgZWNob19jbGllbnQucHkgZXhhbXBsZSBjYW4gdGFs
ayB3aXRoIHRoZSBzZXJ2ZXIuIiIiCi0KLSAgICAgICAgc2VydmVyID0gc2VsZi5fcnVuX3NlcnZl
cigpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHRpbWUuc2xlZXAoX1NFUlZFUl9XQVJNVVBf
SU5fU0VDKQotCi0gICAgICAgICAgICBjbGllbnRfY29tbWFuZCA9IG9zLnBhdGguam9pbigKLSAg
ICAgICAgICAgICAgICBzZWxmLnRvcF9kaXIsICdleGFtcGxlJywgJ2VjaG9fY2xpZW50LnB5JykK
LQotICAgICAgICAgICAgIyBFeHBlY3RlZCBvdXRwdXQgZm9yIHRoZSBkZWZhdWx0IG1lc3NhZ2Vz
LgotICAgICAgICAgICAgZGVmYXVsdF9leHBlY3RhdGlvbiA9ICgnU2VuZDogSGVsbG9cbicgJ1Jl
Y3Y6IEhlbGxvXG4nCi0gICAgICAgICAgICAgICAgdSdTZW5kOiBcdTY1ZTVcdTY3MmNcbicgdSdS
ZWN2OiBcdTY1ZTVcdTY3MmNcbicKLSAgICAgICAgICAgICAgICAnU2VuZCBjbG9zZVxuJyAnUmVj
diBhY2tcbicpCi0KLSAgICAgICAgICAgIGFyZ3MgPSBbY2xpZW50X2NvbW1hbmQsCi0gICAgICAg
ICAgICAgICAgICAgICctcCcsIHN0cihzZWxmLl9vcHRpb25zLnNlcnZlcl9wb3J0KV0KLSAgICAg
ICAgICAgIGNsaWVudCA9IHNlbGYuX3J1bl9weXRob25fY29tbWFuZChhcmdzLCBzdGRvdXQ9c3Vi
cHJvY2Vzcy5QSVBFKQotICAgICAgICAgICAgc3Rkb3V0ZGF0YSwgc3RkZXJyZGF0YSA9IGNsaWVu
dC5jb21tdW5pY2F0ZSgpCi0gICAgICAgICAgICBzZWxmLl9jaGVja19leGFtcGxlX2VjaG9fY2xp
ZW50X3Jlc3VsdCgKLSAgICAgICAgICAgICAgICAgICAgZGVmYXVsdF9leHBlY3RhdGlvbiwgc3Rk
b3V0ZGF0YSwgc3RkZXJyZGF0YSkKLQotICAgICAgICAgICAgIyBQcm9jZXNzIGEgYmlnIG1lc3Nh
Z2UgZm9yIHdoaWNoIGV4dGVuZGVkIHBheWxvYWQgbGVuZ3RoIGlzIHVzZWQuCi0gICAgICAgICAg
ICAjIFRvIGhhbmRsZSBleHRlbmRlZCBwYXlsb2FkIGxlbmd0aCwgd3NfdmVyc2lvbiBhdHRyaWJ1
dGUgd2lsbCBiZQotICAgICAgICAgICAgIyBhY2Nlc3NlZC4gVGhpcyB0ZXN0IGNoZWNrcyB0aGF0
IHdzX3ZlcnNpb24gaXMgY29ycmVjdGx5IHNldC4KLSAgICAgICAgICAgIGJpZ19tZXNzYWdlID0g
J2EnICogMTAyNAotICAgICAgICAgICAgYXJncyA9IFtjbGllbnRfY29tbWFuZCwKLSAgICAgICAg
ICAgICAgICAgICAgJy1wJywgc3RyKHNlbGYuX29wdGlvbnMuc2VydmVyX3BvcnQpLAotICAgICAg
ICAgICAgICAgICAgICAnLW0nLCBiaWdfbWVzc2FnZV0KLSAgICAgICAgICAgIGNsaWVudCA9IHNl
bGYuX3J1bl9weXRob25fY29tbWFuZChhcmdzLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKQotICAg
ICAgICAgICAgc3Rkb3V0ZGF0YSwgc3RkZXJyZGF0YSA9IGNsaWVudC5jb21tdW5pY2F0ZSgpCi0g
ICAgICAgICAgICBleHBlY3RlZCA9ICgnU2VuZDogJXNcblJlY3Y6ICVzXG5TZW5kIGNsb3NlXG5S
ZWN2IGFja1xuJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAoYmlnX21lc3NhZ2UsIGJpZ19t
ZXNzYWdlKSkKLSAgICAgICAgICAgIHNlbGYuX2NoZWNrX2V4YW1wbGVfZWNob19jbGllbnRfcmVz
dWx0KAotICAgICAgICAgICAgICAgIGV4cGVjdGVkLCBzdGRvdXRkYXRhLCBzdGRlcnJkYXRhKQot
Ci0gICAgICAgICAgICAjIFRlc3QgdGhlIHBlcm1lc3NhZ2UtZGVmbGF0ZSBleHRlbnNpb24uCi0g
ICAgICAgICAgICBhcmdzID0gW2NsaWVudF9jb21tYW5kLAotICAgICAgICAgICAgICAgICAgICAn
LXAnLCBzdHIoc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfcG9ydCksCi0gICAgICAgICAgICAgICAgICAg
ICctLXVzZV9wZXJtZXNzYWdlX2RlZmxhdGUnXQotICAgICAgICAgICAgY2xpZW50ID0gc2VsZi5f
cnVuX3B5dGhvbl9jb21tYW5kKGFyZ3MsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpCi0gICAgICAg
ICAgICBzdGRvdXRkYXRhLCBzdGRlcnJkYXRhID0gY2xpZW50LmNvbW11bmljYXRlKCkKLSAgICAg
ICAgICAgIHNlbGYuX2NoZWNrX2V4YW1wbGVfZWNob19jbGllbnRfcmVzdWx0KAotICAgICAgICAg
ICAgICAgICAgICBkZWZhdWx0X2V4cGVjdGF0aW9uLCBzdGRvdXRkYXRhLCBzdGRlcnJkYXRhKQot
ICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fa2lsbF9wcm9jZXNzKHNlcnZlci5w
aWQpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB1bml0dGVzdC5tYWluKCkK
LQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X2V4dGVu
c2lvbnMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9leHRlbnNpb25zLnB5CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA5NGE0Mzg0NzkyYmZmZDBhMjBkMmU3NTQzM2RjMjkwOWNmOTNkZTZkLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90
ZXN0X2V4dGVuc2lvbnMucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyNzkgKzAsMCBAQAotIyEvdXNy
L2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgotIyBBbGwg
cmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6
Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJUZXN0cyBmb3IgZXh0
ZW5zaW9ucyBtb2R1bGUuIiIiCi0KLQotaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgemxpYgotCi1p
bXBvcnQgc2V0X3N5c19wYXRoICAjIFVwZGF0ZSBzeXMucGF0aCB0byBsb2NhdGUgbW9kX3B5d2Vi
c29ja2V0IG1vZHVsZS4KLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgotZnJv
bSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGV4dGVuc2lvbnMKLQotCi1jbGFzcyBFeHRlbnNpb25z
VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiQSB1bml0dGVzdCBmb3Igbm9uLWNsYXNz
IG1ldGhvZHMgaW4gZXh0ZW5zaW9ucy5weSIiIgotCi0gICAgZGVmIHRlc3RfcGFyc2Vfd2luZG93
X2JpdHMoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV4dGVu
c2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNl
cyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0cywgJ2Zvb2JhcicpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV4dGVuc2lvbnMuX3BhcnNlX3dp
bmRvd19iaXRzLCAnIDggJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwg
ZXh0ZW5zaW9ucy5fcGFyc2Vfd2luZG93X2JpdHMsICdhOGEnKQotICAgICAgICBzZWxmLmFzc2Vy
dFJhaXNlcyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0cywgJzAwMDAw
JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZXh0ZW5zaW9ucy5fcGFy
c2Vfd2luZG93X2JpdHMsICcwMDAwOCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVl
RXJyb3IsIGV4dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCAnMHg4JykKLQotICAgICAgICBz
ZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0
cywgJzkuNScpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV4dGVuc2lv
bnMuX3BhcnNlX3dpbmRvd19iaXRzLCAnOC4wJykKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUo
ZXh0ZW5zaW9ucy5fcGFyc2Vfd2luZG93X2JpdHMsICc4JykKLSAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKGV4dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCAnMTUnKQotCi0gICAgICAgIHNlbGYu
YXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV4dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCAn
LTgnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9w
YXJzZV93aW5kb3dfYml0cywgJzAnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVy
cm9yLCBleHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0cywgJzcnKQotCi0gICAgICAgIHNlbGYu
YXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV4dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCAn
MTYnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKLSAgICAgICAgICAgICAgICBWYWx1ZUVy
cm9yLCBleHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0cywgJzEwMDAwMDAwJykKLQotCi1jbGFz
cyBEZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3JQYXJzaW5nVGVzdCh1bml0dGVzdC5UZXN0
Q2FzZSk6Ci0gICAgIiIiQSB1bml0dGVzdCBmb3IgY2hlY2tpbmcgdGhhdCBEZWZsYXRlRnJhbWVF
eHRlbnNpb25Qcm9jZXNzb3IgcGFyc2VzIGdpdmVuCi0gICAgZXh0ZW5zaW9uIHBhcmFtZXRlciBj
b3JyZWN0bHkuCi0gICAgIiIiCi0KLSAgICBkZWYgdGVzdF9yZWdpc3RyeShzZWxmKToKLSAgICAg
ICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5nZXRfZXh0ZW5zaW9uX3Byb2Nlc3NvcigKLSAgICAg
ICAgICAgICAgICBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKCdkZWZsYXRlLWZyYW1lJykpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShwcm9jZXNzb3IsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBleHRlbnNpb25zLkRlZmxhdGVGcmFtZUV4dGVuc2lvblByb2Nlc3NvcikK
LQotICAgICAgICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLmdldF9leHRlbnNpb25fcHJvY2Vzc29y
KAotICAgICAgICAgICAgICAgIGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3gtd2Via2l0LWRl
ZmxhdGUtZnJhbWUnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHByb2Nlc3NvciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbnMuRGVmbGF0ZUZyYW1lRXh0
ZW5zaW9uUHJvY2Vzc29yKQotCi0gICAgZGVmIHRlc3RfbWluaW1hbF9vZmZlcihzZWxmKToKLSAg
ICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5EZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNz
b3IoCi0gICAgICAgICAgICBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKCdwZXJmcmFtZS1kZWZs
YXRlJykpCi0KLSAgICAgICAgcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNw
b25zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3BlcmZyYW1lLWRlZmxhdGUnLCByZXNw
b25zZS5uYW1lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgbGVuKHJlc3BvbnNlLmdl
dF9wYXJhbWV0ZXJzKCkpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemxpYi5NQVhfV0JJ
VFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc29yLl9yZmMxOTc5X2RlZmxhdGVy
Ll93aW5kb3dfYml0cykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShwcm9jZXNzb3IuX3JmYzE5
NzlfZGVmbGF0ZXIuX25vX2NvbnRleHRfdGFrZW92ZXIpCi0KLSAgICBkZWYgdGVzdF9vZmZlcl93
aXRoX21heF93aW5kb3dfYml0cyhzZWxmKToKLSAgICAgICAgcGFyYW1ldGVyID0gY29tbW9uLkV4
dGVuc2lvblBhcmFtZXRlcigncGVyZnJhbWUtZGVmbGF0ZScpCi0gICAgICAgIHBhcmFtZXRlci5h
ZGRfcGFyYW1ldGVyKCdtYXhfd2luZG93X2JpdHMnLCAnMTAnKQotICAgICAgICBwcm9jZXNzb3Ig
PSBleHRlbnNpb25zLkRlZmxhdGVGcmFtZUV4dGVuc2lvblByb2Nlc3NvcihwYXJhbWV0ZXIpCi0K
LSAgICAgICAgcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3BlcmZyYW1lLWRlZmxhdGUnLCByZXNwb25zZS5uYW1l
KCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgbGVuKHJlc3BvbnNlLmdldF9wYXJhbWV0
ZXJzKCkpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTAsIHByb2Nlc3Nvci5fcmZjMTk3
OV9kZWZsYXRlci5fd2luZG93X2JpdHMpCi0KLSAgICBkZWYgdGVzdF9vZmZlcl93aXRoX291dF9v
Zl9yYW5nZV9tYXhfd2luZG93X2JpdHMoc2VsZik6Ci0gICAgICAgIHBhcmFtZXRlciA9IGNvbW1v
bi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3BlcmZyYW1lLWRlZmxhdGUnKQotICAgICAgICBwYXJhbWV0
ZXIuYWRkX3BhcmFtZXRlcignbWF4X3dpbmRvd19iaXRzJywgJzAnKQotICAgICAgICBwcm9jZXNz
b3IgPSBleHRlbnNpb25zLkRlZmxhdGVGcmFtZUV4dGVuc2lvblByb2Nlc3NvcihwYXJhbWV0ZXIp
Ci0KLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVz
cG9uc2UoKSkKLQotICAgIGRlZiB0ZXN0X29mZmVyX3dpdGhfbWF4X3dpbmRvd19iaXRzX3dpdGhv
dXRfdmFsdWUoc2VsZik6Ci0gICAgICAgIHBhcmFtZXRlciA9IGNvbW1vbi5FeHRlbnNpb25QYXJh
bWV0ZXIoJ3BlcmZyYW1lLWRlZmxhdGUnKQotICAgICAgICBwYXJhbWV0ZXIuYWRkX3BhcmFtZXRl
cignbWF4X3dpbmRvd19iaXRzJywgTm9uZSkKLSAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9u
cy5EZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IocGFyYW1ldGVyKQotCi0gICAgICAgIHNl
bGYuYXNzZXJ0SXNOb25lKHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkpCi0KLSAg
ICBkZWYgdGVzdF9vZmZlcl93aXRoX25vX2NvbnRleHRfdGFrZW92ZXIoc2VsZik6Ci0gICAgICAg
IHBhcmFtZXRlciA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3BlcmZyYW1lLWRlZmxhdGUn
KQotICAgICAgICBwYXJhbWV0ZXIuYWRkX3BhcmFtZXRlcignbm9fY29udGV4dF90YWtlb3Zlcics
IE5vbmUpCi0gICAgICAgIHByb2Nlc3NvciA9IGV4dGVuc2lvbnMuRGVmbGF0ZUZyYW1lRXh0ZW5z
aW9uUHJvY2Vzc29yKHBhcmFtZXRlcikKLQotICAgICAgICByZXNwb25zZSA9IHByb2Nlc3Nvci5n
ZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgncGVyZnJh
bWUtZGVmbGF0ZScsIHJlc3BvbnNlLm5hbWUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgw
LCBsZW4ocmVzcG9uc2UuZ2V0X3BhcmFtZXRlcnMoKSkpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKHByb2Nlc3Nvci5fcmZjMTk3OV9kZWZsYXRlci5fbm9fY29udGV4dF90YWtlb3ZlcikKLQot
ICAgIGRlZiB0ZXN0X29mZmVyX3dpdGhfbm9fY29udGV4dF90YWtlb3Zlcl93aXRoX3ZhbHVlKHNl
bGYpOgotICAgICAgICBwYXJhbWV0ZXIgPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKCdwZXJm
cmFtZS1kZWZsYXRlJykKLSAgICAgICAgcGFyYW1ldGVyLmFkZF9wYXJhbWV0ZXIoJ25vX2NvbnRl
eHRfdGFrZW92ZXInLCAnZm9vYmFyJykKLSAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5E
ZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IocGFyYW1ldGVyKQotCi0gICAgICAgIHNlbGYu
YXNzZXJ0SXNOb25lKHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkpCi0KLSAgICBk
ZWYgdGVzdF9vZmZlcl93aXRoX3Vua25vd25fcGFyYW1ldGVyKHNlbGYpOgotICAgICAgICBwYXJh
bWV0ZXIgPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKCdwZXJmcmFtZS1kZWZsYXRlJykKLSAg
ICAgICAgcGFyYW1ldGVyLmFkZF9wYXJhbWV0ZXIoJ2ZvbycsICdiYXInKQotICAgICAgICBwcm9j
ZXNzb3IgPSBleHRlbnNpb25zLkRlZmxhdGVGcmFtZUV4dGVuc2lvblByb2Nlc3NvcihwYXJhbWV0
ZXIpCi0KLSAgICAgICAgcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25z
ZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3BlcmZyYW1lLWRlZmxhdGUnLCByZXNwb25z
ZS5uYW1lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgbGVuKHJlc3BvbnNlLmdldF9w
YXJhbWV0ZXJzKCkpKQotCi0KLWNsYXNzIFBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vz
c29yUGFyc2luZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIkEgdW5pdHRlc3QgZm9y
IGNoZWNraW5nIHRoYXQgUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IgcGFyc2Vz
Ci0gICAgZ2l2ZW4gZXh0ZW5zaW9uIHBhcmFtZXRlciBjb3JyZWN0bHkuCi0gICAgIiIiCi0KLSAg
ICBkZWYgdGVzdF9yZWdpc3RyeShzZWxmKToKLSAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9u
cy5nZXRfZXh0ZW5zaW9uX3Byb2Nlc3NvcigKLSAgICAgICAgICAgICAgICBjb21tb24uRXh0ZW5z
aW9uUGFyYW1ldGVyKCdwZXJtZXNzYWdlLWRlZmxhdGUnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJ
c0luc3RhbmNlKHByb2Nlc3NvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVu
c2lvbnMuUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IpCi0KLSAgICBkZWYgdGVz
dF9taW5pbWFsX29mZmVyKHNlbGYpOgotICAgICAgICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLlBl
ck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKAotICAgICAgICAgICAgY29tbW9uLkV4
dGVuc2lvblBhcmFtZXRlcigncGVybWVzc2FnZS1kZWZsYXRlJykpCi0KLSAgICAgICAgcmVzcG9u
c2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScsIHJlc3BvbnNlLm5hbWUoKSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgwLCBsZW4ocmVzcG9uc2UuZ2V0X3BhcmFtZXRlcnMoKSkpCi0KLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6bGliLk1BWF9XQklUUywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICBwcm9jZXNzb3IuX3JmYzE5NzlfZGVmbGF0ZXIuX3dpbmRvd19iaXRzKQotICAgICAg
ICBzZWxmLmFzc2VydEZhbHNlKHByb2Nlc3Nvci5fcmZjMTk3OV9kZWZsYXRlci5fbm9fY29udGV4
dF90YWtlb3ZlcikKLQotICAgIGRlZiB0ZXN0X29mZmVyX3dpdGhfbWF4X3dpbmRvd19iaXRzKHNl
bGYpOgotICAgICAgICBwYXJhbWV0ZXIgPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKCdwZXJt
ZXNzYWdlLWRlZmxhdGUnKQotICAgICAgICBwYXJhbWV0ZXIuYWRkX3BhcmFtZXRlcignc2VydmVy
X21heF93aW5kb3dfYml0cycsICcxMCcpCi0gICAgICAgIHByb2Nlc3NvciA9IGV4dGVuc2lvbnMu
UGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IocGFyYW1ldGVyKQotCi0gICAgICAg
IHJlc3BvbnNlID0gcHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCdwZXJtZXNzYWdlLWRlZmxhdGUnLCByZXNwb25zZS5uYW1lKCkpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWygnc2VydmVyX21heF93aW5kb3dfYml0cycsICcxMCcp
XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5nZXRfcGFyYW1ldGVycygpKQot
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTAsIHByb2Nlc3Nvci5fcmZjMTk3OV9kZWZsYXRl
ci5fd2luZG93X2JpdHMpCi0KLSAgICBkZWYgdGVzdF9vZmZlcl93aXRoX291dF9vZl9yYW5nZV9t
YXhfd2luZG93X2JpdHMoc2VsZik6Ci0gICAgICAgIHBhcmFtZXRlciA9IGNvbW1vbi5FeHRlbnNp
b25QYXJhbWV0ZXIoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScpCi0gICAgICAgIHBhcmFtZXRlci5hZGRf
cGFyYW1ldGVyKCdzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzJywgJzAnKQotICAgICAgICBwcm9jZXNz
b3IgPSBleHRlbnNpb25zLlBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKHBhcmFt
ZXRlcikKLQotICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwcm9jZXNzb3IuZ2V0X2V4dGVuc2lv
bl9yZXNwb25zZSgpKQotCi0gICAgZGVmIHRlc3Rfb2ZmZXJfd2l0aF9tYXhfd2luZG93X2JpdHNf
d2l0aG91dF92YWx1ZShzZWxmKToKLSAgICAgICAgcGFyYW1ldGVyID0gY29tbW9uLkV4dGVuc2lv
blBhcmFtZXRlcigncGVybWVzc2FnZS1kZWZsYXRlJykKLSAgICAgICAgcGFyYW1ldGVyLmFkZF9w
YXJhbWV0ZXIoJ3NlcnZlcl9tYXhfd2luZG93X2JpdHMnLCBOb25lKQotICAgICAgICBwcm9jZXNz
b3IgPSBleHRlbnNpb25zLlBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKHBhcmFt
ZXRlcikKLQotICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwcm9jZXNzb3IuZ2V0X2V4dGVuc2lv
bl9yZXNwb25zZSgpKQotCi0gICAgZGVmIHRlc3Rfb2ZmZXJfd2l0aF9ub19jb250ZXh0X3Rha2Vv
dmVyKHNlbGYpOgotICAgICAgICBwYXJhbWV0ZXIgPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVy
KCdwZXJtZXNzYWdlLWRlZmxhdGUnKQotICAgICAgICBwYXJhbWV0ZXIuYWRkX3BhcmFtZXRlcign
c2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXInLCBOb25lKQotICAgICAgICBwcm9jZXNzb3IgPSBl
eHRlbnNpb25zLlBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKHBhcmFtZXRlcikK
LQotICAgICAgICByZXNwb25zZSA9IHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgncGVybWVzc2FnZS1kZWZsYXRlJywgcmVzcG9uc2Uu
bmFtZSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsoJ3NlcnZlcl9ub19jb250ZXh0X3Rh
a2VvdmVyJywgTm9uZSldLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmdldF9w
YXJhbWV0ZXJzKCkpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHByb2Nlc3Nvci5fcmZjMTk3
OV9kZWZsYXRlci5fbm9fY29udGV4dF90YWtlb3ZlcikKLQotICAgIGRlZiB0ZXN0X29mZmVyX3dp
dGhfbm9fY29udGV4dF90YWtlb3Zlcl93aXRoX3ZhbHVlKHNlbGYpOgotICAgICAgICBwYXJhbWV0
ZXIgPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKCdwZXJtZXNzYWdlLWRlZmxhdGUnKQotICAg
ICAgICBwYXJhbWV0ZXIuYWRkX3BhcmFtZXRlcignc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXIn
LCAnZm9vYmFyJykKLSAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5QZXJNZXNzYWdlRGVm
bGF0ZUV4dGVuc2lvblByb2Nlc3NvcihwYXJhbWV0ZXIpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRJ
c05vbmUocHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoKSkKLQotICAgIGRlZiB0ZXN0
X29mZmVyX3dpdGhfdW5rbm93bl9wYXJhbWV0ZXIoc2VsZik6Ci0gICAgICAgIHBhcmFtZXRlciA9
IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScpCi0gICAgICAg
IHBhcmFtZXRlci5hZGRfcGFyYW1ldGVyKCdmb28nLCAnYmFyJykKLSAgICAgICAgcHJvY2Vzc29y
ID0gZXh0ZW5zaW9ucy5QZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcihwYXJhbWV0
ZXIpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocHJvY2Vzc29yLmdldF9leHRlbnNpb25f
cmVzcG9uc2UoKSkKLQotCi1jbGFzcyBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3Nv
ckJ1aWxkaW5nVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiQSB1bml0dGVzdCBmb3Ig
Y2hlY2tpbmcgdGhhdCBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvciBidWlsZHMK
LSAgICBhIHJlc3BvbnNlIGJhc2VkIG9uIHNwZWNpZmllZCBvcHRpb25zIGNvcnJlY3RseS4KLSAg
ICAiIiIKLQotICAgIGRlZiB0ZXN0X3Jlc3BvbnNlX3dpdGhfbWF4X3dpbmRvd19iaXRzKHNlbGYp
OgotICAgICAgICBwYXJhbWV0ZXIgPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKCdwZXJtZXNz
YWdlLWRlZmxhdGUnKQotICAgICAgICBwYXJhbWV0ZXIuYWRkX3BhcmFtZXRlcignY2xpZW50X21h
eF93aW5kb3dfYml0cycsIE5vbmUpCi0gICAgICAgIHByb2Nlc3NvciA9IGV4dGVuc2lvbnMuUGVy
TWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IocGFyYW1ldGVyKQotICAgICAgICBwcm9j
ZXNzb3Iuc2V0X2NsaWVudF9tYXhfd2luZG93X2JpdHMoMTApCi0KLSAgICAgICAgcmVzcG9uc2Ug
PSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScsIHJlc3BvbnNlLm5hbWUoKSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChbKCdjbGllbnRfbWF4X3dpbmRvd19iaXRzJywgJzEwJyldLAotICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmdldF9wYXJhbWV0ZXJzKCkpCi0KLSAgICBkZWYg
dGVzdF9yZXNwb25zZV93aXRoX21heF93aW5kb3dfYml0c193aXRob3V0X2NsaWVudF9wZXJtaXNz
aW9uKHNlbGYpOgotICAgICAgICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLlBlck1lc3NhZ2VEZWZs
YXRlRXh0ZW5zaW9uUHJvY2Vzc29yKAotICAgICAgICAgICAgY29tbW9uLkV4dGVuc2lvblBhcmFt
ZXRlcigncGVybWVzc2FnZS1kZWZsYXRlJykpCi0gICAgICAgIHByb2Nlc3Nvci5zZXRfY2xpZW50
X21heF93aW5kb3dfYml0cygxMCkKLQotICAgICAgICByZXNwb25zZSA9IHByb2Nlc3Nvci5nZXRf
ZXh0ZW5zaW9uX3Jlc3BvbnNlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmVzcG9uc2Up
Ci0KLSAgICBkZWYgdGVzdF9yZXNwb25zZV93aXRoX3RydWVfZm9yX25vX2NvbnRleHRfdGFrZW92
ZXIoc2VsZik6Ci0gICAgICAgIHByb2Nlc3NvciA9IGV4dGVuc2lvbnMuUGVyTWVzc2FnZURlZmxh
dGVFeHRlbnNpb25Qcm9jZXNzb3IoCi0gICAgICAgICAgICBjb21tb24uRXh0ZW5zaW9uUGFyYW1l
dGVyKCdwZXJtZXNzYWdlLWRlZmxhdGUnKSkKLQotICAgICAgICBwcm9jZXNzb3Iuc2V0X2NsaWVu
dF9ub19jb250ZXh0X3Rha2VvdmVyKFRydWUpCi0KLSAgICAgICAgcmVzcG9uc2UgPSBwcm9jZXNz
b3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3Bl
cm1lc3NhZ2UtZGVmbGF0ZScsIHJlc3BvbnNlLm5hbWUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChbKCdjbGllbnRfbm9fY29udGV4dF90YWtlb3ZlcicsIE5vbmUpXSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICByZXNwb25zZS5nZXRfcGFyYW1ldGVycygpKQotCi0gICAgZGVmIHRlc3Rf
cmVzcG9uc2Vfd2l0aF9mYWxzZV9mb3Jfbm9fY29udGV4dF90YWtlb3ZlcihzZWxmKToKLSAgICAg
ICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5QZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nl
c3NvcigKLSAgICAgICAgICAgIGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3Blcm1lc3NhZ2Ut
ZGVmbGF0ZScpKQotCi0gICAgICAgIHByb2Nlc3Nvci5zZXRfY2xpZW50X25vX2NvbnRleHRfdGFr
ZW92ZXIoRmFsc2UpCi0KLSAgICAgICAgcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lv
bl9yZXNwb25zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3Blcm1lc3NhZ2UtZGVmbGF0
ZScsIHJlc3BvbnNlLm5hbWUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBsZW4ocmVz
cG9uc2UuZ2V0X3BhcmFtZXRlcnMoKSkpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoK
LSAgICB1bml0dGVzdC5tYWluKCkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvdGVzdC90ZXN0X2hhbmRzaGFrZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X2hhbmRzaGFrZS5w
eQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWE3OGFjMDVlNTg3MWQxNTlhNjdmN2U0
MTZmMzAyNzAwZmEwZjkyNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9oYW5kc2hha2UucHkKKysrIC9kZXYvbnVsbApAQCAtMSwx
ODggKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDEyLCBH
b29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
Ci0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQot
Ci0iIiJUZXN0cyBmb3IgaGFuZHNoYWtlLl9iYXNlIG1vZHVsZS4iIiIKLQotCi1pbXBvcnQgdW5p
dHRlc3QKLQotaW1wb3J0IHNldF9zeXNfcGF0aCAgIyBVcGRhdGUgc3lzLnBhdGggdG8gbG9jYXRl
IG1vZF9weXdlYnNvY2tldCBtb2R1bGUuCi0KLWZyb20gbW9kX3B5d2Vic29ja2V0LmNvbW1vbiBp
bXBvcnQgRXh0ZW5zaW9uUGFyYW1ldGVyCi1mcm9tIG1vZF9weXdlYnNvY2tldC5jb21tb24gaW1w
b3J0IEV4dGVuc2lvblBhcnNpbmdFeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0LmNvbW1v
biBpbXBvcnQgZm9ybWF0X2V4dGVuc2lvbnMKLWZyb20gbW9kX3B5d2Vic29ja2V0LmNvbW1vbiBp
bXBvcnQgcGFyc2VfZXh0ZW5zaW9ucwotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9i
YXNlIGltcG9ydCBIYW5kc2hha2VFeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRz
aGFrZS5fYmFzZSBpbXBvcnQgdmFsaWRhdGVfc3VicHJvdG9jb2wKLQotCi1jbGFzcyBWYWxpZGF0
ZVN1YnByb3RvY29sVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiQSB1bml0dGVzdCBm
b3IgdmFsaWRhdGVfc3VicHJvdG9jb2wgbWV0aG9kLiIiIgotCi0gICAgZGVmIHRlc3RfdmFsaWRh
dGVfc3VicHJvdG9jb2woc2VsZik6Ci0gICAgICAgICMgU2hvdWxkIHN1Y2NlZWQuCi0gICAgICAg
IHZhbGlkYXRlX3N1YnByb3RvY29sKCdzYW1wbGUnKQotICAgICAgICB2YWxpZGF0ZV9zdWJwcm90
b2NvbCgnU2FtcGxlJykKLSAgICAgICAgdmFsaWRhdGVfc3VicHJvdG9jb2woJ3NhbXBsZVx4N2Vw
cm90b2NvbCcpCi0KLSAgICAgICAgIyBTaG91bGQgZmFpbC4KLSAgICAgICAgc2VsZi5hc3NlcnRS
YWlzZXMoSGFuZHNoYWtlRXhjZXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxp
ZGF0ZV9zdWJwcm90b2NvbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJycpCi0gICAgICAg
IHNlbGYuYXNzZXJ0UmFpc2VzKEhhbmRzaGFrZUV4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFsaWRhdGVfc3VicHJvdG9jb2wsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICdzYW1wbGVceDA5cHJvdG9jb2wnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhIYW5kc2hh
a2VFeGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlX3N1YnByb3Rv
Y29sLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnc2FtcGxlXHgxOXByb3RvY29sJykKLSAg
ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSGFuZHNoYWtlRXhjZXB0aW9uLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICB2YWxpZGF0ZV9zdWJwcm90b2NvbCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ3NhbXBsZVx4MjBwcm90b2NvbCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEhh
bmRzaGFrZUV4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVfc3Vi
cHJvdG9jb2wsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdzYW1wbGVceDdmcHJvdG9jb2wn
KQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhIYW5kc2hha2VFeGNlcHRpb24sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlX3N1YnByb3RvY29sLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAjICJKYXBhbiIgaW4gSmFwYW5lc2UKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgdSdcdTY1ZTVcdTY3MmMnKQotCi0KLV9URVNUX1RPS0VOX0VYVEVOU0lPTl9EQVRBID0gWwot
ICAgICgnZm9vJywgWygnZm9vJywgW10pXSksCi0gICAgKCdmb287IGJhcicsIFsoJ2ZvbycsIFso
J2JhcicsIE5vbmUpXSldKSwKLSAgICAoJ2ZvbzsgYmFyPWJheicsIFsoJ2ZvbycsIFsoJ2Jhcics
ICdiYXonKV0pXSksCi0gICAgKCdmb287IGJhcj1iYXo7IGNhcj1jZHInLCBbKCdmb28nLCBbKCdi
YXInLCAnYmF6JyksICgnY2FyJywgJ2NkcicpXSldKSwKLSAgICAoJ2ZvbzsgYmFyPWJheiwgY2Fy
OyBjZHInLAotICAgICBbKCdmb28nLCBbKCdiYXInLCAnYmF6JyldKSwgKCdjYXInLCBbKCdjZHIn
LCBOb25lKV0pXSksCi0gICAgKCdhLCBiLCBjLCBkJywKLSAgICAgWygnYScsIFtdKSwgKCdiJywg
W10pLCAoJ2MnLCBbXSksICgnZCcsIFtdKV0pLAotICAgIF0KLQotCi1fVEVTVF9RVU9URURfRVhU
RU5TSU9OX0RBVEEgPSBbCi0gICAgKCdmb287IGJhcj0iIicsIFsoJ2ZvbycsIFsoJ2JhcicsICcn
KV0pXSksCi0gICAgKCdmb287IGJhcj0iIGJheiAiJywgWygnZm9vJywgWygnYmFyJywgJyBiYXog
JyldKV0pLAotICAgICgnZm9vOyBiYXI9IixiYXo7IicsIFsoJ2ZvbycsIFsoJ2JhcicsICcsYmF6
OycpXSldKSwKLSAgICAoJ2ZvbzsgYmFyPSJcXFxyXFxcbmJheiInLCBbKCdmb28nLCBbKCdiYXIn
LCAnXHJcbmJheicpXSldKSwKLSAgICAoJ2ZvbzsgYmFyPSJcXCJiYXoiJywgWygnZm9vJywgWygn
YmFyJywgJyJiYXonKV0pXSksCi0gICAgKCdmb287IGJhcj0iXHhiYmJheiInLCBbKCdmb28nLCBb
KCdiYXInLCAnXHhiYmJheicpXSldKSwKLSAgICBdCi0KLQotX1RFU1RfUkVEVU5EQU5UX1RPS0VO
X0VYVEVOU0lPTl9EQVRBID0gWwotICAgICgnZm9vIFx0ICcsIFsoJ2ZvbycsIFtdKV0pLAotICAg
ICgnZm9vOyBcclxuIGJhcicsIFsoJ2ZvbycsIFsoJ2JhcicsIE5vbmUpXSldKSwKLSAgICAoJ2Zv
bzsgYmFyPVxyXG4gXHJcbiBiYXonLCBbKCdmb28nLCBbKCdiYXInLCAnYmF6JyldKV0pLAotICAg
ICgnZm9vIDtiYXIgPSBiYXogJywgWygnZm9vJywgWygnYmFyJywgJ2JheicpXSldKSwKLSAgICAo
J2ZvbyxiYXIsLGJheicsIFsoJ2ZvbycsIFtdKSwgKCdiYXInLCBbXSksICgnYmF6JywgW10pXSks
Ci0gICAgXQotCi0KLV9URVNUX1JFRFVOREFOVF9RVU9URURfRVhURU5TSU9OX0RBVEEgPSBbCi0g
ICAgKCdmb287IGJhcj0iXHJcbiBcclxuIGJheiInLCBbKCdmb28nLCBbKCdiYXInLCAnICBiYXon
KV0pXSksCi0gICAgXQotCi0KLWNsYXNzIEV4dGVuc2lvbnNQYXJzZXJUZXN0KHVuaXR0ZXN0LlRl
c3RDYXNlKToKLQotICAgIGRlZiBfdmVyaWZ5X2V4dGVuc2lvbl9saXN0KHNlbGYsIGV4cGVjdGVk
X2xpc3QsIGFjdHVhbF9saXN0KToKLSAgICAgICAgIiIiVmVyaWZpZXMgdGhhdCBFeHRlbnNpb25Q
YXJhbWV0ZXIgb2JqZWN0cyBpbiBhY3R1YWxfbGlzdCBoYXZlIHRoZQotICAgICAgICBzYW1lIG1l
bWJlcnMgYXMgZXh0ZW5zaW9uIGRlZmluaXRpb25zIGluIGV4cGVjdGVkX2xpc3QuIEV4dGVuc2lv
bgotICAgICAgICBkZWZpbml0aW9uIHVzZWQgaW4gdGhpcyB0ZXN0IGlzIGEgcGFpciBvZiBhbiBl
eHRlbnNpb24gbmFtZSBhbmQgYQotICAgICAgICBwYXJhbWV0ZXIgZGljdGlvbmFyeS4KLSAgICAg
ICAgIiIiCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZXhwZWN0ZWRfbGlzdCksIGxl
bihhY3R1YWxfbGlzdCkpCi0gICAgICAgIGZvciBleHBlY3RlZCwgYWN0dWFsIGluIHppcChleHBl
Y3RlZF9saXN0LCBhY3R1YWxfbGlzdCk6Ci0gICAgICAgICAgICAobmFtZSwgcGFyYW1ldGVycykg
PSBleHBlY3RlZAotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lLCBhY3R1YWwuX25h
bWUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcmFtZXRlcnMsIGFjdHVhbC5fcGFy
YW1ldGVycykKLQotICAgIGRlZiB0ZXN0X3BhcnNlKHNlbGYpOgotICAgICAgICBmb3IgZm9ybWF0
dGVkX3N0cmluZywgZGVmaW5pdGlvbiBpbiBfVEVTVF9UT0tFTl9FWFRFTlNJT05fREFUQToKLSAg
ICAgICAgICAgIHNlbGYuX3ZlcmlmeV9leHRlbnNpb25fbGlzdCgKLSAgICAgICAgICAgICAgICBk
ZWZpbml0aW9uLCBwYXJzZV9leHRlbnNpb25zKGZvcm1hdHRlZF9zdHJpbmcpKQotCi0gICAgZGVm
IHRlc3RfcGFyc2VfcXVvdGVkX2RhdGEoc2VsZik6Ci0gICAgICAgIGZvciBmb3JtYXR0ZWRfc3Ry
aW5nLCBkZWZpbml0aW9uIGluIF9URVNUX1FVT1RFRF9FWFRFTlNJT05fREFUQToKLSAgICAgICAg
ICAgIHNlbGYuX3ZlcmlmeV9leHRlbnNpb25fbGlzdCgKLSAgICAgICAgICAgICAgICBkZWZpbml0
aW9uLCBwYXJzZV9leHRlbnNpb25zKGZvcm1hdHRlZF9zdHJpbmcpKQotCi0gICAgZGVmIHRlc3Rf
cGFyc2VfcmVkdW5kYW50X2RhdGEoc2VsZik6Ci0gICAgICAgIGZvciAoZm9ybWF0dGVkX3N0cmlu
ZywKLSAgICAgICAgICAgICBkZWZpbml0aW9uKSBpbiBfVEVTVF9SRURVTkRBTlRfVE9LRU5fRVhU
RU5TSU9OX0RBVEE6Ci0gICAgICAgICAgICBzZWxmLl92ZXJpZnlfZXh0ZW5zaW9uX2xpc3QoCi0g
ICAgICAgICAgICAgICAgZGVmaW5pdGlvbiwgcGFyc2VfZXh0ZW5zaW9ucyhmb3JtYXR0ZWRfc3Ry
aW5nKSkKLQotICAgIGRlZiB0ZXN0X3BhcnNlX3JlZHVuZGFudF9xdW90ZWRfZGF0YShzZWxmKToK
LSAgICAgICAgZm9yIChmb3JtYXR0ZWRfc3RyaW5nLAotICAgICAgICAgICAgIGRlZmluaXRpb24p
IGluIF9URVNUX1JFRFVOREFOVF9RVU9URURfRVhURU5TSU9OX0RBVEE6Ci0gICAgICAgICAgICBz
ZWxmLl92ZXJpZnlfZXh0ZW5zaW9uX2xpc3QoCi0gICAgICAgICAgICAgICAgZGVmaW5pdGlvbiwg
cGFyc2VfZXh0ZW5zaW9ucyhmb3JtYXR0ZWRfc3RyaW5nKSkKLQotICAgIGRlZiB0ZXN0X3BhcnNl
X2JhZF9kYXRhKHNlbGYpOgotICAgICAgICBfVEVTVF9CQURfRVhURU5TSU9OX0RBVEEgPSBbCi0g
ICAgICAgICAgICAoJ2ZvbzsgOyAnKSwKLSAgICAgICAgICAgICgnZm9vOyBhIGEnKSwKLSAgICAg
ICAgICAgICgnZm9vIGZvbycpLAotICAgICAgICAgICAgKCcsLCwnKSwKLSAgICAgICAgICAgICgn
Zm9vOyBiYXI9JyksCi0gICAgICAgICAgICAoJ2ZvbzsgYmFyPSJob2dlJyksCi0gICAgICAgICAg
ICAoJ2ZvbzsgYmFyPSJhXHIiJyksCi0gICAgICAgICAgICAoJ2ZvbzsgYmFyPSJcXFx4ZmYiJyks
Ci0gICAgICAgICAgICAoJ2ZvbzsgYmFyPVxyYScpLAotICAgICAgICAgICAgXQotCi0gICAgICAg
IGZvciBmb3JtYXR0ZWRfc3RyaW5nIGluIF9URVNUX0JBRF9FWFRFTlNJT05fREFUQToKLSAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAotICAgICAgICAgICAgICAgIEV4dGVuc2lvblBhcnNp
bmdFeGNlcHRpb24sIHBhcnNlX2V4dGVuc2lvbnMsIGZvcm1hdHRlZF9zdHJpbmcpCi0KLQotY2xh
c3MgRm9ybWF0RXh0ZW5zaW9uc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotCi0gICAgZGVmIHRl
c3RfZm9ybWF0X2V4dGVuc2lvbnMoc2VsZik6Ci0gICAgICAgIGZvciBmb3JtYXR0ZWRfc3RyaW5n
LCBkZWZpbml0aW9ucyBpbiBfVEVTVF9UT0tFTl9FWFRFTlNJT05fREFUQToKLSAgICAgICAgICAg
IGV4dGVuc2lvbnMgPSBbXQotICAgICAgICAgICAgZm9yIGRlZmluaXRpb24gaW4gZGVmaW5pdGlv
bnM6Ci0gICAgICAgICAgICAgICAgKG5hbWUsIHBhcmFtZXRlcnMpID0gZGVmaW5pdGlvbgotICAg
ICAgICAgICAgICAgIGV4dGVuc2lvbiA9IEV4dGVuc2lvblBhcmFtZXRlcihuYW1lKQotICAgICAg
ICAgICAgICAgIGV4dGVuc2lvbi5fcGFyYW1ldGVycyA9IHBhcmFtZXRlcnMKLSAgICAgICAgICAg
ICAgICBleHRlbnNpb25zLmFwcGVuZChleHRlbnNpb24pCi0gICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKAotICAgICAgICAgICAgICAgIGZvcm1hdHRlZF9zdHJpbmcsIGZvcm1hdF9leHRlbnNp
b25zKGV4dGVuc2lvbnMpKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdW5p
dHRlc3QubWFpbigpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rl
c3QvdGVzdF9oYW5kc2hha2VfaHliaS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X2hhbmRzaGFrZV9oeWJp
LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMGFhZjY0MGE1ODhlMmIwNDJmMzJh
OWM2NmEzNjk3YWQ0ZGQxMGJlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X2hhbmRzaGFrZV9oeWJpLnB5CisrKyAvZGV2L251bGwK
QEAgLTEsNTIxICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQg
MjAxMSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0KLQotIiIiVGVzdHMgZm9yIGhhbmRzaGFrZSBtb2R1bGUuIiIiCi0KLQotaW1wb3J0IHVu
aXR0ZXN0Ci0KLWltcG9ydCBzZXRfc3lzX3BhdGggICMgVXBkYXRlIHN5cy5wYXRoIHRvIGxvY2F0
ZSBtb2RfcHl3ZWJzb2NrZXQgbW9kdWxlLgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNv
bW1vbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBBYm9ydGVk
QnlVc2VyRXhjZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1w
b3J0IEhhbmRzaGFrZUV4Y2VwdGlvbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9i
YXNlIGltcG9ydCBWZXJzaW9uRXhjZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hh
a2UuaHliaSBpbXBvcnQgSGFuZHNoYWtlcgotCi1pbXBvcnQgbW9jawotCi0KLWNsYXNzIFJlcXVl
c3REZWZpbml0aW9uKG9iamVjdCk6Ci0gICAgIiIiQSBjbGFzcyBmb3IgaG9sZGluZyBkYXRhIGZv
ciBjb25zdHJ1Y3Rpbmcgb3BlbmluZyBoYW5kc2hha2Ugc3RyaW5ncyBmb3IKLSAgICB0ZXN0aW5n
IHRoZSBvcGVuaW5nIGhhbmRzaGFrZSBwcm9jZXNzb3IuCi0gICAgIiIiCi0KLSAgICBkZWYgX19p
bml0X18oc2VsZiwgbWV0aG9kLCB1cmksIGhlYWRlcnMpOgotICAgICAgICBzZWxmLm1ldGhvZCA9
IG1ldGhvZAotICAgICAgICBzZWxmLnVyaSA9IHVyaQotICAgICAgICBzZWxmLmhlYWRlcnMgPSBo
ZWFkZXJzCi0KLQotZGVmIF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpOgotICAgIHJldHVybiBS
ZXF1ZXN0RGVmaW5pdGlvbigKLSAgICAgICAgJ0dFVCcsICcvZGVtbycsCi0gICAgICAgIHsnSG9z
dCc6ICdzZXJ2ZXIuZXhhbXBsZS5jb20nLAotICAgICAgICAgJ1VwZ3JhZGUnOiAnd2Vic29ja2V0
JywKLSAgICAgICAgICdDb25uZWN0aW9uJzogJ1VwZ3JhZGUnLAotICAgICAgICAgJ1NlYy1XZWJT
b2NrZXQtS2V5JzogJ2RHaGxJSE5oYlhCc1pTQnViMjVqWlE9PScsCi0gICAgICAgICAnU2VjLVdl
YlNvY2tldC1WZXJzaW9uJzogJzEzJywKLSAgICAgICAgICdPcmlnaW4nOiAnaHR0cDovL2V4YW1w
bGUuY29tJ30pCi0KLQotZGVmIF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZik6Ci0gICAgY29u
biA9IG1vY2suTW9ja0Nvbm4oJycpCi0gICAgcmV0dXJuIG1vY2suTW9ja1JlcXVlc3QoCi0gICAg
ICAgIG1ldGhvZD1yZXF1ZXN0X2RlZi5tZXRob2QsCi0gICAgICAgIHVyaT1yZXF1ZXN0X2RlZi51
cmksCi0gICAgICAgIGhlYWRlcnNfaW49cmVxdWVzdF9kZWYuaGVhZGVycywKLSAgICAgICAgY29u
bmVjdGlvbj1jb25uKQotCi0KLWRlZiBfY3JlYXRlX2hhbmRzaGFrZXIocmVxdWVzdCk6Ci0gICAg
aGFuZHNoYWtlciA9IEhhbmRzaGFrZXIocmVxdWVzdCwgbW9jay5Nb2NrRGlzcGF0Y2hlcigpKQot
ICAgIHJldHVybiBoYW5kc2hha2VyCi0KLQotY2xhc3MgU3VicHJvdG9jb2xDaG9vc2luZ0Rpc3Bh
dGNoZXIob2JqZWN0KToKLSAgICAiIiJBIGRpc3BhdGNoZXIgZm9yIHRlc3RpbmcuIFRoaXMgZGlz
cGF0Y2hlciBzZXRzIHRoZSBpLXRoIHN1YnByb3RvY29sCi0gICAgb2YgcmVxdWVzdGVkIG9uZXMg
dG8gd3NfcHJvdG9jb2wgd2hlcmUgaSBpcyBnaXZlbiBvbiBjb25zdHJ1Y3Rpb24gYXMgaW5kZXgK
LSAgICBhcmd1bWVudC4gSWYgaW5kZXggaXMgbmVnYXRpdmUsIGRlZmF1bHRfdmFsdWUgd2lsbCBi
ZSBzZXQgdG8gd3NfcHJvdG9jb2wuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwg
aW5kZXgsIGRlZmF1bHRfdmFsdWU9Tm9uZSk6Ci0gICAgICAgIHNlbGYuaW5kZXggPSBpbmRleAot
ICAgICAgICBzZWxmLmRlZmF1bHRfdmFsdWUgPSBkZWZhdWx0X3ZhbHVlCi0KLSAgICBkZWYgZG9f
ZXh0cmFfaGFuZHNoYWtlKHNlbGYsIGNvbm5fY29udGV4dCk6Ci0gICAgICAgIGlmIHNlbGYuaW5k
ZXggPj0gMDoKLSAgICAgICAgICAgIGNvbm5fY29udGV4dC53c19wcm90b2NvbCA9IGNvbm5fY29u
dGV4dC53c19yZXF1ZXN0ZWRfcHJvdG9jb2xzWwotICAgICAgICAgICAgICAgIHNlbGYuaW5kZXhd
Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjb25uX2NvbnRleHQud3NfcHJvdG9jb2wgPSBz
ZWxmLmRlZmF1bHRfdmFsdWUKLQotICAgIGRlZiB0cmFuc2Zlcl9kYXRhKHNlbGYsIGNvbm5fY29u
dGV4dCk6Ci0gICAgICAgIHBhc3MKLQotCi1jbGFzcyBIYW5kc2hha2VBYm9ydGVkRXhjZXB0aW9u
KEV4Y2VwdGlvbik6Ci0gICAgcGFzcwotCi0KLWNsYXNzIEFib3J0aW5nRGlzcGF0Y2hlcihvYmpl
Y3QpOgotICAgICIiIkEgZGlzcGF0Y2hlciBmb3IgdGVzdGluZy4gVGhpcyBkaXNwYXRjaGVyIHJh
aXNlcyBhbiBleGNlcHRpb24gaW4KLSAgICBkb19leHRyYV9oYW5kc2hha2UgdG8gcmVqZWN0IHRo
ZSByZXF1ZXN0LgotICAgICIiIgotCi0gICAgZGVmIGRvX2V4dHJhX2hhbmRzaGFrZShzZWxmLCBj
b25uX2NvbnRleHQpOgotICAgICAgICByYWlzZSBIYW5kc2hha2VBYm9ydGVkRXhjZXB0aW9uKCdB
biBleGNlcHRpb24gdG8gcmVqZWN0IHRoZSByZXF1ZXN0JykKLQotICAgIGRlZiB0cmFuc2Zlcl9k
YXRhKHNlbGYsIGNvbm5fY29udGV4dCk6Ci0gICAgICAgIHBhc3MKLQotCi1jbGFzcyBBYm9ydGVk
QnlVc2VyRGlzcGF0Y2hlcihvYmplY3QpOgotICAgICIiIkEgZGlzcGF0Y2hlciBmb3IgdGVzdGlu
Zy4gVGhpcyBkaXNwYXRjaGVyIHJhaXNlcyBhbgotICAgIEFib3J0ZWRCeVVzZXJFeGNlcHRpb24g
aW4gZG9fZXh0cmFfaGFuZHNoYWtlIHRvIHJlamVjdCB0aGUgcmVxdWVzdC4KLSAgICAiIiIKLQot
ICAgIGRlZiBkb19leHRyYV9oYW5kc2hha2Uoc2VsZiwgY29ubl9jb250ZXh0KToKLSAgICAgICAg
cmFpc2UgQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbignQW4gQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbiB0
byByZWplY3QgdGhlICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVx
dWVzdCcpCi0KLSAgICBkZWYgdHJhbnNmZXJfZGF0YShzZWxmLCBjb25uX2NvbnRleHQpOgotICAg
ICAgICBwYXNzCi0KLQotX0VYUEVDVEVEX1JFU1BPTlNFID0gKAotICAgICdIVFRQLzEuMSAxMDEg
U3dpdGNoaW5nIFByb3RvY29sc1xyXG4nCi0gICAgJ1VwZ3JhZGU6IHdlYnNvY2tldFxyXG4nCi0g
ICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJwotICAgICdTZWMtV2ViU29ja2V0LUFjY2VwdDog
czNwUExNQmlUeGFROWtZR3p6aFpSYksreE9vPVxyXG5cclxuJykKLQotCi1jbGFzcyBIYW5kc2hh
a2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiQSB1bml0dGVzdCBmb3IgZHJhZnQt
aWV0Zi1oeWJpLXRoZXdlYnNvY2tldHByb3RvY29sLTA2IGFuZCBsYXRlcgotICAgIGhhbmRzaGFr
ZSBwcm9jZXNzb3IuCi0gICAgIiIiCi0KLSAgICBkZWYgdGVzdF9kb19oYW5kc2hha2Uoc2VsZik6
Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoX2NyZWF0ZV9nb29kX3JlcXVlc3Rf
ZGVmKCkpCi0gICAgICAgIGRpc3BhdGNoZXIgPSBtb2NrLk1vY2tEaXNwYXRjaGVyKCkKLSAgICAg
ICAgaGFuZHNoYWtlciA9IEhhbmRzaGFrZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAg
aGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkaXNw
YXRjaGVyLmRvX2V4dHJhX2hhbmRzaGFrZV9jYWxsZWQpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgKLSAgICAgICAgICAgIF9FWFBFQ1RFRF9SRVNQT05TRSwgcmVxdWVzdC5jb25uZWN0aW9u
LndyaXR0ZW5fZGF0YSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcvZGVtbycsIHJlcXVl
c3Qud3NfcmVzb3VyY2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2h0dHA6Ly9leGFtcGxl
LmNvbScsIHJlcXVlc3Qud3Nfb3JpZ2luKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUs
IHJlcXVlc3Qud3NfcHJvdG9jb2wpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgcmVx
dWVzdC53c19leHRlbnNpb25zKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1vbi5WRVJT
SU9OX0hZQklfTEFURVNULCByZXF1ZXN0LndzX3ZlcnNpb24pCi0KLSAgICBkZWYgdGVzdF9kb19o
YW5kc2hha2Vfd2l0aF9leHRyYV9oZWFkZXJzKHNlbGYpOgotICAgICAgICByZXF1ZXN0X2RlZiA9
IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCi0gICAgICAgICMgQWRkIGhlYWRlcnMgbm90IHJl
bGF0ZWQgdG8gV2ViU29ja2V0IG9wZW5pbmcgaGFuZHNoYWtlLgotICAgICAgICByZXF1ZXN0X2Rl
Zi5oZWFkZXJzWydGb29LZXknXSA9ICdCYXJWYWx1ZScKLSAgICAgICAgcmVxdWVzdF9kZWYuaGVh
ZGVyc1snRW1wdHlLZXknXSA9ICcnCi0KLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVz
dChyZXF1ZXN0X2RlZikKLSAgICAgICAgaGFuZHNoYWtlciA9IF9jcmVhdGVfaGFuZHNoYWtlcihy
ZXF1ZXN0KQotICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBfRVhQRUNURURfUkVTUE9OU0UsIHJlcXVlc3QuY29u
bmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAgIGRlZiB0ZXN0X2RvX2hhbmRzaGFrZV93aXRo
X2NhcGl0YWxpemVkX3ZhbHVlKHNlbGYpOgotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVf
Z29vZF9yZXF1ZXN0X2RlZigpCi0gICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ3VwZ3JhZGUn
XSA9ICdXRUJTT0NLRVQnCi0KLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1
ZXN0X2RlZikKLSAgICAgICAgaGFuZHNoYWtlciA9IF9jcmVhdGVfaGFuZHNoYWtlcihyZXF1ZXN0
KQotICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCi0gICAgICAgICAgICBfRVhQRUNURURfUkVTUE9OU0UsIHJlcXVlc3QuY29ubmVjdGlv
bi53cml0dGVuX2RhdGEoKSkKLQotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9y
ZXF1ZXN0X2RlZigpCi0gICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ0Nvbm5lY3Rpb24nXSA9
ICdVUEdSQURFJwotCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QocmVxdWVzdF9k
ZWYpCi0gICAgICAgIGhhbmRzaGFrZXIgPSBfY3JlYXRlX2hhbmRzaGFrZXIocmVxdWVzdCkKLSAg
ICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KAotICAgICAgICAgICAgX0VYUEVDVEVEX1JFU1BPTlNFLCByZXF1ZXN0LmNvbm5lY3Rpb24ud3Jp
dHRlbl9kYXRhKCkpCi0KLSAgICBkZWYgdGVzdF9kb19oYW5kc2hha2Vfd2l0aF9tdWx0aXBsZV9j
b25uZWN0aW9uX3ZhbHVlcyhzZWxmKToKLSAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dv
b2RfcmVxdWVzdF9kZWYoKQotICAgICAgICByZXF1ZXN0X2RlZi5oZWFkZXJzWydDb25uZWN0aW9u
J10gPSAnVXBncmFkZSwga2VlcC1hbGl2ZSwgLCAnCi0KLSAgICAgICAgcmVxdWVzdCA9IF9jcmVh
dGVfcmVxdWVzdChyZXF1ZXN0X2RlZikKLSAgICAgICAgaGFuZHNoYWtlciA9IF9jcmVhdGVfaGFu
ZHNoYWtlcihyZXF1ZXN0KQotICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBfRVhQRUNURURfUkVTUE9OU0UsIHJl
cXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAgIGRlZiB0ZXN0X2Fib3J0aW5n
X2hhbmRzaGFrZShzZWxmKToKLSAgICAgICAgaGFuZHNoYWtlciA9IEhhbmRzaGFrZXIoCi0gICAg
ICAgICAgICBfY3JlYXRlX3JlcXVlc3QoX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkpLAotICAg
ICAgICAgICAgQWJvcnRpbmdEaXNwYXRjaGVyKCkpCi0gICAgICAgICMgZG9fZXh0cmFfaGFuZHNo
YWtlIHJhaXNlcyBhbiBleGNlcHRpb24uIENoZWNrIHRoYXQgaXQncyBub3QgY2F1Z2h0IGJ5Ci0g
ICAgICAgICMgZG9faGFuZHNoYWtlLgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhIYW5kc2hh
a2VBYm9ydGVkRXhjZXB0aW9uLCBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSkKLQotICAgIGRlZiB0
ZXN0X2RvX2hhbmRzaGFrZV93aXRoX3Byb3RvY29sKHNlbGYpOgotICAgICAgICByZXF1ZXN0X2Rl
ZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCi0gICAgICAgIHJlcXVlc3RfZGVmLmhlYWRl
cnNbJ1NlYy1XZWJTb2NrZXQtUHJvdG9jb2wnXSA9ICdjaGF0LCBzdXBlcmNoYXQnCi0KLSAgICAg
ICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikKLSAgICAgICAgaGFuZHNo
YWtlciA9IEhhbmRzaGFrZXIocmVxdWVzdCwgU3VicHJvdG9jb2xDaG9vc2luZ0Rpc3BhdGNoZXIo
MCkpCi0gICAgICAgIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKCkKLQotICAgICAgICBFWFBFQ1RF
RF9SRVNQT05TRSA9ICgKLSAgICAgICAgICAgICdIVFRQLzEuMSAxMDEgU3dpdGNoaW5nIFByb3Rv
Y29sc1xyXG4nCi0gICAgICAgICAgICAnVXBncmFkZTogd2Vic29ja2V0XHJcbicKLSAgICAgICAg
ICAgICdDb25uZWN0aW9uOiBVcGdyYWRlXHJcbicKLSAgICAgICAgICAgICdTZWMtV2ViU29ja2V0
LUFjY2VwdDogczNwUExNQmlUeGFROWtZR3p6aFpSYksreE9vPVxyXG4nCi0gICAgICAgICAgICAn
U2VjLVdlYlNvY2tldC1Qcm90b2NvbDogY2hhdFxyXG5cclxuJykKLQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKEVYUEVDVEVEX1JFU1BPTlNFLCByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9k
YXRhKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2NoYXQnLCByZXF1ZXN0LndzX3Byb3Rv
Y29sKQotCi0gICAgZGVmIHRlc3RfZG9faGFuZHNoYWtlX3Byb3RvY29sX25vdF9pbl9yZXF1ZXN0
X2J1dF9pbl9yZXNwb25zZShzZWxmKToKLSAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dv
b2RfcmVxdWVzdF9kZWYoKQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KHJlcXVl
c3RfZGVmKQotICAgICAgICBoYW5kc2hha2VyID0gSGFuZHNoYWtlcigKLSAgICAgICAgICAgIHJl
cXVlc3QsIFN1YnByb3RvY29sQ2hvb3NpbmdEaXNwYXRjaGVyKC0xLCAnZm9vYmFyJykpCi0gICAg
ICAgICMgTm8gcmVxdWVzdCBoYXMgYmVlbiBtYWRlIGJ1dCB3c19wcm90b2NvbCBpcyBzZXQuIEhh
bmRzaGFrZUV4Y2VwdGlvbgotICAgICAgICAjIG11c3QgYmUgcmFpc2VkLgotICAgICAgICBzZWxm
LmFzc2VydFJhaXNlcyhIYW5kc2hha2VFeGNlcHRpb24sIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtl
KQotCi0gICAgZGVmIHRlc3RfZG9faGFuZHNoYWtlX3dpdGhfcHJvdG9jb2xfbm9fcHJvdG9jb2xf
c2VsZWN0aW9uKHNlbGYpOgotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1
ZXN0X2RlZigpCi0gICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJTb2NrZXQtUHJv
dG9jb2wnXSA9ICdjaGF0LCBzdXBlcmNoYXQnCi0KLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVf
cmVxdWVzdChyZXF1ZXN0X2RlZikKLSAgICAgICAgaGFuZHNoYWtlciA9IF9jcmVhdGVfaGFuZHNo
YWtlcihyZXF1ZXN0KQotICAgICAgICAjIHdzX3Byb3RvY29sIGlzIG5vdCBzZXQuIEhhbmRzaGFr
ZUV4Y2VwdGlvbiBtdXN0IGJlIHJhaXNlZC4KLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSGFu
ZHNoYWtlRXhjZXB0aW9uLCBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSkKLQotICAgIGRlZiB0ZXN0
X2RvX2hhbmRzaGFrZV93aXRoX2V4dGVuc2lvbnMoc2VsZik6Ci0gICAgICAgIHJlcXVlc3RfZGVm
ID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKLSAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVy
c1snU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zJ10gPSAoCi0gICAgICAgICAgICAncGVybWVzc2Fn
ZS1kZWZsYXRlOyBzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcicpCi0KLSAgICAgICAgRVhQRUNU
RURfUkVTUE9OU0UgPSAoCi0gICAgICAgICAgICAnSFRUUC8xLjEgMTAxIFN3aXRjaGluZyBQcm90
b2NvbHNcclxuJwotICAgICAgICAgICAgJ1VwZ3JhZGU6IHdlYnNvY2tldFxyXG4nCi0gICAgICAg
ICAgICAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nCi0gICAgICAgICAgICAnU2VjLVdlYlNvY2tl
dC1BY2NlcHQ6IHMzcFBMTUJpVHhhUTlrWUd6emhaUmJLK3hPbz1cclxuJwotICAgICAgICAgICAg
J1NlYy1XZWJTb2NrZXQtRXh0ZW5zaW9uczogJwotICAgICAgICAgICAgICAgICdwZXJtZXNzYWdl
LWRlZmxhdGU7IHNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyXHJcbicKLSAgICAgICAgICAgICdc
clxuJykKLQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KHJlcXVlc3RfZGVmKQot
ICAgICAgICBoYW5kc2hha2VyID0gX2NyZWF0ZV9oYW5kc2hha2VyKHJlcXVlc3QpCi0gICAgICAg
IGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFWFBF
Q1RFRF9SRVNQT05TRSwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihyZXF1ZXN0LndzX2V4dGVuc2lvbnMpKQotICAgICAg
ICBleHRlbnNpb24gPSByZXF1ZXN0LndzX2V4dGVuc2lvbnNbMF0KLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICBleHRlbnNpb24ubmFtZSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KFsnc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXInXSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICBleHRlbnNpb24uZ2V0X3BhcmFtZXRlcl9uYW1lcygpKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9uLmdldF9wYXJhbWV0
ZXJfdmFsdWUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZXJ2ZXJfbm9fY29udGV4
dF90YWtlb3ZlcicpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihyZXF1ZXN0Lndz
X2V4dGVuc2lvbl9wcm9jZXNzb3JzKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZGVmbGF0
ZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vz
c29yc1swXS5uYW1lKCkpCi0KLSAgICBkZWYgdGVzdF9kb19oYW5kc2hha2Vfd2l0aF9xdW90ZWRf
ZXh0ZW5zaW9ucyhzZWxmKToKLSAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVx
dWVzdF9kZWYoKQotICAgICAgICByZXF1ZXN0X2RlZi5oZWFkZXJzWydTZWMtV2ViU29ja2V0LUV4
dGVuc2lvbnMnXSA9ICgKLSAgICAgICAgICAgICdwZXJtZXNzYWdlLWRlZmxhdGUsICwgJwotICAg
ICAgICAgICAgJ3Vua25vd247IGUgICA9ICAgICJtY14yIjsgbWE9IlxyXG4gICAgICBcXFxyZiAg
IjsgcHY9bnJ0JykKLQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KHJlcXVlc3Rf
ZGVmKQotICAgICAgICBoYW5kc2hha2VyID0gX2NyZWF0ZV9oYW5kc2hha2VyKHJlcXVlc3QpCi0g
ICAgICAgIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgyLCBsZW4ocmVxdWVzdC53c19yZXF1ZXN0ZWRfZXh0ZW5zaW9ucykpCi0gICAgICAgIGZpcnN0
X2V4dGVuc2lvbiA9IHJlcXVlc3Qud3NfcmVxdWVzdGVkX2V4dGVuc2lvbnNbMF0KLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgncGVybWVzc2FnZS1kZWZsYXRlJywgZmlyc3RfZXh0ZW5zaW9uLm5h
bWUoKSkKLSAgICAgICAgc2Vjb25kX2V4dGVuc2lvbiA9IHJlcXVlc3Qud3NfcmVxdWVzdGVkX2V4
dGVuc2lvbnNbMV0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgndW5rbm93bicsIHNlY29uZF9l
eHRlbnNpb24ubmFtZSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAg
WydlJywgJ21hJywgJ3B2J10sIHNlY29uZF9leHRlbnNpb24uZ2V0X3BhcmFtZXRlcl9uYW1lcygp
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdtY14yJywgc2Vjb25kX2V4dGVuc2lvbi5nZXRf
cGFyYW1ldGVyX3ZhbHVlKCdlJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJyBccmYgJywg
c2Vjb25kX2V4dGVuc2lvbi5nZXRfcGFyYW1ldGVyX3ZhbHVlKCdtYScpKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCducnQnLCBzZWNvbmRfZXh0ZW5zaW9uLmdldF9wYXJhbWV0ZXJfdmFsdWUo
J3B2JykpCi0KLSAgICBkZWYgdGVzdF9kb19oYW5kc2hha2Vfd2l0aF9vcHRpb25hbF9oZWFkZXJz
KHNlbGYpOgotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigp
Ci0gICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ0VtcHR5VmFsdWUnXSA9ICcnCi0gICAgICAg
IHJlcXVlc3RfZGVmLmhlYWRlcnNbJ0FLZXknXSA9ICdBVmFsdWUnCi0KLSAgICAgICAgcmVxdWVz
dCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikKLSAgICAgICAgaGFuZHNoYWtlciA9IF9j
cmVhdGVfaGFuZHNoYWtlcihyZXF1ZXN0KQotICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFr
ZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICAnQVZhbHVlJywgcmVx
dWVzdC5oZWFkZXJzX2luWydBS2V5J10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAg
ICAgICAgICAnJywgcmVxdWVzdC5oZWFkZXJzX2luWydFbXB0eVZhbHVlJ10pCi0KLSAgICBkZWYg
dGVzdF9hYm9ydF9leHRyYV9oYW5kc2hha2Uoc2VsZik6Ci0gICAgICAgIGhhbmRzaGFrZXIgPSBI
YW5kc2hha2VyKAotICAgICAgICAgICAgX2NyZWF0ZV9yZXF1ZXN0KF9jcmVhdGVfZ29vZF9yZXF1
ZXN0X2RlZigpKSwKLSAgICAgICAgICAgIEFib3J0ZWRCeVVzZXJEaXNwYXRjaGVyKCkpCi0gICAg
ICAgICMgZG9fZXh0cmFfaGFuZHNoYWtlIHJhaXNlcyBhbiBBYm9ydGVkQnlVc2VyRXhjZXB0aW9u
LiBDaGVjayB0aGF0IGl0J3MKLSAgICAgICAgIyBub3QgY2F1Z2h0IGJ5IGRvX2hhbmRzaGFrZS4K
LSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbiwgaGFuZHNo
YWtlci5kb19oYW5kc2hha2UpCi0KLSAgICBkZWYgdGVzdF9kb19oYW5kc2hha2Vfd2l0aF9tdXhf
YW5kX2RlZmxhdGVfZnJhbWUoc2VsZik6Ci0gICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9n
b29kX3JlcXVlc3RfZGVmKCkKLSAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snU2VjLVdlYlNv
Y2tldC1FeHRlbnNpb25zJ10gPSAoJyVzLCAlcycgJSAoCi0gICAgICAgICAgICAgICAgY29tbW9u
Lk1VWF9FWFRFTlNJT04sCi0gICAgICAgICAgICAgICAgY29tbW9uLkRFRkxBVEVfRlJBTUVfRVhU
RU5TSU9OKSkKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikK
LSAgICAgICAgaGFuZHNoYWtlciA9IF9jcmVhdGVfaGFuZHNoYWtlcihyZXF1ZXN0KQotICAgICAg
ICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgICMgbXV4IHNob3VsZCBiZSByZWpl
Y3RlZC4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4ocmVxdWVzdC53c19leHRlbnNp
b25zKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tb24uREVGTEFURV9GUkFNRV9FWFRF
TlNJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC53c19leHRlbnNpb25zWzBd
Lm5hbWUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBsZW4ocmVxdWVzdC53c19leHRl
bnNpb25fcHJvY2Vzc29ycykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLk1VWF9F
WFRFTlNJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC53c19leHRlbnNpb25f
cHJvY2Vzc29yc1swXS5uYW1lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLkRF
RkxBVEVfRlJBTUVfRVhURU5TSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qu
d3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnNbMV0ubmFtZSgpKQotICAgICAgICBzZWxmLmFzc2VydEZh
bHNlKGhhc2F0dHIocmVxdWVzdCwgJ211eF9wcm9jZXNzb3InKSkKLQotICAgIGRlZiB0ZXN0X2Rv
X2hhbmRzaGFrZV93aXRoX2RlZmxhdGVfZnJhbWVfYW5kX211eChzZWxmKToKLSAgICAgICAgcmVx
dWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQotICAgICAgICByZXF1ZXN0X2Rl
Zi5oZWFkZXJzWydTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMnXSA9ICgnJXMsICVzJyAlICgKLSAg
ICAgICAgICAgICAgICBjb21tb24uREVGTEFURV9GUkFNRV9FWFRFTlNJT04sCi0gICAgICAgICAg
ICAgICAgY29tbW9uLk1VWF9FWFRFTlNJT04pKQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9y
ZXF1ZXN0KHJlcXVlc3RfZGVmKQotICAgICAgICBoYW5kc2hha2VyID0gX2NyZWF0ZV9oYW5kc2hh
a2VyKHJlcXVlc3QpCi0gICAgICAgIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKCkKLSAgICAgICAg
IyBtdXggc2hvdWxkIGJlIHJlamVjdGVkLgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxl
bihyZXF1ZXN0LndzX2V4dGVuc2lvbnMpKQotICAgICAgICBmaXJzdF9leHRlbnNpb24gPSByZXF1
ZXN0LndzX2V4dGVuc2lvbnNbMF0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tb24uREVG
TEFURV9GUkFNRV9FWFRFTlNJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RfZXh0
ZW5zaW9uLm5hbWUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBsZW4ocmVxdWVzdC53
c19leHRlbnNpb25fcHJvY2Vzc29ycykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9u
LkRFRkxBVEVfRlJBTUVfRVhURU5TSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVl
c3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnNbMF0ubmFtZSgpKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGNvbW1vbi5NVVhfRVhURU5TSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJl
cXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnNbMV0ubmFtZSgpKQotICAgICAgICBzZWxmLmFz
c2VydEZhbHNlKGhhc2F0dHIocmVxdWVzdCwgJ211eCcpKQotCi0gICAgZGVmIHRlc3RfZG9faGFu
ZHNoYWtlX3dpdGhfcGVybWVzc2FnZV9kZWZsYXRlX2FuZF9tdXgoc2VsZik6Ci0gICAgICAgIHJl
cXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKLSAgICAgICAgcmVxdWVzdF9k
ZWYuaGVhZGVyc1snU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zJ10gPSAoCi0gICAgICAgICAgICAn
JXMsICVzJyAlICgKLSAgICAgICAgICAgICAgICBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VY
VEVOU0lPTiwKLSAgICAgICAgICAgICAgICBjb21tb24uTVVYX0VYVEVOU0lPTikpCi0gICAgICAg
IHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QocmVxdWVzdF9kZWYpCi0gICAgICAgIGhhbmRzaGFr
ZXIgPSBfY3JlYXRlX2hhbmRzaGFrZXIocmVxdWVzdCkKLSAgICAgICAgaGFuZHNoYWtlci5kb19o
YW5kc2hha2UoKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHJlcXVlc3Qud3Nf
ZXh0ZW5zaW9ucykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLk1VWF9FWFRFTlNJ
T04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC53c19leHRlbnNpb25zWzBdLm5h
bWUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBsZW4ocmVxdWVzdC53c19leHRlbnNp
b25fcHJvY2Vzc29ycykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2RlZmxhdGUnLAotICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnNbMF0u
bmFtZSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1vbi5NVVhfRVhURU5TSU9OLAot
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnNb
MV0ubmFtZSgpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihyZXF1ZXN0LCAnbXV4
X3Byb2Nlc3NvcicpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmVxdWVzdC5tdXhfcHJvY2Vz
c29yLmlzX2FjdGl2ZSgpKQotICAgICAgICBtdXhfZXh0ZW5zaW9ucyA9IHJlcXVlc3QubXV4X3By
b2Nlc3Nvci5leHRlbnNpb25zKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4obXV4
X2V4dGVuc2lvbnMpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1vbi5QRVJNRVNTQUdF
X0RFRkxBVEVfRVhURU5TSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgIG11eF9leHRlbnNp
b25zWzBdLm5hbWUoKSkKLQotICAgIGRlZiB0ZXN0X2RvX2hhbmRzaGFrZV93aXRoX211eF9hbmRf
cGVybWVzc2FnZV9kZWZsYXRlKHNlbGYpOgotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVf
Z29vZF9yZXF1ZXN0X2RlZigpCi0gICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJT
b2NrZXQtRXh0ZW5zaW9ucyddID0gKAotICAgICAgICAgICAgJyVzLCAlcycgJSAoCi0gICAgICAg
ICAgICAgICAgY29tbW9uLk1VWF9FWFRFTlNJT04sCi0gICAgICAgICAgICAgICAgY29tbW9uLlBF
Uk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04pKQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9y
ZXF1ZXN0KHJlcXVlc3RfZGVmKQotICAgICAgICBoYW5kc2hha2VyID0gX2NyZWF0ZV9oYW5kc2hh
a2VyKHJlcXVlc3QpCi0gICAgICAgIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKCkKLSAgICAgICAg
IyBtdXggc2hvdWxkIGJlIHJlamVjdGVkLgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxl
bihyZXF1ZXN0LndzX2V4dGVuc2lvbnMpKQotICAgICAgICBmaXJzdF9leHRlbnNpb24gPSByZXF1
ZXN0LndzX2V4dGVuc2lvbnNbMF0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tb24uUEVS
TUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBmaXJz
dF9leHRlbnNpb24ubmFtZSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGxlbihyZXF1
ZXN0LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChj
b21tb24uTVVYX0VYVEVOU0lPTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lndz
X2V4dGVuc2lvbl9wcm9jZXNzb3JzWzBdLm5hbWUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgnZGVmbGF0ZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC53c19leHRlbnNp
b25fcHJvY2Vzc29yc1sxXS5uYW1lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0
cihyZXF1ZXN0LCAnbXV4X3Byb2Nlc3NvcicpKQotCi0gICAgZGVmIHRlc3RfYmFkX3JlcXVlc3Rz
KHNlbGYpOgotICAgICAgICBiYWRfY2FzZXMgPSBbCi0gICAgICAgICAgICAoJ0hUVFAgcmVxdWVz
dCcsCi0gICAgICAgICAgICAgUmVxdWVzdERlZmluaXRpb24oCi0gICAgICAgICAgICAgICAgICdH
RVQnLCAnL2RlbW8nLAotICAgICAgICAgICAgICAgICB7J0hvc3QnOiAnd3d3Lmdvb2dsZS5jb20n
LAotICAgICAgICAgICAgICAgICAgJ1VzZXItQWdlbnQnOgotICAgICAgICAgICAgICAgICAgICAg
ICdNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMC41OycKLSAgICAg
ICAgICAgICAgICAgICAgICAnIGVuLVVTOyBydjoxLjkuMS4zKSBHZWNrby8yMDA5MDgyNCBGaXJl
Zm94LzMuNS4zJwotICAgICAgICAgICAgICAgICAgICAgICcgR1RCNiBHVEJBJywKLSAgICAgICAg
ICAgICAgICAgICdBY2NlcHQnOgotICAgICAgICAgICAgICAgICAgICAgICd0ZXh0L2h0bWwsYXBw
bGljYXRpb24veGh0bWwreG1sLGFwcGxpY2F0aW9uL3htbDtxPTAuOSwnCi0gICAgICAgICAgICAg
ICAgICAgICAgJyovKjtxPTAuOCcsCi0gICAgICAgICAgICAgICAgICAnQWNjZXB0LUxhbmd1YWdl
JzogJ2VuLXVzLGVuO3E9MC41JywKLSAgICAgICAgICAgICAgICAgICdBY2NlcHQtRW5jb2Rpbmcn
OiAnZ3ppcCxkZWZsYXRlJywKLSAgICAgICAgICAgICAgICAgICdBY2NlcHQtQ2hhcnNldCc6ICdJ
U08tODg1OS0xLHV0Zi04O3E9MC43LCo7cT0wLjcnLAotICAgICAgICAgICAgICAgICAgJ0tlZXAt
QWxpdmUnOiAnMzAwJywKLSAgICAgICAgICAgICAgICAgICdDb25uZWN0aW9uJzogJ2tlZXAtYWxp
dmUnfSksIE5vbmUsIFRydWUpXQotCi0gICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29k
X3JlcXVlc3RfZGVmKCkKLSAgICAgICAgcmVxdWVzdF9kZWYubWV0aG9kID0gJ1BPU1QnCi0gICAg
ICAgIGJhZF9jYXNlcy5hcHBlbmQoKCdXcm9uZyBtZXRob2QnLCByZXF1ZXN0X2RlZiwgTm9uZSwg
VHJ1ZSkpCi0KLSAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYo
KQotICAgICAgICBkZWwgcmVxdWVzdF9kZWYuaGVhZGVyc1snSG9zdCddCi0gICAgICAgIGJhZF9j
YXNlcy5hcHBlbmQoKCdNaXNzaW5nIEhvc3QnLCByZXF1ZXN0X2RlZiwgTm9uZSwgVHJ1ZSkpCi0K
LSAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQotICAgICAg
ICBkZWwgcmVxdWVzdF9kZWYuaGVhZGVyc1snVXBncmFkZSddCi0gICAgICAgIGJhZF9jYXNlcy5h
cHBlbmQoKCdNaXNzaW5nIFVwZ3JhZGUnLCByZXF1ZXN0X2RlZiwgTm9uZSwgVHJ1ZSkpCi0KLSAg
ICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQotICAgICAgICBy
ZXF1ZXN0X2RlZi5oZWFkZXJzWydVcGdyYWRlJ10gPSAnbm9ud2Vic29ja2V0JwotICAgICAgICBi
YWRfY2FzZXMuYXBwZW5kKCgnV3JvbmcgVXBncmFkZScsIHJlcXVlc3RfZGVmLCBOb25lLCBUcnVl
KSkKLQotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCi0g
ICAgICAgIGRlbCByZXF1ZXN0X2RlZi5oZWFkZXJzWydDb25uZWN0aW9uJ10KLSAgICAgICAgYmFk
X2Nhc2VzLmFwcGVuZCgoJ01pc3NpbmcgQ29ubmVjdGlvbicsIHJlcXVlc3RfZGVmLCBOb25lLCBU
cnVlKSkKLQotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigp
Ci0gICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ0Nvbm5lY3Rpb24nXSA9ICdEb3duZ3JhZGUn
Ci0gICAgICAgIGJhZF9jYXNlcy5hcHBlbmQoKCdXcm9uZyBDb25uZWN0aW9uJywgcmVxdWVzdF9k
ZWYsIE5vbmUsIFRydWUpKQotCi0gICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3Jl
cXVlc3RfZGVmKCkKLSAgICAgICAgZGVsIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJTb2Nr
ZXQtS2V5J10KLSAgICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgoJ01pc3NpbmcgU2VjLVdlYlNvY2tl
dC1LZXknLCByZXF1ZXN0X2RlZiwgNDAwLCBUcnVlKSkKLQotICAgICAgICByZXF1ZXN0X2RlZiA9
IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCi0gICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNb
J1NlYy1XZWJTb2NrZXQtS2V5J10gPSAoCi0gICAgICAgICAgICAnZEdobElITmhiWEJzWlNCdWIy
NWpaUT09Z2FyYmFnZScpCi0gICAgICAgIGJhZF9jYXNlcy5hcHBlbmQoKCdXcm9uZyBTZWMtV2Vi
U29ja2V0LUtleSAod2l0aCBnYXJiYWdlIG9uIHRoZSB0YWlsKScsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlcXVlc3RfZGVmLCA0MDAsIFRydWUpKQotCi0gICAgICAgIHJlcXVlc3RfZGVm
ID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKLSAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVy
c1snU2VjLVdlYlNvY2tldC1LZXknXSA9ICdZUT09JyAgIyBCQVNFNjQgb2YgJ2EnCi0gICAgICAg
IGJhZF9jYXNlcy5hcHBlbmQoCi0gICAgICAgICAgICAoJ1dyb25nIFNlYy1XZWJTb2NrZXQtS2V5
IChkZWNvZGVkIHZhbHVlIGlzIG5vdCAxNiBvY3RldHMgbG9uZyknLAotICAgICAgICAgICAgIHJl
cXVlc3RfZGVmLCA0MDAsIFRydWUpKQotCi0gICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9n
b29kX3JlcXVlc3RfZGVmKCkKLSAgICAgICAgIyBUaGUgbGFzdCBjaGFyYWN0ZXIgcmlnaHQgYmVm
b3JlID09IG11c3QgYmUgYW55IG9mIEEsIFEsIHcgYW5kIGcuCi0gICAgICAgIHJlcXVlc3RfZGVm
LmhlYWRlcnNbJ1NlYy1XZWJTb2NrZXQtS2V5J10gPSAoCi0gICAgICAgICAgICAnQVFJREJBVUdC
d2dKQ2dzTURRNFBFQz09JykKLSAgICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgKLSAgICAgICAgICAg
ICgnV3JvbmcgU2VjLVdlYlNvY2tldC1LZXkgKHBhZGRpbmcgYml0cyBhcmUgbm90IHplcm8pJywK
LSAgICAgICAgICAgICByZXF1ZXN0X2RlZiwgNDAwLCBUcnVlKSkKLQotICAgICAgICByZXF1ZXN0
X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCi0gICAgICAgIHJlcXVlc3RfZGVmLmhl
YWRlcnNbJ1NlYy1XZWJTb2NrZXQtS2V5J10gPSAoCi0gICAgICAgICAgICAnZEdobElITmhiWEJz
WlNCdWIyNWpaUT09LGRHaGxJSE5oYlhCc1pTQnViMjVqWlE9PScpCi0gICAgICAgIGJhZF9jYXNl
cy5hcHBlbmQoCi0gICAgICAgICAgICAoJ1dyb25nIFNlYy1XZWJTb2NrZXQtS2V5IChtdWx0aXBs
ZSB2YWx1ZXMpJywKLSAgICAgICAgICAgICByZXF1ZXN0X2RlZiwgNDAwLCBUcnVlKSkKLQotICAg
ICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCi0gICAgICAgIGRl
bCByZXF1ZXN0X2RlZi5oZWFkZXJzWydTZWMtV2ViU29ja2V0LVZlcnNpb24nXQotICAgICAgICBi
YWRfY2FzZXMuYXBwZW5kKCgnTWlzc2luZyBTZWMtV2ViU29ja2V0LVZlcnNpb24nLCByZXF1ZXN0
X2RlZiwgTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgVHJ1ZSkpCi0KLSAgICAgICAg
cmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQotICAgICAgICByZXF1ZXN0
X2RlZi5oZWFkZXJzWydTZWMtV2ViU29ja2V0LVZlcnNpb24nXSA9ICczJwotICAgICAgICBiYWRf
Y2FzZXMuYXBwZW5kKCgnV3JvbmcgU2VjLVdlYlNvY2tldC1WZXJzaW9uJywgcmVxdWVzdF9kZWYs
IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEZhbHNlKSkKLQotICAgICAgICByZXF1
ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCi0gICAgICAgIHJlcXVlc3RfZGVm
LmhlYWRlcnNbJ1NlYy1XZWJTb2NrZXQtVmVyc2lvbiddID0gJzEzLCAxMycKLSAgICAgICAgYmFk
X2Nhc2VzLmFwcGVuZCgoJ1dyb25nIFNlYy1XZWJTb2NrZXQtVmVyc2lvbiAobXVsdGlwbGUgdmFs
dWVzKScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RfZGVmLCA0MDAsIFRydWUp
KQotCi0gICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKLSAg
ICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snU2VjLVdlYlNvY2tldC1Qcm90b2NvbCddID0gJ2ls
bGVnYWxceDA5cHJvdG9jb2wnCi0gICAgICAgIGJhZF9jYXNlcy5hcHBlbmQoKCdJbGxlZ2FsIFNl
Yy1XZWJTb2NrZXQtUHJvdG9jb2wnLAotICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0
X2RlZiwgNDAwLCBUcnVlKSkKLQotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9y
ZXF1ZXN0X2RlZigpCi0gICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJTb2NrZXQt
UHJvdG9jb2wnXSA9ICcnCi0gICAgICAgIGJhZF9jYXNlcy5hcHBlbmQoKCdFbXB0eSBTZWMtV2Vi
U29ja2V0LVByb3RvY29sJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdF9kZWYs
IDQwMCwgVHJ1ZSkpCi0KLSAgICAgICAgZm9yIChjYXNlX25hbWUsIHJlcXVlc3RfZGVmLCBleHBl
Y3RlZF9zdGF0dXMsCi0gICAgICAgICAgICAgZXhwZWN0X2hhbmRzaGFrZV9leGNlcHRpb24pIGlu
IGJhZF9jYXNlczoKLSAgICAgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QocmVxdWVz
dF9kZWYpCi0gICAgICAgICAgICBoYW5kc2hha2VyID0gSGFuZHNoYWtlcihyZXF1ZXN0LCBtb2Nr
Lk1vY2tEaXNwYXRjaGVyKCkpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgaGFu
ZHNoYWtlci5kb19oYW5kc2hha2UoKQotICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnTm8gZXhj
ZXB0aW9uIHRocm93biBmb3IgXCclc1wnIGNhc2UnICUgY2FzZV9uYW1lKQotICAgICAgICAgICAg
ZXhjZXB0IEhhbmRzaGFrZUV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShleHBlY3RfaGFuZHNoYWtlX2V4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGV4cGVjdGVkX3N0YXR1cywgZS5zdGF0dXMpCi0gICAgICAgICAgICBleGNl
cHQgVmVyc2lvbkV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2UoZXhwZWN0X2hhbmRzaGFrZV9leGNlcHRpb24pCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFp
bl9fJzoKLSAgICB1bml0dGVzdC5tYWluKCkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvdGVzdC90ZXN0X2hhbmRzaGFrZV9oeWJpMDAucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVz
dF9oYW5kc2hha2VfaHliaTAwLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3M2Y5
ZjI3Y2EyZDk0MjFiMjMwMTVmNThjODkzYWNmMWRjMDA5ZGVmLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X2hhbmRzaGFrZV9oeWJp
MDAucHkKKysrIC9kZXYvbnVsbApAQCAtMSw1MTYgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0
aG9uCi0jCi0jIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJp
YnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJUZXN0cyBmb3IgaGFuZHNoYWtlLmh5Ymkw
MCBtb2R1bGUuIiIiCi0KLQotaW1wb3J0IHVuaXR0ZXN0Ci0KLWltcG9ydCBzZXRfc3lzX3BhdGgg
ICMgVXBkYXRlIHN5cy5wYXRoIHRvIGxvY2F0ZSBtb2RfcHl3ZWJzb2NrZXQgbW9kdWxlLgotCi1m
cm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IEhhbmRzaGFrZUV4Y2Vw
dGlvbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLmh5YmkwMCBpbXBvcnQgSGFuZHNo
YWtlcgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLmh5YmkwMCBpbXBvcnQgX3ZhbGlk
YXRlX3N1YnByb3RvY29sCi1mcm9tIHRlc3QgaW1wb3J0IG1vY2sKLQotCi1fVEVTVF9LRVkxID0g
JzQgQDEgIDQ2NTQ2eFclMGwgMSA1JwotX1RFU1RfS0VZMiA9ICcxMjk5OCA1IFkzIDEgIC5QMDAn
Ci1fVEVTVF9LRVkzID0gJ15uOmRzWzRVJwotX1RFU1RfQ0hBTExFTkdFX1JFU1BPTlNFID0gJzhq
S1NcJ3k6RypDbyxXeGEtJwotCi0KLV9HT09EX1JFUVVFU1QgPSAoCi0gICAgODAsCi0gICAgJ0dF
VCcsCi0gICAgJy9kZW1vJywKLSAgICB7Ci0gICAgICAgICdIb3N0JzogJ2V4YW1wbGUuY29tJywK
LSAgICAgICAgJ0Nvbm5lY3Rpb24nOiAnVXBncmFkZScsCi0gICAgICAgICdTZWMtV2ViU29ja2V0
LUtleTInOiBfVEVTVF9LRVkyLAotICAgICAgICAnU2VjLVdlYlNvY2tldC1Qcm90b2NvbCc6ICdz
YW1wbGUnLAotICAgICAgICAnVXBncmFkZSc6ICdXZWJTb2NrZXQnLAotICAgICAgICAnU2VjLVdl
YlNvY2tldC1LZXkxJzogX1RFU1RfS0VZMSwKLSAgICAgICAgJ09yaWdpbic6ICdodHRwOi8vZXhh
bXBsZS5jb20nLAotICAgIH0sCi0gICAgX1RFU1RfS0VZMykKLQotX0dPT0RfUkVRVUVTVF9DQVBJ
VEFMSVpFRF9IRUFERVJfVkFMVUVTID0gKAotICAgIDgwLAotICAgICdHRVQnLAotICAgICcvZGVt
bycsCi0gICAgewotICAgICAgICAnSG9zdCc6ICdleGFtcGxlLmNvbScsCi0gICAgICAgICdDb25u
ZWN0aW9uJzogJ1VQR1JBREUnLAotICAgICAgICAnU2VjLVdlYlNvY2tldC1LZXkyJzogX1RFU1Rf
S0VZMiwKLSAgICAgICAgJ1NlYy1XZWJTb2NrZXQtUHJvdG9jb2wnOiAnc2FtcGxlJywKLSAgICAg
ICAgJ1VwZ3JhZGUnOiAnV0VCU09DS0VUJywKLSAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5MSc6
IF9URVNUX0tFWTEsCi0gICAgICAgICdPcmlnaW4nOiAnaHR0cDovL2V4YW1wbGUuY29tJywKLSAg
ICB9LAotICAgIF9URVNUX0tFWTMpCi0KLV9HT09EX1JFUVVFU1RfQ0FTRV9NSVhFRF9IRUFERVJf
TkFNRVMgPSAoCi0gICAgODAsCi0gICAgJ0dFVCcsCi0gICAgJy9kZW1vJywKLSAgICB7Ci0gICAg
ICAgICdoT3NUJzogJ2V4YW1wbGUuY29tJywKLSAgICAgICAgJ2NPbk5lQ3RJb04nOiAnVXBncmFk
ZScsCi0gICAgICAgICdzRWMtd0Vic09jS2VULWtFeTInOiBfVEVTVF9LRVkyLAotICAgICAgICAn
c0VjLXdFYnNPY0tlVC1wUm9Ub0NvTCc6ICdzYW1wbGUnLAotICAgICAgICAndVBnUmFEZSc6ICdX
ZWJTb2NrZXQnLAotICAgICAgICAnc0VjLXdFYnNPY0tlVC1rRXkxJzogX1RFU1RfS0VZMSwKLSAg
ICAgICAgJ29SaUdpTic6ICdodHRwOi8vZXhhbXBsZS5jb20nLAotICAgIH0sCi0gICAgX1RFU1Rf
S0VZMykKLQotX0dPT0RfUkVTUE9OU0VfREVGQVVMVF9QT1JUID0gKAotICAgICdIVFRQLzEuMSAx
MDEgV2ViU29ja2V0IFByb3RvY29sIEhhbmRzaGFrZVxyXG4nCi0gICAgJ1VwZ3JhZGU6IFdlYlNv
Y2tldFxyXG4nCi0gICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJwotICAgICdTZWMtV2ViU29j
a2V0LUxvY2F0aW9uOiB3czovL2V4YW1wbGUuY29tL2RlbW9cclxuJwotICAgICdTZWMtV2ViU29j
a2V0LU9yaWdpbjogaHR0cDovL2V4YW1wbGUuY29tXHJcbicKLSAgICAnU2VjLVdlYlNvY2tldC1Q
cm90b2NvbDogc2FtcGxlXHJcbicKLSAgICAnXHJcbicgKwotICAgIF9URVNUX0NIQUxMRU5HRV9S
RVNQT05TRSkKLQotX0dPT0RfUkVTUE9OU0VfU0VDVVJFID0gKAotICAgICdIVFRQLzEuMSAxMDEg
V2ViU29ja2V0IFByb3RvY29sIEhhbmRzaGFrZVxyXG4nCi0gICAgJ1VwZ3JhZGU6IFdlYlNvY2tl
dFxyXG4nCi0gICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJwotICAgICdTZWMtV2ViU29ja2V0
LUxvY2F0aW9uOiB3c3M6Ly9leGFtcGxlLmNvbS9kZW1vXHJcbicKLSAgICAnU2VjLVdlYlNvY2tl
dC1PcmlnaW46IGh0dHA6Ly9leGFtcGxlLmNvbVxyXG4nCi0gICAgJ1NlYy1XZWJTb2NrZXQtUHJv
dG9jb2w6IHNhbXBsZVxyXG4nCi0gICAgJ1xyXG4nICsKLSAgICBfVEVTVF9DSEFMTEVOR0VfUkVT
UE9OU0UpCi0KLV9HT09EX1JFUVVFU1RfTk9OREVGQVVMVF9QT1JUID0gKAotICAgIDgwODEsCi0g
ICAgJ0dFVCcsCi0gICAgJy9kZW1vJywKLSAgICB7Ci0gICAgICAgICdIb3N0JzogJ2V4YW1wbGUu
Y29tOjgwODEnLAotICAgICAgICAnQ29ubmVjdGlvbic6ICdVcGdyYWRlJywKLSAgICAgICAgJ1Nl
Yy1XZWJTb2NrZXQtS2V5Mic6IF9URVNUX0tFWTIsCi0gICAgICAgICdTZWMtV2ViU29ja2V0LVBy
b3RvY29sJzogJ3NhbXBsZScsCi0gICAgICAgICdVcGdyYWRlJzogJ1dlYlNvY2tldCcsCi0gICAg
ICAgICdTZWMtV2ViU29ja2V0LUtleTEnOiBfVEVTVF9LRVkxLAotICAgICAgICAnT3JpZ2luJzog
J2h0dHA6Ly9leGFtcGxlLmNvbScsCi0gICAgfSwKLSAgICBfVEVTVF9LRVkzKQotCi1fR09PRF9S
RVNQT05TRV9OT05ERUZBVUxUX1BPUlQgPSAoCi0gICAgJ0hUVFAvMS4xIDEwMSBXZWJTb2NrZXQg
UHJvdG9jb2wgSGFuZHNoYWtlXHJcbicKLSAgICAnVXBncmFkZTogV2ViU29ja2V0XHJcbicKLSAg
ICAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nCi0gICAgJ1NlYy1XZWJTb2NrZXQtTG9jYXRpb246
IHdzOi8vZXhhbXBsZS5jb206ODA4MS9kZW1vXHJcbicKLSAgICAnU2VjLVdlYlNvY2tldC1Pcmln
aW46IGh0dHA6Ly9leGFtcGxlLmNvbVxyXG4nCi0gICAgJ1NlYy1XZWJTb2NrZXQtUHJvdG9jb2w6
IHNhbXBsZVxyXG4nCi0gICAgJ1xyXG4nICsKLSAgICBfVEVTVF9DSEFMTEVOR0VfUkVTUE9OU0Up
Ci0KLV9HT09EX1JFU1BPTlNFX1NFQ1VSRV9OT05ERUYgPSAoCi0gICAgJ0hUVFAvMS4xIDEwMSBX
ZWJTb2NrZXQgUHJvdG9jb2wgSGFuZHNoYWtlXHJcbicKLSAgICAnVXBncmFkZTogV2ViU29ja2V0
XHJcbicKLSAgICAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nCi0gICAgJ1NlYy1XZWJTb2NrZXQt
TG9jYXRpb246IHdzczovL2V4YW1wbGUuY29tOjgwODEvZGVtb1xyXG4nCi0gICAgJ1NlYy1XZWJT
b2NrZXQtT3JpZ2luOiBodHRwOi8vZXhhbXBsZS5jb21cclxuJwotICAgICdTZWMtV2ViU29ja2V0
LVByb3RvY29sOiBzYW1wbGVcclxuJwotICAgICdcclxuJyArCi0gICAgX1RFU1RfQ0hBTExFTkdF
X1JFU1BPTlNFKQotCi1fR09PRF9SRVFVRVNUX05PX1BST1RPQ09MID0gKAotICAgIDgwLAotICAg
ICdHRVQnLAotICAgICcvZGVtbycsCi0gICAgewotICAgICAgICAnSG9zdCc6ICdleGFtcGxlLmNv
bScsCi0gICAgICAgICdDb25uZWN0aW9uJzogJ1VwZ3JhZGUnLAotICAgICAgICAnU2VjLVdlYlNv
Y2tldC1LZXkyJzogX1RFU1RfS0VZMiwKLSAgICAgICAgJ1VwZ3JhZGUnOiAnV2ViU29ja2V0JywK
LSAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5MSc6IF9URVNUX0tFWTEsCi0gICAgICAgICdPcmln
aW4nOiAnaHR0cDovL2V4YW1wbGUuY29tJywKLSAgICB9LAotICAgIF9URVNUX0tFWTMpCi0KLV9H
T09EX1JFU1BPTlNFX05PX1BST1RPQ09MID0gKAotICAgICdIVFRQLzEuMSAxMDEgV2ViU29ja2V0
IFByb3RvY29sIEhhbmRzaGFrZVxyXG4nCi0gICAgJ1VwZ3JhZGU6IFdlYlNvY2tldFxyXG4nCi0g
ICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJwotICAgICdTZWMtV2ViU29ja2V0LUxvY2F0aW9u
OiB3czovL2V4YW1wbGUuY29tL2RlbW9cclxuJwotICAgICdTZWMtV2ViU29ja2V0LU9yaWdpbjog
aHR0cDovL2V4YW1wbGUuY29tXHJcbicKLSAgICAnXHJcbicgKwotICAgIF9URVNUX0NIQUxMRU5H
RV9SRVNQT05TRSkKLQotX0dPT0RfUkVRVUVTVF9XSVRIX09QVElPTkFMX0hFQURFUlMgPSAoCi0g
ICAgODAsCi0gICAgJ0dFVCcsCi0gICAgJy9kZW1vJywKLSAgICB7Ci0gICAgICAgICdIb3N0Jzog
J2V4YW1wbGUuY29tJywKLSAgICAgICAgJ0Nvbm5lY3Rpb24nOiAnVXBncmFkZScsCi0gICAgICAg
ICdTZWMtV2ViU29ja2V0LUtleTInOiBfVEVTVF9LRVkyLAotICAgICAgICAnRW1wdHlWYWx1ZSc6
ICcnLAotICAgICAgICAnU2VjLVdlYlNvY2tldC1Qcm90b2NvbCc6ICdzYW1wbGUnLAotICAgICAg
ICAnQUtleSc6ICdBVmFsdWUnLAotICAgICAgICAnVXBncmFkZSc6ICdXZWJTb2NrZXQnLAotICAg
ICAgICAnU2VjLVdlYlNvY2tldC1LZXkxJzogX1RFU1RfS0VZMSwKLSAgICAgICAgJ09yaWdpbic6
ICdodHRwOi8vZXhhbXBsZS5jb20nLAotICAgIH0sCi0gICAgX1RFU1RfS0VZMykKLQotIyBUT0RP
KHR5b3NoaW5vKTogSW5jbHVkZSBcciBcbiBpbiBrZXkzLCBjaGFsbGVuZ2UgcmVzcG9uc2UuCi0K
LV9HT09EX1JFUVVFU1RfV0lUSF9OT05QUklOVEFCTEVfS0VZID0gKAotICAgIDgwLAotICAgICdH
RVQnLAotICAgICcvZGVtbycsCi0gICAgewotICAgICAgICAnSG9zdCc6ICdleGFtcGxlLmNvbScs
Ci0gICAgICAgICdDb25uZWN0aW9uJzogJ1VwZ3JhZGUnLAotICAgICAgICAnU2VjLVdlYlNvY2tl
dC1LZXkyJzogJ3kgIFIyIDQ4IFExTzQgIGV8QlYzIGk1IDEgIHUtIDY1JywKLSAgICAgICAgJ1Nl
Yy1XZWJTb2NrZXQtUHJvdG9jb2wnOiAnc2FtcGxlJywKLSAgICAgICAgJ1VwZ3JhZGUnOiAnV2Vi
U29ja2V0JywKLSAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5MSc6ICczNiA3ICAgNzQgaSAgOTIg
MlwnbSA5IDBHJywKLSAgICAgICAgJ09yaWdpbic6ICdodHRwOi8vZXhhbXBsZS5jb20nLAotICAg
IH0sCi0gICAgJycuam9pbihtYXAoY2hyLCBbMHgwMSwgMHhkMSwgMHhkZCwgMHgzYiwgMHhkMSwg
MHg1NiwgMHg2MywgMHhmZl0pKSkKLQotX0dPT0RfUkVTUE9OU0VfV0lUSF9OT05QUklOVEFCTEVf
S0VZID0gKAotICAgICdIVFRQLzEuMSAxMDEgV2ViU29ja2V0IFByb3RvY29sIEhhbmRzaGFrZVxy
XG4nCi0gICAgJ1VwZ3JhZGU6IFdlYlNvY2tldFxyXG4nCi0gICAgJ0Nvbm5lY3Rpb246IFVwZ3Jh
ZGVcclxuJwotICAgICdTZWMtV2ViU29ja2V0LUxvY2F0aW9uOiB3czovL2V4YW1wbGUuY29tL2Rl
bW9cclxuJwotICAgICdTZWMtV2ViU29ja2V0LU9yaWdpbjogaHR0cDovL2V4YW1wbGUuY29tXHJc
bicKLSAgICAnU2VjLVdlYlNvY2tldC1Qcm90b2NvbDogc2FtcGxlXHJcbicKLSAgICAnXHJcbicg
KwotICAgICcnLmpvaW4obWFwKGNociwgWzB4MGIsIDB4OTksIDB4ZmEsIDB4NTUsIDB4YmQsIDB4
MDEsIDB4MjMsIDB4N2IsCi0gICAgICAgICAgICAgICAgICAgICAgMHg0NSwgMHhhMiwgMHhmMSwg
MHhkMCwgMHg4NywgMHg4YSwgMHhlZSwgMHhlYl0pKSkKLQotX0dPT0RfUkVRVUVTVF9XSVRIX1FV
RVJZX1BBUlQgPSAoCi0gICAgODAsCi0gICAgJ0dFVCcsCi0gICAgJy9kZW1vP2U9bWMyJywKLSAg
ICB7Ci0gICAgICAgICdIb3N0JzogJ2V4YW1wbGUuY29tJywKLSAgICAgICAgJ0Nvbm5lY3Rpb24n
OiAnVXBncmFkZScsCi0gICAgICAgICdTZWMtV2ViU29ja2V0LUtleTInOiBfVEVTVF9LRVkyLAot
ICAgICAgICAnU2VjLVdlYlNvY2tldC1Qcm90b2NvbCc6ICdzYW1wbGUnLAotICAgICAgICAnVXBn
cmFkZSc6ICdXZWJTb2NrZXQnLAotICAgICAgICAnU2VjLVdlYlNvY2tldC1LZXkxJzogX1RFU1Rf
S0VZMSwKLSAgICAgICAgJ09yaWdpbic6ICdodHRwOi8vZXhhbXBsZS5jb20nLAotICAgIH0sCi0g
ICAgX1RFU1RfS0VZMykKLQotX0dPT0RfUkVTUE9OU0VfV0lUSF9RVUVSWV9QQVJUID0gKAotICAg
ICdIVFRQLzEuMSAxMDEgV2ViU29ja2V0IFByb3RvY29sIEhhbmRzaGFrZVxyXG4nCi0gICAgJ1Vw
Z3JhZGU6IFdlYlNvY2tldFxyXG4nCi0gICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJwotICAg
ICdTZWMtV2ViU29ja2V0LUxvY2F0aW9uOiB3czovL2V4YW1wbGUuY29tL2RlbW8/ZT1tYzJcclxu
JwotICAgICdTZWMtV2ViU29ja2V0LU9yaWdpbjogaHR0cDovL2V4YW1wbGUuY29tXHJcbicKLSAg
ICAnU2VjLVdlYlNvY2tldC1Qcm90b2NvbDogc2FtcGxlXHJcbicKLSAgICAnXHJcbicgKwotICAg
IF9URVNUX0NIQUxMRU5HRV9SRVNQT05TRSkKLQotX0JBRF9SRVFVRVNUUyA9ICgKLSAgICAoICAj
IEhUVFAgcmVxdWVzdAotICAgICAgICA4MCwKLSAgICAgICAgJ0dFVCcsCi0gICAgICAgICcvZGVt
bycsCi0gICAgICAgIHsKLSAgICAgICAgICAgICdIb3N0JzogJ3d3dy5nb29nbGUuY29tJywKLSAg
ICAgICAgICAgICdVc2VyLUFnZW50JzogJ01vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVs
IE1hYyBPUyBYIDEwLjU7JwotICAgICAgICAgICAgICAgICAgICAgICAgICAnIGVuLVVTOyBydjox
LjkuMS4zKSBHZWNrby8yMDA5MDgyNCBGaXJlZm94LzMuNS4zJwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAnIEdUQjYgR1RCQScsCi0gICAgICAgICAgICAnQWNjZXB0JzogJ3RleHQvaHRtbCxh
cHBsaWNhdGlvbi94aHRtbCt4bWwsYXBwbGljYXRpb24veG1sO3E9MC45LCcKLSAgICAgICAgICAg
ICAgICAgICAgICAnKi8qO3E9MC44JywKLSAgICAgICAgICAgICdBY2NlcHQtTGFuZ3VhZ2UnOiAn
ZW4tdXMsZW47cT0wLjUnLAotICAgICAgICAgICAgJ0FjY2VwdC1FbmNvZGluZyc6ICdnemlwLGRl
ZmxhdGUnLAotICAgICAgICAgICAgJ0FjY2VwdC1DaGFyc2V0JzogJ0lTTy04ODU5LTEsdXRmLTg7
cT0wLjcsKjtxPTAuNycsCi0gICAgICAgICAgICAnS2VlcC1BbGl2ZSc6ICczMDAnLAotICAgICAg
ICAgICAgJ0Nvbm5lY3Rpb24nOiAna2VlcC1hbGl2ZScsCi0gICAgICAgIH0pLAotICAgICggICMg
V3JvbmcgbWV0aG9kCi0gICAgICAgIDgwLAotICAgICAgICAnUE9TVCcsCi0gICAgICAgICcvZGVt
bycsCi0gICAgICAgIHsKLSAgICAgICAgICAgICdIb3N0JzogJ2V4YW1wbGUuY29tJywKLSAgICAg
ICAgICAgICdDb25uZWN0aW9uJzogJ1VwZ3JhZGUnLAotICAgICAgICAgICAgJ1NlYy1XZWJTb2Nr
ZXQtS2V5Mic6IF9URVNUX0tFWTIsCi0gICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1Qcm90b2Nv
bCc6ICdzYW1wbGUnLAotICAgICAgICAgICAgJ1VwZ3JhZGUnOiAnV2ViU29ja2V0JywKLSAgICAg
ICAgICAgICdTZWMtV2ViU29ja2V0LUtleTEnOiBfVEVTVF9LRVkxLAotICAgICAgICAgICAgJ09y
aWdpbic6ICdodHRwOi8vZXhhbXBsZS5jb20nLAotICAgICAgICB9LAotICAgICAgICBfVEVTVF9L
RVkzKSwKLSAgICAoICAjIE1pc3NpbmcgVXBncmFkZQotICAgICAgICA4MCwKLSAgICAgICAgJ0dF
VCcsCi0gICAgICAgICcvZGVtbycsCi0gICAgICAgIHsKLSAgICAgICAgICAgICdIb3N0JzogJ2V4
YW1wbGUuY29tJywKLSAgICAgICAgICAgICdDb25uZWN0aW9uJzogJ1VwZ3JhZGUnLAotICAgICAg
ICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5Mic6IF9URVNUX0tFWTIsCi0gICAgICAgICAgICAnU2Vj
LVdlYlNvY2tldC1Qcm90b2NvbCc6ICdzYW1wbGUnLAotICAgICAgICAgICAgJ1NlYy1XZWJTb2Nr
ZXQtS2V5MSc6IF9URVNUX0tFWTEsCi0gICAgICAgICAgICAnT3JpZ2luJzogJ2h0dHA6Ly9leGFt
cGxlLmNvbScsCi0gICAgICAgIH0sCi0gICAgICAgIF9URVNUX0tFWTMpLAotICAgICggICMgV3Jv
bmcgVXBncmFkZQotICAgICAgICA4MCwKLSAgICAgICAgJ0dFVCcsCi0gICAgICAgICcvZGVtbycs
Ci0gICAgICAgIHsKLSAgICAgICAgICAgICdIb3N0JzogJ2V4YW1wbGUuY29tJywKLSAgICAgICAg
ICAgICdDb25uZWN0aW9uJzogJ1VwZ3JhZGUnLAotICAgICAgICAgICAgJ1NlYy1XZWJTb2NrZXQt
S2V5Mic6IF9URVNUX0tFWTIsCi0gICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1Qcm90b2NvbCc6
ICdzYW1wbGUnLAotICAgICAgICAgICAgJ1VwZ3JhZGUnOiAnTm9uV2ViU29ja2V0JywKLSAgICAg
ICAgICAgICdTZWMtV2ViU29ja2V0LUtleTEnOiBfVEVTVF9LRVkxLAotICAgICAgICAgICAgJ09y
aWdpbic6ICdodHRwOi8vZXhhbXBsZS5jb20nLAotICAgICAgICB9LAotICAgICAgICBfVEVTVF9L
RVkzKSwKLSAgICAoICAjIEVtcHR5IFdlYlNvY2tldC1Qcm90b2NvbAotICAgICAgICA4MCwKLSAg
ICAgICAgJ0dFVCcsCi0gICAgICAgICcvZGVtbycsCi0gICAgICAgIHsKLSAgICAgICAgICAgICdI
b3N0JzogJ2V4YW1wbGUuY29tJywKLSAgICAgICAgICAgICdDb25uZWN0aW9uJzogJ1VwZ3JhZGUn
LAotICAgICAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5Mic6IF9URVNUX0tFWTIsCi0gICAgICAg
ICAgICAnU2VjLVdlYlNvY2tldC1Qcm90b2NvbCc6ICcnLAotICAgICAgICAgICAgJ1VwZ3JhZGUn
OiAnV2ViU29ja2V0JywKLSAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LUtleTEnOiBfVEVTVF9L
RVkxLAotICAgICAgICAgICAgJ09yaWdpbic6ICdodHRwOi8vZXhhbXBsZS5jb20nLAotICAgICAg
ICB9LAotICAgICAgICBfVEVTVF9LRVkzKSwKLSAgICAoICAjIFdyb25nIHBvcnQgbnVtYmVyIGZv
cm1hdAotICAgICAgICA4MCwKLSAgICAgICAgJ0dFVCcsCi0gICAgICAgICcvZGVtbycsCi0gICAg
ICAgIHsKLSAgICAgICAgICAgICdIb3N0JzogJ2V4YW1wbGUuY29tOjB4NTAnLAotICAgICAgICAg
ICAgJ0Nvbm5lY3Rpb24nOiAnVXBncmFkZScsCi0gICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1L
ZXkyJzogX1RFU1RfS0VZMiwKLSAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LVByb3RvY29sJzog
J3NhbXBsZScsCi0gICAgICAgICAgICAnVXBncmFkZSc6ICdXZWJTb2NrZXQnLAotICAgICAgICAg
ICAgJ1NlYy1XZWJTb2NrZXQtS2V5MSc6IF9URVNUX0tFWTEsCi0gICAgICAgICAgICAnT3JpZ2lu
JzogJ2h0dHA6Ly9leGFtcGxlLmNvbScsCi0gICAgICAgIH0sCi0gICAgICAgIF9URVNUX0tFWTMp
LAotICAgICggICMgSGVhZGVyL2Nvbm5lY3Rpb24gcG9ydCBtaXNtYXRjaAotICAgICAgICA4MDgw
LAotICAgICAgICAnR0VUJywKLSAgICAgICAgJy9kZW1vJywKLSAgICAgICAgewotICAgICAgICAg
ICAgJ0hvc3QnOiAnZXhhbXBsZS5jb20nLAotICAgICAgICAgICAgJ0Nvbm5lY3Rpb24nOiAnVXBn
cmFkZScsCi0gICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1LZXkyJzogX1RFU1RfS0VZMiwKLSAg
ICAgICAgICAgICdTZWMtV2ViU29ja2V0LVByb3RvY29sJzogJ3NhbXBsZScsCi0gICAgICAgICAg
ICAnVXBncmFkZSc6ICdXZWJTb2NrZXQnLAotICAgICAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5
MSc6IF9URVNUX0tFWTEsCi0gICAgICAgICAgICAnT3JpZ2luJzogJ2h0dHA6Ly9leGFtcGxlLmNv
bScsCi0gICAgICAgIH0sCi0gICAgICAgIF9URVNUX0tFWTMpLAotICAgICggICMgSWxsZWdhbCBX
ZWJTb2NrZXQtUHJvdG9jb2wKLSAgICAgICAgODAsCi0gICAgICAgICdHRVQnLAotICAgICAgICAn
L2RlbW8nLAotICAgICAgICB7Ci0gICAgICAgICAgICAnSG9zdCc6ICdleGFtcGxlLmNvbScsCi0g
ICAgICAgICAgICAnQ29ubmVjdGlvbic6ICdVcGdyYWRlJywKLSAgICAgICAgICAgICdTZWMtV2Vi
U29ja2V0LUtleTInOiBfVEVTVF9LRVkyLAotICAgICAgICAgICAgJ1NlYy1XZWJTb2NrZXQtUHJv
dG9jb2wnOiAnaWxsZWdhbFx4MDlwcm90b2NvbCcsCi0gICAgICAgICAgICAnVXBncmFkZSc6ICdX
ZWJTb2NrZXQnLAotICAgICAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5MSc6IF9URVNUX0tFWTEs
Ci0gICAgICAgICAgICAnT3JpZ2luJzogJ2h0dHA6Ly9leGFtcGxlLmNvbScsCi0gICAgICAgIH0s
Ci0gICAgICAgIF9URVNUX0tFWTMpLAotKQotCi0KLWRlZiBfY3JlYXRlX3JlcXVlc3QocmVxdWVz
dF9kZWYpOgotICAgIGRhdGEgPSAnJwotICAgIGlmIGxlbihyZXF1ZXN0X2RlZikgPiA0OgotICAg
ICAgICBkYXRhID0gcmVxdWVzdF9kZWZbNF0KLSAgICBjb25uID0gbW9jay5Nb2NrQ29ubihkYXRh
KQotICAgIGNvbm4ubG9jYWxfYWRkciA9ICgnMC4wLjAuMCcsIHJlcXVlc3RfZGVmWzBdKQotICAg
IHJldHVybiBtb2NrLk1vY2tSZXF1ZXN0KAotICAgICAgICBtZXRob2Q9cmVxdWVzdF9kZWZbMV0s
Ci0gICAgICAgIHVyaT1yZXF1ZXN0X2RlZlsyXSwKLSAgICAgICAgaGVhZGVyc19pbj1yZXF1ZXN0
X2RlZlszXSwKLSAgICAgICAgY29ubmVjdGlvbj1jb25uKQotCi0KLWRlZiBfY3JlYXRlX2dldF9t
ZW1vcml6ZWRfbGluZXMobGluZXMpOgotICAgICIiIkNyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHJl
dHVybnMgdGhlIGdpdmVuIHN0cmluZy4iIiIKLQotICAgIGRlZiBnZXRfbWVtb3JpemVkX2xpbmVz
KCk6Ci0gICAgICAgIHJldHVybiBsaW5lcwotICAgIHJldHVybiBnZXRfbWVtb3JpemVkX2xpbmVz
Ci0KLQotZGVmIF9jcmVhdGVfcmVxdWVzdHNfd2l0aF9saW5lcyhyZXF1ZXN0X2xpbmVzX3NldCk6
Ci0gICAgcmVxdWVzdHMgPSBbXQotICAgIGZvciBsaW5lcyBpbiByZXF1ZXN0X2xpbmVzX3NldDoK
LSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChfR09PRF9SRVFVRVNUKQotICAgICAg
ICByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X21lbW9yaXplZF9saW5lcyA9IF9jcmVhdGVfZ2V0X21l
bW9yaXplZF9saW5lcygKLSAgICAgICAgICAgICAgICBsaW5lcykKLSAgICAgICAgcmVxdWVzdHMu
YXBwZW5kKHJlcXVlc3QpCi0gICAgcmV0dXJuIHJlcXVlc3RzCi0KLQotY2xhc3MgSHlCaTAwSGFu
ZHNoYWtlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotCi0gICAgZGVmIHRlc3RfZ29vZF9yZXF1
ZXN0X2RlZmF1bHRfcG9ydChzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVz
dChfR09PRF9SRVFVRVNUKQotICAgICAgICBoYW5kc2hha2VyID0gSGFuZHNoYWtlcihyZXF1ZXN0
LCBtb2NrLk1vY2tEaXNwYXRjaGVyKCkpCi0gICAgICAgIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtl
KCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfR09PRF9SRVNQT05TRV9ERUZBVUxUX1BPUlQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0
YSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcvZGVtbycsIHJlcXVlc3Qud3NfcmVzb3Vy
Y2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2h0dHA6Ly9leGFtcGxlLmNvbScsIHJlcXVl
c3Qud3Nfb3JpZ2luKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd3czovL2V4YW1wbGUuY29t
L2RlbW8nLCByZXF1ZXN0LndzX2xvY2F0aW9uKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdz
YW1wbGUnLCByZXF1ZXN0LndzX3Byb3RvY29sKQotCi0gICAgZGVmIHRlc3RfZ29vZF9yZXF1ZXN0
X2NhcGl0YWxpemVkX2hlYWRlcl92YWx1ZXMoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3Jl
YXRlX3JlcXVlc3QoX0dPT0RfUkVRVUVTVF9DQVBJVEFMSVpFRF9IRUFERVJfVkFMVUVTKQotICAg
ICAgICBoYW5kc2hha2VyID0gSGFuZHNoYWtlcihyZXF1ZXN0LCBtb2NrLk1vY2tEaXNwYXRjaGVy
KCkpCi0gICAgICAgIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKCkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChfR09PRF9SRVNQT05TRV9ERUZBVUxUX1BPUlQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3Rf
Z29vZF9yZXF1ZXN0X2Nhc2VfbWl4ZWRfaGVhZGVyX25hbWVzKHNlbGYpOgotICAgICAgICByZXF1
ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KF9HT09EX1JFUVVFU1RfQ0FTRV9NSVhFRF9IRUFERVJfTkFN
RVMpCi0gICAgICAgIGhhbmRzaGFrZXIgPSBIYW5kc2hha2VyKHJlcXVlc3QsIG1vY2suTW9ja0Rp
c3BhdGNoZXIoKSkKLSAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKF9HT09EX1JFU1BPTlNFX0RFRkFVTFRfUE9SVCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICBk
ZWYgdGVzdF9nb29kX3JlcXVlc3Rfc2VjdXJlX2RlZmF1bHRfcG9ydChzZWxmKToKLSAgICAgICAg
cmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChfR09PRF9SRVFVRVNUKQotICAgICAgICByZXF1ZXN0
LmNvbm5lY3Rpb24ubG9jYWxfYWRkciA9ICgnMC4wLjAuMCcsIDQ0MykKLSAgICAgICAgcmVxdWVz
dC5pc19odHRwc18gPSBUcnVlCi0gICAgICAgIGhhbmRzaGFrZXIgPSBIYW5kc2hha2VyKHJlcXVl
c3QsIG1vY2suTW9ja0Rpc3BhdGNoZXIoKSkKLSAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hh
a2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9HT09EX1JFU1BPTlNFX1NFQ1VSRSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3NhbXBsZScsIHJlcXVlc3Qud3NfcHJvdG9jb2wp
Ci0KLSAgICBkZWYgdGVzdF9nb29kX3JlcXVlc3Rfbm9uZGVmYXVsdF9wb3J0KHNlbGYpOgotICAg
ICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KF9HT09EX1JFUVVFU1RfTk9OREVGQVVMVF9Q
T1JUKQotICAgICAgICBoYW5kc2hha2VyID0gSGFuZHNoYWtlcihyZXF1ZXN0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9jay5Nb2NrRGlzcGF0Y2hlcigpKQot
ICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoX0dPT0RfUkVTUE9OU0VfTk9OREVGQVVMVF9QT1JULAotICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgnc2FtcGxlJywgcmVxdWVzdC53c19wcm90b2NvbCkKLQotICAgIGRlZiB0ZXN0X2dv
b2RfcmVxdWVzdF9zZWN1cmVfbm9uX2RlZmF1bHRfcG9ydChzZWxmKToKLSAgICAgICAgcmVxdWVz
dCA9IF9jcmVhdGVfcmVxdWVzdChfR09PRF9SRVFVRVNUX05PTkRFRkFVTFRfUE9SVCkKLSAgICAg
ICAgcmVxdWVzdC5pc19odHRwc18gPSBUcnVlCi0gICAgICAgIGhhbmRzaGFrZXIgPSBIYW5kc2hh
a2VyKHJlcXVlc3QsIG1vY2suTW9ja0Rpc3BhdGNoZXIoKSkKLSAgICAgICAgaGFuZHNoYWtlci5k
b19oYW5kc2hha2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9HT09EX1JFU1BPTlNFX1NF
Q1VSRV9OT05ERUYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9u
LndyaXR0ZW5fZGF0YSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdzYW1wbGUnLCByZXF1
ZXN0LndzX3Byb3RvY29sKQotCi0gICAgZGVmIHRlc3RfZ29vZF9yZXF1ZXN0X2RlZmF1bHRfbm9f
cHJvdG9jb2woc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoX0dPT0Rf
UkVRVUVTVF9OT19QUk9UT0NPTCkKLSAgICAgICAgaGFuZHNoYWtlciA9IEhhbmRzaGFrZXIocmVx
dWVzdCwgbW9jay5Nb2NrRGlzcGF0Y2hlcigpKQotICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRz
aGFrZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX0dPT0RfUkVTUE9OU0VfTk9fUFJPVE9D
T0wsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5f
ZGF0YSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIHJlcXVlc3Qud3NfcHJvdG9j
b2wpCi0KLSAgICBkZWYgdGVzdF9nb29kX3JlcXVlc3Rfb3B0aW9uYWxfaGVhZGVycyhzZWxmKToK
LSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChfR09PRF9SRVFVRVNUX1dJVEhfT1BU
SU9OQUxfSEVBREVSUykKLSAgICAgICAgaGFuZHNoYWtlciA9IEhhbmRzaGFrZXIocmVxdWVzdCwg
bW9jay5Nb2NrRGlzcGF0Y2hlcigpKQotICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0FWYWx1ZScsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgcmVxdWVzdC5oZWFkZXJzX2luWydBS2V5J10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5oZWFkZXJzX2luWydFbXB0
eVZhbHVlJ10pCi0KLSAgICBkZWYgdGVzdF9nb29kX3JlcXVlc3Rfd2l0aF9ub25wcmludGFibGVf
a2V5KHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KF9HT09EX1JFUVVF
U1RfV0lUSF9OT05QUklOVEFCTEVfS0VZKQotICAgICAgICBoYW5kc2hha2VyID0gSGFuZHNoYWtl
cihyZXF1ZXN0LCBtb2NrLk1vY2tEaXNwYXRjaGVyKCkpCi0gICAgICAgIGhhbmRzaGFrZXIuZG9f
aGFuZHNoYWtlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfR09PRF9SRVNQT05TRV9XSVRI
X05PTlBSSU5UQUJMRV9LRVksCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25u
ZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdzYW1wbGUn
LCByZXF1ZXN0LndzX3Byb3RvY29sKQotCi0gICAgZGVmIHRlc3RfZ29vZF9yZXF1ZXN0X3dpdGhf
cXVlcnlfcGFydChzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChfR09P
RF9SRVFVRVNUX1dJVEhfUVVFUllfUEFSVCkKLSAgICAgICAgaGFuZHNoYWtlciA9IEhhbmRzaGFr
ZXIocmVxdWVzdCwgbW9jay5Nb2NrRGlzcGF0Y2hlcigpKQotICAgICAgICBoYW5kc2hha2VyLmRv
X2hhbmRzaGFrZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX0dPT0RfUkVTUE9OU0VfV0lU
SF9RVUVSWV9QQVJULAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlv
bi53cml0dGVuX2RhdGEoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnd3M6Ly9leGFtcGxl
LmNvbS9kZW1vP2U9bWMyJywgcmVxdWVzdC53c19sb2NhdGlvbikKLQotICAgIGRlZiB0ZXN0X2Jh
ZF9yZXF1ZXN0cyhzZWxmKToKLSAgICAgICAgZm9yIHJlcXVlc3QgaW4gbWFwKF9jcmVhdGVfcmVx
dWVzdCwgX0JBRF9SRVFVRVNUUyk6Ci0gICAgICAgICAgICBoYW5kc2hha2VyID0gSGFuZHNoYWtl
cihyZXF1ZXN0LCBtb2NrLk1vY2tEaXNwYXRjaGVyKCkpCi0gICAgICAgICAgICBzZWxmLmFzc2Vy
dFJhaXNlcyhIYW5kc2hha2VFeGNlcHRpb24sIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKQotCi0K
LWNsYXNzIEh5QmkwMFZhbGlkYXRlU3VicHJvdG9jb2xUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
LSAgICBkZWYgdGVzdF92YWxpZGF0ZV9zdWJwcm90b2NvbChzZWxmKToKLSAgICAgICAgIyBzaG91
bGQgc3VjY2VlZC4KLSAgICAgICAgX3ZhbGlkYXRlX3N1YnByb3RvY29sKCdzYW1wbGUnKQotICAg
ICAgICBfdmFsaWRhdGVfc3VicHJvdG9jb2woJ1NhbXBsZScpCi0gICAgICAgIF92YWxpZGF0ZV9z
dWJwcm90b2NvbCgnc2FtcGxlXHg3ZXByb3RvY29sJykKLSAgICAgICAgX3ZhbGlkYXRlX3N1YnBy
b3RvY29sKCdzYW1wbGVceDIwcHJvdG9jb2wnKQotCi0gICAgICAgICMgc2hvdWxkIGZhaWwuCi0g
ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEhhbmRzaGFrZUV4Y2VwdGlvbiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgX3ZhbGlkYXRlX3N1YnByb3RvY29sLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSGFuZHNoYWtlRXhjZXB0aW9u
LAotICAgICAgICAgICAgICAgICAgICAgICAgICBfdmFsaWRhdGVfc3VicHJvdG9jb2wsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICdzYW1wbGVceDE5cHJvdG9jb2wnKQotICAgICAgICBzZWxm
LmFzc2VydFJhaXNlcyhIYW5kc2hha2VFeGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgIF92YWxpZGF0ZV9zdWJwcm90b2NvbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Nh
bXBsZVx4N2Zwcm90b2NvbCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEhhbmRzaGFrZUV4
Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZhbGlkYXRlX3N1YnByb3RvY29s
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAjICJKYXBhbiIgaW4gSmFwYW5lc2UKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgdSdcdTY1ZTVcdTY3MmMnKQotCi0KLWlmIF9fbmFtZV9fID09
ICdfX21haW5fXyc6Ci0gICAgdW5pdHRlc3QubWFpbigpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9odHRwX2hlYWRlcl91dGlsLnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90
ZXN0L3Rlc3RfaHR0cF9oZWFkZXJfdXRpbC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNDM2ZGM1N2MzNzMxMDcxZmUyOTAxOTE5ZTMzZjI0YzFiNTU5ZjYwNS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9odHRwX2hl
YWRlcl91dGlsLnB5CisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAotIyEvdXNyL2Jpbi9l
bnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRz
IHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0j
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMg
ZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMg
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
IyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
IyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJUZXN0cyBmb3IgaHR0cF9oZWFk
ZXJfdXRpbCBtb2R1bGUuIiIiCi0KLQotaW1wb3J0IHVuaXR0ZXN0Ci0KLWZyb20gbW9kX3B5d2Vi
c29ja2V0IGltcG9ydCBodHRwX2hlYWRlcl91dGlsCi0KLQotY2xhc3MgVW5pdFRlc3QodW5pdHRl
c3QuVGVzdENhc2UpOgotICAgICIiIkEgdW5pdHRlc3QgZm9yIGh0dHBfaGVhZGVyX3V0aWwgbW9k
dWxlLiIiIgotCi0gICAgZGVmIHRlc3RfcGFyc2VfcmVsYXRpdmVfdXJpKHNlbGYpOgotICAgICAg
ICBob3N0LCBwb3J0LCByZXNvdXJjZSA9IGh0dHBfaGVhZGVyX3V0aWwucGFyc2VfdXJpKCcvd3Mv
dGVzdCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgaG9zdCkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChOb25lLCBwb3J0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcvd3Mv
dGVzdCcsIHJlc291cmNlKQotCi0gICAgZGVmIHRlc3RfcGFyc2VfYWJzb2x1dGVfdXJpKHNlbGYp
OgotICAgICAgICBob3N0LCBwb3J0LCByZXNvdXJjZSA9IGh0dHBfaGVhZGVyX3V0aWwucGFyc2Vf
dXJpKAotICAgICAgICAgICAgJ3dzOi8vbG9jYWxob3N0OjEwMDgwL3dzL3Rlc3QnKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdsb2NhbGhvc3QnLCBob3N0KQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKDEwMDgwLCBwb3J0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcvd3MvdGVzdCcs
IHJlc291cmNlKQotCi0gICAgICAgIGhvc3QsIHBvcnQsIHJlc291cmNlID0gaHR0cF9oZWFkZXJf
dXRpbC5wYXJzZV91cmkoCi0gICAgICAgICAgICAnd3M6Ly9leGFtcGxlLmNvbS93cy90ZXN0JykK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZXhhbXBsZS5jb20nLCBob3N0KQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKDgwLCBwb3J0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcvd3Mv
dGVzdCcsIHJlc291cmNlKQotCi0gICAgICAgIGhvc3QsIHBvcnQsIHJlc291cmNlID0gaHR0cF9o
ZWFkZXJfdXRpbC5wYXJzZV91cmkoCi0gICAgICAgICAgICAnd3NzOi8vZXhhbXBsZS5jb20vJykK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZXhhbXBsZS5jb20nLCBob3N0KQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKDQ0MywgcG9ydCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnLycs
IHJlc291cmNlKQotCi0gICAgICAgIGhvc3QsIHBvcnQsIHJlc291cmNlID0gaHR0cF9oZWFkZXJf
dXRpbC5wYXJzZV91cmkoCi0gICAgICAgICAgICAnd3M6Ly9leGFtcGxlLmNvbTo4MDgwJykKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZXhhbXBsZS5jb20nLCBob3N0KQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKDgwODAsIHBvcnQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy8nLCBy
ZXNvdXJjZSkKLQotICAgIGRlZiB0ZXN0X3BhcnNlX2ludmFsaWRfdXJpKHNlbGYpOgotICAgICAg
ICBob3N0LCBwb3J0LCByZXNvdXJjZSA9IGh0dHBfaGVhZGVyX3V0aWwucGFyc2VfdXJpKCd3czov
Ly8nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIHJlc291cmNlKQotCi0gICAgICAg
IGhvc3QsIHBvcnQsIHJlc291cmNlID0gaHR0cF9oZWFkZXJfdXRpbC5wYXJzZV91cmkoJ3dzOi8v
bG9jYWxob3N0OicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgcmVzb3VyY2UpCi0K
LSAgICAgICAgaG9zdCwgcG9ydCwgcmVzb3VyY2UgPSBodHRwX2hlYWRlcl91dGlsLnBhcnNlX3Vy
aSgnd3M6Ly9sb2NhbGhvc3Q6L3dzJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBy
ZXNvdXJjZSkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHVuaXR0ZXN0Lm1h
aW4oKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3Rf
bWVtb3JpemluZ2ZpbGUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9tZW1vcml6aW5nZmlsZS5weQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGYxYjhlZWY0MzM3OGE5YjAwNjI1ZjIyMGM5N2Zl
MjJmNzQwYThmNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L3Rlc3QvdGVzdF9tZW1vcml6aW5nZmlsZS5weQorKysgL2Rldi9udWxsCkBAIC0xLDEw
NCArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMTEsIEdv
b2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0K
LSIiIlRlc3RzIGZvciBtZW1vcml6aW5nZmlsZSBtb2R1bGUuIiIiCi0KLQotaW1wb3J0IFN0cmlu
Z0lPCi1pbXBvcnQgdW5pdHRlc3QKLQotaW1wb3J0IHNldF9zeXNfcGF0aCAgIyBVcGRhdGUgc3lz
LnBhdGggdG8gbG9jYXRlIG1vZF9weXdlYnNvY2tldCBtb2R1bGUuCi0KLWZyb20gbW9kX3B5d2Vi
c29ja2V0IGltcG9ydCBtZW1vcml6aW5nZmlsZQotCi0KLWNsYXNzIFV0aWxUZXN0KHVuaXR0ZXN0
LlRlc3RDYXNlKToKLSAgICAiIiJBIHVuaXR0ZXN0IGZvciBtZW1vcml6aW5nZmlsZSBtb2R1bGUu
IiIiCi0KLSAgICBkZWYgY2hlY2soc2VsZiwgbWVtb3JpemluZ19maWxlLCBudW1fcmVhZCwgZXhw
ZWN0ZWRfbGlzdCk6Ci0gICAgICAgIGZvciB1bnVzZWQgaW4gcmFuZ2UobnVtX3JlYWQpOgotICAg
ICAgICAgICAgbWVtb3JpemluZ19maWxlLnJlYWRsaW5lKCkKLSAgICAgICAgYWN0dWFsX2xpc3Qg
PSBtZW1vcml6aW5nX2ZpbGUuZ2V0X21lbW9yaXplZF9saW5lcygpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGVuKGV4cGVjdGVkX2xpc3QpLCBsZW4oYWN0dWFsX2xpc3QpKQotICAgICAgICBm
b3IgZXhwZWN0ZWQsIGFjdHVhbCBpbiB6aXAoZXhwZWN0ZWRfbGlzdCwgYWN0dWFsX2xpc3QpOgot
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgYWN0dWFsKQotCi0gICAgZGVm
IGNoZWNrX3dpdGhfc2l6ZShzZWxmLCBtZW1vcml6aW5nX2ZpbGUsIHJlYWRfc2l6ZSwgZXhwZWN0
ZWRfbGlzdCk6Ci0gICAgICAgIHJlYWRfbGlzdCA9IFtdCi0gICAgICAgIHJlYWRfbGluZSA9ICcn
Ci0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICBsaW5lID0gbWVtb3JpemluZ19maWxl
LnJlYWRsaW5lKHJlYWRfc2l6ZSkKLSAgICAgICAgICAgIGxpbmVfbGVuZ3RoID0gbGVuKGxpbmUp
Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobGluZV9sZW5ndGggPD0gcmVhZF9zaXplKQot
ICAgICAgICAgICAgaWYgbGluZV9sZW5ndGggPT0gMDoKLSAgICAgICAgICAgICAgICBpZiByZWFk
X2xpbmUgIT0gJyc6Ci0gICAgICAgICAgICAgICAgICAgIHJlYWRfbGlzdC5hcHBlbmQocmVhZF9s
aW5lKQotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICByZWFkX2xpbmUgKz0gbGlu
ZQotICAgICAgICAgICAgaWYgbGluZVtsaW5lX2xlbmd0aCAtIDFdID09ICdcbic6Ci0gICAgICAg
ICAgICAgICAgcmVhZF9saXN0LmFwcGVuZChyZWFkX2xpbmUpCi0gICAgICAgICAgICAgICAgcmVh
ZF9saW5lID0gJycKLSAgICAgICAgYWN0dWFsX2xpc3QgPSBtZW1vcml6aW5nX2ZpbGUuZ2V0X21l
bW9yaXplZF9saW5lcygpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGV4cGVjdGVkX2xp
c3QpLCBsZW4oYWN0dWFsX2xpc3QpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihleHBl
Y3RlZF9saXN0KSwgbGVuKHJlYWRfbGlzdCkpCi0gICAgICAgIGZvciBleHBlY3RlZCwgYWN0dWFs
LCByZWFkIGluIHppcChleHBlY3RlZF9saXN0LCBhY3R1YWxfbGlzdCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfbGlzdCk6Ci0gICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGV4cGVjdGVkLCBhY3R1YWwpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGV4cGVjdGVkLCByZWFkKQotCi0gICAgZGVmIHRlc3RfZ2V0X21lbW9yaXplZF9saW5lcyhz
ZWxmKToKLSAgICAgICAgbWVtb3JpemluZ19maWxlID0gbWVtb3JpemluZ2ZpbGUuTWVtb3Jpemlu
Z0ZpbGUoU3RyaW5nSU8uU3RyaW5nSU8oCi0gICAgICAgICAgICAgICAgJ0hlbGxvXG5Xb3JsZFxu
V2VsY29tZScpKQotICAgICAgICBzZWxmLmNoZWNrKG1lbW9yaXppbmdfZmlsZSwgMywgWydIZWxs
b1xuJywgJ1dvcmxkXG4nLCAnV2VsY29tZSddKQotCi0gICAgZGVmIHRlc3RfZ2V0X21lbW9yaXpl
ZF9saW5lc19saW1pdF9tZW1vcml6ZWRfbGluZXMoc2VsZik6Ci0gICAgICAgIG1lbW9yaXppbmdf
ZmlsZSA9IG1lbW9yaXppbmdmaWxlLk1lbW9yaXppbmdGaWxlKFN0cmluZ0lPLlN0cmluZ0lPKAot
ICAgICAgICAgICAgICAgICdIZWxsb1xuV29ybGRcbldlbGNvbWUnKSwgMikKLSAgICAgICAgc2Vs
Zi5jaGVjayhtZW1vcml6aW5nX2ZpbGUsIDMsIFsnSGVsbG9cbicsICdXb3JsZFxuJ10pCi0KLSAg
ICBkZWYgdGVzdF9nZXRfbWVtb3JpemVkX2xpbmVzX2VtcHR5X2ZpbGUoc2VsZik6Ci0gICAgICAg
IG1lbW9yaXppbmdfZmlsZSA9IG1lbW9yaXppbmdmaWxlLk1lbW9yaXppbmdGaWxlKFN0cmluZ0lP
LlN0cmluZ0lPKAotICAgICAgICAgICAgICAgICcnKSkKLSAgICAgICAgc2VsZi5jaGVjayhtZW1v
cml6aW5nX2ZpbGUsIDEwLCBbXSkKLQotICAgIGRlZiB0ZXN0X2dldF9tZW1vcml6ZWRfbGluZXNf
d2l0aF9zaXplKHNlbGYpOgotICAgICAgICBmb3Igc2l6ZSBpbiByYW5nZSgxLCAxMCk6Ci0gICAg
ICAgICAgICBtZW1vcml6aW5nX2ZpbGUgPSBtZW1vcml6aW5nZmlsZS5NZW1vcml6aW5nRmlsZShT
dHJpbmdJTy5TdHJpbmdJTygKLSAgICAgICAgICAgICAgICAnSGVsbG9cbldvcmxkXG5XZWxjb21l
JykpCi0gICAgICAgICAgICBzZWxmLmNoZWNrX3dpdGhfc2l6ZShtZW1vcml6aW5nX2ZpbGUsIHNp
emUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ0hlbGxvXG4nLCAnV29ybGRc
bicsICdXZWxjb21lJ10pCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdW5pdHRl
c3QubWFpbigpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3Qv
dGVzdF9tb2NrLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RfbW9jay5weQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggN2RjMjNhNzNkOGZiMWEwN2FlYjNlNWFlOTQwMmNjODZiOGZjYzM2Ni4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVz
dF9tb2NrLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTQ1ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52
IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRp
c3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiVGVzdHMgZm9yIG1vY2sgbW9kdWxl
LiIiIgotCi0KLWltcG9ydCBRdWV1ZQotaW1wb3J0IHRocmVhZGluZwotaW1wb3J0IHVuaXR0ZXN0
Ci0KLWltcG9ydCBzZXRfc3lzX3BhdGggICMgVXBkYXRlIHN5cy5wYXRoIHRvIGxvY2F0ZSBtb2Rf
cHl3ZWJzb2NrZXQgbW9kdWxlLgotCi1mcm9tIHRlc3QgaW1wb3J0IG1vY2sKLQotCi1jbGFzcyBN
b2NrQ29ublRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIkEgdW5pdHRlc3QgZm9yIE1v
Y2tDb25uIGNsYXNzLiIiIgotCi0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLl9j
b25uID0gbW9jay5Nb2NrQ29ubignQUJDXHJcbkRFRkdcclxuXHJcbkhJSksnKQotCi0gICAgZGVm
IHRlc3RfcmVhZGxpbmUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0FCQ1xyXG4n
LCBzZWxmLl9jb25uLnJlYWRsaW5lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0RFRkdc
clxuJywgc2VsZi5fY29ubi5yZWFkbGluZSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdc
clxuJywgc2VsZi5fY29ubi5yZWFkbGluZSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdI
SUpLJywgc2VsZi5fY29ubi5yZWFkbGluZSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcn
LCBzZWxmLl9jb25uLnJlYWRsaW5lKCkpCi0KLSAgICBkZWYgdGVzdF9yZWFkKHNlbGYpOgotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKCdBQkNcclxuRCcsIHNlbGYuX2Nvbm4ucmVhZCg2KSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnRUZHXHJcblxyXG5ISScsIHNlbGYuX2Nvbm4ucmVhZCg5
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSksnLCBzZWxmLl9jb25uLnJlYWQoMTApKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLCBzZWxmLl9jb25uLnJlYWQoMTApKQotCi0gICAg
ZGVmIHRlc3RfcmVhZF9hbmRfcmVhZGxpbmUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJ0FCQ1xyXG5EJywgc2VsZi5fY29ubi5yZWFkKDYpKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCdFRkdcclxuJywgc2VsZi5fY29ubi5yZWFkbGluZSgpKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdcclxuSElKSycsIHNlbGYuX2Nvbm4ucmVhZCg5KSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgnJywgc2VsZi5fY29ubi5yZWFkbGluZSgpKQotCi0gICAgZGVmIHRlc3Rfd3JpdGUo
c2VsZik6Ci0gICAgICAgIHNlbGYuX2Nvbm4ud3JpdGUoJ0hlbGxvXHJcbicpCi0gICAgICAgIHNl
bGYuX2Nvbm4ud3JpdGUoJ1dvcmxkXHJcbicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hl
bGxvXHJcbldvcmxkXHJcbicsIHNlbGYuX2Nvbm4ud3JpdHRlbl9kYXRhKCkpCi0KLQotY2xhc3Mg
TW9ja0Jsb2NraW5nQ29ublRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIkEgdW5pdHRl
c3QgZm9yIE1vY2tCbG9ja2luZ0Nvbm4gY2xhc3MuIiIiCi0KLSAgICBkZWYgdGVzdF9yZWFkKHNl
bGYpOgotICAgICAgICAiIiJUZXN0cyB0aGF0IGRhdGEgcHV0IHRvIE1vY2tCbG9ja2luZ0Nvbm4g
YnkgcHV0X2J5dGVzIG1ldGhvZCBjYW4gYmUKLSAgICAgICAgcmVhZCBmcm9tIGl0LgotICAgICAg
ICAiIiIKLQotICAgICAgICBjbGFzcyBMaW5lUmVhZGVyKHRocmVhZGluZy5UaHJlYWQpOgotICAg
ICAgICAgICAgIiIiQSB0ZXN0IGNsYXNzIHRoYXQgbGF1bmNoZXMgYSB0aHJlYWQsIGNhbGxzIHJl
YWRsaW5lIG9uIHRoZQotICAgICAgICAgICAgc3BlY2lmaWVkIGNvbm4gcmVwZWF0ZWRseSBhbmQg
cHV0cyB0aGUgcmVhZCBkYXRhIHRvIHRoZSBzcGVjaWZpZWQKLSAgICAgICAgICAgIHF1ZXVlLgot
ICAgICAgICAgICAgIiIiCi0KLSAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb25uLCBx
dWV1ZSk6Ci0gICAgICAgICAgICAgICAgdGhyZWFkaW5nLlRocmVhZC5fX2luaXRfXyhzZWxmKQot
ICAgICAgICAgICAgICAgIHNlbGYuX3F1ZXVlID0gcXVldWUKLSAgICAgICAgICAgICAgICBzZWxm
Ll9jb25uID0gY29ubgotICAgICAgICAgICAgICAgIHNlbGYuc2V0RGFlbW9uKFRydWUpCi0gICAg
ICAgICAgICAgICAgc2VsZi5zdGFydCgpCi0KLSAgICAgICAgICAgIGRlZiBydW4oc2VsZik6Ci0g
ICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHNl
bGYuX2Nvbm4ucmVhZGxpbmUoKQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9xdWV1ZS5wdXQo
ZGF0YSkKLQotICAgICAgICBjb25uID0gbW9jay5Nb2NrQmxvY2tpbmdDb25uKCkKLSAgICAgICAg
cXVldWUgPSBRdWV1ZS5RdWV1ZSgpCi0gICAgICAgIHJlYWRlciA9IExpbmVSZWFkZXIoY29ubiwg
cXVldWUpCi0gICAgICAgIHNlbGYuZmFpbFVubGVzcyhxdWV1ZS5lbXB0eSgpKQotICAgICAgICBj
b25uLnB1dF9ieXRlcygnRm9vIGJhclxyXG4nKQotICAgICAgICByZWFkID0gcXVldWUuZ2V0KCkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnRm9vIGJhclxyXG4nLCByZWFkKQotCi0KLWNsYXNz
IE1vY2tUYWJsZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIkEgdW5pdHRlc3QgZm9y
IE1vY2tUYWJsZSBjbGFzcy4iIiIKLQotICAgIGRlZiB0ZXN0X2NyZWF0ZV9mcm9tX2RpY3Qoc2Vs
Zik6Ci0gICAgICAgIHRhYmxlID0gbW9jay5Nb2NrVGFibGUoeydLZXknOiAnVmFsdWUnfSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZS5nZXQoJ0tFWScpKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdWYWx1ZScsIHRhYmxlWydrZXknXSkKLQotICAgIGRlZiB0ZXN0
X2NyZWF0ZV9mcm9tX2xpc3Qoc2VsZik6Ci0gICAgICAgIHRhYmxlID0gbW9jay5Nb2NrVGFibGUo
WygnS2V5JywgJ1ZhbHVlJyldKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdWYWx1ZScsIHRh
YmxlLmdldCgnS0VZJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFibGVb
J2tleSddKQotCi0gICAgZGVmIHRlc3RfY3JlYXRlX2Zyb21fdHVwbGUoc2VsZik6Ci0gICAgICAg
IHRhYmxlID0gbW9jay5Nb2NrVGFibGUoKCgnS2V5JywgJ1ZhbHVlJyksKSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZS5nZXQoJ0tFWScpKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCdWYWx1ZScsIHRhYmxlWydrZXknXSkKLQotICAgIGRlZiB0ZXN0X3NldF9hbmRf
Z2V0KHNlbGYpOgotICAgICAgICB0YWJsZSA9IG1vY2suTW9ja1RhYmxlKCkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChOb25lLCB0YWJsZS5nZXQoJ0tleScpKQotICAgICAgICB0YWJsZVsnS2V5
J10gPSAnVmFsdWUnCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFibGUuZ2V0
KCdLZXknKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZS5nZXQoJ2tl
eScpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdWYWx1ZScsIHRhYmxlLmdldCgnS0VZJykp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFibGVbJ0tleSddKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdWYWx1ZScsIHRhYmxlWydrZXknXSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZVsnS0VZJ10pCi0KLQotaWYgX19uYW1lX18gPT0gJ19f
bWFpbl9fJzoKLSAgICB1bml0dGVzdC5tYWluKCkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X21zZ3V0aWwucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9tc2d1
dGlsLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMzQ3MzVjNjMwNDdkMmVkYjIz
OGNiNTI1NWFkNDc0YTJlNGQwYTgzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X21zZ3V0aWwucHkKKysrIC9kZXYvbnVsbApAQCAt
MSwxMzQ3ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAx
MiwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0j
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0KLQotIiIiVGVzdHMgZm9yIG1zZ3V0aWwgbW9kdWxlLiIiIgotZnJvbSBfX2Z1dHVyZV9fIGlt
cG9ydCBwcmludF9mdW5jdGlvbgotCi0KLWltcG9ydCBhcnJheQotaW1wb3J0IFF1ZXVlCi1pbXBv
cnQgcmFuZG9tCi1pbXBvcnQgc3RydWN0Ci1pbXBvcnQgdW5pdHRlc3QKLWltcG9ydCB6bGliCi0K
LWltcG9ydCBzZXRfc3lzX3BhdGggICMgVXBkYXRlIHN5cy5wYXRoIHRvIGxvY2F0ZSBtb2RfcHl3
ZWJzb2NrZXQgbW9kdWxlLgotCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCi1m
cm9tIG1vZF9weXdlYnNvY2tldC5leHRlbnNpb25zIGltcG9ydCBEZWZsYXRlRnJhbWVFeHRlbnNp
b25Qcm9jZXNzb3IKLWZyb20gbW9kX3B5d2Vic29ja2V0LmV4dGVuc2lvbnMgaW1wb3J0IFBlck1l
c3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBv
cnQgbXNndXRpbAotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuc3RyZWFtIGltcG9ydCBJbnZhbGlkVVRG
OEV4Y2VwdGlvbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuc3RyZWFtIGltcG9ydCBTdHJlYW0KLWZy
b20gbW9kX3B5d2Vic29ja2V0LnN0cmVhbSBpbXBvcnQgU3RyZWFtSGl4aWU3NQotZnJvbSBtb2Rf
cHl3ZWJzb2NrZXQuc3RyZWFtIGltcG9ydCBTdHJlYW1PcHRpb25zCi1mcm9tIG1vZF9weXdlYnNv
Y2tldCBpbXBvcnQgdXRpbAotZnJvbSB0ZXN0IGltcG9ydCBtb2NrCi0KLQotIyBXZSB1c2Ugb25l
IGZpeGVkIG5vbmNlIGZvciB0ZXN0aW5nIGluc3RlYWQgb2YgY3J5cHRvZ3JhcGhpY2FsbHkgc2Vj
dXJlIFBSTkcuCi1fTUFTS0lOR19OT05DRSA9ICdBQkNEJwotCi0KLWRlZiBfbWFza19oeWJpKGZy
YW1lKToKLSAgICBmcmFtZV9rZXkgPSBtYXAob3JkLCBfTUFTS0lOR19OT05DRSkKLSAgICBmcmFt
ZV9rZXlfbGVuID0gbGVuKGZyYW1lX2tleSkKLSAgICByZXN1bHQgPSBhcnJheS5hcnJheSgnQicp
Ci0gICAgcmVzdWx0LmZyb21zdHJpbmcoZnJhbWUpCi0gICAgY291bnQgPSAwCi0gICAgZm9yIGkg
aW4geHJhbmdlKGxlbihyZXN1bHQpKToKLSAgICAgICAgcmVzdWx0W2ldIF49IGZyYW1lX2tleVtj
b3VudF0KLSAgICAgICAgY291bnQgPSAoY291bnQgKyAxKSAlIGZyYW1lX2tleV9sZW4KLSAgICBy
ZXR1cm4gX01BU0tJTkdfTk9OQ0UgKyByZXN1bHQudG9zdHJpbmcoKQotCi0KLWRlZiBfaW5zdGFs
bF9leHRlbnNpb25fcHJvY2Vzc29yKHByb2Nlc3NvciwgcmVxdWVzdCwgc3RyZWFtX29wdGlvbnMp
OgotICAgIHJlc3BvbnNlID0gcHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoKQotICAg
IGlmIHJlc3BvbnNlIGlzIG5vdCBOb25lOgotICAgICAgICBwcm9jZXNzb3Iuc2V0dXBfc3RyZWFt
X29wdGlvbnMoc3RyZWFtX29wdGlvbnMpCi0gICAgICAgIHJlcXVlc3Qud3NfZXh0ZW5zaW9uX3By
b2Nlc3NvcnMuYXBwZW5kKHByb2Nlc3NvcikKLQotCi1kZWYgX2NyZWF0ZV9yZXF1ZXN0X2Zyb21f
cmF3ZGF0YSgKLSAgICAgICAgcmVhZF9kYXRhLAotICAgICAgICBkZWZsYXRlX2ZyYW1lX3JlcXVl
c3Q9Tm9uZSwKLSAgICAgICAgcGVybWVzc2FnZV9kZWZsYXRlX3JlcXVlc3Q9Tm9uZSk6Ci0gICAg
cmVxID0gbW9jay5Nb2NrUmVxdWVzdChjb25uZWN0aW9uPW1vY2suTW9ja0Nvbm4oJycuam9pbihy
ZWFkX2RhdGEpKSkKLSAgICByZXEud3NfdmVyc2lvbiA9IGNvbW1vbi5WRVJTSU9OX0hZQklfTEFU
RVNUCi0gICAgcmVxLndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzID0gW10KLQotICAgIHByb2Nlc3Nv
ciA9IE5vbmUKLSAgICBpZiBkZWZsYXRlX2ZyYW1lX3JlcXVlc3QgaXMgbm90IE5vbmU6Ci0gICAg
ICAgIHByb2Nlc3NvciA9IERlZmxhdGVGcmFtZUV4dGVuc2lvblByb2Nlc3NvcihkZWZsYXRlX2Zy
YW1lX3JlcXVlc3QpCi0gICAgZWxpZiBwZXJtZXNzYWdlX2RlZmxhdGVfcmVxdWVzdCBpcyBub3Qg
Tm9uZToKLSAgICAgICAgcHJvY2Vzc29yID0gUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9j
ZXNzb3IoCi0gICAgICAgICAgICAgICAgcGVybWVzc2FnZV9kZWZsYXRlX3JlcXVlc3QpCi0KLSAg
ICBzdHJlYW1fb3B0aW9ucyA9IFN0cmVhbU9wdGlvbnMoKQotICAgIGlmIHByb2Nlc3NvciBpcyBu
b3QgTm9uZToKLSAgICAgICAgX2luc3RhbGxfZXh0ZW5zaW9uX3Byb2Nlc3Nvcihwcm9jZXNzb3Is
IHJlcSwgc3RyZWFtX29wdGlvbnMpCi0gICAgcmVxLndzX3N0cmVhbSA9IFN0cmVhbShyZXEsIHN0
cmVhbV9vcHRpb25zKQotCi0gICAgcmV0dXJuIHJlcQotCi0KLWRlZiBfY3JlYXRlX3JlcXVlc3Qo
KmZyYW1lcyk6Ci0gICAgIiIiQ3JlYXRlcyBNb2NrUmVxdWVzdCB1c2luZyBkYXRhIGdpdmVuIGFz
IGZyYW1lcy4KLQotICAgIGZyYW1lcyB3aWxsIGJlIHJldHVybmVkIG9uIGNhbGxpbmcgcmVxdWVz
dC5jb25uZWN0aW9uLnJlYWQoKSB3aGVyZSByZXF1ZXN0Ci0gICAgaXMgTW9ja1JlcXVlc3QgcmV0
dXJuZWQgYnkgdGhpcyBmdW5jdGlvbi4KLSAgICAiIiIKLQotICAgIHJlYWRfZGF0YSA9IFtdCi0g
ICAgZm9yIChoZWFkZXIsIGJvZHkpIGluIGZyYW1lczoKLSAgICAgICAgcmVhZF9kYXRhLmFwcGVu
ZChoZWFkZXIgKyBfbWFza19oeWJpKGJvZHkpKQotCi0gICAgcmV0dXJuIF9jcmVhdGVfcmVxdWVz
dF9mcm9tX3Jhd2RhdGEocmVhZF9kYXRhKQotCi0KLWRlZiBfY3JlYXRlX2Jsb2NraW5nX3JlcXVl
c3QoKToKLSAgICAiIiJDcmVhdGVzIE1vY2tSZXF1ZXN0LgotCi0gICAgRGF0YSB3cml0dGVuIHRv
IGEgTW9ja1JlcXVlc3QgY2FuIGJlIHJlYWQgb3V0IGJ5IGNhbGxpbmcKLSAgICByZXF1ZXN0LmNv
bm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkuCi0gICAgIiIiCi0KLSAgICByZXEgPSBtb2NrLk1vY2tS
ZXF1ZXN0KGNvbm5lY3Rpb249bW9jay5Nb2NrQmxvY2tpbmdDb25uKCkpCi0gICAgcmVxLndzX3Zl
cnNpb24gPSBjb21tb24uVkVSU0lPTl9IWUJJX0xBVEVTVAotICAgIHN0cmVhbV9vcHRpb25zID0g
U3RyZWFtT3B0aW9ucygpCi0gICAgcmVxLndzX3N0cmVhbSA9IFN0cmVhbShyZXEsIHN0cmVhbV9v
cHRpb25zKQotICAgIHJldHVybiByZXEKLQotCi1kZWYgX2NyZWF0ZV9yZXF1ZXN0X2hpeGllNzUo
cmVhZF9kYXRhPScnKToKLSAgICByZXEgPSBtb2NrLk1vY2tSZXF1ZXN0KGNvbm5lY3Rpb249bW9j
ay5Nb2NrQ29ubihyZWFkX2RhdGEpKQotICAgIHJlcS53c19zdHJlYW0gPSBTdHJlYW1IaXhpZTc1
KHJlcSkKLSAgICByZXR1cm4gcmVxCi0KLQotZGVmIF9jcmVhdGVfYmxvY2tpbmdfcmVxdWVzdF9o
aXhpZTc1KCk6Ci0gICAgcmVxID0gbW9jay5Nb2NrUmVxdWVzdChjb25uZWN0aW9uPW1vY2suTW9j
a0Jsb2NraW5nQ29ubigpKQotICAgIHJlcS53c19zdHJlYW0gPSBTdHJlYW1IaXhpZTc1KHJlcSkK
LSAgICByZXR1cm4gcmVxCi0KLQotY2xhc3MgQmFzaWNNZXNzYWdlVGVzdCh1bml0dGVzdC5UZXN0
Q2FzZSk6Ci0gICAgIiIiQmFzaWMgdGVzdHMgZm9yIFN0cmVhbS4iIiIKLQotICAgIGRlZiB0ZXN0
X3NlbmRfbWVzc2FnZShzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgp
Ci0gICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxsbycpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ1x4ODFceDA1SGVsbG8nLCByZXF1ZXN0LmNvbm5lY3Rpb24ud3Jp
dHRlbl9kYXRhKCkpCi0KLSAgICAgICAgcGF5bG9hZCA9ICdhJyAqIDEyNQotICAgICAgICByZXF1
ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCkKLSAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVx
dWVzdCwgcGF5bG9hZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHg4MVx4N2QnICsgcGF5
bG9hZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRl
bl9kYXRhKCkpCi0KLSAgICBkZWYgdGVzdF9zZW5kX21lZGl1bV9tZXNzYWdlKHNlbGYpOgotICAg
ICAgICBwYXlsb2FkID0gJ2EnICogMTI2Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVl
c3QoKQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCBwYXlsb2FkKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDgxXHg3ZVx4MDBceDdlJyArIHBheWxvYWQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQot
Ci0gICAgICAgIHBheWxvYWQgPSAnYScgKiAoKDEgPDwgMTYpIC0gMSkKLSAgICAgICAgcmVxdWVz
dCA9IF9jcmVhdGVfcmVxdWVzdCgpCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVl
c3QsIHBheWxvYWQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4ODFceDdlXHhmZlx4ZmYn
ICsgcGF5bG9hZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24u
d3JpdHRlbl9kYXRhKCkpCi0KLSAgICBkZWYgdGVzdF9zZW5kX2xhcmdlX21lc3NhZ2Uoc2VsZik6
Ci0gICAgICAgIHBheWxvYWQgPSAnYScgKiAoMSA8PCAxNikKLSAgICAgICAgcmVxdWVzdCA9IF9j
cmVhdGVfcmVxdWVzdCgpCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsIHBh
eWxvYWQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4ODFceDdmXHgwMFx4MDBceDAwXHgw
MFx4MDBceDAxXHgwMFx4MDAnICsgcGF5bG9hZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICBkZWYgdGVzdF9zZW5kX21l
c3NhZ2VfdW5pY29kZShzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgp
Ci0gICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsIHUnXHU2NWU1JykKLSAgICAg
ICAgIyBVKzY1ZTUgaXMgZW5jb2RlZCBhcyBlNiw5NyxhNSBpbiBVVEYtOAotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCdceDgxXHgwM1x4ZTZceDk3XHhhNScsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3Rf
c2VuZF9tZXNzYWdlX2ZyYWdtZW50cyhzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVf
cmVxdWVzdCgpCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxsbycs
IEZhbHNlKQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnICcsIEZhbHNl
KQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnV29ybGQnLCBGYWxzZSkK
LSAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJyEnLCBUcnVlKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdceDAxXHgwNUhlbGxvXHgwMFx4MDEgXHgwMFx4MDVXb3JsZFx4
ODBceDAxIScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndy
aXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9mcmFnbWVudHNfaW1tZWRpYXRlX3pl
cm9fdGVybWluYXRpb24oc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3Qo
KQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnSGVsbG8gV29ybGQhJywg
RmFsc2UpCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICcnLCBUcnVlKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDAxXHgwY0hlbGxvIFdvcmxkIVx4ODBceDAwJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRh
KCkpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX21lc3NhZ2Uoc2VsZik6Ci0gICAgICAgIHJlcXVl
c3QgPSBfY3JlYXRlX3JlcXVlc3QoCi0gICAgICAgICAgICAoJ1x4ODFceDg1JywgJ0hlbGxvJyks
ICgnXHg4MVx4ODYnLCAnV29ybGQhJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxv
JywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ1dvcmxkIScsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotCi0gICAg
ICAgIHBheWxvYWQgPSAnYScgKiAxMjUKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVz
dCgoJ1x4ODFceGZkJywgcGF5bG9hZCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF5bG9h
ZCwgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0KLSAgICBkZWYgdGVzdF9yZWNl
aXZlX21lZGl1bV9tZXNzYWdlKHNlbGYpOgotICAgICAgICBwYXlsb2FkID0gJ2EnICogMTI2Ci0g
ICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKCdceDgxXHhmZVx4MDBceDdlJywgcGF5
bG9hZCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF5bG9hZCwgbXNndXRpbC5yZWNlaXZl
X21lc3NhZ2UocmVxdWVzdCkpCi0KLSAgICAgICAgcGF5bG9hZCA9ICdhJyAqICgoMSA8PCAxNikg
LSAxKQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCgnXHg4MVx4ZmVceGZmXHhm
ZicsIHBheWxvYWQpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBheWxvYWQsIG1zZ3V0aWwu
cmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9sYXJnZV9t
ZXNzYWdlKHNlbGYpOgotICAgICAgICBwYXlsb2FkID0gJ2EnICogKDEgPDwgMTYpCi0gICAgICAg
IHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoCi0gICAgICAgICAgICAoJ1x4ODFceGZmXHgwMFx4
MDBceDAwXHgwMFx4MDBceDAxXHgwMFx4MDAnLCBwYXlsb2FkKSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChwYXlsb2FkLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLQotICAg
IGRlZiB0ZXN0X3JlY2VpdmVfbGVuZ3RoX25vdF9lbmNvZGVkX3VzaW5nX21pbmltYWxfbnVtYmVy
X29mX2J5dGVzKHNlbGYpOgotICAgICAgICAjIExvZyB3YXJuaW5nIG9uIHJlY2VpdmluZyBiYWQg
cGF5bG9hZCBsZW5ndGggZmllbGQgdGhhdCBkb2Vzbid0IHVzZQotICAgICAgICAjIG1pbmltYWwg
bnVtYmVyIG9mIGJ5dGVzIGJ1dCBjb250aW51ZSBwcm9jZXNzaW5nLgotCi0gICAgICAgIHBheWxv
YWQgPSAnYScKLSAgICAgICAgIyAxIGJ5dGUgY2FuIGJlIHJlcHJlc2VudGVkIHdpdGhvdXQgZXh0
ZW5kZWQgcGF5bG9hZCBsZW5ndGggZmllbGQuCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3Jl
cXVlc3QoCi0gICAgICAgICAgICAoJ1x4ODFceGZmXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw
MFx4MDEnLCBwYXlsb2FkKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXlsb2FkLCBtc2d1
dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLQotICAgIGRlZiB0ZXN0X3JlY2VpdmVfbWVz
c2FnZV91bmljb2RlKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCgn
XHg4MVx4ODMnLCAnXHhlNlx4OWNceGFjJykpCi0gICAgICAgICMgVSs2NzJjIGlzIGVuY29kZWQg
YXMgZTYsOWMsYWMgaW4gVVRGLTgKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1J1x1NjcyYycs
IG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotCi0gICAgZGVmIHRlc3RfcmVjZWl2
ZV9tZXNzYWdlX2Vycm9uZW91c191bmljb2RlKHNlbGYpOgotICAgICAgICAjIFx4ODAgYW5kIFx4
ODEgYXJlIGludmFsaWQgYXMgVVRGLTguCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVl
c3QoKCdceDgxXHg4MicsICdceDgwXHg4MScpKQotICAgICAgICAjIEludmFsaWQgY2hhcmFjdGVy
cyBzaG91bGQgcmFpc2UgSW52YWxpZFVURjhFeGNlcHRpb24KLSAgICAgICAgc2VsZi5hc3NlcnRS
YWlzZXMoSW52YWxpZFVURjhFeGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1z
Z3V0aWwucmVjZWl2ZV9tZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0
KQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9mcmFnbWVudHMoc2VsZik6Ci0gICAgICAgIHJlcXVl
c3QgPSBfY3JlYXRlX3JlcXVlc3QoCi0gICAgICAgICAgICAoJ1x4MDFceDg1JywgJ0hlbGxvJyks
Ci0gICAgICAgICAgICAoJ1x4MDBceDgxJywgJyAnKSwKLSAgICAgICAgICAgICgnXHgwMFx4ODUn
LCAnV29ybGQnKSwKLSAgICAgICAgICAgICgnXHg4MFx4ODEnLCAnIScpKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCdIZWxsbyBXb3JsZCEnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1
ZXN0KSkKLQotICAgIGRlZiB0ZXN0X3JlY2VpdmVfZnJhZ21lbnRzX3VuaWNvZGUoc2VsZik6Ci0g
ICAgICAgICMgVVRGLTggZW5jb2RlcyBVKzZmMjIgaW50byBlNmJjYTIgYW5kIFUrNWI1NyBpbnRv
IGU1YWQ5Ny4KLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgKLSAgICAgICAgICAg
ICgnXHgwMVx4ODInLCAnXHhlNlx4YmMnKSwKLSAgICAgICAgICAgICgnXHgwMFx4ODInLCAnXHhh
Mlx4ZTUnKSwKLSAgICAgICAgICAgICgnXHg4MFx4ODInLCAnXHhhZFx4OTcnKSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCh1J1x1NmYyMlx1NWI1NycsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdl
KHJlcXVlc3QpKQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9mcmFnbWVudHNfaW1tZWRpYXRlX3pl
cm9fdGVybWluYXRpb24oc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3Qo
Ci0gICAgICAgICAgICAoJ1x4MDFceDhjJywgJ0hlbGxvIFdvcmxkIScpLCAoJ1x4ODBceDgwJywg
JycpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdIZWxsbyBXb3JsZCEnLCBtc2d1dGlsLnJl
Y2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLQotICAgIGRlZiB0ZXN0X3JlY2VpdmVfZnJhZ21lbnRz
X2R1cGxpY2F0ZV9zdGFydChzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVz
dCgKLSAgICAgICAgICAgICgnXHgwMVx4ODUnLCAnSGVsbG8nKSwgKCdceDAxXHg4NScsICdXb3Js
ZCcpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhtc2d1dGlsLkludmFsaWRGcmFtZUV4Y2Vw
dGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2Us
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QpCi0KLSAgICBkZWYgdGVzdF9yZWNl
aXZlX2ZyYWdtZW50c19pbnRlcm1lZGlhdGVfYnV0X25vdF9zdGFydGVkKHNlbGYpOgotICAgICAg
ICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCgnXHgwMFx4ODUnLCAnSGVsbG8nKSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRSYWlzZXMobXNndXRpbC5JbnZhbGlkRnJhbWVFeGNlcHRpb24sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXF1ZXN0KQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9mcmFnbWVu
dHNfZW5kX2J1dF9ub3Rfc3RhcnRlZChzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVf
cmVxdWVzdCgoJ1x4ODBceDg1JywgJ0hlbGxvJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2Vz
KG1zZ3V0aWwuSW52YWxpZEZyYW1lRXhjZXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmVx
dWVzdCkKLQotICAgIGRlZiB0ZXN0X3JlY2VpdmVfbWVzc2FnZV9kaXNjYXJkKHNlbGYpOgotICAg
ICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KAotICAgICAgICAgICAgKCdceDhmXHg4Nics
ICdJR05PUkUnKSwgKCdceDgxXHg4NScsICdIZWxsbycpLAotICAgICAgICAgICAgKCdceDhmXHg4
OScsICdESVNSRUdBUkQnKSwgKCdceDgxXHg4NicsICdXb3JsZCEnKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRSYWlzZXMobXNndXRpbC5VbnN1cHBvcnRlZEZyYW1lRXhjZXB0aW9uLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZSwgcmVxdWVzdCkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVsbG8nLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1
ZXN0KSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMobXNndXRpbC5VbnN1cHBvcnRlZEZyYW1l
RXhjZXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtc2d1dGlsLnJlY2VpdmVfbWVz
c2FnZSwgcmVxdWVzdCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnV29ybGQhJywgbXNndXRp
bC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX2Nsb3Nl
KHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KAotICAgICAgICAgICAg
KCdceDg4XHg4YScsIHN0cnVjdC5wYWNrKCchSCcsIDEwMDApICsgJ0dvb2QgYnllJykpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVz
dCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTAwMCwgcmVxdWVzdC53c19jbG9zZV9jb2Rl
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdHb29kIGJ5ZScsIHJlcXVlc3Qud3NfY2xvc2Vf
cmVhc29uKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9sb25nZXN0X2Nsb3NlKHNlbGYpOgotICAgICAg
ICByZWFzb24gPSAnYScgKiAxMjMKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgK
LSAgICAgICAgICAgICgnXHg4OFx4ZmQnLAotICAgICAgICAgICAgIHN0cnVjdC5wYWNrKCchSCcs
IGNvbW1vbi5TVEFUVVNfTk9STUFMX0NMT1NVUkUpICsgcmVhc29uKSkKLSAgICAgICAgcmVxdWVz
dC53c19zdHJlYW0uY2xvc2VfY29ubmVjdGlvbihjb21tb24uU1RBVFVTX05PUk1BTF9DTE9TVVJF
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYXNvbikKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXF1ZXN0LndzX2Nsb3NlX2NvZGUsIGNvbW1vbi5TVEFU
VVNfTk9STUFMX0NMT1NVUkUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxdWVzdC53c19j
bG9zZV9yZWFzb24sIHJlYXNvbikKLQotICAgIGRlZiB0ZXN0X3NlbmRfY2xvc2VfdG9vX2xvbmco
c2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKQotICAgICAgICBzZWxm
LmFzc2VydFJhaXNlcyhtc2d1dGlsLkJhZE9wZXJhdGlvbkV4Y2VwdGlvbiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgU3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICBj
b21tb24uU1RBVFVTX05PUk1BTF9DTE9TVVJFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAn
YScgKiAxMjQpCi0KLSAgICBkZWYgdGVzdF9zZW5kX2Nsb3NlX2luY29uc2lzdGVudF9jb2RlX2Fu
ZF9yZWFzb24oc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKQotICAg
ICAgICAjIHJlYXNvbiBwYXJhbWV0ZXIgbXVzdCBub3QgYmUgc3BlY2lmaWVkIHdoZW4gY29kZSBp
cyBOb25lLgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhtc2d1dGlsLkJhZE9wZXJhdGlvbkV4
Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyZWFtLmNsb3NlX2Nvbm5lY3Rp
b24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnYScp
Ci0KLSAgICBkZWYgdGVzdF9zZW5kX3Bpbmcoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3Jl
YXRlX3JlcXVlc3QoKQotICAgICAgICBtc2d1dGlsLnNlbmRfcGluZyhyZXF1ZXN0LCAnSGVsbG8g
V29ybGQhJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHg4OVx4MGNIZWxsbyBXb3JsZCEn
LAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2Rh
dGEoKSkKLQotICAgIGRlZiB0ZXN0X3NlbmRfbG9uZ2VzdF9waW5nKHNlbGYpOgotICAgICAgICBy
ZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCkKLSAgICAgICAgbXNndXRpbC5zZW5kX3BpbmcocmVx
dWVzdCwgJ2EnICogMTI1KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDg5XHg3ZCcgKyAn
YScgKiAxMjUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndy
aXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9waW5nX3Rvb19sb25nKHNlbGYpOgot
ICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCkKLSAgICAgICAgc2VsZi5hc3NlcnRS
YWlzZXMobXNndXRpbC5CYWRPcGVyYXRpb25FeGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIG1zZ3V0aWwuc2VuZF9waW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1
ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAnYScgKiAxMjYpCi0KLSAgICBkZWYgdGVz
dF9yZWNlaXZlX3Bpbmcoc2VsZik6Ci0gICAgICAgICIiIlRlc3RzIHJlY2VpdmluZyBhIHBpbmcg
Y29udHJvbCBmcmFtZS4iIiIKLQotICAgICAgICBkZWYgaGFuZGxlcihyZXF1ZXN0LCBtZXNzYWdl
KToKLSAgICAgICAgICAgIHJlcXVlc3QuY2FsbGVkID0gVHJ1ZQotCi0gICAgICAgICMgU3RyZWFt
IGF1dG9tYXRpY2FsbHkgcmVzcG9uZCB0byBwaW5nIHdpdGggcG9uZyB3aXRob3V0IGFueSBhY3Rp
b24KLSAgICAgICAgIyBieSBhcHBsaWNhdGlvbiBsYXllci4KLSAgICAgICAgcmVxdWVzdCA9IF9j
cmVhdGVfcmVxdWVzdCgKLSAgICAgICAgICAgICgnXHg4OVx4ODUnLCAnSGVsbG8nKSwgKCdceDgx
XHg4NScsICdXb3JsZCcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdXb3JsZCcsIG1zZ3V0
aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdc
eDhhXHgwNUhlbGxvJywKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rp
b24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgK
LSAgICAgICAgICAgICgnXHg4OVx4ODUnLCAnSGVsbG8nKSwgKCdceDgxXHg4NScsICdXb3JsZCcp
KQotICAgICAgICByZXF1ZXN0Lm9uX3BpbmdfaGFuZGxlciA9IGhhbmRsZXIKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgnV29ybGQnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkK
LSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlcXVlc3QuY2FsbGVkKQotCi0gICAgZGVmIHRlc3Rf
cmVjZWl2ZV9sb25nZXN0X3Bpbmcoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3Jl
cXVlc3QoCi0gICAgICAgICAgICAoJ1x4ODlceGZkJywgJ2EnICogMTI1KSwgKCdceDgxXHg4NScs
ICdXb3JsZCcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdXb3JsZCcsIG1zZ3V0aWwucmVj
ZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDhhXHg3
ZCcgKyAnYScgKiAxMjUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0
aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9waW5nX3Rvb19sb25n
KHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCgnXHg4OVx4ZmVceDAw
XHg3ZScsICdhJyAqIDEyNikpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG1zZ3V0aWwuSW52
YWxpZEZyYW1lRXhjZXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtc2d1dGlsLnJl
Y2VpdmVfbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCkKLQotICAg
IGRlZiB0ZXN0X3JlY2VpdmVfcG9uZyhzZWxmKToKLSAgICAgICAgIiIiVGVzdHMgcmVjZWl2aW5n
IGEgcG9uZyBjb250cm9sIGZyYW1lLiIiIgotCi0gICAgICAgIGRlZiBoYW5kbGVyKHJlcXVlc3Qs
IG1lc3NhZ2UpOgotICAgICAgICAgICAgcmVxdWVzdC5jYWxsZWQgPSBUcnVlCi0KLSAgICAgICAg
cmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgKLSAgICAgICAgICAgICgnXHg4YVx4ODUnLCAnSGVs
bG8nKSwgKCdceDgxXHg4NScsICdXb3JsZCcpKQotICAgICAgICByZXF1ZXN0Lm9uX3BvbmdfaGFu
ZGxlciA9IGhhbmRsZXIKLSAgICAgICAgbXNndXRpbC5zZW5kX3BpbmcocmVxdWVzdCwgJ0hlbGxv
JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHg4OVx4MDVIZWxsbycsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotICAgICAg
ICAjIFZhbGlkIHBvbmcgaXMgcmVjZWl2ZWQsIGJ1dCByZWNlaXZlX21lc3NhZ2Ugd29uJ3QgcmV0
dXJuIGZvciBpdC4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnV29ybGQnLCBtc2d1dGlsLnJl
Y2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLSAgICAgICAgIyBDaGVjayB0aGF0IG5vdGhpbmcgd2Fz
IHdyaXR0ZW4gYWZ0ZXIgcmVjZWl2ZV9tZXNzYWdlIGNhbGwuCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ1x4ODlceDA1SGVsbG8nLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qu
Y29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmVx
dWVzdC5jYWxsZWQpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX3Vuc29saWNpdGVkX3Bvbmcoc2Vs
Zik6Ci0gICAgICAgICMgVW5zb2xpY2l0ZWQgcG9uZyBpcyBhbGxvd2VkIGZyb20gSHlCaSAwNy4K
LSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgKLSAgICAgICAgICAgICgnXHg4YVx4
ODUnLCAnSGVsbG8nKSwgKCdceDgxXHg4NScsICdXb3JsZCcpKQotICAgICAgICBtc2d1dGlsLnJl
Y2VpdmVfbWVzc2FnZShyZXF1ZXN0KQotCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVl
c3QoCi0gICAgICAgICAgICAoJ1x4OGFceDg1JywgJ0hlbGxvJyksICgnXHg4MVx4ODUnLCAnV29y
bGQnKSkKLSAgICAgICAgbXNndXRpbC5zZW5kX3BpbmcocmVxdWVzdCwgJ0p1bWJvJykKLSAgICAg
ICAgIyBCb2R5IG1pc21hdGNoLgotICAgICAgICBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1
ZXN0KQotCi0gICAgZGVmIHRlc3RfcGluZ19jYW5ub3RfYmVfZnJhZ21lbnRlZChzZWxmKToKLSAg
ICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgoJ1x4MDlceDg1JywgJ0hlbGxvJykpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG1zZ3V0aWwuSW52YWxpZEZyYW1lRXhjZXB0aW9uLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCkKLQotICAgIGRlZiB0ZXN0X3Bpbmdfd2l0aF90
b29fbG9uZ19wYXlsb2FkKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0
KCgnXHg4OVx4ZmVceDAxXHgwMCcsICdhJyAqIDI1NikpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFp
c2VzKG1zZ3V0aWwuSW52YWxpZEZyYW1lRXhjZXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVxdWVzdCkKLQotCi1jbGFzcyBEZWZsYXRlRnJhbWVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
LSAgICAiIiJUZXN0cyBmb3IgY2hlY2tpbmcgZGVmbGF0ZS1mcmFtZSBleHRlbnNpb24uIiIiCi0K
LSAgICBkZWYgdGVzdF9zZW5kX21lc3NhZ2Uoc2VsZik6Ci0gICAgICAgIGNvbXByZXNzID0gemxp
Yi5jb21wcmVzc29iaigKLSAgICAgICAgICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6
bGliLkRFRkxBVEVELCAtemxpYi5NQVhfV0JJVFMpCi0KLSAgICAgICAgZXh0ZW5zaW9uID0gY29t
bW9uLkV4dGVuc2lvblBhcmFtZXRlcihjb21tb24uREVGTEFURV9GUkFNRV9FWFRFTlNJT04pCi0g
ICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAotICAgICAgICAg
ICAgJycsIGRlZmxhdGVfZnJhbWVfcmVxdWVzdD1leHRlbnNpb24pCi0gICAgICAgIG1zZ3V0aWwu
c2VuZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxsbycpCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNz
YWdlKHJlcXVlc3QsICdXb3JsZCcpCi0KLSAgICAgICAgZXhwZWN0ZWQgPSAnJwotCi0gICAgICAg
IGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzcy5jb21wcmVzcygnSGVsbG8nKQotICAgICAgICBj
b21wcmVzc2VkX2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAg
ICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJlc3NlZF9oZWxsb1s6LTRdCi0gICAgICAgIGV4
cGVjdGVkICs9ICdceGMxJWMnICUgbGVuKGNvbXByZXNzZWRfaGVsbG8pCi0gICAgICAgIGV4cGVj
dGVkICs9IGNvbXByZXNzZWRfaGVsbG8KLQotICAgICAgICBjb21wcmVzc2VkX3dvcmxkID0gY29t
cHJlc3MuY29tcHJlc3MoJ1dvcmxkJykKLSAgICAgICAgY29tcHJlc3NlZF93b3JsZCArPSBjb21w
cmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKLSAgICAgICAgY29tcHJlc3NlZF93b3JsZCA9
IGNvbXByZXNzZWRfd29ybGRbOi00XQotICAgICAgICBleHBlY3RlZCArPSAnXHhjMSVjJyAlIGxl
bihjb21wcmVzc2VkX3dvcmxkKQotICAgICAgICBleHBlY3RlZCArPSBjb21wcmVzc2VkX3dvcmxk
Ci0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgcmVxdWVzdC5jb25uZWN0aW9u
LndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlX2JmaW5hbChzZWxm
KToKLSAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcihjb21tb24u
REVGTEFURV9GUkFNRV9FWFRFTlNJT04pCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVl
c3RfZnJvbV9yYXdkYXRhKAotICAgICAgICAgICAgJycsIGRlZmxhdGVfZnJhbWVfcmVxdWVzdD1l
eHRlbnNpb24pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDEsIGxlbihyZXF1ZXN0LndzX2V4
dGVuc2lvbl9wcm9jZXNzb3JzKSkKLSAgICAgICAgZGVmbGF0ZV9mcmFtZV9wcm9jZXNzb3IgPSBy
ZXF1ZXN0LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzWzBdCi0gICAgICAgIGRlZmxhdGVfZnJhbWVf
cHJvY2Vzc29yLnNldF9iZmluYWwoVHJ1ZSkKLSAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2Uo
cmVxdWVzdCwgJ0hlbGxvJykKLSAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwg
J1dvcmxkJykKLQotICAgICAgICBleHBlY3RlZCA9ICcnCi0KLSAgICAgICAgY29tcHJlc3MgPSB6
bGliLmNvbXByZXNzb2JqKAotICAgICAgICAgICAgemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04s
IHpsaWIuREVGTEFURUQsIC16bGliLk1BWF9XQklUUykKLSAgICAgICAgY29tcHJlc3NlZF9oZWxs
byA9IGNvbXByZXNzLmNvbXByZXNzKCdIZWxsbycpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8g
Kz0gY29tcHJlc3MuZmx1c2goemxpYi5aX0ZJTklTSCkKLSAgICAgICAgY29tcHJlc3NlZF9oZWxs
byA9IGNvbXByZXNzZWRfaGVsbG8gKyBjaHIoMCkKLSAgICAgICAgZXhwZWN0ZWQgKz0gJ1x4YzEl
YycgJSBsZW4oY29tcHJlc3NlZF9oZWxsbykKLSAgICAgICAgZXhwZWN0ZWQgKz0gY29tcHJlc3Nl
ZF9oZWxsbwotCi0gICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVzc29iaigKLSAgICAgICAg
ICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELCAtemxpYi5NQVhf
V0JJVFMpCi0gICAgICAgIGNvbXByZXNzZWRfd29ybGQgPSBjb21wcmVzcy5jb21wcmVzcygnV29y
bGQnKQotICAgICAgICBjb21wcmVzc2VkX3dvcmxkICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9G
SU5JU0gpCi0gICAgICAgIGNvbXByZXNzZWRfd29ybGQgPSBjb21wcmVzc2VkX3dvcmxkICsgY2hy
KDApCi0gICAgICAgIGV4cGVjdGVkICs9ICdceGMxJWMnICUgbGVuKGNvbXByZXNzZWRfd29ybGQp
Ci0gICAgICAgIGV4cGVjdGVkICs9IGNvbXByZXNzZWRfd29ybGQKLQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGV4cGVjdGVkLCByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0K
LSAgICBkZWYgdGVzdF9zZW5kX21lc3NhZ2VfY29tcF9iaXQoc2VsZik6Ci0gICAgICAgIGNvbXBy
ZXNzID0gemxpYi5jb21wcmVzc29iaigKLSAgICAgICAgICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBS
RVNTSU9OLCB6bGliLkRFRkxBVEVELCAtemxpYi5NQVhfV0JJVFMpCi0KLSAgICAgICAgZXh0ZW5z
aW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcihjb21tb24uREVGTEFURV9GUkFNRV9FWFRF
TlNJT04pCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAot
ICAgICAgICAgICAgJycsIGRlZmxhdGVfZnJhbWVfcmVxdWVzdD1leHRlbnNpb24pCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKDEsIGxlbihyZXF1ZXN0LndzX2V4dGVuc2lvbl9wcm9jZXNzb3Jz
KSkKLSAgICAgICAgZGVmbGF0ZV9mcmFtZV9wcm9jZXNzb3IgPSByZXF1ZXN0LndzX2V4dGVuc2lv
bl9wcm9jZXNzb3JzWzBdCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdI
ZWxsbycpCi0gICAgICAgIGRlZmxhdGVfZnJhbWVfcHJvY2Vzc29yLmRpc2FibGVfb3V0Z29pbmdf
Y29tcHJlc3Npb24oKQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnSGVs
bG8nKQotICAgICAgICBkZWZsYXRlX2ZyYW1lX3Byb2Nlc3Nvci5lbmFibGVfb3V0Z29pbmdfY29t
cHJlc3Npb24oKQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnSGVsbG8n
KQotCi0gICAgICAgIGV4cGVjdGVkID0gJycKLQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0g
Y29tcHJlc3MuY29tcHJlc3MoJ0hlbGxvJykKLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyArPSBj
b21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKLSAgICAgICAgY29tcHJlc3NlZF9oZWxs
byA9IGNvbXByZXNzZWRfaGVsbG9bOi00XQotICAgICAgICBleHBlY3RlZCArPSAnXHhjMSVjJyAl
IGxlbihjb21wcmVzc2VkX2hlbGxvKQotICAgICAgICBleHBlY3RlZCArPSBjb21wcmVzc2VkX2hl
bGxvCi0KLSAgICAgICAgZXhwZWN0ZWQgKz0gJ1x4ODFceDA1SGVsbG8nCi0KLSAgICAgICAgY29t
cHJlc3NlZF8ybmRfaGVsbG8gPSBjb21wcmVzcy5jb21wcmVzcygnSGVsbG8nKQotICAgICAgICBj
b21wcmVzc2VkXzJuZF9oZWxsbyArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkK
LSAgICAgICAgY29tcHJlc3NlZF8ybmRfaGVsbG8gPSBjb21wcmVzc2VkXzJuZF9oZWxsb1s6LTRd
Ci0gICAgICAgIGV4cGVjdGVkICs9ICdceGMxJWMnICUgbGVuKGNvbXByZXNzZWRfMm5kX2hlbGxv
KQotICAgICAgICBleHBlY3RlZCArPSBjb21wcmVzc2VkXzJuZF9oZWxsbwotCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEo
KSkKLQotICAgIGRlZiB0ZXN0X3NlbmRfbWVzc2FnZV9ub19jb250ZXh0X3Rha2VvdmVyX3BhcmFt
ZXRlcihzZWxmKToKLSAgICAgICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKAotICAgICAg
ICAgICAgemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsIC16bGliLk1B
WF9XQklUUykKLQotICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVy
KGNvbW1vbi5ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTikKLSAgICAgICAgZXh0ZW5zaW9uLmFkZF9w
YXJhbWV0ZXIoJ25vX2NvbnRleHRfdGFrZW92ZXInLCBOb25lKQotICAgICAgICByZXF1ZXN0ID0g
X2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKLSAgICAgICAgICAgICcnLCBkZWZsYXRlX2Zy
YW1lX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotICAgICAgICBmb3IgaSBpbiB4cmFuZ2UoMyk6Ci0gICAg
ICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnSGVsbG8nKQotCi0gICAgICAg
IGNvbXByZXNzZWRfbWVzc2FnZSA9IGNvbXByZXNzLmNvbXByZXNzKCdIZWxsbycpCi0gICAgICAg
IGNvbXByZXNzZWRfbWVzc2FnZSArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkK
LSAgICAgICAgY29tcHJlc3NlZF9tZXNzYWdlID0gY29tcHJlc3NlZF9tZXNzYWdlWzotNF0KLSAg
ICAgICAgZXhwZWN0ZWQgPSAnXHhjMSVjJyAlIGxlbihjb21wcmVzc2VkX21lc3NhZ2UpCi0gICAg
ICAgIGV4cGVjdGVkICs9IGNvbXByZXNzZWRfbWVzc2FnZQotCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCi0gICAgICAgICAgICBleHBlY3RlZCArIGV4cGVjdGVkICsgZXhwZWN0ZWQsIHJlcXVl
c3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAgIGRlZiB0ZXN0X2JhZF9yZXF1ZXN0
X3BhcmFtZXRlcnMoc2VsZik6Ci0gICAgICAgICIiIlRlc3RzIHRoYXQgaWYgdGhlcmUncyBhbnl0
aGluZyB3cm9uZyB3aXRoIGRlZmxhdGUtZnJhbWUgZXh0ZW5zaW9uCi0gICAgICAgIHJlcXVlc3Qs
IGRlZmxhdGUtZnJhbWUgaXMgcmVqZWN0ZWQuCi0gICAgICAgICIiIgotCi0gICAgICAgIGV4dGVu
c2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoY29tbW9uLkRFRkxBVEVfRlJBTUVfRVhU
RU5TSU9OKQotICAgICAgICAjIG1heF93aW5kb3dfYml0cyBsZXNzIHRoYW4gOCBpcyBpbGxlZ2Fs
LgotICAgICAgICBleHRlbnNpb24uYWRkX3BhcmFtZXRlcignbWF4X3dpbmRvd19iaXRzJywgJzcn
KQotICAgICAgICBwcm9jZXNzb3IgPSBEZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IoZXh0
ZW5zaW9uKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIHByb2Nlc3Nvci5nZXRfZXh0
ZW5zaW9uX3Jlc3BvbnNlKCkpCi0KLSAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lv
blBhcmFtZXRlcihjb21tb24uREVGTEFURV9GUkFNRV9FWFRFTlNJT04pCi0gICAgICAgICMgbWF4
X3dpbmRvd19iaXRzIGdyZWF0ZXIgdGhhbiAxNSBpcyBpbGxlZ2FsLgotICAgICAgICBleHRlbnNp
b24uYWRkX3BhcmFtZXRlcignbWF4X3dpbmRvd19iaXRzJywgJzE2JykKLSAgICAgICAgcHJvY2Vz
c29yID0gRGVmbGF0ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yKGV4dGVuc2lvbikKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChOb25lLCBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgp
KQotCi0gICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoY29tbW9u
LkRFRkxBVEVfRlJBTUVfRVhURU5TSU9OKQotICAgICAgICAjIE5vbiBpbnRlZ2VyIG1heF93aW5k
b3dfYml0cyBpcyBpbGxlZ2FsLgotICAgICAgICBleHRlbnNpb24uYWRkX3BhcmFtZXRlcignbWF4
X3dpbmRvd19iaXRzJywgJ2Zvb2JhcicpCi0gICAgICAgIHByb2Nlc3NvciA9IERlZmxhdGVGcmFt
ZUV4dGVuc2lvblByb2Nlc3NvcihleHRlbnNpb24pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Tm9uZSwgcHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoKSkKLQotICAgICAgICBleHRl
bnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKGNvbW1vbi5ERUZMQVRFX0ZSQU1FX0VY
VEVOU0lPTikKLSAgICAgICAgIyBub19jb250ZXh0X3Rha2VvdmVyIG11c3Qgbm90IGhhdmUgYW55
IHZhbHVlLgotICAgICAgICBleHRlbnNpb24uYWRkX3BhcmFtZXRlcignbm9fY29udGV4dF90YWtl
b3ZlcicsICdmb29iYXInKQotICAgICAgICBwcm9jZXNzb3IgPSBEZWZsYXRlRnJhbWVFeHRlbnNp
b25Qcm9jZXNzb3IoZXh0ZW5zaW9uKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIHBy
b2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkpCi0KLSAgICBkZWYgdGVzdF9yZXNwb25z
ZV9wYXJhbWV0ZXJzKHNlbGYpOgotICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9u
UGFyYW1ldGVyKGNvbW1vbi5ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTikKLSAgICAgICAgcHJvY2Vz
c29yID0gRGVmbGF0ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yKGV4dGVuc2lvbikKLSAgICAgICAg
cHJvY2Vzc29yLnNldF9yZXNwb25zZV93aW5kb3dfYml0cyg4KQotICAgICAgICByZXNwb25zZSA9
IHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKHJlc3BvbnNlLmhhc19wYXJhbWV0ZXIoJ21heF93aW5kb3dfYml0cycpKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCc4JywgcmVzcG9uc2UuZ2V0X3BhcmFtZXRlcl92YWx1ZSgnbWF4X3dp
bmRvd19iaXRzJykpCi0KLSAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFt
ZXRlcihjb21tb24uREVGTEFURV9GUkFNRV9FWFRFTlNJT04pCi0gICAgICAgIHByb2Nlc3NvciA9
IERlZmxhdGVGcmFtZUV4dGVuc2lvblByb2Nlc3NvcihleHRlbnNpb24pCi0gICAgICAgIHByb2Nl
c3Nvci5zZXRfcmVzcG9uc2Vfbm9fY29udGV4dF90YWtlb3ZlcihUcnVlKQotICAgICAgICByZXNw
b25zZSA9IHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkKLSAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKHJlc3BvbnNlLmhhc19wYXJhbWV0ZXIoJ25vX2NvbnRleHRfdGFrZW92ZXInKSkK
LSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKAotICAgICAgICAgICAgcmVzcG9uc2UuZ2V0X3BhcmFt
ZXRlcl92YWx1ZSgnbm9fY29udGV4dF90YWtlb3ZlcicpIGlzIE5vbmUpCi0KLSAgICBkZWYgdGVz
dF9yZWNlaXZlX21lc3NhZ2Uoc2VsZik6Ci0gICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVz
c29iaigKLSAgICAgICAgICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxB
VEVELCAtemxpYi5NQVhfV0JJVFMpCi0KLSAgICAgICAgZGF0YSA9ICcnCi0KLSAgICAgICAgY29t
cHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzLmNvbXByZXNzKCdIZWxsbycpCi0gICAgICAgIGNvbXBy
ZXNzZWRfaGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAg
IGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzc2VkX2hlbGxvWzotNF0KLSAgICAgICAgZGF0YSAr
PSAnXHhjMSVjJyAlIChsZW4oY29tcHJlc3NlZF9oZWxsbykgfCAweDgwKQotICAgICAgICBkYXRh
ICs9IF9tYXNrX2h5YmkoY29tcHJlc3NlZF9oZWxsbykKLQotICAgICAgICBjb21wcmVzc2VkX3dl
YnNvY2tldCA9IGNvbXByZXNzLmNvbXByZXNzKCdXZWJTb2NrZXQnKQotICAgICAgICBjb21wcmVz
c2VkX3dlYnNvY2tldCArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfRklOSVNIKQotICAgICAgICBj
b21wcmVzc2VkX3dlYnNvY2tldCArPSAnXHgwMCcKLSAgICAgICAgZGF0YSArPSAnXHhjMSVjJyAl
IChsZW4oY29tcHJlc3NlZF93ZWJzb2NrZXQpIHwgMHg4MCkKLSAgICAgICAgZGF0YSArPSBfbWFz
a19oeWJpKGNvbXByZXNzZWRfd2Vic29ja2V0KQotCi0gICAgICAgIGNvbXByZXNzID0gemxpYi5j
b21wcmVzc29iaigKLSAgICAgICAgICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGli
LkRFRkxBVEVELCAtemxpYi5NQVhfV0JJVFMpCi0KLSAgICAgICAgY29tcHJlc3NlZF93b3JsZCA9
IGNvbXByZXNzLmNvbXByZXNzKCdXb3JsZCcpCi0gICAgICAgIGNvbXByZXNzZWRfd29ybGQgKz0g
Y29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIGNvbXByZXNzZWRfd29y
bGQgPSBjb21wcmVzc2VkX3dvcmxkWzotNF0KLSAgICAgICAgZGF0YSArPSAnXHhjMSVjJyAlIChs
ZW4oY29tcHJlc3NlZF93b3JsZCkgfCAweDgwKQotICAgICAgICBkYXRhICs9IF9tYXNrX2h5Ymko
Y29tcHJlc3NlZF93b3JsZCkKLQotICAgICAgICAjIENsb3NlIGZyYW1lCi0gICAgICAgIGRhdGEg
Kz0gJ1x4ODhceDhhJyArIF9tYXNrX2h5Ymkoc3RydWN0LnBhY2soJyFIJywgMTAwMCkgKyAnR29v
ZCBieWUnKQotCi0gICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIo
Y29tbW9uLkRFRkxBVEVfRlJBTUVfRVhURU5TSU9OKQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0
ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKLSAgICAgICAgICAgIGRhdGEsIGRlZmxhdGVfZnJhbWVf
cmVxdWVzdD1leHRlbnNpb24pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvJywgbXNn
dXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
J1dlYlNvY2tldCcsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCdXb3JsZCcsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3Qp
KQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgbXNndXRpbC5yZWNlaXZlX21lc3Nh
Z2UocmVxdWVzdCkpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX21lc3NhZ2VfY2xpZW50X3VzaW5n
X3NtYWxsZXJfd2luZG93KHNlbGYpOgotICAgICAgICAiIiJUZXN0IHRoYXQgZnJhbWVzIGNvbWlu
ZyBmcm9tIGEgY2xpZW50IHdoaWNoIGlzIHVzaW5nIHNtYWxsZXIgd2luZG93Ci0gICAgICAgIHNp
emUgdGhhdCB0aGUgc2VydmVyIGFyZSBjb3JyZWN0bHkgcmVjZWl2ZWQuCi0gICAgICAgICIiIgot
Ci0gICAgICAgICMgVXNpbmcgdGhlIHNtYWxsZXN0IHdpbmRvdyBiaXRzIG9mIDggZm9yIGdlbmVy
YXRpbmcgaW5wdXQgZnJhbWVzLgotICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmoo
Ci0gICAgICAgICAgICB6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwg
LTgpCi0KLSAgICAgICAgZGF0YSA9ICcnCi0KLSAgICAgICAgIyBVc2UgYSBmcmFtZSB3aG9zZSBj
b250ZW50IGlzIGJpZ2dlciB0aGFuIHRoZSBjbGllbnRzJyBERUZMQVRFIHdpbmRvdwotICAgICAg
ICAjIHNpemUgYmVmb3JlIGNvbXByZXNzaW9uLiBUaGUgY29udGVudCBtYWlubHkgY29uc2lzdHMg
b2YgJ2EnIGJ1dAotICAgICAgICAjIHJlcGV0aXRpb24gb2YgJ2InIGlzIHB1dCBhdCB0aGUgaGVh
ZCBhbmQgdGFpbCBzbyB0aGF0IGlmIHRoZSB3aW5kb3cKLSAgICAgICAgIyBzaXplIGlzIGJpZywg
dGhlIGhlYWQgaXMgYmFjay1yZWZlcmVuY2VkIGJ1dCBpZiBzbWFsbCwgbm90LgotICAgICAgICBw
YXlsb2FkID0gJ2InICogNjQgKyAnYScgKiAxMDI0ICsgJ2InICogNjQKLSAgICAgICAgY29tcHJl
c3NlZF9oZWxsbyA9IGNvbXByZXNzLmNvbXByZXNzKHBheWxvYWQpCi0gICAgICAgIGNvbXByZXNz
ZWRfaGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIGNv
bXByZXNzZWRfaGVsbG8gPSBjb21wcmVzc2VkX2hlbGxvWzotNF0KLSAgICAgICAgZGF0YSArPSAn
XHhjMSVjJyAlIChsZW4oY29tcHJlc3NlZF9oZWxsbykgfCAweDgwKQotICAgICAgICBkYXRhICs9
IF9tYXNrX2h5YmkoY29tcHJlc3NlZF9oZWxsbykKLQotICAgICAgICAjIENsb3NlIGZyYW1lCi0g
ICAgICAgIGRhdGEgKz0gJ1x4ODhceDhhJyArIF9tYXNrX2h5Ymkoc3RydWN0LnBhY2soJyFIJywg
MTAwMCkgKyAnR29vZCBieWUnKQotCi0gICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNp
b25QYXJhbWV0ZXIoY29tbW9uLkRFRkxBVEVfRlJBTUVfRVhURU5TSU9OKQotICAgICAgICByZXF1
ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKLSAgICAgICAgICAgIGRhdGEsIGRl
ZmxhdGVfZnJhbWVfcmVxdWVzdD1leHRlbnNpb24pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cGF5bG9hZCwgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0KLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChOb25lLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLQot
ICAgIGRlZiB0ZXN0X3JlY2VpdmVfbWVzc2FnZV9jb21wX2JpdChzZWxmKToKLSAgICAgICAgY29t
cHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKAotICAgICAgICAgICAgemxpYi5aX0RFRkFVTFRfQ09N
UFJFU1NJT04sIHpsaWIuREVGTEFURUQsIC16bGliLk1BWF9XQklUUykKLQotICAgICAgICBkYXRh
ID0gJycKLQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJlc3MuY29tcHJlc3MoJ0hl
bGxvJykKLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpf
U1lOQ19GTFVTSCkKLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzZWRfaGVsbG9b
Oi00XQotICAgICAgICBkYXRhICs9ICdceGMxJWMnICUgKGxlbihjb21wcmVzc2VkX2hlbGxvKSB8
IDB4ODApCi0gICAgICAgIGRhdGEgKz0gX21hc2tfaHliaShjb21wcmVzc2VkX2hlbGxvKQotCi0g
ICAgICAgIGRhdGEgKz0gJ1x4ODFceDg1JyArIF9tYXNrX2h5YmkoJ0hlbGxvJykKLQotICAgICAg
ICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAgICAgICB6bGliLlpfREVGQVVM
VF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRTKQotCi0gICAgICAg
IGNvbXByZXNzZWRfMm5kX2hlbGxvID0gY29tcHJlc3MuY29tcHJlc3MoJ0hlbGxvJykKLSAgICAg
ICAgY29tcHJlc3NlZF8ybmRfaGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxV
U0gpCi0gICAgICAgIGNvbXByZXNzZWRfMm5kX2hlbGxvID0gY29tcHJlc3NlZF8ybmRfaGVsbG9b
Oi00XQotICAgICAgICBkYXRhICs9ICdceGMxJWMnICUgKGxlbihjb21wcmVzc2VkXzJuZF9oZWxs
bykgfCAweDgwKQotICAgICAgICBkYXRhICs9IF9tYXNrX2h5YmkoY29tcHJlc3NlZF8ybmRfaGVs
bG8pCi0KLSAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcihjb21t
b24uREVGTEFURV9GUkFNRV9FWFRFTlNJT04pCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3Jl
cXVlc3RfZnJvbV9yYXdkYXRhKAotICAgICAgICAgICAgZGF0YSwgZGVmbGF0ZV9mcmFtZV9yZXF1
ZXN0PWV4dGVuc2lvbikKLSAgICAgICAgZm9yIGkgaW4geHJhbmdlKDMpOgotICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgnSGVsbG8nLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0
KSkKLQotICAgIGRlZiB0ZXN0X3JlY2VpdmVfbWVzc2FnZV92YXJpb3VzX2J0eXBlKHNlbGYpOgot
ICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAgICAgICB6bGliLlpf
REVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRTKQotCi0g
ICAgICAgIGRhdGEgPSAnJwotCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzcy5j
b21wcmVzcygnSGVsbG8nKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvICs9IGNvbXByZXNzLmZs
dXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJl
c3NlZF9oZWxsb1s6LTRdCi0gICAgICAgIGRhdGEgKz0gJ1x4YzElYycgJSAobGVuKGNvbXByZXNz
ZWRfaGVsbG8pIHwgMHg4MCkKLSAgICAgICAgZGF0YSArPSBfbWFza19oeWJpKGNvbXByZXNzZWRf
aGVsbG8pCi0KLSAgICAgICAgY29tcHJlc3NlZF93ZWJzb2NrZXQgPSBjb21wcmVzcy5jb21wcmVz
cygnV2ViU29ja2V0JykKLSAgICAgICAgY29tcHJlc3NlZF93ZWJzb2NrZXQgKz0gY29tcHJlc3Mu
Zmx1c2goemxpYi5aX0ZJTklTSCkKLSAgICAgICAgY29tcHJlc3NlZF93ZWJzb2NrZXQgKz0gJ1x4
MDAnCi0gICAgICAgIGRhdGEgKz0gJ1x4YzElYycgJSAobGVuKGNvbXByZXNzZWRfd2Vic29ja2V0
KSB8IDB4ODApCi0gICAgICAgIGRhdGEgKz0gX21hc2tfaHliaShjb21wcmVzc2VkX3dlYnNvY2tl
dCkKLQotICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAgICAgICB6
bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRT
KQotCi0gICAgICAgIGNvbXByZXNzZWRfd29ybGQgPSBjb21wcmVzcy5jb21wcmVzcygnV29ybGQn
KQotICAgICAgICBjb21wcmVzc2VkX3dvcmxkICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5D
X0ZMVVNIKQotICAgICAgICBjb21wcmVzc2VkX3dvcmxkID0gY29tcHJlc3NlZF93b3JsZFs6LTRd
Ci0gICAgICAgIGRhdGEgKz0gJ1x4YzElYycgJSAobGVuKGNvbXByZXNzZWRfd29ybGQpIHwgMHg4
MCkKLSAgICAgICAgZGF0YSArPSBfbWFza19oeWJpKGNvbXByZXNzZWRfd29ybGQpCi0KLSAgICAg
ICAgIyBDbG9zZSBmcmFtZQotICAgICAgICBkYXRhICs9ICdceDg4XHg4YScgKyBfbWFza19oeWJp
KHN0cnVjdC5wYWNrKCchSCcsIDEwMDApICsgJ0dvb2QgYnllJykKLQotICAgICAgICBleHRlbnNp
b24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKGNvbW1vbi5ERUZMQVRFX0ZSQU1FX0VYVEVO
U0lPTikKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEoCi0g
ICAgICAgICAgICBkYXRhLCBkZWZsYXRlX2ZyYW1lX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdIZWxsbycsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVl
c3QpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdXZWJTb2NrZXQnLCBtc2d1dGlsLnJlY2Vp
dmVfbWVzc2FnZShyZXF1ZXN0KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnV29ybGQnLCBt
c2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKE5vbmUsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotCi0KLWNsYXNzIFBl
ck1lc3NhZ2VEZWZsYXRlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiVGVzdHMgZm9y
IHBlcm1lc3NhZ2UtZGVmbGF0ZSBleHRlbnNpb24uIiIiCi0KLSAgICBkZWYgdGVzdF9yZXNwb25z
ZV9wYXJhbWV0ZXJzKHNlbGYpOgotICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9u
UGFyYW1ldGVyKAotICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJ
T04pCi0gICAgICAgIGV4dGVuc2lvbi5hZGRfcGFyYW1ldGVyKCdzZXJ2ZXJfbm9fY29udGV4dF90
YWtlb3ZlcicsIE5vbmUpCi0gICAgICAgIHByb2Nlc3NvciA9IFBlck1lc3NhZ2VEZWZsYXRlRXh0
ZW5zaW9uUHJvY2Vzc29yKGV4dGVuc2lvbikKLSAgICAgICAgcmVzcG9uc2UgPSBwcm9jZXNzb3Iu
Z2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgKLSAgICAg
ICAgICAgIHJlc3BvbnNlLmhhc19wYXJhbWV0ZXIoJ3NlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVy
JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBOb25lLCByZXNwb25z
ZS5nZXRfcGFyYW1ldGVyX3ZhbHVlKCdzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcicpKQotCi0g
ICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCi0gICAgICAgICAg
ICBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKLSAgICAgICAgZXh0ZW5zaW9u
LmFkZF9wYXJhbWV0ZXIoJ2NsaWVudF9tYXhfd2luZG93X2JpdHMnLCBOb25lKQotICAgICAgICBw
cm9jZXNzb3IgPSBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcihleHRlbnNpb24p
Ci0KLSAgICAgICAgcHJvY2Vzc29yLnNldF9jbGllbnRfbWF4X3dpbmRvd19iaXRzKDgpCi0gICAg
ICAgIHByb2Nlc3Nvci5zZXRfY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIoVHJ1ZSkKLSAgICAg
ICAgcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICAnOCcsIHJlc3BvbnNlLmdldF9wYXJhbWV0
ZXJfdmFsdWUoJ2NsaWVudF9tYXhfd2luZG93X2JpdHMnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKAotICAgICAgICAgICAgcmVzcG9uc2UuaGFzX3BhcmFtZXRlcignY2xpZW50X25vX2NvbnRl
eHRfdGFrZW92ZXInKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIE5v
bmUsCi0gICAgICAgICAgICByZXNwb25zZS5nZXRfcGFyYW1ldGVyX3ZhbHVlKCdjbGllbnRfbm9f
Y29udGV4dF90YWtlb3ZlcicpKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlKHNlbGYpOgot
ICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAotICAgICAgICAg
ICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQotICAgICAgICByZXF1
ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKLSAgICAgICAgICAgICAgICAnJywg
cGVybWVzc2FnZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotICAgICAgICBtc2d1dGlsLnNl
bmRfbWVzc2FnZShyZXF1ZXN0LCAnSGVsbG8nKQotCi0gICAgICAgIGNvbXByZXNzID0gemxpYi5j
b21wcmVzc29iaigKLSAgICAgICAgICAgICAgICB6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwg
emxpYi5ERUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRTKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxv
ID0gY29tcHJlc3MuY29tcHJlc3MoJ0hlbGxvJykKLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyAr
PSBjb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKLSAgICAgICAgY29tcHJlc3NlZF9o
ZWxsbyA9IGNvbXByZXNzZWRfaGVsbG9bOi00XQotICAgICAgICBleHBlY3RlZCA9ICdceGMxJWMn
ICUgbGVuKGNvbXByZXNzZWRfaGVsbG8pCi0gICAgICAgIGV4cGVjdGVkICs9IGNvbXByZXNzZWRf
aGVsbG8KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgcmVxdWVzdC5jb25uZWN0
aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9lbXB0eV9tZXNzYWdlKHNl
bGYpOgotICAgICAgICAiIiJUZXN0IHRoYXQgYW4gZW1wdHkgbWVzc2FnZSBpcyBjb21wcmVzc2Vk
IGNvcnJlY3RseS4iIiIKLQotICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFy
YW1ldGVyKAotICAgICAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5T
SU9OKQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKLSAg
ICAgICAgICAgICAgICAnJywgcGVybWVzc2FnZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQot
Ci0gICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICcnKQotCi0gICAgICAgICMg
UGF5bG9hZCBpbiBiaW5hcnk6IDBiMDAwMDAwMDAKLSAgICAgICAgIyBGcm9tIExTQiwKLSAgICAg
ICAgIyAtIDEgYml0IG9mIEJGSU5BTCAoMCkKLSAgICAgICAgIyAtIDIgYml0cyBvZiBCVFlQRSAo
bm8gY29tcHJlc3Npb24pCi0gICAgICAgICMgLSA1IGJpdHMgb2YgcGFkZGluZwotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCdceGMxXHgwMVx4MDAnLAotICAgICAgICAgICAgICAgICAgICAgICAg
IHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAgIGRlZiB0ZXN0X3NlbmRf
bWVzc2FnZV93aXRoX251bGxfY2hhcmFjdGVyKHNlbGYpOgotICAgICAgICAiIiJUZXN0IHRoYXQg
YSBzaW1wbGUgcGF5bG9hZCAob25lIG51bGwpIGlzIGZyYW1lZCBjb3JyZWN0bHkuIiIiCi0KLSAg
ICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigKLSAgICAgICAgICAg
ICAgICBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKLSAgICAgICAgcmVxdWVz
dCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEoCi0gICAgICAgICAgICAgICAgJycsIHBl
cm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0PWV4dGVuc2lvbikKLQotICAgICAgICBtc2d1dGlsLnNl
bmRfbWVzc2FnZShyZXF1ZXN0LCAnXHgwMCcpCi0KLSAgICAgICAgIyBQYXlsb2FkIGluIGJpbmFy
eTogMGIwMTEwMDAxMCAwYjAwMDAwMDAwIDBiMDAwMDAwMDAKLSAgICAgICAgIyBGcm9tIExTQiwK
LSAgICAgICAgIyAtIDEgYml0IG9mIEJGSU5BTCAoMCkKLSAgICAgICAgIyAtIDIgYml0cyBvZiBC
VFlQRSAoMDEgdGhhdCBtZWFucyBmaXhlZCBIdWZmbWFuKQotICAgICAgICAjIC0gOCBiaXRzIG9m
IHRoZSBmaXJzdCBjb2RlICgwMDExMDAwMCB0aGF0IGlzIHRoZSBjb2RlIGZvciB0aGUgbGl0ZXJh
bAotICAgICAgICAjICAgYWxwaGFiZXQgMHgwMCkKLSAgICAgICAgIyAtIDcgYml0cyBvZiB0aGUg
c2Vjb25kIGNvZGUgKDAwMDAwMDAgdGhhdCBpcyB0aGUgY29kZSBmb3IgdGhlCi0gICAgICAgICMg
ICBlbmQtb2YtYmxvY2spCi0gICAgICAgICMgLSAxIGJpdCBvZiBCRklOQUwgKDApCi0gICAgICAg
ICMgLSAyIGJpdHMgb2YgQlRZUEUgKG5vIGNvbXByZXNzaW9uKQotICAgICAgICAjIC0gMiBiaXRz
IG9mIHBhZGRpbmcKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHhjMVx4MDNceDYyXHgwMFx4
MDAnLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVu
X2RhdGEoKSkKLQotICAgIGRlZiB0ZXN0X3NlbmRfdHdvX21lc3NhZ2VzKHNlbGYpOgotICAgICAg
ICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAotICAgICAgICAgICAgICAg
IGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQotICAgICAgICByZXF1ZXN0ID0g
X2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKLSAgICAgICAgICAgICAgICAnJywgcGVybWVz
c2FnZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVz
c2FnZShyZXF1ZXN0LCAnSGVsbG8nKQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1
ZXN0LCAnV29ybGQnKQotCi0gICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVzc29iaigKLSAg
ICAgICAgICAgICAgICB6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwg
LXpsaWIuTUFYX1dCSVRTKQotCi0gICAgICAgIGV4cGVjdGVkID0gJycKLQotICAgICAgICBjb21w
cmVzc2VkX2hlbGxvID0gY29tcHJlc3MuY29tcHJlc3MoJ0hlbGxvJykKLSAgICAgICAgY29tcHJl
c3NlZF9oZWxsbyArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKLSAgICAgICAg
Y29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzZWRfaGVsbG9bOi00XQotICAgICAgICBleHBlY3Rl
ZCArPSAnXHhjMSVjJyAlIGxlbihjb21wcmVzc2VkX2hlbGxvKQotICAgICAgICBleHBlY3RlZCAr
PSBjb21wcmVzc2VkX2hlbGxvCi0KLSAgICAgICAgY29tcHJlc3NlZF93b3JsZCA9IGNvbXByZXNz
LmNvbXByZXNzKCdXb3JsZCcpCi0gICAgICAgIGNvbXByZXNzZWRfd29ybGQgKz0gY29tcHJlc3Mu
Zmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIGNvbXByZXNzZWRfd29ybGQgPSBjb21w
cmVzc2VkX3dvcmxkWzotNF0KLSAgICAgICAgZXhwZWN0ZWQgKz0gJ1x4YzElYycgJSBsZW4oY29t
cHJlc3NlZF93b3JsZCkKLSAgICAgICAgZXhwZWN0ZWQgKz0gY29tcHJlc3NlZF93b3JsZAotCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0
dGVuX2RhdGEoKSkKLQotICAgIGRlZiB0ZXN0X3NlbmRfbWVzc2FnZV9mcmFnbWVudGVkKHNlbGYp
OgotICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAotICAgICAg
ICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQotICAgICAgICBy
ZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKLSAgICAgICAgICAgICAgICAn
JywgcGVybWVzc2FnZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotICAgICAgICBtc2d1dGls
LnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnSGVsbG8nLCBlbmQ9RmFsc2UpCi0gICAgICAgIG1zZ3V0
aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdHb29kYnllJywgZW5kPUZhbHNlKQotICAgICAgICBt
c2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnV29ybGQnKQotCi0gICAgICAgIGNvbXByZXNz
ID0gemxpYi5jb21wcmVzc29iaigKLSAgICAgICAgICAgICAgICB6bGliLlpfREVGQVVMVF9DT01Q
UkVTU0lPTiwgemxpYi5ERUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRTKQotICAgICAgICBjb21wcmVz
c2VkX2hlbGxvID0gY29tcHJlc3MuY29tcHJlc3MoJ0hlbGxvJykKLSAgICAgICAgY29tcHJlc3Nl
ZF9oZWxsbyArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKLSAgICAgICAgZXhw
ZWN0ZWQgPSAnXHg0MSVjJyAlIGxlbihjb21wcmVzc2VkX2hlbGxvKQotICAgICAgICBleHBlY3Rl
ZCArPSBjb21wcmVzc2VkX2hlbGxvCi0gICAgICAgIGNvbXByZXNzZWRfZ29vZGJ5ZSA9IGNvbXBy
ZXNzLmNvbXByZXNzKCdHb29kYnllJykKLSAgICAgICAgY29tcHJlc3NlZF9nb29kYnllICs9IGNv
bXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBleHBlY3RlZCArPSAnXHgw
MCVjJyAlIGxlbihjb21wcmVzc2VkX2dvb2RieWUpCi0gICAgICAgIGV4cGVjdGVkICs9IGNvbXBy
ZXNzZWRfZ29vZGJ5ZQotICAgICAgICBjb21wcmVzc2VkX3dvcmxkID0gY29tcHJlc3MuY29tcHJl
c3MoJ1dvcmxkJykKLSAgICAgICAgY29tcHJlc3NlZF93b3JsZCArPSBjb21wcmVzcy5mbHVzaCh6
bGliLlpfU1lOQ19GTFVTSCkKLSAgICAgICAgY29tcHJlc3NlZF93b3JsZCA9IGNvbXByZXNzZWRf
d29ybGRbOi00XQotICAgICAgICBleHBlY3RlZCArPSAnXHg4MCVjJyAlIGxlbihjb21wcmVzc2Vk
X3dvcmxkKQotICAgICAgICBleHBlY3RlZCArPSBjb21wcmVzc2VkX3dvcmxkCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEo
KSkKLQotICAgIGRlZiB0ZXN0X3NlbmRfbWVzc2FnZV9mcmFnbWVudGVkX2VtcHR5X2ZpcnN0X2Zy
YW1lKHNlbGYpOgotICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVy
KAotICAgICAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQot
ICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKLSAgICAgICAg
ICAgICAgICAnJywgcGVybWVzc2FnZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotICAgICAg
ICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnJywgZW5kPUZhbHNlKQotICAgICAgICBt
c2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnSGVsbG8nKQotCi0gICAgICAgIGNvbXByZXNz
ID0gemxpYi5jb21wcmVzc29iaigKLSAgICAgICAgICAgICAgICB6bGliLlpfREVGQVVMVF9DT01Q
UkVTU0lPTiwgemxpYi5ERUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRTKQotICAgICAgICBjb21wcmVz
c2VkX2hlbGxvID0gY29tcHJlc3MuY29tcHJlc3MoJycpCi0gICAgICAgIGNvbXByZXNzZWRfaGVs
bG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIGV4cGVjdGVk
ID0gJ1x4NDElYycgJSBsZW4oY29tcHJlc3NlZF9oZWxsbykKLSAgICAgICAgZXhwZWN0ZWQgKz0g
Y29tcHJlc3NlZF9oZWxsbwotICAgICAgICBjb21wcmVzc2VkX2VtcHR5ID0gY29tcHJlc3MuY29t
cHJlc3MoJ0hlbGxvJykKLSAgICAgICAgY29tcHJlc3NlZF9lbXB0eSArPSBjb21wcmVzcy5mbHVz
aCh6bGliLlpfU1lOQ19GTFVTSCkKLSAgICAgICAgY29tcHJlc3NlZF9lbXB0eSA9IGNvbXByZXNz
ZWRfZW1wdHlbOi00XQotICAgICAgICBleHBlY3RlZCArPSAnXHg4MCVjJyAlIGxlbihjb21wcmVz
c2VkX2VtcHR5KQotICAgICAgICBleHBlY3RlZCArPSBjb21wcmVzc2VkX2VtcHR5Ci0gICAgICAg
IHByaW50KCclcicgJSBleHBlY3RlZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3Rl
ZCwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3Rfc2Vu
ZF9tZXNzYWdlX2ZyYWdtZW50ZWRfZW1wdHlfbGFzdF9mcmFtZShzZWxmKToKLSAgICAgICAgZXh0
ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigKLSAgICAgICAgICAgICAgICBjb21t
b24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVh
dGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEoCi0gICAgICAgICAgICAgICAgJycsIHBlcm1lc3NhZ2Vf
ZGVmbGF0ZV9yZXF1ZXN0PWV4dGVuc2lvbikKLSAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2Uo
cmVxdWVzdCwgJ0hlbGxvJywgZW5kPUZhbHNlKQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2Fn
ZShyZXF1ZXN0LCAnJykKLQotICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCi0g
ICAgICAgICAgICAgICAgemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQs
IC16bGliLk1BWF9XQklUUykKLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzLmNv
bXByZXNzKCdIZWxsbycpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gKz0gY29tcHJlc3MuZmx1
c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIGV4cGVjdGVkID0gJ1x4NDElYycgJSBsZW4o
Y29tcHJlc3NlZF9oZWxsbykKLSAgICAgICAgZXhwZWN0ZWQgKz0gY29tcHJlc3NlZF9oZWxsbwot
ICAgICAgICBjb21wcmVzc2VkX2VtcHR5ID0gY29tcHJlc3MuY29tcHJlc3MoJycpCi0gICAgICAg
IGNvbXByZXNzZWRfZW1wdHkgKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0g
ICAgICAgIGNvbXByZXNzZWRfZW1wdHkgPSBjb21wcmVzc2VkX2VtcHR5WzotNF0KLSAgICAgICAg
ZXhwZWN0ZWQgKz0gJ1x4ODAlYycgJSBsZW4oY29tcHJlc3NlZF9lbXB0eSkKLSAgICAgICAgZXhw
ZWN0ZWQgKz0gY29tcHJlc3NlZF9lbXB0eQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVj
dGVkLCByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICBkZWYgdGVzdF9z
ZW5kX21lc3NhZ2VfdXNpbmdfc21hbGxfd2luZG93KHNlbGYpOgotICAgICAgICBjb21tb25fcGFy
dCA9ICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicKLSAgICAgICAgdGVzdF9tZXNzYWdlID0g
Y29tbW9uX3BhcnQgKyAnLScgKiAzMDAwMCArIGNvbW1vbl9wYXJ0Ci0KLSAgICAgICAgZXh0ZW5z
aW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigKLSAgICAgICAgICAgICAgICBjb21tb24u
UEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKLSAgICAgICAgZXh0ZW5zaW9uLmFkZF9wYXJh
bWV0ZXIoJ3NlcnZlcl9tYXhfd2luZG93X2JpdHMnLCAnOCcpCi0gICAgICAgIHJlcXVlc3QgPSBf
Y3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAotICAgICAgICAgICAgICAgICcnLCBwZXJtZXNz
YWdlX2RlZmxhdGVfcmVxdWVzdD1leHRlbnNpb24pCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNz
YWdlKHJlcXVlc3QsIHRlc3RfbWVzc2FnZSkKLQotICAgICAgICBleHBlY3RlZF93ZWJzb2NrZXRf
aGVhZGVyX3NpemUgPSAyCi0gICAgICAgIGV4cGVjdGVkX3dlYnNvY2tldF9wYXlsb2FkX3NpemUg
PSA5MQotCi0gICAgICAgIGFjdHVhbF9mcmFtZSA9IHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVu
X2RhdGEoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3dlYnNvY2tldF9oZWFk
ZXJfc2l6ZSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfd2Vic29ja2V0X3Bh
eWxvYWRfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oYWN0dWFsX2ZyYW1lKSkK
LSAgICAgICAgYWN0dWFsX2hlYWRlciA9IGFjdHVhbF9mcmFtZVswOmV4cGVjdGVkX3dlYnNvY2tl
dF9oZWFkZXJfc2l6ZV0KLSAgICAgICAgYWN0dWFsX3BheWxvYWQgPSBhY3R1YWxfZnJhbWVbZXhw
ZWN0ZWRfd2Vic29ja2V0X2hlYWRlcl9zaXplOl0KLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KAotICAgICAgICAgICAgICAgICdceGMxJWMnICUgZXhwZWN0ZWRfd2Vic29ja2V0X3BheWxvYWRf
c2l6ZSwgYWN0dWFsX2hlYWRlcikKLSAgICAgICAgZGVjb21wcmVzcyA9IHpsaWIuZGVjb21wcmVz
c29iaigtOCkKLSAgICAgICAgZGVjb21wcmVzc2VkX21lc3NhZ2UgPSBkZWNvbXByZXNzLmRlY29t
cHJlc3MoCi0gICAgICAgICAgICAgICAgYWN0dWFsX3BheWxvYWQgKyAnXHgwMFx4MDBceGZmXHhm
ZicpCi0gICAgICAgIGRlY29tcHJlc3NlZF9tZXNzYWdlICs9IGRlY29tcHJlc3MuZmx1c2goKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RfbWVzc2FnZSwgZGVjb21wcmVzc2VkX21lc3Nh
Z2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgbGVuKGRlY29tcHJlc3MudW51c2VkX2Rh
dGEpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGxlbihkZWNvbXByZXNzLnVuY29uc3Vt
ZWRfdGFpbCkpCi0KLSAgICBkZWYgdGVzdF9zZW5kX21lc3NhZ2Vfbm9fY29udGV4dF90YWtlb3Zl
cl9wYXJhbWV0ZXIoc2VsZik6Ci0gICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25Q
YXJhbWV0ZXIoCi0gICAgICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRF
TlNJT04pCi0gICAgICAgIGV4dGVuc2lvbi5hZGRfcGFyYW1ldGVyKCdzZXJ2ZXJfbm9fY29udGV4
dF90YWtlb3ZlcicsIE5vbmUpCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJv
bV9yYXdkYXRhKAotICAgICAgICAgICAgICAgICcnLCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVxdWVz
dD1leHRlbnNpb24pCi0gICAgICAgIGZvciBpIGluIHhyYW5nZSgzKToKLSAgICAgICAgICAgIG1z
Z3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxsbycsIGVuZD1GYWxzZSkKLSAgICAgICAg
ICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxsbycsIGVuZD1UcnVlKQotCi0g
ICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVzc29iaigKLSAgICAgICAgICAgICAgICB6bGli
LlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRTKQot
Ci0gICAgICAgIGZpcnN0X2hlbGxvID0gY29tcHJlc3MuY29tcHJlc3MoJ0hlbGxvJykKLSAgICAg
ICAgZmlyc3RfaGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAg
ICAgIGV4cGVjdGVkID0gJ1x4NDElYycgJSBsZW4oZmlyc3RfaGVsbG8pCi0gICAgICAgIGV4cGVj
dGVkICs9IGZpcnN0X2hlbGxvCi0gICAgICAgIHNlY29uZF9oZWxsbyA9IGNvbXByZXNzLmNvbXBy
ZXNzKCdIZWxsbycpCi0gICAgICAgIHNlY29uZF9oZWxsbyArPSBjb21wcmVzcy5mbHVzaCh6bGli
LlpfU1lOQ19GTFVTSCkKLSAgICAgICAgc2Vjb25kX2hlbGxvID0gc2Vjb25kX2hlbGxvWzotNF0K
LSAgICAgICAgZXhwZWN0ZWQgKz0gJ1x4ODAlYycgJSBsZW4oc2Vjb25kX2hlbGxvKQotICAgICAg
ICBleHBlY3RlZCArPSBzZWNvbmRfaGVsbG8KLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAot
ICAgICAgICAgICAgICAgIGV4cGVjdGVkICsgZXhwZWN0ZWQgKyBleHBlY3RlZCwKLSAgICAgICAg
ICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICBkZWYgdGVz
dF9zZW5kX21lc3NhZ2VfZnJhZ21lbnRlZF9iZmluYWwoc2VsZik6Ci0gICAgICAgIGV4dGVuc2lv
biA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCi0gICAgICAgICAgICAgICAgY29tbW9uLlBF
Uk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04pCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3Jl
cXVlc3RfZnJvbV9yYXdkYXRhKAotICAgICAgICAgICAgICAgICcnLCBwZXJtZXNzYWdlX2RlZmxh
dGVfcmVxdWVzdD1leHRlbnNpb24pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDEsIGxlbihy
ZXF1ZXN0LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzKSkKLSAgICAgICAgcmVxdWVzdC53c19leHRl
bnNpb25fcHJvY2Vzc29yc1swXS5zZXRfYmZpbmFsKFRydWUpCi0gICAgICAgIG1zZ3V0aWwuc2Vu
ZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxsbycsIGVuZD1GYWxzZSkKLSAgICAgICAgbXNndXRpbC5z
ZW5kX21lc3NhZ2UocmVxdWVzdCwgJ1dvcmxkJywgZW5kPVRydWUpCi0KLSAgICAgICAgZXhwZWN0
ZWQgPSAnJwotCi0gICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVzc29iaigKLSAgICAgICAg
ICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELCAtemxpYi5NQVhf
V0JJVFMpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzcy5jb21wcmVzcygnSGVs
bG8nKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9G
SU5JU0gpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzc2VkX2hlbGxvICsgY2hy
KDApCi0gICAgICAgIGV4cGVjdGVkICs9ICdceDQxJWMnICUgbGVuKGNvbXByZXNzZWRfaGVsbG8p
Ci0gICAgICAgIGV4cGVjdGVkICs9IGNvbXByZXNzZWRfaGVsbG8KLQotICAgICAgICBjb21wcmVz
cyA9IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAgICAgICB6bGliLlpfREVGQVVMVF9DT01QUkVT
U0lPTiwgemxpYi5ERUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRTKQotICAgICAgICBjb21wcmVzc2Vk
X3dvcmxkID0gY29tcHJlc3MuY29tcHJlc3MoJ1dvcmxkJykKLSAgICAgICAgY29tcHJlc3NlZF93
b3JsZCArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfRklOSVNIKQotICAgICAgICBjb21wcmVzc2Vk
X3dvcmxkID0gY29tcHJlc3NlZF93b3JsZCArIGNocigwKQotICAgICAgICBleHBlY3RlZCArPSAn
XHg4MCVjJyAlIGxlbihjb21wcmVzc2VkX3dvcmxkKQotICAgICAgICBleHBlY3RlZCArPSBjb21w
cmVzc2VkX3dvcmxkCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgcmVxdWVz
dC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9tZXNz
YWdlX2RlZmxhdGUoc2VsZik6Ci0gICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVzc29iaigK
LSAgICAgICAgICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELCAt
emxpYi5NQVhfV0JJVFMpCi0KLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzLmNv
bXByZXNzKCdIZWxsbycpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gKz0gY29tcHJlc3MuZmx1
c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVz
c2VkX2hlbGxvWzotNF0KLSAgICAgICAgZGF0YSA9ICdceGMxJWMnICUgKGxlbihjb21wcmVzc2Vk
X2hlbGxvKSB8IDB4ODApCi0gICAgICAgIGRhdGEgKz0gX21hc2tfaHliaShjb21wcmVzc2VkX2hl
bGxvKQotCi0gICAgICAgICMgQ2xvc2UgZnJhbWUKLSAgICAgICAgZGF0YSArPSAnXHg4OFx4OGEn
ICsgX21hc2tfaHliaShzdHJ1Y3QucGFjaygnIUgnLCAxMDAwKSArICdHb29kIGJ5ZScpCi0KLSAg
ICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigKLSAgICAgICAgICAg
ICAgICBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKLSAgICAgICAgcmVxdWVz
dCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2RhdGEoCi0gICAgICAgICAgICAgICAgZGF0YSwg
cGVybWVzc2FnZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdIZWxsbycsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVz
dCkpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX21lc3NhZ2VfcmFuZG9tX3NlY3Rpb24oc2VsZik6
Ci0gICAgICAgICIiIlRlc3QgdGhhdCBhIGNvbXByZXNzZWQgbWVzc2FnZSBmcmFnbWVudGVkIGlu
dG8gbG90cyBvZiBjaHVua3MgaXMKLSAgICAgICAgY29ycmVjdGx5IHJlY2VpdmVkLgotICAgICAg
ICAiIiIKLQotICAgICAgICByYW5kb20uc2VlZChhPTApCi0gICAgICAgIHBheWxvYWQgPSAnJy5q
b2luKAotICAgICAgICAgICAgW2NocihyYW5kb20ucmFuZGludCgwLCAyNTUpKSBmb3IgaSBpbiB4
cmFuZ2UoMTAwMCldKQotCi0gICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVzc29iaigKLSAg
ICAgICAgICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELCAtemxp
Yi5NQVhfV0JJVFMpCi0gICAgICAgIGNvbXByZXNzZWRfcGF5bG9hZCA9IGNvbXByZXNzLmNvbXBy
ZXNzKHBheWxvYWQpCi0gICAgICAgIGNvbXByZXNzZWRfcGF5bG9hZCArPSBjb21wcmVzcy5mbHVz
aCh6bGliLlpfU1lOQ19GTFVTSCkKLSAgICAgICAgY29tcHJlc3NlZF9wYXlsb2FkID0gY29tcHJl
c3NlZF9wYXlsb2FkWzotNF0KLQotICAgICAgICAjIEZyYWdtZW50IHRoZSBjb21wcmVzc2VkIHBh
eWxvYWQgaW50byBsb3RzIG9mIGZyYW1lcy4KLSAgICAgICAgYnl0ZXNfY2h1bmtlZCA9IDAKLSAg
ICAgICAgZGF0YSA9ICcnCi0gICAgICAgIGZyYW1lX2NvdW50ID0gMAotCi0gICAgICAgIGNodW5r
X3NpemVzID0gW10KLQotICAgICAgICB3aGlsZSBieXRlc19jaHVua2VkIDwgbGVuKGNvbXByZXNz
ZWRfcGF5bG9hZCk6Ci0gICAgICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0Ci0gICAgICAgICAgICAj
IC0gdGhlIGxlbmd0aCBvZiBjaHVua3MgYXJlIGVxdWFsIG9yIGxlc3MgdGhhbiAxMjUgc28gdGhh
dCB3ZSBjYW4KLSAgICAgICAgICAgICMgICB1c2UgMSBvY3RldCBsZW5ndGggaGVhZGVyIGZvcm1h
dCBmb3IgYWxsIGZyYW1lcy4KLSAgICAgICAgICAgICMgLSBhdCBsZWFzdCAxMCBjaHVua3MgYXJl
IGNyZWF0ZWQuCi0gICAgICAgICAgICBjaHVua19zaXplID0gcmFuZG9tLnJhbmRpbnQoCi0gICAg
ICAgICAgICAgICAgMSwgbWluKDEyNSwKLSAgICAgICAgICAgICAgICAgICAgICAgbGVuKGNvbXBy
ZXNzZWRfcGF5bG9hZCkgLyAxMCwKLSAgICAgICAgICAgICAgICAgICAgICAgbGVuKGNvbXByZXNz
ZWRfcGF5bG9hZCkgLSBieXRlc19jaHVua2VkKSkKLSAgICAgICAgICAgIGNodW5rX3NpemVzLmFw
cGVuZChjaHVua19zaXplKQotICAgICAgICAgICAgY2h1bmsgPSBjb21wcmVzc2VkX3BheWxvYWRb
Ci0gICAgICAgICAgICAgICAgYnl0ZXNfY2h1bmtlZDpieXRlc19jaHVua2VkICsgY2h1bmtfc2l6
ZV0KLSAgICAgICAgICAgIGJ5dGVzX2NodW5rZWQgKz0gY2h1bmtfc2l6ZQotCi0gICAgICAgICAg
ICBmaXJzdF9vY3RldCA9IDB4MDAKLSAgICAgICAgICAgIGlmIGxlbihkYXRhKSA9PSAwOgotICAg
ICAgICAgICAgICAgIGZpcnN0X29jdGV0ID0gZmlyc3Rfb2N0ZXQgfCAweDQyCi0gICAgICAgICAg
ICBpZiBieXRlc19jaHVua2VkID09IGxlbihjb21wcmVzc2VkX3BheWxvYWQpOgotICAgICAgICAg
ICAgICAgIGZpcnN0X29jdGV0ID0gZmlyc3Rfb2N0ZXQgfCAweDgwCi0KLSAgICAgICAgICAgIGRh
dGEgKz0gJyVjJWMnICUgKGZpcnN0X29jdGV0LCBjaHVua19zaXplIHwgMHg4MCkKLSAgICAgICAg
ICAgIGRhdGEgKz0gX21hc2tfaHliaShjaHVuaykKLQotICAgICAgICAgICAgZnJhbWVfY291bnQg
Kz0gMQotCi0gICAgICAgIHByaW50KCJDaHVuayBzaXplczogJXIiICUgY2h1bmtfc2l6ZXMpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsZW4oY2h1bmtfc2l6ZXMpID4gMTApCi0KLSAgICAgICAg
IyBDbG9zZSBmcmFtZQotICAgICAgICBkYXRhICs9ICdceDg4XHg4YScgKyBfbWFza19oeWJpKHN0
cnVjdC5wYWNrKCchSCcsIDEwMDApICsgJ0dvb2QgYnllJykKLQotICAgICAgICBleHRlbnNpb24g
PSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAotICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NB
R0VfREVGTEFURV9FWFRFTlNJT04pCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3Rf
ZnJvbV9yYXdkYXRhKAotICAgICAgICAgICAgZGF0YSwgcGVybWVzc2FnZV9kZWZsYXRlX3JlcXVl
c3Q9ZXh0ZW5zaW9uKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBheWxvYWQsIG1zZ3V0aWwu
cmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9u
ZSwgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0KLSAgICBkZWYgdGVzdF9yZWNl
aXZlX3R3b19tZXNzYWdlcyhzZWxmKToKLSAgICAgICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNz
b2JqKAotICAgICAgICAgICAgICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRF
RkxBVEVELCAtemxpYi5NQVhfV0JJVFMpCi0KLSAgICAgICAgZGF0YSA9ICcnCi0KLSAgICAgICAg
Y29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzLmNvbXByZXNzKCdIZWxsb1dlYlNvY2tldCcpCi0g
ICAgICAgIGNvbXByZXNzZWRfaGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxV
U0gpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzc2VkX2hlbGxvWzotNF0KLSAg
ICAgICAgc3BsaXRfcG9zaXRpb24gPSBsZW4oY29tcHJlc3NlZF9oZWxsbykgLyAyCi0gICAgICAg
IGRhdGEgKz0gJ1x4NDElYycgJSAoc3BsaXRfcG9zaXRpb24gfCAweDgwKQotICAgICAgICBkYXRh
ICs9IF9tYXNrX2h5YmkoY29tcHJlc3NlZF9oZWxsb1s6c3BsaXRfcG9zaXRpb25dKQotCi0gICAg
ICAgIGRhdGEgKz0gJ1x4ODAlYycgJSAoKGxlbihjb21wcmVzc2VkX2hlbGxvKSAtIHNwbGl0X3Bv
c2l0aW9uKSB8IDB4ODApCi0gICAgICAgIGRhdGEgKz0gX21hc2tfaHliaShjb21wcmVzc2VkX2hl
bGxvW3NwbGl0X3Bvc2l0aW9uOl0pCi0KLSAgICAgICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNz
b2JqKAotICAgICAgICAgICAgICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRF
RkxBVEVELCAtemxpYi5NQVhfV0JJVFMpCi0KLSAgICAgICAgY29tcHJlc3NlZF93b3JsZCA9IGNv
bXByZXNzLmNvbXByZXNzKCdXb3JsZCcpCi0gICAgICAgIGNvbXByZXNzZWRfd29ybGQgKz0gY29t
cHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIGNvbXByZXNzZWRfd29ybGQg
PSBjb21wcmVzc2VkX3dvcmxkWzotNF0KLSAgICAgICAgZGF0YSArPSAnXHhjMSVjJyAlIChsZW4o
Y29tcHJlc3NlZF93b3JsZCkgfCAweDgwKQotICAgICAgICBkYXRhICs9IF9tYXNrX2h5YmkoY29t
cHJlc3NlZF93b3JsZCkKLQotICAgICAgICAjIENsb3NlIGZyYW1lCi0gICAgICAgIGRhdGEgKz0g
J1x4ODhceDhhJyArIF9tYXNrX2h5Ymkoc3RydWN0LnBhY2soJyFIJywgMTAwMCkgKyAnR29vZCBi
eWUnKQotCi0gICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCi0g
ICAgICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04pCi0gICAg
ICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAotICAgICAgICAgICAg
ICAgIGRhdGEsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0PWV4dGVuc2lvbikKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgnSGVsbG9XZWJTb2NrZXQnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2Fn
ZShyZXF1ZXN0KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnV29ybGQnLCBtc2d1dGlsLnJl
Y2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUs
IG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotCi0gICAgZGVmIHRlc3RfcmVjZWl2
ZV9tZXNzYWdlX21peGVkX2J0eXBlKHNlbGYpOgotICAgICAgICAiIiJUZXN0IHRoYXQgYSBtZXNz
YWdlIGNvbXByZXNzZWQgdXNpbmcgbG90cyBvZiBERUZMQVRFIGJsb2NrcyB3aXRoCi0gICAgICAg
IHZhcmlvdXMgZmx1c2ggbW9kZSBpcyBjb3JyZWN0bHkgcmVjZWl2ZWQuCi0gICAgICAgICIiIgot
Ci0gICAgICAgIHJhbmRvbS5zZWVkKGE9MCkKLSAgICAgICAgcGF5bG9hZCA9ICcnLmpvaW4oCi0g
ICAgICAgICAgICBbY2hyKHJhbmRvbS5yYW5kaW50KDAsIDI1NSkpIGZvciBpIGluIHhyYW5nZSgx
MDAwKV0pCi0KLSAgICAgICAgY29tcHJlc3MgPSBOb25lCi0KLSAgICAgICAgIyBGcmFnbWVudCB0
aGUgY29tcHJlc3NlZCBwYXlsb2FkIGludG8gbG90cyBvZiBmcmFtZXMuCi0gICAgICAgIGJ5dGVz
X2NodW5rZWQgPSAwCi0gICAgICAgIGNvbXByZXNzZWRfcGF5bG9hZCA9ICcnCi0KLSAgICAgICAg
Y2h1bmtfc2l6ZXMgPSBbXQotICAgICAgICBtZXRob2RzID0gW10KLSAgICAgICAgc3luY191c2Vk
ID0gRmFsc2UKLSAgICAgICAgZmluaXNoX3VzZWQgPSBGYWxzZQotCi0gICAgICAgIHdoaWxlIGJ5
dGVzX2NodW5rZWQgPCBsZW4ocGF5bG9hZCk6Ci0gICAgICAgICAgICAjIE1ha2Ugc3VyZSBhdCBs
ZWFzdCAxMCBjaHVua3MgYXJlIGNyZWF0ZWQuCi0gICAgICAgICAgICBjaHVua19zaXplID0gcmFu
ZG9tLnJhbmRpbnQoCi0gICAgICAgICAgICAgICAgMSwgbWluKDEwMCwgbGVuKHBheWxvYWQpIC0g
Ynl0ZXNfY2h1bmtlZCkpCi0gICAgICAgICAgICBjaHVua19zaXplcy5hcHBlbmQoY2h1bmtfc2l6
ZSkKLSAgICAgICAgICAgIGNodW5rID0gcGF5bG9hZFtieXRlc19jaHVua2VkOmJ5dGVzX2NodW5r
ZWQgKyBjaHVua19zaXplXQotCi0gICAgICAgICAgICBieXRlc19jaHVua2VkICs9IGNodW5rX3Np
emUKLQotICAgICAgICAgICAgaWYgY29tcHJlc3MgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBj
b21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAgICAgICAgICAgICAgIHpsaWIuWl9E
RUZBVUxUX0NPTVBSRVNTSU9OLAotICAgICAgICAgICAgICAgICAgICB6bGliLkRFRkxBVEVELAot
ICAgICAgICAgICAgICAgICAgICAtemxpYi5NQVhfV0JJVFMpCi0KLSAgICAgICAgICAgIGlmIGJ5
dGVzX2NodW5rZWQgPT0gbGVuKHBheWxvYWQpOgotICAgICAgICAgICAgICAgIGNvbXByZXNzZWRf
cGF5bG9hZCArPSBjb21wcmVzcy5jb21wcmVzcyhjaHVuaykKLSAgICAgICAgICAgICAgICBjb21w
cmVzc2VkX3BheWxvYWQgKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAg
ICAgICAgICAgICAgY29tcHJlc3NlZF9wYXlsb2FkID0gY29tcHJlc3NlZF9wYXlsb2FkWzotNF0K
LSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbWV0aG9kID0gcmFuZG9tLnJhbmRp
bnQoMCwgMSkKLSAgICAgICAgICAgICAgICBtZXRob2RzLmFwcGVuZChtZXRob2QpCi0gICAgICAg
ICAgICAgICAgaWYgbWV0aG9kID09IDA6Ci0gICAgICAgICAgICAgICAgICAgIGNvbXByZXNzZWRf
cGF5bG9hZCArPSBjb21wcmVzcy5jb21wcmVzcyhjaHVuaykKLSAgICAgICAgICAgICAgICAgICAg
Y29tcHJlc3NlZF9wYXlsb2FkICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQot
ICAgICAgICAgICAgICAgICAgICBzeW5jX3VzZWQgPSBUcnVlCi0gICAgICAgICAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgICAgICAgICAgY29tcHJlc3NlZF9wYXlsb2FkICs9IGNvbXByZXNzLmNv
bXByZXNzKGNodW5rKQotICAgICAgICAgICAgICAgICAgICBjb21wcmVzc2VkX3BheWxvYWQgKz0g
Y29tcHJlc3MuZmx1c2goemxpYi5aX0ZJTklTSCkKLSAgICAgICAgICAgICAgICAgICAgY29tcHJl
c3MgPSBOb25lCi0gICAgICAgICAgICAgICAgICAgIGZpbmlzaF91c2VkID0gVHJ1ZQotCi0gICAg
ICAgIHByaW50KCJDaHVuayBzaXplczogJXIiICUgY2h1bmtfc2l6ZXMpCi0gICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZShsZW4oY2h1bmtfc2l6ZXMpID4gMTApCi0gICAgICAgIHByaW50KCJNZXRob2Rz
OiAlciIgJSBtZXRob2RzKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoc3luY191c2VkKQotICAg
ICAgICBzZWxmLmFzc2VydFRydWUoZmluaXNoX3VzZWQpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKDEyNSA8IGxlbihjb21wcmVzc2VkX3BheWxvYWQpKQotICAgICAgICBzZWxmLmFzc2VydFRy
dWUobGVuKGNvbXByZXNzZWRfcGF5bG9hZCkgPCA2NTUzNikKLSAgICAgICAgZGF0YSA9ICdceGMy
XHhmZScgKyBzdHJ1Y3QucGFjaygnIUgnLCBsZW4oY29tcHJlc3NlZF9wYXlsb2FkKSkKLSAgICAg
ICAgZGF0YSArPSBfbWFza19oeWJpKGNvbXByZXNzZWRfcGF5bG9hZCkKLQotICAgICAgICAjIENs
b3NlIGZyYW1lCi0gICAgICAgIGRhdGEgKz0gJ1x4ODhceDhhJyArIF9tYXNrX2h5Ymkoc3RydWN0
LnBhY2soJyFIJywgMTAwMCkgKyAnR29vZCBieWUnKQotCi0gICAgICAgIGV4dGVuc2lvbiA9IGNv
bW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCi0gICAgICAgICAgICBjb21tb24uUEVSTUVTU0FHRV9E
RUZMQVRFX0VYVEVOU0lPTikKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9t
X3Jhd2RhdGEoCi0gICAgICAgICAgICBkYXRhLCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVxdWVzdD1l
eHRlbnNpb24pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF5bG9hZCwgbXNndXRpbC5yZWNl
aXZlX21lc3NhZ2UocmVxdWVzdCkpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBt
c2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLQotCi1jbGFzcyBNZXNzYWdlVGVzdEhp
eGllNzUodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIlRlc3RzIGZvciBkcmFmdC1oaXhpZS10
aGV3ZWJzb2NrZXRwcm90b2NvbC03NiBzdHJlYW0gY2xhc3MuIiIiCi0KLSAgICBkZWYgdGVzdF9z
ZW5kX21lc3NhZ2Uoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfaGl4
aWU3NSgpCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxsbycpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4MDBIZWxsb1x4ZmYnLCByZXF1ZXN0LmNvbm5lY3Rp
b24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICBkZWYgdGVzdF9zZW5kX21lc3NhZ2VfdW5pY29kZShz
ZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9oaXhpZTc1KCkKLSAgICAg
ICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgdSdcdTY1ZTUnKQotICAgICAgICAjIFUr
NjVlNSBpcyBlbmNvZGVkIGFzIGU2LDk3LGE1IGluIFVURi04Ci0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ1x4MDBceGU2XHg5N1x4YTVceGZmJywKLSAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZl
X21lc3NhZ2Uoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfaGl4aWU3
NSgnXHgwMEhlbGxvXHhmZlx4MDBXb3JsZCFceGZmJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgnSGVsbG8nLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgnV29ybGQhJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkp
Ci0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX21lc3NhZ2VfdW5pY29kZShzZWxmKToKLSAgICAgICAg
cmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9oaXhpZTc1KCdceDAwXHhlNlx4OWNceGFjXHhmZicp
Ci0gICAgICAgICMgVSs2NzJjIGlzIGVuY29kZWQgYXMgZTYsOWMsYWMgaW4gVVRGLTgKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCh1J1x1NjcyYycsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJl
cXVlc3QpKQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9tZXNzYWdlX2Vycm9uZW91c191bmljb2Rl
KHNlbGYpOgotICAgICAgICAjIFx4ODAgYW5kIFx4ODEgYXJlIGludmFsaWQgYXMgVVRGLTguCi0g
ICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfaGl4aWU3NSgnXHgwMFx4ODBceDgxXHhm
ZicpCi0gICAgICAgICMgSW52YWxpZCBjaGFyYWN0ZXJzIHNob3VsZCBiZSByZXBsYWNlZCB3aXRo
Ci0gICAgICAgICMgVStmZmZkIFJFUExBQ0VNRU5UIENIQVJBQ1RFUgotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHUnXHVmZmZkXHVmZmZkJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVz
dCkpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX21lc3NhZ2VfZGlzY2FyZChzZWxmKToKLSAgICAg
ICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9oaXhpZTc1KCdceDgwXHgwNklHTk9SRVx4MDBI
ZWxsb1x4ZmYnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXHgw
MURJU1JFR0FSRFx4ZmZceDAwV29ybGQhXHhmZicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
J0hlbGxvJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJ1dvcmxkIScsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQot
Ci0KLWNsYXNzIE1lc3NhZ2VSZWNlaXZlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIi
IlRlc3RzIHRoZSBTdHJlYW0gY2xhc3MgdXNpbmcgTWVzc2FnZVJlY2VpdmVyLiIiIgotCi0gICAg
ZGVmIHRlc3RfcXVldWUoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX2Jsb2NraW5n
X3JlcXVlc3QoKQotICAgICAgICByZWNlaXZlciA9IG1zZ3V0aWwuTWVzc2FnZVJlY2VpdmVyKHJl
cXVlc3QpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCByZWNlaXZlci5yZWNlaXZl
X25vd2FpdCgpKQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoJ1x4ODFc
eDg2JyArIF9tYXNrX2h5YmkoJ0hlbGxvIScpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdI
ZWxsbyEnLCByZWNlaXZlci5yZWNlaXZlKCkpCi0KLSAgICBkZWYgdGVzdF9vbm1lc3NhZ2Uoc2Vs
Zik6Ci0gICAgICAgIG9ubWVzc2FnZV9xdWV1ZSA9IFF1ZXVlLlF1ZXVlKCkKLQotICAgICAgICBk
ZWYgb25tZXNzYWdlX2hhbmRsZXIobWVzc2FnZSk6Ci0gICAgICAgICAgICBvbm1lc3NhZ2VfcXVl
dWUucHV0KG1lc3NhZ2UpCi0KLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfYmxvY2tpbmdfcmVx
dWVzdCgpCi0gICAgICAgIHJlY2VpdmVyID0gbXNndXRpbC5NZXNzYWdlUmVjZWl2ZXIocmVxdWVz
dCwgb25tZXNzYWdlX2hhbmRsZXIpCi0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9i
eXRlcygnXHg4MVx4ODYnICsgX21hc2tfaHliaSgnSGVsbG8hJykpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJ0hlbGxvIScsIG9ubWVzc2FnZV9xdWV1ZS5nZXQoKSkKLQotCi1jbGFzcyBNZXNz
YWdlUmVjZWl2ZXJIaXhpZTc1VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiVGVzdHMg
dGhlIFN0cmVhbUhpeGllNzUgY2xhc3MgdXNpbmcgTWVzc2FnZVJlY2VpdmVyLiIiIgotCi0gICAg
ZGVmIHRlc3RfcXVldWUoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX2Jsb2NraW5n
X3JlcXVlc3RfaGl4aWU3NSgpCi0gICAgICAgIHJlY2VpdmVyID0gbXNndXRpbC5NZXNzYWdlUmVj
ZWl2ZXIocmVxdWVzdCkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIHJlY2VpdmVy
LnJlY2VpdmVfbm93YWl0KCkpCi0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRl
cygnXHgwMEhlbGxvIVx4ZmYnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdIZWxsbyEnLCBy
ZWNlaXZlci5yZWNlaXZlKCkpCi0KLSAgICBkZWYgdGVzdF9vbm1lc3NhZ2Uoc2VsZik6Ci0gICAg
ICAgIG9ubWVzc2FnZV9xdWV1ZSA9IFF1ZXVlLlF1ZXVlKCkKLQotICAgICAgICBkZWYgb25tZXNz
YWdlX2hhbmRsZXIobWVzc2FnZSk6Ci0gICAgICAgICAgICBvbm1lc3NhZ2VfcXVldWUucHV0KG1l
c3NhZ2UpCi0KLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfYmxvY2tpbmdfcmVxdWVzdF9oaXhp
ZTc1KCkKLSAgICAgICAgcmVjZWl2ZXIgPSBtc2d1dGlsLk1lc3NhZ2VSZWNlaXZlcihyZXF1ZXN0
LCBvbm1lc3NhZ2VfaGFuZGxlcikKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5
dGVzKCdceDAwSGVsbG8hXHhmZicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvIScs
IG9ubWVzc2FnZV9xdWV1ZS5nZXQoKSkKLQotCi1jbGFzcyBNZXNzYWdlU2VuZGVyVGVzdCh1bml0
dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiVGVzdHMgdGhlIFN0cmVhbSBjbGFzcyB1c2luZyBNZXNz
YWdlU2VuZGVyLiIiIgotCi0gICAgZGVmIHRlc3Rfc2VuZChzZWxmKToKLSAgICAgICAgcmVxdWVz
dCA9IF9jcmVhdGVfYmxvY2tpbmdfcmVxdWVzdCgpCi0gICAgICAgIHNlbmRlciA9IG1zZ3V0aWwu
TWVzc2FnZVNlbmRlcihyZXF1ZXN0KQotCi0gICAgICAgIHNlbmRlci5zZW5kKCdXb3JsZCcpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4ODFceDA1V29ybGQnLCByZXF1ZXN0LmNvbm5lY3Rp
b24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICBkZWYgdGVzdF9zZW5kX25vd2FpdChzZWxmKToKLSAg
ICAgICAgIyBVc2UgYSBxdWV1ZSB0byBjaGVjayB0aGUgYnl0ZXMgd3JpdHRlbiBieSBNZXNzYWdl
U2VuZGVyLgotICAgICAgICAjIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSBjYW5u
b3QgYmUgdXNlZCBoZXJlIGJlY2F1c2UKLSAgICAgICAgIyBNZXNzYWdlU2VuZGVyIHJ1bnMgaW4g
YSBzZXBhcmF0ZSB0aHJlYWQuCi0gICAgICAgIHNlbmRfcXVldWUgPSBRdWV1ZS5RdWV1ZSgpCi0K
LSAgICAgICAgZGVmIHdyaXRlKGJ5dGVzKToKLSAgICAgICAgICAgIHNlbmRfcXVldWUucHV0KGJ5
dGVzKQotCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX2Jsb2NraW5nX3JlcXVlc3QoKQotICAg
ICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUgPSB3cml0ZQotCi0gICAgICAgIHNlbmRlciA9
IG1zZ3V0aWwuTWVzc2FnZVNlbmRlcihyZXF1ZXN0KQotCi0gICAgICAgIHNlbmRlci5zZW5kX25v
d2FpdCgnSGVsbG8nKQotICAgICAgICBzZW5kZXIuc2VuZF9ub3dhaXQoJ1dvcmxkJykKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgnXHg4MVx4MDVIZWxsbycsIHNlbmRfcXVldWUuZ2V0KCkpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4ODFceDA1V29ybGQnLCBzZW5kX3F1ZXVlLmdldCgp
KQotCi0KLWNsYXNzIE1lc3NhZ2VTZW5kZXJIaXhpZTc1VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
Ci0gICAgIiIiVGVzdHMgdGhlIFN0cmVhbUhpeGllNzUgY2xhc3MgdXNpbmcgTWVzc2FnZVNlbmRl
ci4iIiIKLQotICAgIGRlZiB0ZXN0X3NlbmQoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3Jl
YXRlX2Jsb2NraW5nX3JlcXVlc3RfaGl4aWU3NSgpCi0gICAgICAgIHNlbmRlciA9IG1zZ3V0aWwu
TWVzc2FnZVNlbmRlcihyZXF1ZXN0KQotCi0gICAgICAgIHNlbmRlci5zZW5kKCdXb3JsZCcpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4MDBXb3JsZFx4ZmYnLCByZXF1ZXN0LmNvbm5lY3Rp
b24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICBkZWYgdGVzdF9zZW5kX25vd2FpdChzZWxmKToKLSAg
ICAgICAgIyBVc2UgYSBxdWV1ZSB0byBjaGVjayB0aGUgYnl0ZXMgd3JpdHRlbiBieSBNZXNzYWdl
U2VuZGVyLgotICAgICAgICAjIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSBjYW5u
b3QgYmUgdXNlZCBoZXJlIGJlY2F1c2UKLSAgICAgICAgIyBNZXNzYWdlU2VuZGVyIHJ1bnMgaW4g
YSBzZXBhcmF0ZSB0aHJlYWQuCi0gICAgICAgIHNlbmRfcXVldWUgPSBRdWV1ZS5RdWV1ZSgpCi0K
LSAgICAgICAgZGVmIHdyaXRlKGJ5dGVzKToKLSAgICAgICAgICAgIHNlbmRfcXVldWUucHV0KGJ5
dGVzKQotCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX2Jsb2NraW5nX3JlcXVlc3RfaGl4aWU3
NSgpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZSA9IHdyaXRlCi0KLSAgICAgICAg
c2VuZGVyID0gbXNndXRpbC5NZXNzYWdlU2VuZGVyKHJlcXVlc3QpCi0KLSAgICAgICAgc2VuZGVy
LnNlbmRfbm93YWl0KCdIZWxsbycpCi0gICAgICAgIHNlbmRlci5zZW5kX25vd2FpdCgnV29ybGQn
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDAwSGVsbG9ceGZmJywgc2VuZF9xdWV1ZS5n
ZXQoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHgwMFdvcmxkXHhmZicsIHNlbmRfcXVl
dWUuZ2V0KCkpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB1bml0dGVzdC5t
YWluKCkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0
X211eC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X211eC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDc3M2RlY2JmZDY2ZDBkZmZlZjBiNDI4N2JhZDg3NDUzZmMxZDY0NC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9tdXgu
cHkKKysrIC9kZXYvbnVsbApAQCAtMSwyMDg4ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhv
bgotIwotIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1
dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiVGVzdHMgZm9yIG11eCBtb2R1bGUuIiIiCi0K
LWltcG9ydCBRdWV1ZQotaW1wb3J0IGNvcHkKLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgb3B0cGFy
c2UKLWltcG9ydCBzdHJ1Y3QKLWltcG9ydCBzeXMKLWltcG9ydCB1bml0dGVzdAotaW1wb3J0IHRp
bWUKLWltcG9ydCB6bGliCi0KLWltcG9ydCBzZXRfc3lzX3BhdGggICMgVXBkYXRlIHN5cy5wYXRo
IHRvIGxvY2F0ZSBtb2RfcHl3ZWJzb2NrZXQgbW9kdWxlLgotCi1mcm9tIG1vZF9weXdlYnNvY2tl
dCBpbXBvcnQgY29tbW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgbXV4Ci1mcm9tIG1v
ZF9weXdlYnNvY2tldC5fc3RyZWFtX2Jhc2UgaW1wb3J0IENvbm5lY3Rpb25UZXJtaW5hdGVkRXhj
ZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2Jhc2UgaW1wb3J0IFVuc3VwcG9y
dGVkRnJhbWVFeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1faHliaSBpbXBv
cnQgRnJhbWUKLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1faHliaSBpbXBvcnQgU3RyZWFt
Ci1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0IFN0cmVhbU9wdGlvbnMK
LWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1faHliaSBpbXBvcnQgY3JlYXRlX2JpbmFyeV9m
cmFtZQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9oeWJpIGltcG9ydCBjcmVhdGVfY2xv
c2VfZnJhbWUKLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1faHliaSBpbXBvcnQgY3JlYXRl
X2Nsb3NpbmdfaGFuZHNoYWtlX2JvZHkKLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1faHli
aSBpbXBvcnQgcGFyc2VfZnJhbWUKLWZyb20gbW9kX3B5d2Vic29ja2V0LmV4dGVuc2lvbnMgaW1w
b3J0IE11eEV4dGVuc2lvblByb2Nlc3NvcgotCi0KLWltcG9ydCBtb2NrCi0KLQotX1RFU1RfSEVB
REVSUyA9IHsnSG9zdCc6ICdzZXJ2ZXIuZXhhbXBsZS5jb20nLAotICAgICAgICAgICAgICAgICAn
VXBncmFkZSc6ICd3ZWJzb2NrZXQnLAotICAgICAgICAgICAgICAgICAnQ29ubmVjdGlvbic6ICdV
cGdyYWRlJywKLSAgICAgICAgICAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5JzogJ2RHaGxJSE5o
YlhCc1pTQnViMjVqWlE9PScsCi0gICAgICAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LVZlcnNp
b24nOiAnMTMnLAotICAgICAgICAgICAgICAgICAnT3JpZ2luJzogJ2h0dHA6Ly9leGFtcGxlLmNv
bSd9Ci0KLQotY2xhc3MgX091dGdvaW5nQ2hhbm5lbERhdGEob2JqZWN0KToKLSAgICBkZWYgX19p
bml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYubWVzc2FnZXMgPSBbXQotICAgICAgICBzZWxmLmNv
bnRyb2xfbWVzc2FnZXMgPSBbXQotCi0gICAgICAgIHNlbGYuYnVpbGRlciA9IG11eC5fSW5uZXJN
ZXNzYWdlQnVpbGRlcigpCi0KLWNsYXNzIF9Nb2NrTXV4Q29ubmVjdGlvbihtb2NrLk1vY2tCbG9j
a2luZ0Nvbm4pOgotICAgICIiIk1vY2sgY2xhc3Mgb2YgbW9kX3B5dGhvbiBjb25uZWN0aW9uIGZv
ciBtdXguIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIG1vY2suTW9ja0Js
b2NraW5nQ29ubi5fX2luaXRfXyhzZWxmKQotICAgICAgICBzZWxmLl9jb250cm9sX2Jsb2NrcyA9
IFtdCi0gICAgICAgIHNlbGYuX2NoYW5uZWxfZGF0YSA9IHt9Ci0KLSAgICAgICAgc2VsZi5fY3Vy
cmVudF9vcGNvZGUgPSBOb25lCi0gICAgICAgIHNlbGYuX3BlbmRpbmdfZnJhZ21lbnRzID0gW10K
LQotICAgICAgICBzZWxmLnNlcnZlcl9jbG9zZV9jb2RlID0gTm9uZQotCi0gICAgZGVmIHdyaXRl
KHNlbGYsIGRhdGEpOgotICAgICAgICAiIiJPdmVycmlkZSBNb2NrQmxvY2tpbmdDb25uLndyaXRl
LiIiIgotCi0gICAgICAgIHNlbGYuX2N1cnJlbnRfZGF0YSA9IGRhdGEKLSAgICAgICAgc2VsZi5f
cG9zaXRpb24gPSAwCi0KLSAgICAgICAgZGVmIF9yZWNlaXZlX2J5dGVzKGxlbmd0aCk6Ci0gICAg
ICAgICAgICBpZiBzZWxmLl9wb3NpdGlvbiArIGxlbmd0aCA+IGxlbihzZWxmLl9jdXJyZW50X2Rh
dGEpOgotICAgICAgICAgICAgICAgIHJhaXNlIENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9u
KAotICAgICAgICAgICAgICAgICAgICAnRmFpbGVkIHRvIHJlY2VpdmUgJWQgYnl0ZXMgZnJvbSBl
bmNhcHN1bGF0ZWQgJwotICAgICAgICAgICAgICAgICAgICAnZnJhbWUnICUgbGVuZ3RoKQotICAg
ICAgICAgICAgZGF0YSA9IHNlbGYuX2N1cnJlbnRfZGF0YVtzZWxmLl9wb3NpdGlvbjpzZWxmLl9w
b3NpdGlvbitsZW5ndGhdCi0gICAgICAgICAgICBzZWxmLl9wb3NpdGlvbiArPSBsZW5ndGgKLSAg
ICAgICAgICAgIHJldHVybiBkYXRhCi0KLSAgICAgICAgIyBQYXJzZSBwaHlzaWNhbCBmcmFtZXMg
YW5kIGFzc2VtYmxlIGEgbWVzc2FnZSBpZiB0aGUgbWVzc2FnZSBpcwotICAgICAgICAjIGZyYWdt
ZW50ZWQuCi0gICAgICAgIG9wY29kZSwgcGF5bG9hZCwgZmluLCByc3YxLCByc3YyLCByc3YzID0g
KAotICAgICAgICAgICAgcGFyc2VfZnJhbWUoX3JlY2VpdmVfYnl0ZXMsIHVubWFza19yZWNlaXZl
PUZhbHNlKSkKLQotICAgICAgICBzZWxmLl9wZW5kaW5nX2ZyYWdtZW50cy5hcHBlbmQocGF5bG9h
ZCkKLQotICAgICAgICBpZiBzZWxmLl9jdXJyZW50X29wY29kZSBpcyBOb25lOgotICAgICAgICAg
ICAgaWYgb3Bjb2RlID09IGNvbW1vbi5PUENPREVfQ09OVElOVUFUSU9OOgotICAgICAgICAgICAg
ICAgIHJhaXNlIEV4Y2VwdGlvbignU2VuZGluZyBpbnZhbGlkIGNvbnRpbnVhdGlvbiBvcGNvZGUn
KQotICAgICAgICAgICAgc2VsZi5fY3VycmVudF9vcGNvZGUgPSBvcGNvZGUKLSAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgIGlmIG9wY29kZSAhPSBjb21tb24uT1BDT0RFX0NPTlRJTlVBVElPTjoK
LSAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1NlbmRpbmcgaW52YWxpZCBvcGNvZGUg
JWQnICUgb3Bjb2RlKQotICAgICAgICBpZiBub3QgZmluOgotICAgICAgICAgICAgcmV0dXJuCi0K
LSAgICAgICAgaW5uZXJfZnJhbWVfZGF0YSA9ICcnLmpvaW4oc2VsZi5fcGVuZGluZ19mcmFnbWVu
dHMpCi0gICAgICAgIHNlbGYuX3BlbmRpbmdfZnJhZ21lbnRzID0gW10KLSAgICAgICAgc2VsZi5f
Y3VycmVudF9vcGNvZGUgPSBOb25lCi0KLSAgICAgICAgIyBIYW5kbGUgYSBjb250cm9sIG1lc3Nh
Z2Ugb24gdGhlIHBoeXNpY2FsIGNoYW5uZWwuCi0gICAgICAgICMgVE9ETyhiYXNoaSk6IFN1cHBv
cnQgb3RoZXIgb3Bjb2RlcyBpZiBuZWVkZWQuCi0gICAgICAgIGlmIG9wY29kZSA9PSBjb21tb24u
T1BDT0RFX0NMT1NFOgotICAgICAgICAgICAgaWYgbGVuKHBheWxvYWQpID49IDI6Ci0gICAgICAg
ICAgICAgICAgc2VsZi5zZXJ2ZXJfY2xvc2VfY29kZSA9IHN0cnVjdC51bnBhY2soJyFIJywgcGF5
bG9hZFs6Ml0pWzBdCi0gICAgICAgICAgICBjbG9zZV9ib2R5ID0gY3JlYXRlX2Nsb3NpbmdfaGFu
ZHNoYWtlX2JvZHkoCi0gICAgICAgICAgICAgICAgY29tbW9uLlNUQVRVU19OT1JNQUxfQ0xPU1VS
RSwgJycpCi0gICAgICAgICAgICBjbG9zZV9mcmFtZSA9IGNyZWF0ZV9jbG9zZV9mcmFtZShjbG9z
ZV9ib2R5LCBtYXNrPVRydWUpCi0gICAgICAgICAgICBzZWxmLnB1dF9ieXRlcyhjbG9zZV9mcmFt
ZSkKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgICMgUGFyc2UgdGhlIHBheWxvYWQgb2Yg
dGhlIG1lc3NhZ2Ugb24gcGh5c2ljYWwgY2hhbm5lbC4KLSAgICAgICAgcGFyc2VyID0gbXV4Ll9N
dXhGcmFtZVBheWxvYWRQYXJzZXIoaW5uZXJfZnJhbWVfZGF0YSkKLSAgICAgICAgY2hhbm5lbF9p
ZCA9IHBhcnNlci5yZWFkX2NoYW5uZWxfaWQoKQotICAgICAgICBpZiBjaGFubmVsX2lkID09IG11
eC5fQ09OVFJPTF9DSEFOTkVMX0lEOgotICAgICAgICAgICAgc2VsZi5fY29udHJvbF9ibG9ja3Mu
ZXh0ZW5kKGxpc3QocGFyc2VyLnJlYWRfY29udHJvbF9ibG9ja3MoKSkpCi0gICAgICAgICAgICBy
ZXR1cm4KLQotICAgICAgICBpZiBub3QgY2hhbm5lbF9pZCBpbiBzZWxmLl9jaGFubmVsX2RhdGE6
Ci0gICAgICAgICAgICBzZWxmLl9jaGFubmVsX2RhdGFbY2hhbm5lbF9pZF0gPSBfT3V0Z29pbmdD
aGFubmVsRGF0YSgpCi0gICAgICAgIGNoYW5uZWxfZGF0YSA9IHNlbGYuX2NoYW5uZWxfZGF0YVtj
aGFubmVsX2lkXQotCi0gICAgICAgICMgUGFyc2UgbG9naWNhbCBmcmFtZXMgYW5kIGFzc2VtYmxl
IGFuIGlubmVyIChsb2dpY2FsKSBtZXNzYWdlLgotICAgICAgICAoaW5uZXJfZmluLCBpbm5lcl9y
c3YxLCBpbm5lcl9yc3YyLCBpbm5lcl9yc3YzLCBpbm5lcl9vcGNvZGUsCi0gICAgICAgICBpbm5l
cl9wYXlsb2FkKSA9IHBhcnNlci5yZWFkX2lubmVyX2ZyYW1lKCkKLSAgICAgICAgaW5uZXJfZnJh
bWUgPSBGcmFtZShpbm5lcl9maW4sIGlubmVyX3JzdjEsIGlubmVyX3JzdjIsIGlubmVyX3JzdjMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5uZXJfb3Bjb2RlLCBpbm5lcl9wYXlsb2Fk
KQotICAgICAgICBtZXNzYWdlID0gY2hhbm5lbF9kYXRhLmJ1aWxkZXIuYnVpbGQoaW5uZXJfZnJh
bWUpCi0gICAgICAgIGlmIG1lc3NhZ2UgaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybgotCi0g
ICAgICAgIGlmIChtZXNzYWdlLm9wY29kZSA9PSBjb21tb24uT1BDT0RFX1RFWFQgb3IKLSAgICAg
ICAgICAgIG1lc3NhZ2Uub3Bjb2RlID09IGNvbW1vbi5PUENPREVfQklOQVJZKToKLSAgICAgICAg
ICAgIGNoYW5uZWxfZGF0YS5tZXNzYWdlcy5hcHBlbmQobWVzc2FnZS5wYXlsb2FkKQotCi0gICAg
ICAgICAgICBzZWxmLm9uX2RhdGFfbWVzc2FnZShtZXNzYWdlLnBheWxvYWQpCi0gICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICBjaGFubmVsX2RhdGEuY29udHJvbF9tZXNzYWdlcy5hcHBlbmQoCi0g
ICAgICAgICAgICAgICAgeydvcGNvZGUnOiBtZXNzYWdlLm9wY29kZSwKLSAgICAgICAgICAgICAg
ICAgJ21lc3NhZ2UnOiBtZXNzYWdlLnBheWxvYWR9KQotCi0gICAgZGVmIG9uX2RhdGFfbWVzc2Fn
ZShzZWxmLCBtZXNzYWdlKToKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIGdldF93cml0dGVuX2Nv
bnRyb2xfYmxvY2tzKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fY29udHJvbF9ibG9ja3MK
LQotICAgIGRlZiBnZXRfd3JpdHRlbl9tZXNzYWdlcyhzZWxmLCBjaGFubmVsX2lkKToKLSAgICAg
ICAgcmV0dXJuIHNlbGYuX2NoYW5uZWxfZGF0YVtjaGFubmVsX2lkXS5tZXNzYWdlcwotCi0gICAg
ZGVmIGdldF93cml0dGVuX2NvbnRyb2xfbWVzc2FnZXMoc2VsZiwgY2hhbm5lbF9pZCk6Ci0gICAg
ICAgIHJldHVybiBzZWxmLl9jaGFubmVsX2RhdGFbY2hhbm5lbF9pZF0uY29udHJvbF9tZXNzYWdl
cwotCi0KLWNsYXNzIF9GYWlsT25Xcml0ZUNvbm5lY3Rpb24oX01vY2tNdXhDb25uZWN0aW9uKToK
LSAgICAiIiJTcGVjaWNpYWxpemVkIHZlcnNpb24gb2YgX01vY2tNdXhDb25uZWN0aW9uLiBJdHMg
d3JpdGUoKSBtZXRob2QgcmFpc2VzCi0gICAgYW4gZXhjZXB0aW9uIGZvciB0ZXN0aW5nIHdoZW4g
YSBkYXRhIG1lc3NhZ2UgaXMgd3JpdHRlbi4KLSAgICAiIiIKLQotICAgIGRlZiBvbl9kYXRhX21l
c3NhZ2Uoc2VsZiwgbWVzc2FnZSk6Ci0gICAgICAgICIiIk92ZXJyaWRlIHRvIHJhaXNlIGFuIGV4
Y2VwdGlvbi4iIiIKLQotICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0ludGVudGlvbmFsIGZhaWx1
cmUnKQotCi0KLWNsYXNzIF9DaGFubmVsRXZlbnQob2JqZWN0KToKLSAgICAiIiJBIHN0cnVjdHVy
ZSB0aGF0IHJlY29yZHMgY2hhbm5lbCBldmVudHMuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2Vs
Zik6Ci0gICAgICAgIHNlbGYucmVxdWVzdCA9IE5vbmUKLSAgICAgICAgc2VsZi5tZXNzYWdlcyA9
IFtdCi0gICAgICAgIHNlbGYuZXhjZXB0aW9uID0gTm9uZQotICAgICAgICBzZWxmLmNsaWVudF9p
bml0aWF0ZWRfY2xvc2luZyA9IEZhbHNlCi0KLQotY2xhc3MgX011eE1vY2tEaXNwYXRjaGVyKG9i
amVjdCk6Ci0gICAgIiIiTW9jayBjbGFzcyBvZiBkaXNwYXRjaC5EaXNwYXRjaGVyIGZvciBtdXgu
IiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYuY2hhbm5lbF9ldmVu
dHMgPSB7fQotCi0gICAgZGVmIGRvX2V4dHJhX2hhbmRzaGFrZShzZWxmLCByZXF1ZXN0KToKLSAg
ICAgICAgaWYgcmVxdWVzdC53c19yZXF1ZXN0ZWRfcHJvdG9jb2xzIGlzIG5vdCBOb25lOgotICAg
ICAgICAgICAgcmVxdWVzdC53c19wcm90b2NvbCA9IHJlcXVlc3Qud3NfcmVxdWVzdGVkX3Byb3Rv
Y29sc1swXQotCi0gICAgZGVmIF9kb19lY2hvKHNlbGYsIHJlcXVlc3QsIGNoYW5uZWxfZXZlbnRz
KToKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIG1lc3NhZ2UgPSByZXF1ZXN0Lndz
X3N0cmVhbS5yZWNlaXZlX21lc3NhZ2UoKQotICAgICAgICAgICAgaWYgbWVzc2FnZSA9PSBOb25l
OgotICAgICAgICAgICAgICAgIGNoYW5uZWxfZXZlbnRzLmNsaWVudF9pbml0aWF0ZWRfY2xvc2lu
ZyA9IFRydWUKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIGlmIG1lc3NhZ2Ug
PT0gJ0dvb2RieWUnOgotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgY2hhbm5l
bF9ldmVudHMubWVzc2FnZXMuYXBwZW5kKG1lc3NhZ2UpCi0gICAgICAgICAgICAjIGVjaG8gYmFj
awotICAgICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKG1lc3NhZ2UpCi0K
LSAgICBkZWYgX2RvX3Bpbmcoc2VsZiwgcmVxdWVzdCwgY2hhbm5lbF9ldmVudHMpOgotICAgICAg
ICByZXF1ZXN0LndzX3N0cmVhbS5zZW5kX3BpbmcoJ1BpbmchJykKLQotICAgIGRlZiBfZG9fcGlu
Z193aGlsZV9oZWxsb193b3JsZChzZWxmLCByZXF1ZXN0LCBjaGFubmVsX2V2ZW50cyk6Ci0gICAg
ICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRfbWVzc2FnZSgnSGVsbG8gJywgZW5kPUZhbHNlKQot
ICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5zZW5kX3BpbmcoJ1BpbmchJykKLSAgICAgICAgcmVx
dWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKCdXb3JsZCEnLCBlbmQ9VHJ1ZSkKLQotICAgIGRl
ZiBfZG9fdHdvX3Bpbmdfd2hpbGVfaGVsbG9fd29ybGQoc2VsZiwgcmVxdWVzdCwgY2hhbm5lbF9l
dmVudHMpOgotICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5zZW5kX21lc3NhZ2UoJ0hlbGxvICcs
IGVuZD1GYWxzZSkKLSAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9waW5nKCdQaW5nIScp
Ci0gICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRfcGluZygnUG9uZyEnKQotICAgICAgICBy
ZXF1ZXN0LndzX3N0cmVhbS5zZW5kX21lc3NhZ2UoJ1dvcmxkIScsIGVuZD1UcnVlKQotCi0gICAg
ZGVmIHRyYW5zZmVyX2RhdGEoc2VsZiwgcmVxdWVzdCk6Ci0gICAgICAgIHNlbGYuY2hhbm5lbF9l
dmVudHNbcmVxdWVzdC5jaGFubmVsX2lkXSA9IF9DaGFubmVsRXZlbnQoKQotICAgICAgICBzZWxm
LmNoYW5uZWxfZXZlbnRzW3JlcXVlc3QuY2hhbm5lbF9pZF0ucmVxdWVzdCA9IHJlcXVlc3QKLQot
ICAgICAgICB0cnk6Ci0gICAgICAgICAgICAjIE5vdGU6IG1vcmUgaGFuZGxlciB3aWxsIGJlIGFk
ZGVkLgotICAgICAgICAgICAgaWYgcmVxdWVzdC51cmkuZW5kc3dpdGgoJ2VjaG8nKToKLSAgICAg
ICAgICAgICAgICBzZWxmLl9kb19lY2hvKHJlcXVlc3QsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZWxmLmNoYW5uZWxfZXZlbnRzW3JlcXVlc3QuY2hhbm5lbF9pZF0pCi0gICAgICAg
ICAgICBlbGlmIHJlcXVlc3QudXJpLmVuZHN3aXRoKCdwaW5nJyk6Ci0gICAgICAgICAgICAgICAg
c2VsZi5fZG9fcGluZyhyZXF1ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5jaGFubmVsX2V2ZW50c1tyZXF1ZXN0LmNoYW5uZWxfaWRdKQotICAgICAgICAgICAgZWxpZiBy
ZXF1ZXN0LnVyaS5lbmRzd2l0aCgndHdvX3Bpbmdfd2hpbGVfaGVsbG9fd29ybGQnKToKLSAgICAg
ICAgICAgICAgICBzZWxmLl9kb190d29fcGluZ193aGlsZV9oZWxsb193b3JsZCgKLSAgICAgICAg
ICAgICAgICAgICAgcmVxdWVzdCwgc2VsZi5jaGFubmVsX2V2ZW50c1tyZXF1ZXN0LmNoYW5uZWxf
aWRdKQotICAgICAgICAgICAgZWxpZiByZXF1ZXN0LnVyaS5lbmRzd2l0aCgncGluZ193aGlsZV9o
ZWxsb193b3JsZCcpOgotICAgICAgICAgICAgICAgIHNlbGYuX2RvX3Bpbmdfd2hpbGVfaGVsbG9f
d29ybGQoCi0gICAgICAgICAgICAgICAgICAgIHJlcXVlc3QsIHNlbGYuY2hhbm5lbF9ldmVudHNb
cmVxdWVzdC5jaGFubmVsX2lkXSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAg
cmFpc2UgVmFsdWVFcnJvcignQ2Fubm90IGhhbmRsZSBwYXRoICVyJyAlIHJlcXVlc3QucGF0aCkK
LSAgICAgICAgICAgIGlmIG5vdCByZXF1ZXN0LnNlcnZlcl90ZXJtaW5hdGVkOgotICAgICAgICAg
ICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oKQotICAgICAgICBleGNl
cHQgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgIHNlbGYu
Y2hhbm5lbF9ldmVudHNbcmVxdWVzdC5jaGFubmVsX2lkXS5leGNlcHRpb24gPSBlCi0gICAgICAg
IGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgIHNlbGYuY2hhbm5lbF9ldmVudHNb
cmVxdWVzdC5jaGFubmVsX2lkXS5leGNlcHRpb24gPSBlCi0gICAgICAgICAgICByYWlzZQotCi0K
LWRlZiBfY3JlYXRlX21vY2tfcmVxdWVzdChjb25uZWN0aW9uPU5vbmUsIGxvZ2ljYWxfY2hhbm5l
bF9leHRlbnNpb25zPU5vbmUpOgotICAgIGlmIGNvbm5lY3Rpb24gaXMgTm9uZToKLSAgICAgICAg
Y29ubmVjdGlvbiA9IF9Nb2NrTXV4Q29ubmVjdGlvbigpCi0KLSAgICByZXF1ZXN0ID0gbW9jay5N
b2NrUmVxdWVzdCh1cmk9Jy9lY2hvJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBo
ZWFkZXJzX2luPV9URVNUX0hFQURFUlMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29ubmVjdGlvbj1jb25uZWN0aW9uKQotICAgIHJlcXVlc3Qud3Nfc3RyZWFtID0gU3RyZWFtKHJl
cXVlc3QsIG9wdGlvbnM9U3RyZWFtT3B0aW9ucygpKQotICAgIHJlcXVlc3QubXV4X3Byb2Nlc3Nv
ciA9IE11eEV4dGVuc2lvblByb2Nlc3NvcigKLSAgICAgICAgY29tbW9uLkV4dGVuc2lvblBhcmFt
ZXRlcihjb21tb24uTVVYX0VYVEVOU0lPTikpCi0gICAgaWYgbG9naWNhbF9jaGFubmVsX2V4dGVu
c2lvbnMgaXMgbm90IE5vbmU6Ci0gICAgICAgIHJlcXVlc3QubXV4X3Byb2Nlc3Nvci5zZXRfZXh0
ZW5zaW9ucyhsb2dpY2FsX2NoYW5uZWxfZXh0ZW5zaW9ucykKLSAgICByZXF1ZXN0Lm11eF9wcm9j
ZXNzb3Iuc2V0X3F1b3RhKDggKiAxMDI0KQotICAgIHJldHVybiByZXF1ZXN0Ci0KLQotZGVmIF9j
cmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZShjaGFubmVsX2lkLCBlbmNvZGluZywgZW5j
b2RlZF9oYW5kc2hha2UpOgotICAgICMgQWxsb3cgaW52YWxpZCBlbmNvZGluZyBmb3IgdGVzdGlu
Zy4KLSAgICBmaXJzdF9ieXRlID0gKChtdXguX01VWF9PUENPREVfQUREX0NIQU5ORUxfUkVRVUVT
VCA8PCA1KSB8IGVuY29kaW5nKQotICAgIHBheWxvYWQgPSAoY2hyKGZpcnN0X2J5dGUpICsKLSAg
ICAgICAgICAgICAgIG11eC5fZW5jb2RlX2NoYW5uZWxfaWQoY2hhbm5lbF9pZCkgKwotICAgICAg
ICAgICAgICAgbXV4Ll9lbmNvZGVfbnVtYmVyKGxlbihlbmNvZGVkX2hhbmRzaGFrZSkpICsKLSAg
ICAgICAgICAgICAgIGVuY29kZWRfaGFuZHNoYWtlKQotICAgIHJldHVybiBjcmVhdGVfYmluYXJ5
X2ZyYW1lKAotICAgICAgICAobXV4Ll9lbmNvZGVfY2hhbm5lbF9pZChtdXguX0NPTlRST0xfQ0hB
Tk5FTF9JRCkgKyBwYXlsb2FkKSwgbWFzaz1UcnVlKQotCi0KLWRlZiBfY3JlYXRlX2Ryb3BfY2hh
bm5lbF9mcmFtZShjaGFubmVsX2lkLCBjb2RlPU5vbmUsIG1lc3NhZ2U9JycpOgotICAgIHBheWxv
YWQgPSBtdXguX2NyZWF0ZV9kcm9wX2NoYW5uZWwoY2hhbm5lbF9pZCwgY29kZSwgbWVzc2FnZSkK
LSAgICByZXR1cm4gY3JlYXRlX2JpbmFyeV9mcmFtZSgKLSAgICAgICAgKG11eC5fZW5jb2RlX2No
YW5uZWxfaWQobXV4Ll9DT05UUk9MX0NIQU5ORUxfSUQpICsgcGF5bG9hZCksIG1hc2s9VHJ1ZSkK
LQotCi1kZWYgX2NyZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZCwgcmVwbGVuaXNo
ZWRfcXVvdGEpOgotICAgIHBheWxvYWQgPSBtdXguX2NyZWF0ZV9mbG93X2NvbnRyb2woY2hhbm5l
bF9pZCwgcmVwbGVuaXNoZWRfcXVvdGEpCi0gICAgcmV0dXJuIGNyZWF0ZV9iaW5hcnlfZnJhbWUo
Ci0gICAgICAgIChtdXguX2VuY29kZV9jaGFubmVsX2lkKG11eC5fQ09OVFJPTF9DSEFOTkVMX0lE
KSArIHBheWxvYWQpLCBtYXNrPVRydWUpCi0KLQotZGVmIF9jcmVhdGVfbG9naWNhbF9mcmFtZShj
aGFubmVsX2lkLCBtZXNzYWdlLCBvcGNvZGU9Y29tbW9uLk9QQ09ERV9CSU5BUlksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIGZpbj1UcnVlLCByc3YxPUZhbHNlLCByc3YyPUZhbHNlLCByc3Yz
PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtYXNrPVRydWUpOgotICAgIGJpdHMg
PSBjaHIoKGZpbiA8PCA3KSB8IChyc3YxIDw8IDYpIHwgKHJzdjIgPDwgNSkgfCAocnN2MyA8PCA0
KSB8IG9wY29kZSkKLSAgICBwYXlsb2FkID0gbXV4Ll9lbmNvZGVfY2hhbm5lbF9pZChjaGFubmVs
X2lkKSArIGJpdHMgKyBtZXNzYWdlCi0gICAgcmV0dXJuIGNyZWF0ZV9iaW5hcnlfZnJhbWUocGF5
bG9hZCwgbWFzaz1UcnVlKQotCi0KLWRlZiBfY3JlYXRlX3JlcXVlc3RfaGVhZGVyKHBhdGg9Jy9l
Y2hvJywgZXh0ZW5zaW9ucz1Ob25lKToKLSAgICBoZWFkZXJzID0gKAotICAgICAgICAnR0VUICVz
IEhUVFAvMS4xXHJcbicKLSAgICAgICAgJ0hvc3Q6IHNlcnZlci5leGFtcGxlLmNvbVxyXG4nCi0g
ICAgICAgICdDb25uZWN0aW9uOiBVcGdyYWRlXHJcbicKLSAgICAgICAgJ09yaWdpbjogaHR0cDov
L2V4YW1wbGUuY29tXHJcbicpICUgcGF0aAotICAgIGlmIGV4dGVuc2lvbnM6Ci0gICAgICAgIGhl
YWRlcnMgKz0gJyVzOiAlcycgJSAoCi0gICAgICAgICAgICBjb21tb24uU0VDX1dFQlNPQ0tFVF9F
WFRFTlNJT05TX0hFQURFUiwgZXh0ZW5zaW9ucykKLSAgICByZXR1cm4gaGVhZGVycwotCi0KLWNs
YXNzIE11eFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIkEgdW5pdHRlc3QgZm9yIG11
eCBtb2R1bGUuIiIiCi0KLSAgICBkZWYgdGVzdF9jaGFubmVsX2lkX2RlY29kZShzZWxmKToKLSAg
ICAgICAgZGF0YSA9ICdceDAwXHgwMVx4YmZceGZmXHhkZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
ZicKLSAgICAgICAgcGFyc2VyID0gbXV4Ll9NdXhGcmFtZVBheWxvYWRQYXJzZXIoZGF0YSkKLSAg
ICAgICAgY2hhbm5lbF9pZCA9IHBhcnNlci5yZWFkX2NoYW5uZWxfaWQoKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKDAsIGNoYW5uZWxfaWQpCi0gICAgICAgIGNoYW5uZWxfaWQgPSBwYXJzZXIu
cmVhZF9jaGFubmVsX2lkKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBjaGFubmVsX2lk
KQotICAgICAgICBjaGFubmVsX2lkID0gcGFyc2VyLnJlYWRfY2hhbm5lbF9pZCgpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoMiAqKiAxNCAtIDEsIGNoYW5uZWxfaWQpCi0gICAgICAgIGNoYW5u
ZWxfaWQgPSBwYXJzZXIucmVhZF9jaGFubmVsX2lkKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgyICoqIDIxIC0gMSwgY2hhbm5lbF9pZCkKLSAgICAgICAgY2hhbm5lbF9pZCA9IHBhcnNlci5y
ZWFkX2NoYW5uZWxfaWQoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIgKiogMjkgLSAxLCBj
aGFubmVsX2lkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhKSwgcGFyc2VyLl9y
ZWFkX3Bvc2l0aW9uKQotCi0gICAgZGVmIHRlc3RfY2hhbm5lbF9pZF9lbmNvZGUoc2VsZik6Ci0g
ICAgICAgIGVuY29kZWQgPSBtdXguX2VuY29kZV9jaGFubmVsX2lkKDApCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJ1x4MDAnLCBlbmNvZGVkKQotICAgICAgICBlbmNvZGVkID0gbXV4Ll9lbmNv
ZGVfY2hhbm5lbF9pZCgyICoqIDE0IC0gMSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHhi
Zlx4ZmYnLCBlbmNvZGVkKQotICAgICAgICBlbmNvZGVkID0gbXV4Ll9lbmNvZGVfY2hhbm5lbF9p
ZCgyICoqIDE0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceGMwQFx4MDAnLCBlbmNvZGVk
KQotICAgICAgICBlbmNvZGVkID0gbXV4Ll9lbmNvZGVfY2hhbm5lbF9pZCgyICoqIDIxIC0gMSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHhkZlx4ZmZceGZmJywgZW5jb2RlZCkKLSAgICAg
ICAgZW5jb2RlZCA9IG11eC5fZW5jb2RlX2NoYW5uZWxfaWQoMiAqKiAyMSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgnXHhlMCBceDAwXHgwMCcsIGVuY29kZWQpCi0gICAgICAgIGVuY29kZWQg
PSBtdXguX2VuY29kZV9jaGFubmVsX2lkKDIgKiogMjkgLSAxKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdceGZmXHhmZlx4ZmZceGZmJywgZW5jb2RlZCkKLSAgICAgICAgIyBjaGFubmVsX2lk
IGlzIHRvbyBsYXJnZQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICBtdXguX2VuY29kZV9jaGFubmVsX2lkLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAyICoqIDI5KQotCi0gICAgZGVmIHRlc3RfcmVhZF9tdWx0aXBsZV9j
b250cm9sX2Jsb2NrcyhzZWxmKToKLSAgICAgICAgIyBVc2UgQWRkQ2hhbm5lbFJlcXVlc3QgYmVj
YXVzZSBpdCBjYW4gY29udGFpbiBhcmJpdHJhcnkgbGVuZ3RoIG9mIGRhdGEKLSAgICAgICAgZGF0
YSA9ICgnXHgwMFx4MDFceDAxYScKLSAgICAgICAgICAgICAgICAnXHgwMFx4MDJceDdkJXMnCi0g
ICAgICAgICAgICAgICAgJ1x4MDBceDAzXHg3ZVx4ZmZceGZmJXMnCi0gICAgICAgICAgICAgICAg
J1x4MDBceDA0XHg3Zlx4MDBceDAwXHgwMFx4MDBceDAwXHgwMVx4MDBceDAwJXMnKSAlICgKLSAg
ICAgICAgICAgICdhJyAqIDB4N2QsICdiJyAqIDB4ZmZmZiwgJ2MnICogMHgxMDAwMCkKLSAgICAg
ICAgcGFyc2VyID0gbXV4Ll9NdXhGcmFtZVBheWxvYWRQYXJzZXIoZGF0YSkKLSAgICAgICAgYmxv
Y2tzID0gbGlzdChwYXJzZXIucmVhZF9jb250cm9sX2Jsb2NrcygpKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKDQsIGxlbihibG9ja3MpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXV4
Ll9NVVhfT1BDT0RFX0FERF9DSEFOTkVMX1JFUVVFU1QsIGJsb2Nrc1swXS5vcGNvZGUpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgYmxvY2tzWzBdLmNoYW5uZWxfaWQpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGJsb2Nrc1swXS5lbmNvZGVkX2hhbmRzaGFrZSkpCi0KLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdXguX01VWF9PUENPREVfQUREX0NIQU5ORUxfUkVRVUVT
VCwgYmxvY2tzWzFdLm9wY29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBibG9ja3Nb
MV0uY2hhbm5lbF9pZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgweDdkLCBsZW4oYmxvY2tz
WzFdLmVuY29kZWRfaGFuZHNoYWtlKSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG11eC5f
TVVYX09QQ09ERV9BRERfQ0hBTk5FTF9SRVFVRVNULCBibG9ja3NbMl0ub3Bjb2RlKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKDMsIGJsb2Nrc1syXS5jaGFubmVsX2lkKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKDB4ZmZmZiwgbGVuKGJsb2Nrc1syXS5lbmNvZGVkX2hhbmRzaGFrZSkpCi0K
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdXguX01VWF9PUENPREVfQUREX0NIQU5ORUxfUkVR
VUVTVCwgYmxvY2tzWzNdLm9wY29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg0LCBibG9j
a3NbM10uY2hhbm5lbF9pZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgweDEwMDAwLCBsZW4o
YmxvY2tzWzNdLmVuY29kZWRfaGFuZHNoYWtlKSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGxlbihkYXRhKSwgcGFyc2VyLl9yZWFkX3Bvc2l0aW9uKQotCi0gICAgZGVmIHRlc3RfcmVhZF9h
ZGRfY2hhbm5lbF9yZXF1ZXN0KHNlbGYpOgotICAgICAgICBkYXRhID0gJ1x4MDBceDAxXHgwMWEn
Ci0gICAgICAgIHBhcnNlciA9IG11eC5fTXV4RnJhbWVQYXlsb2FkUGFyc2VyKGRhdGEpCi0gICAg
ICAgIGJsb2NrcyA9IGxpc3QocGFyc2VyLnJlYWRfY29udHJvbF9ibG9ja3MoKSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChtdXguX01VWF9PUENPREVfQUREX0NIQU5ORUxfUkVRVUVTVCwgYmxv
Y2tzWzBdLm9wY29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBibG9ja3NbMF0uY2hh
bm5lbF9pZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oYmxvY2tzWzBdLmVuY29k
ZWRfaGFuZHNoYWtlKSkKLQotICAgIGRlZiB0ZXN0X3JlYWRfZHJvcF9jaGFubmVsKHNlbGYpOgot
ICAgICAgICBkYXRhID0gJ1x4NjBceDAxXHgwMCcKLSAgICAgICAgcGFyc2VyID0gbXV4Ll9NdXhG
cmFtZVBheWxvYWRQYXJzZXIoZGF0YSkKLSAgICAgICAgYmxvY2tzID0gbGlzdChwYXJzZXIucmVh
ZF9jb250cm9sX2Jsb2NrcygpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihibG9j
a3MpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGJsb2Nrc1swXS5jaGFubmVsX2lkKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG11eC5fTVVYX09QQ09ERV9EUk9QX0NIQU5ORUwsIGJs
b2Nrc1swXS5vcGNvZGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgYmxvY2tzWzBd
LmRyb3BfY29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBsZW4oYmxvY2tzWzBdLmRy
b3BfbWVzc2FnZSkpCi0KLSAgICAgICAgZGF0YSA9ICdceDYwXHgwMlx4MDlceDAzXHhlOFN1Y2Nl
c3MnCi0gICAgICAgIHBhcnNlciA9IG11eC5fTXV4RnJhbWVQYXlsb2FkUGFyc2VyKGRhdGEpCi0g
ICAgICAgIGJsb2NrcyA9IGxpc3QocGFyc2VyLnJlYWRfY29udHJvbF9ibG9ja3MoKSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oYmxvY2tzKSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgyLCBibG9ja3NbMF0uY2hhbm5lbF9pZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCht
dXguX01VWF9PUENPREVfRFJPUF9DSEFOTkVMLCBibG9ja3NbMF0ub3Bjb2RlKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKDEwMDAsIGJsb2Nrc1swXS5kcm9wX2NvZGUpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJ1N1Y2Nlc3MnLCBibG9ja3NbMF0uZHJvcF9tZXNzYWdlKQotCi0gICAgICAg
ICMgUmVhc29uIGlzIHRvbyBzaG9ydC4KLSAgICAgICAgZGF0YSA9ICdceDYwXHgwMVx4MDFceDAw
JwotICAgICAgICBwYXJzZXIgPSBtdXguX011eEZyYW1lUGF5bG9hZFBhcnNlcihkYXRhKQotICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcyhtdXguUGh5c2ljYWxDb25uZWN0aW9uRXJyb3IsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYTogbGlzdChwYXJzZXIucmVhZF9jb250cm9sX2Js
b2NrcygpKSkKLQotICAgIGRlZiB0ZXN0X3JlYWRfZmxvd19jb250cm9sKHNlbGYpOgotICAgICAg
ICBkYXRhID0gJ1x4NDBceDAxXHgwMicKLSAgICAgICAgcGFyc2VyID0gbXV4Ll9NdXhGcmFtZVBh
eWxvYWRQYXJzZXIoZGF0YSkKLSAgICAgICAgYmxvY2tzID0gbGlzdChwYXJzZXIucmVhZF9jb250
cm9sX2Jsb2NrcygpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihibG9ja3MpKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGJsb2Nrc1swXS5jaGFubmVsX2lkKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKG11eC5fTVVYX09QQ09ERV9GTE9XX0NPTlRST0wsIGJsb2Nrc1sw
XS5vcGNvZGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgYmxvY2tzWzBdLnNlbmRfcXVv
dGEpCi0KLSAgICBkZWYgdGVzdF9yZWFkX25ld19jaGFubmVsX3Nsb3Qoc2VsZik6Ci0gICAgICAg
IGRhdGEgPSAnXHg4MFx4MDFceDAyXHgwMlx4MDMnCi0gICAgICAgIHBhcnNlciA9IG11eC5fTXV4
RnJhbWVQYXlsb2FkUGFyc2VyKGRhdGEpCi0gICAgICAgICMgVE9ETyhiYXNoaSk6IEltcGxlbWVu
dAotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhtdXguUGh5c2ljYWxDb25uZWN0aW9uRXJyb3Is
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYTogbGlzdChwYXJzZXIucmVhZF9jb250
cm9sX2Jsb2NrcygpKSkKLQotICAgIGRlZiB0ZXN0X3JlYWRfaW52YWxpZF9udW1iZXJfZmllbGRf
aW5fY29udHJvbF9ibG9jayhzZWxmKToKLSAgICAgICAgIyBObyBudW1iZXIgZmllbGQuCi0gICAg
ICAgIGRhdGEgPSAnJwotICAgICAgICBwYXJzZXIgPSBtdXguX011eEZyYW1lUGF5bG9hZFBhcnNl
cihkYXRhKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwYXJzZXIuX3Jl
YWRfbnVtYmVyKQotCi0gICAgICAgICMgVGhlIGxhc3QgdHdvIGJ5dGVzIGFyZSBtaXNzaW5nLgot
ICAgICAgICBkYXRhID0gJ1x4N2UnCi0gICAgICAgIHBhcnNlciA9IG11eC5fTXV4RnJhbWVQYXls
b2FkUGFyc2VyKGRhdGEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHBh
cnNlci5fcmVhZF9udW1iZXIpCi0KLSAgICAgICAgIyBNaXNzaW5nIHRoZSBsYXN0IG9uZSBieXRl
LgotICAgICAgICBkYXRhID0gJ1x4N2ZceDAwXHgwMFx4MDBceDAwXHgwMFx4MDFceDAwJwotICAg
ICAgICBwYXJzZXIgPSBtdXguX011eEZyYW1lUGF5bG9hZFBhcnNlcihkYXRhKQotICAgICAgICBz
ZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwYXJzZXIuX3JlYWRfbnVtYmVyKQotCi0gICAg
ICAgICMgVGhlIGxlbmd0aCBvZiBudW1iZXIgZmllbGQgaXMgdG9vIGxhcmdlLgotICAgICAgICBk
YXRhID0gJ1x4N2ZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZicKLSAgICAgICAgcGFy
c2VyID0gbXV4Ll9NdXhGcmFtZVBheWxvYWRQYXJzZXIoZGF0YSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRSYWlzZXMoVmFsdWVFcnJvciwgcGFyc2VyLl9yZWFkX251bWJlcikKLQotICAgICAgICAjIFRo
ZSBtc2Igb2YgdGhlIGZpcnN0IGJ5dGUgaXMgc2V0LgotICAgICAgICBkYXRhID0gJ1x4ODAnCi0g
ICAgICAgIHBhcnNlciA9IG11eC5fTXV4RnJhbWVQYXlsb2FkUGFyc2VyKGRhdGEpCi0gICAgICAg
IHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHBhcnNlci5fcmVhZF9udW1iZXIpCi0KLSAg
ICAgICAgIyBVc2luZyAzIGJ5dGVzIGVuY29kaW5nIGZvciAxMjUuCi0gICAgICAgIGRhdGEgPSAn
XHg3ZVx4MDBceDdkJwotICAgICAgICBwYXJzZXIgPSBtdXguX011eEZyYW1lUGF5bG9hZFBhcnNl
cihkYXRhKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwYXJzZXIuX3Jl
YWRfbnVtYmVyKQotCi0gICAgICAgICMgVXNpbmcgOSBieXRlcyBlbmNvZGluZyBmb3IgMHhmZmZm
Ci0gICAgICAgIGRhdGEgPSAnXHg3Zlx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4ZmZceGZmJwot
ICAgICAgICBwYXJzZXIgPSBtdXguX011eEZyYW1lUGF5bG9hZFBhcnNlcihkYXRhKQotICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwYXJzZXIuX3JlYWRfbnVtYmVyKQotCi0g
ICAgZGVmIHRlc3RfcmVhZF9pbnZhbGlkX3NpemVfYW5kX2NvbnRlbnRzKHNlbGYpOgotICAgICAg
ICAjIE9ubHkgY29udGFpbiBudW1iZXIgZmllbGQuCi0gICAgICAgIGRhdGEgPSAnXHgwMScKLSAg
ICAgICAgcGFyc2VyID0gbXV4Ll9NdXhGcmFtZVBheWxvYWRQYXJzZXIoZGF0YSkKLSAgICAgICAg
c2VsZi5hc3NlcnRSYWlzZXMobXV4LlBoeXNpY2FsQ29ubmVjdGlvbkVycm9yLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICBwYXJzZXIuX3JlYWRfc2l6ZV9hbmRfY29udGVudHMpCi0KLSAgICBk
ZWYgdGVzdF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVzcG9uc2Uoc2VsZik6Ci0gICAgICAgIGRhdGEg
PSBtdXguX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXNwb25zZShjaGFubmVsX2lkPTEsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFr
ZT0nRm9vQmFyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVuY29kaW5nPTAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZWplY3RlZD1GYWxzZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHgyMFx4
MDFceDA2Rm9vQmFyJywgZGF0YSkKLQotICAgICAgICBkYXRhID0gbXV4Ll9jcmVhdGVfYWRkX2No
YW5uZWxfcmVzcG9uc2UoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2U9J0hlbGxvJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nPTEsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3RlZD1UcnVl
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDMxXHgwMlx4MDVIZWxsbycsIGRhdGEpCi0K
LSAgICBkZWYgdGVzdF9jcmVhdGVfZHJvcF9jaGFubmVsKHNlbGYpOgotICAgICAgICBkYXRhID0g
bXV4Ll9jcmVhdGVfZHJvcF9jaGFubmVsKGNoYW5uZWxfaWQ9MSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgnXHg2MFx4MDFceDAwJywgZGF0YSkKLQotICAgICAgICBkYXRhID0gbXV4Ll9jcmVh
dGVfZHJvcF9jaGFubmVsKGNoYW5uZWxfaWQ9MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb2RlPTIwMDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWVzc2FnZT0nZXJyb3InKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDYw
XHgwMVx4MDdceDA3XHhkMGVycm9yJywgZGF0YSkKLQotICAgICAgICAjIHJlYXNvbiBtdXN0IGJl
IGVtcHR5IGlmIGNvZGUgaXMgTm9uZQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVy
cm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtdXguX2NyZWF0ZV9kcm9wX2NoYW5uZWws
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIDEsIE5vbmUsICdGb29CYXInKQotCi0gICAgZGVm
IHRlc3RfcGFyc2VfcmVxdWVzdF90ZXh0KHNlbGYpOgotICAgICAgICByZXF1ZXN0X3RleHQgPSBf
Y3JlYXRlX3JlcXVlc3RfaGVhZGVyKCkKLSAgICAgICAgY29tbWFuZCwgcGF0aCwgdmVyc2lvbiwg
aGVhZGVycyA9IG11eC5fcGFyc2VfcmVxdWVzdF90ZXh0KHJlcXVlc3RfdGV4dCkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgnR0VUJywgY29tbWFuZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgnL2VjaG8nLCBwYXRoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdIVFRQLzEuMScsIHZl
cnNpb24pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMywgbGVuKGhlYWRlcnMpKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdzZXJ2ZXIuZXhhbXBsZS5jb20nLCBoZWFkZXJzWydIb3N0J10p
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2h0dHA6Ly9leGFtcGxlLmNvbScsIGhlYWRlcnNb
J09yaWdpbiddKQotCi0KLWNsYXNzIE11eEhhbmRsZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
LQotICAgIGRlZiB0ZXN0X2FkZF9jaGFubmVsKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2Ny
ZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tEaXNwYXRj
aGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVzdCwgZGlz
cGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBtdXhfaGFuZGxl
ci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxfU0xPVFMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5fSU5JVElBTF9RVU9U
QV9GT1JfQ0xJRU5UKQotCi0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtlID0gX2NyZWF0ZV9yZXF1
ZXN0X2hlYWRlcihwYXRoPScvZWNobycpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBf
Y3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lk
PTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNvZGVkX2hh
bmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5l
bF9yZXF1ZXN0KQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250cm9s
X2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9NikKLSAgICAgICAgcmVxdWVzdC5jb25u
ZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAgICAgZW5jb2RlZF9oYW5kc2hh
a2UgPSBfY3JlYXRlX3JlcXVlc3RfaGVhZGVyKHBhdGg9Jy9lY2hvJykKLSAgICAgICAgYWRkX2No
YW5uZWxfcmVxdWVzdCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAgICAg
ICAgICAgIGNoYW5uZWxfaWQ9MywgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVuY29kZWRfaGFu
ZHNoYWtlPWVuY29kZWRfaGFuZHNoYWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0
X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgZmxvd19jb250cm9sID0gX2Ny
ZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0zLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90YT02KQotICAg
ICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJvbCkKLQotICAgICAg
ICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dp
Y2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwgbWVzc2FnZT0nSGVsbG8nKSkKLSAgICAgICAgcmVxdWVz
dC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFt
ZShjaGFubmVsX2lkPTMsIG1lc3NhZ2U9J1dvcmxkJykpCi0gICAgICAgIHJlcXVlc3QuY29ubmVj
dGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5l
bF9pZD0xLCBtZXNzYWdlPSdHb29kYnllJykpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5w
dXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0y
LCBtZXNzYWdlPSdHb29kYnllJykpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0
ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0zLCBtZXNz
YWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVyLndh
aXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW10s
IGRpc3BhdGNoZXIuY2hhbm5lbF9ldmVudHNbMV0ubWVzc2FnZXMpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoWydIZWxsbyddLCBkaXNwYXRjaGVyLmNoYW5uZWxfZXZlbnRzWzJdLm1lc3NhZ2Vz
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnV29ybGQnXSwgZGlzcGF0Y2hlci5jaGFubmVs
X2V2ZW50c1szXS5tZXNzYWdlcykKLSAgICAgICAgIyBDaGFubmVsIDIKLSAgICAgICAgbWVzc2Fn
ZXMgPSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fbWVzc2FnZXMoMikKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4obWVzc2FnZXMpKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCdIZWxsbycsIG1lc3NhZ2VzWzBdKQotICAgICAgICAjIENoYW5uZWwgMwotICAgICAgICBt
ZXNzYWdlcyA9IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9tZXNzYWdlcygzKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihtZXNzYWdlcykpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJ1dvcmxkJywgbWVzc2FnZXNbMF0pCi0gICAgICAgIGNvbnRyb2xfYmxvY2tzID0g
cmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX2NvbnRyb2xfYmxvY2tzKCkKLSAgICAgICAg
IyBUaGVyZSBzaG91bGQgYmUgOCBjb250cm9sIGJsb2NrczoKLSAgICAgICAgIyAgIC0gMSBOZXdD
aGFubmVsU2xvdAotICAgICAgICAjICAgLSAyIEFkZENoYW5uZWxSZXNwb25zZXMgZm9yIGNoYW5u
ZWwgaWQgMiBhbmQgMwotICAgICAgICAjICAgLSA2IEZsb3dDb250cm9scyBmb3IgY2hhbm5lbCBp
ZCAxIChpbml0aWFsaXplKSwgJ0hlbGxvJywgJ1dvcmxkJywKLSAgICAgICAgIyAgICAgYW5kIDMg
J0dvb2RieWUncwotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDksIGxlbihjb250cm9sX2Jsb2Nr
cykpCi0KLSAgICBkZWYgdGVzdF9waHlzaWNhbF9jb25uZWN0aW9uX3dyaXRlX2ZhaWx1cmUoc2Vs
Zik6Ci0gICAgICAgICMgVXNlIF9GYWlsT25Xcml0ZUNvbm5lY3Rpb24uCi0gICAgICAgIHJlcXVl
c3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdChjb25uZWN0aW9uPV9GYWlsT25Xcml0ZUNvbm5lY3Rp
b24oKSkKLQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAg
ICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAg
ICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotCi0gICAgICAgICMgTGV0IHRoZSB3b3JrZXIgZWNo
byBiYWNrICdIZWxsbycuIEl0IGNhdXNlcyBfRmFpbE9uV3JpdGVDb25uZWN0aW9uCi0gICAgICAg
ICMgcmFpc2luZyBhbiBleGNlcHRpb24uCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRf
Ynl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0xLCBt
ZXNzYWdlPSdIZWxsbycpKQotCi0gICAgICAgICMgTGV0IHRoZSB3b3JrZXIgZXhpdC4gVGhpcyB3
aWxsIGJlIHVubmVjZXNzYXJ5IHdoZW4KLSAgICAgICAgIyBfTG9naWNhbENvbm5lY3Rpb24ud3Jp
dGUoKSBpcyBjaGFuZ2VkIHRvIHRocm93IGFuIGV4Y2VwdGlvbiBpZgotICAgICAgICAjIHdva2Ug
dXAgYnkgb25fd3JpdGVyX2RvbmUuCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0
ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0xLCBtZXNz
YWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgIyBBbGwgdGhyZWFkcyBzaG91bGQgYmUgZG9uZS4K
LSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1l
b3V0PTIpKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9ibG9ja2VkKHNlbGYpOgotICAgICAgICByZXF1
ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1v
Y2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVx
dWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotCi0gICAgICAg
IG11eF9oYW5kbGVyLmFkZF9jaGFubmVsX3Nsb3RzKG11eC5fSU5JVElBTF9OVU1CRVJfT0ZfQ0hB
Tk5FTF9TTE9UUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV4Ll9J
TklUSUFMX1FVT1RBX0ZPUl9DTElFTlQpCi0KLSAgICAgICAgZW5jb2RlZF9oYW5kc2hha2UgPSBf
Y3JlYXRlX3JlcXVlc3RfaGVhZGVyKHBhdGg9Jy9lY2hvJykKLSAgICAgICAgYWRkX2NoYW5uZWxf
cmVxdWVzdCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAgICAgICAgICAg
IGNoYW5uZWxfaWQ9MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVuY29kZWRfaGFuZHNoYWtl
PWVuY29kZWRfaGFuZHNoYWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVz
KGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgIyBPbiByZWNlaXZpbmcgdGhpcyAnSGVs
bG8nLCB0aGUgc2VydmVyIHRyaWVzIHRvIGVjaG8gYmFjayAnSGVsbG8nLAotICAgICAgICAjIGJ1
dCBpdCB3aWxsIGJlIGJsb2NrZWQgc2luY2UgdGhlcmUncyBubyBzZW5kIHF1b3RhIGF2YWlsYWJs
ZSBmb3IgdGhlCi0gICAgICAgICMgY2hhbm5lbCAyLgotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rp
b24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxf
aWQ9MiwgbWVzc2FnZT0nSGVsbG8nKSkKLQotICAgICAgICAjIFdhaXQgdW50aWwgdGhlIHdvcmtl
ciBpcyBibG9ja2VkIGR1ZSB0byBzZW5kIHF1b3RhIHNob3J0YWdlLgotICAgICAgICB0aW1lLnNs
ZWVwKDEpCi0KLSAgICAgICAgIyBDbG9zZSB0aGUgY2hhbm5lbCAyLiBUaGUgd29ya2VyIHNob3Vs
ZCBiZSBub3RpZmllZCBvZiB0aGUgZW5kIG9mCi0gICAgICAgICMgd3JpdGVyIHRocmVhZCBhbmQg
c3RvcCB3YWl0aW5nIGZvciBzZW5kIHF1b3RhIHRvIGJlIHJlcGxlbmlzaGVkLgotICAgICAgICBk
cm9wX2NoYW5uZWwgPSBfY3JlYXRlX2Ryb3BfY2hhbm5lbF9mcmFtZShjaGFubmVsX2lkPTIpCi0K
LSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhkcm9wX2NoYW5uZWwpCi0KLSAg
ICAgICAgIyBNYWtlIHN1cmUgdGhlIGNoYW5uZWwgMSBpcyBhbHNvIGNsb3NlZC4KLSAgICAgICAg
ZHJvcF9jaGFubmVsID0gX2NyZWF0ZV9kcm9wX2NoYW5uZWxfZnJhbWUoY2hhbm5lbF9pZD0xKQot
ICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGRyb3BfY2hhbm5lbCkKLQotICAg
ICAgICAjIEFsbCB0aHJlYWRzIHNob3VsZCBiZSBkb25lLgotICAgICAgICBzZWxmLmFzc2VydFRy
dWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRpbWVvdXQ9MikpCi0KLSAgICBkZWYgdGVz
dF9hZGRfY2hhbm5lbF9kZWx0YV9lbmNvZGluZyhzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9j
cmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9NdXhNb2NrRGlzcGF0
Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJlcXVlc3QsIGRp
c3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAgICAgICAgbXV4X2hhbmRs
ZXIuYWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05VTUJFUl9PRl9DSEFOTkVMX1NMT1RT
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXguX0lOSVRJQUxfUVVP
VEFfRk9SX0NMSUVOVCkKLQotICAgICAgICBkZWx0YSA9ICdHRVQgL2VjaG8gSFRUUC8xLjFcclxu
XHJcbicKLSAgICAgICAgYWRkX2NoYW5uZWxfcmVxdWVzdCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxf
cmVxdWVzdF9mcmFtZSgKLSAgICAgICAgICAgIGNoYW5uZWxfaWQ9MiwgZW5jb2Rpbmc9MSwgZW5j
b2RlZF9oYW5kc2hha2U9ZGVsdGEpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0
ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkKLQotICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3JlYXRl
X2Zsb3dfY29udHJvbF9mcmFtZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTYpCi0gICAgICAg
IHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAgIHJl
cXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxf
ZnJhbWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPSdIZWxsbycpKQotICAgICAgICByZXF1ZXN0LmNv
bm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNo
YW5uZWxfaWQ9MSwgbWVzc2FnZT0nR29vZGJ5ZScpKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rp
b24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxf
aWQ9MiwgbWVzc2FnZT0nR29vZGJ5ZScpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhf
aGFuZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKFsnSGVsbG8nXSwgZGlzcGF0Y2hlci5jaGFubmVsX2V2ZW50c1syXS5tZXNzYWdlcykK
LSAgICAgICAgbWVzc2FnZXMgPSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fbWVzc2Fn
ZXMoMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4obWVzc2FnZXMpKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdIZWxsbycsIG1lc3NhZ2VzWzBdKQotCi0gICAgZGVmIHRlc3Rf
YWRkX2NoYW5uZWxfZGVsdGFfZW5jb2Rpbmdfb3ZlcnJpZGUoc2VsZik6Ci0gICAgICAgIHJlcXVl
c3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAgIGRpc3BhdGNoZXIgPSBfTXV4TW9j
a0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4SGFuZGxlcihyZXF1
ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0gICAgICAgIG11
eF9oYW5kbGVyLmFkZF9jaGFubmVsX3Nsb3RzKG11eC5fSU5JVElBTF9OVU1CRVJfT0ZfQ0hBTk5F
TF9TTE9UUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV4Ll9JTklU
SUFMX1FVT1RBX0ZPUl9DTElFTlQpCi0KLSAgICAgICAgIyBPdmVycmlkZSBTZWMtV2ViU29ja2V0
LVByb3RvY29sLgotICAgICAgICBkZWx0YSA9ICgnR0VUIC9lY2hvIEhUVFAvMS4xXHJcbicKLSAg
ICAgICAgICAgICAgICAgJ1NlYy1XZWJTb2NrZXQtUHJvdG9jb2w6IHgtZm9vXHJcbicKLSAgICAg
ICAgICAgICAgICAgJ1xyXG4nKQotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0
ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5lbF9pZD0yLCBl
bmNvZGluZz0xLCBlbmNvZGVkX2hhbmRzaGFrZT1kZWx0YSkKLSAgICAgICAgcmVxdWVzdC5jb25u
ZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIGZsb3dfY29u
dHJvbCA9IF9jcmVhdGVfZmxvd19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVv
dGE9NikKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wp
Ci0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9j
cmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIsIG1lc3NhZ2U9J0hlbGxvJykpCi0gICAg
ICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xv
Z2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0xLCBtZXNzYWdlPSdHb29kYnllJykpCi0gICAgICAgIHJl
cXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxf
ZnJhbWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydIZWxsbyddLCBkaXNwYXRjaGVyLmNoYW5uZWxfZXZlbnRz
WzJdLm1lc3NhZ2VzKQotICAgICAgICBtZXNzYWdlcyA9IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRf
d3JpdHRlbl9tZXNzYWdlcygyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihtZXNz
YWdlcykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvJywgbWVzc2FnZXNbMF0pCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3gtZm9vJywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICBkaXNwYXRjaGVyLmNoYW5uZWxfZXZlbnRzWzJdLnJlcXVlc3Qud3NfcHJvdG9jb2wpCi0KLSAg
ICBkZWYgdGVzdF9hZGRfY2hhbm5lbF9kZWx0YV9hZnRlcl9pZGVudGl0eShzZWxmKToKLSAgICAg
ICAgcmVxdWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9
IF9NdXhNb2NrRGlzcGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5k
bGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAg
ICAgICAgbXV4X2hhbmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05VTUJFUl9P
Rl9DSEFOTkVMX1NMT1RTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
dXguX0lOSVRJQUxfUVVPVEFfRk9SX0NMSUVOVCkKLSAgICAgICAgIyBTZWMtV2ViU29ja2V0LVBy
b3RvY29sIGlzIGRpZmZlcmVudCBmcm9tIGNsaWVudCdzIG9wZW5pbmcgaGFuZHNoYWtlCi0gICAg
ICAgICMgb2YgdGhlIHBoeXNpY2FsIGNvbm5lY3Rpb24uCi0gICAgICAgICMgVE9ETyhiYXNoaSk6
IFJlbW92ZSBVcGdyYWRlLCBDb25uZWN0aW9uLCBTZWMtV2ViU29ja2V0LUtleSBhbmQKLSAgICAg
ICAgIyBTZWMtV2ViU29ja2V0LVZlcnNpb24uCi0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtlID0g
KAotICAgICAgICAgICAgJ0dFVCAvZWNobyBIVFRQLzEuMVxyXG4nCi0gICAgICAgICAgICAnSG9z
dDogc2VydmVyLmV4YW1wbGUuY29tXHJcbicKLSAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LVBy
b3RvY29sOiB4LWZvb1xyXG4nCi0gICAgICAgICAgICAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4n
Ci0gICAgICAgICAgICAnT3JpZ2luOiBodHRwOi8vZXhhbXBsZS5jb21cclxuJwotICAgICAgICAg
ICAgJ1xyXG4nKQotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hh
bm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5lbF9pZD0yLCBlbmNvZGluZz0w
LAotICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2U9ZW5jb2RlZF9oYW5kc2hha2UpCi0gICAg
ICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkKLQot
ICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3JlYXRlX2Zsb3dfY29udHJvbF9mcmFtZShjaGFubmVs
X2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlcGxlbmlzaGVkX3F1b3RhPTYpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0
ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAgIGRlbHRhID0gJ0dFVCAvZWNobyBIVFRQLzEuMVxy
XG5cclxuJwotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5l
bF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5lbF9pZD0zLCBlbmNvZGluZz0xLCBl
bmNvZGVkX2hhbmRzaGFrZT1kZWx0YSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9i
eXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVh
dGVfZmxvd19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9NikKLSAgICAg
ICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAgICAg
cmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNh
bF9mcmFtZShjaGFubmVsX2lkPTIsIG1lc3NhZ2U9J0hlbGxvJykpCi0gICAgICAgIHJlcXVlc3Qu
Y29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUo
Y2hhbm5lbF9pZD0zLCBtZXNzYWdlPSdXb3JsZCcpKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rp
b24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxf
aWQ9MSwgbWVzc2FnZT0nR29vZGJ5ZScpKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0
X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9Miwg
bWVzc2FnZT0nR29vZGJ5ZScpKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVz
KAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MywgbWVzc2Fn
ZT0nR29vZGJ5ZScpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0
X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtdLCBk
aXNwYXRjaGVyLmNoYW5uZWxfZXZlbnRzWzFdLm1lc3NhZ2VzKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKFsnSGVsbG8nXSwgZGlzcGF0Y2hlci5jaGFubmVsX2V2ZW50c1syXS5tZXNzYWdlcykK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ1dvcmxkJ10sIGRpc3BhdGNoZXIuY2hhbm5lbF9l
dmVudHNbM10ubWVzc2FnZXMpCi0gICAgICAgICMgQ2hhbm5lbCAyCi0gICAgICAgIG1lc3NhZ2Vz
ID0gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX21lc3NhZ2VzKDIpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoMSwgbGVuKG1lc3NhZ2VzKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgnSGVsbG8nLCBtZXNzYWdlc1swXSkKLSAgICAgICAgIyBDaGFubmVsIDMKLSAgICAgICAgbWVz
c2FnZXMgPSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fbWVzc2FnZXMoMykKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4obWVzc2FnZXMpKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdXb3JsZCcsIG1lc3NhZ2VzWzBdKQotICAgICAgICAjIEhhbmRzaGFrZSBiYXNlIHNo
b3VsZCBiZSB1cGRhdGVkLgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAg
J3gtZm9vJywKLSAgICAgICAgICAgIG11eF9oYW5kbGVyLl9oYW5kc2hha2VfYmFzZS5faGVhZGVy
c1snU2VjLVdlYlNvY2tldC1Qcm90b2NvbCddKQotCi0gICAgZGVmIHRlc3RfYWRkX2NoYW5uZWxf
ZGVsdGFfcmVtb3ZlX2hlYWRlcihzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfbW9j
a19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9NdXhNb2NrRGlzcGF0Y2hlcigpCi0g
ICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIp
Ci0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAgICAgICAgbXV4X2hhbmRsZXIuYWRkX2No
YW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05VTUJFUl9PRl9DSEFOTkVMX1NMT1RTLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXguX0lOSVRJQUxfUVVPVEFfRk9SX0NM
SUVOVCkKLSAgICAgICAgIyBPdmVycmlkZSBoYW5kc2hha2UgZGVsdGEgYmFzZS4KLSAgICAgICAg
ZW5jb2RlZF9oYW5kc2hha2UgPSAoCi0gICAgICAgICAgICAnR0VUIC9lY2hvIEhUVFAvMS4xXHJc
bicKLSAgICAgICAgICAgICdIb3N0OiBzZXJ2ZXIuZXhhbXBsZS5jb21cclxuJwotICAgICAgICAg
ICAgJ1NlYy1XZWJTb2NrZXQtUHJvdG9jb2w6IHgtZm9vXHJcbicKLSAgICAgICAgICAgICdDb25u
ZWN0aW9uOiBVcGdyYWRlXHJcbicKLSAgICAgICAgICAgICdPcmlnaW46IGh0dHA6Ly9leGFtcGxl
LmNvbVxyXG4nCi0gICAgICAgICAgICAnXHJcbicpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVl
c3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFu
bmVsX2lkPTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNv
ZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRf
Y2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19j
b250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9NikKLSAgICAgICAgcmVxdWVz
dC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAgICAgIyBSZW1vdmUg
U2VjLVdlYlNvY2tldC1Qcm90b2NvbCBoZWFkZXIuCi0gICAgICAgIGRlbHRhID0gKCdHRVQgL2Vj
aG8gSFRUUC8xLjFcclxuJwotICAgICAgICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1Qcm90b2Nv
bDonCi0gICAgICAgICAgICAgICAgICdcclxuJykKLSAgICAgICAgYWRkX2NoYW5uZWxfcmVxdWVz
dCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAgICAgICAgICAgIGNoYW5u
ZWxfaWQ9MywgZW5jb2Rpbmc9MSwgZW5jb2RlZF9oYW5kc2hha2U9ZGVsdGEpCi0gICAgICAgIHJl
cXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkKLQotICAgICAg
ICBmbG93X2NvbnRyb2wgPSBfY3JlYXRlX2Zsb3dfY29udHJvbF9mcmFtZShjaGFubmVsX2lkPTMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxl
bmlzaGVkX3F1b3RhPTYpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxv
d19jb250cm9sKQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAg
ICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPSdIZWxs
bycpKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAg
X2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MywgbWVzc2FnZT0nV29ybGQnKSkKLSAg
ICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVf
bG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTEsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLSAgICAgICAg
cmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNh
bF9mcmFtZShjaGFubmVsX2lkPTIsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLSAgICAgICAgcmVxdWVz
dC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFt
ZShjaGFubmVsX2lkPTMsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLQotICAgICAgICBzZWxmLmFzc2Vy
dFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRpbWVvdXQ9MikpCi0KLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChbXSwgZGlzcGF0Y2hlci5jaGFubmVsX2V2ZW50c1sxXS5tZXNzYWdl
cykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0hlbGxvJ10sIGRpc3BhdGNoZXIuY2hhbm5l
bF9ldmVudHNbMl0ubWVzc2FnZXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydXb3JsZCdd
LCBkaXNwYXRjaGVyLmNoYW5uZWxfZXZlbnRzWzNdLm1lc3NhZ2VzKQotICAgICAgICAjIENoYW5u
ZWwgMgotICAgICAgICBtZXNzYWdlcyA9IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9t
ZXNzYWdlcygyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihtZXNzYWdlcykpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvJywgbWVzc2FnZXNbMF0pCi0gICAgICAgICMg
Q2hhbm5lbCAzCi0gICAgICAgIG1lc3NhZ2VzID0gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0
dGVuX21lc3NhZ2VzKDMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKG1lc3NhZ2Vz
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnV29ybGQnLCBtZXNzYWdlc1swXSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgICd4LWZvbycsCi0gICAgICAgICAgICBk
aXNwYXRjaGVyLmNoYW5uZWxfZXZlbnRzWzJdLnJlcXVlc3Qud3NfcHJvdG9jb2wpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBOb25lLAotICAgICAgICAgICAgZGlzcGF0
Y2hlci5jaGFubmVsX2V2ZW50c1szXS5yZXF1ZXN0LndzX3Byb3RvY29sKQotCi0gICAgZGVmIHRl
c3RfYWRkX2NoYW5uZWxfZGVsdGFfZW5jb2RpbmdfcGVybWVzc2FnZV9kZWZsYXRlKHNlbGYpOgot
ICAgICAgICAjIEVuYWJsZSBwZXJtZXNzYWdlIGRlZmxhdGUgZXh0ZW5zaW9uIG9uIHRoZSBpbXBs
aWNpdGx5IG9wZW5lZCBjaGFubmVsLgotICAgICAgICBleHRlbnNpb25zID0gY29tbW9uLnBhcnNl
X2V4dGVuc2lvbnMoCi0gICAgICAgICAgICBjb21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVO
U0lPTikKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KAotICAgICAgICAg
ICAgbG9naWNhbF9jaGFubmVsX2V4dGVuc2lvbnM9ZXh0ZW5zaW9ucykKLSAgICAgICAgZGlzcGF0
Y2hlciA9IF9NdXhNb2NrRGlzcGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9N
dXhIYW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0
KCkKLSAgICAgICAgbXV4X2hhbmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05V
TUJFUl9PRl9DSEFOTkVMX1NMT1RTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtdXguX0lOSVRJQUxfUVVPVEFfRk9SX0NMSUVOVCkKLQotICAgICAgICBkZWx0YSA9ICdH
RVQgL2VjaG8gSFRUUC8xLjFcclxuXHJcbicKLSAgICAgICAgYWRkX2NoYW5uZWxfcmVxdWVzdCA9
IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAgICAgICAgICAgIGNoYW5uZWxf
aWQ9MiwgZW5jb2Rpbmc9MSwgZW5jb2RlZF9oYW5kc2hha2U9ZGVsdGEpCi0gICAgICAgIHJlcXVl
c3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkKLQotICAgICAgICBm
bG93X2NvbnRyb2wgPSBfY3JlYXRlX2Zsb3dfY29udHJvbF9mcmFtZShjaGFubmVsX2lkPTIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxlbmlz
aGVkX3F1b3RhPTIwKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3df
Y29udHJvbCkKLQotICAgICAgICAjIFNlbmQgY29tcHJlc3NlZCAnSGVsbG8nIG9uIGxvZ2ljYWwg
Y2hhbm5lbCAxIGFuZCAyLgotICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCi0g
ICAgICAgICAgICB6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwgLXps
aWIuTUFYX1dCSVRTKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJlc3MuY29tcHJl
c3MoJ0hlbGxvJykKLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyArPSBjb21wcmVzcy5mbHVzaCh6
bGliLlpfU1lOQ19GTFVTSCkKLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzZWRf
aGVsbG9bOi00XQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAg
ICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0xLCBtZXNzYWdlPWNvbXBy
ZXNzZWRfaGVsbG8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnN2MT1UcnVl
KSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9j
cmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIsIG1lc3NhZ2U9Y29tcHJlc3NlZF9oZWxs
bywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByc3YxPVRydWUpKQotCi0gICAg
ICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xv
Z2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0xLCBtZXNzYWdlPSdHb29kYnllJykpCi0gICAgICAgIHJl
cXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxf
ZnJhbWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydIZWxsbyddLCBkaXNwYXRjaGVyLmNoYW5uZWxfZXZlbnRz
WzFdLm1lc3NhZ2VzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnSGVsbG8nXSwgZGlzcGF0
Y2hlci5jaGFubmVsX2V2ZW50c1syXS5tZXNzYWdlcykKLSAgICAgICAgIyBXcml0dGVuICdIZWxs
bydzIHNob3VsZCBiZSBjb21wcmVzc2VkLgotICAgICAgICBtZXNzYWdlcyA9IHJlcXVlc3QuY29u
bmVjdGlvbi5nZXRfd3JpdHRlbl9tZXNzYWdlcygxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KDEsIGxlbihtZXNzYWdlcykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcHJlc3NlZF9o
ZWxsbywgbWVzc2FnZXNbMF0pCi0gICAgICAgIG1lc3NhZ2VzID0gcmVxdWVzdC5jb25uZWN0aW9u
LmdldF93cml0dGVuX21lc3NhZ2VzKDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVu
KG1lc3NhZ2VzKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wcmVzc2VkX2hlbGxvLCBt
ZXNzYWdlc1swXSkKLQotICAgIGRlZiB0ZXN0X2FkZF9jaGFubmVsX2RlbHRhX2VuY29kaW5nX3Jl
bW92ZV9leHRlbnNpb25zKHNlbGYpOgotICAgICAgICAjIEVuYWJsZSBwZXJtZXNzYWdlIGRlZmxh
dGUgZXh0ZW5zaW9uIG9uIHRoZSBpbXBsaWNpdGx5IG9wZW5lZCBjaGFubmVsLgotICAgICAgICBl
eHRlbnNpb25zID0gY29tbW9uLnBhcnNlX2V4dGVuc2lvbnMoCi0gICAgICAgICAgICBjb21tb24u
UEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVf
bW9ja19yZXF1ZXN0KAotICAgICAgICAgICAgbG9naWNhbF9jaGFubmVsX2V4dGVuc2lvbnM9ZXh0
ZW5zaW9ucykKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9NdXhNb2NrRGlzcGF0Y2hlcigpCi0gICAg
ICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIpCi0g
ICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAgICAgICAgbXV4X2hhbmRsZXIuYWRkX2NoYW5u
ZWxfc2xvdHMobXV4Ll9JTklUSUFMX05VTUJFUl9PRl9DSEFOTkVMX1NMT1RTLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXguX0lOSVRJQUxfUVVPVEFfRk9SX0NMSUVO
VCkKLQotICAgICAgICAjIFJlbW92ZSBwZXJtZXNzYWdlIGRlZmxhdGUgZXh0ZW5zaW9uLgotICAg
ICAgICBkZWx0YSA9ICgnR0VUIC9lY2hvIEhUVFAvMS4xXHJcbicKLSAgICAgICAgICAgICAgICAg
J1NlYy1XZWJTb2NrZXQtRXh0ZW5zaW9uczpcclxuJwotICAgICAgICAgICAgICAgICAnXHJcbicp
Ci0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVl
c3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lkPTIsIGVuY29kaW5nPTEsIGVuY29kZWRf
aGFuZHNoYWtlPWRlbHRhKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGFk
ZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgZmxvd19jb250cm9sID0gX2NyZWF0ZV9mbG93
X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90YT0yMCkKLSAgICAgICAgcmVx
dWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAgICAgIyBTZW5k
IGNvbXByZXNzZWQgbWVzc2FnZSBvbiBsb2dpY2FsIGNoYW5uZWwgMi4gVGhlIG1lc3NhZ2Ugc2hv
dWxkCi0gICAgICAgICMgYmUgcmVqZWN0ZWQgKHNpbmNlIHJzdjEgaXMgc2V0KS4KLSAgICAgICAg
Y29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKAotICAgICAgICAgICAgemxpYi5aX0RFRkFVTFRf
Q09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsIC16bGliLk1BWF9XQklUUykKLSAgICAgICAgY29t
cHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzLmNvbXByZXNzKCdIZWxsbycpCi0gICAgICAgIGNvbXBy
ZXNzZWRfaGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAg
IGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzc2VkX2hlbGxvWzotNF0KLSAgICAgICAgcmVxdWVz
dC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFt
ZShjaGFubmVsX2lkPTIsIG1lc3NhZ2U9Y29tcHJlc3NlZF9oZWxsbywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByc3YxPVRydWUpKQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVj
dGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5l
bF9pZD0xLCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG11
eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIGRyb3BfY2hh
bm5lbCA9IG5leHQoCi0gICAgICAgICAgICBiIGZvciBiIGluIHJlcXVlc3QuY29ubmVjdGlvbi5n
ZXRfd3JpdHRlbl9jb250cm9sX2Jsb2NrcygpCi0gICAgICAgICAgICBpZiBiLm9wY29kZSA9PSBt
dXguX01VWF9PUENPREVfRFJPUF9DSEFOTkVMKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG11
eC5fRFJPUF9DT0RFX05PUk1BTF9DTE9TVVJFLCBkcm9wX2NoYW5uZWwuZHJvcF9jb2RlKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGRyb3BfY2hhbm5lbC5jaGFubmVsX2lkKQotICAgICAg
ICAjIFVuc3VwcG9ydGVkRnJhbWVFeGNlcHRpb24gc2hvdWxkIGJlIHJhaXNlZCBvbiBsb2dpY2Fs
IGNoYW5uZWwgMi4KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoZGlzcGF0Y2hl
ci5jaGFubmVsX2V2ZW50c1syXS5leGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFVuc3VwcG9ydGVkRnJhbWVFeGNlcHRpb24pKQotCi0gICAgZGVmIHRlc3RfYWRk
X2NoYW5uZWxfaW52YWxpZF9lbmNvZGluZyhzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVh
dGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9NdXhNb2NrRGlzcGF0Y2hl
cigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJlcXVlc3QsIGRpc3Bh
dGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAgICAgICAgbXV4X2hhbmRsZXIu
YWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05VTUJFUl9PRl9DSEFOTkVMX1NMT1RTLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXguX0lOSVRJQUxfUVVPVEFf
Rk9SX0NMSUVOVCkKLQotICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSA9IF9jcmVhdGVfcmVxdWVz
dF9oZWFkZXIocGF0aD0nL2VjaG8nKQotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2Ny
ZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5lbF9pZD0y
LCBlbmNvZGluZz0zLAotICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2U9ZW5jb2RlZF9oYW5k
c2hha2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRkX2NoYW5uZWxf
cmVxdWVzdCkKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRp
bF9kb25lKHRpbWVvdXQ9MikpCi0KLSAgICAgICAgZHJvcF9jaGFubmVsID0gbmV4dCgKLSAgICAg
ICAgICAgIGIgZm9yIGIgaW4gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX2NvbnRyb2xf
YmxvY2tzKCkKLSAgICAgICAgICAgIGlmIGIub3Bjb2RlID09IG11eC5fTVVYX09QQ09ERV9EUk9Q
X0NIQU5ORUwpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXV4Ll9EUk9QX0NPREVfVU5LTk9X
Tl9SRVFVRVNUX0VOQ09ESU5HLAotICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3BfY2hhbm5l
bC5kcm9wX2NvZGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLlNUQVRVU19JTlRF
Uk5BTF9FTkRQT0lOVF9FUlJPUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNv
bm5lY3Rpb24uc2VydmVyX2Nsb3NlX2NvZGUpCi0KLSAgICBkZWYgdGVzdF9hZGRfY2hhbm5lbF9p
bmNvbXBsZXRlX2hhbmRzaGFrZShzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfbW9j
a19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9NdXhNb2NrRGlzcGF0Y2hlcigpCi0g
ICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIp
Ci0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAgICAgICAgbXV4X2hhbmRsZXIuYWRkX2No
YW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05VTUJFUl9PRl9DSEFOTkVMX1NMT1RTLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXguX0lOSVRJQUxfUVVPVEFfRk9SX0NM
SUVOVCkKLQotICAgICAgICBpbmNvbXBsZXRlX2VuY29kZWRfaGFuZHNoYWtlID0gJ0dFVCAvZWNo
byBIVFRQLzEuMScKLSAgICAgICAgYWRkX2NoYW5uZWxfcmVxdWVzdCA9IF9jcmVhdGVfYWRkX2No
YW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAgICAgICAgICAgIGNoYW5uZWxfaWQ9MiwgZW5jb2Rpbmc9
MCwKLSAgICAgICAgICAgIGVuY29kZWRfaGFuZHNoYWtlPWluY29tcGxldGVfZW5jb2RlZF9oYW5k
c2hha2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRkX2NoYW5uZWxf
cmVxdWVzdCkKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAg
ICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MSwgbWVzc2FnZT0nR29vZGJ5
ZScpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2Rv
bmUodGltZW91dD0yKSkKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUoMSBpbiBkaXNwYXRjaGVy
LmNoYW5uZWxfZXZlbnRzKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IDIgaW4gZGlzcGF0
Y2hlci5jaGFubmVsX2V2ZW50cykKLQotICAgIGRlZiB0ZXN0X2FkZF9jaGFubmVsX2R1cGxpY2F0
ZV9jaGFubmVsX2lkKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVl
c3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAg
bXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAg
ICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9z
bG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxfU0xPVFMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5fSU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQot
Ci0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtlID0gX2NyZWF0ZV9yZXF1ZXN0X2hlYWRlcihwYXRo
PScvZWNobycpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFu
bmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lkPTIsIGVuY29kaW5nPTAs
Ci0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNvZGVkX2hhbmRzaGFrZSkKLSAgICAg
ICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0g
ICAgICAgIGVuY29kZWRfaGFuZHNoYWtlID0gX2NyZWF0ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScv
ZWNobycpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVs
X3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lkPTIsIGVuY29kaW5nPTAsCi0g
ICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAg
cmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91dD0y
KSkKLQotICAgICAgICBkcm9wX2NoYW5uZWwgPSBuZXh0KAotICAgICAgICAgICAgYiBmb3IgYiBp
biByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29udHJvbF9ibG9ja3MoKQotICAgICAg
ICAgICAgaWYgYi5vcGNvZGUgPT0gbXV4Ll9NVVhfT1BDT0RFX0RST1BfQ0hBTk5FTCkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChtdXguX0RST1BfQ09ERV9DSEFOTkVMX0FMUkVBRFlfRVhJU1RT
LAotICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3BfY2hhbm5lbC5kcm9wX2NvZGUpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLlNUQVRVU19JTlRFUk5BTF9FTkRQT0lOVF9FUlJP
UiwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24uc2VydmVyX2Ns
b3NlX2NvZGUpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX2Ryb3BfY2hhbm5lbChzZWxmKToKLSAg
ICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hl
ciA9IF9NdXhNb2NrRGlzcGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhI
YW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkK
LSAgICAgICAgbXV4X2hhbmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05VTUJF
Ul9PRl9DSEFOTkVMX1NMT1RTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtdXguX0lOSVRJQUxfUVVPVEFfRk9SX0NMSUVOVCkKLQotICAgICAgICBlbmNvZGVkX2hhbmRz
aGFrZSA9IF9jcmVhdGVfcmVxdWVzdF9oZWFkZXIocGF0aD0nL2VjaG8nKQotICAgICAgICBhZGRf
Y2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAg
ICAgICAgICAgY2hhbm5lbF9pZD0yLCBlbmNvZGluZz0wLAotICAgICAgICAgICAgZW5jb2RlZF9o
YW5kc2hha2U9ZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5w
dXRfYnl0ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkKLQotICAgICAgICBkcm9wX2NoYW5uZWwgPSBf
Y3JlYXRlX2Ryb3BfY2hhbm5lbF9mcmFtZShjaGFubmVsX2lkPTIpCi0gICAgICAgIHJlcXVlc3Qu
Y29ubmVjdGlvbi5wdXRfYnl0ZXMoZHJvcF9jaGFubmVsKQotCi0gICAgICAgICMgVGVybWluYXRl
IGltcGxpY2l0bHkgb3BlbmVkIGNoYW5uZWwuCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5w
dXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0x
LCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5k
bGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIGV4Y2VwdGlvbiA9IGRp
c3BhdGNoZXIuY2hhbm5lbF9ldmVudHNbMl0uZXhjZXB0aW9uCi0gICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShleGNlcHRpb24uX19jbGFzc19fID09IENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9u
KQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9waW5nX2ZyYW1lKHNlbGYpOgotICAgICAgICByZXF1
ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1v
Y2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVx
dWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBt
dXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5O
RUxfU0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5fSU5J
VElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtlID0gX2Ny
ZWF0ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScvZWNobycpCi0gICAgICAgIGFkZF9jaGFubmVsX3Jl
cXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBj
aGFubmVsX2lkPTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1l
bmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhh
ZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxv
d19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9MTMpCi0gICAgICAgIHJl
cXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAgIHBpbmdf
ZnJhbWUgPSBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J0hlbGxvIFdvcmxkIScsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Bjb2RlPWNvbW1vbi5P
UENPREVfUElORykKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhwaW5nX2Zy
YW1lKQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAg
ICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0xLCBtZXNzYWdlPSdHb29kYnllJykp
Ci0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3Jl
YXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0
PTIpKQotCi0gICAgICAgIG1lc3NhZ2VzID0gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVu
X2NvbnRyb2xfbWVzc2FnZXMoMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tb24uT1BD
T0RFX1BPTkcsIG1lc3NhZ2VzWzBdWydvcGNvZGUnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgnSGVsbG8gV29ybGQhJywgbWVzc2FnZXNbMF1bJ21lc3NhZ2UnXSkKLQotICAgIGRlZiB0ZXN0
X3JlY2VpdmVfZnJhZ21lbnRlZF9waW5nKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0
ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tEaXNwYXRjaGVy
KCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0
Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBtdXhfaGFuZGxlci5h
ZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxfU0xPVFMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5fSU5JVElBTF9RVU9UQV9G
T1JfQ0xJRU5UKQotCi0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtlID0gX2NyZWF0ZV9yZXF1ZXN0
X2hlYWRlcihwYXRoPScvZWNobycpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3Jl
YXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lkPTIs
IGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNvZGVkX2hhbmRz
aGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9y
ZXF1ZXN0KQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250cm9sX2Zy
YW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9MTMpCi0gICAgICAgIHJlcXVlc3QuY29ubmVj
dGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAgICMgU2VuZCBhIHBpbmcgd2l0
aCBtZXNzYWdlICdIZWxsbyB3b3JsZCEnIGluIHR3byBmcmFnbWVudGVkIGZyYW1lcy4KLSAgICAg
ICAgcGluZ19mcmFtZTEgPSBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdIZWxsbyAn
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW49RmFsc2Us
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wY29kZT1jb21t
b24uT1BDT0RFX1BJTkcpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMocGlu
Z19mcmFtZTEpCi0gICAgICAgIHBpbmdfZnJhbWUyID0gX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNo
YW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bWVzc2FnZT0nV29ybGQhJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmluPVRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9wY29kZT1jb21tb24uT1BDT0RFX0NPTlRJTlVBVElPTikKLSAgICAgICAgcmVxdWVzdC5j
b25uZWN0aW9uLnB1dF9ieXRlcyhwaW5nX2ZyYW1lMikKLQotICAgICAgICByZXF1ZXN0LmNvbm5l
Y3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5u
ZWxfaWQ9MSwgbWVzc2FnZT0nR29vZGJ5ZScpKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24u
cHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9
MiwgbWVzc2FnZT0nR29vZGJ5ZScpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFu
ZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgICAgICBtZXNzYWdlcyA9IHJl
cXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9jb250cm9sX21lc3NhZ2VzKDIpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLk9QQ09ERV9QT05HLCBtZXNzYWdlc1swXVsnb3Bjb2Rl
J10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvIFdvcmxkIScsIG1lc3NhZ2VzWzBd
WydtZXNzYWdlJ10pCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX2ZyYWdtZW50ZWRfcGluZ193aGls
ZV9yZWNlaXZpbmdfZnJhZ21lbnRlZF9tZXNzYWdlKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0g
X2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tEaXNw
YXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVzdCwg
ZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBtdXhfaGFu
ZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxfU0xP
VFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5fSU5JVElBTF9R
VU9UQV9GT1JfQ0xJRU5UKQotCi0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtlID0gX2NyZWF0ZV9y
ZXF1ZXN0X2hlYWRlcihwYXRoPScvZWNobycpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3Qg
PSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVs
X2lkPTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNvZGVk
X2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hh
bm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250
cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9MTkpCi0gICAgICAgIHJlcXVlc3Qu
Y29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAgICMgU2VuZCBhIGZy
YWdtZW50ZWQgZnJhbWUgb2YgbWVzc2FnZSAnSGVsbG8gJy4KLSAgICAgICAgaGVsbG8gPSBfY3Jl
YXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtZXNzYWdlPSdIZWxsbyAnLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmaW49RmFsc2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRf
Ynl0ZXMoaGVsbG8pCi0KLSAgICAgICAgIyBCZWZvcmUgc2VuZGluZyB0aGUgbGFzdCBmcmFnbWVu
dGVkIGZyYW1lIG9mIHRoZSBtZXNzYWdlLCBzZW5kIGEKLSAgICAgICAgIyBmcmFnbWVudGVkIHBp
bmcuCi0gICAgICAgIHBpbmcxID0gX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nUGknLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW49RmFsc2UsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wY29kZT1jb21tb24uT1BDT0RFX1BJTkcpCi0g
ICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMocGluZzEpCi0gICAgICAgIHBpbmcy
ID0gX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nbmchJywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZmluPVRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9wY29kZT1jb21tb24uT1BDT0RFX0NPTlRJTlVBVElPTikKLSAgICAgICAgcmVx
dWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhwaW5nMikKLQotICAgICAgICAjIFNlbmQgdGhlIGxh
c3QgZnJhZ21lbnRlZCBmcmFtZSBvZiB0aGUgbWVzc2FnZS4KLSAgICAgICAgd29ybGQgPSBfY3Jl
YXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtZXNzYWdlPSdXb3JsZCEnLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmaW49VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3Bjb2RlPWNvbW1vbi5PUENPREVfQ09OVElOVUFUSU9OKQotICAgICAgICByZXF1ZXN0
LmNvbm5lY3Rpb24ucHV0X2J5dGVzKHdvcmxkKQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlv
bi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9p
ZD0xLCBtZXNzYWdlPSdHb29kYnllJykpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRf
Ynl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLCBt
ZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVy
LndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIG1lc3NhZ2VzID0gcmVxdWVz
dC5jb25uZWN0aW9uLmdldF93cml0dGVuX21lc3NhZ2VzKDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoWydIZWxsbyBXb3JsZCEnXSwgbWVzc2FnZXMpCi0gICAgICAgIGNvbnRyb2xfbWVzc2Fn
ZXMgPSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29udHJvbF9tZXNzYWdlcygyKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1vbi5PUENPREVfUE9ORywgY29udHJvbF9tZXNz
YWdlc1swXVsnb3Bjb2RlJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1BpbmchJywgY29u
dHJvbF9tZXNzYWdlc1swXVsnbWVzc2FnZSddKQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV90d29f
cGluZ193aGlsZV9yZWNlaXZpbmdfZnJhZ21lbnRlZF9tZXNzYWdlKHNlbGYpOgotICAgICAgICBy
ZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011
eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIo
cmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAg
ICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NI
QU5ORUxfU0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5f
SU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtlID0g
X2NyZWF0ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScvZWNobycpCi0gICAgICAgIGFkZF9jaGFubmVs
X3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAg
ICBjaGFubmVsX2lkPTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFr
ZT1lbmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRl
cyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVf
Zmxvd19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9MjUpCi0gICAgICAg
IHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAgICMg
U2VuZCBhIGZyYWdtZW50ZWQgZnJhbWUgb2YgbWVzc2FnZSAnSGVsbG8gJy4KLSAgICAgICAgaGVs
bG8gPSBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdIZWxsbyAnLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmaW49RmFsc2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVj
dGlvbi5wdXRfYnl0ZXMoaGVsbG8pCi0KLSAgICAgICAgIyBCZWZvcmUgc2VuZGluZyB0aGUgbGFz
dCBmcmFnbWVudGVkIGZyYW1lIG9mIHRoZSBtZXNzYWdlLCBzZW5kIGEKLSAgICAgICAgIyBmcmFn
bWVudGVkIHBpbmcgYW5kIGEgbm9uLWZyYWdtZW50ZWQgcGluZy4KLSAgICAgICAgcGluZzEgPSBf
Y3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtZXNzYWdlPSdQaScsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZpbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3Bjb2RlPWNvbW1vbi5PUENPREVfUElORykKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0
aW9uLnB1dF9ieXRlcyhwaW5nMSkKLSAgICAgICAgcGluZzIgPSBfY3JlYXRlX2xvZ2ljYWxfZnJh
bWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
ZXNzYWdlPSduZyEnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW49
VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Bjb2RlPWNvbW1v
bi5PUENPREVfQ09OVElOVUFUSU9OKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5
dGVzKHBpbmcyKQotICAgICAgICBwaW5nMyA9IF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVs
X2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J1Bv
bmchJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluPVRydWUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wY29kZT1jb21tb24uT1BDT0RF
X1BJTkcpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMocGluZzMpCi0KLSAg
ICAgICAgIyBTZW5kIHRoZSBsYXN0IGZyYWdtZW50ZWQgZnJhbWUgb2YgdGhlIG1lc3NhZ2UuCi0g
ICAgICAgIHdvcmxkID0gX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nV29ybGQhJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluPVRydWUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG9wY29kZT1jb21tb24uT1BDT0RFX0NPTlRJTlVBVElP
TikKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyh3b3JsZCkKLQotICAgICAg
ICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dp
Y2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MSwgbWVzc2FnZT0nR29vZGJ5ZScpKQotICAgICAgICByZXF1
ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2Zy
YW1lKGNoYW5uZWxfaWQ9MiwgbWVzc2FnZT0nR29vZGJ5ZScpKQotCi0gICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgICAg
ICBtZXNzYWdlcyA9IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9tZXNzYWdlcygyKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnSGVsbG8gV29ybGQhJ10sIG1lc3NhZ2VzKQotICAg
ICAgICBjb250cm9sX21lc3NhZ2VzID0gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX2Nv
bnRyb2xfbWVzc2FnZXMoMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tb24uT1BDT0RF
X1BPTkcsIGNvbnRyb2xfbWVzc2FnZXNbMF1bJ29wY29kZSddKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdQaW5nIScsIGNvbnRyb2xfbWVzc2FnZXNbMF1bJ21lc3NhZ2UnXSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjb21tb24uT1BDT0RFX1BPTkcsIGNvbnRyb2xfbWVzc2FnZXNbMV1b
J29wY29kZSddKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdQb25nIScsIGNvbnRyb2xfbWVz
c2FnZXNbMV1bJ21lc3NhZ2UnXSkKLQotICAgIGRlZiB0ZXN0X3JlY2VpdmVfbWVzc2FnZV93aGls
ZV9yZWNlaXZpbmdfZnJhZ21lbnRlZF9waW5nKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2Ny
ZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tEaXNwYXRj
aGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVzdCwgZGlz
cGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBtdXhfaGFuZGxl
ci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxfU0xPVFMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5fSU5JVElBTF9RVU9U
QV9GT1JfQ0xJRU5UKQotCi0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtlID0gX2NyZWF0ZV9yZXF1
ZXN0X2hlYWRlcihwYXRoPScvZWNobycpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBf
Y3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lk
PTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNvZGVkX2hh
bmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5l
bF9yZXF1ZXN0KQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250cm9s
X2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTE5KQotICAgICAgICByZXF1ZXN0LmNvbm5l
Y3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJvbCkKLQotICAgICAgICAjIFNlbmQgYSBmcmFnbWVu
dGVkIHBpbmcuCi0gICAgICAgIHBpbmcxID0gX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxf
aWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nUGkn
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW49RmFsc2UsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wY29kZT1jb21tb24uT1BDT0RFX1BJ
TkcpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMocGluZzEpCi0KLSAgICAg
ICAgIyBCZWZvcmUgc2VuZGluZyB0aGUgbGFzdCBmcmFnbWVudGVkIHBpbmcsIHNlbmQgYSBtZXNz
YWdlLgotICAgICAgICAjIFRoZSBsb2dpY2FsIGNoYW5uZWwgKDIpIHNob3VsZCBiZSBkcm9wcGVk
LgotICAgICAgICBtZXNzYWdlID0gX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdIZWxsbyB3
b3JsZCEnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbj1UcnVl
KQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKG1lc3NhZ2UpCi0KLSAgICAg
ICAgIyBTZW5kIHRoZSBsYXN0IGZyYWdtZW50ZWQgZnJhbWUgb2YgdGhlIG1lc3NhZ2UuCi0gICAg
ICAgIHBpbmcyID0gX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nbmchJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluPVRydWUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9wY29kZT1jb21tb24uT1BDT0RFX0NPTlRJTlVBVElPTikKLSAg
ICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhwaW5nMikKLQotICAgICAgICByZXF1
ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2Zy
YW1lKGNoYW5uZWxfaWQ9MSwgbWVzc2FnZT0nR29vZGJ5ZScpKQotCi0gICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgICAg
ICBkcm9wX2NoYW5uZWwgPSBuZXh0KAotICAgICAgICAgICAgYiBmb3IgYiBpbiByZXF1ZXN0LmNv
bm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29udHJvbF9ibG9ja3MoKQotICAgICAgICAgICAgaWYgYi5v
cGNvZGUgPT0gbXV4Ll9NVVhfT1BDT0RFX0RST1BfQ0hBTk5FTCkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgyLCBkcm9wX2NoYW5uZWwuY2hhbm5lbF9pZCkKLSAgICAgICAgIyBObyBtZXNzYWdl
IHNob3VsZCBiZSBzZW50IG9uIGNoYW5uZWwgMi4KLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMo
S2V5RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5n
ZXRfd3JpdHRlbl9tZXNzYWdlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgMikKLSAgICAg
ICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9jb250cm9sX21lc3NhZ2VzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAyKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9waW5nKHNlbGYpOgot
ICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRj
aGVyID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011
eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQo
KQotICAgICAgICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVN
QkVSX09GX0NIQU5ORUxfU0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG11eC5fSU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0gICAgICAgIGVuY29kZWRfaGFu
ZHNoYWtlID0gX2NyZWF0ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScvcGluZycpCi0gICAgICAgIGFk
ZF9jaGFubmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0g
ICAgICAgICAgICBjaGFubmVsX2lkPTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVk
X2hhbmRzaGFrZT1lbmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9u
LnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9
IF9jcmVhdGVfZmxvd19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9NikK
LSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAg
ICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVf
bG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTEsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLQotICAgICAg
ICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRpbWVvdXQ9Mikp
Ci0KLSAgICAgICAgbWVzc2FnZXMgPSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29u
dHJvbF9tZXNzYWdlcygyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1vbi5PUENPREVf
UElORywgbWVzc2FnZXNbMF1bJ29wY29kZSddKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdQ
aW5nIScsIG1lc3NhZ2VzWzBdWydtZXNzYWdlJ10pCi0KLSAgICBkZWYgdGVzdF9zZW5kX2ZyYWdt
ZW50ZWRfcGluZyhzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0
KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9NdXhNb2NrRGlzcGF0Y2hlcigpCi0gICAgICAgIG11
eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIpCi0gICAgICAg
IG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAgICAgICAgbXV4X2hhbmRsZXIuYWRkX2NoYW5uZWxfc2xv
dHMobXV4Ll9JTklUSUFMX05VTUJFUl9PRl9DSEFOTkVMX1NMT1RTLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtdXguX0lOSVRJQUxfUVVPVEFfRk9SX0NMSUVOVCkKLQot
ICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSA9IF9jcmVhdGVfcmVxdWVzdF9oZWFkZXIocGF0aD0n
L3BpbmcnKQotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5l
bF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5lbF9pZD0yLCBlbmNvZGluZz0wLAot
ICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2U9ZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgICAg
IHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkKLQotICAg
ICAgICAjIFJlcGxlbmlzaCAzIGJ5dGVzLiBUaGlzIGlzbid0IGVub3VnaCB0byBzZW5kIHRoZSB3
aG9sZSBwaW5nIGZyYW1lCi0gICAgICAgICMgYmVjYXVzZSB0aGUgZnJhbWUgd2lsbCBoYXZlIDUg
Ynl0ZXMgbWVzc2FnZSgnUGluZyEnKS4gVGhlIGZyYW1lCi0gICAgICAgICMgc2hvdWxkIGJlIGZy
YWdtZW50ZWQuCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250cm9sX2Zy
YW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9MykKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0
aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAgICAgIyBXYWl0IHVudGlsIHRoZSB3
b3JrZXIgaXMgYmxvY2tlZCBkdWUgdG8gc2VuZCBxdW90YSBzaG9ydGFnZS4KLSAgICAgICAgdGlt
ZS5zbGVlcCgxKQotCi0gICAgICAgICMgUmVwbGVuaXNoIHJlbWFpbmluZyAyICsgMSBieXRlcyAo
aW5jbHVkaW5nIGV4dHJhIGNvc3QpLgotICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3JlYXRlX2Zs
b3dfY29udHJvbF9mcmFtZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTMpCi0gICAgICAgIHJl
cXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAgIHJlcXVl
c3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJh
bWUoY2hhbm5lbF9pZD0xLCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAg
IG1lc3NhZ2VzID0gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX2NvbnRyb2xfbWVzc2Fn
ZXMoMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tb24uT1BDT0RFX1BJTkcsIG1lc3Nh
Z2VzWzBdWydvcGNvZGUnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnUGluZyEnLCBtZXNz
YWdlc1swXVsnbWVzc2FnZSddKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9mcmFnbWVudGVkX3Bpbmdf
d2hpbGVfc2VuZGluZ19mcmFnbWVudGVkX21lc3NhZ2Uoc2VsZik6Ci0gICAgICAgIHJlcXVlc3Qg
PSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAgIGRpc3BhdGNoZXIgPSBfTXV4TW9ja0Rp
c3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4SGFuZGxlcihyZXF1ZXN0
LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0gICAgICAgIG11eF9o
YW5kbGVyLmFkZF9jaGFubmVsX3Nsb3RzKG11eC5fSU5JVElBTF9OVU1CRVJfT0ZfQ0hBTk5FTF9T
TE9UUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV4Ll9JTklUSUFM
X1FVT1RBX0ZPUl9DTElFTlQpCi0KLSAgICAgICAgZW5jb2RlZF9oYW5kc2hha2UgPSBfY3JlYXRl
X3JlcXVlc3RfaGVhZGVyKAotICAgICAgICAgICAgcGF0aD0nL3Bpbmdfd2hpbGVfaGVsbG9fd29y
bGQnKQotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9y
ZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5lbF9pZD0yLCBlbmNvZGluZz0wLAotICAg
ICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2U9ZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgICAgIHJl
cXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkKLQotICAgICAg
ICAjIEFwcGxpY2F0aW9uIHdpbGwgc2VuZDoKLSAgICAgICAgIyAtIHRleHQgbWVzc2FnZSAnSGVs
bG8gJyB3aXRoIGZpbj0wCi0gICAgICAgICMgLSBwaW5nIHdpdGggJ1BpbmchJyBtZXNzYWdlCi0g
ICAgICAgICMgLSB0ZXh0IG1lc3NhZ2UgJ1dvcmxkIScgd2l0aCBmaW49MQotICAgICAgICAjIFJl
cGxlbmlzaCAoNiArIDEpICsgKDIgKyAxKSBieXRlcyBzbyB0aGF0IHRoZSBwaW5nIHdpbGwgYmUK
LSAgICAgICAgIyBmcmFnbWVudGVkIG9uIHRoZSBsb2dpY2FsIGNoYW5uZWwuCi0gICAgICAgIGZs
b3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNo
ZWRfcXVvdGE9MTApCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19j
b250cm9sKQotCi0gICAgICAgIHRpbWUuc2xlZXAoMSkKLQotICAgICAgICAjIFJlcGxlbmlzaCBy
ZW1haW5pbmcgMyArIDYgYnl0ZXMuCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxv
d19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9OSkKLSAgICAgICAgcmVx
dWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAgICAgcmVxdWVz
dC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFt
ZShjaGFubmVsX2lkPTEsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLQotICAgICAgICBzZWxmLmFzc2Vy
dFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRpbWVvdXQ9MikpCi0KLSAgICAgICAg
bWVzc2FnZXMgPSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fbWVzc2FnZXMoMikKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0hlbGxvIFdvcmxkISddLCBtZXNzYWdlcykKLSAgICAg
ICAgY29udHJvbF9tZXNzYWdlcyA9IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9jb250
cm9sX21lc3NhZ2VzKDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLk9QQ09ERV9Q
SU5HLCBjb250cm9sX21lc3NhZ2VzWzBdWydvcGNvZGUnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgnUGluZyEnLCBjb250cm9sX21lc3NhZ2VzWzBdWydtZXNzYWdlJ10pCi0KLSAgICBkZWYg
dGVzdF9zZW5kX2ZyYWdtZW50ZWRfdHdvX3Bpbmdfd2hpbGVfc2VuZGluZ19mcmFnbWVudGVkX21l
c3NhZ2Uoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0g
ICAgICAgIGRpc3BhdGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFu
ZGxlciA9IG11eC5fTXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhf
aGFuZGxlci5zdGFydCgpCi0gICAgICAgIG11eF9oYW5kbGVyLmFkZF9jaGFubmVsX3Nsb3RzKG11
eC5fSU5JVElBTF9OVU1CRVJfT0ZfQ0hBTk5FTF9TTE9UUywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbXV4Ll9JTklUSUFMX1FVT1RBX0ZPUl9DTElFTlQpCi0KLSAgICAg
ICAgZW5jb2RlZF9oYW5kc2hha2UgPSBfY3JlYXRlX3JlcXVlc3RfaGVhZGVyKAotICAgICAgICAg
ICAgcGF0aD0nL3R3b19waW5nX3doaWxlX2hlbGxvX3dvcmxkJykKLSAgICAgICAgYWRkX2NoYW5u
ZWxfcmVxdWVzdCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAgICAgICAg
ICAgIGNoYW5uZWxfaWQ9MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVuY29kZWRfaGFuZHNo
YWtlPWVuY29kZWRfaGFuZHNoYWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5
dGVzKGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgIyBBcHBsaWNhdGlvbiB3aWxsIHNl
bmQ6Ci0gICAgICAgICMgLSB0ZXh0IG1lc3NhZ2UgJ0hlbGxvICcgd2l0aCBmaW49MAotICAgICAg
ICAjIC0gcGluZyB3aXRoICdQaW5nIScgbWVzc2FnZQotICAgICAgICAjIC0gcGluZyB3aXRoICdQ
b25nIScgbWVzc2FnZQotICAgICAgICAjIC0gdGV4dCBtZXNzYWdlICdXb3JsZCEnIHdpdGggZmlu
PTEKLSAgICAgICAgIyBSZXBsZW5pc2ggKDYgKyAxKSArICgyICsgMSkgYnl0ZXMgc28gdGhhdCB0
aGUgZmlyc3QgcGluZyB3aWxsIGJlCi0gICAgICAgICMgZnJhZ21lbnRlZCBvbiB0aGUgbG9naWNh
bCBjaGFubmVsLgotICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3JlYXRlX2Zsb3dfY29udHJvbF9m
cmFtZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTEwKQotICAgICAgICByZXF1ZXN0LmNvbm5l
Y3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJvbCkKLQotICAgICAgICB0aW1lLnNsZWVwKDEpCi0K
LSAgICAgICAgIyBSZXBsZW5pc2ggcmVtYWluaW5nIDMgKyAoNSArIDEpICsgNiBieXRlcy4gVGhl
IHNlY29uZCBwaW5nIHdvbid0Ci0gICAgICAgICMgYmUgZnJhZ21lbnRlZCBvbiB0aGUgbG9naWNh
bCBjaGFubmVsLgotICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3JlYXRlX2Zsb3dfY29udHJvbF9m
cmFtZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTE1KQotICAgICAgICByZXF1ZXN0LmNvbm5l
Y3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJvbCkKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rp
b24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxf
aWQ9MSwgbWVzc2FnZT0nR29vZGJ5ZScpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhf
aGFuZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgICAgICBtZXNzYWdlcyA9
IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9tZXNzYWdlcygyKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKFsnSGVsbG8gV29ybGQhJ10sIG1lc3NhZ2VzKQotICAgICAgICBjb250cm9s
X21lc3NhZ2VzID0gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX2NvbnRyb2xfbWVzc2Fn
ZXMoMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tb24uT1BDT0RFX1BJTkcsIGNvbnRy
b2xfbWVzc2FnZXNbMF1bJ29wY29kZSddKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdQaW5n
IScsIGNvbnRyb2xfbWVzc2FnZXNbMF1bJ21lc3NhZ2UnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChjb21tb24uT1BDT0RFX1BJTkcsIGNvbnRyb2xfbWVzc2FnZXNbMV1bJ29wY29kZSddKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdQb25nIScsIGNvbnRyb2xfbWVzc2FnZXNbMV1bJ21l
c3NhZ2UnXSkKLQotICAgIGRlZiB0ZXN0X3NlbmRfZHJvcF9jaGFubmVsKHNlbGYpOgotICAgICAg
ICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0g
X011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRs
ZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotCi0g
ICAgICAgICMgRHJvcENoYW5uZWwgZm9yIGNoYW5uZWwgaWQgMSB3aGljaCBkb2Vzbid0IGhhdmUg
cmVhc29uLgotICAgICAgICBmcmFtZSA9IGNyZWF0ZV9iaW5hcnlfZnJhbWUoJ1x4MDBceDYwXHgw
MVx4MDAnLCBtYXNrPVRydWUpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMo
ZnJhbWUpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxf
ZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIGRyb3BfY2hhbm5lbCA9IG5leHQoCi0gICAgICAg
ICAgICBiIGZvciBiIGluIHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9jb250cm9sX2Js
b2NrcygpCi0gICAgICAgICAgICBpZiBiLm9wY29kZSA9PSBtdXguX01VWF9PUENPREVfRFJPUF9D
SEFOTkVMKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG11eC5fRFJPUF9DT0RFX0FDS05PV0xF
REdFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBkcm9wX2NoYW5uZWwuZHJvcF9jb2RlKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGRyb3BfY2hhbm5lbC5jaGFubmVsX2lkKQotCi0g
ICAgZGVmIHRlc3RfdHdvX2Zsb3dfY29udHJvbChzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9j
cmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9NdXhNb2NrRGlzcGF0
Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJlcXVlc3QsIGRp
c3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAgICAgICAgbXV4X2hhbmRs
ZXIuYWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05VTUJFUl9PRl9DSEFOTkVMX1NMT1RT
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXguX0lOSVRJQUxfUVVP
VEFfRk9SX0NMSUVOVCkKLQotICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSA9IF9jcmVhdGVfcmVx
dWVzdF9oZWFkZXIocGF0aD0nL2VjaG8nKQotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0g
X2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5lbF9p
ZD0yLCBlbmNvZGluZz0wLAotICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2U9ZW5jb2RlZF9o
YW5kc2hha2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRkX2NoYW5u
ZWxfcmVxdWVzdCkKLQotICAgICAgICAjIFJlcGxlbmlzaCA1IGJ5dGVzLgotICAgICAgICBmbG93
X2NvbnRyb2wgPSBfY3JlYXRlX2Zsb3dfY29udHJvbF9mcmFtZShjaGFubmVsX2lkPTIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxlbmlzaGVk
X3F1b3RhPTUpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250
cm9sKQotCi0gICAgICAgICMgU2VuZCAxMCBieXRlcy4gVGhlIHNlcnZlciB3aWxsIHRyeSBlY2hv
IGJhY2sgMTAgYnl0ZXMuCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0g
ICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPSdI
ZWxsb1dvcmxkJykpCi0KLSAgICAgICAgIyBSZXBsZW5pc2ggNSArIDEgKHBlci1tZXNzYWdlIGV4
dHJhIGNvc3QpIGJ5dGVzLgotICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3JlYXRlX2Zsb3dfY29u
dHJvbF9mcmFtZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTYpCi0gICAgICAgIHJlcXVlc3Qu
Y29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAgIHJlcXVlc3QuY29u
bmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hh
bm5lbF9pZD0xLCBtZXNzYWdlPSdHb29kYnllJykpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlv
bi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9p
ZD0yLCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9o
YW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIG1lc3NhZ2VzID0g
cmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX21lc3NhZ2VzKDIpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoWydIZWxsb1dvcmxkJ10sIG1lc3NhZ2VzKQotICAgICAgICByZWNlaXZlZF9m
bG93X2NvbnRyb2xzID0gWwotICAgICAgICAgICAgYiBmb3IgYiBpbiByZXF1ZXN0LmNvbm5lY3Rp
b24uZ2V0X3dyaXR0ZW5fY29udHJvbF9ibG9ja3MoKQotICAgICAgICAgICAgaWYgYi5vcGNvZGUg
PT0gbXV4Ll9NVVhfT1BDT0RFX0ZMT1dfQ09OVFJPTCBhbmQgYi5jaGFubmVsX2lkID09IDJdCi0g
ICAgICAgICMgUmVwbGVuaXNobWVudCBmb3IgJ0hlbGxvV29ybGQnICsgMQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKDExLCByZWNlaXZlZF9mbG93X2NvbnRyb2xzWzBdLnNlbmRfcXVvdGEpCi0g
ICAgICAgICMgUmVwbGVuaXNobWVudCBmb3IgJ0dvb2RieWUnICsgMQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKDgsIHJlY2VpdmVkX2Zsb3dfY29udHJvbHNbMV0uc2VuZF9xdW90YSkKLQotICAg
IGRlZiB0ZXN0X25vX3NlbmRfcXVvdGFfb25fc2VydmVyKHNlbGYpOgotICAgICAgICByZXF1ZXN0
ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tE
aXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVz
dCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBtdXhf
aGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxf
U0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5fSU5JVElB
TF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtlID0gX2NyZWF0
ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScvZWNobycpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVl
c3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFu
bmVsX2lkPTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNv
ZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRf
Y2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMo
Ci0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdl
PSdIZWxsb1dvcmxkJykpCi0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygK
LSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTEsIG1lc3NhZ2U9
J0dvb2RieWUnKSkKLQotICAgICAgICAjIEp1c3Qgd2FpdCBmb3IgMSBzZWMgc28gdGhhdCB0aGUg
c2VydmVyIGF0dGVtcHRzIHRvIGVjaG8gYmFjawotICAgICAgICAjICdIZWxsb1dvcmxkJy4KLSAg
ICAgICAgc2VsZi5hc3NlcnRGYWxzZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91
dD0xKSkKLQotICAgICAgICAjIE5vIG1lc3NhZ2Ugc2hvdWxkIGJlIHNlbnQgb24gY2hhbm5lbCAy
LgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX21lc3NhZ2VzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAyKQotCi0gICAgZGVmIHRlc3Rfbm9fc2VuZF9xdW90YV9vbl9z
ZXJ2ZXJfZm9yX3Blcm1lc3NhZ2VfZXh0cmFfY29zdChzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9
IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9NdXhNb2NrRGlz
cGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJlcXVlc3Qs
IGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAgICAgICAgbXV4X2hh
bmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05VTUJFUl9PRl9DSEFOTkVMX1NM
T1RTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXguX0lOSVRJQUxf
UVVPVEFfRk9SX0NMSUVOVCkKLQotICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSA9IF9jcmVhdGVf
cmVxdWVzdF9oZWFkZXIocGF0aD0nL2VjaG8nKQotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0
ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5l
bF9pZD0yLCBlbmNvZGluZz0wLAotICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2U9ZW5jb2Rl
ZF9oYW5kc2hha2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRkX2No
YW5uZWxfcmVxdWVzdCkKLQotICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3JlYXRlX2Zsb3dfY29u
dHJvbF9mcmFtZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTYpCi0gICAgICAgIHJlcXVlc3Qu
Y29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotICAgICAgICByZXF1ZXN0LmNvbm5l
Y3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5u
ZWxfaWQ9MiwgbWVzc2FnZT0nSGVsbG8nKSkKLSAgICAgICAgIyBSZXBsZW5pc2ggb25seSBsZW4o
J1dvcmxkJykgYnl0ZXMuCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250
cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9NSkKLSAgICAgICAgcmVxdWVzdC5j
b25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0gICAgICAgICMgU2VydmVyIHNob3Vs
ZCBub3QgY2FsbGJhY2sgZm9yIHRoaXMgbWVzc2FnZS4KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0
aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVs
X2lkPTIsIG1lc3NhZ2U9J1dvcmxkJykpCi0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1
dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTEs
IG1lc3NhZ2U9J0dvb2RieWUnKSkKLQotICAgICAgICAjIEp1c3Qgd2FpdCBmb3IgMSBzZWMgc28g
dGhhdCB0aGUgc2VydmVyIGF0dGVtcHRzIHRvIGVjaG8gYmFjawotICAgICAgICAjICdXb3JsZCcu
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRp
bWVvdXQ9MSkpCi0KLSAgICAgICAgIyBPbmx5IG9uZSBtZXNzYWdlIHNob3VsZCBiZSBzZW50IG9u
IGNoYW5uZWwgMi4KLSAgICAgICAgbWVzc2FnZXMgPSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dy
aXR0ZW5fbWVzc2FnZXMoMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0hlbGxvJ10sIG1l
c3NhZ2VzKQotCi0gICAgZGVmIHRlc3RfcXVvdGFfdmlvbGF0aW9uX2J5X2NsaWVudChzZWxmKToK
LSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0
Y2hlciA9IF9NdXhNb2NrRGlzcGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9N
dXhIYW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0
KCkKLSAgICAgICAgbXV4X2hhbmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05V
TUJFUl9PRl9DSEFOTkVMX1NMT1RTLCAwKQotCi0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtlID0g
X2NyZWF0ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScvZWNobycpCi0gICAgICAgIGFkZF9jaGFubmVs
X3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAg
ICBjaGFubmVsX2lkPTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFr
ZT1lbmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRl
cyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRf
Ynl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLCBt
ZXNzYWdlPSdIZWxsb1dvcmxkJykpCi0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9i
eXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTEsIG1l
c3NhZ2U9J0dvb2RieWUnKSkKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIu
d2FpdF91bnRpbF9kb25lKHRpbWVvdXQ9MikpCi0KLSAgICAgICAgY29udHJvbF9ibG9ja3MgPSBy
ZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29udHJvbF9ibG9ja3MoKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKDUsIGxlbihjb250cm9sX2Jsb2NrcykpCi0gICAgICAgIGRyb3BfY2hh
bm5lbCA9IG5leHQoCi0gICAgICAgICAgICBiIGZvciBiIGluIGNvbnRyb2xfYmxvY2tzCi0gICAg
ICAgICAgICBpZiBiLm9wY29kZSA9PSBtdXguX01VWF9PUENPREVfRFJPUF9DSEFOTkVMKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKG11eC5fRFJPUF9DT0RFX1NFTkRfUVVPVEFfVklPTEFUSU9O
LAotICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3BfY2hhbm5lbC5kcm9wX2NvZGUpCi0KLSAg
ICBkZWYgdGVzdF9jb25zdW1lX3F1b3RhX2VtcHR5X21lc3NhZ2Uoc2VsZik6Ci0gICAgICAgIHJl
cXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAgIGRpc3BhdGNoZXIgPSBfTXV4
TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4SGFuZGxlcihy
ZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0gICAgICAg
ICMgQ2xpZW50IGhhcyAxIGJ5dGUgcXVvdGEuCi0gICAgICAgIG11eF9oYW5kbGVyLmFkZF9jaGFu
bmVsX3Nsb3RzKG11eC5fSU5JVElBTF9OVU1CRVJfT0ZfQ0hBTk5FTF9TTE9UUywgMSkKLQotICAg
ICAgICBlbmNvZGVkX2hhbmRzaGFrZSA9IF9jcmVhdGVfcmVxdWVzdF9oZWFkZXIocGF0aD0nL2Vj
aG8nKQotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9y
ZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5lbF9pZD0yLCBlbmNvZGluZz0wLAotICAg
ICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2U9ZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgICAgIHJl
cXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkKLQotICAgICAg
ICBmbG93X2NvbnRyb2wgPSBfY3JlYXRlX2Zsb3dfY29udHJvbF9mcmFtZShjaGFubmVsX2lkPTIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxl
bmlzaGVkX3F1b3RhPTIpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxv
d19jb250cm9sKQotICAgICAgICAjIFNlbmQgYW4gZW1wdHkgbWVzc2FnZS4gUHl3ZWJzb2NrZXQg
YWx3YXlzIHJlcGxlbmlzaGVzIDEgYnl0ZSBxdW90YQotICAgICAgICAjIGZvciBlbXB0eSBtZXNz
YWdlCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBf
Y3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPScnKSkKLQotICAgICAg
ICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dp
Y2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MSwgbWVzc2FnZT0nR29vZGJ5ZScpKQotICAgICAgICAjIFRo
aXMgbWVzc2FnZSB2aW9sYXRlcyBxdW90YSBvbiBjaGFubmVsIGlkIDIuCi0gICAgICAgIHJlcXVl
c3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJh
bWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGRpc3BhdGNoZXIuY2hhbm5lbF9ldmVudHNbMl0ubWVz
c2FnZXMpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLCBkaXNwYXRjaGVyLmNoYW5uZWxf
ZXZlbnRzWzJdLm1lc3NhZ2VzWzBdKQotCi0gICAgICAgIHJlY2VpdmVkX2Zsb3dfY29udHJvbHMg
PSBbCi0gICAgICAgICAgICBiIGZvciBiIGluIHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRl
bl9jb250cm9sX2Jsb2NrcygpCi0gICAgICAgICAgICBpZiBiLm9wY29kZSA9PSBtdXguX01VWF9P
UENPREVfRkxPV19DT05UUk9MIGFuZCBiLmNoYW5uZWxfaWQgPT0gMl0KLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgxLCBsZW4ocmVjZWl2ZWRfZmxvd19jb250cm9scykpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoMSwgcmVjZWl2ZWRfZmxvd19jb250cm9sc1swXS5zZW5kX3F1b3RhKQotCi0g
ICAgICAgIGRyb3BfY2hhbm5lbCA9IG5leHQoCi0gICAgICAgICAgICBiIGZvciBiIGluIHJlcXVl
c3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9jb250cm9sX2Jsb2NrcygpCi0gICAgICAgICAgICBp
ZiBiLm9wY29kZSA9PSBtdXguX01VWF9PUENPREVfRFJPUF9DSEFOTkVMKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKDIsIGRyb3BfY2hhbm5lbC5jaGFubmVsX2lkKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKG11eC5fRFJPUF9DT0RFX1NFTkRfUVVPVEFfVklPTEFUSU9OLAotICAgICAgICAg
ICAgICAgICAgICAgICAgIGRyb3BfY2hhbm5lbC5kcm9wX2NvZGUpCi0KLSAgICBkZWYgdGVzdF9j
b25zdW1lX3F1b3RhX2ZyYWdtZW50ZWRfbWVzc2FnZShzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9
IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9NdXhNb2NrRGlz
cGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJlcXVlc3Qs
IGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAgICAgICAgIyBDbGll
bnQgaGFzIGxlbignSGVsbG8nKSArIGxlbignR29vZGJ5ZScpICsgMiBieXRlcyBxdW90YS4KLSAg
ICAgICAgbXV4X2hhbmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05VTUJFUl9P
Rl9DSEFOTkVMX1NMT1RTLCAxNCkKLQotICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSA9IF9jcmVh
dGVfcmVxdWVzdF9oZWFkZXIocGF0aD0nL2VjaG8nKQotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1
ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hh
bm5lbF9pZD0yLCBlbmNvZGluZz0wLAotICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2U9ZW5j
b2RlZF9oYW5kc2hha2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRk
X2NoYW5uZWxfcmVxdWVzdCkKLQotICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3JlYXRlX2Zsb3df
Y29udHJvbF9mcmFtZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTYpCi0gICAgICAgIHJlcXVl
c3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotICAgICAgICByZXF1ZXN0LmNv
bm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNo
YW5uZWxfaWQ9MiwgbWVzc2FnZT0nSGUnLCBmaW49RmFsc2UsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb3Bjb2RlPWNvbW1vbi5PUENPREVfVEVYVCkpCi0gICAgICAgIHJlcXVl
c3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJh
bWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPSdsbG8nLCBmaW49VHJ1ZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvcGNvZGU9Y29tbW9uLk9QQ09ERV9DT05USU5VQVRJT04pKQot
Ci0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3Jl
YXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0xLCBtZXNzYWdlPSdHb29kYnllJykpCi0gICAg
ICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xv
Z2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQot
Ci0gICAgICAgIG1lc3NhZ2VzID0gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX21lc3Nh
Z2VzKDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydIZWxsbyddLCBtZXNzYWdlcykKLQot
ICAgIGRlZiB0ZXN0X2ZyYWdtZW50ZWRfY29udHJvbF9tZXNzYWdlKHNlbGYpOgotICAgICAgICBy
ZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011
eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIo
cmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAg
ICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NI
QU5ORUxfU0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5f
SU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtlID0g
X2NyZWF0ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScvcGluZycpCi0gICAgICAgIGFkZF9jaGFubmVs
X3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAg
ICBjaGFubmVsX2lkPTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFr
ZT1lbmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRl
cyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgICMgUmVwbGVuaXNoIHRvdGFsIDYgYnl0
ZXMgaW4gMyBGbG93Q29udHJvbHMuCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxv
d19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9MSkKLSAgICAgICAgcmVx
dWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAgICAgZmxvd19j
b250cm9sID0gX2NyZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsZW5pc2hlZF9x
dW90YT0yKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJv
bCkKLQotICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3JlYXRlX2Zsb3dfY29udHJvbF9mcmFtZShj
aGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTMpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5w
dXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRf
Ynl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0xLCBt
ZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVy
LndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIG1lc3NhZ2VzID0gcmVxdWVz
dC5jb25uZWN0aW9uLmdldF93cml0dGVuX2NvbnRyb2xfbWVzc2FnZXMoMikKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChjb21tb24uT1BDT0RFX1BJTkcsIG1lc3NhZ2VzWzBdWydvcGNvZGUnXSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnUGluZyEnLCBtZXNzYWdlc1swXVsnbWVzc2FnZSdd
KQotCi0gICAgZGVmIHRlc3RfY2hhbm5lbF9zbG90X3Zpb2xhdGlvbl9ieV9jbGllbnQoc2VsZik6
Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAgIGRpc3Bh
dGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5f
TXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFy
dCgpCi0gICAgICAgIG11eF9oYW5kbGVyLmFkZF9jaGFubmVsX3Nsb3RzKHNsb3RzPTEsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRfcXVvdGE9bXV4Ll9JTklUSUFM
X1FVT1RBX0ZPUl9DTElFTlQpCi0KLSAgICAgICAgZW5jb2RlZF9oYW5kc2hha2UgPSBfY3JlYXRl
X3JlcXVlc3RfaGVhZGVyKHBhdGg9Jy9lY2hvJykKLSAgICAgICAgYWRkX2NoYW5uZWxfcmVxdWVz
dCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAgICAgICAgICAgIGNoYW5u
ZWxfaWQ9MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVuY29kZWRfaGFuZHNoYWtlPWVuY29k
ZWRfaGFuZHNoYWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGFkZF9j
aGFubmVsX3JlcXVlc3QpCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250
cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9NikKLSAgICAgICAgcmVxdWVzdC5j
b25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAgICAgcmVxdWVzdC5jb25u
ZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFu
bmVsX2lkPTIsIG1lc3NhZ2U9J0hlbGxvJykpCi0KLSAgICAgICAgIyBUaGlzIHJlcXVlc3Qgc2hv
dWxkIGJlIHJlamVjdGVkLgotICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSA9IF9jcmVhdGVfcmVx
dWVzdF9oZWFkZXIocGF0aD0nL2VjaG8nKQotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0g
X2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5lbF9p
ZD0zLCBlbmNvZGluZz0wLAotICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2U9ZW5jb2RlZF9o
YW5kc2hha2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRkX2NoYW5u
ZWxfcmVxdWVzdCkKLSAgICAgICAgZmxvd19jb250cm9sID0gX2NyZWF0ZV9mbG93X2NvbnRyb2xf
ZnJhbWUoY2hhbm5lbF9pZD0zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90YT02KQotICAgICAgICByZXF1ZXN0LmNvbm5l
Y3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJvbCkKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rp
b24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxf
aWQ9MywgbWVzc2FnZT0nSGVsbG8nKSkKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0
X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MSwg
bWVzc2FnZT0nR29vZGJ5ZScpKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVz
KAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwgbWVzc2Fn
ZT0nR29vZGJ5ZScpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0
X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtdLCBk
aXNwYXRjaGVyLmNoYW5uZWxfZXZlbnRzWzFdLm1lc3NhZ2VzKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKFsnSGVsbG8nXSwgZGlzcGF0Y2hlci5jaGFubmVsX2V2ZW50c1syXS5tZXNzYWdlcykK
LSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShkaXNwYXRjaGVyLmNoYW5uZWxfZXZlbnRzLmhhc19r
ZXkoMykpCi0gICAgICAgIGRyb3BfY2hhbm5lbCA9IG5leHQoCi0gICAgICAgICAgICBiIGZvciBi
IGluIHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9jb250cm9sX2Jsb2NrcygpCi0gICAg
ICAgICAgICBpZiBiLm9wY29kZSA9PSBtdXguX01VWF9PUENPREVfRFJPUF9DSEFOTkVMKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKDMsIGRyb3BfY2hhbm5lbC5jaGFubmVsX2lkKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKG11eC5fRFJPUF9DT0RFX05FV19DSEFOTkVMX1NMT1RfVklPTEFU
SU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3BfY2hhbm5lbC5kcm9wX2NvZGUpCi0K
LSAgICBkZWYgdGVzdF9xdW90YV9vdmVyZmxvd19ieV9jbGllbnQoc2VsZik6Ci0gICAgICAgIHJl
cXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAgIGRpc3BhdGNoZXIgPSBfTXV4
TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4SGFuZGxlcihy
ZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0gICAgICAg
IG11eF9oYW5kbGVyLmFkZF9jaGFubmVsX3Nsb3RzKHNsb3RzPTEsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNlbmRfcXVvdGE9bXV4Ll9JTklUSUFMX1FVT1RBX0ZPUl9D
TElFTlQpCi0KLSAgICAgICAgZW5jb2RlZF9oYW5kc2hha2UgPSBfY3JlYXRlX3JlcXVlc3RfaGVh
ZGVyKHBhdGg9Jy9lY2hvJykKLSAgICAgICAgYWRkX2NoYW5uZWxfcmVxdWVzdCA9IF9jcmVhdGVf
YWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAgICAgICAgICAgIGNoYW5uZWxfaWQ9MiwgZW5j
b2Rpbmc9MCwKLSAgICAgICAgICAgIGVuY29kZWRfaGFuZHNoYWtlPWVuY29kZWRfaGFuZHNoYWtl
KQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVl
c3QpCi0gICAgICAgICMgUmVwbGVuaXNoIDB4N0ZGRkZGRkZGRkZGRkZGRiBieXRlcyB0d2ljZS4K
LSAgICAgICAgZmxvd19jb250cm9sID0gX2NyZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUoCi0gICAg
ICAgICAgICBjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90YT0weDdG
RkZGRkZGRkZGRkZGRkYpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxv
d19jb250cm9sKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3dfY29u
dHJvbCkKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAg
ICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MSwgbWVzc2FnZT0nR29vZGJ5ZScp
KQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUo
dGltZW91dD0yKSkKLQotICAgICAgICBkcm9wX2NoYW5uZWwgPSBuZXh0KAotICAgICAgICAgICAg
YiBmb3IgYiBpbiByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29udHJvbF9ibG9ja3Mo
KQotICAgICAgICAgICAgaWYgYi5vcGNvZGUgPT0gbXV4Ll9NVVhfT1BDT0RFX0RST1BfQ0hBTk5F
TCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBkcm9wX2NoYW5uZWwuY2hhbm5lbF9pZCkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdXguX0RST1BfQ09ERV9TRU5EX1FVT1RBX09WRVJG
TE9XLAotICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3BfY2hhbm5lbC5kcm9wX2NvZGUpCi0K
LSAgICBkZWYgdGVzdF9pbnZhbGlkX2VuY2Fwc3VsYXRlZF9tZXNzYWdlKHNlbGYpOgotICAgICAg
ICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0g
X011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRs
ZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotCi0g
ICAgICAgIGZpcnN0X2J5dGUgPSAobXV4Ll9NVVhfT1BDT0RFX0FERF9DSEFOTkVMX1JFUVVFU1Qg
PDwgNSkKLSAgICAgICAgYmxvY2sgPSAoY2hyKGZpcnN0X2J5dGUpICsKLSAgICAgICAgICAgICAg
ICAgbXV4Ll9lbmNvZGVfY2hhbm5lbF9pZCgxKSArCi0gICAgICAgICAgICAgICAgIG11eC5fZW5j
b2RlX251bWJlcigwKSkKLSAgICAgICAgcGF5bG9hZCA9IG11eC5fZW5jb2RlX2NoYW5uZWxfaWQo
bXV4Ll9DT05UUk9MX0NIQU5ORUxfSUQpICsgYmxvY2sKLSAgICAgICAgdGV4dF9mcmFtZSA9IGNy
ZWF0ZV9iaW5hcnlfZnJhbWUocGF5bG9hZCwgb3Bjb2RlPWNvbW1vbi5PUENPREVfVEVYVCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFzaz1UcnVlKQotICAgICAg
ICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKHRleHRfZnJhbWUpCi0KLSAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0g
ICAgICAgIGRyb3BfY2hhbm5lbCA9IG5leHQoCi0gICAgICAgICAgICBiIGZvciBiIGluIHJlcXVl
c3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9jb250cm9sX2Jsb2NrcygpCi0gICAgICAgICAgICBp
ZiBiLm9wY29kZSA9PSBtdXguX01VWF9PUENPREVfRFJPUF9DSEFOTkVMKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKG11eC5fRFJPUF9DT0RFX0lOVkFMSURfRU5DQVBTVUxBVElOR19NRVNTQUdF
LAotICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3BfY2hhbm5lbC5kcm9wX2NvZGUpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLlNUQVRVU19JTlRFUk5BTF9FTkRQT0lOVF9FUlJP
UiwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24uc2VydmVyX2Ns
b3NlX2NvZGUpCi0KLSAgICBkZWYgdGVzdF9jaGFubmVsX2lkX3RydW5jYXRlZChzZWxmKToKLSAg
ICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hl
ciA9IF9NdXhNb2NrRGlzcGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhI
YW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkK
LQotICAgICAgICAjIFRoZSBsYXN0IGJ5dGUgb2YgdGhlIGNoYW5uZWwgaWQgaXMgbWlzc2luZy4K
LSAgICAgICAgZnJhbWUgPSBjcmVhdGVfYmluYXJ5X2ZyYW1lKCdceDgwJywgbWFzaz1UcnVlKQot
ICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZyYW1lKQotCi0gICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQot
ICAgICAgICBkcm9wX2NoYW5uZWwgPSBuZXh0KAotICAgICAgICAgICAgYiBmb3IgYiBpbiByZXF1
ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29udHJvbF9ibG9ja3MoKQotICAgICAgICAgICAg
aWYgYi5vcGNvZGUgPT0gbXV4Ll9NVVhfT1BDT0RFX0RST1BfQ0hBTk5FTCkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChtdXguX0RST1BfQ09ERV9DSEFOTkVMX0lEX1RSVU5DQVRFRCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICBkcm9wX2NoYW5uZWwuZHJvcF9jb2RlKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGNvbW1vbi5TVEFUVVNfSU5URVJOQUxfRU5EUE9JTlRfRVJST1IsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnNlcnZlcl9jbG9zZV9jb2Rl
KQotCi0gICAgZGVmIHRlc3RfaW5uZXJfZnJhbWVfdHJ1bmNhdGVkKHNlbGYpOgotICAgICAgICBy
ZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011
eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIo
cmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotCi0gICAg
ICAgICMgSnVzdCBjb250YWluIGNoYW5uZWwgaWQgMS4KLSAgICAgICAgZnJhbWUgPSBjcmVhdGVf
YmluYXJ5X2ZyYW1lKCdceDAxJywgbWFzaz1UcnVlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rp
b24ucHV0X2J5dGVzKGZyYW1lKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxl
ci53YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgICAgICBkcm9wX2NoYW5uZWwgPSBu
ZXh0KAotICAgICAgICAgICAgYiBmb3IgYiBpbiByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0
ZW5fY29udHJvbF9ibG9ja3MoKQotICAgICAgICAgICAgaWYgYi5vcGNvZGUgPT0gbXV4Ll9NVVhf
T1BDT0RFX0RST1BfQ0hBTk5FTCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdXguX0RST1Bf
Q09ERV9FTkNBUFNVTEFURURfRlJBTUVfSVNfVFJVTkNBVEVELAotICAgICAgICAgICAgICAgICAg
ICAgICAgIGRyb3BfY2hhbm5lbC5kcm9wX2NvZGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Y29tbW9uLlNUQVRVU19JTlRFUk5BTF9FTkRQT0lOVF9FUlJPUiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24uc2VydmVyX2Nsb3NlX2NvZGUpCi0KLSAgICBkZWYg
dGVzdF91bmtub3duX211eF9vcGNvZGUoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRl
X21vY2tfcmVxdWVzdCgpCi0gICAgICAgIGRpc3BhdGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNoZXIo
KQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNwYXRj
aGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0KLSAgICAgICAgIyBVbmRlZmluZWQg
b3Bjb2RlIDUKLSAgICAgICAgZnJhbWUgPSBjcmVhdGVfYmluYXJ5X2ZyYW1lKCdceDAwXHhhMCcs
IG1hc2s9VHJ1ZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmcmFtZSkK
LQotICAgICAgICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRp
bWVvdXQ9MikpCi0KLSAgICAgICAgZHJvcF9jaGFubmVsID0gbmV4dCgKLSAgICAgICAgICAgIGIg
Zm9yIGIgaW4gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX2NvbnRyb2xfYmxvY2tzKCkK
LSAgICAgICAgICAgIGlmIGIub3Bjb2RlID09IG11eC5fTVVYX09QQ09ERV9EUk9QX0NIQU5ORUwp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXV4Ll9EUk9QX0NPREVfVU5LTk9XTl9NVVhfT1BD
T0RFLAotICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3BfY2hhbm5lbC5kcm9wX2NvZGUpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLlNUQVRVU19JTlRFUk5BTF9FTkRQT0lOVF9F
UlJPUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24uc2VydmVy
X2Nsb3NlX2NvZGUpCi0KLSAgICBkZWYgdGVzdF9pbnZhbGlkX211eF9jb250cm9sX2Jsb2NrKHNl
bGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBk
aXNwYXRjaGVyID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBt
dXguX011eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIu
c3RhcnQoKQotCi0gICAgICAgICMgRHJvcENoYW5uZWwgY29udGFpbnMgMSBieXRlIHJlYXNvbgot
ICAgICAgICBmcmFtZSA9IGNyZWF0ZV9iaW5hcnlfZnJhbWUoJ1x4MDBceDYwXHgwMFx4MDFceDAw
JywgbWFzaz1UcnVlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZyYW1l
KQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUo
dGltZW91dD0yKSkKLQotICAgICAgICBkcm9wX2NoYW5uZWwgPSBuZXh0KAotICAgICAgICAgICAg
YiBmb3IgYiBpbiByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29udHJvbF9ibG9ja3Mo
KQotICAgICAgICAgICAgaWYgYi5vcGNvZGUgPT0gbXV4Ll9NVVhfT1BDT0RFX0RST1BfQ0hBTk5F
TCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdXguX0RST1BfQ09ERV9JTlZBTElEX01VWF9D
T05UUk9MX0JMT0NLLAotICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3BfY2hhbm5lbC5kcm9w
X2NvZGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLlNUQVRVU19JTlRFUk5BTF9F
TkRQT0lOVF9FUlJPUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rp
b24uc2VydmVyX2Nsb3NlX2NvZGUpCi0KLSAgICBkZWYgdGVzdF9wZXJtZXNzYWdlX2RlZmxhdGUo
c2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAg
IGRpc3BhdGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9
IG11eC5fTXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxl
ci5zdGFydCgpCi0gICAgICAgIG11eF9oYW5kbGVyLmFkZF9jaGFubmVsX3Nsb3RzKG11eC5fSU5J
VElBTF9OVU1CRVJfT0ZfQ0hBTk5FTF9TTE9UUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbXV4Ll9JTklUSUFMX1FVT1RBX0ZPUl9DTElFTlQpCi0KLSAgICAgICAgIyBF
bmFibGUgcGVybWVzc2FnZSBkZWZsYXRlIGV4dGVuc2lvbiBvbiBsb2dpY2FsIGNoYW5uZWwgMi4K
LSAgICAgICAgZXh0ZW5zaW9ucyA9IGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9O
Ci0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtlID0gX2NyZWF0ZV9yZXF1ZXN0X2hlYWRlcihwYXRo
PScvZWNobycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBleHRlbnNpb25zPWV4dGVuc2lvbnMpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3Qg
PSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVs
X2lkPTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNvZGVk
X2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hh
bm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250
cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9MjApCi0gICAgICAgIHJlcXVlc3Qu
Y29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAgICMgU2VuZCBjb21w
cmVzc2VkICdIZWxsbycgdHdpY2UuCi0gICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVzc29i
aigKLSAgICAgICAgICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVE
LCAtemxpYi5NQVhfV0JJVFMpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8xID0gY29tcHJlc3Mu
Y29tcHJlc3MoJ0hlbGxvJykKLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbzEgKz0gY29tcHJlc3Mu
Zmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8xID0gY29t
cHJlc3NlZF9oZWxsbzFbOi00XQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVz
KAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwgbWVzc2Fn
ZT1jb21wcmVzc2VkX2hlbGxvMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
c3YxPVRydWUpKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvMiA9IGNvbXByZXNzLmNvbXByZXNz
KCdIZWxsbycpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8yICs9IGNvbXByZXNzLmZsdXNoKHps
aWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvMiA9IGNvbXByZXNzZWRf
aGVsbG8yWzotNF0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAg
ICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIsIG1lc3NhZ2U9Y29tcHJl
c3NlZF9oZWxsbzIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnN2MT1UcnVl
KSkKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAg
X2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MSwgbWVzc2FnZT0nR29vZGJ5ZScpKQot
ICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0
ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwgbWVzc2FnZT0nR29vZGJ5ZScpKQotCi0gICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91dD0y
KSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnSGVsbG8nLCAnSGVsbG8nXSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaGVyLmNoYW5uZWxfZXZlbnRzWzJdLm1lc3NhZ2Vz
KQotICAgICAgICAjIFdyaXR0ZW4gJ0hlbGxvJ3Mgc2hvdWxkIGJlIGNvbXByZXNzZWQuCi0gICAg
ICAgIG1lc3NhZ2VzID0gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX21lc3NhZ2VzKDIp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgbGVuKG1lc3NhZ2VzKSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChjb21wcmVzc2VkX2hlbGxvMSwgbWVzc2FnZXNbMF0pCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoY29tcHJlc3NlZF9oZWxsbzIsIG1lc3NhZ2VzWzFdKQotCi0KLSAgICBk
ZWYgdGVzdF9wZXJtZXNzYWdlX2RlZmxhdGVfZnJhZ21lbnRlZF9tZXNzYWdlKHNlbGYpOgotICAg
ICAgICBleHRlbnNpb25zID0gY29tbW9uLnBhcnNlX2V4dGVuc2lvbnMoCi0gICAgICAgICAgICBj
b21tb24uUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTikKLSAgICAgICAgcmVxdWVzdCA9IF9j
cmVhdGVfbW9ja19yZXF1ZXN0KAotICAgICAgICAgICAgbG9naWNhbF9jaGFubmVsX2V4dGVuc2lv
bnM9ZXh0ZW5zaW9ucykKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9NdXhNb2NrRGlzcGF0Y2hlcigp
Ci0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNo
ZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAgICAgICAgbXV4X2hhbmRsZXIuYWRk
X2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05VTUJFUl9PRl9DSEFOTkVMX1NMT1RTLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXguX0lOSVRJQUxfUVVPVEFfRk9S
X0NMSUVOVCkKLQotICAgICAgICAjIFNlbmQgY29tcHJlc3NlZCAnSGVsbG9IZWxsb0hlbGxvJyBh
cyBmcmFnbWVudGVkIG1lc3NhZ2UuCi0gICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVzc29i
aigKLSAgICAgICAgICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVE
LCAtemxpYi5NQVhfV0JJVFMpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzcy5j
b21wcmVzcygnSGVsbG9IZWxsb0hlbGxvJykKLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyArPSBj
b21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKLSAgICAgICAgY29tcHJlc3NlZF9oZWxs
byA9IGNvbXByZXNzZWRfaGVsbG9bOi00XQotCi0gICAgICAgIG0gPSBsZW4oY29tcHJlc3NlZF9o
ZWxsbykgLyAyCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAg
ICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0xLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9Y29tcHJlc3NlZF9oZWxsb1s6bV0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluPUZhbHNlLCByc3YxPVRydWUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Bjb2RlPWNvbW1vbi5PUENPREVfVEVYVCkpCi0g
ICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRl
X2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0xLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1lc3NhZ2U9Y29tcHJlc3NlZF9oZWxsb1ttOl0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZmluPVRydWUsIHJzdjE9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb3Bjb2RlPWNvbW1vbi5PUENPREVfQ09OVElOVUFUSU9OKSkKLQotICAg
ICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9s
b2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MSwgbWVzc2FnZT0nR29vZGJ5ZScpKQotCi0gICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkK
LQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnSGVsbG9IZWxsb0hlbGxvJ10sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgZGlzcGF0Y2hlci5jaGFubmVsX2V2ZW50c1sxXS5tZXNzYWdlcykK
LSAgICAgICAgbWVzc2FnZXMgPSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fbWVzc2Fn
ZXMoMSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4obWVzc2FnZXMpKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGNvbXByZXNzZWRfaGVsbG8sIG1lc3NhZ2VzWzBdKQotCi0gICAg
ZGVmIHRlc3RfcmVjZWl2ZV9iYWRfZnJhZ21lbnRlZF9tZXNzYWdlKHNlbGYpOgotICAgICAgICBy
ZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011
eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIo
cmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAg
ICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NI
QU5ORUxfU0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5f
SU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtlID0g
X2NyZWF0ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScvZWNobycpCi0gICAgICAgIGFkZF9jaGFubmVs
X3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAg
ICBjaGFubmVsX2lkPTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFr
ZT1lbmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRl
cyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgICMgU2VuZCBhIGZyYW1lIHdpdGggZmlu
PUZhbHNlLCBhbmQgdGhlbiBzZW5kIGEgZnJhbWUgd2l0aAotICAgICAgICAjIG9wY29kZT1URVhU
IChub3QgQ09OVElOVUFUSU9OKS4gTG9naWNhbCBjaGFubmVsIDIgc2hvdWxkIGJlIGRyb3BwZWQu
Ci0gICAgICAgIGZyYW1lMSA9IF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdIZWxsbyAnLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluPUZhbHNlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Bjb2RlPWNvbW1vbi5PUENPREVfVEVY
VCkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmcmFtZTEpCi0gICAgICAg
IGZyYW1lMiA9IF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdXb3JsZCEnLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluPVRydWUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvcGNvZGU9Y29tbW9uLk9QQ09ERV9URVhUKQotICAgICAg
ICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZyYW1lMikKLQotICAgICAgICBlbmNvZGVk
X2hhbmRzaGFrZSA9IF9jcmVhdGVfcmVxdWVzdF9oZWFkZXIocGF0aD0nL2VjaG8nKQotICAgICAg
ICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1l
KAotICAgICAgICAgICAgY2hhbm5lbF9pZD0zLCBlbmNvZGluZz0wLAotICAgICAgICAgICAgZW5j
b2RlZF9oYW5kc2hha2U9ZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVj
dGlvbi5wdXRfYnl0ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkKLQotICAgICAgICAjIFNlbmQgYSBm
cmFtZSB3aXRoIG9wY29kZT1DT05USU5VQVRJT04gd2l0aG91dCBhIHByZWNlZGluZyBmcmFtZQot
ICAgICAgICAjIHRoZSBmaW4gb2Ygd2hpY2ggaXMgbm90IHNldC4gTG9naWNhbCBjaGFubmVsIDMg
c2hvdWxkIGJlIGRyb3BwZWQuCi0gICAgICAgIGZyYW1lMyA9IF9jcmVhdGVfbG9naWNhbF9mcmFt
ZShjaGFubmVsX2lkPTMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
ZXNzYWdlPSdIZWxsbycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
aW49VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wY29kZT1j
b21tb24uT1BDT0RFX0NPTlRJTlVBVElPTikKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1
dF9ieXRlcyhmcmFtZTMpCi0KLSAgICAgICAgZW5jb2RlZF9oYW5kc2hha2UgPSBfY3JlYXRlX3Jl
cXVlc3RfaGVhZGVyKHBhdGg9Jy9lY2hvJykKLSAgICAgICAgYWRkX2NoYW5uZWxfcmVxdWVzdCA9
IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAgICAgICAgICAgIGNoYW5uZWxf
aWQ9NCwgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVuY29kZWRfaGFuZHNoYWtlPWVuY29kZWRf
aGFuZHNoYWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGFkZF9jaGFu
bmVsX3JlcXVlc3QpCi0KLSAgICAgICAgIyBTZW5kIGEgZnJhbWUgd2l0aCBvcGNvZGU9UElORyBh
bmQgZmluPUZhbHNlLCBhbmQgdGhlbiBzZW5kIGEgZnJhbWUKLSAgICAgICAgIyB3aXRoIG9wY29k
ZT1URVhUIChub3QgQ09OVElOVUFUSU9OKS4gTG9naWNhbCBjaGFubmVsIDQgc2hvdWxkIGJlCi0g
ICAgICAgICMgZHJvcHBlZC4KLSAgICAgICAgZnJhbWU0ID0gX2NyZWF0ZV9sb2dpY2FsX2ZyYW1l
KGNoYW5uZWxfaWQ9NCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1l
c3NhZ2U9J1BpbmcnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlu
PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Bjb2RlPWNv
bW1vbi5PUENPREVfUElORykKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhm
cmFtZTQpCi0gICAgICAgIGZyYW1lNSA9IF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lk
PTQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdIZWxs
bycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW49VHJ1ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wY29kZT1jb21tb24uT1BDT0RF
X1RFWFQpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZnJhbWU1KQotCi0g
ICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRl
X2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0xLCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIp
KQotCi0gICAgICAgIGRyb3BfY2hhbm5lbHMgPSBbCi0gICAgICAgICAgICBiIGZvciBiIGluIHJl
cXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9jb250cm9sX2Jsb2NrcygpCi0gICAgICAgICAg
ICBpZiBiLm9wY29kZSA9PSBtdXguX01VWF9PUENPREVfRFJPUF9DSEFOTkVMXQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKDMsIGxlbihkcm9wX2NoYW5uZWxzKSkKLSAgICAgICAgZm9yIGQgaW4g
ZHJvcF9jaGFubmVsczoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXV4Ll9EUk9QX0NP
REVfQkFEX0ZSQUdNRU5UQVRJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQuZHJv
cF9jb2RlKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdW5pdHRlc3QubWFp
bigpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9z
dHJlYW0ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9zdHJlYW0ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDgxYWNmZWIwNDhkM2IyMDMyYTc5NDhjZmEyYWRlYTdjZTY0Zjk1YWUuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3Rf
c3RyZWFtLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYg
cHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJl
c2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlz
dHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJUZXN0cyBmb3Igc3RyZWFtIG1vZHVs
ZS4iIiIKLQotCi1pbXBvcnQgdW5pdHRlc3QKLQotaW1wb3J0IHNldF9zeXNfcGF0aCAgIyBVcGRh
dGUgc3lzLnBhdGggdG8gbG9jYXRlIG1vZF9weXdlYnNvY2tldCBtb2R1bGUuCi0KLWZyb20gbW9k
X3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBz
dHJlYW0KLQotCi1jbGFzcyBTdHJlYW1UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAiIiJB
IHVuaXR0ZXN0IGZvciBzdHJlYW0gbW9kdWxlLiIiIgotCi0gICAgZGVmIHRlc3RfY3JlYXRlX2hl
YWRlcihzZWxmKToKLSAgICAgICAgIyBtb3JlLCByc3YxLCAuLi4sIHJzdjQgYXJlIGFsbCB0cnVl
Ci0gICAgICAgIGhlYWRlciA9IHN0cmVhbS5jcmVhdGVfaGVhZGVyKGNvbW1vbi5PUENPREVfVEVY
VCwgMSwgMSwgMSwgMSwgMSwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHhmMVx4ODEn
LCBoZWFkZXIpCi0KLSAgICAgICAgIyBNYXhpbXVtIHBheWxvYWQgc2l6ZQotICAgICAgICBoZWFk
ZXIgPSBzdHJlYW0uY3JlYXRlX2hlYWRlcigKLSAgICAgICAgICAgIGNvbW1vbi5PUENPREVfVEVY
VCwgKDEgPDwgNjMpIC0gMSwgMCwgMCwgMCwgMCwgMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgnXHgwMVx4N2ZceDdmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZicsIGhlYWRlcikKLQot
ICAgICAgICAjIEludmFsaWQgb3Bjb2RlIDB4MTAKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMo
VmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtLmNyZWF0ZV9oZWFk
ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAsIDAsIDAsIDAsIDAsIDAsIDApCi0K
LSAgICAgICAgIyBJbnZhbGlkIHZhbHVlIDB4ZiBwYXNzZWQgdG8gbW9yZSBwYXJhbWV0ZXIKLSAg
ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RyZWFtLmNyZWF0ZV9oZWFkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bW1vbi5PUENPREVfVEVYVCwgMCwgMHhmLCAwLCAwLCAwLCAwKQotCi0gICAgICAgICMgVG9vIGxv
bmcgcGF5bG9hZF9sZW5ndGgKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtLmNyZWF0ZV9oZWFkZXIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbW1vbi5PUENPREVfVEVYVCwgMSA8PCA2MywgMCwgMCwgMCwg
MCwgMCkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHVuaXR0ZXN0Lm1haW4o
KQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3Rfc3Ry
ZWFtX2hpeGllNzUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9zdHJlYW1faGl4aWU3NS5weQpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2E5YWM3MTMwYjczMDRlYjkyZGJiYmMxNTMzYWE0MTU0
NWUwMjQ2ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29j
a2V0L3Rlc3QvdGVzdF9zdHJlYW1faGl4aWU3NS5weQorKysgL2Rldi9udWxsCkBAIC0xLDU5ICsw
LDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xl
IEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
IwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIi
VGVzdHMgZm9yIHN0cmVhbSBtb2R1bGUuIiIiCi0KLQotaW1wb3J0IHVuaXR0ZXN0Ci0KLWltcG9y
dCBzZXRfc3lzX3BhdGggICMgVXBkYXRlIHN5cy5wYXRoIHRvIGxvY2F0ZSBtb2RfcHl3ZWJzb2Nr
ZXQgbW9kdWxlLgotCi1mcm9tIG1vZF9weXdlYnNvY2tldC5zdHJlYW0gaW1wb3J0IFN0cmVhbUhp
eGllNzUKLWZyb20gdGVzdC50ZXN0X21zZ3V0aWwgaW1wb3J0IF9jcmVhdGVfcmVxdWVzdF9oaXhp
ZTc1Ci0KLQotY2xhc3MgU3RyZWFtSGl4aWU3NVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAg
ICIiIkEgdW5pdHRlc3QgZm9yIFN0cmVhbUhpeGllNzUgY2xhc3MuIiIiCi0KLSAgICBkZWYgdGVz
dF9wYXlsb2FkX2xlbmd0aChzZWxmKToKLSAgICAgICAgZm9yIGxlbmd0aCwgYnl0ZXMgaW4gKCgw
LCAnXHgwMCcpLCAoMHg3ZiwgJ1x4N2YnKSwgKDB4ODAsICdceDgxXHgwMCcpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKDB4MTIzNCwgJ1x4ODBceGE0XHgzNCcpKToKLSAgICAgICAg
ICAgIHRlc3Rfc3RyZWFtID0gU3RyZWFtSGl4aWU3NShfY3JlYXRlX3JlcXVlc3RfaGl4aWU3NShi
eXRlcykpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgICAgIGxl
bmd0aCwgdGVzdF9zdHJlYW0uX3JlYWRfcGF5bG9hZF9sZW5ndGhfaGl4aWU3NSgpKQotCi0KLWlm
IF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdW5pdHRlc3QubWFpbigpCi0KLQotIyB2aTpz
dHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdF91dGlsLnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90
ZXN0L3Rlc3RfdXRpbC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjRiYTNmNDc3
MzdhMzMxZWYwMzkwY2M2YjBjODFjMmQzNGE0MjgzMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdF91dGlsLnB5CisrKyAvZGV2L251
bGwKQEAgLTEsMjAxICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmln
aHQgMjAxMSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0j
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0KLQotIiIiVGVzdHMgZm9yIHV0aWwgbW9kdWxlLiIiIgotZnJvbSBfX2Z1dHVyZV9f
IGltcG9ydCBwcmludF9mdW5jdGlvbgotCi0KLWltcG9ydCBvcwotaW1wb3J0IHJhbmRvbQotaW1w
b3J0IHN5cwotaW1wb3J0IHVuaXR0ZXN0Ci0KLWltcG9ydCBzZXRfc3lzX3BhdGggICMgVXBkYXRl
IHN5cy5wYXRoIHRvIGxvY2F0ZSBtb2RfcHl3ZWJzb2NrZXQgbW9kdWxlLgotCi1mcm9tIG1vZF9w
eXdlYnNvY2tldCBpbXBvcnQgdXRpbAotCi0KLV9URVNUX0RBVEFfRElSID0gb3MucGF0aC5qb2lu
KG9zLnBhdGguc3BsaXQoX19maWxlX18pWzBdLCAndGVzdGRhdGEnKQotCi0KLWNsYXNzIFV0aWxU
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAiIiJBIHVuaXR0ZXN0IGZvciB1dGlsIG1vZHVs
ZS4iIiIKLQotICAgIGRlZiB0ZXN0X2dldF9zdGFja190cmFjZShzZWxmKToKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgnTm9uZVxuJywgdXRpbC5nZXRfc3RhY2tfdHJhY2UoKSkKLSAgICAgICAg
dHJ5OgotICAgICAgICAgICAgYSA9IDEgLyAwICAjIEludGVudGlvbmFsbHkgcmFpc2UgZXhjZXB0
aW9uLgotICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICAgICAgdHJhY2UgPSB1dGls
LmdldF9zdGFja190cmFjZSgpCi0gICAgICAgICAgICBzZWxmLmZhaWxVbmxlc3ModHJhY2Uuc3Rh
cnRzd2l0aCgnVHJhY2ViYWNrJykpCi0gICAgICAgICAgICBzZWxmLmZhaWxVbmxlc3ModHJhY2Uu
ZmluZCgnWmVyb0RpdmlzaW9uRXJyb3InKSAhPSAtMSkKLQotICAgIGRlZiB0ZXN0X3ByZXBlbmRf
bWVzc2FnZV90b19leGNlcHRpb24oc2VsZik6Ci0gICAgICAgIGV4YyA9IEV4Y2VwdGlvbignV29y
bGQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdXb3JsZCcsIHN0cihleGMpKQotICAgICAg
ICB1dGlsLnByZXBlbmRfbWVzc2FnZV90b19leGNlcHRpb24oJ0hlbGxvICcsIGV4YykKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVsbG8gV29ybGQnLCBzdHIoZXhjKSkKLQotICAgIGRlZiB0
ZXN0X2dldF9zY3JpcHRfaW50ZXJwKHNlbGYpOgotICAgICAgICBjeWd3aW5fcGF0aCA9ICdjOlxc
Y3lnd2luXFxiaW4nCi0gICAgICAgIGN5Z3dpbl9wZXJsID0gb3MucGF0aC5qb2luKGN5Z3dpbl9w
YXRoLCAncGVybCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgdXRpbC5nZXRfc2Ny
aXB0X2ludGVycCgKLSAgICAgICAgICAgIG9zLnBhdGguam9pbihfVEVTVF9EQVRBX0RJUiwgJ1JF
QURNRScpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCB1dGlsLmdldF9zY3JpcHRf
aW50ZXJwKAotICAgICAgICAgICAgb3MucGF0aC5qb2luKF9URVNUX0RBVEFfRElSLCAnUkVBRE1F
JyksIGN5Z3dpbl9wYXRoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnL3Vzci9iaW4vcGVy
bCAtd1QnLCB1dGlsLmdldF9zY3JpcHRfaW50ZXJwKAotICAgICAgICAgICAgb3MucGF0aC5qb2lu
KF9URVNUX0RBVEFfRElSLCAnaGVsbG8ucGwnKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Y3lnd2luX3BlcmwgKyAnIC13VCcsIHV0aWwuZ2V0X3NjcmlwdF9pbnRlcnAoCi0gICAgICAgICAg
ICBvcy5wYXRoLmpvaW4oX1RFU1RfREFUQV9ESVIsICdoZWxsby5wbCcpLCBjeWd3aW5fcGF0aCkp
Ci0KLSAgICBkZWYgdGVzdF9oZXhpZnkoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
JzYxIDdhIDQxIDVhIDMwIDM5IDIwIDA5IDBkIDBhIDAwIGZmJywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICB1dGlsLmhleGlmeSgnYXpBWjA5IFx0XHJcblx4MDBceGZmJykpCi0KLQotY2xhc3Mg
UmVwZWF0ZWRYb3JNYXNrZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAiIiJBIHVuaXR0
ZXN0IGZvciBSZXBlYXRlZFhvck1hc2tlciBjbGFzcy4iIiIKLQotICAgIGRlZiB0ZXN0X21hc2so
c2VsZik6Ci0gICAgICAgICMgU2FtcGxlIGlucHV0IGU2LDk3LGE1IGlzIFUrNjVlNSBpbiBVVEYt
OAotICAgICAgICBtYXNrZXIgPSB1dGlsLlJlcGVhdGVkWG9yTWFza2VyKCdceGZmXHhmZlx4ZmZc
eGZmJykKLSAgICAgICAgcmVzdWx0ID0gbWFza2VyLm1hc2soJ1x4ZTZceDk3XHhhNScpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4MTlceDY4XHg1YScsIHJlc3VsdCkKLQotICAgICAgICBt
YXNrZXIgPSB1dGlsLlJlcGVhdGVkWG9yTWFza2VyKCdceDAwXHgwMFx4MDBceDAwJykKLSAgICAg
ICAgcmVzdWx0ID0gbWFza2VyLm1hc2soJ1x4ZTZceDk3XHhhNScpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJ1x4ZTZceDk3XHhhNScsIHJlc3VsdCkKLQotICAgICAgICBtYXNrZXIgPSB1dGls
LlJlcGVhdGVkWG9yTWFza2VyKCdceGU2XHg5N1x4YTVceDIwJykKLSAgICAgICAgcmVzdWx0ID0g
bWFza2VyLm1hc2soJ1x4ZTZceDk3XHhhNScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4
MDBceDAwXHgwMCcsIHJlc3VsdCkKLQotICAgIGRlZiB0ZXN0X21hc2tfdHdpY2Uoc2VsZik6Ci0g
ICAgICAgIG1hc2tlciA9IHV0aWwuUmVwZWF0ZWRYb3JNYXNrZXIoJ1x4MDBceDdmXHhmZlx4MjAn
KQotICAgICAgICAjIG1hc2tbMF0sIG1hc2tbMV0sIC4uLiB3aWxsIGJlIHVzZWQuCi0gICAgICAg
IHJlc3VsdCA9IG1hc2tlci5tYXNrKCdceDAwXHgwMFx4MDBceDAwXHgwMCcpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJ1x4MDBceDdmXHhmZlx4MjBceDAwJywgcmVzdWx0KQotICAgICAgICAj
IG1hc2tbMl0sIG1hc2tbMF0sIC4uLiB3aWxsIGJlIHVzZWQgZm9yIHRoZSBuZXh0IGNhbGwuCi0g
ICAgICAgIHJlc3VsdCA9IG1hc2tlci5tYXNrKCdceDAwXHgwMFx4MDBceDAwXHgwMCcpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4N2ZceGZmXHgyMFx4MDBceDdmJywgcmVzdWx0KQotCi0g
ICAgZGVmIHRlc3RfbWFza19sYXJnZV9kYXRhKHNlbGYpOgotICAgICAgICBtYXNrZXIgPSB1dGls
LlJlcGVhdGVkWG9yTWFza2VyKCdtQVNrJykKLSAgICAgICAgb3JpZ2luYWwgPSAnJy5qb2luKFtj
aHIoaSAlIDI1NikgZm9yIGkgaW4geHJhbmdlKDEwMDApXSkKLSAgICAgICAgcmVzdWx0ID0gbWFz
a2VyLm1hc2sob3JpZ2luYWwpCi0gICAgICAgIGV4cGVjdGVkID0gJycuam9pbigKLSAgICAgICAg
ICAgICAgICBbY2hyKChpICUgMjU2KSBeIG9yZCgnbUFTaydbaSAlIDRdKSkgZm9yIGkgaW4geHJh
bmdlKDEwMDApXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgcmVzdWx0KQot
Ci0gICAgICAgIG1hc2tlciA9IHV0aWwuUmVwZWF0ZWRYb3JNYXNrZXIoJ01hU2snKQotICAgICAg
ICBmaXJzdF9wYXJ0ID0gJ1RoZSBXZWJTb2NrZXQgUHJvdG9jb2wgZW5hYmxlcyB0d28td2F5IGNv
bW11bmljYXRpb24uJwotICAgICAgICByZXN1bHQgPSBtYXNrZXIubWFzayhmaXJzdF9wYXJ0KQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgICAgICdceDE5XHQ2S1x4MWFc
eDA0MTgiXHgwMjhceDBlOUFceDAzXHgxOSJceDE1PFx4MDgiXHJzXHgwZSMnCi0gICAgICAgICAg
ICAgICAgJ1x4MDAxXHgwNyhceDEyc1x4MWY6XHgwZX5ceDFjLFx4MThzXHgwOCJceDBjPlx4MWUj
XHgwODBcbjknCi0gICAgICAgICAgICAgICAgJ1x4MDg8XHgwNWMnLAotICAgICAgICAgICAgICAg
IHJlc3VsdCkKLSAgICAgICAgc2Vjb25kX3BhcnQgPSAnSXQgaGFzIHR3byBwYXJ0czogYSBoYW5k
c2hha2UgYW5kIHRoZSBkYXRhIHRyYW5zZmVyLicKLSAgICAgICAgcmVzdWx0ID0gbWFza2VyLm1h
c2soc2Vjb25kX3BhcnQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICAg
ICAgIignSyVceDAwIEs5XHgxNjxLPVx4MDAhXHgxZj5bc1xubVx0Mlx4MDUpXHgxMjtcbiZceDA0
c1xuIyIKLSAgICAgICAgICAgICAgICAiXHgwNXNceDFmJVx4MDRzXHgwZixceDE1Mks5XHgxMzJc
eDA1Plx4MDc2XHgxOWMiLAotICAgICAgICAgICAgICAgIHJlc3VsdCkKLQotCi1kZWYgZ2V0X3Jh
bmRvbV9zZWN0aW9uKHNvdXJjZSwgbWluX251bV9jaHVua3MpOgotICAgIGNodW5rcyA9IFtdCi0g
ICAgYnl0ZXNfY2h1bmtlZCA9IDAKLQotICAgIHdoaWxlIGJ5dGVzX2NodW5rZWQgPCBsZW4oc291
cmNlKToKLSAgICAgICAgY2h1bmtfc2l6ZSA9IHJhbmRvbS5yYW5kaW50KAotICAgICAgICAgICAg
MSwKLSAgICAgICAgICAgIG1pbihsZW4oc291cmNlKSAvIG1pbl9udW1fY2h1bmtzLCBsZW4oc291
cmNlKSAtIGJ5dGVzX2NodW5rZWQpKQotICAgICAgICBjaHVuayA9IHNvdXJjZVtieXRlc19jaHVu
a2VkOmJ5dGVzX2NodW5rZWQgKyBjaHVua19zaXplXQotICAgICAgICBjaHVua3MuYXBwZW5kKGNo
dW5rKQotICAgICAgICBieXRlc19jaHVua2VkICs9IGNodW5rX3NpemUKLQotICAgIHJldHVybiBj
aHVua3MKLQotCi1jbGFzcyBJbmZsYXRlckRlZmxhdGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
Ci0gICAgIiIiQSB1bml0dGVzdCBmb3IgX0luZmxhdGVyIGFuZCBfRGVmbGF0ZXIgY2xhc3MuIiIi
Ci0KLSAgICBkZWYgdGVzdF9pbmZsYXRlX2RlZmxhdGVfZGVmYXVsdChzZWxmKToKLSAgICAgICAg
aW5wdXQgPSBiJ2hlbGxvJyArICctJyAqIDMwMDAwICsgYidoZWxsbycKLSAgICAgICAgaW5mbGF0
ZXIxNSA9IHV0aWwuX0luZmxhdGVyKDE1KQotICAgICAgICBkZWZsYXRlcjE1ID0gdXRpbC5fRGVm
bGF0ZXIoMTUpCi0gICAgICAgIGluZmxhdGVyOCA9IHV0aWwuX0luZmxhdGVyKDgpCi0gICAgICAg
IGRlZmxhdGVyOCA9IHV0aWwuX0RlZmxhdGVyKDgpCi0KLSAgICAgICAgY29tcHJlc3NlZDE1ID0g
ZGVmbGF0ZXIxNS5jb21wcmVzc19hbmRfZmluaXNoKGlucHV0KQotICAgICAgICBjb21wcmVzc2Vk
OCA9IGRlZmxhdGVyOC5jb21wcmVzc19hbmRfZmluaXNoKGlucHV0KQotCi0gICAgICAgIGluZmxh
dGVyMTUuYXBwZW5kKGNvbXByZXNzZWQxNSkKLSAgICAgICAgaW5mbGF0ZXI4LmFwcGVuZChjb21w
cmVzc2VkOCkKLQotICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGNvbXByZXNzZWQxNSwgY29t
cHJlc3NlZDgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5wdXQsIGluZmxhdGVyMTUuZGVj
b21wcmVzcygtMSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5wdXQsIGluZmxhdGVyOC5k
ZWNvbXByZXNzKC0xKSkKLQotICAgIGRlZiB0ZXN0X3JhbmRvbV9zZWN0aW9uKHNlbGYpOgotICAg
ICAgICByYW5kb20uc2VlZChhPTApCi0gICAgICAgIHNvdXJjZSA9ICcnLmpvaW4oCi0gICAgICAg
ICAgICBbY2hyKHJhbmRvbS5yYW5kaW50KDAsIDI1NSkpIGZvciBpIGluIHhyYW5nZSgxMDAgKiAx
MDI0KV0pCi0KLSAgICAgICAgY2h1bmtlZF9pbnB1dCA9IGdldF9yYW5kb21fc2VjdGlvbihzb3Vy
Y2UsIDEwKQotICAgICAgICBwcmludCgiSW5wdXQgY2h1bmsgc2l6ZXM6ICVyIiAlIFtsZW4oYykg
Zm9yIGMgaW4gY2h1bmtlZF9pbnB1dF0pCi0KLSAgICAgICAgZGVmbGF0ZXIgPSB1dGlsLl9EZWZs
YXRlcigxNSkKLSAgICAgICAgY29tcHJlc3NlZCA9IFtdCi0gICAgICAgIGZvciBjaHVuayBpbiBj
aHVua2VkX2lucHV0OgotICAgICAgICAgICAgY29tcHJlc3NlZC5hcHBlbmQoZGVmbGF0ZXIuY29t
cHJlc3MoY2h1bmspKQotICAgICAgICBjb21wcmVzc2VkLmFwcGVuZChkZWZsYXRlci5jb21wcmVz
c19hbmRfZmluaXNoKCcnKSkKLQotICAgICAgICBjaHVua2VkX2V4cGVjdGF0aW9uID0gZ2V0X3Jh
bmRvbV9zZWN0aW9uKHNvdXJjZSwgMTApCi0gICAgICAgIHByaW50ICgiRXhwZWN0YXRpb24gY2h1
bmsgc2l6ZXM6ICVyIiAlCi0gICAgICAgICAgICAgICBbbGVuKGMpIGZvciBjIGluIGNodW5rZWRf
ZXhwZWN0YXRpb25dKQotCi0gICAgICAgIGluZmxhdGVyID0gdXRpbC5fSW5mbGF0ZXIoMTUpCi0g
ICAgICAgIGluZmxhdGVyLmFwcGVuZCgnJy5qb2luKGNvbXByZXNzZWQpKQotICAgICAgICBmb3Ig
Y2h1bmsgaW4gY2h1bmtlZF9leHBlY3RhdGlvbjoKLSAgICAgICAgICAgIGRlY29tcHJlc3NlZCA9
IGluZmxhdGVyLmRlY29tcHJlc3MobGVuKGNodW5rKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoY2h1bmssIGRlY29tcHJlc3NlZCkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcn
LCBpbmZsYXRlci5kZWNvbXByZXNzKC0xKSkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18n
OgotICAgIHVuaXR0ZXN0Lm1haW4oKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC90ZXN0L3Rlc3RkYXRhL1JFQURNRSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9SRUFETUUK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwMDFhYTU1OTVjZGQxMzQwN2Y1NzI4ZWNk
NTMyYTVkMTIyNjNlZmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRhL1JFQURNRQorKysgL2Rldi9udWxsCkBAIC0xICswLDAg
QEAKLVRlc3QgZGF0YSBkaXJlY3RvcnkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9o
YW5kbGVycy9hYm9ydF9ieV91c2VyX3dzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9oYW5kbGVy
cy9hYm9ydF9ieV91c2VyX3dzaC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzY3
Zjk5MzBmNzgyNGMzYTUzNTkxNGE1YjM3NzlmNmI2ZmJhMjQzZi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMv
YWJvcnRfYnlfdXNlcl93c2gucHkKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0jIENv
cHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
Ci0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLQotCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgaGFuZHNoYWtlCi0K
LQotZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgotICAgIHJhaXNl
IGhhbmRzaGFrZS5BYm9ydGVkQnlVc2VyRXhjZXB0aW9uKCJhYm9ydCBmb3IgdGVzdCIpCi0KLQot
ZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKLSAgICByYWlzZSBoYW5kc2hh
a2UuQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbigiYWJvcnQgZm9yIHRlc3QiKQotCi0KLSMgdmk6c3Rz
PTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL2JsYW5r
X3dzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9ibGFua193c2gucHkKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdmODdjNmFmMjNkZjA4ZWZlMzU3NWNhZTIwOGRlNTAy
MmNiYWE2NjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNv
Y2tldC90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL2JsYW5rX3dzaC5weQorKysgL2Rldi9udWxsCkBA
IC0xLDMxICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMK
LSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot
IyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
IyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
Ci0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSMgaW50ZW50aW9uYWxseSBsZWZ0
IGJsYW5rCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvb3JpZ2luX2No
ZWNrX3dzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9vcmlnaW5fY2hlY2tfd3No
LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYzEzOWZhMTc2Y2MzNDE3YmU5NmRl
Nzk4ZTZhODFlZDE0OWIxOTkyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9vcmlnaW5fY2hlY2tfd3NoLnB5
CisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xl
IEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
IwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotZGVm
IHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgotICAgIGlmIHJlcXVlc3Qu
d3Nfb3JpZ2luID09ICdodHRwOi8vZXhhbXBsZS5jb20nOgotICAgICAgICByZXR1cm4KLSAgICBy
YWlzZSBWYWx1ZUVycm9yKCdVbmFjY2VwdGFibGUgb3JpZ2luOiAlcicgJSByZXF1ZXN0LndzX29y
aWdpbikKLQotCi1kZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgotICAgIHJl
cXVlc3QuY29ubmVjdGlvbi53cml0ZSgnb3JpZ2luX2NoZWNrX3dzaC5weSBpcyBjYWxsZWQgZm9y
ICVzLCAlcycgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVxdWVzdC53c19yZXNv
dXJjZSwgcmVxdWVzdC53c19wcm90b2NvbCkpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL2V4Y2VwdGlvbl9pbl90cmFu
c2Zlcl93c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL2V4Y2VwdGlvbl9p
bl90cmFuc2Zlcl93c2gucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5ODJkMDIz
MWVmMDBmMDJlMGQ5MGRmNjc4ZWI4MDRiYTQzODYyZDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9l
eGNlcHRpb25faW5fdHJhbnNmZXJfd3NoLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBA
QAotIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlv
bi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0j
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
IyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiRXhjZXB0aW9uIGluIHdlYl9zb2NrZXRfdHJhbnNm
ZXJfZGF0YSgpLgotIiIiCi0KLQotZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJl
cXVlc3QpOgotICAgIHBhc3MKLQotCi1kZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVl
c3QpOgotICAgIHJhaXNlIEV4Y2VwdGlvbignSW50ZW50aW9uYWwgRXhjZXB0aW9uIGZvciAlcywg
JXMnICUKLSAgICAgICAgICAgICAgICAgICAgKHJlcXVlc3Qud3NfcmVzb3VyY2UsIHJlcXVlc3Qu
d3NfcHJvdG9jb2wpKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90
ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9ub193c2hfYXRfdGhlX2VuZC5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVz
dC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvbm9fd3NoX2F0X3RoZV9lbmQucHkKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDE3ZTdiZTE4MDJlM2M2NmM2Mzg0OTg3NWVhMzVlMjQwNmEzODFl
NjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90
ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9ub193c2hfYXRfdGhlX2VuZC5weQorKysgL2Rldi9u
dWxsCkBAIC0xLDQ1ICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCi0jIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1l
dDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIkNvcnJlY3Qgc2ln
bmF0dXJlcywgd3JvbmcgZmlsZSBuYW1lLgotIiIiCi0KLQotZGVmIHdlYl9zb2NrZXRfZG9fZXh0
cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgotICAgIHBhc3MKLQotCi1kZWYgd2ViX3NvY2tldF90cmFu
c2Zlcl9kYXRhKHJlcXVlc3QpOgotICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZSgKLSAgICAg
ICAgICAgICdzdWIvbm9fd3NoX2F0X3RoZV9lbmQucHkgaXMgY2FsbGVkIGZvciAlcywgJXMnICUK
LSAgICAgICAgICAgIChyZXF1ZXN0LndzX3Jlc291cmNlLCByZXF1ZXN0LndzX3Byb3RvY29sKSkK
LQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9o
YW5kbGVycy9zdWIvbm9uX2NhbGxhYmxlX3dzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9oYW5k
bGVycy9zdWIvbm9uX2NhbGxhYmxlX3dzaC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMjYzNTJlYjRjYTIzODk1MjIzOWUzNTQyNzI4Y2UzYjM4ZDgzZGQ2Yi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFu
ZGxlcnMvc3ViL25vbl9jYWxsYWJsZV93c2gucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCww
IEBACi0jIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVk
LgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0
aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
LSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
Ci0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJOb24tY2FsbGFibGUgaGFuZGxlcnMuCi0iIiIK
LQotCi13ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZSA9IFRydWUKLXdlYl9zb2NrZXRfdHJh
bnNmZXJfZGF0YSA9IDEKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
dGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvcGxhaW5fd3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3Rk
YXRhL2hhbmRsZXJzL3N1Yi9wbGFpbl93c2gucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGRiM2ZmNjkzMDI1NmJjMWIxM2UyYzRjMmQxYzg0M2M0YjdjODBhYTQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRhL2hh
bmRsZXJzL3N1Yi9wbGFpbl93c2gucHkKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0j
IENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwot
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0j
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgot
IyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLQotCi1kZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVx
dWVzdCk6Ci0gICAgcGFzcwotCi0KLWRlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVz
dCk6Ci0gICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKCdzdWIvcGxhaW5fd3NoLnB5IGlzIGNh
bGxlZCBmb3IgJXMsICVzJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXF1ZXN0
LndzX3Jlc291cmNlLCByZXF1ZXN0LndzX3Byb3RvY29sKSkKLQotCi0jIHZpOnN0cz00IHN3PTQg
ZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvdzNjLWltcG9y
dC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL3czYy1pbXBvcnQubG9nCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMDlhMzYxNDI2ODJhMTZjODI0YTUyYjZhZTJh
M2M2YTFjNWI2MDkwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3
ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvdzNjLWltcG9ydC5sb2cKKysrIC9k
ZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2Vy
ZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2Ug
dGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0
IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVz
dHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4g
V2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4K
LQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6
Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUK
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFu
ZGxlcnMvc3ViL2V4Y2VwdGlvbl9pbl90cmFuc2Zlcl93c2gucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRh
dGEvaGFuZGxlcnMvc3ViL25vX3dzaF9hdF90aGVfZW5kLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRh
L2hhbmRsZXJzL3N1Yi9ub25fY2FsbGFibGVfd3NoLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRhL2hh
bmRsZXJzL3N1Yi9wbGFpbl93c2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3Vi
L3dyb25nX2hhbmRzaGFrZV9zaWdfd3NoLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJz
L3N1Yi93cm9uZ190cmFuc2Zlcl9zaWdfd3NoLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVz
dGRhdGEvaGFuZGxlcnMvc3ViL3dyb25nX2hhbmRzaGFrZV9zaWdfd3NoLnB5IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0
L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi93cm9uZ19oYW5kc2hha2Vfc2lnX3dzaC5weQpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmJmNjU5YmM5YWYwMWMxMDdlZjM1MDhiMmI1ZDAxNzNk
Y2Y1OTAwOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29j
a2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL3dyb25nX2hhbmRzaGFrZV9zaWdfd3NoLnB5
CisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xl
IEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
IwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIi
V3Jvbmcgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2Ugc2lnbmF0dXJlLgotIiIiCi0KLQot
ZGVmIG5vX3dlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgotICAgIHBhc3MK
LQotCi1kZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgotICAgIHJlcXVlc3Qu
Y29ubmVjdGlvbi53cml0ZSgKLSAgICAgICAgICAgICdzdWIvd3JvbmdfaGFuZHNoYWtlX3NpZ193
c2gucHkgaXMgY2FsbGVkIGZvciAlcywgJXMnICUKLSAgICAgICAgICAgICAocmVxdWVzdC53c19y
ZXNvdXJjZSwgcmVxdWVzdC53c19wcm90b2NvbCkpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL3dyb25nX3RyYW5zZmVy
X3NpZ193c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL3dyb25nX3RyYW5z
ZmVyX3NpZ193c2gucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwZTJlNTUwNzk0
YjdiOTkwZTBiNDRiMzNjZmMyZDRkMTUyZTZjMDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi93cm9u
Z190cmFuc2Zlcl9zaWdfd3NoLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotIyBD
b3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMg
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0j
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0KLQotIiIiV3Jvbmcgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKCkgc2ln
bmF0dXJlLgotIiIiCi0KLQotZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVl
c3QpOgotICAgIHBhc3MKLQotCi1kZWYgbm9fd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVl
c3QpOgotICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZSgKLSAgICAgICAgICAgICdzdWIvd3Jv
bmdfdHJhbnNmZXJfc2lnX3dzaC5weSBpcyBjYWxsZWQgZm9yICVzLCAlcycgJQotICAgICAgICAg
ICAgKHJlcXVlc3Qud3NfcmVzb3VyY2UsIHJlcXVlc3Qud3NfcHJvdG9jb2wpKQotCi0KLSMgdmk6
c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3cz
Yy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3czYy1pbXBvcnQubG9n
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NWZjN2JlZjQyOTE4OTIzMTNjMGY2NjM5
ZGUxMTgyNjFiYjI0MmUyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy93M2MtaW1wb3J0LmxvZworKysgL2Rl
di9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJl
IGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0
ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qg
b24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0
cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBX
ZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgot
Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
LU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9oYW5k
bGVycy9hYm9ydF9ieV91c2VyX3dzaC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9i
bGFua193c2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvb3JpZ2luX2NoZWNrX3dz
aC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRhL3czYy1pbXBvcnQubG9nIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tl
dC90ZXN0L3Rlc3RkYXRhL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA3OGNjYTNlZGU2OGMzYzE0ODBmMWNlZjY4YTRlNWVkZjY5MDg2NTU2Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS93
M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVRoZSB0ZXN0cyBp
biB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5Lgot
RG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBj
cmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIu
Y29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMv
aW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBv
ciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWly
aW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVu
ZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvdGVzdC90ZXN0ZGF0YS9SRUFETUUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC93M2MtaW1wb3J0
LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvdGVzdC93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggOGZiNWU0MTU4MDAxYzE1ZmY4NWUzMTFiY2M2Y2YyNTFmYmIxY2QzZi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdzNjLWltcG9y
dC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBk
aXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBt
b2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEg
cHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWIt
cGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13
M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3Zl
IHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3Qv
X19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvY2xpZW50X2Zvcl90ZXN0aW5nLnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0
L2VuZHRvZW5kX3dpdGhfZXh0ZXJuYWxfc2VydmVyLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L21vY2sucHkKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29j
a2V0L3Rlc3QvbXV4X2NsaWVudF9mb3JfdGVzdGluZy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC9ydW5fYWxsLnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC90ZXN0L3NldF9zeXNfcGF0aC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X2Rpc3BhdGNoLnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC90ZXN0L3Rlc3RfZW5kdG9lbmQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9leHRlbnNpb25z
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC90ZXN0L3Rlc3RfaGFuZHNoYWtlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RfaGFuZHNo
YWtlX2h5YmkucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9oYW5kc2hha2VfaHliaTAwLnB5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90
ZXN0L3Rlc3RfaHR0cF9oZWFkZXJfdXRpbC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X21lbW9yaXppbmdm
aWxlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC90ZXN0L3Rlc3RfbW9jay5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X21zZ3V0aWwu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L3Rlc3QvdGVzdF9tdXgucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9zdHJlYW0ucHkKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29j
a2V0L3Rlc3QvdGVzdF9zdHJlYW1faGl4aWU3NS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X3V0aWwucHkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcHl3ZWJzb2NrZXQvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3czYy1pbXBvcnQubG9nCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YmIyZWQ1MjNiM2IyMjJiYTE3NTg3YTRmZTY3
MGE2Njg5ZGQzZDA3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3
ZWJzb2NrZXQvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1U
aGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVw
b3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0Lgot
SW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBz
Oi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29s
cy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5P
VCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0
aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVx
dWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBm
aWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3B5d2Vic29ja2V0L0NPTlRSSUJVVElORwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvTElDRU5TRQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvTUFOSUZFU1Qu
aW4KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L1JFQURNRQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvUkVBRE1FLm1kCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zZXR1cC5weQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9x
dWljL1JFQURNRS5tZCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcXVpYy9SRUFETUUubWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVm
MWQ2NmUzMjIwMjg1ZjhiMWViMGUwYTdkMTg4YTA5MzUwYzNmZDguLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL1JFQURNRS5tZAorKysgL2Rldi9udWxsCkBAIC0x
LDMzICswLDAgQEAKLVRoaXMgZGlyZWN0b3J5IGNvbnRhaW5zCi1bUVVJQ10oaHR0cHM6Ly90b29s
cy5pZXRmLm9yZy9odG1sL2RyYWZ0LWlldGYtcXVpYy10cmFuc3BvcnQpIHJlbGF0ZWQgdG9vbHMu
Ci0KLSMgUXVpY1RyYW5zcG9ydAotW3F1aWNfdHJhbnNwb3J0X3NlcnZlci5weV0oLi9xdWljX3Ry
YW5zcG9ydF9zZXJ2ZXIucHkpIGltcGxlbWVudHMgYSBzaW1wbGUKLVtRdWljVHJhbnNwb3J0XSho
dHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtdnZ2LXdlYnRyYW5zcG9ydC1xdWljKSBz
ZXJ2ZXIKLWZvciB0ZXN0aW5nLiBJdCB1c2VzIFthaW9xdWljXShodHRwczovL2dpdGh1Yi5jb20v
YWlvcnRjL2Fpb3F1aWMvKSwgYW5kIHRlc3QKLWF1dGhvcnMgY2FuIGltcGxlbWVudCBjdXN0b20g
aGFuZGxlcnMgYnkgcHV0dGluZyBweXRob24gc2NyaXB0cyBpbgotW3dwdC93ZWJ0cmFuc3BvcnQv
cXVpYy9oYW5kbGVycy9dKC4uLy4uL3dlYnRyYW5zcG9ydC9xdWljL2hhbmRsZXJzLykuCi0KLSMj
IEN1c3RvbSBIYW5kbGVycwotVGhlIFF1aWNUcmFuc3BvcnRTZXJ2ZXIgY2FsbHMgZnVuY3Rpb25z
IGRlZmluZWQgaW4gZWFjaCBoYW5kbGVyIHNjcmlwdC4KLQotIC0gYGhhbmRsZV9jbGllbnRfaW5k
aWNhdGlvbmAgaXMgY2FsbGVkIGR1cmluZyB0aGUgY2xpZW50IGluZGljYXRpb24gcHJvY2Vzcy4K
LSAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggdGhyZWUgYXJndW1lbnRzOgotICAgCi0g
ICAtIGBjb25uZWN0aW9uYDogW2BhaW9xdWljLmFzeW5jaW8uUXVpY0Nvbm5lY3Rpb25Qcm90b2Nv
bGBdKHByb3RvY29sKQotICAgLSBgb3JpZ2luYDogYHN0cmAgVGhlIG9yaWdpbiBvZiB0aGUgaW5p
dGlhdG9yLgotICAgLSBgcXVlcnlgOiBgRGljdFtzdHIsIHN0cl1gIFRoZSBkaWN0aW9uYXJ5IG9m
IHF1ZXJ5IHBhcmFtZXRlcnMgb2YgdGhlIFVSTCBvZiB0aGUKLSAgICAgY29ubmVjdGlvbi4KLQot
ICAgQSBoYW5kbGVyIGNhbiBhYm9ydCB0aGUgY2xpZW50IGluZGljYXRpb24gcHJvY2VzcyBlaXRo
ZXIgYnkgcmFpc2luZyBhbgotICAgZXhjZXB0aW9uIG9yIGNsb3NpbmcgdGhlIGNvbm5lY3Rpb24u
Ci0JICAgIAotIC0gYGhhbmRsZV9ldmVudGAgaXMgY2FsbGVkIHdoZW4gYSBbYFF1aWNFdmVudGBd
KGV2ZW50KSBhcnJpdmVzLgotICAgLSBgY29ubmVjdGlvbmA6IFtgYWlvcXVpYy5hc3luY2lvLlF1
aWNDb25uZWN0aW9uUHJvdG9jb2xgXShwcm90b2NvbCkKLSAgIC0gYGV2ZW50YDogW2BhaW9xdWlj
LnF1aWMuZXZlbnRzLlF1aWNFdmVudGBdKGV2ZW50KQotCi0gICBUaGlzIGZ1bmN0aW9uIGlzIG5v
dCBjYWxsZWQgdW50aWwgdGhlIGNsaWVudCBpbmRpY2F0aW9uIHByb2Nlc3MgZmluaXNoZXMKLSAg
IHN1Y2Nlc3NmdWxseS4KLQotW3Byb3RvY29sXTogaHR0cHM6Ly9haW9xdWljLnJlYWR0aGVkb2Nz
LmlvL2VuL2xhdGVzdC9hc3luY2lvLmh0bWwjYWlvcXVpYy5hc3luY2lvLlF1aWNDb25uZWN0aW9u
UHJvdG9jb2wKLVtldmVudF06IGh0dHBzOi8vYWlvcXVpYy5yZWFkdGhlZG9jcy5pby9lbi9sYXRl
c3QvcXVpYy5odG1sI21vZHVsZS1haW9xdWljLnF1aWMuZXZlbnRzCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvX19pbml0
X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3F1aWMvX19pbml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2ODM0Yjgy
ODVhNTZiZWYwZTE1NDNmZDkwMWM3ZTZmMmY4YmMyMDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9xdWljL19faW5pdF9fLnB5CisrKyAvZGV2L251bGwKQEAgLTEgKzAs
MCBAQAotIyBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFB5dGhvbiB0byBzZWFyY2ggdGhpcyBk
aXJlY3RvcnkgZm9yIG1vZHVsZXMuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9x
dWljL2NlcnRzL1JFQURNRS5tZCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcXVpYy9jZXJ0cy9SRUFETUUubWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDIxNmNmMTNmZmZjMWJiYTg3ZDYxMGUyMmNmNjBlMTEwNDNmNTM5MTguLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL2NlcnRzL1JFQURNRS5tZAor
KysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLVRvIGdlbmVyYXRlIGNlcnQua2V5IGFuZCBj
ZXJ0LnBlbToKLQotIDEuIFJlbW92ZSB3ZWItcGxhdGZvcm0udGVzdC5rZXkgYW5kIHdlYi1wbGF0
Zm9ybS50ZXN0LnBlbSBpbiAuLi8uLi9jZXJ0cy4KLSAxLiBGcm9tIHRoZSByb290LCBydW4KLSAg
ICBgLi93cHQgc2VydmUgLS1jb25maWcgdG9vbHMvcXVpYy9jZXJ0cy9jb25maWcuanNvbmAgYW5k
IHRlcm1pbmF0ZSBpdAotICAgIGFmdGVyIGl0IGhhcyBzdGFydGVkIHVwLgotIDEuIE1vdmUgdG9v
bHMvY2VydHMvd2ViLXBsYXRmb3JtLnRlc3Qua2V5IHRvIHRvb2xzL3F1aWMvY2VydHMvY2VydC5r
ZXkuCi0gMS4gTW92ZSB0b29scy9jZXJ0cy93ZWItcGxhdGZvcm0udGVzdC5wZW0gdG8gdG9vbHMv
cXVpYy9jZXJ0cy9jZXJ0LnBlbS4KLSAxLiBSZWNvdmVyIHRoZSBvcmlnaW5hbCB3ZWItcGxhdGZv
cm0udGVzdC5rZXkgYW5kIHdlYi1wbGF0Zm9ybS50ZXN0LnBlbSBpbgotICAgIC4uLy4uL2NlcnRz
LgotCi1TZWUgYWxzbzogLi4vLi4vY2VydHMvUkVBRE1FLm1kClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9xdWljL2NlcnRzL2NlcnQua2V5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL2NlcnRzL2NlcnQua2V5CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OTNjZGZhNTQzNzI4YjYzNjliMDVlZWZlMjA4MTFjZDY2
NjJiNzE3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9jZXJ0
cy9jZXJ0LmtleQorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLS0tLS0tQkVHSU4gUFJJ
VkFURSBLRVktLS0tLQotTUlJRXdBSUJBREFOQmdrcWhraUc5dzBCQVFFRkFBU0NCS293Z2dTbUFn
RUFBb0lCQVFEYnlQdWlCR3B4aGF2RgotM2o3cEk2ZytBMGdDNEJUTFRxTU9iS1NUa1FXc2pxMUdP
ZDJMQTFsd1RQTE9id3J2aElVRnpid29JYk93b1BNZQotTWtqc3NGQ0hHM0ZNajU2Y0tpQVEyREZJ
NmRLNVBqR1VWTlNSeGsvRjRIaDJaeDlEVEVObC9FYi9jUlQyeXV1KwotVzlIQ3UvQldmYld3bHd3
TjV2eHluZUNvaDVjQkIvamQxS1RPUmd1WXB1YXRIYjg1QUQ1QlJoWUxYd0hGN3lWSAotTlZ4SGV1
R2xLMzF5dVlDSE5LdkJIRGdaRjVUcDhGcUtYblZVK1BsS1hDU1U1NjAyYzJVNXhISUZ2S1R5aVps
TQotY1lYTlNVcDBsY053L2lUU1Z0c1BFNGsxc3R1NnFrV2RUN0gvdVUrR1VCK2FMcU8rc3ZBL3M5
R0dYOEhaZ3QrcgotdlNGRThsSUpBZ01CQUFFQ2dnRUJBSkE5NkQ5ZGpJb3lneGhhRW9tcG1Db1N0
emtEM1VITXV5Q2xWcUZ1UlA0SgotcVZoMGM1eGZOMXlIYzdiZGs1eThLUjAwOTY2UzU3NGM4MUcz
Q0xzbHY4UGIwOUMrVlFjQ2NvYjdpK1RoYUNXZwotMXFNVnhXaGljVXBaVmxYR3VmTE40MUhVYnJn
SWZBeTRBbDJ0SHc0aGo4c0R0N0ZNZ0dIRFhaelBWbmprZThyMQotTzlZaUpsMVF4NEw3dk1XcnVH
YTlRV2pGZ0huRyt1aGFLanNMMnY3SlFPR3k1dDhhYm9WeWI3aDhyR2cvbUMrZQotSElZT3VjVjFh
RU1nWVZhQW5oR3NLTUhreDVBMXhXcFhCU3J1RytHUkJ4L2tYV1ora0NOY2tMWHVWZHJocTRISQot
QWRieEl6cVFUUE1YcE8zUkF1anlyeGtIYWJFTk1QQS9GR0g0c3ptZExvRUNnWUVBOXo4cGU3L3ZT
bFdnZmhzRgotejVRbndXSHlGanJ1aGdELzJzYTRMQi9jbXdUUWRHdzhFNVROSERiQ2dtUzQ5OURa
VVhJWnVCT1Rla2RFVkRRYQotbmc4VnlMM283RG1zKzVpUGk1Y3FzY3AxS2tqTEVNeVBwcXM0SlR1
aXhScGptTWZ5Y2R4VlRwWGhjdXFuSnBUTAotUUM5cFI1Ti96WmNBTURsQnYwRnpjOFQ3OFhrQ2dZ
RUE0NUR1ZVdHSFZmMnU0dU1ZeVd4eVpoYU5EYWdsMTN5eAotL29TU1VUem9MdlNwR1F4S2t2K2Z4
U05xTDNudTVJYTZ1RDRHdTVOdWJQNEhyL1ZlU0tSZm1rVDFsdXZGY1ZmQwota244cjhic3NacTg1
NUFWSnhYYTVLMWF1V2pDdUZIajBwWWY1NnNmaGtQeHBZMFJRRWdrdnVFM2lvc1ExMmdGWAotdncx
NDdGdFFVUkVDZ1lFQTg1UnBWUDQ1UzMxaU9QcDhWZzE2d1J5eWVFNGtzU1lJNmtyK0pKSmJMdW1t
U0J4ZAotYjFrWVhTUmhxajU2cjhJMFp2WEcrcjltZW4vOWhBczA4ZVNnckh6VUhPMlJTdWo0K2ll
Nkt4L3ZIL0pKQkVyVAotZHZxVnZMQ3M0Z3ZtZFJ6KzhFZUdUMzUvZGt4UTBrU2luS0JZMHVnd2I2
WEV6TDJMMVZVdzNhd0NIZGtDZ1lFQQotcXRRSWdPdjZ1VTJuZEVEQVFheDhNRENya0YzeWtsSFVH
RmtTc1pORVJNTjdFUWVPRDgxKzlYRkJiQVJmbGdPaAotdFY4eWxLcjNFVENkT3JTNkkxUHBSSmlS
dDhxanZCTUNTQkRaUHl5Z0J6RnhCc0FGZ2dzK3M4N3RNVjByd01pUAotOXBjZHYrWnVhUFZpYzVj
N2VGNlhDUWJHcENNZ3ZkZVdOQ0I3N3dvWlA5RUNnWUVBbG9ia1BHRFlDeS9SYVZpVQotRmJxNUdv
NncwcE1Wbkx6WWJuNEdoMUFKUGVRS0lTcVh0Slo3dHFwZFcraTdxemtMdzc0RUxhWUNCUjJaRWxy
agotRVZlNWFST3g2VEZOOVJuamtGbnl2OUxleVlMK1lQYzhBSXdWVUNlU1Bpa1NHTEZwSmZhL2p3
RG1XaDN2SG1tQQotTlJVUDQwd2J0Qmk0MkMydWRyVHhVV3NIeHFjPQotLS0tLS1FTkQgUFJJVkFU
RSBLRVktLS0tLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9xdWljL2NlcnRzL2NlcnQucGVtIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL2NlcnRzL2NlcnQucGVtCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZTcwZjFiMDgyYWNiMzA1MzIxM2JjN2VlNzRmNWUz
NjdjODlmZjI3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9j
ZXJ0cy9jZXJ0LnBlbQorKysgL2Rldi9udWxsCkBAIC0xLDI0MCArMCwwIEBACi1DZXJ0aWZpY2F0
ZToKLSAgICBEYXRhOgotICAgICAgICBWZXJzaW9uOiAzICgweDIpCi0gICAgICAgIFNlcmlhbCBO
dW1iZXI6IDkxOTQ5MiAoMHhlMDdjNCkKLSAgICAgICAgU2lnbmF0dXJlIEFsZ29yaXRobTogc2hh
MjU2V2l0aFJTQUVuY3J5cHRpb24KLSAgICAgICAgSXNzdWVyOiBDTj13ZWItcGxhdGZvcm0tdGVz
dHMKLSAgICAgICAgVmFsaWRpdHkKLSAgICAgICAgICAgIE5vdCBCZWZvcmU6IEFwciAyMCAxMToy
MDo1NiAyMDIwIEdNVAotICAgICAgICAgICAgTm90IEFmdGVyIDogQXByIDE4IDExOjIwOjU2IDIw
MzAgR01UCi0gICAgICAgIFN1YmplY3Q6IENOPXdlYi1wbGF0Zm9ybS50ZXN0Ci0gICAgICAgIFN1
YmplY3QgUHVibGljIEtleSBJbmZvOgotICAgICAgICAgICAgUHVibGljIEtleSBBbGdvcml0aG06
IHJzYUVuY3J5cHRpb24KLSAgICAgICAgICAgICAgICBSU0EgUHVibGljLUtleTogKDIwNDggYml0
KQotICAgICAgICAgICAgICAgIE1vZHVsdXM6Ci0gICAgICAgICAgICAgICAgICAgIDAwOmRiOmM4
OmZiOmEyOjA0OjZhOjcxOjg1OmFiOmM1OmRlOjNlOmU5OjIzOgotICAgICAgICAgICAgICAgICAg
ICBhODozZTowMzo0ODowMjplMDoxNDpjYjo0ZTphMzowZTo2YzphNDo5Mzo5MToKLSAgICAgICAg
ICAgICAgICAgICAgMDU6YWM6OGU6YWQ6NDY6Mzk6ZGQ6OGI6MDM6NTk6NzA6NGM6ZjI6Y2U6NmY6
Ci0gICAgICAgICAgICAgICAgICAgIDBhOmVmOjg0Ojg1OjA1OmNkOmJjOjI4OjIxOmIzOmIwOmEw
OmYzOjFlOjMyOgotICAgICAgICAgICAgICAgICAgICA0ODplYzpiMDo1MDo4NzoxYjo3MTo0Yzo4
Zjo5ZTo5YzoyYToyMDoxMDpkODoKLSAgICAgICAgICAgICAgICAgICAgMzE6NDg6ZTk6ZDI6Yjk6
M2U6MzE6OTQ6NTQ6ZDQ6OTE6YzY6NGY6YzU6ZTA6Ci0gICAgICAgICAgICAgICAgICAgIDc4Ojc2
OjY3OjFmOjQzOjRjOjQzOjY1OmZjOjQ2OmZmOjcxOjE0OmY2OmNhOgotICAgICAgICAgICAgICAg
ICAgICBlYjpiZTo1YjpkMTpjMjpiYjpmMDo1Njo3ZDpiNTpiMDo5NzowYzowZDplNjoKLSAgICAg
ICAgICAgICAgICAgICAgZmM6NzI6OWQ6ZTA6YTg6ODc6OTc6MDE6MDc6Zjg6ZGQ6ZDQ6YTQ6Y2U6
NDY6Ci0gICAgICAgICAgICAgICAgICAgIDBiOjk4OmE2OmU2OmFkOjFkOmJmOjM5OjAwOjNlOjQx
OjQ2OjE2OjBiOjVmOgotICAgICAgICAgICAgICAgICAgICAwMTpjNTplZjoyNTo0NzozNTo1Yzo0
Nzo3YTplMTphNToyYjo3ZDo3MjpiOToKLSAgICAgICAgICAgICAgICAgICAgODA6ODc6MzQ6YWI6
YzE6MWM6Mzg6MTk6MTc6OTQ6ZTk6ZjA6NWE6OGE6NWU6Ci0gICAgICAgICAgICAgICAgICAgIDc1
OjU0OmY4OmY5OjRhOjVjOjI0Ojk0OmU3OmFkOjM2OjczOjY1OjM5OmM0OgotICAgICAgICAgICAg
ICAgICAgICA3MjowNTpiYzphNDpmMjo4OTo5OTo0Yzo3MTo4NTpjZDo0OTo0YTo3NDo5NToKLSAg
ICAgICAgICAgICAgICAgICAgYzM6NzA6ZmU6MjQ6ZDI6NTY6ZGI6MGY6MTM6ODk6MzU6YjI6ZGI6
YmE6YWE6Ci0gICAgICAgICAgICAgICAgICAgIDQ1OjlkOjRmOmIxOmZmOmI5OjRmOjg2OjUwOjFm
OjlhOjJlOmEzOmJlOmIyOgotICAgICAgICAgICAgICAgICAgICBmMDozZjpiMzpkMTo4Njo1Zjpj
MTpkOTo4MjpkZjphYjpiZDoyMTo0NDpmMjoKLSAgICAgICAgICAgICAgICAgICAgNTI6MDkKLSAg
ICAgICAgICAgICAgICBFeHBvbmVudDogNjU1MzcgKDB4MTAwMDEpCi0gICAgICAgIFg1MDl2MyBl
eHRlbnNpb25zOgotICAgICAgICAgICAgWDUwOXYzIEJhc2ljIENvbnN0cmFpbnRzOiAKLSAgICAg
ICAgICAgICAgICBDQTpGQUxTRQotICAgICAgICAgICAgWDUwOXYzIFN1YmplY3QgS2V5IElkZW50
aWZpZXI6IAotICAgICAgICAgICAgICAgIDc5Ojk2OkUxOjk2OkYzOjdDOjQxOjJCOjNCOjlGOjFC
OjBEOkQ2OkE5OkI4OkI3OjRGOkU2OjYxOjVDCi0gICAgICAgICAgICBYNTA5djMgQXV0aG9yaXR5
IEtleSBJZGVudGlmaWVyOiAKLSAgICAgICAgICAgICAgICBrZXlpZDpGNjpCOTpEQToxNjowNzow
NTpCQjo2RjpDOTo2MzozMDpDNjo2Nzo0MDpDQjowMzpEMzoxRTo5MDpFQwotCi0gICAgICAgICAg
ICBYNTA5djMgS2V5IFVzYWdlOiAKLSAgICAgICAgICAgICAgICBEaWdpdGFsIFNpZ25hdHVyZSwg
Tm9uIFJlcHVkaWF0aW9uLCBLZXkgRW5jaXBoZXJtZW50Ci0gICAgICAgICAgICBYNTA5djMgRXh0
ZW5kZWQgS2V5IFVzYWdlOiAKLSAgICAgICAgICAgICAgICBUTFMgV2ViIFNlcnZlciBBdXRoZW50
aWNhdGlvbgotICAgICAgICAgICAgWDUwOXYzIFN1YmplY3QgQWx0ZXJuYXRpdmUgTmFtZTogCi0g
ICAgICAgICAgICAgICAgRE5TOndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4LndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5LndlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3A0LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6bm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3A2LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzLndlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3AyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
d3d3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4
OC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTgud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDg1
LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4OS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjYu
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDcyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyNC53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc5Lndl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTkud2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDM5LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2MC53ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wNTgud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDI4LndlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6d3d3MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTQud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDY5LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0MC53ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wNzQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDMxLndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3AxOC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzMud2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDc3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxMi53ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wNTQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYzLndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A3MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTUud2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDE2LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzNi53ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wMjcud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDI5LndlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3A5NC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDQud2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpvcDMzLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4NC53ZWItcGxhdGZvcm0udGVz
dCwgRE5TOm9wMzIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYxLndlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3A3MC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIud2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzpvcDQzLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3OC53ZWItcGxhdGZvcm0udGVzdCwg
RE5TOm9wMjYud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDc2LndlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3A1Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTkud2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDg2LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0Ni53ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wMTcud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDkwLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3A5My53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTAud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDU1LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0Ny53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
NTEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ1LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A4
MC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjgud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ5
LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1Ny53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzUu
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDY3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5Mi53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTUud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDEzLndl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3NS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjQud2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDk3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzNy53ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wNTYud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYyLndlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3A4Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjUud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDExLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1MC53ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wMzgud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDgzLndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3A4MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjAud2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDIxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyMy53ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wNDIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDIyLndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A2NS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTYud2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDg3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxOS53ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wNTMud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDMwLndlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3A0OC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzQud2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpvcDYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzLm5vdC13ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wMi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDUubm90LXdlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6d3d3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy53d3cu
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDcubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A0
Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDkubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxLm5vdC13ZWItcGxhdGZvcm0udGVz
dCwgRE5TOm9wMzYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1My5ub3Qtd2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDUwLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjQubm90LXdl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzMS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDk1
Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wODMubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6d3d3Mi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDczLm5vdC13ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wMTkubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyMS5ub3Qtd2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDgxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzAubm90
LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3OC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDQwLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjUubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6b3A2NS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cud3d3Mi53ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wODAubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1Mi5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDY4Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDUu
bm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDcyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTAubm90LXdlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3A4OS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ5Lm5vdC13ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wNzcubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A3OS5ub3Qt
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDgyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3
dy53d3cxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxMi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzpvcDM5Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNDQubm90LXdlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6d3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDU4Lm5vdC13ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wMTQubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AzMC5u
b3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5T
Om9wNjEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5Mi5ub3Qtd2ViLXBsYXRmb3JtLnRl
c3QsIEROUzpvcDI5Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTgubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6b3A2NC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDI2Lm5vdC13
ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjIubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5
NC5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDM4Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwg
RE5TOm9wMzMubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyMy5ub3Qtd2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzpvcDU3Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNTQubm90LXdlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6b3A4NS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ2Lm5v
dC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTcubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
b3AzMi5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDYwLm5vdC13ZWItcGxhdGZvcm0udGVz
dCwgRE5TOm9wOTYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1MS5ub3Qtd2ViLXBsYXRm
b3JtLnRlc3QsIEROUzpvcDQxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzUubm90LXdl
Yi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A5OS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQy
Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNjcubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6b3AzNy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQ4Lm5vdC13ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOm9wNTUubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A1Ni5ub3Qtd2ViLXBs
YXRmb3JtLnRlc3QsIEROUzpvcDg0Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMzQubm90
LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3A2OS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpv
cDExLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wOTMubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6d3d3MS53d3cud2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDg2Lm5vdC13ZWItcGxhdGZv
cm0udGVzdCwgRE5TOm9wMTMubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyMC5ub3Qtd2Vi
LXBsYXRmb3JtLnRlc3QsIEROUzpvcDc2Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMjcu
bm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxNy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIERO
UzpvcDc1Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wMTUubm90LXdlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6b3A0Ny5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDE4Lm5vdC13ZWItcGxh
dGZvcm0udGVzdCwgRE5TOm9wNjMubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AyOC5ub3Qt
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDQzLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9w
NjYubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi53d3cud2ViLXBsYXRmb3JtLnRlc3Qs
IEROUzpvcDkxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOm9wNzQubm90LXdlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6b3A1OS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDg4Lm5vdC13ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOm9wODcubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6b3AxMC5u
b3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzpvcDE2Lm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5T
Ond3dzEud3d3Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIud3d3Mi53ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOnd3dzIud3d3MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzEud3d3MS53ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOnd3dy53d3cubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4t
LWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS53d3cubm90LXdlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6d3d3Lnd3dzIubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi53d3cu
bm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Lnd3dzEubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6d3d3Mi53d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIud3d3MS5ub3Qt
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnd3dzEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6d3d3MS53d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC53d3cu
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQubm90LXdlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6d3d3LnhuLS1sdmUtNmxhZC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIueG4tLWx2
ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnd3dzIud2ViLXBsYXRm
b3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQud3d3MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3
dzEueG4tLWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnd3dy5u
b3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cueG4tLWx2ZS02bGFkLm5vdC13ZWItcGxhdGZv
cm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC53d3cxLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5T
Ond3dzIueG4tLWx2ZS02bGFkLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzEueG4tLWx2
ZS02bGFkLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC53d3cyLm5vdC13
ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnhuLS1sdmUtNmxhZC53ZWItcGxhdGZvcm0udGVzdCwg
RE5TOnd3dy54bi0tbjhqNmRzNTNsd3drcnFodjI4YS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhu
LS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2
ZHM1M2x3d2tycWh2MjhhLnd3dy53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzEueG4tLW44ajZk
czUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFo
djI4YS53d3cyLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEu
d3d3MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIueG4tLW44ajZkczUzbHd3a3JxaHYyOGEu
d2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQueG4tLWx2ZS02bGFkLm5vdC13ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOnd3dy54bi0tbjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBs
YXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53d3cubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud3d3Mi5ub3Qtd2ViLXBsYXRm
b3JtLnRlc3QsIEROUzp3d3cxLnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWItcGxhdGZv
cm0udGVzdCwgRE5TOnd3dzIueG4tLW44ajZkczUzbHd3a3JxaHYyOGEubm90LXdlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEud3d3MS5ub3Qtd2ViLXBsYXRmb3Jt
LnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS54bi0tbHZlLTZsYWQud2ViLXBsYXRm
b3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQueG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2ViLXBs
YXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS54bi0tbHZlLTZsYWQubm90
LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnhuLS1uOGo2ZHM1M2x3d2tycWh2
MjhhLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLnhu
LS1uOGo2ZHM1M2x3d2tycWh2MjhhLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUz
bHd3a3JxaHYyOGEueG4tLW44ajZkczUzbHd3a3JxaHYyOGEubm90LXdlYi1wbGF0Zm9ybS50ZXN0
Ci0gICAgU2lnbmF0dXJlIEFsZ29yaXRobTogc2hhMjU2V2l0aFJTQUVuY3J5cHRpb24KLSAgICAg
ICAgIDBiOjhiOjU1OjZhOmI0OjY1OmE4OjJhOjNiOmMwOjYyOjBlOjg1OmQ1OmRjOjk5OjlmOjNm
OgotICAgICAgICAgZDA6Yjc6ZmY6Y2I6YjY6Njg6ZTU6YWU6ZDM6YTI6NGU6Yzg6ZDQ6YWE6MzQ6
OTU6ZTQ6OWU6Ci0gICAgICAgICA0YjplNDo3NDplNDpjNDplYzoxMTozMTo2NzplNTphNjpkYTo4
NTo2YjowZjpkNzo2NDpiNzoKLSAgICAgICAgIGU3OmViOmZlOjA5OmI2Ojg4OmUxOjc0OjFkOjBj
OjE1OmEzOjJlOjAxOjAzOmZjOjY3OjljOgotICAgICAgICAgN2M6YmE6ZTY6ZmI6NTI6MWQ6NTg6
Y2Q6Njg6YTM6NTU6OGM6OWI6NTc6YmI6ODk6MzI6MTA6Ci0gICAgICAgICA0MTo3MTo5OTphMzox
YTpkYzoyNToyZDpkMDpiOToxYTphZjplNjo3Njo0MDpkNzpmNToyMzoKLSAgICAgICAgIGE5OmQ4
OjU5OjQ1OjhhOmFiOjUzOjUzOjg3OmNjOjE0OmIzOjg3OmRlOjFkOjAxOjk5OjdhOgotICAgICAg
ICAgNGY6NzI6NDc6Njk6OWM6OTg6NzM6OTQ6Nzk6OTA6MjU6NzA6MDI6ZWM6NzU6YjI6Nzc6MTE6
Ci0gICAgICAgICAyODo5NzpjZDo0MzozZDpkNTo2ODozODo3Mzo3MTpmZDphOTowYjphMjplZDoy
ZDoxYzo2ZToKLSAgICAgICAgIGUxOjA1OmQ0OjMwOmE2OjY0OjA0OjEwOmNhOmU4OmU2OmUwOjdh
OmE5OmY0OjI2Ojk0OjZiOgotICAgICAgICAgYTQ6Mjg6YWE6MGM6ZWI6M2U6ZTA6ZWY6ZDI6YmU6
MGI6NzA6ZTQ6ZGQ6NGM6ZmM6YTI6ODc6Ci0gICAgICAgICAwYzoyNDo4Mzo3MjplMjplNDo2Zjoy
NTphODplZTpjNToxMjo4OTpkOTpkZDo4Zjo4MjoxNDoKLSAgICAgICAgIGMzOmQ2OjA2OmFlOjFk
OmJiOjdiOjNjOmZjOjliOjI3OjU2OjUwOmI0OjI4OjQ0OjYwOjgwOgotICAgICAgICAgMTc6ODc6
MWM6YjE6Y2U6NmQ6Nzc6YjQ6ZDE6MmI6MzI6ZTg6ZDA6YmE6MDY6NmY6NGQ6MDQ6Ci0gICAgICAg
ICBmZjo2MDpmZTplMwotLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCi1NSUlndkRDQ0g2U2dB
d0lCQWdJRERnZkVNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1CMHhHekFaQmdOVkJBTU1FbmRsCi1ZaTF3
YkdGMFptOXliUzEwWlhOMGN6QWVGdzB5TURBME1qQXhNVEl3TlRaYUZ3MHpNREEwTVRneE1USXdO
VFphCi1NQnd4R2pBWUJnTlZCQU1NRVhkbFlpMXdiR0YwWm05eWJTNTBaWE4wTUlJQklqQU5CZ2tx
aGtpRzl3MEJBUUVGCi1BQU9DQVE4QU1JSUJDZ0tDQVFFQTI4ajdvZ1JxY1lXcnhkNCs2U09vUGdO
SUF1QVV5MDZqRG15a2s1RUZySTZ0Ci1Sam5kaXdOWmNFenl6bThLNzRTRkJjMjhLQ0d6c0tEekhq
Skk3TEJRaHh0eFRJK2VuQ29nRU5neFNPblN1VDR4Ci1sRlRVa2NaUHhlQjRkbWNmUTB4RFpmeEcv
M0VVOXNycnZsdlJ3cnZ3Vm4yMXNKY01EZWI4Y3AzZ3FJZVhBUWY0Ci0zZFNremtZTG1LYm1yUjIv
T1FBK1FVWVdDMThCeGU4bFJ6VmNSM3JocFN0OWNybUFoelNyd1J3NEdSZVU2ZkJhCi1pbDUxVlBq
NVNsd2tsT2V0Tm5ObE9jUnlCYnlrOG9tWlRIR0Z6VWxLZEpYRGNQNGswbGJiRHhPSk5iTGJ1cXBG
Ci1uVSt4LzdsUGhsQWZtaTZqdnJMd1A3UFJobC9CMllMZnE3MGhSUEpTQ1FJREFRQUJvNEllQkRD
Q0hnQXdDUVlECi1WUjBUQkFJd0FEQWRCZ05WSFE0RUZnUVVlWmJobHZOOFFTczdueHNOMXFtNHQw
L21ZVnd3SHdZRFZSMGpCQmd3Ci1Gb0FVOXJuYUZnY0Z1Mi9KWXpER1owRExBOU1la093d0N3WURW
UjBQQkFRREFnWGdNQk1HQTFVZEpRUU1NQW9HCi1DQ3NHQVFVRkJ3TUJNSUlkandZRFZSMFJCSUlk
aGpDQ0hZS0NFWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaFZ2Ci1jRGd1ZDJWaUxYQnNZWFJtYjNK
dExuUmxjM1NDRlc5d055NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVZiM0E1Ci1MbmRsWWkxd2JH
RjBabTl5YlM1MFpYTjBnaFZ2Y0RRdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZXNXZkQzEzCi1a
V0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVZiM0EyTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hWdmNE
TXVkMlZpCi1MWEJzWVhSbWIzSnRMblJsYzNTQ0ZXOXdNaTUzWldJdGNHeGhkR1p2Y20wdWRHVnpk
SUlWYjNBeExuZGxZaTF3Ci1iR0YwWm05eWJTNTBaWE4wZ2hWM2QzY3VkMlZpTFhCc1lYUm1iM0p0
TG5SbGMzU0NGVzl3TlM1M1pXSXRjR3hoCi1kR1p2Y20wdWRHVnpkSUlXYjNBNE9DNTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemRJSVdiM0E1T0M1M1pXSXRjR3hoCi1kR1p2Y20wdWRHVnpkSUlXYjNBNE5T
NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E0T1M1M1pXSXRjR3hoCi1kR1p2Y20wdWRHVnpk
SUlXYjNBMk5pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EzTWk1M1pXSXRjR3hoCi1kR1p2
Y20wdWRHVnpkSUlXYjNBeU5DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EwTVM1M1pXSXRj
R3hoCi1kR1p2Y20wdWRHVnpkSUlXYjNBM09TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E1
TVM1M1pXSXRjR3hoCi1kR1p2Y20wdWRHVnpkSUlXYjNBMU9TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emRJSVdiM0F6T1M1M1pXSXRjR3hoCi1kR1p2Y20wdWRHVnpkSUlXYjNBMk1DNTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemRJSVdiM0ExT0M1M1pXSXRjR3hoCi1kR1p2Y20wdWRHVnpkSUlXYjNBeU9DNTNa
V0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdkM2QzTVM1M1pXSXRjR3hoCi1kR1p2Y20wdWRHVnpkSUlX
YjNBeE5DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EyT1M1M1pXSXRjR3hoCi1kR1p2Y20w
dWRHVnpkSUlXYjNBME1DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EzTkM1M1pXSXRjR3ho
Ci1kR1p2Y20wdWRHVnpkSUlXYjNBek1TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F4T0M1
M1pXSXRjR3hoCi1kR1p2Y20wdWRHVnpkSUlXYjNBM015NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SVdiM0EzTnk1M1pXSXRjR3hoCi1kR1p2Y20wdWRHVnpkSUlXYjNBeE1pNTNaV0l0Y0d4aGRHWnZj
bTB1ZEdWemRJSVdiM0ExTkM1M1pXSXRjR3hoCi1kR1p2Y20wdWRHVnpkSUlXYjNBMk15NTNaV0l0
Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EzTVM1M1pXSXRjR3hoCi1kR1p2Y20wdWRHVnpkSUlXYjNB
NU5TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F4Tmk1M1pXSXRjR3hoCi1kR1p2Y20wdWRH
VnpkSUlXYjNBek5pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F5Tnk1M1pXSXRjR3hoCi1k
R1p2Y20wdWRHVnpkSUlXYjNBeU9TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E1TkM1M1pX
SXRjR3hoCi1kR1p2Y20wdWRHVnpkSUlXYjNBME5DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdi
M0F6TXk1M1pXSXRjR3hoCi1kR1p2Y20wdWRHVnpkSUlXYjNBNE5DNTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemRJSVdiM0F6TWk1M1pXSXRjR3hoCi1kR1p2Y20wdWRHVnpkSUlXYjNBMk1TNTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemRJSVdiM0EzTUM1M1pXSXRjR3hoCi1kR1p2Y20wdWRHVnpkSUlXZDNkM01p
NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EwTXk1M1pXSXRjR3hoCi1kR1p2Y20wdWRHVnpk
SUlXYjNBM09DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F5Tmk1M1pXSXRjR3hoCi1kR1p2
Y20wdWRHVnpkSUlXYjNBM05pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0ExTWk1M1pXSXRj
R3hoCi1kR1p2Y20wdWRHVnpkSUlXYjNBNU9TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E0
Tmk1M1pXSXRjR3hoCi1kR1p2Y20wdWRHVnpkSUlXYjNBME5pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emRJSVdiM0F4Tnk1M1pXSXRjR3hoCi1kR1p2Y20wdWRHVnpkSUlXYjNBNU1DNTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemRJSVdiM0E1TXk1M1pXSXRjR3hoCi1kR1p2Y20wdWRHVnpkSUlXYjNBeE1DNTNa
V0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0ExTlM1M1pXSXRjR3hoCi1kR1p2Y20wdWRHVnpkSUlX
YjNBME55NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0ExTVM1M1pXSXRjR3hoCi1kR1p2Y20w
dWRHVnpkSUlXYjNBME5TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E0TUM1M1pXSXRjR3ho
Ci1kR1p2Y20wdWRHVnpkSUlXYjNBMk9DNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EwT1M1
M1pXSXRjR3hoCi1kR1p2Y20wdWRHVnpkSUlXYjNBMU55NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJ
SVdiM0F6TlM1M1pXSXRjR3hoCi1kR1p2Y20wdWRHVnpkSUlXYjNBMk55NTNaV0l0Y0d4aGRHWnZj
bTB1ZEdWemRJSVdiM0E1TWk1M1pXSXRjR3hoCi1kR1p2Y20wdWRHVnpkSUlXYjNBeE5TNTNaV0l0
Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F4TXk1M1pXSXRjR3hoCi1kR1p2Y20wdWRHVnpkSUlXYjNB
M05TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EyTkM1M1pXSXRjR3hoCi1kR1p2Y20wdWRH
VnpkSUlXYjNBNU55NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F6Tnk1M1pXSXRjR3hoCi1k
R1p2Y20wdWRHVnpkSUlXYjNBMU5pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0EyTWk1M1pX
SXRjR3hoCi1kR1p2Y20wdWRHVnpkSUlXYjNBNE1pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdi
M0F5TlM1M1pXSXRjR3hoCi1kR1p2Y20wdWRHVnpkSUlXYjNBeE1TNTNaV0l0Y0d4aGRHWnZjbTB1
ZEdWemRJSVdiM0ExTUM1M1pXSXRjR3hoCi1kR1p2Y20wdWRHVnpkSUlXYjNBek9DNTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemRJSVdiM0E0TXk1M1pXSXRjR3hoCi1kR1p2Y20wdWRHVnpkSUlXYjNBNE1T
NTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F5TUM1M1pXSXRjR3hoCi1kR1p2Y20wdWRHVnpk
SUlXYjNBeU1TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F5TXk1M1pXSXRjR3hoCi1kR1p2
Y20wdWRHVnpkSUlXYjNBME1pNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F5TWk1M1pXSXRj
R3hoCi1kR1p2Y20wdWRHVnpkSUlXYjNBMk5TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0E1
Tmk1M1pXSXRjR3hoCi1kR1p2Y20wdWRHVnpkSUlXYjNBNE55NTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emRJSVdiM0F4T1M1M1pXSXRjR3hoCi1kR1p2Y20wdWRHVnpkSUlXYjNBMU15NTNaV0l0Y0d4aGRH
WnZjbTB1ZEdWemRJSVdiM0F6TUM1M1pXSXRjR3hoCi1kR1p2Y20wdWRHVnpkSUlXYjNBME9DNTNa
V0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdiM0F6TkM1M1pXSXRjR3hoCi1kR1p2Y20wdWRHVnpkSUla
YjNBMkxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlaYjNBekxtNXZkQzEzCi1aV0l0Y0d4
aGRHWnZjbTB1ZEdWemRJSVpiM0F5TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVpiM0Ex
Ci1MbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJWmQzZDNMbTV2ZEMxM1pXSXRjR3hoZEda
dmNtMHVkR1Z6Ci1kSUlaZDNkM0xuZDNkeTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlaYjNBM0xt
NXZkQzEzWldJdGNHeGhkR1p2Ci1jbTB1ZEdWemRJSVpiM0EwTG01dmRDMTNaV0l0Y0d4aGRHWnZj
bTB1ZEdWemRJSVpiM0E0TG01dmRDMTNaV0l0Ci1jR3hoZEdadmNtMHVkR1Z6ZElJWmIzQTVMbTV2
ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJWmIzQXhMbTV2Ci1kQzEzWldJdGNHeGhkR1p2Y20w
dWRHVnpkSUlhYjNBek5pNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDCi1HbTl3TlRNdWJt
OTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RVd0xtNXZkQzEzWldJdGNHeGhkR1p2Ci1j
bTB1ZEdWemRJSWFiM0F5TkM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TXpFdWJt
OTBMWGRsCi1ZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRGsxTG01dmRDMTNaV0l0Y0d4aGRHWnZj
bTB1ZEdWemRJSWFiM0E0Ci1NeTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0duZDNkekl1
Ym05MExYZGxZaTF3YkdGMFptOXliUzUwCi1aWE4wZ2hwdmNEY3pMbTV2ZEMxM1pXSXRjR3hoZEda
dmNtMHVkR1Z6ZElJYWIzQXhPUzV1YjNRdGQyVmlMWEJzCi1ZWFJtYjNKdExuUmxjM1NDR205d01q
RXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEZ3hMbTV2Ci1kQzEzWldJdGNHeGhk
R1p2Y20wdWRHVnpkSUlhYjNBM01DNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDCi1HbTl3
TnpndWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RRd0xtNXZkQzEzWldJdGNHeGhk
R1p2Ci1jbTB1ZEdWemRJSWFiM0F5TlM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3
TmpVdWJtOTBMWGRsCi1ZaTF3YkdGMFptOXliUzUwWlhOMGdocDNkM2N1ZDNkM01pNTNaV0l0Y0d4
aGRHWnZjbTB1ZEdWemRJSWFiM0E0Ci1NQzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dt
OXdOVEl1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwCi1aWE4wZ2hwdmNEWTRMbTV2ZEMxM1pXSXRj
R3hoZEdadmNtMHVkR1Z6ZElJYWIzQTBOUzV1YjNRdGQyVmlMWEJzCi1ZWFJtYjNKdExuUmxjM1ND
R205d056RXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEY3lMbTV2Ci1kQzEzWldJ
dGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBNU1DNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1ND
Ci1HbTl3T0RrdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RRNUxtNXZkQzEzWldJ
dGNHeGhkR1p2Ci1jbTB1ZEdWemRJSWFiM0EzTnk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMz
U0NHbTl3TnprdWJtOTBMWGRsCi1ZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjRGd5TG01dmRDMTNa
V0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFkM2QzCi1MbmQzZHpFdWQyVmlMWEJzWVhSbWIzSnRMblJs
YzNTQ0dtOXdNVEl1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwCi1aWE4wZ2hwdmNETTVMbTV2ZEMx
M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTBOQzV1YjNRdGQyVmlMWEJzCi1ZWFJtYjNKdExu
UmxjM1NDR25kM2R6RXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNEVTRMbTV2Ci1k
QzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBeE5DNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExu
UmxjM1NDCi1HbTl3TXpBdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RZeUxtNXZk
QzEzWldJdGNHeGhkR1p2Ci1jbTB1ZEdWemRJSWFiM0EyTVM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0
TG5SbGMzU0NHbTl3T1RJdWJtOTBMWGRsCi1ZaTF3YkdGMFptOXliUzUwWlhOMGdocHZjREk1TG01
dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0E1Ci1PQzV1YjNRdGQyVmlMWEJzWVhSbWIz
SnRMblJsYzNTQ0dtOXdOalF1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwCi1aWE4wZ2hwdmNESTJM
bTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQXlNaTV1YjNRdGQyVmlMWEJzCi1ZWFJt
YjNKdExuUmxjM1NDR205d09UUXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hwdmNETTRM
bTV2Ci1kQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBek15NXViM1F0ZDJWaUxYQnNZWFJt
YjNKdExuUmxjM1NDCi1HbTl3TWpNdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaHB2Y0RV
M0xtNXZkQzEzWldJdGNHeGhkR1p2Ci1jbTB1ZEdWemRJSWFiM0ExTkM1dWIzUXRkMlZpTFhCc1lY
Um1iM0p0TG5SbGMzU0NHbTl3T0RVdWJtOTBMWGRsCi1ZaTF3YkdGMFptOXliUzUwWlhOMGdocHZj
RFEyTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0E1Ci1OeTV1YjNRdGQyVmlMWEJz
WVhSbWIzSnRMblJsYzNTQ0dtOXdNekl1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwCi1aWE4wZ2hw
dmNEWXdMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQTVOaTV1YjNRdGQyVmlMWEJz
Ci1ZWFJtYjNKdExuUmxjM1NDR205d05URXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hw
dmNEUXhMbTV2Ci1kQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBek5TNXViM1F0ZDJWaUxY
QnNZWFJtYjNKdExuUmxjM1NDCi1HbTl3T1RrdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBn
aHB2Y0RReUxtNXZkQzEzWldJdGNHeGhkR1p2Ci1jbTB1ZEdWemRJSWFiM0EyTnk1dWIzUXRkMlZp
TFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TXpjdWJtOTBMWGRsCi1ZaTF3YkdGMFptOXliUzUwWlhO
MGdocHZjRFE0TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0ExCi1OUzV1YjNRdGQy
VmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdOVFl1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwCi1a
WE4wZ2hwdmNEZzBMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQXpOQzV1YjNRdGQy
VmlMWEJzCi1ZWFJtYjNKdExuUmxjM1NDR205d05qa3VibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBa
WE4wZ2hwdmNERXhMbTV2Ci1kQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBNU15NXViM1F0
ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDCi1HbmQzZHpFdWQzZDNMbmRsWWkxd2JHRjBabTl5YlM1
MFpYTjBnaHB2Y0RnMkxtNXZkQzEzWldJdGNHeGhkR1p2Ci1jbTB1ZEdWemRJSWFiM0F4TXk1dWIz
UXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbTl3TWpBdWJtOTBMWGRsCi1ZaTF3YkdGMFptOXli
UzUwWlhOMGdocHZjRGMyTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0F5Ci1OeTV1
YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdNVGN1Ym05MExYZGxZaTF3YkdGMFptOXli
UzUwCi1aWE4wZ2hwdmNEYzFMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIzQXhOUzV1
YjNRdGQyVmlMWEJzCi1ZWFJtYjNKdExuUmxjM1NDR205d05EY3VibTkwTFhkbFlpMXdiR0YwWm05
eWJTNTBaWE4wZ2hwdmNERTRMbTV2Ci1kQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlhYjNBMk15
NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDCi1HbTl3TWpndWJtOTBMWGRsWWkxd2JHRjBa
bTl5YlM1MFpYTjBnaHB2Y0RRekxtNXZkQzEzWldJdGNHeGhkR1p2Ci1jbTB1ZEdWemRJSWFiM0Ey
Tmk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbmQzZHpJdWQzZDNMbmRsCi1ZaTF3YkdG
MFptOXliUzUwWlhOMGdocHZjRGt4TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWFiM0Ez
Ci1OQzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0dtOXdOVGt1Ym05MExYZGxZaTF3YkdG
MFptOXliUzUwCi1aWE4wZ2hwdmNEZzRMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWIz
QTROeTV1YjNRdGQyVmlMWEJzCi1ZWFJtYjNKdExuUmxjM1NDR205d01UQXVibTkwTFhkbFlpMXdi
R0YwWm05eWJTNTBaWE4wZ2hwdmNERTJMbTV2Ci1kQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUli
ZDNkM01TNTNkM2N5TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wCi1naHQzZDNjeUxuZDNkekl1ZDJW
aUxYQnNZWFJtYjNKdExuUmxjM1NDRzNkM2R6SXVkM2QzTVM1M1pXSXRjR3hoCi1kR1p2Y20wdWRH
VnpkSUliZDNkM01TNTNkM2N4TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2gxM2QzY3VkM2QzCi1M
bTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJZWVHNHRMV3gyWlMwMmJHRmtMbmRsWWkxd2JH
RjBabTl5Ci1iUzUwWlhOMGdoNTNkM2N4TG5kM2R5NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxj
M1NDSG5kM2R5NTNkM2N5Ci1MbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJZWQzZDNNaTUz
ZDNjdWJtOTBMWGRsWWkxd2JHRjBabTl5Ci1iUzUwWlhOMGdoNTNkM2N1ZDNkM01TNXViM1F0ZDJW
aUxYQnNZWFJtYjNKdExuUmxjM1NDSDNkM2R6SXVkM2QzCi1NaTV1YjNRdGQyVmlMWEJzWVhSbWIz
SnRMblJsYzNTQ0gzZDNkekl1ZDNkM01TNXViM1F0ZDJWaUxYQnNZWFJtCi1iM0p0TG5SbGMzU0NI
M2QzZHpFdWQzZDNNUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0gzZDNkekV1Ci1kM2Qz
TWk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NJbmh1TFMxc2RtVXRObXhoWkM1M2QzY3Vk
MlZpCi1MWEJzWVhSbWIzSnRMblJsYzNTQ0luaHVMUzFzZG1VdE5teGhaQzV1YjNRdGQyVmlMWEJz
WVhSbWIzSnRMblJsCi1jM1NDSW5kM2R5NTRiaTB0YkhabExUWnNZV1F1ZDJWaUxYQnNZWFJtYjNK
dExuUmxjM1NDSTNkM2R6SXVlRzR0Ci1MV3gyWlMwMmJHRmtMbmRsWWkxd2JHRjBabTl5YlM1MFpY
TjBnaU40YmkwdGJIWmxMVFpzWVdRdWQzZDNNaTUzCi1aV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWpl
RzR0TFd4MlpTMDJiR0ZrTG5kM2R6RXVkMlZpTFhCc1lYUm1iM0p0Ci1MblJsYzNTQ0kzZDNkekV1
ZUc0dExXeDJaUzAyYkdGa0xuZGxZaTF3YkdGMFptOXliUzUwWlhOMGdpWjRiaTB0Ci1iSFpsTFRa
c1lXUXVkM2QzTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSW1kM2QzTG5odUxTMXNkbVV0
Ci1ObXhoWkM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NKM2h1TFMxc2RtVXRObXhoWkM1
M2QzY3hMbTV2Ci1kQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUluZDNkM01pNTRiaTB0YkhabExU
WnNZV1F1Ym05MExYZGxZaTF3Ci1iR0YwWm05eWJTNTBaWE4wZ2lkM2QzY3hMbmh1TFMxc2RtVXRO
bXhoWkM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0Ci1MblJsYzNTQ0ozaHVMUzFzZG1VdE5teGhaQzUz
ZDNjeUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlwCi1lRzR0TFc0NGFqWmtjelV6Ykhk
M2EzSnhhSFl5T0dFdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0szaHVMUzFzCi1kbVV0Tm14aFpD
NTRiaTB0YkhabExUWnNZV1F1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDTFhkM2R5NTRiaTB0Ci1i
amhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUl0ZUc0dExX
NDRhalprCi1jelV6YkhkM2EzSnhhSFl5T0dFdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBn
aTE0YmkwdGJqaHFObVJ6Ci1OVE5zZDNkcmNuRm9kakk0WVM1M2QzY3VkMlZpTFhCc1lYUm1iM0p0
TG5SbGMzU0NMbmQzZHpFdWVHNHRMVzQ0Ci1halprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZpTFhC
c1lYUm1iM0p0TG5SbGMzU0NMbmh1TFMxdU9HbzJaSE0xCi1NMngzZDJ0eWNXaDJNamhoTG5kM2R6
SXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NMbmh1TFMxdU9HbzJaSE0xCi1NMngzZDJ0eWNXaDJN
amhoTG5kM2R6RXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NMbmQzZHpJdWVHNHRMVzQ0Ci1halpr
Y3pVemJIZDNhM0p4YUhZeU9HRXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NMM2h1TFMxc2RtVXRO
bXhoCi1aQzU0YmkwdGJIWmxMVFpzWVdRdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnakYz
ZDNjdWVHNHRMVzQ0Ci1halprY3pVemJIZDNhM0p4YUhZeU9HRXVibTkwTFhkbFlpMXdiR0YwWm05
eWJTNTBaWE4wZ2pGNGJpMHRiamhxCi1ObVJ6TlROc2QzZHJjbkZvZGpJNFlTNTNkM2N1Ym05MExY
ZGxZaTF3YkdGMFptOXliUzUwWlhOMGdqSjRiaTB0Ci1iamhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZ
UzUzZDNjeUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUl5Ci1kM2QzTVM1NGJpMHRiamhx
Tm1Sek5UTnNkM2RyY25Gb2RqSTRZUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsCi1jM1NDTW5k
M2R6SXVlRzR0TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWJtOTBMWGRsWWkxd2JHRjBabTl5
Ci1iUzUwWlhOMGdqSjRiaTB0YmpocU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1M2QzY3hMbTV2ZEMx
M1pXSXRjR3hoCi1kR1p2Y20wdWRHVnpkSUkyZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9H
RXVlRzR0TFd4MlpTMDJiR0ZrCi1MbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBnalo0YmkwdGJIWmxM
VFpzWVdRdWVHNHRMVzQ0YWpaa2N6VXpiSGQzCi1hM0p4YUhZeU9HRXVkMlZpTFhCc1lYUm1iM0p0
TG5SbGMzU0NPbmh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyCi1NamhoTG5odUxTMXNkbVV0Tm14
aFpDNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDT25odUxTMXNkbVV0Ci1ObXhoWkM1NGJp
MHRiamhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsCi1j
M1NDUVhodUxTMXVPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhMbmh1TFMxdU9HbzJaSE0xTTJ4M2Qy
dHljV2gyCi1NamhoTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2tWNGJpMHRiamhxTm1Sek5UTnNk
M2RyY25Gb2RqSTRZUzU0Ci1iaTB0YmpocU5tUnpOVE5zZDNkcmNuRm9kakk0WVM1dWIzUXRkMlZp
TFhCc1lYUm1iM0p0TG5SbGMzUXdEUVlKCi1Lb1pJaHZjTkFRRUxCUUFEZ2dFQkFBdUxWV3EwWmFn
cU84QmlEb1hWM0ptZlA5QzMvOHUyYU9XdTA2Sk95TlNxCi1OSlhrbmt2a2RPVEU3QkV4WitXbTJv
VnJEOWRrdCtmci9nbTJpT0YwSFF3Vm95NEJBL3hubkh5NjV2dFNIVmpOCi1hS05Wakp0WHU0a3lF
RUZ4bWFNYTNDVXQwTGthcitaMlFOZjFJNm5ZV1VXS3ExTlRoOHdVczRmZUhRR1plazl5Ci1SMm1j
bUhPVWVaQWxjQUxzZGJKM0VTaVh6VU05MVdnNGMzSDlxUXVpN1MwY2J1RUYxRENtWkFRUXl1am00
SHFwCi05Q2FVYTZRb3FnenJQdUR2MHI0TGNPVGRUUHlpaHd3a2czTGk1RzhscU83RkVvblozWStD
Rk1QV0JxNGR1M3M4Ci0vSnNuVmxDMEtFUmdnQmVISExIT2JYZTAwU3N5Nk5DNkJtOU5CUDlnL3VN
PQotLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL2NlcnRzL2NvbmZpZy5qc29u
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWlj
L2NlcnRzL2NvbmZpZy5qc29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MmE2ZDA1
MjlmYjk0NDljNGJmYjBjOTM1NDZhNzk2MmE1YWJkMjJjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9jZXJ0cy9jb25maWcuanNvbgorKysgL2Rldi9udWxsCkBA
IC0xLDE3ICswLDAgQEAKLXsKLSAgICAicG9ydHMiOiB7Ci0gICAgICAgICJodHRwIjogW10sCi0g
ICAgICAgICJodHRwcyI6IFsiYXV0byJdLAotICAgICAgICAid3MiOiBbXSwKLSAgICAgICAgIndz
cyI6IFtdCi0gICAgfSwKLSAgICAiY2hlY2tfc3ViZG9tYWlucyI6IGZhbHNlLAotICAgICJzc2wi
OiB7Ci0gICAgICAgICJ0eXBlIjogIm9wZW5zc2wiLAotICAgICAgICAib3BlbnNzbCI6IHsKLSAg
ICAgICAgICAgICJkdXJhdGlvbiI6IDM2NTAsCi0gICAgICAgICAgICAiZm9yY2VfcmVnZW5lcmF0
ZSI6IGZhbHNlLAotICAgICAgICAgICAgImJhc2VfcGF0aCI6ICJ0b29scy9jZXJ0cyIKLSAgICAg
ICAgfQotICAgIH0KLX0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9jZXJ0cy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9jZXJ0cy93M2Mt
aW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzlmYzVhMTlmM2NiOWQ2
NDMzYWU0MzQzNTEzZTg0NDVkZTg0ODg5MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3F1aWMvY2VydHMvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwy
MCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9t
IHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkg
aW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0
aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4g
cnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1w
b3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0
eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3F1aWMvY2VydHMvUkVBRE1FLm1kCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL2NlcnRzL2NlcnQua2V5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL2NlcnRzL2Nl
cnQucGVtCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9xdWljL2NlcnRzL2NvbmZpZy5qc29uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvY29tbWFuZHMuanNvbiBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9jb21tYW5k
cy5qc29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NDk2ZjQ4MzZmZjkwZGQyNTM1
NTljMGI2MWYyOWEzY2Q0NjdkZDU0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcXVpYy9jb21tYW5kcy5qc29uCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAot
ewotICAic2VydmUtcXVpYy10cmFuc3BvcnQiOiB7Ci0gICAgInBhdGgiOiAic2VydmUucHkiLAot
ICAgICJzY3JpcHQiOiAicnVuIiwKLSAgICAicGFyc2VyIjogImdldF9wYXJzZXIiLAotICAgICJo
ZWxwIjogIlN0YXJ0IHRoZSBRVUlDIHNlcnZlciBmb3IgV2ViVHJhbnNwb3J0IiwKLSAgICAidmly
dHVhbGVudiI6IHRydWUsCi0gICAgInJlcXVpcmVtZW50cyI6IFsKLSAgICAgICJyZXF1aXJlbWVu
dHMudHh0IgotICAgIF0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL3F1aWNfdHJhbnNwb3J0X3NlcnZlci5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVp
Yy9xdWljX3RyYW5zcG9ydF9zZXJ2ZXIucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwNjI2MGU3OTRiZGZjZTE3NzA3YTY5ZTRjZTYyMzNiMWY5NzEyNzQuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL3F1aWNfdHJhbnNwb3J0X3NlcnZlci5weQor
KysgL2Rldi9udWxsCkBAIC0xLDIwNCArMCwwIEBACi1pbXBvcnQgYXN5bmNpbwotaW1wb3J0IGlv
Ci1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLWltcG9ydCBzdHJ1Y3QKLWlt
cG9ydCB1cmxsaWIucGFyc2UKLWltcG9ydCB0cmFjZWJhY2sKLWZyb20gdHlwaW5nIGltcG9ydCBB
bnksIERpY3QsIEl0ZXJhdG9yLCBMaXN0LCBPcHRpb25hbCwgVHVwbGUKLQotZnJvbSBhaW9xdWlj
LmFzeW5jaW8gaW1wb3J0IFF1aWNDb25uZWN0aW9uUHJvdG9jb2wsIHNlcnZlCi1mcm9tIGFpb3F1
aWMucXVpYy5jb25maWd1cmF0aW9uIGltcG9ydCBRdWljQ29uZmlndXJhdGlvbgotZnJvbSBhaW9x
dWljLnF1aWMuY29ubmVjdGlvbiBpbXBvcnQgRU5EX1NUQVRFUwotZnJvbSBhaW9xdWljLnF1aWMu
ZXZlbnRzIGltcG9ydCBTdHJlYW1EYXRhUmVjZWl2ZWQsIFF1aWNFdmVudAotZnJvbSBhaW9xdWlj
LnRscyBpbXBvcnQgU2Vzc2lvblRpY2tldAotCi1TRVJWRVJfTkFNRSA9ICdhaW9xdWljLXRyYW5z
cG9ydCcKLWxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQotCi1oYW5kbGVyc19w
YXRoID0gJycKLQotCi1jbGFzcyBFdmVudEhhbmRsZXI6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYs
IGNvbm5lY3Rpb246IFF1aWNDb25uZWN0aW9uUHJvdG9jb2wsIGdsb2JhbF9kaWN0OiBEaWN0W3N0
ciwgQW55XSk6Ci0gICAgICAgIHNlbGYuY29ubmVjdGlvbiA9IGNvbm5lY3Rpb24KLSAgICAgICAg
c2VsZi5nbG9iYWxfZGljdCA9IGdsb2JhbF9kaWN0Ci0KLSAgICBkZWYgaGFuZGxlX2NsaWVudF9p
bmRpY2F0aW9uKAotICAgICAgICAgICAgc2VsZiwKLSAgICAgICAgICAgIG9yaWdpbjogc3RyLAot
ICAgICAgICAgICAgcXVlcnk6IERpY3Rbc3RyLCBzdHJdKSAtPiBOb25lOgotICAgICAgICBuYW1l
ID0gJ2hhbmRsZV9jbGllbnRfaW5kaWNhdGlvbicKLSAgICAgICAgaWYgbmFtZSBpbiBzZWxmLmds
b2JhbF9kaWN0OgotICAgICAgICAgICAgc2VsZi5nbG9iYWxfZGljdFtuYW1lXShzZWxmLmNvbm5l
Y3Rpb24sIG9yaWdpbiwgcXVlcnkpCi0KLSAgICBkZWYgaGFuZGxlX2V2ZW50KHNlbGYsIGV2ZW50
OiBRdWljRXZlbnQpIC0+IE5vbmU6Ci0gICAgICAgIG5hbWUgPSAnaGFuZGxlX2V2ZW50JwotICAg
ICAgICBpZiBuYW1lIGluIHNlbGYuZ2xvYmFsX2RpY3Q6Ci0gICAgICAgICAgICBzZWxmLmdsb2Jh
bF9kaWN0W25hbWVdKHNlbGYuY29ubmVjdGlvbiwgZXZlbnQpCi0KLQotY2xhc3MgUXVpY1RyYW5z
cG9ydFByb3RvY29sKFF1aWNDb25uZWN0aW9uUHJvdG9jb2wpOiAgIyB0eXBlOiBpZ25vcmUKLSAg
ICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3M6IEFueSwgKiprd2FyZ3M6IEFueSkgLT4gTm9uZToK
LSAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCi0gICAgICAgIHNlbGYu
cGVuZGluZ19ldmVudHM6IExpc3RbUXVpY0V2ZW50XSA9IFtdCi0gICAgICAgIHNlbGYuY2xpZW50
X2luZGljYXRpb25fZmluaXNoZWQgPSBGYWxzZQotICAgICAgICBzZWxmLmNsaWVudF9pbmRpY2F0
aW9uX2RhdGEgPSBiJycKLSAgICAgICAgc2VsZi5oYW5kbGVyOiBPcHRpb25hbFtFdmVudEhhbmRs
ZXJdID0gTm9uZQotCi0gICAgZGVmIHF1aWNfZXZlbnRfcmVjZWl2ZWQoc2VsZiwgZXZlbnQ6IFF1
aWNFdmVudCkgLT4gTm9uZToKLSAgICAgICAgcHJlZml4ID0gJyEhJwotICAgICAgICBsb2dnZXIu
aW5mbygnUVVJQyBldmVudDogJXMnLCB0eXBlKGV2ZW50KSkKLSAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgaWYgKG5vdCBzZWxmLmNsaWVudF9pbmRpY2F0aW9uX2ZpbmlzaGVkIGFuZAotICAgICAg
ICAgICAgICAgICAgICBpc2luc3RhbmNlKGV2ZW50LCBTdHJlYW1EYXRhUmVjZWl2ZWQpIGFuZAot
ICAgICAgICAgICAgICAgICAgICBldmVudC5zdHJlYW1faWQgPT0gMik6Ci0gICAgICAgICAgICAg
ICAgIyBjbGllbnQgaW5kaWNhdGlvbiBwcm9jZXNzCi0gICAgICAgICAgICAgICAgcHJlZml4ID0g
J0NsaWVudCBpbmRpY2F0aW9uIGVycm9yOiAnCi0gICAgICAgICAgICAgICAgc2VsZi5jbGllbnRf
aW5kaWNhdGlvbl9kYXRhICs9IGV2ZW50LmRhdGEKLSAgICAgICAgICAgICAgICBpZiBsZW4oc2Vs
Zi5jbGllbnRfaW5kaWNhdGlvbl9kYXRhKSA+IDY1NTM1OgotICAgICAgICAgICAgICAgICAgICBy
YWlzZSBFeGNlcHRpb24oJ3RvbyBsYXJnZSBkYXRhIGZvciBjbGllbnQgaW5kaWNhdGlvbicpCi0g
ICAgICAgICAgICAgICAgaWYgZXZlbnQuZW5kX3N0cmVhbToKLSAgICAgICAgICAgICAgICAgICAg
c2VsZi5wcm9jZXNzX2NsaWVudF9pbmRpY2F0aW9uKCkKLSAgICAgICAgICAgICAgICAgICAgYXNz
ZXJ0IHNlbGYuaGFuZGxlciBpcyBub3QgTm9uZQotICAgICAgICAgICAgICAgICAgICBpZiBzZWxm
LmlzX2Nsb3Npbmdfb3JfY2xvc2VkKCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4K
LSAgICAgICAgICAgICAgICAgICAgcHJlZml4ID0gJ0V2ZW50IGhhbmRsaW5nIEVycm9yOiAnCi0g
ICAgICAgICAgICAgICAgICAgIGZvciBlIGluIHNlbGYucGVuZGluZ19ldmVudHM6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZXIuaGFuZGxlX2V2ZW50KGUpCi0gICAgICAgICAg
ICAgICAgICAgIHNlbGYucGVuZGluZ19ldmVudHMuY2xlYXIoKQotICAgICAgICAgICAgZWxpZiBu
b3Qgc2VsZi5jbGllbnRfaW5kaWNhdGlvbl9maW5pc2hlZDoKLSAgICAgICAgICAgICAgICBzZWxm
LnBlbmRpbmdfZXZlbnRzLmFwcGVuZChldmVudCkKLSAgICAgICAgICAgIGVsaWYgc2VsZi5oYW5k
bGVyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIHByZWZpeCA9ICdFdmVudCBoYW5kbGlu
ZyBFcnJvcjogJwotICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlci5oYW5kbGVfZXZlbnQoZXZl
bnQpCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgIHNlbGYuaGFu
ZGxlciA9IE5vbmUKLSAgICAgICAgICAgIGxvZ2dlci53YXJuKHByZWZpeCArIHN0cihlKSkKLSAg
ICAgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoKQotICAgICAgICAgICAgc2VsZi5jbG9zZSgp
Ci0KLSAgICBkZWYgcGFyc2VfY2xpZW50X2luZGljYXRpb24oc2VsZiwgYnM6IGlvLkJ5dGVzSU8p
IC0+IEl0ZXJhdG9yW1R1cGxlW2ludCwgYnl0ZXNdXToKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAg
ICAgICAgICAgIGtleV9iID0gYnMucmVhZCgyKQotICAgICAgICAgICAgaWYgbGVuKGtleV9iKSA9
PSAwOgotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgbGVuZ3RoX2IgPSBicy5y
ZWFkKDIpCi0gICAgICAgICAgICBpZiBsZW4oa2V5X2IpICE9IDI6Ci0gICAgICAgICAgICAgICAg
cmFpc2UgRXhjZXB0aW9uKCdmYWlsZWQgdG8gZ2V0ICJLZXkiIGZpZWxkJykKLSAgICAgICAgICAg
IGlmIGxlbihsZW5ndGhfYikgIT0gMjoKLSAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24o
J2ZhaWxlZCB0byBnZXQgIkxlbmd0aCIgZmllbGQnKQotICAgICAgICAgICAga2V5ID0gc3RydWN0
LnVucGFjaygnIUgnLCBrZXlfYilbMF0KLSAgICAgICAgICAgIGxlbmd0aCA9IHN0cnVjdC51bnBh
Y2soJyFIJywgbGVuZ3RoX2IpWzBdCi0gICAgICAgICAgICB2YWx1ZSA9IGJzLnJlYWQobGVuZ3Ro
KQotICAgICAgICAgICAgaWYgbGVuKHZhbHVlKSAhPSBsZW5ndGg6Ci0gICAgICAgICAgICAgICAg
cmFpc2UgRXhjZXB0aW9uKCd0cnVuY2F0ZWQgIlZhbHVlIiBmaWVsZCcpCi0gICAgICAgICAgICB5
aWVsZCAoa2V5LCB2YWx1ZSkKLQotICAgIGRlZiBwcm9jZXNzX2NsaWVudF9pbmRpY2F0aW9uKHNl
bGYpIC0+IE5vbmU6Ci0gICAgICAgIG9yaWdpbiA9IE5vbmUKLSAgICAgICAgb3JpZ2luX3N0cmlu
ZyA9IE5vbmUKLSAgICAgICAgcGF0aCA9IE5vbmUKLSAgICAgICAgcGF0aF9zdHJpbmcgPSBOb25l
Ci0gICAgICAgIEtFWV9PUklHSU4gPSAwCi0gICAgICAgIEtFWV9QQVRIID0gMQotICAgICAgICBm
b3IgKGtleSwgdmFsdWUpIGluIHNlbGYucGFyc2VfY2xpZW50X2luZGljYXRpb24oCi0gICAgICAg
ICAgICAgICAgaW8uQnl0ZXNJTyhzZWxmLmNsaWVudF9pbmRpY2F0aW9uX2RhdGEpKToKLSAgICAg
ICAgICAgIGlmIGtleSA9PSBLRVlfT1JJR0lOOgotICAgICAgICAgICAgICAgIG9yaWdpbl9zdHJp
bmcgPSB2YWx1ZS5kZWNvZGUoKQotICAgICAgICAgICAgICAgIG9yaWdpbiA9IHVybGxpYi5wYXJz
ZS51cmxwYXJzZShvcmlnaW5fc3RyaW5nKQotICAgICAgICAgICAgZWxpZiBrZXkgPT0gS0VZX1BB
VEg6Ci0gICAgICAgICAgICAgICAgcGF0aF9zdHJpbmcgPSB2YWx1ZS5kZWNvZGUoKQotICAgICAg
ICAgICAgICAgIHBhdGggPSB1cmxsaWIucGFyc2UudXJscGFyc2UocGF0aF9zdHJpbmcpCi0gICAg
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgV2UgbXVzdCBpZ25vcmUgdW5yZWNvZ25p
emVkIGZpZWxkcy4KLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgIGxvZ2dlci5pbmZvKCdv
cmlnaW4gPSAlcywgcGF0aCA9ICVzJywgb3JpZ2luX3N0cmluZywgcGF0aF9zdHJpbmcpCi0gICAg
ICAgIGlmIG9yaWdpbiBpcyBOb25lOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdObyBv
cmlnaW4gaXMgZ2l2ZW4nKQotICAgICAgICBhc3NlcnQgb3JpZ2luX3N0cmluZyBpcyBub3QgTm9u
ZQotICAgICAgICBpZiBwYXRoIGlzIE5vbmU6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24o
J05vIHBhdGggaXMgZ2l2ZW4nKQotICAgICAgICBhc3NlcnQgcGF0aF9zdHJpbmcgaXMgbm90IE5v
bmUKLSAgICAgICAgaWYgb3JpZ2luLnNjaGVtZSAhPSAnaHR0cHMnIGFuZCBvcmlnaW4uc2NoZW1l
ICE9ICdodHRwJzoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignSW52YWxpZCBvcmlnaW46
ICVzJyAlIG9yaWdpbl9zdHJpbmcpCi0gICAgICAgIGlmIG9yaWdpbi5uZXRsb2MgPT0gJyc6Ci0g
ICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0ludmFsaWQgb3JpZ2luOiAlcycgJSBvcmlnaW5f
c3RyaW5nKQotCi0gICAgICAgICMgVG8gbWFrZSB0aGUgc2l0dWF0aW9uIHNpbXBsZSB3ZSBhY2Nl
cHQgb25seSBzaW1wbGUgcGF0aCBzdHJpbmdzLgotICAgICAgICBtID0gcmUuY29tcGlsZShyJ14v
KFthLXpBLVowLTlcLl9cLV0rKSQnKS5tYXRjaChwYXRoLnBhdGgpCi0gICAgICAgIGlmIG0gaXMg
Tm9uZToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignSW52YWxpZCBwYXRoOiAlcycgJSBw
YXRoX3N0cmluZykKLQotICAgICAgICBoYW5kbGVyX25hbWUgPSBtLmdyb3VwKDEpCi0gICAgICAg
IHF1ZXJ5ID0gZGljdCh1cmxsaWIucGFyc2UucGFyc2VfcXNsKHBhdGgucXVlcnkpKQotICAgICAg
ICBzZWxmLmhhbmRsZXIgPSBzZWxmLmNyZWF0ZV9ldmVudF9oYW5kbGVyKGhhbmRsZXJfbmFtZSkK
LSAgICAgICAgc2VsZi5oYW5kbGVyLmhhbmRsZV9jbGllbnRfaW5kaWNhdGlvbihvcmlnaW5fc3Ry
aW5nLCBxdWVyeSkKLSAgICAgICAgaWYgc2VsZi5pc19jbG9zaW5nX29yX2Nsb3NlZCgpOgotICAg
ICAgICAgICAgcmV0dXJuCi0gICAgICAgIHNlbGYuY2xpZW50X2luZGljYXRpb25fZmluaXNoZWQg
PSBUcnVlCi0gICAgICAgIGxvZ2dlci5pbmZvKCdDbGllbnQgaW5kaWNhdGlvbiBmaW5pc2hlZCcp
Ci0KLSAgICBkZWYgY3JlYXRlX2V2ZW50X2hhbmRsZXIoc2VsZiwgaGFuZGxlcl9uYW1lOiBzdHIp
IC0+IEV2ZW50SGFuZGxlcjoKLSAgICAgICAgZ2xvYmFsX2RpY3Q6IERpY3Rbc3RyLCBBbnldID0g
e30KLSAgICAgICAgd2l0aCBvcGVuKGhhbmRsZXJzX3BhdGggKyAnLycgKyBoYW5kbGVyX25hbWUp
IGFzIGY6Ci0gICAgICAgICAgICBleGVjKGYucmVhZCgpLCBnbG9iYWxfZGljdCkKLSAgICAgICAg
cmV0dXJuIEV2ZW50SGFuZGxlcihzZWxmLCBnbG9iYWxfZGljdCkKLQotICAgIGRlZiBpc19jbG9z
aW5nX29yX2Nsb3NlZChzZWxmKSAtPiBib29sOgotICAgICAgICBpZiBzZWxmLl9xdWljLl9jbG9z
ZV9wZW5kaW5nOgotICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgaWYgc2VsZi5fcXVp
Yy5fc3RhdGUgaW4gRU5EX1NUQVRFUzoKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAg
IHJldHVybiBGYWxzZQotCi0KLWNsYXNzIFNlc3Npb25UaWNrZXRTdG9yZToKLSAgICAnJycKLSAg
ICBTaW1wbGUgaW4tbWVtb3J5IHN0b3JlIGZvciBzZXNzaW9uIHRpY2tldHMuCi0gICAgJycnCi0K
LSAgICBkZWYgX19pbml0X18oc2VsZikgLT4gTm9uZToKLSAgICAgICAgc2VsZi50aWNrZXRzOiBE
aWN0W2J5dGVzLCBTZXNzaW9uVGlja2V0XSA9IHt9Ci0KLSAgICBkZWYgYWRkKHNlbGYsIHRpY2tl
dDogU2Vzc2lvblRpY2tldCkgLT4gTm9uZToKLSAgICAgICAgc2VsZi50aWNrZXRzW3RpY2tldC50
aWNrZXRdID0gdGlja2V0Ci0KLSAgICBkZWYgcG9wKHNlbGYsIGxhYmVsOiBieXRlcykgLT4gT3B0
aW9uYWxbU2Vzc2lvblRpY2tldF06Ci0gICAgICAgIHJldHVybiBzZWxmLnRpY2tldHMucG9wKGxh
YmVsLCBOb25lKQotCi0KLWRlZiBzdGFydCgqKmt3YXJnczogQW55KSAtPiBOb25lOgotICAgIGNv
bmZpZ3VyYXRpb24gPSBRdWljQ29uZmlndXJhdGlvbigKLSAgICAgICAgYWxwbl9wcm90b2NvbHM9
Wyd3cS12dnYtMDEnXSArIFsnc2lkdWNrJ10sCi0gICAgICAgIGlzX2NsaWVudD1GYWxzZSwKLSAg
ICAgICAgbWF4X2RhdGFncmFtX2ZyYW1lX3NpemU9NjU1MzYsCi0gICAgKQotCi0gICAgZ2xvYmFs
IGhhbmRsZXJzX3BhdGgKLSAgICBoYW5kbGVyc19wYXRoID0gb3MucGF0aC5hYnNwYXRoKG9zLnBh
dGguZXhwYW5kdXNlcigKLSAgICAgICAga3dhcmdzWydoYW5kbGVyc19wYXRoJ10pKQotICAgIGxv
Z2dlci5pbmZvKCdwb3J0ID0gJXMnLCBrd2FyZ3NbJ3BvcnQnXSkKLSAgICBsb2dnZXIuaW5mbygn
aGFuZGxlcnMgcGF0aCA9ICVzJywgaGFuZGxlcnNfcGF0aCkKLQotICAgICMgbG9hZCBTU0wgY2Vy
dGlmaWNhdGUgYW5kIGtleQotICAgIGNvbmZpZ3VyYXRpb24ubG9hZF9jZXJ0X2NoYWluKGt3YXJn
c1snY2VydGlmaWNhdGUnXSwga3dhcmdzWydwcml2YXRlX2tleSddKQotCi0gICAgdGlja2V0X3N0
b3JlID0gU2Vzc2lvblRpY2tldFN0b3JlKCkKLQotICAgIGxvb3AgPSBhc3luY2lvLmdldF9ldmVu
dF9sb29wKCkKLSAgICBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZSgKLSAgICAgICAgc2VydmUoCi0g
ICAgICAgICAgICBrd2FyZ3NbJ2hvc3QnXSwKLSAgICAgICAgICAgIGt3YXJnc1sncG9ydCddLAot
ICAgICAgICAgICAgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLAotICAgICAgICAgICAgY3Jl
YXRlX3Byb3RvY29sPVF1aWNUcmFuc3BvcnRQcm90b2NvbCwKLSAgICAgICAgICAgIHNlc3Npb25f
dGlja2V0X2ZldGNoZXI9dGlja2V0X3N0b3JlLnBvcCwKLSAgICAgICAgICAgIHNlc3Npb25fdGlj
a2V0X2hhbmRsZXI9dGlja2V0X3N0b3JlLmFkZCwKLSAgICAgICAgKQotICAgICkKLSAgICB0cnk6
Ci0gICAgICAgIGxvb3AucnVuX2ZvcmV2ZXIoKQotICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVw
dDoKLSAgICAgICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL3JlcXVpcmVtZW50cy50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvcmVxdWlyZW1lbnRz
LnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjViNjRjYjkwOWRiM2IzZDE5NmQy
YjYzZjBhNGYxZTM5ZmUwYjVlYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3F1aWMvcmVxdWlyZW1lbnRzLnR4dAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLWFp
b3F1aWM9PTAuOS4xMQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9xdWljL3NlcnZlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL3NlcnZlLnB5CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBmOWFlNzViYzRlODJjNTA0NzVhZWZkODFkNDE3ODExNjMxMTdkY2Jk
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9zZXJ2ZS5weQor
KysgL2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbjMKLQot
aW1wb3J0IGFyZ3BhcnNlCi1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi1m
cm9tIHR5cGluZyBpbXBvcnQgQW55Ci0KLV9kaXIgPSBvcy5wYXRoLmRpcm5hbWUoX19maWxlX18p
Ci0KLQotZGVmIGdldF9wYXJzZXIoKSAtPiBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcjoKLSAgICBw
YXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihkZXNjcmlwdGlvbj0nUVVJQyBzZXJ2ZXIn
KQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCi0gICAgICAgICctYycsCi0gICAgICAgICctLWNl
cnRpZmljYXRlJywKLSAgICAgICAgdHlwZT1zdHIsCi0gICAgICAgIGRlZmF1bHQ9b3MucGF0aC5q
b2luKF9kaXIsICdjZXJ0cycsICdjZXJ0LnBlbScpLAotICAgICAgICBoZWxwPSdsb2FkIHRoZSBU
TFMgY2VydGlmaWNhdGUgZnJvbSB0aGUgc3BlY2lmaWVkIGZpbGUnLAotICAgICkKLSAgICBwYXJz
ZXIuYWRkX2FyZ3VtZW50KAotICAgICAgICAnLS1ob3N0JywKLSAgICAgICAgdHlwZT1zdHIsCi0g
ICAgICAgIGRlZmF1bHQ9Jzo6JywKLSAgICAgICAgaGVscD0nbGlzdGVuIG9uIHRoZSBzcGVjaWZp
ZWQgYWRkcmVzcyAoZGVmYXVsdHMgdG8gOjopJywKLSAgICApCi0gICAgcGFyc2VyLmFkZF9hcmd1
bWVudCgKLSAgICAgICAgJy0tcG9ydCcsCi0gICAgICAgIHR5cGU9aW50LAotICAgICAgICBkZWZh
dWx0PTQ0MzMsCi0gICAgICAgIGhlbHA9J2xpc3RlbiBvbiB0aGUgc3BlY2lmaWVkIHBvcnQgKGRl
ZmF1bHRzIHRvIDQ0MzMpJywKLSAgICApCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKLSAgICAg
ICAgJy1rJywKLSAgICAgICAgJy0tcHJpdmF0ZS1rZXknLAotICAgICAgICB0eXBlPXN0ciwKLSAg
ICAgICAgZGVmYXVsdD1vcy5wYXRoLmpvaW4oX2RpciwgJ2NlcnRzJywgJ2NlcnQua2V5JyksCi0g
ICAgICAgIGhlbHA9J2xvYWQgdGhlIFRMUyBwcml2YXRlIGtleSBmcm9tIHRoZSBzcGVjaWZpZWQg
ZmlsZScsCi0gICAgKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCi0gICAgICAgICctLWhhbmRs
ZXJzLXBhdGgnLAotICAgICAgICB0eXBlPXN0ciwKLSAgICAgICAgZGVmYXVsdD1vcy5wYXRoLmpv
aW4oCi0gICAgICAgICAgICBfZGlyLCAnLi4nLCAnLi4nLCAnd2VidHJhbnNwb3J0JywgJ3F1aWMn
LCAnaGFuZGxlcnMnKSwKLSAgICAgICAgaGVscD0ndGhlIGRpcmVjdG9yeSBwYXRoIG9mIFF1aWNU
cmFuc3BvcnQgZXZlbnQgaGFuZGxlcnMnLAotICAgICkKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50
KAotICAgICAgICAnLXYnLAotICAgICAgICAnLS12ZXJib3NlJywKLSAgICAgICAgYWN0aW9uPSdz
dG9yZV90cnVlJywKLSAgICAgICAgaGVscD0naW5jcmVhc2UgbG9nZ2luZyB2ZXJib3NpdHknCi0g
ICAgKQotICAgIHJldHVybiBwYXJzZXIKLQotCi1kZWYgcnVuKHZlbnY6IEFueSwgKiprd2FyZ3M6
IEFueSkgLT4gTm9uZToKLSAgICAjIFRoZSB2ZW52IGFyZ3VtZW50IGlzIHBhc3NlZCB3aXRoIGB3
cHQgc2VydmUtcXVpYy10cmFuc3BvcnRgIGJ1dCBpcyB1bnVzZWQuCi0gICAgYXNzZXJ0IHN5cy52
ZXJzaW9uX2luZm8ubWFqb3IgPT0gMywgJ1FVSUMgc2VydmVyIG9ubHkgcnVucyBpbiBQeXRob24g
MycKLSAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKAotICAgICAgICBmb3JtYXQ9JyUoYXNjdGltZSlz
ICUobGV2ZWxuYW1lKXMgJShuYW1lKXMgJShtZXNzYWdlKXMnLAotICAgICAgICBsZXZlbD1sb2dn
aW5nLkRFQlVHIGlmIGt3YXJncy5nZXQoJ3ZlcmJvc2UnKSBlbHNlIGxvZ2dpbmcuSU5GTywKLSAg
ICApCi0KLSAgICAjIERlbGF5IGltcG9ydCBhZnRlciB2ZXJzaW9uIGNoZWNrIHRvIG1ha2UgdGhl
IGVycm9yIGVhc2llciB0byB1bmRlcnN0YW5kLgotICAgIGZyb20gLnF1aWNfdHJhbnNwb3J0X3Nl
cnZlciBpbXBvcnQgc3RhcnQKLSAgICBzdGFydCgqKmt3YXJncykKLQotCi1kZWYgbWFpbigpIC0+
IE5vbmU6Ci0gICAgIyBUaGlzIGlzIG9ubHkgdXNlZCB3aGVuIGV4ZWN1dGluZyB0aGUgc2NyaXB0
IGRpcmVjdGx5LiBVc2VycyBhcmUKLSAgICAjIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyB2ZW52
IHRoZW1zZWx2ZXMuIGB3cHQgc2VydmUtcXVpYy10cmFuc3BvcnRgIGRvZXMKLSAgICAjIE5PVCB1
c2UgdGhpcyBjb2RlIHBhdGguCi0gICAga3dhcmdzID0gdmFycyhnZXRfcGFyc2VyKCkucGFyc2Vf
YXJncygpKQotICAgIHJ1bihOb25lLCAqKmt3YXJncykKLQotCi1pZiBfX25hbWVfXyA9PSAnX19t
YWluX18nOgotICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9xdWljL3czYy1pbXBvcnQu
bG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjN2Q1NDU5ZTE1MWYyZTQyOTM5ZGU5
OTU3YjUxNTMzYWJhNmEwZGZmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcXVpYy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLVRo
ZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBv
c2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1J
bnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6
Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xz
L1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9U
IG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRp
ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1
aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZp
bGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cXVpYy9SRUFETUUubWQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3F1aWMvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3F1aWMvY29tbWFuZHMuanNvbgotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9xdWljX3RyYW5zcG9ydF9z
ZXJ2ZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3F1aWMvcmVxdWlyZW1lbnRzLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcXVpYy9zZXJ2ZS5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9yZXF1aXJlbWVudHNfcHl0
ZXN0LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcmVxdWlyZW1lbnRzX3B5dGVzdC50eHQKaW5kZXggNDJlYjQ1NzM5MTQ4YjkzOGYxZjllNDhm
ODM5YTE5MmFmYzlkN2NiMC4uN2MwY2NhYjYzNTEwMTI2YWI5MmMxYjRkYWFhY2FhMjY4ZmQ4NjIz
NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9yZXF1aXJlbWVudHNfcHl0ZXN0LnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3JlcXVpcmVtZW50c19weXRlc3QudHh0CkBA
IC0xLDMgKzEsMyBAQAogcHl0ZXN0PT02LjIuNQotcHl0ZXN0LWNvdj09Mi4xMi4xCi1oeXBvdGhl
c2lzPT02LjIzLjEKK3B5dGVzdC1jb3Y9PTMuMC4wCitoeXBvdGhlc2lzPT02LjMxLjMKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cmVxdWlyZW1lbnRzX3Rlc3RzLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcmVxdWlyZW1lbnRzX3Rlc3RzLnR4dAppbmRleCAyODBmMzk1N2Y3
ZWU3NDE3NzkwZWRhYmY2ZDJlZWI3MWVmOTJiZGM4Li4wNGUxMWViMTBlOGQxZWE1YjBhMmYwNzJi
M2RkYmZiMDExYjliMWRjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3JlcXVpcmVtZW50c190ZXN0cy50eHQKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9yZXF1aXJlbWVudHNf
dGVzdHMudHh0CkBAIC0xLDUgKzEsNSBAQAotanNvbi1lPT00LjQuMQoranNvbi1lPT00LjQuMwog
anNvbnNjaGVtYT09My4yLjAKIHB5eWFtbD09NS40LjEKLXJlcXVlc3RzPT0yLjI2LjAKK3JlcXVl
c3RzPT0yLjI3LjEKIHRhc2tjbHVzdGVyPT00NC4yLjIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcnVubmVyL2Nzcy93M2MtaW1w
b3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcnVubmVyL2Nzcy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggY2EwYzE4MTUyZGQ0MjkxMjhlMjEyNTQxM2YyYWI4YjcyYWMyMWQ2Zi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5lci9jc3MvdzNjLWltcG9ydC5sb2cKKysr
IC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkg
d2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhl
c2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1
ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0t
dGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMg
aW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmls
ZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5v
bmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5lci9jc3MvYm9vdHN0cmFwLXRoZW1l
Lm1pbi5jc3MKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3J1bm5lci9jc3MvYm9vdHN0cmFwLm1pbi5jc3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcnVubmVyL2ZvbnRzL3czYy1p
bXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9ydW5uZXIvZm9udHMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDRkYWYyNzIxM2JjNjM4MmNiYmNhYzg5Mzc0NWM4NmY1YmIzZTU3MjcuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9ydW5uZXIvZm9udHMvdzNjLWltcG9ydC5s
b2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJl
Y3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2Rp
ZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVs
bCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxh
dGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2Mt
dGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRo
aXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhl
czoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5lci9mb250cy9nbHlwaGlj
b25zLWhhbGZsaW5ncy1yZWd1bGFyLmVvdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcnVubmVyL2ZvbnRzL2dseXBoaWNvbnMtaGFsZmxpbmdzLXJl
Z3VsYXIuc3ZnCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9ydW5uZXIvZm9udHMvZ2x5cGhpY29ucy1oYWxmbGluZ3MtcmVndWxhci50dGYKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5lci9mb250
cy9nbHlwaGljb25zLWhhbGZsaW5ncy1yZWd1bGFyLndvZmYKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcnVubmVyL3czYy1pbXBv
cnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9ydW5uZXIvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0
NGIyYTU3NTFjM2Y5OGU0NzQwNmM3ZThjZjg4OGZlY2Q3Y2EwNzYuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9ydW5uZXIvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVs
bApAQCAtMSwyMiArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBv
cnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMg
ZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRo
ZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0
Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0
IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25l
Ci1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5lci9pbmRleC5odG1sCi0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9ydW5uZXIvcmVwb3J0LmNzcwotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcnVubmVyL3Jl
cG9ydC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcnVubmVyL3J1bm5lci5jc3MKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3J1bm5lci9ydW5uZXIuanMKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5lci91cGRhdGVfbWFuaWZlc3QucHkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvc2NyaXB0cy9pZDJwYXRoLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9zY3JpcHRzL2lkMnBhdGguanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDM5YjhkNjQ0YmM1MzNiZDQ4MDRlOWE0Nzg0OWQ3ZjgwYzQ2ZGVjYTEuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zY3JpcHRzL2lkMnBhdGguanMKKysr
IC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0KLXZhciBmcyA9IHJlcXVpcmUoImZzIikKLSwg
ICBwdGggPSByZXF1aXJlKCJwYXRoIikKLSwgICBpZCA9IHByb2Nlc3MuYXJndlsyXQotOwotCi1p
ZiAoIWlkKSB7Ci0gICAgY29uc29sZS5sb2coIk1pc3NpbmcgSUQiKTsKLSAgICBwcm9jZXNzLmV4
aXQoMSk7Ci19Ci0KLWNvbnNvbGUubG9nKEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKHB0aC5q
b2luKF9fZGlybmFtZSwgImlkMnBhdGguanNvbiIpLCAidXRmOCIpKVtpZF0pOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zY3Jp
cHRzL2lkMnBhdGguanNvbiBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvc2NyaXB0cy9pZDJwYXRoLmpzb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDQ5MWJkODY5NGM1N2VjOGIzZGU2YjhiMjE3ZTQwMDAyM2U3ODVhNGMuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zY3JpcHRzL2lkMnBhdGguanNvbgorKysg
L2Rldi9udWxsCkBAIC0xLDgyMiArMCwwIEBACi17Ci0gICAgImludHJvZHVjdGlvbiI6ICJtaWNy
b2RhdGEvaW50cm9kdWN0aW9uIiwKLSAgICAiYmFja2dyb3VuZCI6ICJodG1sL2ludHJvZHVjdGlv
bi9iYWNrZ3JvdW5kIiwKLSAgICAiYXVkaWVuY2UiOiAiaHRtbC9pbnRyb2R1Y3Rpb24vYXVkaWVu
Y2UiLAotICAgICJzY29wZSI6ICJodG1sL2ludHJvZHVjdGlvbi9zY29wZSIsCi0gICAgImhpc3Rv
cnktMCI6ICJodG1sL2ludHJvZHVjdGlvbi9oaXN0b3J5LTAiLAotICAgICJkZXNpZ24tbm90ZXMi
OiAiaHRtbC9pbnRyb2R1Y3Rpb24vZGVzaWduLW5vdGVzIiwKLSAgICAic2VyaWFsaXphYmlsaXR5
LW9mLXNjcmlwdC1leGVjdXRpb24iOiAiaHRtbC9pbnRyb2R1Y3Rpb24vZGVzaWduLW5vdGVzL3Nl
cmlhbGl6YWJpbGl0eS1vZi1zY3JpcHQtZXhlY3V0aW9uIiwKLSAgICAiY29tcGxpYW5jZS13aXRo
LW90aGVyLXNwZWNpZmljYXRpb25zIjogImh0bWwvaW50cm9kdWN0aW9uL2Rlc2lnbi1ub3Rlcy9j
b21wbGlhbmNlLXdpdGgtb3RoZXItc3BlY2lmaWNhdGlvbnMiLAotICAgICJodG1sLXZzLXhodG1s
IjogImh0bWwvaW50cm9kdWN0aW9uL2h0bWwtdnMteGh0bWwiLAotICAgICJzdHJ1Y3R1cmUtb2Yt
dGhpcy1zcGVjaWZpY2F0aW9uIjogImh0bWwvaW50cm9kdWN0aW9uL3N0cnVjdHVyZS1vZi10aGlz
LXNwZWNpZmljYXRpb24iLAotICAgICJob3ctdG8tcmVhZC10aGlzLXNwZWNpZmljYXRpb24iOiAi
aHRtbC9pbnRyb2R1Y3Rpb24vc3RydWN0dXJlLW9mLXRoaXMtc3BlY2lmaWNhdGlvbi9ob3ctdG8t
cmVhZC10aGlzLXNwZWNpZmljYXRpb24iLAotICAgICJ0eXBvZ3JhcGhpYy1jb252ZW50aW9ucyI6
ICJodG1sL2ludHJvZHVjdGlvbi9zdHJ1Y3R1cmUtb2YtdGhpcy1zcGVjaWZpY2F0aW9uL3R5cG9n
cmFwaGljLWNvbnZlbnRpb25zIiwKLSAgICAiZmluZ2VycHJpbnQiOiAiaHRtbC9pbnRyb2R1Y3Rp
b24vZmluZ2VycHJpbnQiLAotICAgICJhLXF1aWNrLWludHJvZHVjdGlvbi10by1odG1sIjogImh0
bWwvaW50cm9kdWN0aW9uL2EtcXVpY2staW50cm9kdWN0aW9uLXRvLWh0bWwiLAotICAgICJ3cml0
aW5nLXNlY3VyZS1hcHBsaWNhdGlvbnMtd2l0aC1odG1sIjogImh0bWwvaW50cm9kdWN0aW9uL2Et
cXVpY2staW50cm9kdWN0aW9uLXRvLWh0bWwvd3JpdGluZy1zZWN1cmUtYXBwbGljYXRpb25zLXdp
dGgtaHRtbCIsCi0gICAgImNvbW1vbi1waXRmYWxscy10by1hdm9pZC13aGVuLXVzaW5nLXRoZS1z
Y3JpcHRpbmctYXBpcyI6ICJodG1sL2ludHJvZHVjdGlvbi9hLXF1aWNrLWludHJvZHVjdGlvbi10
by1odG1sL2NvbW1vbi1waXRmYWxscy10by1hdm9pZC13aGVuLXVzaW5nLXRoZS1zY3JpcHRpbmct
YXBpcyIsCi0gICAgImNvbmZvcm1hbmNlLXJlcXVpcmVtZW50cy1mb3ItYXV0aG9ycyI6ICJodG1s
L2ludHJvZHVjdGlvbi9jb25mb3JtYW5jZS1yZXF1aXJlbWVudHMtZm9yLWF1dGhvcnMiLAotICAg
ICJwcmVzZW50YXRpb25hbC1tYXJrdXAiOiAiaHRtbC9pbnRyb2R1Y3Rpb24vY29uZm9ybWFuY2Ut
cmVxdWlyZW1lbnRzLWZvci1hdXRob3JzL3ByZXNlbnRhdGlvbmFsLW1hcmt1cCIsCi0gICAgInN5
bnRheC1lcnJvcnMiOiAiaHRtbC9pbnRyb2R1Y3Rpb24vY29uZm9ybWFuY2UtcmVxdWlyZW1lbnRz
LWZvci1hdXRob3JzL3N5bnRheC1lcnJvcnMiLAotICAgICJyZXN0cmljdGlvbnMtb24tY29udGVu
dC1tb2RlbHMtYW5kLW9uLWF0dHJpYnV0ZS12YWx1ZXMiOiAiaHRtbC9pbnRyb2R1Y3Rpb24vY29u
Zm9ybWFuY2UtcmVxdWlyZW1lbnRzLWZvci1hdXRob3JzL3Jlc3RyaWN0aW9ucy1vbi1jb250ZW50
LW1vZGVscy1hbmQtb24tYXR0cmlidXRlLXZhbHVlcyIsCi0gICAgInN1Z2dlc3RlZC1yZWFkaW5n
IjogImh0bWwvaW50cm9kdWN0aW9uL3N1Z2dlc3RlZC1yZWFkaW5nIiwKLSAgICAiaW5mcmFzdHJ1
Y3R1cmUiOiAiaHRtbC9pbmZyYXN0cnVjdHVyZSIsCi0gICAgInRlcm1pbm9sb2d5IjogIm1pY3Jv
ZGF0YS90ZXJtaW5vbG9neSIsCi0gICAgInJlc291cmNlcyI6ICJodG1sL2luZnJhc3RydWN0dXJl
L3Rlcm1pbm9sb2d5L3Jlc291cmNlcyIsCi0gICAgInhtbCI6ICJodG1sL2luZnJhc3RydWN0dXJl
L3Rlcm1pbm9sb2d5L3htbCIsCi0gICAgImRvbS10cmVlcyI6ICJodG1sL2luZnJhc3RydWN0dXJl
L3Rlcm1pbm9sb2d5L2RvbS10cmVlcyIsCi0gICAgInNjcmlwdGluZy0wIjogImh0bWwvaW5mcmFz
dHJ1Y3R1cmUvdGVybWlub2xvZ3kvc2NyaXB0aW5nLTAiLAotICAgICJwbHVnaW5zIjogImh0bWwv
aW5mcmFzdHJ1Y3R1cmUvdGVybWlub2xvZ3kvcGx1Z2lucyIsCi0gICAgImNoYXJhY3Rlci1lbmNv
ZGluZ3MiOiAiaHRtbC9pbmZyYXN0cnVjdHVyZS90ZXJtaW5vbG9neS9jaGFyYWN0ZXItZW5jb2Rp
bmdzIiwKLSAgICAiY29uZm9ybWFuY2UtcmVxdWlyZW1lbnRzIjogIm1pY3JvZGF0YS9jb25mb3Jt
YW5jZS1yZXF1aXJlbWVudHMiLAotICAgICJjb25mb3JtYW5jZS1jbGFzc2VzIjogImh0bWwvaW5m
cmFzdHJ1Y3R1cmUvY29uZm9ybWFuY2UtcmVxdWlyZW1lbnRzL2NvbmZvcm1hbmNlLWNsYXNzZXMi
LAotICAgICJkZXBlbmRlbmNpZXMiOiAibWljcm9kYXRhL2RlcGVuZGVuY2llcyIsCi0gICAgImV4
dGVuc2liaWxpdHkiOiAiaHRtbC9pbmZyYXN0cnVjdHVyZS9jb25mb3JtYW5jZS1yZXF1aXJlbWVu
dHMvZXh0ZW5zaWJpbGl0eSIsCi0gICAgImNhc2Utc2Vuc2l0aXZpdHktYW5kLXN0cmluZy1jb21w
YXJpc29uIjogImh0bWwvaW5mcmFzdHJ1Y3R1cmUvY2FzZS1zZW5zaXRpdml0eS1hbmQtc3RyaW5n
LWNvbXBhcmlzb24iLAotICAgICJ1dGYtOCI6ICJodG1sL2luZnJhc3RydWN0dXJlL3V0Zi04IiwK
LSAgICAiY29tbW9uLW1pY3Jvc3ludGF4ZXMiOiAiaHRtbC9pbmZyYXN0cnVjdHVyZS9jb21tb24t
bWljcm9zeW50YXhlcyIsCi0gICAgImNvbW1vbi1wYXJzZXItaWRpb21zIjogImh0bWwvaW5mcmFz
dHJ1Y3R1cmUvY29tbW9uLW1pY3Jvc3ludGF4ZXMvY29tbW9uLXBhcnNlci1pZGlvbXMiLAotICAg
ICJib29sZWFuLWF0dHJpYnV0ZXMiOiAiaHRtbC9pbmZyYXN0cnVjdHVyZS9jb21tb24tbWljcm9z
eW50YXhlcy9ib29sZWFuLWF0dHJpYnV0ZXMiLAotICAgICJrZXl3b3Jkcy1hbmQtZW51bWVyYXRl
ZC1hdHRyaWJ1dGVzIjogImh0bWwvaW5mcmFzdHJ1Y3R1cmUvY29tbW9uLW1pY3Jvc3ludGF4ZXMv
a2V5d29yZHMtYW5kLWVudW1lcmF0ZWQtYXR0cmlidXRlcyIsCi0gICAgIm51bWJlcnMiOiAiaHRt
bC9pbmZyYXN0cnVjdHVyZS9jb21tb24tbWljcm9zeW50YXhlcy9udW1iZXJzIiwKLSAgICAic2ln
bmVkLWludGVnZXJzIjogImh0bWwvaW5mcmFzdHJ1Y3R1cmUvY29tbW9uLW1pY3Jvc3ludGF4ZXMv
bnVtYmVycyIsCi0gICAgIm5vbi1uZWdhdGl2ZS1pbnRlZ2VycyI6ICJodG1sL2luZnJhc3RydWN0
dXJlL2NvbW1vbi1taWNyb3N5bnRheGVzL251bWJlcnMiLAotICAgICJmbG9hdGluZy1wb2ludC1u
dW1iZXJzIjogImh0bWwvaW5mcmFzdHJ1Y3R1cmUvY29tbW9uLW1pY3Jvc3ludGF4ZXMvbnVtYmVy
cyIsCi0gICAgInBlcmNlbnRhZ2VzLWFuZC1kaW1lbnNpb25zIjogImh0bWwvaW5mcmFzdHJ1Y3R1
cmUvY29tbW9uLW1pY3Jvc3ludGF4ZXMvbnVtYmVycyIsCi0gICAgImxpc3RzLW9mLWludGVnZXJz
IjogImh0bWwvaW5mcmFzdHJ1Y3R1cmUvY29tbW9uLW1pY3Jvc3ludGF4ZXMvbnVtYmVycyIsCi0g
ICAgImxpc3RzLW9mLWRpbWVuc2lvbnMiOiAiaHRtbC9pbmZyYXN0cnVjdHVyZS9jb21tb24tbWlj
cm9zeW50YXhlcy9udW1iZXJzIiwKLSAgICAiZGF0ZXMtYW5kLXRpbWVzIjogImh0bWwvaW5mcmFz
dHJ1Y3R1cmUvY29tbW9uLW1pY3Jvc3ludGF4ZXMvZGF0ZXMtYW5kLXRpbWVzIiwKLSAgICAibW9u
dGhzIjogImh0bWwvaW5mcmFzdHJ1Y3R1cmUvY29tbW9uLW1pY3Jvc3ludGF4ZXMvZGF0ZXMtYW5k
LXRpbWVzIiwKLSAgICAiZGF0ZXMiOiAiaHRtbC9pbmZyYXN0cnVjdHVyZS9jb21tb24tbWljcm9z
eW50YXhlcy9kYXRlcy1hbmQtdGltZXMiLAotICAgICJ5ZWFybGVzcy1kYXRlcyI6ICJodG1sL2lu
ZnJhc3RydWN0dXJlL2NvbW1vbi1taWNyb3N5bnRheGVzL2RhdGVzLWFuZC10aW1lcyIsCi0gICAg
InRpbWVzIjogImh0bWwvaW5mcmFzdHJ1Y3R1cmUvY29tbW9uLW1pY3Jvc3ludGF4ZXMvZGF0ZXMt
YW5kLXRpbWVzIiwKLSAgICAibG9jYWwtZGF0ZXMtYW5kLXRpbWVzIjogImh0bWwvaW5mcmFzdHJ1
Y3R1cmUvY29tbW9uLW1pY3Jvc3ludGF4ZXMvZGF0ZXMtYW5kLXRpbWVzIiwKLSAgICAidGltZS16
b25lcyI6ICJodG1sL2luZnJhc3RydWN0dXJlL2NvbW1vbi1taWNyb3N5bnRheGVzL2RhdGVzLWFu
ZC10aW1lcyIsCi0gICAgImdsb2JhbC1kYXRlcy1hbmQtdGltZXMiOiAiaHRtbC9pbmZyYXN0cnVj
dHVyZS9jb21tb24tbWljcm9zeW50YXhlcy9kYXRlcy1hbmQtdGltZXMiLAotICAgICJ3ZWVrcyI6
ICJodG1sL2luZnJhc3RydWN0dXJlL2NvbW1vbi1taWNyb3N5bnRheGVzL2RhdGVzLWFuZC10aW1l
cyIsCi0gICAgImR1cmF0aW9ucyI6ICJodG1sL2luZnJhc3RydWN0dXJlL2NvbW1vbi1taWNyb3N5
bnRheGVzL2RhdGVzLWFuZC10aW1lcyIsCi0gICAgInZhZ3Vlci1tb21lbnRzLWluLXRpbWUiOiAi
aHRtbC9pbmZyYXN0cnVjdHVyZS9jb21tb24tbWljcm9zeW50YXhlcy9kYXRlcy1hbmQtdGltZXMi
LAotICAgICJjb2xvcnMiOiAiaHRtbC9pbmZyYXN0cnVjdHVyZS9jb21tb24tbWljcm9zeW50YXhl
cy9jb2xvcnMiLAotICAgICJzcGFjZS1zZXBhcmF0ZWQtdG9rZW5zIjogImh0bWwvaW5mcmFzdHJ1
Y3R1cmUvY29tbW9uLW1pY3Jvc3ludGF4ZXMvc3BhY2Utc2VwYXJhdGVkLXRva2VucyIsCi0gICAg
ImNvbW1hLXNlcGFyYXRlZC10b2tlbnMiOiAiaHRtbC9pbmZyYXN0cnVjdHVyZS9jb21tb24tbWlj
cm9zeW50YXhlcy9jb21tYS1zZXBhcmF0ZWQtdG9rZW5zIiwKLSAgICAic3ludGF4LXJlZmVyZW5j
ZXMiOiAiaHRtbC9pbmZyYXN0cnVjdHVyZS9jb21tb24tbWljcm9zeW50YXhlcy9zeW50YXgtcmVm
ZXJlbmNlcyIsCi0gICAgIm1xIjogImh0bWwvaW5mcmFzdHJ1Y3R1cmUvY29tbW9uLW1pY3Jvc3lu
dGF4ZXMvbXEiLAotICAgICJ1cmxzIjogImh0bWwvaW5mcmFzdHJ1Y3R1cmUvdXJscyIsCi0gICAg
InRlcm1pbm9sb2d5LTAiOiAiaHRtbC9pbmZyYXN0cnVjdHVyZS91cmxzL3Rlcm1pbm9sb2d5LTAi
LAotICAgICJwYXJzaW5nLXVybHMiOiAiaHRtbC9pbmZyYXN0cnVjdHVyZS91cmxzL3BhcnNpbmct
dXJscyIsCi0gICAgImJhc2UtdXJscyI6ICJodG1sL2luZnJhc3RydWN0dXJlL3VybHMvYmFzZS11
cmxzIiwKLSAgICAicmVzb2x2aW5nLXVybHMiOiAiaHRtbC9pbmZyYXN0cnVjdHVyZS91cmxzL3Jl
c29sdmluZy11cmxzIiwKLSAgICAidXJsLW1hbmlwdWxhdGlvbi1hbmQtY3JlYXRpb24iOiAiaHRt
bC9pbmZyYXN0cnVjdHVyZS91cmxzL3VybC1tYW5pcHVsYXRpb24tYW5kLWNyZWF0aW9uIiwKLSAg
ICAiZHluYW1pYy1jaGFuZ2VzLXRvLWJhc2UtdXJscyI6ICJodG1sL2luZnJhc3RydWN0dXJlL3Vy
bHMvZHluYW1pYy1jaGFuZ2VzLXRvLWJhc2UtdXJscyIsCi0gICAgImludGVyZmFjZXMtZm9yLXVy
bC1tYW5pcHVsYXRpb24iOiAiaHRtbC9pbmZyYXN0cnVjdHVyZS91cmxzL2ludGVyZmFjZXMtZm9y
LXVybC1tYW5pcHVsYXRpb24iLAotICAgICJmZXRjaGluZy1yZXNvdXJjZXMiOiAiaHRtbC9pbmZy
YXN0cnVjdHVyZS9mZXRjaGluZy1yZXNvdXJjZXMiLAotICAgICJ0ZXJtaW5vbG9neS0xIjogImh0
bWwvaW5mcmFzdHJ1Y3R1cmUvZmV0Y2hpbmctcmVzb3VyY2VzL3Rlcm1pbm9sb2d5LTEiLAotICAg
ICJwcm9jZXNzaW5nLW1vZGVsIjogImh0bWwvaW5mcmFzdHJ1Y3R1cmUvZmV0Y2hpbmctcmVzb3Vy
Y2VzL3Byb2Nlc3NpbmctbW9kZWwiLAotICAgICJlbmNyeXB0ZWQtaHR0cC1hbmQtcmVsYXRlZC1z
ZWN1cml0eS1jb25jZXJucyI6ICJodG1sL2luZnJhc3RydWN0dXJlL2ZldGNoaW5nLXJlc291cmNl
cy9lbmNyeXB0ZWQtaHR0cC1hbmQtcmVsYXRlZC1zZWN1cml0eS1jb25jZXJucyIsCi0gICAgImNv
bnRlbnQtdHlwZS1zbmlmZmluZyI6ICJodG1sL2luZnJhc3RydWN0dXJlL2ZldGNoaW5nLXJlc291
cmNlcy9jb250ZW50LXR5cGUtc25pZmZpbmciLAotICAgICJleHRyYWN0aW5nLWNoYXJhY3Rlci1l
bmNvZGluZ3MtZnJvbS1tZXRhLWVsZW1lbnRzIjogImh0bWwvaW5mcmFzdHJ1Y3R1cmUvZmV0Y2hp
bmctcmVzb3VyY2VzL2V4dHJhY3RpbmctY2hhcmFjdGVyLWVuY29kaW5ncy1mcm9tLW1ldGEtZWxl
bWVudHMiLAotICAgICJjb3JzLXNldHRpbmdzLWF0dHJpYnV0ZXMiOiAiaHRtbC9pbmZyYXN0cnVj
dHVyZS9mZXRjaGluZy1yZXNvdXJjZXMvY29ycy1zZXR0aW5ncy1hdHRyaWJ1dGVzIiwKLSAgICAi
Y29ycy1lbmFibGVkLWZldGNoIjogImh0bWwvaW5mcmFzdHJ1Y3R1cmUvZmV0Y2hpbmctcmVzb3Vy
Y2VzL2NvcnMtZW5hYmxlZC1mZXRjaCIsCi0gICAgImNvbW1vbi1kb20taW50ZXJmYWNlcyI6ICJo
dG1sL2luZnJhc3RydWN0dXJlL2NvbW1vbi1kb20taW50ZXJmYWNlcyIsCi0gICAgInJlZmxlY3Rp
bmctY29udGVudC1hdHRyaWJ1dGVzLWluLWlkbC1hdHRyaWJ1dGVzIjogImh0bWwvaW5mcmFzdHJ1
Y3R1cmUvY29tbW9uLWRvbS1pbnRlcmZhY2VzL3JlZmxlY3RpbmctY29udGVudC1hdHRyaWJ1dGVz
LWluLWlkbC1hdHRyaWJ1dGVzIiwKLSAgICAiY29sbGVjdGlvbnMiOiAiaHRtbC9pbmZyYXN0cnVj
dHVyZS9jb21tb24tZG9tLWludGVyZmFjZXMvY29sbGVjdGlvbnMiLAotICAgICJodG1sYWxsY29s
bGVjdGlvbiI6ICJodG1sL2luZnJhc3RydWN0dXJlL2NvbW1vbi1kb20taW50ZXJmYWNlcy9jb2xs
ZWN0aW9ucyIsCi0gICAgImh0bWxmb3JtY29udHJvbHNjb2xsZWN0aW9uIjogImh0bWwvaW5mcmFz
dHJ1Y3R1cmUvY29tbW9uLWRvbS1pbnRlcmZhY2VzL2NvbGxlY3Rpb25zIiwKLSAgICAiaHRtbG9w
dGlvbnNjb2xsZWN0aW9uIjogImh0bWwvaW5mcmFzdHJ1Y3R1cmUvY29tbW9uLWRvbS1pbnRlcmZh
Y2VzL2NvbGxlY3Rpb25zIiwKLSAgICAiZG9tc3RyaW5nbWFwIjogImh0bWwvaW5mcmFzdHJ1Y3R1
cmUvY29tbW9uLWRvbS1pbnRlcmZhY2VzL2RvbXN0cmluZ21hcCIsCi0gICAgInRyYW5zZmVyYWJs
ZS1vYmplY3RzIjogImh0bWwvaW5mcmFzdHJ1Y3R1cmUvY29tbW9uLWRvbS1pbnRlcmZhY2VzL3Ry
YW5zZmVyYWJsZS1vYmplY3RzIiwKLSAgICAic2FmZS1wYXNzaW5nLW9mLXN0cnVjdHVyZWQtZGF0
YSI6ICJodG1sL2luZnJhc3RydWN0dXJlL2NvbW1vbi1kb20taW50ZXJmYWNlcy9zYWZlLXBhc3Np
bmctb2Ytc3RydWN0dXJlZC1kYXRhIiwKLSAgICAiZ2FyYmFnZS1jb2xsZWN0aW9uIjogImh0bWwv
aW5mcmFzdHJ1Y3R1cmUvY29tbW9uLWRvbS1pbnRlcmZhY2VzL2dhcmJhZ2UtY29sbGVjdGlvbiIs
Ci0gICAgIm5hbWVzcGFjZXMiOiAiaHRtbC9pbmZyYXN0cnVjdHVyZS9uYW1lc3BhY2VzIiwKLSAg
ICAiZG9tIjogImh0bWwvZG9tIiwKLSAgICAiZG9jdW1lbnRzIjogImh0bWwvZG9tL2RvY3VtZW50
cyIsCi0gICAgInRoZS1kb2N1bWVudC1vYmplY3QiOiAiaHRtbC9kb20vZG9jdW1lbnRzL3RoZS1k
b2N1bWVudC1vYmplY3QiLAotICAgICJzZWN1cml0eS1kb2N1bWVudCI6ICJodG1sL2RvbS9kb2N1
bWVudHMvc2VjdXJpdHktZG9jdW1lbnQiLAotICAgICJyZXNvdXJjZS1tZXRhZGF0YS1tYW5hZ2Vt
ZW50IjogImh0bWwvZG9tL2RvY3VtZW50cy9yZXNvdXJjZS1tZXRhZGF0YS1tYW5hZ2VtZW50IiwK
LSAgICAiZG9tLXRyZWUtYWNjZXNzb3JzIjogImh0bWwvZG9tL2RvY3VtZW50cy9kb20tdHJlZS1h
Y2Nlc3NvcnMiLAotICAgICJsb2FkaW5nLXhtbC1kb2N1bWVudHMiOiAiaHRtbC9kb20vZG9jdW1l
bnRzL2xvYWRpbmcteG1sLWRvY3VtZW50cyIsCi0gICAgImVsZW1lbnRzIjogImh0bWwvZG9tL2Vs
ZW1lbnRzIiwKLSAgICAic2VtYW50aWNzLTAiOiAiaHRtbC9kb20vZWxlbWVudHMvc2VtYW50aWNz
LTAiLAotICAgICJlbGVtZW50cy1pbi10aGUtZG9tIjogImh0bWwvZG9tL2VsZW1lbnRzL2VsZW1l
bnRzLWluLXRoZS1kb20iLAotICAgICJnbG9iYWwtYXR0cmlidXRlcyI6ICJodG1sL2RvbS9lbGVt
ZW50cy9nbG9iYWwtYXR0cmlidXRlcyIsCi0gICAgInRoZS1pZC1hdHRyaWJ1dGUiOiAiaHRtbC9k
b20vZWxlbWVudHMvZ2xvYmFsLWF0dHJpYnV0ZXMiLAotICAgICJ0aGUtdGl0bGUtYXR0cmlidXRl
IjogImh0bWwvZG9tL2VsZW1lbnRzL2dsb2JhbC1hdHRyaWJ1dGVzIiwKLSAgICAidGhlLWxhbmct
YW5kLXhtbDpsYW5nLWF0dHJpYnV0ZXMiOiAiaHRtbC9kb20vZWxlbWVudHMvZ2xvYmFsLWF0dHJp
YnV0ZXMiLAotICAgICJ0aGUtdHJhbnNsYXRlLWF0dHJpYnV0ZSI6ICJodG1sL2RvbS9lbGVtZW50
cy9nbG9iYWwtYXR0cmlidXRlcyIsCi0gICAgInRoZS14bWw6YmFzZS1hdHRyaWJ1dGUtKHhtbC1v
bmx5KSI6ICJodG1sL2RvbS9lbGVtZW50cy9nbG9iYWwtYXR0cmlidXRlcyIsCi0gICAgInRoZS1k
aXItYXR0cmlidXRlIjogImh0bWwvZG9tL2VsZW1lbnRzL2dsb2JhbC1hdHRyaWJ1dGVzIiwKLSAg
ICAiY2xhc3NlcyI6ICJodG1sL2RvbS9lbGVtZW50cy9nbG9iYWwtYXR0cmlidXRlcyIsCi0gICAg
InRoZS1zdHlsZS1hdHRyaWJ1dGUiOiAiaHRtbC9kb20vZWxlbWVudHMvZ2xvYmFsLWF0dHJpYnV0
ZXMiLAotICAgICJlbWJlZGRpbmctY3VzdG9tLW5vbi12aXNpYmxlLWRhdGEtd2l0aC10aGUtZGF0
YS0qLWF0dHJpYnV0ZXMiOiAiaHRtbC9kb20vZWxlbWVudHMvZ2xvYmFsLWF0dHJpYnV0ZXMiLAot
ICAgICJlbGVtZW50LWRlZmluaXRpb25zIjogImh0bWwvZG9tL2VsZW1lbnRzL2VsZW1lbnQtZGVm
aW5pdGlvbnMiLAotICAgICJhdHRyaWJ1dGVzIjogImh0bWwvZG9tL2VsZW1lbnRzL2VsZW1lbnQt
ZGVmaW5pdGlvbnMiLAotICAgICJjb250ZW50LW1vZGVscyI6ICJodG1sL2RvbS9lbGVtZW50cy9j
b250ZW50LW1vZGVscyIsCi0gICAgImtpbmRzLW9mLWNvbnRlbnQiOiAiaHRtbC9kb20vZWxlbWVu
dHMvY29udGVudC1tb2RlbHMiLAotICAgICJtZXRhZGF0YS1jb250ZW50IjogImh0bWwvZG9tL2Vs
ZW1lbnRzL2NvbnRlbnQtbW9kZWxzIiwKLSAgICAiZmxvdy1jb250ZW50IjogImh0bWwvZG9tL2Vs
ZW1lbnRzL2NvbnRlbnQtbW9kZWxzIiwKLSAgICAic2VjdGlvbmluZy1jb250ZW50IjogImh0bWwv
ZG9tL2VsZW1lbnRzL2NvbnRlbnQtbW9kZWxzIiwKLSAgICAiaGVhZGluZy1jb250ZW50IjogImh0
bWwvZG9tL2VsZW1lbnRzL2NvbnRlbnQtbW9kZWxzIiwKLSAgICAicGhyYXNpbmctY29udGVudCI6
ICJodG1sL2RvbS9lbGVtZW50cy9jb250ZW50LW1vZGVscyIsCi0gICAgImVtYmVkZGVkLWNvbnRl
bnQiOiAiaHRtbC9kb20vZWxlbWVudHMvY29udGVudC1tb2RlbHMiLAotICAgICJpbnRlcmFjdGl2
ZS1jb250ZW50IjogImh0bWwvZG9tL2VsZW1lbnRzL2NvbnRlbnQtbW9kZWxzIiwKLSAgICAicGFs
cGFibGUtY29udGVudCI6ICJodG1sL2RvbS9lbGVtZW50cy9jb250ZW50LW1vZGVscyIsCi0gICAg
InRyYW5zcGFyZW50LWNvbnRlbnQtbW9kZWxzIjogImh0bWwvZG9tL2VsZW1lbnRzL2NvbnRlbnQt
bW9kZWxzIiwKLSAgICAicGFyYWdyYXBocyI6ICJodG1sL2RvbS9lbGVtZW50cy9jb250ZW50LW1v
ZGVscyIsCi0gICAgInJlcXVpcmVtZW50cy1yZWxhdGluZy10by1iaWRpcmVjdGlvbmFsLWFsZ29y
aXRobS1mb3JtYXR0aW5nLWNoYXJhY3RlcnMiOiAiaHRtbC9kb20vZWxlbWVudHMvcmVxdWlyZW1l
bnRzLXJlbGF0aW5nLXRvLWJpZGlyZWN0aW9uYWwtYWxnb3JpdGhtLWZvcm1hdHRpbmctY2hhcmFj
dGVycyIsCi0gICAgIndhaS1hcmlhIjogImh0bWwvZG9tL2VsZW1lbnRzL3dhaS1hcmlhIiwKLSAg
ICAiYXJpYS1yb2xlLWF0dHJpYnV0ZSI6ICJodG1sL2RvbS9lbGVtZW50cy93YWktYXJpYSIsCi0g
ICAgInN0YXRlLWFuZC1wcm9wZXJ0eS1hdHRyaWJ1dGVzIjogImh0bWwvZG9tL2VsZW1lbnRzL3dh
aS1hcmlhIiwKLSAgICAic2VjLXN0cm9uZy1uYXRpdmUtc2VtYW50aWNzIjogImh0bWwvZG9tL2Vs
ZW1lbnRzL3dhaS1hcmlhIiwKLSAgICAic2VjLWltcGxpY2l0LWFyaWEtc2VtYW50aWNzIjogImh0
bWwvZG9tL2VsZW1lbnRzL3dhaS1hcmlhIiwKLSAgICAiaW50ZXJhY3Rpb25zLXdpdGgteHBhdGgt
YW5kLXhzbHQiOiAiaHRtbC9kb20vaW50ZXJhY3Rpb25zLXdpdGgteHBhdGgtYW5kLXhzbHQiLAot
ICAgICJkeW5hbWljLW1hcmt1cC1pbnNlcnRpb24iOiAiaHRtbC9kb20vZHluYW1pYy1tYXJrdXAt
aW5zZXJ0aW9uIiwKLSAgICAib3BlbmluZy10aGUtaW5wdXQtc3RyZWFtIjogImh0bWwvZG9tL2R5
bmFtaWMtbWFya3VwLWluc2VydGlvbi9vcGVuaW5nLXRoZS1pbnB1dC1zdHJlYW0iLAotICAgICJj
bG9zaW5nLXRoZS1pbnB1dC1zdHJlYW0iOiAiaHRtbC9kb20vZHluYW1pYy1tYXJrdXAtaW5zZXJ0
aW9uL2Nsb3NpbmctdGhlLWlucHV0LXN0cmVhbSIsCi0gICAgImRvY3VtZW50LndyaXRlKCkiOiAi
aHRtbC9kb20vZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uL2RvY3VtZW50LXdyaXRlIiwKLSAgICAi
ZG9jdW1lbnQud3JpdGVsbigpIjogImh0bWwvZG9tL2R5bmFtaWMtbWFya3VwLWluc2VydGlvbi9k
b2N1bWVudC13cml0ZWxuIiwKLSAgICAic2VtYW50aWNzIjogImh0bWwvc2VtYW50aWNzIiwKLSAg
ICAidGhlLXJvb3QtZWxlbWVudCI6ICJodG1sL3NlbWFudGljcy90aGUtcm9vdC1lbGVtZW50IiwK
LSAgICAidGhlLWh0bWwtZWxlbWVudCI6ICJodG1sL3NlbWFudGljcy90aGUtcm9vdC1lbGVtZW50
L3RoZS1odG1sLWVsZW1lbnQiLAotICAgICJkb2N1bWVudC1tZXRhZGF0YSI6ICJodG1sL3NlbWFu
dGljcy9kb2N1bWVudC1tZXRhZGF0YSIsCi0gICAgInRoZS1oZWFkLWVsZW1lbnQiOiAiaHRtbC9z
ZW1hbnRpY3MvZG9jdW1lbnQtbWV0YWRhdGEvdGhlLWhlYWQtZWxlbWVudCIsCi0gICAgInRoZS10
aXRsZS1lbGVtZW50IjogImh0bWwvc2VtYW50aWNzL2RvY3VtZW50LW1ldGFkYXRhL3RoZS10aXRs
ZS1lbGVtZW50IiwKLSAgICAidGhlLWJhc2UtZWxlbWVudCI6ICJodG1sL3NlbWFudGljcy9kb2N1
bWVudC1tZXRhZGF0YS90aGUtYmFzZS1lbGVtZW50IiwKLSAgICAidGhlLWxpbmstZWxlbWVudCI6
ICJodG1sL3NlbWFudGljcy9kb2N1bWVudC1tZXRhZGF0YS90aGUtbGluay1lbGVtZW50IiwKLSAg
ICAidGhlLW1ldGEtZWxlbWVudCI6ICJodG1sL3NlbWFudGljcy9kb2N1bWVudC1tZXRhZGF0YS90
aGUtbWV0YS1lbGVtZW50IiwKLSAgICAic3RhbmRhcmQtbWV0YWRhdGEtbmFtZXMiOiAiaHRtbC9z
ZW1hbnRpY3MvZG9jdW1lbnQtbWV0YWRhdGEvdGhlLW1ldGEtZWxlbWVudCIsCi0gICAgIm90aGVy
LW1ldGFkYXRhLW5hbWVzIjogImh0bWwvc2VtYW50aWNzL2RvY3VtZW50LW1ldGFkYXRhL3RoZS1t
ZXRhLWVsZW1lbnQiLAotICAgICJwcmFnbWEtZGlyZWN0aXZlcyI6ICJodG1sL3NlbWFudGljcy9k
b2N1bWVudC1tZXRhZGF0YS90aGUtbWV0YS1lbGVtZW50IiwKLSAgICAib3RoZXItcHJhZ21hLWRp
cmVjdGl2ZXMiOiAiaHRtbC9zZW1hbnRpY3MvZG9jdW1lbnQtbWV0YWRhdGEvdGhlLW1ldGEtZWxl
bWVudCIsCi0gICAgImNoYXJzZXQiOiAiaHRtbC9zZW1hbnRpY3MvZG9jdW1lbnQtbWV0YWRhdGEv
dGhlLW1ldGEtZWxlbWVudCIsCi0gICAgInRoZS1zdHlsZS1lbGVtZW50IjogImh0bWwvc2VtYW50
aWNzL2RvY3VtZW50LW1ldGFkYXRhL3RoZS1zdHlsZS1lbGVtZW50IiwKLSAgICAic3R5bGluZyI6
ICJodG1sL3NlbWFudGljcy9kb2N1bWVudC1tZXRhZGF0YS9zdHlsaW5nIiwKLSAgICAic2NyaXB0
aW5nLTEiOiAiaHRtbC9zZW1hbnRpY3Mvc2NyaXB0aW5nLTEiLAotICAgICJ0aGUtc2NyaXB0LWVs
ZW1lbnQiOiAiaHRtbC9zZW1hbnRpY3Mvc2NyaXB0aW5nLTEvdGhlLXNjcmlwdC1lbGVtZW50IiwK
LSAgICAic2NyaXB0aW5nTGFuZ3VhZ2VzIjogImh0bWwvc2VtYW50aWNzL3NjcmlwdGluZy0xL3Ro
ZS1zY3JpcHQtZWxlbWVudCIsCi0gICAgInJlc3RyaWN0aW9ucy1mb3ItY29udGVudHMtb2Ytc2Ny
aXB0LWVsZW1lbnRzIjogImh0bWwvc2VtYW50aWNzL3NjcmlwdGluZy0xL3RoZS1zY3JpcHQtZWxl
bWVudCIsCi0gICAgImlubGluZS1kb2N1bWVudGF0aW9uLWZvci1leHRlcm5hbC1zY3JpcHRzIjog
Imh0bWwvc2VtYW50aWNzL3NjcmlwdGluZy0xL3RoZS1zY3JpcHQtZWxlbWVudCIsCi0gICAgInNj
cmlwdFRhZ1hTTFQiOiAiaHRtbC9zZW1hbnRpY3Mvc2NyaXB0aW5nLTEvdGhlLXNjcmlwdC1lbGVt
ZW50IiwKLSAgICAidGhlLW5vc2NyaXB0LWVsZW1lbnQiOiAiaHRtbC9zZW1hbnRpY3Mvc2NyaXB0
aW5nLTEvdGhlLW5vc2NyaXB0LWVsZW1lbnQiLAotICAgICJzZWN0aW9ucyI6ICJodG1sL3NlbWFu
dGljcy9zZWN0aW9ucyIsCi0gICAgInRoZS1ib2R5LWVsZW1lbnQiOiAiaHRtbC9zZW1hbnRpY3Mv
c2VjdGlvbnMvdGhlLWJvZHktZWxlbWVudCIsCi0gICAgInRoZS1hcnRpY2xlLWVsZW1lbnQiOiAi
aHRtbC9zZW1hbnRpY3Mvc2VjdGlvbnMvdGhlLWFydGljbGUtZWxlbWVudCIsCi0gICAgInRoZS1z
ZWN0aW9uLWVsZW1lbnQiOiAiaHRtbC9zZW1hbnRpY3Mvc2VjdGlvbnMvdGhlLXNlY3Rpb24tZWxl
bWVudCIsCi0gICAgInRoZS1uYXYtZWxlbWVudCI6ICJodG1sL3NlbWFudGljcy9zZWN0aW9ucy90
aGUtbmF2LWVsZW1lbnQiLAotICAgICJ0aGUtYXNpZGUtZWxlbWVudCI6ICJodG1sL3NlbWFudGlj
cy9zZWN0aW9ucy90aGUtYXNpZGUtZWxlbWVudCIsCi0gICAgInRoZS1oMSwtaDIsLWgzLC1oNCwt
aDUsLWFuZC1oNi1lbGVtZW50cyI6ICJodG1sL3NlbWFudGljcy9zZWN0aW9ucy90aGUtaDEtaDIt
aDMtaDQtaDUtYW5kLWg2LWVsZW1lbnRzIiwKLSAgICAidGhlLWhncm91cC1lbGVtZW50IjogImh0
bWwvc2VtYW50aWNzL3NlY3Rpb25zL3RoZS1oZ3JvdXAtZWxlbWVudCIsCi0gICAgInRoZS1oZWFk
ZXItZWxlbWVudCI6ICJodG1sL3NlbWFudGljcy9zZWN0aW9ucy90aGUtaGVhZGVyLWVsZW1lbnQi
LAotICAgICJ0aGUtZm9vdGVyLWVsZW1lbnQiOiAiaHRtbC9zZW1hbnRpY3Mvc2VjdGlvbnMvdGhl
LWZvb3Rlci1lbGVtZW50IiwKLSAgICAidGhlLWFkZHJlc3MtZWxlbWVudCI6ICJodG1sL3NlbWFu
dGljcy9zZWN0aW9ucy90aGUtYWRkcmVzcy1lbGVtZW50IiwKLSAgICAiaGVhZGluZ3MtYW5kLXNl
Y3Rpb25zIjogImh0bWwvc2VtYW50aWNzL3NlY3Rpb25zL2hlYWRpbmdzLWFuZC1zZWN0aW9ucyIs
Ci0gICAgIm91dGxpbmVzIjogImh0bWwvc2VtYW50aWNzL3NlY3Rpb25zL2hlYWRpbmdzLWFuZC1z
ZWN0aW9ucyIsCi0gICAgInVzYWdlLXN1bW1hcnktMCI6ICJodG1sL3NlbWFudGljcy9zZWN0aW9u
cy91c2FnZS1zdW1tYXJ5LTAiLAotICAgICJncm91cGluZy1jb250ZW50IjogImh0bWwvc2VtYW50
aWNzL2dyb3VwaW5nLWNvbnRlbnQiLAotICAgICJ0aGUtcC1lbGVtZW50IjogImh0bWwvc2VtYW50
aWNzL2dyb3VwaW5nLWNvbnRlbnQvdGhlLXAtZWxlbWVudCIsCi0gICAgInRoZS1oci1lbGVtZW50
IjogImh0bWwvc2VtYW50aWNzL2dyb3VwaW5nLWNvbnRlbnQvdGhlLWhyLWVsZW1lbnQiLAotICAg
ICJ0aGUtcHJlLWVsZW1lbnQiOiAiaHRtbC9zZW1hbnRpY3MvZ3JvdXBpbmctY29udGVudC90aGUt
cHJlLWVsZW1lbnQiLAotICAgICJ0aGUtYmxvY2txdW90ZS1lbGVtZW50IjogImh0bWwvc2VtYW50
aWNzL2dyb3VwaW5nLWNvbnRlbnQvdGhlLWJsb2NrcXVvdGUtZWxlbWVudCIsCi0gICAgInRoZS1v
bC1lbGVtZW50IjogImh0bWwvc2VtYW50aWNzL2dyb3VwaW5nLWNvbnRlbnQvdGhlLW9sLWVsZW1l
bnQiLAotICAgICJ0aGUtdWwtZWxlbWVudCI6ICJodG1sL3NlbWFudGljcy9ncm91cGluZy1jb250
ZW50L3RoZS11bC1lbGVtZW50IiwKLSAgICAidGhlLWxpLWVsZW1lbnQiOiAiaHRtbC9zZW1hbnRp
Y3MvZ3JvdXBpbmctY29udGVudC90aGUtbGktZWxlbWVudCIsCi0gICAgInRoZS1kbC1lbGVtZW50
IjogImh0bWwvc2VtYW50aWNzL2dyb3VwaW5nLWNvbnRlbnQvdGhlLWRsLWVsZW1lbnQiLAotICAg
ICJ0aGUtZHQtZWxlbWVudCI6ICJodG1sL3NlbWFudGljcy9ncm91cGluZy1jb250ZW50L3RoZS1k
dC1lbGVtZW50IiwKLSAgICAidGhlLWRkLWVsZW1lbnQiOiAiaHRtbC9zZW1hbnRpY3MvZ3JvdXBp
bmctY29udGVudC90aGUtZGQtZWxlbWVudCIsCi0gICAgInRoZS1maWd1cmUtZWxlbWVudCI6ICJo
dG1sL3NlbWFudGljcy9ncm91cGluZy1jb250ZW50L3RoZS1maWd1cmUtZWxlbWVudCIsCi0gICAg
InRoZS1maWdjYXB0aW9uLWVsZW1lbnQiOiAiaHRtbC9zZW1hbnRpY3MvZ3JvdXBpbmctY29udGVu
dC90aGUtZmlnY2FwdGlvbi1lbGVtZW50IiwKLSAgICAidGhlLWRpdi1lbGVtZW50IjogImh0bWwv
c2VtYW50aWNzL2dyb3VwaW5nLWNvbnRlbnQvdGhlLWRpdi1lbGVtZW50IiwKLSAgICAidGV4dC1s
ZXZlbC1zZW1hbnRpY3MiOiAiaHRtbC9zZW1hbnRpY3MvdGV4dC1sZXZlbC1zZW1hbnRpY3MiLAot
ICAgICJ0aGUtYS1lbGVtZW50IjogImh0bWwvc2VtYW50aWNzL3RleHQtbGV2ZWwtc2VtYW50aWNz
L3RoZS1hLWVsZW1lbnQiLAotICAgICJ0aGUtZW0tZWxlbWVudCI6ICJodG1sL3NlbWFudGljcy90
ZXh0LWxldmVsLXNlbWFudGljcy90aGUtZW0tZWxlbWVudCIsCi0gICAgInRoZS1zdHJvbmctZWxl
bWVudCI6ICJodG1sL3NlbWFudGljcy90ZXh0LWxldmVsLXNlbWFudGljcy90aGUtc3Ryb25nLWVs
ZW1lbnQiLAotICAgICJ0aGUtc21hbGwtZWxlbWVudCI6ICJodG1sL3NlbWFudGljcy90ZXh0LWxl
dmVsLXNlbWFudGljcy90aGUtc21hbGwtZWxlbWVudCIsCi0gICAgInRoZS1zLWVsZW1lbnQiOiAi
aHRtbC9zZW1hbnRpY3MvdGV4dC1sZXZlbC1zZW1hbnRpY3MvdGhlLXMtZWxlbWVudCIsCi0gICAg
InRoZS1jaXRlLWVsZW1lbnQiOiAiaHRtbC9zZW1hbnRpY3MvdGV4dC1sZXZlbC1zZW1hbnRpY3Mv
dGhlLWNpdGUtZWxlbWVudCIsCi0gICAgInRoZS1xLWVsZW1lbnQiOiAiaHRtbC9zZW1hbnRpY3Mv
dGV4dC1sZXZlbC1zZW1hbnRpY3MvdGhlLXEtZWxlbWVudCIsCi0gICAgInRoZS1kZm4tZWxlbWVu
dCI6ICJodG1sL3NlbWFudGljcy90ZXh0LWxldmVsLXNlbWFudGljcy90aGUtZGZuLWVsZW1lbnQi
LAotICAgICJ0aGUtYWJici1lbGVtZW50IjogImh0bWwvc2VtYW50aWNzL3RleHQtbGV2ZWwtc2Vt
YW50aWNzL3RoZS1hYmJyLWVsZW1lbnQiLAotICAgICJ0aGUtdGltZS1lbGVtZW50IjogImh0bWwv
c2VtYW50aWNzL3RleHQtbGV2ZWwtc2VtYW50aWNzL3RoZS10aW1lLWVsZW1lbnQiLAotICAgICJ0
aGUtY29kZS1lbGVtZW50IjogImh0bWwvc2VtYW50aWNzL3RleHQtbGV2ZWwtc2VtYW50aWNzL3Ro
ZS1jb2RlLWVsZW1lbnQiLAotICAgICJ0aGUtdmFyLWVsZW1lbnQiOiAiaHRtbC9zZW1hbnRpY3Mv
dGV4dC1sZXZlbC1zZW1hbnRpY3MvdGhlLXZhci1lbGVtZW50IiwKLSAgICAidGhlLXNhbXAtZWxl
bWVudCI6ICJodG1sL3NlbWFudGljcy90ZXh0LWxldmVsLXNlbWFudGljcy90aGUtc2FtcC1lbGVt
ZW50IiwKLSAgICAidGhlLWtiZC1lbGVtZW50IjogImh0bWwvc2VtYW50aWNzL3RleHQtbGV2ZWwt
c2VtYW50aWNzL3RoZS1rYmQtZWxlbWVudCIsCi0gICAgInRoZS1zdWItYW5kLXN1cC1lbGVtZW50
cyI6ICJodG1sL3NlbWFudGljcy90ZXh0LWxldmVsLXNlbWFudGljcy90aGUtc3ViLWFuZC1zdXAt
ZWxlbWVudHMiLAotICAgICJ0aGUtaS1lbGVtZW50IjogImh0bWwvc2VtYW50aWNzL3RleHQtbGV2
ZWwtc2VtYW50aWNzL3RoZS1pLWVsZW1lbnQiLAotICAgICJ0aGUtYi1lbGVtZW50IjogImh0bWwv
c2VtYW50aWNzL3RleHQtbGV2ZWwtc2VtYW50aWNzL3RoZS1iLWVsZW1lbnQiLAotICAgICJ0aGUt
dS1lbGVtZW50IjogImh0bWwvc2VtYW50aWNzL3RleHQtbGV2ZWwtc2VtYW50aWNzL3RoZS11LWVs
ZW1lbnQiLAotICAgICJ0aGUtbWFyay1lbGVtZW50IjogImh0bWwvc2VtYW50aWNzL3RleHQtbGV2
ZWwtc2VtYW50aWNzL3RoZS1tYXJrLWVsZW1lbnQiLAotICAgICJ0aGUtcnVieS1lbGVtZW50Ijog
Imh0bWwvc2VtYW50aWNzL3RleHQtbGV2ZWwtc2VtYW50aWNzL3RoZS1ydWJ5LWVsZW1lbnQiLAot
ICAgICJ0aGUtcnQtZWxlbWVudCI6ICJodG1sL3NlbWFudGljcy90ZXh0LWxldmVsLXNlbWFudGlj
cy90aGUtcnQtZWxlbWVudCIsCi0gICAgInRoZS1ycC1lbGVtZW50IjogImh0bWwvc2VtYW50aWNz
L3RleHQtbGV2ZWwtc2VtYW50aWNzL3RoZS1ycC1lbGVtZW50IiwKLSAgICAidGhlLWJkaS1lbGVt
ZW50IjogImh0bWwvc2VtYW50aWNzL3RleHQtbGV2ZWwtc2VtYW50aWNzL3RoZS1iZGktZWxlbWVu
dCIsCi0gICAgInRoZS1iZG8tZWxlbWVudCI6ICJodG1sL3NlbWFudGljcy90ZXh0LWxldmVsLXNl
bWFudGljcy90aGUtYmRvLWVsZW1lbnQiLAotICAgICJ0aGUtc3Bhbi1lbGVtZW50IjogImh0bWwv
c2VtYW50aWNzL3RleHQtbGV2ZWwtc2VtYW50aWNzL3RoZS1zcGFuLWVsZW1lbnQiLAotICAgICJ0
aGUtYnItZWxlbWVudCI6ICJodG1sL3NlbWFudGljcy90ZXh0LWxldmVsLXNlbWFudGljcy90aGUt
YnItZWxlbWVudCIsCi0gICAgInRoZS13YnItZWxlbWVudCI6ICJodG1sL3NlbWFudGljcy90ZXh0
LWxldmVsLXNlbWFudGljcy90aGUtd2JyLWVsZW1lbnQiLAotICAgICJ1c2FnZS1zdW1tYXJ5Ijog
Imh0bWwvc2VtYW50aWNzL3RleHQtbGV2ZWwtc2VtYW50aWNzL3VzYWdlLXN1bW1hcnkiLAotICAg
ICJlZGl0cyI6ICJodG1sL3NlbWFudGljcy9lZGl0cyIsCi0gICAgInRoZS1pbnMtZWxlbWVudCI6
ICJodG1sL3NlbWFudGljcy9lZGl0cy90aGUtaW5zLWVsZW1lbnQiLAotICAgICJ0aGUtZGVsLWVs
ZW1lbnQiOiAiaHRtbC9zZW1hbnRpY3MvZWRpdHMvdGhlLWRlbC1lbGVtZW50IiwKLSAgICAiYXR0
cmlidXRlcy1jb21tb24tdG8taW5zLWFuZC1kZWwtZWxlbWVudHMiOiAiaHRtbC9zZW1hbnRpY3Mv
ZWRpdHMvYXR0cmlidXRlcy1jb21tb24tdG8taW5zLWFuZC1kZWwtZWxlbWVudHMiLAotICAgICJl
ZGl0cy1hbmQtcGFyYWdyYXBocyI6ICJodG1sL3NlbWFudGljcy9lZGl0cy9lZGl0cy1hbmQtcGFy
YWdyYXBocyIsCi0gICAgImVkaXRzLWFuZC1saXN0cyI6ICJodG1sL3NlbWFudGljcy9lZGl0cy9l
ZGl0cy1hbmQtbGlzdHMiLAotICAgICJlZGl0cy1hbmQtdGFibGVzIjogImh0bWwvc2VtYW50aWNz
L2VkaXRzL2VkaXRzLWFuZC10YWJsZXMiLAotICAgICJlbWJlZGRlZC1jb250ZW50LTAiOiAiaHRt
bC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC0wIiwKLSAgICAidGhlLWltZy1lbGVtZW50Ijog
Imh0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQtMC90aGUtaW1nLWVsZW1lbnQiLAotICAg
ICJhbHQiOiAiaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC0wL3RoZS1pbWctZWxlbWVu
dCIsCi0gICAgImdlbmVyYWwtZ3VpZGVsaW5lcyI6ICJodG1sL3NlbWFudGljcy9lbWJlZGRlZC1j
b250ZW50LTAvdGhlLWltZy1lbGVtZW50IiwKLSAgICAiYS1saW5rLW9yLWJ1dHRvbi1jb250YWlu
aW5nLW5vdGhpbmctYnV0LXRoZS1pbWFnZSI6ICJodG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250
ZW50LTAvdGhlLWltZy1lbGVtZW50IiwKLSAgICAiYS1waHJhc2Utb3ItcGFyYWdyYXBoLXdpdGgt
YW4tYWx0ZXJuYXRpdmUtZ3JhcGhpY2FsLXJlcHJlc2VudGF0aW9uOi1jaGFydHMsLWRpYWdyYW1z
LC1ncmFwaHMsLW1hcHMsLWlsbHVzdHJhdGlvbnMiOiAiaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQt
Y29udGVudC0wL3RoZS1pbWctZWxlbWVudCIsCi0gICAgImEtc2hvcnQtcGhyYXNlLW9yLWxhYmVs
LXdpdGgtYW4tYWx0ZXJuYXRpdmUtZ3JhcGhpY2FsLXJlcHJlc2VudGF0aW9uOi1pY29ucywtbG9n
b3MiOiAiaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC0wL3RoZS1pbWctZWxlbWVudCIs
Ci0gICAgInRleHQtdGhhdC1oYXMtYmVlbi1yZW5kZXJlZC10by1hLWdyYXBoaWMtZm9yLXR5cG9n
cmFwaGljYWwtZWZmZWN0IjogImh0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQtMC90aGUt
aW1nLWVsZW1lbnQiLAotICAgICJhLWdyYXBoaWNhbC1yZXByZXNlbnRhdGlvbi1vZi1zb21lLW9m
LXRoZS1zdXJyb3VuZGluZy10ZXh0IjogImh0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQt
MC90aGUtaW1nLWVsZW1lbnQiLAotICAgICJhLXB1cmVseS1kZWNvcmF0aXZlLWltYWdlLXRoYXQt
ZG9lc24ndC1hZGQtYW55LWluZm9ybWF0aW9uIjogImh0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNv
bnRlbnQtMC90aGUtaW1nLWVsZW1lbnQiLAotICAgICJhLWdyb3VwLW9mLWltYWdlcy10aGF0LWZv
cm0tYS1zaW5nbGUtbGFyZ2VyLXBpY3R1cmUtd2l0aC1uby1saW5rcyI6ICJodG1sL3NlbWFudGlj
cy9lbWJlZGRlZC1jb250ZW50LTAvdGhlLWltZy1lbGVtZW50IiwKLSAgICAiYS1ncm91cC1vZi1p
bWFnZXMtdGhhdC1mb3JtLWEtc2luZ2xlLWxhcmdlci1waWN0dXJlLXdpdGgtbGlua3MiOiAiaHRt
bC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC0wL3RoZS1pbWctZWxlbWVudCIsCi0gICAgImEt
a2V5LXBhcnQtb2YtdGhlLWNvbnRlbnQiOiAiaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVu
dC0wL3RoZS1pbWctZWxlbWVudCIsCi0gICAgImFuLWltYWdlLW5vdC1pbnRlbmRlZC1mb3ItdGhl
LXVzZXIiOiAiaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC0wL3RoZS1pbWctZWxlbWVu
dCIsCi0gICAgImd1aWRhbmNlLWZvci1tYXJrdXAtZ2VuZXJhdG9ycyI6ICJodG1sL3NlbWFudGlj
cy9lbWJlZGRlZC1jb250ZW50LTAvdGhlLWltZy1lbGVtZW50IiwKLSAgICAiZ3VpZGFuY2UtZm9y
LWNvbmZvcm1hbmNlLWNoZWNrZXJzIjogImh0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQt
MC90aGUtaW1nLWVsZW1lbnQiLAotICAgICJ0aGUtaWZyYW1lLWVsZW1lbnQiOiAiaHRtbC9zZW1h
bnRpY3MvZW1iZWRkZWQtY29udGVudC0wL3RoZS1pZnJhbWUtZWxlbWVudCIsCi0gICAgInRoZS1l
bWJlZC1lbGVtZW50IjogImh0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQtMC90aGUtZW1i
ZWQtZWxlbWVudCIsCi0gICAgInRoZS1vYmplY3QtZWxlbWVudCI6ICJodG1sL3NlbWFudGljcy9l
bWJlZGRlZC1jb250ZW50LTAvdGhlLW9iamVjdC1lbGVtZW50IiwKLSAgICAidGhlLXBhcmFtLWVs
ZW1lbnQiOiAiaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC0wL3RoZS1wYXJhbS1lbGVt
ZW50IiwKLSAgICAidGhlLXZpZGVvLWVsZW1lbnQiOiAiaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQt
Y29udGVudC0wL3RoZS12aWRlby1lbGVtZW50IiwKLSAgICAidGhlLWF1ZGlvLWVsZW1lbnQiOiAi
aHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC0wL3RoZS1hdWRpby1lbGVtZW50IiwKLSAg
ICAidGhlLXNvdXJjZS1lbGVtZW50IjogImh0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQt
MC90aGUtc291cmNlLWVsZW1lbnQiLAotICAgICJ0aGUtdHJhY2stZWxlbWVudCI6ICJodG1sL3Nl
bWFudGljcy9lbWJlZGRlZC1jb250ZW50LTAvdGhlLXRyYWNrLWVsZW1lbnQiLAotICAgICJtZWRp
YS1lbGVtZW50cyI6ICJodG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50LTAvbWVkaWEtZWxl
bWVudHMiLAotICAgICJlcnJvci1jb2RlcyI6ICJodG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250
ZW50LTAvbWVkaWEtZWxlbWVudHMiLAotICAgICJsb2NhdGlvbi1vZi10aGUtbWVkaWEtcmVzb3Vy
Y2UiOiAiaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC0wL21lZGlhLWVsZW1lbnRzIiwK
LSAgICAibWltZS10eXBlcyI6ICJodG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50LTAvbWVk
aWEtZWxlbWVudHMiLAotICAgICJuZXR3b3JrLXN0YXRlcyI6ICJodG1sL3NlbWFudGljcy9lbWJl
ZGRlZC1jb250ZW50LTAvbWVkaWEtZWxlbWVudHMiLAotICAgICJsb2FkaW5nLXRoZS1tZWRpYS1y
ZXNvdXJjZSI6ICJodG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50LTAvbWVkaWEtZWxlbWVu
dHMiLAotICAgICJvZmZzZXRzLWludG8tdGhlLW1lZGlhLXJlc291cmNlIjogImh0bWwvc2VtYW50
aWNzL2VtYmVkZGVkLWNvbnRlbnQtMC9tZWRpYS1lbGVtZW50cyIsCi0gICAgInJlYWR5LXN0YXRl
cyI6ICJodG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50LTAvbWVkaWEtZWxlbWVudHMiLAot
ICAgICJwbGF5aW5nLXRoZS1tZWRpYS1yZXNvdXJjZSI6ICJodG1sL3NlbWFudGljcy9lbWJlZGRl
ZC1jb250ZW50LTAvbWVkaWEtZWxlbWVudHMiLAotICAgICJzZWVraW5nIjogImh0bWwvc2VtYW50
aWNzL2VtYmVkZGVkLWNvbnRlbnQtMC9tZWRpYS1lbGVtZW50cyIsCi0gICAgIm1lZGlhLXJlc291
cmNlcy13aXRoLW11bHRpcGxlLW1lZGlhLXRyYWNrcyI6ICJodG1sL3NlbWFudGljcy9lbWJlZGRl
ZC1jb250ZW50LTAvbWVkaWEtZWxlbWVudHMiLAotICAgICJhdWRpb3RyYWNrbGlzdC1hbmQtdmlk
ZW90cmFja2xpc3Qtb2JqZWN0cyI6ICJodG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50LTAv
bWVkaWEtZWxlbWVudHMiLAotICAgICJzZWxlY3Rpbmctc3BlY2lmaWMtYXVkaW8tYW5kLXZpZGVv
LXRyYWNrcy1kZWNsYXJhdGl2ZWx5IjogImh0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQt
MC9tZWRpYS1lbGVtZW50cyIsCi0gICAgInN5bmNocm9uaXNpbmctbXVsdGlwbGUtbWVkaWEtZWxl
bWVudHMiOiAiaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC0wL21lZGlhLWVsZW1lbnRz
IiwKLSAgICAiaW50cm9kdWN0aW9uLTAiOiAiaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVu
dC0wL21lZGlhLWVsZW1lbnRzIiwKLSAgICAibWVkaWEtY29udHJvbGxlcnMiOiAiaHRtbC9zZW1h
bnRpY3MvZW1iZWRkZWQtY29udGVudC0wL21lZGlhLWVsZW1lbnRzIiwKLSAgICAiYXNzaWduaW5n
LWEtbWVkaWEtY29udHJvbGxlci1kZWNsYXJhdGl2ZWx5IjogImh0bWwvc2VtYW50aWNzL2VtYmVk
ZGVkLWNvbnRlbnQtMC9tZWRpYS1lbGVtZW50cyIsCi0gICAgInRpbWVkLXRleHQtdHJhY2tzIjog
Imh0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQtMC9tZWRpYS1lbGVtZW50cyIsCi0gICAg
InRleHQtdHJhY2stbW9kZWwiOiAiaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC0wL21l
ZGlhLWVsZW1lbnRzIiwKLSAgICAic291cmNpbmctaW4tYmFuZC10ZXh0LXRyYWNrcyI6ICJodG1s
L3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50LTAvbWVkaWEtZWxlbWVudHMiLAotICAgICJzb3Vy
Y2luZy1vdXQtb2YtYmFuZC10ZXh0LXRyYWNrcyI6ICJodG1sL3NlbWFudGljcy9lbWJlZGRlZC1j
b250ZW50LTAvbWVkaWEtZWxlbWVudHMiLAotICAgICJndWlkZWxpbmVzLWZvci1leHBvc2luZy1j
dWVzLWluLXZhcmlvdXMtZm9ybWF0cy1hcy10ZXh0LXRyYWNrLWN1ZXMiOiAiaHRtbC9zZW1hbnRp
Y3MvZW1iZWRkZWQtY29udGVudC0wL21lZGlhLWVsZW1lbnRzIiwKLSAgICAidGV4dC10cmFjay1h
cGkiOiAiaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC0wL21lZGlhLWVsZW1lbnRzIiwK
LSAgICAidGV4dC10cmFja3MtZGVzY3JpYmluZy1jaGFwdGVycyI6ICJodG1sL3NlbWFudGljcy9l
bWJlZGRlZC1jb250ZW50LTAvbWVkaWEtZWxlbWVudHMiLAotICAgICJjdWUtZXZlbnRzIjogImh0
bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQtMC9tZWRpYS1lbGVtZW50cyIsCi0gICAgInVz
ZXItaW50ZXJmYWNlIjogImh0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQtMC9tZWRpYS1l
bGVtZW50cyIsCi0gICAgInRpbWUtcmFuZ2VzIjogImh0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNv
bnRlbnQtMC9tZWRpYS1lbGVtZW50cyIsCi0gICAgImV2ZW50LWRlZmluaXRpb25zIjogImh0bWwv
c2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQtMC9tZWRpYS1lbGVtZW50cyIsCi0gICAgIm1lZGlh
ZXZlbnRzIjogImh0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQtMC9tZWRpYS1lbGVtZW50
cyIsCi0gICAgInNlY3VyaXR5LWFuZC1wcml2YWN5LWNvbnNpZGVyYXRpb25zIjogImh0bWwvc2Vt
YW50aWNzL2VtYmVkZGVkLWNvbnRlbnQtMC9tZWRpYS1lbGVtZW50cyIsCi0gICAgImJlc3QtcHJh
Y3RpY2VzLWZvci1hdXRob3JzLXVzaW5nLW1lZGlhLWVsZW1lbnRzIjogImh0bWwvc2VtYW50aWNz
L2VtYmVkZGVkLWNvbnRlbnQtMC9tZWRpYS1lbGVtZW50cyIsCi0gICAgImJlc3QtcHJhY3RpY2Vz
LWZvci1pbXBsZW1lbnRvcnMtb2YtbWVkaWEtZWxlbWVudHMiOiAiaHRtbC9zZW1hbnRpY3MvZW1i
ZWRkZWQtY29udGVudC0wL21lZGlhLWVsZW1lbnRzIiwKLSAgICAidGhlLWNhbnZhcy1lbGVtZW50
IjogImh0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQtMC90aGUtY2FudmFzLWVsZW1lbnQi
LAotICAgICJjb2xvci1zcGFjZXMtYW5kLWNvbG9yLWNvcnJlY3Rpb24iOiAiaHRtbC9zZW1hbnRp
Y3MvZW1iZWRkZWQtY29udGVudC0wL3RoZS1jYW52YXMtZWxlbWVudCIsCi0gICAgInNlY3VyaXR5
LXdpdGgtY2FudmFzLWVsZW1lbnRzIjogImh0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQt
MC90aGUtY2FudmFzLWVsZW1lbnQiLAotICAgICJ0aGUtbWFwLWVsZW1lbnQiOiAiaHRtbC9zZW1h
bnRpY3MvZW1iZWRkZWQtY29udGVudC0wL3RoZS1tYXAtZWxlbWVudCIsCi0gICAgInRoZS1hcmVh
LWVsZW1lbnQiOiAiaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC0wL3RoZS1hcmVhLWVs
ZW1lbnQiLAotICAgICJpbWFnZS1tYXBzIjogImh0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRl
bnQtMC9pbWFnZS1tYXBzIiwKLSAgICAiYXV0aG9yaW5nIjogImh0bWwvc2VtYW50aWNzL2VtYmVk
ZGVkLWNvbnRlbnQtMC9pbWFnZS1tYXBzIiwKLSAgICAicHJvY2Vzc2luZy1tb2RlbC0wIjogImh0
bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQtMC9pbWFnZS1tYXBzIiwKLSAgICAibWF0aG1s
IjogImh0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQtMC9tYXRobWwiLAotICAgICJzdmci
OiAiaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC0wL3N2ZyIsCi0gICAgImRpbWVuc2lv
bi1hdHRyaWJ1dGVzIjogImh0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQtMC9kaW1lbnNp
b24tYXR0cmlidXRlcyIsCi0gICAgInRhYnVsYXItZGF0YSI6ICJodG1sL3NlbWFudGljcy90YWJ1
bGFyLWRhdGEiLAotICAgICJ0aGUtdGFibGUtZWxlbWVudCI6ICJodG1sL3NlbWFudGljcy90YWJ1
bGFyLWRhdGEvdGhlLXRhYmxlLWVsZW1lbnQiLAotICAgICJ0YWJsZS1kZXNjcmlwdGlvbnMtdGVj
aG5pcXVlcyI6ICJodG1sL3NlbWFudGljcy90YWJ1bGFyLWRhdGEvdGhlLXRhYmxlLWVsZW1lbnQi
LAotICAgICJ0YWJsZS1sYXlvdXQtdGVjaG5pcXVlcyI6ICJodG1sL3NlbWFudGljcy90YWJ1bGFy
LWRhdGEvdGhlLXRhYmxlLWVsZW1lbnQiLAotICAgICJ0aGUtY2FwdGlvbi1lbGVtZW50IjogImh0
bWwvc2VtYW50aWNzL3RhYnVsYXItZGF0YS90aGUtY2FwdGlvbi1lbGVtZW50IiwKLSAgICAidGhl
LWNvbGdyb3VwLWVsZW1lbnQiOiAiaHRtbC9zZW1hbnRpY3MvdGFidWxhci1kYXRhL3RoZS1jb2xn
cm91cC1lbGVtZW50IiwKLSAgICAidGhlLWNvbC1lbGVtZW50IjogImh0bWwvc2VtYW50aWNzL3Rh
YnVsYXItZGF0YS90aGUtY29sLWVsZW1lbnQiLAotICAgICJ0aGUtdGJvZHktZWxlbWVudCI6ICJo
dG1sL3NlbWFudGljcy90YWJ1bGFyLWRhdGEvdGhlLXRib2R5LWVsZW1lbnQiLAotICAgICJ0aGUt
dGhlYWQtZWxlbWVudCI6ICJodG1sL3NlbWFudGljcy90YWJ1bGFyLWRhdGEvdGhlLXRoZWFkLWVs
ZW1lbnQiLAotICAgICJ0aGUtdGZvb3QtZWxlbWVudCI6ICJodG1sL3NlbWFudGljcy90YWJ1bGFy
LWRhdGEvdGhlLXRmb290LWVsZW1lbnQiLAotICAgICJ0aGUtdHItZWxlbWVudCI6ICJodG1sL3Nl
bWFudGljcy90YWJ1bGFyLWRhdGEvdGhlLXRyLWVsZW1lbnQiLAotICAgICJ0aGUtdGQtZWxlbWVu
dCI6ICJodG1sL3NlbWFudGljcy90YWJ1bGFyLWRhdGEvdGhlLXRkLWVsZW1lbnQiLAotICAgICJ0
aGUtdGgtZWxlbWVudCI6ICJodG1sL3NlbWFudGljcy90YWJ1bGFyLWRhdGEvdGhlLXRoLWVsZW1l
bnQiLAotICAgICJhdHRyaWJ1dGVzLWNvbW1vbi10by10ZC1hbmQtdGgtZWxlbWVudHMiOiAiaHRt
bC9zZW1hbnRpY3MvdGFidWxhci1kYXRhL2F0dHJpYnV0ZXMtY29tbW9uLXRvLXRkLWFuZC10aC1l
bGVtZW50cyIsCi0gICAgInByb2Nlc3NpbmctbW9kZWwtMSI6ICJodG1sL3NlbWFudGljcy90YWJ1
bGFyLWRhdGEvcHJvY2Vzc2luZy1tb2RlbC0xIiwKLSAgICAiZm9ybWluZy1hLXRhYmxlIjogImh0
bWwvc2VtYW50aWNzL3RhYnVsYXItZGF0YS9wcm9jZXNzaW5nLW1vZGVsLTEiLAotICAgICJoZWFk
ZXItYW5kLWRhdGEtY2VsbC1zZW1hbnRpY3MiOiAiaHRtbC9zZW1hbnRpY3MvdGFidWxhci1kYXRh
L3Byb2Nlc3NpbmctbW9kZWwtMSIsCi0gICAgImV4YW1wbGVzIjogImNhbnZhczJkL2V4YW1wbGVz
IiwKLSAgICAiZm9ybXMiOiAiaHRtbC9zZW1hbnRpY3MvZm9ybXMiLAotICAgICJpbnRyb2R1Y3Rp
b24tMSI6ICJodG1sL3NlbWFudGljcy9mb3Jtcy9pbnRyb2R1Y3Rpb24tMSIsCi0gICAgIndyaXRp
bmctYS1mb3JtJ3MtdXNlci1pbnRlcmZhY2UiOiAiaHRtbC9zZW1hbnRpY3MvZm9ybXMvaW50cm9k
dWN0aW9uLTEiLAotICAgICJpbXBsZW1lbnRpbmctdGhlLXNlcnZlci1zaWRlLXByb2Nlc3Npbmct
Zm9yLWEtZm9ybSI6ICJodG1sL3NlbWFudGljcy9mb3Jtcy9pbnRyb2R1Y3Rpb24tMSIsCi0gICAg
ImNvbmZpZ3VyaW5nLWEtZm9ybS10by1jb21tdW5pY2F0ZS13aXRoLWEtc2VydmVyIjogImh0bWwv
c2VtYW50aWNzL2Zvcm1zL2ludHJvZHVjdGlvbi0xIiwKLSAgICAiY2xpZW50LXNpZGUtZm9ybS12
YWxpZGF0aW9uIjogImh0bWwvc2VtYW50aWNzL2Zvcm1zL2ludHJvZHVjdGlvbi0xIiwKLSAgICAi
ZW5hYmxpbmctY2xpZW50LXNpZGUtYXV0b21hdGljLWZpbGxpbmctb2YtZm9ybS1jb250cm9scyI6
ICJodG1sL3NlbWFudGljcy9mb3Jtcy9pbnRyb2R1Y3Rpb24tMSIsCi0gICAgImltcHJvdmluZy10
aGUtdXNlci1leHBlcmllbmNlLW9uLW1vYmlsZS1kZXZpY2VzIjogImh0bWwvc2VtYW50aWNzL2Zv
cm1zL2ludHJvZHVjdGlvbi0xIiwKLSAgICAidGhlLWRpZmZlcmVuY2UtYmV0d2Vlbi10aGUtZmll
bGQtdHlwZSwtdGhlLWF1dG9maWxsLWZpZWxkLW5hbWUsLWFuZC10aGUtaW5wdXQtbW9kYWxpdHki
OiAiaHRtbC9zZW1hbnRpY3MvZm9ybXMvaW50cm9kdWN0aW9uLTEiLAotICAgICJpbnB1dC1hdXRo
b3Itbm90ZXMiOiAiaHRtbC9zZW1hbnRpY3MvZm9ybXMvaW50cm9kdWN0aW9uLTEiLAotICAgICJj
YXRlZ29yaWVzIjogImh0bWwvc2VtYW50aWNzL2Zvcm1zL2NhdGVnb3JpZXMiLAotICAgICJ0aGUt
Zm9ybS1lbGVtZW50IjogImh0bWwvc2VtYW50aWNzL2Zvcm1zL3RoZS1mb3JtLWVsZW1lbnQiLAot
ICAgICJ0aGUtZmllbGRzZXQtZWxlbWVudCI6ICJodG1sL3NlbWFudGljcy9mb3Jtcy90aGUtZmll
bGRzZXQtZWxlbWVudCIsCi0gICAgInRoZS1sZWdlbmQtZWxlbWVudCI6ICJodG1sL3NlbWFudGlj
cy9mb3Jtcy90aGUtbGVnZW5kLWVsZW1lbnQiLAotICAgICJ0aGUtbGFiZWwtZWxlbWVudCI6ICJo
dG1sL3NlbWFudGljcy9mb3Jtcy90aGUtbGFiZWwtZWxlbWVudCIsCi0gICAgInRoZS1pbnB1dC1l
bGVtZW50IjogImh0bWwvc2VtYW50aWNzL2Zvcm1zL3RoZS1pbnB1dC1lbGVtZW50IiwKLSAgICAi
c3RhdGVzLW9mLXRoZS10eXBlLWF0dHJpYnV0ZSI6ICJodG1sL3NlbWFudGljcy9mb3Jtcy90aGUt
aW5wdXQtZWxlbWVudCIsCi0gICAgImhpZGRlbi1zdGF0ZS0odHlwZT1oaWRkZW4pIjogImh0bWwv
c2VtYW50aWNzL2Zvcm1zL3RoZS1pbnB1dC1lbGVtZW50IiwKLSAgICAidGV4dC0odHlwZT10ZXh0
KS1zdGF0ZS1hbmQtc2VhcmNoLXN0YXRlLSh0eXBlPXNlYXJjaCkiOiAiaHRtbC9zZW1hbnRpY3Mv
Zm9ybXMvdGhlLWlucHV0LWVsZW1lbnQiLAotICAgICJ0ZWxlcGhvbmUtc3RhdGUtKHR5cGU9dGVs
KSI6ICJodG1sL3NlbWFudGljcy9mb3Jtcy90aGUtaW5wdXQtZWxlbWVudCIsCi0gICAgInVybC1z
dGF0ZS0odHlwZT11cmwpIjogImh0bWwvc2VtYW50aWNzL2Zvcm1zL3RoZS1pbnB1dC1lbGVtZW50
IiwKLSAgICAiZS1tYWlsLXN0YXRlLSh0eXBlPWVtYWlsKSI6ICJodG1sL3NlbWFudGljcy9mb3Jt
cy90aGUtaW5wdXQtZWxlbWVudCIsCi0gICAgInBhc3N3b3JkLXN0YXRlLSh0eXBlPXBhc3N3b3Jk
KSI6ICJodG1sL3NlbWFudGljcy9mb3Jtcy90aGUtaW5wdXQtZWxlbWVudCIsCi0gICAgImRhdGUt
YW5kLXRpbWUtc3RhdGUtKHR5cGU9ZGF0ZXRpbWUpIjogImh0bWwvc2VtYW50aWNzL2Zvcm1zL3Ro
ZS1pbnB1dC1lbGVtZW50IiwKLSAgICAiZGF0ZS1zdGF0ZS0odHlwZT1kYXRlKSI6ICJodG1sL3Nl
bWFudGljcy9mb3Jtcy90aGUtaW5wdXQtZWxlbWVudCIsCi0gICAgIm1vbnRoLXN0YXRlLSh0eXBl
PW1vbnRoKSI6ICJodG1sL3NlbWFudGljcy9mb3Jtcy90aGUtaW5wdXQtZWxlbWVudCIsCi0gICAg
IndlZWstc3RhdGUtKHR5cGU9d2VlaykiOiAiaHRtbC9zZW1hbnRpY3MvZm9ybXMvdGhlLWlucHV0
LWVsZW1lbnQiLAotICAgICJ0aW1lLXN0YXRlLSh0eXBlPXRpbWUpIjogImh0bWwvc2VtYW50aWNz
L2Zvcm1zL3RoZS1pbnB1dC1lbGVtZW50IiwKLSAgICAibG9jYWwtZGF0ZS1hbmQtdGltZS1zdGF0
ZS0odHlwZT1kYXRldGltZS1sb2NhbCkiOiAiaHRtbC9zZW1hbnRpY3MvZm9ybXMvdGhlLWlucHV0
LWVsZW1lbnQiLAotICAgICJudW1iZXItc3RhdGUtKHR5cGU9bnVtYmVyKSI6ICJodG1sL3NlbWFu
dGljcy9mb3Jtcy90aGUtaW5wdXQtZWxlbWVudCIsCi0gICAgInJhbmdlLXN0YXRlLSh0eXBlPXJh
bmdlKSI6ICJodG1sL3NlbWFudGljcy9mb3Jtcy90aGUtaW5wdXQtZWxlbWVudCIsCi0gICAgImNv
bG9yLXN0YXRlLSh0eXBlPWNvbG9yKSI6ICJodG1sL3NlbWFudGljcy9mb3Jtcy90aGUtaW5wdXQt
ZWxlbWVudCIsCi0gICAgImNoZWNrYm94LXN0YXRlLSh0eXBlPWNoZWNrYm94KSI6ICJodG1sL3Nl
bWFudGljcy9mb3Jtcy90aGUtaW5wdXQtZWxlbWVudCIsCi0gICAgInJhZGlvLWJ1dHRvbi1zdGF0
ZS0odHlwZT1yYWRpbykiOiAiaHRtbC9zZW1hbnRpY3MvZm9ybXMvdGhlLWlucHV0LWVsZW1lbnQi
LAotICAgICJmaWxlLXVwbG9hZC1zdGF0ZS0odHlwZT1maWxlKSI6ICJodG1sL3NlbWFudGljcy9m
b3Jtcy90aGUtaW5wdXQtZWxlbWVudCIsCi0gICAgInN1Ym1pdC1idXR0b24tc3RhdGUtKHR5cGU9
c3VibWl0KSI6ICJodG1sL3NlbWFudGljcy9mb3Jtcy90aGUtaW5wdXQtZWxlbWVudCIsCi0gICAg
ImltYWdlLWJ1dHRvbi1zdGF0ZS0odHlwZT1pbWFnZSkiOiAiaHRtbC9zZW1hbnRpY3MvZm9ybXMv
dGhlLWlucHV0LWVsZW1lbnQiLAotICAgICJyZXNldC1idXR0b24tc3RhdGUtKHR5cGU9cmVzZXQp
IjogImh0bWwvc2VtYW50aWNzL2Zvcm1zL3RoZS1pbnB1dC1lbGVtZW50IiwKLSAgICAiYnV0dG9u
LXN0YXRlLSh0eXBlPWJ1dHRvbikiOiAiaHRtbC9zZW1hbnRpY3MvZm9ybXMvdGhlLWlucHV0LWVs
ZW1lbnQiLAotICAgICJpbnB1dC1pbXBsLW5vdGVzIjogImh0bWwvc2VtYW50aWNzL2Zvcm1zL3Ro
ZS1pbnB1dC1lbGVtZW50IiwKLSAgICAiY29tbW9uLWlucHV0LWVsZW1lbnQtYXR0cmlidXRlcyI6
ICJodG1sL3NlbWFudGljcy9mb3Jtcy90aGUtaW5wdXQtZWxlbWVudCIsCi0gICAgInRoZS1tYXhs
ZW5ndGgtYXR0cmlidXRlIjogImh0bWwvc2VtYW50aWNzL2Zvcm1zL3RoZS1pbnB1dC1lbGVtZW50
IiwKLSAgICAidGhlLXNpemUtYXR0cmlidXRlIjogImh0bWwvc2VtYW50aWNzL2Zvcm1zL3RoZS1p
bnB1dC1lbGVtZW50IiwKLSAgICAidGhlLXJlYWRvbmx5LWF0dHJpYnV0ZSI6ICJodG1sL3NlbWFu
dGljcy9mb3Jtcy90aGUtaW5wdXQtZWxlbWVudCIsCi0gICAgInRoZS1yZXF1aXJlZC1hdHRyaWJ1
dGUiOiAiaHRtbC9zZW1hbnRpY3MvZm9ybXMvdGhlLWlucHV0LWVsZW1lbnQiLAotICAgICJ0aGUt
bXVsdGlwbGUtYXR0cmlidXRlIjogImh0bWwvc2VtYW50aWNzL2Zvcm1zL3RoZS1pbnB1dC1lbGVt
ZW50IiwKLSAgICAidGhlLXBhdHRlcm4tYXR0cmlidXRlIjogImh0bWwvc2VtYW50aWNzL2Zvcm1z
L3RoZS1pbnB1dC1lbGVtZW50IiwKLSAgICAidGhlLW1pbi1hbmQtbWF4LWF0dHJpYnV0ZXMiOiAi
aHRtbC9zZW1hbnRpY3MvZm9ybXMvdGhlLWlucHV0LWVsZW1lbnQiLAotICAgICJ0aGUtc3RlcC1h
dHRyaWJ1dGUiOiAiaHRtbC9zZW1hbnRpY3MvZm9ybXMvdGhlLWlucHV0LWVsZW1lbnQiLAotICAg
ICJ0aGUtbGlzdC1hdHRyaWJ1dGUiOiAiaHRtbC9zZW1hbnRpY3MvZm9ybXMvdGhlLWlucHV0LWVs
ZW1lbnQiLAotICAgICJ0aGUtcGxhY2Vob2xkZXItYXR0cmlidXRlIjogImh0bWwvc2VtYW50aWNz
L2Zvcm1zL3RoZS1pbnB1dC1lbGVtZW50IiwKLSAgICAiY29tbW9uLWlucHV0LWVsZW1lbnQtYXBp
cyI6ICJodG1sL3NlbWFudGljcy9mb3Jtcy90aGUtaW5wdXQtZWxlbWVudCIsCi0gICAgImNvbW1v
bi1ldmVudC1iZWhhdmlvcnMiOiAiaHRtbC9zZW1hbnRpY3MvZm9ybXMvdGhlLWlucHV0LWVsZW1l
bnQiLAotICAgICJ0aGUtYnV0dG9uLWVsZW1lbnQiOiAiaHRtbC9zZW1hbnRpY3MvZm9ybXMvdGhl
LWJ1dHRvbi1lbGVtZW50IiwKLSAgICAidGhlLXNlbGVjdC1lbGVtZW50IjogImh0bWwvc2VtYW50
aWNzL2Zvcm1zL3RoZS1zZWxlY3QtZWxlbWVudCIsCi0gICAgInRoZS1kYXRhbGlzdC1lbGVtZW50
IjogImh0bWwvc2VtYW50aWNzL2Zvcm1zL3RoZS1kYXRhbGlzdC1lbGVtZW50IiwKLSAgICAidGhl
LW9wdGdyb3VwLWVsZW1lbnQiOiAiaHRtbC9zZW1hbnRpY3MvZm9ybXMvdGhlLW9wdGdyb3VwLWVs
ZW1lbnQiLAotICAgICJ0aGUtb3B0aW9uLWVsZW1lbnQiOiAiaHRtbC9zZW1hbnRpY3MvZm9ybXMv
dGhlLW9wdGlvbi1lbGVtZW50IiwKLSAgICAidGhlLXRleHRhcmVhLWVsZW1lbnQiOiAiaHRtbC9z
ZW1hbnRpY3MvZm9ybXMvdGhlLXRleHRhcmVhLWVsZW1lbnQiLAotICAgICJ0aGUta2V5Z2VuLWVs
ZW1lbnQiOiAiaHRtbC9zZW1hbnRpY3MvZm9ybXMvdGhlLWtleWdlbi1lbGVtZW50IiwKLSAgICAi
dGhlLW91dHB1dC1lbGVtZW50IjogImh0bWwvc2VtYW50aWNzL2Zvcm1zL3RoZS1vdXRwdXQtZWxl
bWVudCIsCi0gICAgInRoZS1wcm9ncmVzcy1lbGVtZW50IjogImh0bWwvc2VtYW50aWNzL2Zvcm1z
L3RoZS1wcm9ncmVzcy1lbGVtZW50IiwKLSAgICAidGhlLW1ldGVyLWVsZW1lbnQiOiAiaHRtbC9z
ZW1hbnRpY3MvZm9ybXMvdGhlLW1ldGVyLWVsZW1lbnQiLAotICAgICJmb3JtLWNvbnRyb2wtaW5m
cmFzdHJ1Y3R1cmUiOiAiaHRtbC9zZW1hbnRpY3MvZm9ybXMvZm9ybS1jb250cm9sLWluZnJhc3Ry
dWN0dXJlIiwKLSAgICAiYS1mb3JtLWNvbnRyb2wncy12YWx1ZSI6ICJodG1sL3NlbWFudGljcy9m
b3Jtcy9mb3JtLWNvbnRyb2wtaW5mcmFzdHJ1Y3R1cmUiLAotICAgICJtdXRhYmlsaXR5IjogImh0
bWwvc2VtYW50aWNzL2Zvcm1zL2Zvcm0tY29udHJvbC1pbmZyYXN0cnVjdHVyZSIsCi0gICAgImFz
c29jaWF0aW9uLW9mLWNvbnRyb2xzLWFuZC1mb3JtcyI6ICJodG1sL3NlbWFudGljcy9mb3Jtcy9m
b3JtLWNvbnRyb2wtaW5mcmFzdHJ1Y3R1cmUiLAotICAgICJhdHRyaWJ1dGVzLWNvbW1vbi10by1m
b3JtLWNvbnRyb2xzIjogImh0bWwvc2VtYW50aWNzL2Zvcm1zL2F0dHJpYnV0ZXMtY29tbW9uLXRv
LWZvcm0tY29udHJvbHMiLAotICAgICJuYW1pbmctZm9ybS1jb250cm9sczotdGhlLW5hbWUtYXR0
cmlidXRlIjogImh0bWwvc2VtYW50aWNzL2Zvcm1zL2F0dHJpYnV0ZXMtY29tbW9uLXRvLWZvcm0t
Y29udHJvbHMiLAotICAgICJzdWJtaXR0aW5nLWVsZW1lbnQtZGlyZWN0aW9uYWxpdHk6LXRoZS1k
aXJuYW1lLWF0dHJpYnV0ZSI6ICJodG1sL3NlbWFudGljcy9mb3Jtcy9hdHRyaWJ1dGVzLWNvbW1v
bi10by1mb3JtLWNvbnRyb2xzIiwKLSAgICAibGltaXRpbmctdXNlci1pbnB1dC1sZW5ndGg6LXRo
ZS1tYXhsZW5ndGgtYXR0cmlidXRlIjogImh0bWwvc2VtYW50aWNzL2Zvcm1zL2F0dHJpYnV0ZXMt
Y29tbW9uLXRvLWZvcm0tY29udHJvbHMiLAotICAgICJlbmFibGluZy1hbmQtZGlzYWJsaW5nLWZv
cm0tY29udHJvbHM6LXRoZS1kaXNhYmxlZC1hdHRyaWJ1dGUiOiAiaHRtbC9zZW1hbnRpY3MvZm9y
bXMvYXR0cmlidXRlcy1jb21tb24tdG8tZm9ybS1jb250cm9scyIsCi0gICAgImZvcm0tc3VibWlz
c2lvbiI6ICJodG1sL3NlbWFudGljcy9mb3Jtcy9hdHRyaWJ1dGVzLWNvbW1vbi10by1mb3JtLWNv
bnRyb2xzIiwKLSAgICAiYXV0b2ZvY3VzaW5nLWEtZm9ybS1jb250cm9sOi10aGUtYXV0b2ZvY3Vz
LWF0dHJpYnV0ZSI6ICJodG1sL3NlbWFudGljcy9mb3Jtcy9hdHRyaWJ1dGVzLWNvbW1vbi10by1m
b3JtLWNvbnRyb2xzIiwKLSAgICAiaW5wdXQtbW9kYWxpdGllczotdGhlLWlucHV0bW9kZS1hdHRy
aWJ1dGUiOiAiaHRtbC9zZW1hbnRpY3MvZm9ybXMvYXR0cmlidXRlcy1jb21tb24tdG8tZm9ybS1j
b250cm9scyIsCi0gICAgImF1dG9maWxsaW5nLWZvcm0tY29udHJvbHM6LXRoZS1hdXRvY29tcGxl
dGUtYXR0cmlidXRlIjogImh0bWwvc2VtYW50aWNzL2Zvcm1zL2F0dHJpYnV0ZXMtY29tbW9uLXRv
LWZvcm0tY29udHJvbHMiLAotICAgICJ0ZXh0RmllbGRTZWxlY3Rpb24iOiAiaHRtbC9zZW1hbnRp
Y3MvZm9ybXMvdGV4dGZpZWxkc2VsZWN0aW9uIiwKLSAgICAiY29uc3RyYWludHMiOiAiaHRtbC9z
ZW1hbnRpY3MvZm9ybXMvY29uc3RyYWludHMiLAotICAgICJkZWZpbml0aW9ucyI6ICJodG1sL3Nl
bWFudGljcy9mb3Jtcy9jb25zdHJhaW50cyIsCi0gICAgImNvbnN0cmFpbnQtdmFsaWRhdGlvbiI6
ICJodG1sL3NlbWFudGljcy9mb3Jtcy9jb25zdHJhaW50cyIsCi0gICAgInRoZS1jb25zdHJhaW50
LXZhbGlkYXRpb24tYXBpIjogImh0bWwvc2VtYW50aWNzL2Zvcm1zL2NvbnN0cmFpbnRzIiwKLSAg
ICAic2VjdXJpdHktZm9ybXMiOiAiaHRtbC9zZW1hbnRpY3MvZm9ybXMvY29uc3RyYWludHMiLAot
ICAgICJmb3JtLXN1Ym1pc3Npb24tMCI6ICJodG1sL3NlbWFudGljcy9mb3Jtcy9mb3JtLXN1Ym1p
c3Npb24tMCIsCi0gICAgImludHJvZHVjdGlvbi0yIjogImh0bWwvc2VtYW50aWNzL2Zvcm1zL2Zv
cm0tc3VibWlzc2lvbi0wIiwKLSAgICAiaW1wbGljaXQtc3VibWlzc2lvbiI6ICJodG1sL3NlbWFu
dGljcy9mb3Jtcy9mb3JtLXN1Ym1pc3Npb24tMCIsCi0gICAgImZvcm0tc3VibWlzc2lvbi1hbGdv
cml0aG0iOiAiaHRtbC9zZW1hbnRpY3MvZm9ybXMvZm9ybS1zdWJtaXNzaW9uLTAiLAotICAgICJj
b25zdHJ1Y3RpbmctZm9ybS1kYXRhLXNldCI6ICJodG1sL3NlbWFudGljcy9mb3Jtcy9mb3JtLXN1
Ym1pc3Npb24tMCIsCi0gICAgInVybC1lbmNvZGVkLWZvcm0tZGF0YSI6ICJodG1sL3NlbWFudGlj
cy9mb3Jtcy9mb3JtLXN1Ym1pc3Npb24tMCIsCi0gICAgIm11bHRpcGFydC1mb3JtLWRhdGEiOiAi
aHRtbC9zZW1hbnRpY3MvZm9ybXMvZm9ybS1zdWJtaXNzaW9uLTAiLAotICAgICJwbGFpbi10ZXh0
LWZvcm0tZGF0YSI6ICJodG1sL3NlbWFudGljcy9mb3Jtcy9mb3JtLXN1Ym1pc3Npb24tMCIsCi0g
ICAgInJlc2V0dGluZy1hLWZvcm0iOiAiaHRtbC9zZW1hbnRpY3MvZm9ybXMvcmVzZXR0aW5nLWEt
Zm9ybSIsCi0gICAgImludGVyYWN0aXZlLWVsZW1lbnRzIjogImh0bWwvc2VtYW50aWNzL2ludGVy
YWN0aXZlLWVsZW1lbnRzIiwKLSAgICAidGhlLWRldGFpbHMtZWxlbWVudCI6ICJodG1sL3NlbWFu
dGljcy9pbnRlcmFjdGl2ZS1lbGVtZW50cy90aGUtZGV0YWlscy1lbGVtZW50IiwKLSAgICAidGhl
LXN1bW1hcnktZWxlbWVudCI6ICJodG1sL3NlbWFudGljcy9pbnRlcmFjdGl2ZS1lbGVtZW50cy90
aGUtc3VtbWFyeS1lbGVtZW50IiwKLSAgICAidGhlLWNvbW1hbmQtZWxlbWVudCI6ICJodG1sL3Nl
bWFudGljcy9pbnRlcmFjdGl2ZS1lbGVtZW50cy90aGUtY29tbWFuZC1lbGVtZW50IiwKLSAgICAi
dGhlLW1lbnUtZWxlbWVudCI6ICJodG1sL3NlbWFudGljcy9pbnRlcmFjdGl2ZS1lbGVtZW50cy90
aGUtbWVudS1lbGVtZW50IiwKLSAgICAibWVudXMtaW50cm8iOiAiaHRtbC9zZW1hbnRpY3MvaW50
ZXJhY3RpdmUtZWxlbWVudHMvdGhlLW1lbnUtZWxlbWVudCIsCi0gICAgImJ1aWxkaW5nLW1lbnVz
LWFuZC10b29sYmFycyI6ICJodG1sL3NlbWFudGljcy9pbnRlcmFjdGl2ZS1lbGVtZW50cy90aGUt
bWVudS1lbGVtZW50IiwKLSAgICAiY29udGV4dC1tZW51cyI6ICJodG1sL3NlbWFudGljcy9pbnRl
cmFjdGl2ZS1lbGVtZW50cy90aGUtbWVudS1lbGVtZW50IiwKLSAgICAidG9vbGJhcnMiOiAiaHRt
bC9zZW1hbnRpY3MvaW50ZXJhY3RpdmUtZWxlbWVudHMvdGhlLW1lbnUtZWxlbWVudCIsCi0gICAg
ImNvbW1hbmRzIjogImh0bWwvc2VtYW50aWNzL2ludGVyYWN0aXZlLWVsZW1lbnRzL2NvbW1hbmRz
IiwKLSAgICAidXNpbmctdGhlLWEtZWxlbWVudC10by1kZWZpbmUtYS1jb21tYW5kIjogImh0bWwv
c2VtYW50aWNzL2ludGVyYWN0aXZlLWVsZW1lbnRzL2NvbW1hbmRzIiwKLSAgICAidXNpbmctdGhl
LWJ1dHRvbi1lbGVtZW50LXRvLWRlZmluZS1hLWNvbW1hbmQiOiAiaHRtbC9zZW1hbnRpY3MvaW50
ZXJhY3RpdmUtZWxlbWVudHMvY29tbWFuZHMiLAotICAgICJ1c2luZy10aGUtaW5wdXQtZWxlbWVu
dC10by1kZWZpbmUtYS1jb21tYW5kIjogImh0bWwvc2VtYW50aWNzL2ludGVyYWN0aXZlLWVsZW1l
bnRzL2NvbW1hbmRzIiwKLSAgICAidXNpbmctdGhlLW9wdGlvbi1lbGVtZW50LXRvLWRlZmluZS1h
LWNvbW1hbmQiOiAiaHRtbC9zZW1hbnRpY3MvaW50ZXJhY3RpdmUtZWxlbWVudHMvY29tbWFuZHMi
LAotICAgICJ1c2luZy10aGUtY29tbWFuZC1lbGVtZW50LXRvLWRlZmluZS1hLWNvbW1hbmQiOiAi
aHRtbC9zZW1hbnRpY3MvaW50ZXJhY3RpdmUtZWxlbWVudHMvY29tbWFuZHMiLAotICAgICJ1c2lu
Zy10aGUtY29tbWFuZC1hdHRyaWJ1dGUtb24tY29tbWFuZC1lbGVtZW50cy10by1kZWZpbmUtYS1j
b21tYW5kLWluZGlyZWN0bHkiOiAiaHRtbC9zZW1hbnRpY3MvaW50ZXJhY3RpdmUtZWxlbWVudHMv
Y29tbWFuZHMiLAotICAgICJ1c2luZy10aGUtYWNjZXNza2V5LWF0dHJpYnV0ZS1vbi1hLWxhYmVs
LWVsZW1lbnQtdG8tZGVmaW5lLWEtY29tbWFuZCI6ICJodG1sL3NlbWFudGljcy9pbnRlcmFjdGl2
ZS1lbGVtZW50cy9jb21tYW5kcyIsCi0gICAgInVzaW5nLXRoZS1hY2Nlc3NrZXktYXR0cmlidXRl
LW9uLWEtbGVnZW5kLWVsZW1lbnQtdG8tZGVmaW5lLWEtY29tbWFuZCI6ICJodG1sL3NlbWFudGlj
cy9pbnRlcmFjdGl2ZS1lbGVtZW50cy9jb21tYW5kcyIsCi0gICAgInVzaW5nLXRoZS1hY2Nlc3Nr
ZXktYXR0cmlidXRlLXRvLWRlZmluZS1hLWNvbW1hbmQtb24tb3RoZXItZWxlbWVudHMiOiAiaHRt
bC9zZW1hbnRpY3MvaW50ZXJhY3RpdmUtZWxlbWVudHMvY29tbWFuZHMiLAotICAgICJ0aGUtZGlh
bG9nLWVsZW1lbnQiOiAiaHRtbC9zZW1hbnRpY3MvaW50ZXJhY3RpdmUtZWxlbWVudHMvdGhlLWRp
YWxvZy1lbGVtZW50IiwKLSAgICAiYW5jaG9yLXBvaW50cyI6ICJodG1sL3NlbWFudGljcy9pbnRl
cmFjdGl2ZS1lbGVtZW50cy90aGUtZGlhbG9nLWVsZW1lbnQiLAotICAgICJsaW5rcyI6ICJodG1s
L3NlbWFudGljcy9saW5rcyIsCi0gICAgImludHJvZHVjdGlvbi0zIjogImh0bWwvc2VtYW50aWNz
L2xpbmtzL2ludHJvZHVjdGlvbi0zIiwKLSAgICAibGlua3MtY3JlYXRlZC1ieS1hLWFuZC1hcmVh
LWVsZW1lbnRzIjogImh0bWwvc2VtYW50aWNzL2xpbmtzL2xpbmtzLWNyZWF0ZWQtYnktYS1hbmQt
YXJlYS1lbGVtZW50cyIsCi0gICAgImZvbGxvd2luZy1oeXBlcmxpbmtzIjogImh0bWwvc2VtYW50
aWNzL2xpbmtzL2ZvbGxvd2luZy1oeXBlcmxpbmtzIiwKLSAgICAiZG93bmxvYWRpbmctcmVzb3Vy
Y2VzIjogImh0bWwvc2VtYW50aWNzL2xpbmtzL2Rvd25sb2FkaW5nLXJlc291cmNlcyIsCi0gICAg
Imh5cGVybGluay1hdWRpdGluZyI6ICJodG1sL3NlbWFudGljcy9saW5rcy9kb3dubG9hZGluZy1y
ZXNvdXJjZXMiLAotICAgICJsaW5rVHlwZXMiOiAiaHRtbC9zZW1hbnRpY3MvbGlua3MvbGlua3R5
cGVzIiwKLSAgICAicmVsLWFsdGVybmF0ZSI6ICJodG1sL3NlbWFudGljcy9saW5rcy9saW5rdHlw
ZXMiLAotICAgICJsaW5rLXR5cGUtYXV0aG9yIjogImh0bWwvc2VtYW50aWNzL2xpbmtzL2xpbmt0
eXBlcyIsCi0gICAgImxpbmstdHlwZS1ib29rbWFyayI6ICJodG1sL3NlbWFudGljcy9saW5rcy9s
aW5rdHlwZXMiLAotICAgICJsaW5rLXR5cGUtaGVscCI6ICJodG1sL3NlbWFudGljcy9saW5rcy9s
aW5rdHlwZXMiLAotICAgICJyZWwtaWNvbiI6ICJodG1sL3NlbWFudGljcy9saW5rcy9saW5rdHlw
ZXMiLAotICAgICJsaW5rLXR5cGUtbGljZW5zZSI6ICJodG1sL3NlbWFudGljcy9saW5rcy9saW5r
dHlwZXMiLAotICAgICJsaW5rLXR5cGUtbm9mb2xsb3ciOiAiaHRtbC9zZW1hbnRpY3MvbGlua3Mv
bGlua3R5cGVzIiwKLSAgICAibGluay10eXBlLW5vcmVmZXJyZXIiOiAiaHRtbC9zZW1hbnRpY3Mv
bGlua3MvbGlua3R5cGVzIiwKLSAgICAibGluay10eXBlLXByZWZldGNoIjogImh0bWwvc2VtYW50
aWNzL2xpbmtzL2xpbmt0eXBlcyIsCi0gICAgImxpbmstdHlwZS1zZWFyY2giOiAiaHRtbC9zZW1h
bnRpY3MvbGlua3MvbGlua3R5cGVzIiwKLSAgICAibGluay10eXBlLXN0eWxlc2hlZXQiOiAiaHRt
bC9zZW1hbnRpY3MvbGlua3MvbGlua3R5cGVzIiwKLSAgICAibGluay10eXBlLXRhZyI6ICJodG1s
L3NlbWFudGljcy9saW5rcy9saW5rdHlwZXMiLAotICAgICJzZXF1ZW50aWFsLWxpbmstdHlwZXMi
OiAiaHRtbC9zZW1hbnRpY3MvbGlua3MvbGlua3R5cGVzIiwKLSAgICAibGluay10eXBlLW5leHQi
OiAiaHRtbC9zZW1hbnRpY3MvbGlua3MvbGlua3R5cGVzIiwKLSAgICAibGluay10eXBlLXByZXYi
OiAiaHRtbC9zZW1hbnRpY3MvbGlua3MvbGlua3R5cGVzIiwKLSAgICAib3RoZXItbGluay10eXBl
cyI6ICJodG1sL3NlbWFudGljcy9saW5rcy9saW5rdHlwZXMiLAotICAgICJjb21tb24taWRpb21z
IjogImh0bWwvc2VtYW50aWNzL2NvbW1vbi1pZGlvbXMiLAotICAgICJ0aGUtbWFpbi1wYXJ0LW9m
LXRoZS1jb250ZW50IjogImh0bWwvc2VtYW50aWNzL2NvbW1vbi1pZGlvbXMvdGhlLW1haW4tcGFy
dC1vZi10aGUtY29udGVudCIsCi0gICAgInJlbC11cCI6ICJodG1sL3NlbWFudGljcy9jb21tb24t
aWRpb21zL3JlbC11cCIsCi0gICAgInRhZy1jbG91ZHMiOiAiaHRtbC9zZW1hbnRpY3MvY29tbW9u
LWlkaW9tcy90YWctY2xvdWRzIiwKLSAgICAiY29udmVyc2F0aW9ucyI6ICJodG1sL3NlbWFudGlj
cy9jb21tb24taWRpb21zL2NvbnZlcnNhdGlvbnMiLAotICAgICJmb290bm90ZXMiOiAiaHRtbC9z
ZW1hbnRpY3MvY29tbW9uLWlkaW9tcy9mb290bm90ZXMiLAotICAgICJkaXNhYmxlZC1lbGVtZW50
cyI6ICJodG1sL3NlbWFudGljcy9kaXNhYmxlZC1lbGVtZW50cyIsCi0gICAgInNlbGVjdG9ycyI6
ICJodG1sL3NlbWFudGljcy9zZWxlY3RvcnMiLAotICAgICJjYXNlLXNlbnNpdGl2aXR5IjogImh0
bWwvc2VtYW50aWNzL3NlbGVjdG9ycy9jYXNlLXNlbnNpdGl2aXR5IiwKLSAgICAicHNldWRvLWNs
YXNzZXMiOiAiaHRtbC9zZW1hbnRpY3Mvc2VsZWN0b3JzL3BzZXVkby1jbGFzc2VzIiwKLSAgICAi
YnJvd3NlcnMiOiAiaHRtbC9icm93c2VycyIsCi0gICAgIndpbmRvd3MiOiAiaHRtbC9icm93c2Vy
cy93aW5kb3dzIiwKLSAgICAibmVzdGVkLWJyb3dzaW5nLWNvbnRleHRzIjogImh0bWwvYnJvd3Nl
cnMvd2luZG93cy9uZXN0ZWQtYnJvd3NpbmctY29udGV4dHMiLAotICAgICJuYXZpZ2F0aW5nLW5l
c3RlZC1icm93c2luZy1jb250ZXh0cy1pbi10aGUtZG9tIjogImh0bWwvYnJvd3NlcnMvd2luZG93
cy9uZXN0ZWQtYnJvd3NpbmctY29udGV4dHMiLAotICAgICJhdXhpbGlhcnktYnJvd3NpbmctY29u
dGV4dHMiOiAiaHRtbC9icm93c2Vycy93aW5kb3dzL2F1eGlsaWFyeS1icm93c2luZy1jb250ZXh0
cyIsCi0gICAgIm5hdmlnYXRpbmctYXV4aWxpYXJ5LWJyb3dzaW5nLWNvbnRleHRzLWluLXRoZS1k
b20iOiAiaHRtbC9icm93c2Vycy93aW5kb3dzL2F1eGlsaWFyeS1icm93c2luZy1jb250ZXh0cyIs
Ci0gICAgInNlY29uZGFyeS1icm93c2luZy1jb250ZXh0cyI6ICJodG1sL2Jyb3dzZXJzL3dpbmRv
d3Mvc2Vjb25kYXJ5LWJyb3dzaW5nLWNvbnRleHRzIiwKLSAgICAic2VjdXJpdHktbmF2IjogImh0
bWwvYnJvd3NlcnMvd2luZG93cy9zZWN1cml0eS1uYXYiLAotICAgICJncm91cGluZ3Mtb2YtYnJv
d3NpbmctY29udGV4dHMiOiAiaHRtbC9icm93c2Vycy93aW5kb3dzL2dyb3VwaW5ncy1vZi1icm93
c2luZy1jb250ZXh0cyIsCi0gICAgImJyb3dzaW5nLWNvbnRleHQtbmFtZXMiOiAiaHRtbC9icm93
c2Vycy93aW5kb3dzL2Jyb3dzaW5nLWNvbnRleHQtbmFtZXMiLAotICAgICJ0aGUtd2luZG93LW9i
amVjdCI6ICJodG1sL2Jyb3dzZXJzL3RoZS13aW5kb3ctb2JqZWN0IiwKLSAgICAic2VjdXJpdHkt
d2luZG93IjogImh0bWwvYnJvd3NlcnMvdGhlLXdpbmRvdy1vYmplY3Qvc2VjdXJpdHktd2luZG93
IiwKLSAgICAiYXBpcy1mb3ItY3JlYXRpbmctYW5kLW5hdmlnYXRpbmctYnJvd3NpbmctY29udGV4
dHMtYnktbmFtZSI6ICJodG1sL2Jyb3dzZXJzL3RoZS13aW5kb3ctb2JqZWN0L2FwaXMtZm9yLWNy
ZWF0aW5nLWFuZC1uYXZpZ2F0aW5nLWJyb3dzaW5nLWNvbnRleHRzLWJ5LW5hbWUiLAotICAgICJh
Y2Nlc3Npbmctb3RoZXItYnJvd3NpbmctY29udGV4dHMiOiAiaHRtbC9icm93c2Vycy90aGUtd2lu
ZG93LW9iamVjdC9hY2Nlc3Npbmctb3RoZXItYnJvd3NpbmctY29udGV4dHMiLAotICAgICJuYW1l
ZC1hY2Nlc3Mtb24tdGhlLXdpbmRvdy1vYmplY3QiOiAiaHRtbC9icm93c2Vycy90aGUtd2luZG93
LW9iamVjdC9uYW1lZC1hY2Nlc3Mtb24tdGhlLXdpbmRvdy1vYmplY3QiLAotICAgICJnYXJiYWdl
LWNvbGxlY3Rpb24tYW5kLWJyb3dzaW5nLWNvbnRleHRzIjogImh0bWwvYnJvd3NlcnMvdGhlLXdp
bmRvdy1vYmplY3QvZ2FyYmFnZS1jb2xsZWN0aW9uLWFuZC1icm93c2luZy1jb250ZXh0cyIsCi0g
ICAgImNsb3NpbmctYnJvd3NpbmctY29udGV4dHMiOiAiaHRtbC9icm93c2Vycy90aGUtd2luZG93
LW9iamVjdC9jbG9zaW5nLWJyb3dzaW5nLWNvbnRleHRzIiwKLSAgICAiYnJvd3Nlci1pbnRlcmZh
Y2UtZWxlbWVudHMiOiAiaHRtbC9icm93c2Vycy90aGUtd2luZG93LW9iamVjdC9icm93c2VyLWlu
dGVyZmFjZS1lbGVtZW50cyIsCi0gICAgInRoZS13aW5kb3dwcm94eS1vYmplY3QiOiAiaHRtbC9i
cm93c2Vycy90aGUtd2luZG93LW9iamVjdC90aGUtd2luZG93cHJveHktb2JqZWN0IiwKLSAgICAi
b3JpZ2luIjogImh0bWwvYnJvd3NlcnMvb3JpZ2luIiwKLSAgICAicmVsYXhpbmctdGhlLXNhbWUt
b3JpZ2luLXJlc3RyaWN0aW9uIjogImh0bWwvYnJvd3NlcnMvb3JpZ2luL3JlbGF4aW5nLXRoZS1z
YW1lLW9yaWdpbi1yZXN0cmljdGlvbiIsCi0gICAgInNhbmRib3hpbmciOiAiaHRtbC9icm93c2Vy
cy9zYW5kYm94aW5nIiwKLSAgICAiaGlzdG9yeSI6ICJodG1sL2Jyb3dzZXJzL2hpc3RvcnkiLAot
ICAgICJ0aGUtc2Vzc2lvbi1oaXN0b3J5LW9mLWJyb3dzaW5nLWNvbnRleHRzIjogImh0bWwvYnJv
d3NlcnMvaGlzdG9yeS90aGUtc2Vzc2lvbi1oaXN0b3J5LW9mLWJyb3dzaW5nLWNvbnRleHRzIiwK
LSAgICAidGhlLWhpc3RvcnktaW50ZXJmYWNlIjogImh0bWwvYnJvd3NlcnMvaGlzdG9yeS90aGUt
aGlzdG9yeS1pbnRlcmZhY2UiLAotICAgICJ0aGUtbG9jYXRpb24taW50ZXJmYWNlIjogImh0bWwv
YnJvd3NlcnMvaGlzdG9yeS90aGUtbG9jYXRpb24taW50ZXJmYWNlIiwKLSAgICAic2VjdXJpdHkt
bG9jYXRpb24iOiAiaHRtbC9icm93c2Vycy9oaXN0b3J5L3RoZS1sb2NhdGlvbi1pbnRlcmZhY2Ui
LAotICAgICJoaXN0b3J5LW5vdGVzIjogImh0bWwvYnJvd3NlcnMvaGlzdG9yeS9oaXN0b3J5LW5v
dGVzIiwKLSAgICAiYnJvd3NpbmctdGhlLXdlYiI6ICJodG1sL2Jyb3dzZXJzL2Jyb3dzaW5nLXRo
ZS13ZWIiLAotICAgICJuYXZpZ2F0aW5nLWFjcm9zcy1kb2N1bWVudHMiOiAiaHRtbC9icm93c2Vy
cy9icm93c2luZy10aGUtd2ViL25hdmlnYXRpbmctYWNyb3NzLWRvY3VtZW50cyIsCi0gICAgInJl
YWQtaHRtbCI6ICJodG1sL2Jyb3dzZXJzL2Jyb3dzaW5nLXRoZS13ZWIvcmVhZC1odG1sIiwKLSAg
ICAicmVhZC14bWwiOiAiaHRtbC9icm93c2Vycy9icm93c2luZy10aGUtd2ViL3JlYWQteG1sIiwK
LSAgICAicmVhZC10ZXh0IjogImh0bWwvYnJvd3NlcnMvYnJvd3NpbmctdGhlLXdlYi9yZWFkLXRl
eHQiLAotICAgICJyZWFkLW11bHRpcGFydC14LW1peGVkLXJlcGxhY2UiOiAiaHRtbC9icm93c2Vy
cy9icm93c2luZy10aGUtd2ViL3JlYWQtbXVsdGlwYXJ0LXgtbWl4ZWQtcmVwbGFjZSIsCi0gICAg
InJlYWQtbWVkaWEiOiAiaHRtbC9icm93c2Vycy9icm93c2luZy10aGUtd2ViL3JlYWQtbWVkaWEi
LAotICAgICJyZWFkLXBsdWdpbiI6ICJodG1sL2Jyb3dzZXJzL2Jyb3dzaW5nLXRoZS13ZWIvcmVh
ZC1wbHVnaW4iLAotICAgICJyZWFkLXVhLWlubGluZSI6ICJodG1sL2Jyb3dzZXJzL2Jyb3dzaW5n
LXRoZS13ZWIvcmVhZC11YS1pbmxpbmUiLAotICAgICJzY3JvbGwtdG8tZnJhZ2lkIjogImh0bWwv
YnJvd3NlcnMvYnJvd3NpbmctdGhlLXdlYi9zY3JvbGwtdG8tZnJhZ2lkIiwKLSAgICAiaGlzdG9y
eS10cmF2ZXJzYWwiOiAiaHRtbC9icm93c2Vycy9icm93c2luZy10aGUtd2ViL2hpc3RvcnktdHJh
dmVyc2FsIiwKLSAgICAiZXZlbnQtZGVmaW5pdGlvbnMtMCI6ICJodG1sL2Jyb3dzZXJzL2Jyb3dz
aW5nLXRoZS13ZWIvaGlzdG9yeS10cmF2ZXJzYWwiLAotICAgICJ1bmxvYWRpbmctZG9jdW1lbnRz
IjogImh0bWwvYnJvd3NlcnMvYnJvd3NpbmctdGhlLXdlYi91bmxvYWRpbmctZG9jdW1lbnRzIiwK
LSAgICAiZXZlbnQtZGVmaW5pdGlvbiI6ICJodG1sL2Jyb3dzZXJzL2Jyb3dzaW5nLXRoZS13ZWIv
dW5sb2FkaW5nLWRvY3VtZW50cyIsCi0gICAgImFib3J0aW5nLWEtZG9jdW1lbnQtbG9hZCI6ICJo
dG1sL2Jyb3dzZXJzL2Jyb3dzaW5nLXRoZS13ZWIvYWJvcnRpbmctYS1kb2N1bWVudC1sb2FkIiwK
LSAgICAib2ZmbGluZSI6ICJodG1sL2Jyb3dzZXJzL29mZmxpbmUiLAotICAgICJpbnRyb2R1Y3Rp
b24tNCI6ICJodG1sL2Jyb3dzZXJzL29mZmxpbmUvaW50cm9kdWN0aW9uLTQiLAotICAgICJzdXBw
b3J0aW5nLW9mZmxpbmUtY2FjaGluZy1mb3ItbGVnYWN5LWFwcGxpY2F0aW9ucyI6ICJodG1sL2Jy
b3dzZXJzL29mZmxpbmUvaW50cm9kdWN0aW9uLTQiLAotICAgICJhcHBjYWNoZWV2ZW50cyI6ICJo
dG1sL2Jyb3dzZXJzL29mZmxpbmUvaW50cm9kdWN0aW9uLTQiLAotICAgICJhcHBjYWNoZSI6ICJo
dG1sL2Jyb3dzZXJzL29mZmxpbmUvYXBwY2FjaGUiLAotICAgICJtYW5pZmVzdHMiOiAiaHRtbC9i
cm93c2Vycy9vZmZsaW5lL21hbmlmZXN0cyIsCi0gICAgInNvbWUtc2FtcGxlLW1hbmlmZXN0cyI6
ICJodG1sL2Jyb3dzZXJzL29mZmxpbmUvbWFuaWZlc3RzIiwKLSAgICAid3JpdGluZy1jYWNoZS1t
YW5pZmVzdHMiOiAiaHRtbC9icm93c2Vycy9vZmZsaW5lL21hbmlmZXN0cyIsCi0gICAgInBhcnNp
bmctY2FjaGUtbWFuaWZlc3RzIjogImh0bWwvYnJvd3NlcnMvb2ZmbGluZS9tYW5pZmVzdHMiLAot
ICAgICJkb3dubG9hZGluZy1vci11cGRhdGluZy1hbi1hcHBsaWNhdGlvbi1jYWNoZSI6ICJodG1s
L2Jyb3dzZXJzL29mZmxpbmUvZG93bmxvYWRpbmctb3ItdXBkYXRpbmctYW4tYXBwbGljYXRpb24t
Y2FjaGUiLAotICAgICJ0aGUtYXBwbGljYXRpb24tY2FjaGUtc2VsZWN0aW9uLWFsZ29yaXRobSI6
ICJodG1sL2Jyb3dzZXJzL29mZmxpbmUvdGhlLWFwcGxpY2F0aW9uLWNhY2hlLXNlbGVjdGlvbi1h
bGdvcml0aG0iLAotICAgICJjaGFuZ2VzVG9OZXR3b3JraW5nTW9kZWwiOiAiaHRtbC9icm93c2Vy
cy9vZmZsaW5lL2NoYW5nZXN0b25ldHdvcmtpbmdtb2RlbCIsCi0gICAgImV4cGlyaW5nLWFwcGxp
Y2F0aW9uLWNhY2hlcyI6ICJodG1sL2Jyb3dzZXJzL29mZmxpbmUvZXhwaXJpbmctYXBwbGljYXRp
b24tY2FjaGVzIiwKLSAgICAiZGlzay1zcGFjZSI6ICJodG1sL2Jyb3dzZXJzL29mZmxpbmUvZGlz
ay1zcGFjZSIsCi0gICAgImFwcGxpY2F0aW9uLWNhY2hlLWFwaSI6ICJodG1sL2Jyb3dzZXJzL29m
ZmxpbmUvYXBwbGljYXRpb24tY2FjaGUtYXBpIiwKLSAgICAiYnJvd3Nlci1zdGF0ZSI6ICJodG1s
L2Jyb3dzZXJzL29mZmxpbmUvYnJvd3Nlci1zdGF0ZSIsCi0gICAgIndlYmFwcGFwaXMiOiAiaHRt
bC93ZWJhcHBhcGlzIiwKLSAgICAic2NyaXB0aW5nIjogImh0bWwvd2ViYXBwYXBpcy9zY3JpcHRp
bmciLAotICAgICJpbnRyb2R1Y3Rpb24tNSI6ICJodG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL2lu
dHJvZHVjdGlvbi01IiwKLSAgICAiZW5hYmxpbmctYW5kLWRpc2FibGluZy1zY3JpcHRpbmciOiAi
aHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9lbmFibGluZy1hbmQtZGlzYWJsaW5nLXNjcmlwdGlu
ZyIsCi0gICAgInByb2Nlc3NpbmctbW9kZWwtMiI6ICJodG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5n
L3Byb2Nlc3NpbmctbW9kZWwtMiIsCi0gICAgImRlZmluaXRpb25zLTAiOiAiaHRtbC93ZWJhcHBh
cGlzL3NjcmlwdGluZy9wcm9jZXNzaW5nLW1vZGVsLTIiLAotICAgICJjYWxsaW5nLXNjcmlwdHMi
OiAiaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9wcm9jZXNzaW5nLW1vZGVsLTIiLAotICAgICJj
cmVhdGluZy1zY3JpcHRzIjogImh0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvcHJvY2Vzc2luZy1t
b2RlbC0yIiwKLSAgICAia2lsbGluZy1zY3JpcHRzIjogImh0bWwvd2ViYXBwYXBpcy9zY3JpcHRp
bmcvcHJvY2Vzc2luZy1tb2RlbC0yIiwKLSAgICAicnVudGltZS1zY3JpcHQtZXJyb3JzIjogImh0
bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvcHJvY2Vzc2luZy1tb2RlbC0yIiwKLSAgICAicnVudGlt
ZS1zY3JpcHQtZXJyb3JzLWluLWRvY3VtZW50cyI6ICJodG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5n
L3Byb2Nlc3NpbmctbW9kZWwtMiIsCi0gICAgImV2ZW50LWxvb3BzIjogImh0bWwvd2ViYXBwYXBp
cy9zY3JpcHRpbmcvZXZlbnQtbG9vcHMiLAotICAgICJkZWZpbml0aW9ucy0xIjogImh0bWwvd2Vi
YXBwYXBpcy9zY3JpcHRpbmcvZXZlbnQtbG9vcHMiLAotICAgICJwcm9jZXNzaW5nLW1vZGVsLTMi
OiAiaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9ldmVudC1sb29wcyIsCi0gICAgImdlbmVyaWMt
dGFzay1zb3VyY2VzIjogImh0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvZXZlbnQtbG9vcHMiLAot
ICAgICJqYXZhc2NyaXB0LXByb3RvY29sIjogImh0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvamF2
YXNjcmlwdC1wcm90b2NvbCIsCi0gICAgImV2ZW50cyI6ICJodG1sL3dlYmFwcGFwaXMvc2NyaXB0
aW5nL2V2ZW50cyIsCi0gICAgImV2ZW50LWhhbmRsZXItYXR0cmlidXRlcyI6ICJodG1sL3dlYmFw
cGFwaXMvc2NyaXB0aW5nL2V2ZW50cyIsCi0gICAgImV2ZW50LWhhbmRsZXJzLW9uLWVsZW1lbnRz
LC1kb2N1bWVudC1vYmplY3RzLC1hbmQtd2luZG93LW9iamVjdHMiOiAiaHRtbC93ZWJhcHBhcGlz
L3NjcmlwdGluZy9ldmVudHMiLAotICAgICJldmVudC1maXJpbmciOiAiaHRtbC93ZWJhcHBhcGlz
L3NjcmlwdGluZy9ldmVudHMiLAotICAgICJldmVudHMtYW5kLXRoZS13aW5kb3ctb2JqZWN0Ijog
Imh0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvZXZlbnRzIiwKLSAgICAiYXRvYiI6ICJodG1sL3dl
YmFwcGFwaXMvYXRvYiIsCi0gICAgInRpbWVycyI6ICJodG1sL3dlYmFwcGFwaXMvdGltZXJzIiwK
LSAgICAidXNlci1wcm9tcHRzIjogImh0bWwvd2ViYXBwYXBpcy91c2VyLXByb21wdHMiLAotICAg
ICJzaW1wbGUtZGlhbG9ncyI6ICJodG1sL3dlYmFwcGFwaXMvdXNlci1wcm9tcHRzL3NpbXBsZS1k
aWFsb2dzIiwKLSAgICAicHJpbnRpbmciOiAiaHRtbC93ZWJhcHBhcGlzL3VzZXItcHJvbXB0cy9w
cmludGluZyIsCi0gICAgImRpYWxvZ3MtaW1wbGVtZW50ZWQtdXNpbmctc2VwYXJhdGUtZG9jdW1l
bnRzIjogImh0bWwvd2ViYXBwYXBpcy91c2VyLXByb21wdHMvZGlhbG9ncy1pbXBsZW1lbnRlZC11
c2luZy1zZXBhcmF0ZS1kb2N1bWVudHMiLAotICAgICJzeXN0ZW0tc3RhdGUtYW5kLWNhcGFiaWxp
dGllcyI6ICJodG1sL3dlYmFwcGFwaXMvc3lzdGVtLXN0YXRlLWFuZC1jYXBhYmlsaXRpZXMiLAot
ICAgICJ0aGUtbmF2aWdhdG9yLW9iamVjdCI6ICJodG1sL3dlYmFwcGFwaXMvc3lzdGVtLXN0YXRl
LWFuZC1jYXBhYmlsaXRpZXMvdGhlLW5hdmlnYXRvci1vYmplY3QiLAotICAgICJjbGllbnQtaWRl
bnRpZmljYXRpb24iOiAiaHRtbC93ZWJhcHBhcGlzL3N5c3RlbS1zdGF0ZS1hbmQtY2FwYWJpbGl0
aWVzL3RoZS1uYXZpZ2F0b3Itb2JqZWN0IiwKLSAgICAiY3VzdG9tLWhhbmRsZXJzIjogImh0bWwv
d2ViYXBwYXBpcy9zeXN0ZW0tc3RhdGUtYW5kLWNhcGFiaWxpdGllcy90aGUtbmF2aWdhdG9yLW9i
amVjdCIsCi0gICAgInNlY3VyaXR5LWFuZC1wcml2YWN5IjogImh0bWwvd2ViYXBwYXBpcy9zeXN0
ZW0tc3RhdGUtYW5kLWNhcGFiaWxpdGllcy90aGUtbmF2aWdhdG9yLW9iamVjdCIsCi0gICAgInNh
bXBsZS1oYW5kbGVyLWltcGwiOiAiaHRtbC93ZWJhcHBhcGlzL3N5c3RlbS1zdGF0ZS1hbmQtY2Fw
YWJpbGl0aWVzL3RoZS1uYXZpZ2F0b3Itb2JqZWN0IiwKLSAgICAibWFudWFsbHktcmVsZWFzaW5n
LXRoZS1zdG9yYWdlLW11dGV4IjogImh0bWwvd2ViYXBwYXBpcy9zeXN0ZW0tc3RhdGUtYW5kLWNh
cGFiaWxpdGllcy90aGUtbmF2aWdhdG9yLW9iamVjdCIsCi0gICAgInRoZS1leHRlcm5hbC1pbnRl
cmZhY2UiOiAiaHRtbC93ZWJhcHBhcGlzL3N5c3RlbS1zdGF0ZS1hbmQtY2FwYWJpbGl0aWVzL3Ro
ZS1leHRlcm5hbC1pbnRlcmZhY2UiLAotICAgICJlZGl0aW5nIjogImh0bWwvZWRpdGluZyIsCi0g
ICAgInRoZS1oaWRkZW4tYXR0cmlidXRlIjogImh0bWwvZWRpdGluZy90aGUtaGlkZGVuLWF0dHJp
YnV0ZSIsCi0gICAgImluZXJ0LXN1YnRyZWVzIjogImh0bWwvZWRpdGluZy9pbmVydC1zdWJ0cmVl
cyIsCi0gICAgInRoZS1pbmVydC1hdHRyaWJ1dGUiOiAiaHRtbC9lZGl0aW5nL2luZXJ0LXN1YnRy
ZWVzL3RoZS1pbmVydC1hdHRyaWJ1dGUiLAotICAgICJhY3RpdmF0aW9uIjogImh0bWwvZWRpdGlu
Zy9hY3RpdmF0aW9uIiwKLSAgICAiZm9jdXMiOiAiaHRtbC9lZGl0aW5nL2ZvY3VzIiwKLSAgICAi
c2VxdWVudGlhbC1mb2N1cy1uYXZpZ2F0aW9uLWFuZC10aGUtdGFiaW5kZXgtYXR0cmlidXRlIjog
Imh0bWwvZWRpdGluZy9mb2N1cy9zZXF1ZW50aWFsLWZvY3VzLW5hdmlnYXRpb24tYW5kLXRoZS10
YWJpbmRleC1hdHRyaWJ1dGUiLAotICAgICJmb2N1cy1tYW5hZ2VtZW50IjogImh0bWwvZWRpdGlu
Zy9mb2N1cy9mb2N1cy1tYW5hZ2VtZW50IiwKLSAgICAiZG9jdW1lbnQtbGV2ZWwtZm9jdXMtYXBp
cyI6ICJodG1sL2VkaXRpbmcvZm9jdXMvZG9jdW1lbnQtbGV2ZWwtZm9jdXMtYXBpcyIsCi0gICAg
ImVsZW1lbnQtbGV2ZWwtZm9jdXMtYXBpcyI6ICJodG1sL2VkaXRpbmcvZm9jdXMvZWxlbWVudC1s
ZXZlbC1mb2N1cy1hcGlzIiwKLSAgICAiYXNzaWduaW5nLWtleWJvYXJkLXNob3J0Y3V0cyI6ICJo
dG1sL2VkaXRpbmcvYXNzaWduaW5nLWtleWJvYXJkLXNob3J0Y3V0cyIsCi0gICAgImludHJvZHVj
dGlvbi02IjogImh0bWwvZWRpdGluZy9hc3NpZ25pbmcta2V5Ym9hcmQtc2hvcnRjdXRzL2ludHJv
ZHVjdGlvbi02IiwKLSAgICAidGhlLWFjY2Vzc2tleS1hdHRyaWJ1dGUiOiAiaHRtbC9lZGl0aW5n
L2Fzc2lnbmluZy1rZXlib2FyZC1zaG9ydGN1dHMvdGhlLWFjY2Vzc2tleS1hdHRyaWJ1dGUiLAot
ICAgICJwcm9jZXNzaW5nLW1vZGVsLTQiOiAiaHRtbC9lZGl0aW5nL2Fzc2lnbmluZy1rZXlib2Fy
ZC1zaG9ydGN1dHMvcHJvY2Vzc2luZy1tb2RlbC00IiwKLSAgICAiZWRpdGluZy0wIjogImh0bWwv
ZWRpdGluZy9lZGl0aW5nLTAiLAotICAgICJjb250ZW50ZWRpdGFibGUiOiAiaHRtbC9lZGl0aW5n
L2VkaXRpbmctMC9jb250ZW50ZWRpdGFibGUiLAotICAgICJtYWtpbmctZW50aXJlLWRvY3VtZW50
cy1lZGl0YWJsZTotdGhlLWRlc2lnbm1vZGUtaWRsLWF0dHJpYnV0ZSI6ICJodG1sL2VkaXRpbmcv
ZWRpdGluZy0wL21ha2luZy1lbnRpcmUtZG9jdW1lbnRzLWVkaXRhYmxlLXRoZS1kZXNpZ25tb2Rl
LWlkbC1hdHRyaWJ1dGUiLAotICAgICJiZXN0LXByYWN0aWNlcy1mb3ItaW4tcGFnZS1lZGl0b3Jz
IjogImh0bWwvZWRpdGluZy9lZGl0aW5nLTAvYmVzdC1wcmFjdGljZXMtZm9yLWluLXBhZ2UtZWRp
dG9ycyIsCi0gICAgImVkaXRpbmctYXBpcyI6ICJodG1sL2VkaXRpbmcvZWRpdGluZy0wL2VkaXRp
bmctYXBpcyIsCi0gICAgInNwZWxsaW5nLWFuZC1ncmFtbWFyLWNoZWNraW5nIjogImh0bWwvZWRp
dGluZy9lZGl0aW5nLTAvc3BlbGxpbmctYW5kLWdyYW1tYXItY2hlY2tpbmciLAotICAgICJkbmQi
OiAiaHRtbC9lZGl0aW5nL2RuZCIsCi0gICAgImludHJvZHVjdGlvbi03IjogImh0bWwvZWRpdGlu
Zy9kbmQvaW50cm9kdWN0aW9uLTciLAotICAgICJ0aGUtZHJhZy1kYXRhLXN0b3JlIjogImh0bWwv
ZWRpdGluZy9kbmQvdGhlLWRyYWctZGF0YS1zdG9yZSIsCi0gICAgInRoZS1kYXRhdHJhbnNmZXIt
aW50ZXJmYWNlIjogImh0bWwvZWRpdGluZy9kbmQvdGhlLWRhdGF0cmFuc2Zlci1pbnRlcmZhY2Ui
LAotICAgICJ0aGUtZGF0YXRyYW5zZmVyaXRlbWxpc3QtaW50ZXJmYWNlIjogImh0bWwvZWRpdGlu
Zy9kbmQvdGhlLWRhdGF0cmFuc2Zlci1pbnRlcmZhY2UiLAotICAgICJ0aGUtZGF0YXRyYW5zZmVy
aXRlbS1pbnRlcmZhY2UiOiAiaHRtbC9lZGl0aW5nL2RuZC90aGUtZGF0YXRyYW5zZmVyLWludGVy
ZmFjZSIsCi0gICAgInRoZS1kcmFnZXZlbnQtaW50ZXJmYWNlIjogImh0bWwvZWRpdGluZy9kbmQv
dGhlLWRyYWdldmVudC1pbnRlcmZhY2UiLAotICAgICJkcmFnLWFuZC1kcm9wLXByb2Nlc3Npbmct
bW9kZWwiOiAiaHRtbC9lZGl0aW5nL2RuZC9kcmFnLWFuZC1kcm9wLXByb2Nlc3NpbmctbW9kZWwi
LAotICAgICJkbmRldmVudHMiOiAiaHRtbC9lZGl0aW5nL2RuZC9kbmRldmVudHMiLAotICAgICJ0
aGUtZHJhZ2dhYmxlLWF0dHJpYnV0ZSI6ICJodG1sL2VkaXRpbmcvZG5kL3RoZS1kcmFnZ2FibGUt
YXR0cmlidXRlIiwKLSAgICAidGhlLWRyb3B6b25lLWF0dHJpYnV0ZSI6ICJodG1sL2VkaXRpbmcv
ZG5kL3RoZS1kcm9wem9uZS1hdHRyaWJ1dGUiLAotICAgICJzZWN1cml0eS1yaXNrcy1pbi10aGUt
ZHJhZy1hbmQtZHJvcC1tb2RlbCI6ICJodG1sL2VkaXRpbmcvZG5kL3NlY3VyaXR5LXJpc2tzLWlu
LXRoZS1kcmFnLWFuZC1kcm9wLW1vZGVsIiwKLSAgICAic3ludGF4IjogImh0bWwvc3ludGF4IiwK
LSAgICAid3JpdGluZyI6ICJodG1sL3N5bnRheC93cml0aW5nIiwKLSAgICAidGhlLWRvY3R5cGUi
OiAiaHRtbC9zeW50YXgvd3JpdGluZy90aGUtZG9jdHlwZSIsCi0gICAgImVsZW1lbnRzLTAiOiAi
aHRtbC9zeW50YXgvd3JpdGluZy9lbGVtZW50cy0wIiwKLSAgICAic3RhcnQtdGFncyI6ICJodG1s
L3N5bnRheC93cml0aW5nL2VsZW1lbnRzLTAiLAotICAgICJlbmQtdGFncyI6ICJodG1sL3N5bnRh
eC93cml0aW5nL2VsZW1lbnRzLTAiLAotICAgICJhdHRyaWJ1dGVzLTAiOiAiaHRtbC9zeW50YXgv
d3JpdGluZy9lbGVtZW50cy0wIiwKLSAgICAib3B0aW9uYWwtdGFncyI6ICJodG1sL3N5bnRheC93
cml0aW5nL2VsZW1lbnRzLTAiLAotICAgICJlbGVtZW50LXJlc3RyaWN0aW9ucyI6ICJodG1sL3N5
bnRheC93cml0aW5nL2VsZW1lbnRzLTAiLAotICAgICJjZGF0YS1yY2RhdGEtcmVzdHJpY3Rpb25z
IjogImh0bWwvc3ludGF4L3dyaXRpbmcvZWxlbWVudHMtMCIsCi0gICAgInRleHQiOiAiaHRtbC9z
eW50YXgvd3JpdGluZy90ZXh0IiwKLSAgICAibmV3bGluZXMiOiAiaHRtbC9zeW50YXgvd3JpdGlu
Zy90ZXh0IiwKLSAgICAiY2hhcmFjdGVyLXJlZmVyZW5jZXMiOiAiaHRtbC9zeW50YXgvd3JpdGlu
Zy9jaGFyYWN0ZXItcmVmZXJlbmNlcyIsCi0gICAgImNkYXRhLXNlY3Rpb25zIjogImh0bWwvc3lu
dGF4L3dyaXRpbmcvY2RhdGEtc2VjdGlvbnMiLAotICAgICJjb21tZW50cyI6ICJodG1sL3N5bnRh
eC93cml0aW5nL2NvbW1lbnRzIiwKLSAgICAicGFyc2luZyI6ICJodG1sL3N5bnRheC9wYXJzaW5n
IiwKLSAgICAib3ZlcnZpZXctb2YtdGhlLXBhcnNpbmctbW9kZWwiOiAiaHRtbC9zeW50YXgvcGFy
c2luZyIsCi0gICAgInRoZS1pbnB1dC1ieXRlLXN0cmVhbSI6ICJodG1sL3N5bnRheC9wYXJzaW5n
IiwKLSAgICAiZGV0ZXJtaW5pbmctdGhlLWNoYXJhY3Rlci1lbmNvZGluZyI6ICJodG1sL3N5bnRh
eC9wYXJzaW5nIiwKLSAgICAiY2hhcmFjdGVyLWVuY29kaW5ncy0wIjogImh0bWwvc3ludGF4L3Bh
cnNpbmciLAotICAgICJjaGFuZ2luZy10aGUtZW5jb2Rpbmctd2hpbGUtcGFyc2luZyI6ICJodG1s
L3N5bnRheC9wYXJzaW5nIiwKLSAgICAicHJlcHJvY2Vzc2luZy10aGUtaW5wdXQtc3RyZWFtIjog
Imh0bWwvc3ludGF4L3BhcnNpbmciLAotICAgICJwYXJzZS1zdGF0ZSI6ICJodG1sL3N5bnRheC9w
YXJzaW5nIiwKLSAgICAidGhlLWluc2VydGlvbi1tb2RlIjogImh0bWwvc3ludGF4L3BhcnNpbmci
LAotICAgICJ0aGUtc3RhY2stb2Ytb3Blbi1lbGVtZW50cyI6ICJodG1sL3N5bnRheC9wYXJzaW5n
IiwKLSAgICAidGhlLWxpc3Qtb2YtYWN0aXZlLWZvcm1hdHRpbmctZWxlbWVudHMiOiAiaHRtbC9z
eW50YXgvcGFyc2luZyIsCi0gICAgInRoZS1lbGVtZW50LXBvaW50ZXJzIjogImh0bWwvc3ludGF4
L3BhcnNpbmciLAotICAgICJvdGhlci1wYXJzaW5nLXN0YXRlLWZsYWdzIjogImh0bWwvc3ludGF4
L3BhcnNpbmciLAotICAgICJ0b2tlbml6YXRpb24iOiAiaHRtbC9zeW50YXgvcGFyc2luZyIsCi0g
ICAgImRhdGEtc3RhdGUiOiAiaHRtbC9zeW50YXgvcGFyc2luZyIsCi0gICAgImNoYXJhY3Rlci1y
ZWZlcmVuY2UtaW4tZGF0YS1zdGF0ZSI6ICJodG1sL3N5bnRheC9wYXJzaW5nIiwKLSAgICAicmNk
YXRhLXN0YXRlIjogImh0bWwvc3ludGF4L3BhcnNpbmciLAotICAgICJjaGFyYWN0ZXItcmVmZXJl
bmNlLWluLXJjZGF0YS1zdGF0ZSI6ICJodG1sL3N5bnRheC9wYXJzaW5nIiwKLSAgICAicmF3dGV4
dC1zdGF0ZSI6ICJodG1sL3N5bnRheC9wYXJzaW5nIiwKLSAgICAic2NyaXB0LWRhdGEtc3RhdGUi
OiAiaHRtbC9zeW50YXgvcGFyc2luZyIsCi0gICAgInBsYWludGV4dC1zdGF0ZSI6ICJodG1sL3N5
bnRheC9wYXJzaW5nIiwKLSAgICAidGFnLW9wZW4tc3RhdGUiOiAiaHRtbC9zeW50YXgvcGFyc2lu
ZyIsCi0gICAgImVuZC10YWctb3Blbi1zdGF0ZSI6ICJodG1sL3N5bnRheC9wYXJzaW5nIiwKLSAg
ICAidGFnLW5hbWUtc3RhdGUiOiAiaHRtbC9zeW50YXgvcGFyc2luZyIsCi0gICAgInJjZGF0YS1s
ZXNzLXRoYW4tc2lnbi1zdGF0ZSI6ICJodG1sL3N5bnRheC9wYXJzaW5nIiwKLSAgICAicmNkYXRh
LWVuZC10YWctb3Blbi1zdGF0ZSI6ICJodG1sL3N5bnRheC9wYXJzaW5nIiwKLSAgICAicmNkYXRh
LWVuZC10YWctbmFtZS1zdGF0ZSI6ICJodG1sL3N5bnRheC9wYXJzaW5nIiwKLSAgICAicmF3dGV4
dC1sZXNzLXRoYW4tc2lnbi1zdGF0ZSI6ICJodG1sL3N5bnRheC9wYXJzaW5nIiwKLSAgICAicmF3
dGV4dC1lbmQtdGFnLW9wZW4tc3RhdGUiOiAiaHRtbC9zeW50YXgvcGFyc2luZyIsCi0gICAgInJh
d3RleHQtZW5kLXRhZy1uYW1lLXN0YXRlIjogImh0bWwvc3ludGF4L3BhcnNpbmciLAotICAgICJz
Y3JpcHQtZGF0YS1sZXNzLXRoYW4tc2lnbi1zdGF0ZSI6ICJodG1sL3N5bnRheC9wYXJzaW5nIiwK
LSAgICAic2NyaXB0LWRhdGEtZW5kLXRhZy1vcGVuLXN0YXRlIjogImh0bWwvc3ludGF4L3BhcnNp
bmciLAotICAgICJzY3JpcHQtZGF0YS1lbmQtdGFnLW5hbWUtc3RhdGUiOiAiaHRtbC9zeW50YXgv
cGFyc2luZyIsCi0gICAgInNjcmlwdC1kYXRhLWVzY2FwZS1zdGFydC1zdGF0ZSI6ICJodG1sL3N5
bnRheC9wYXJzaW5nIiwKLSAgICAic2NyaXB0LWRhdGEtZXNjYXBlLXN0YXJ0LWRhc2gtc3RhdGUi
OiAiaHRtbC9zeW50YXgvcGFyc2luZyIsCi0gICAgInNjcmlwdC1kYXRhLWVzY2FwZWQtc3RhdGUi
OiAiaHRtbC9zeW50YXgvcGFyc2luZyIsCi0gICAgInNjcmlwdC1kYXRhLWVzY2FwZWQtZGFzaC1z
dGF0ZSI6ICJodG1sL3N5bnRheC9wYXJzaW5nIiwKLSAgICAic2NyaXB0LWRhdGEtZXNjYXBlZC1k
YXNoLWRhc2gtc3RhdGUiOiAiaHRtbC9zeW50YXgvcGFyc2luZyIsCi0gICAgInNjcmlwdC1kYXRh
LWVzY2FwZWQtbGVzcy10aGFuLXNpZ24tc3RhdGUiOiAiaHRtbC9zeW50YXgvcGFyc2luZyIsCi0g
ICAgInNjcmlwdC1kYXRhLWVzY2FwZWQtZW5kLXRhZy1vcGVuLXN0YXRlIjogImh0bWwvc3ludGF4
L3BhcnNpbmciLAotICAgICJzY3JpcHQtZGF0YS1lc2NhcGVkLWVuZC10YWctbmFtZS1zdGF0ZSI6
ICJodG1sL3N5bnRheC9wYXJzaW5nIiwKLSAgICAic2NyaXB0LWRhdGEtZG91YmxlLWVzY2FwZS1z
dGFydC1zdGF0ZSI6ICJodG1sL3N5bnRheC9wYXJzaW5nIiwKLSAgICAic2NyaXB0LWRhdGEtZG91
YmxlLWVzY2FwZWQtc3RhdGUiOiAiaHRtbC9zeW50YXgvcGFyc2luZyIsCi0gICAgInNjcmlwdC1k
YXRhLWRvdWJsZS1lc2NhcGVkLWRhc2gtc3RhdGUiOiAiaHRtbC9zeW50YXgvcGFyc2luZyIsCi0g
ICAgInNjcmlwdC1kYXRhLWRvdWJsZS1lc2NhcGVkLWRhc2gtZGFzaC1zdGF0ZSI6ICJodG1sL3N5
bnRheC9wYXJzaW5nIiwKLSAgICAic2NyaXB0LWRhdGEtZG91YmxlLWVzY2FwZWQtbGVzcy10aGFu
LXNpZ24tc3RhdGUiOiAiaHRtbC9zeW50YXgvcGFyc2luZyIsCi0gICAgInNjcmlwdC1kYXRhLWRv
dWJsZS1lc2NhcGUtZW5kLXN0YXRlIjogImh0bWwvc3ludGF4L3BhcnNpbmciLAotICAgICJiZWZv
cmUtYXR0cmlidXRlLW5hbWUtc3RhdGUiOiAiaHRtbC9zeW50YXgvcGFyc2luZyIsCi0gICAgImF0
dHJpYnV0ZS1uYW1lLXN0YXRlIjogImh0bWwvc3ludGF4L3BhcnNpbmciLAotICAgICJhZnRlci1h
dHRyaWJ1dGUtbmFtZS1zdGF0ZSI6ICJodG1sL3N5bnRheC9wYXJzaW5nIiwKLSAgICAiYmVmb3Jl
LWF0dHJpYnV0ZS12YWx1ZS1zdGF0ZSI6ICJodG1sL3N5bnRheC9wYXJzaW5nIiwKLSAgICAiYXR0
cmlidXRlLXZhbHVlLShkb3VibGUtcXVvdGVkKS1zdGF0ZSI6ICJodG1sL3N5bnRheC9wYXJzaW5n
IiwKLSAgICAiYXR0cmlidXRlLXZhbHVlLShzaW5nbGUtcXVvdGVkKS1zdGF0ZSI6ICJodG1sL3N5
bnRheC9wYXJzaW5nIiwKLSAgICAiYXR0cmlidXRlLXZhbHVlLSh1bnF1b3RlZCktc3RhdGUiOiAi
aHRtbC9zeW50YXgvcGFyc2luZyIsCi0gICAgImNoYXJhY3Rlci1yZWZlcmVuY2UtaW4tYXR0cmli
dXRlLXZhbHVlLXN0YXRlIjogImh0bWwvc3ludGF4L3BhcnNpbmciLAotICAgICJhZnRlci1hdHRy
aWJ1dGUtdmFsdWUtKHF1b3RlZCktc3RhdGUiOiAiaHRtbC9zeW50YXgvcGFyc2luZyIsCi0gICAg
InNlbGYtY2xvc2luZy1zdGFydC10YWctc3RhdGUiOiAiaHRtbC9zeW50YXgvcGFyc2luZyIsCi0g
ICAgImJvZ3VzLWNvbW1lbnQtc3RhdGUiOiAiaHRtbC9zeW50YXgvcGFyc2luZyIsCi0gICAgIm1h
cmt1cC1kZWNsYXJhdGlvbi1vcGVuLXN0YXRlIjogImh0bWwvc3ludGF4L3BhcnNpbmciLAotICAg
ICJjb21tZW50LXN0YXJ0LXN0YXRlIjogImh0bWwvc3ludGF4L3BhcnNpbmciLAotICAgICJjb21t
ZW50LXN0YXJ0LWRhc2gtc3RhdGUiOiAiaHRtbC9zeW50YXgvcGFyc2luZyIsCi0gICAgImNvbW1l
bnQtc3RhdGUiOiAiaHRtbC9zeW50YXgvcGFyc2luZyIsCi0gICAgImNvbW1lbnQtZW5kLWRhc2gt
c3RhdGUiOiAiaHRtbC9zeW50YXgvcGFyc2luZyIsCi0gICAgImNvbW1lbnQtZW5kLXN0YXRlIjog
Imh0bWwvc3ludGF4L3BhcnNpbmciLAotICAgICJjb21tZW50LWVuZC1iYW5nLXN0YXRlIjogImh0
bWwvc3ludGF4L3BhcnNpbmciLAotICAgICJkb2N0eXBlLXN0YXRlIjogImh0bWwvc3ludGF4L3Bh
cnNpbmciLAotICAgICJiZWZvcmUtZG9jdHlwZS1uYW1lLXN0YXRlIjogImh0bWwvc3ludGF4L3Bh
cnNpbmciLAotICAgICJkb2N0eXBlLW5hbWUtc3RhdGUiOiAiaHRtbC9zeW50YXgvcGFyc2luZyIs
Ci0gICAgImFmdGVyLWRvY3R5cGUtbmFtZS1zdGF0ZSI6ICJodG1sL3N5bnRheC9wYXJzaW5nIiwK
LSAgICAiYWZ0ZXItZG9jdHlwZS1wdWJsaWMta2V5d29yZC1zdGF0ZSI6ICJodG1sL3N5bnRheC9w
YXJzaW5nIiwKLSAgICAiYmVmb3JlLWRvY3R5cGUtcHVibGljLWlkZW50aWZpZXItc3RhdGUiOiAi
aHRtbC9zeW50YXgvcGFyc2luZyIsCi0gICAgImRvY3R5cGUtcHVibGljLWlkZW50aWZpZXItKGRv
dWJsZS1xdW90ZWQpLXN0YXRlIjogImh0bWwvc3ludGF4L3BhcnNpbmciLAotICAgICJkb2N0eXBl
LXB1YmxpYy1pZGVudGlmaWVyLShzaW5nbGUtcXVvdGVkKS1zdGF0ZSI6ICJodG1sL3N5bnRheC9w
YXJzaW5nIiwKLSAgICAiYWZ0ZXItZG9jdHlwZS1wdWJsaWMtaWRlbnRpZmllci1zdGF0ZSI6ICJo
dG1sL3N5bnRheC9wYXJzaW5nIiwKLSAgICAiYmV0d2Vlbi1kb2N0eXBlLXB1YmxpYy1hbmQtc3lz
dGVtLWlkZW50aWZpZXJzLXN0YXRlIjogImh0bWwvc3ludGF4L3BhcnNpbmciLAotICAgICJhZnRl
ci1kb2N0eXBlLXN5c3RlbS1rZXl3b3JkLXN0YXRlIjogImh0bWwvc3ludGF4L3BhcnNpbmciLAot
ICAgICJiZWZvcmUtZG9jdHlwZS1zeXN0ZW0taWRlbnRpZmllci1zdGF0ZSI6ICJodG1sL3N5bnRh
eC9wYXJzaW5nIiwKLSAgICAiZG9jdHlwZS1zeXN0ZW0taWRlbnRpZmllci0oZG91YmxlLXF1b3Rl
ZCktc3RhdGUiOiAiaHRtbC9zeW50YXgvcGFyc2luZyIsCi0gICAgImRvY3R5cGUtc3lzdGVtLWlk
ZW50aWZpZXItKHNpbmdsZS1xdW90ZWQpLXN0YXRlIjogImh0bWwvc3ludGF4L3BhcnNpbmciLAot
ICAgICJhZnRlci1kb2N0eXBlLXN5c3RlbS1pZGVudGlmaWVyLXN0YXRlIjogImh0bWwvc3ludGF4
L3BhcnNpbmciLAotICAgICJib2d1cy1kb2N0eXBlLXN0YXRlIjogImh0bWwvc3ludGF4L3BhcnNp
bmciLAotICAgICJjZGF0YS1zZWN0aW9uLXN0YXRlIjogImh0bWwvc3ludGF4L3BhcnNpbmciLAot
ICAgICJ0b2tlbml6aW5nLWNoYXJhY3Rlci1yZWZlcmVuY2VzIjogImh0bWwvc3ludGF4L3BhcnNp
bmciLAotICAgICJ0cmVlLWNvbnN0cnVjdGlvbiI6ICJodG1sL3N5bnRheC9wYXJzaW5nIiwKLSAg
ICAiY3JlYXRpbmctYW5kLWluc2VydGluZy1lbGVtZW50cyI6ICJodG1sL3N5bnRheC9wYXJzaW5n
IiwKLSAgICAiY2xvc2luZy1lbGVtZW50cy10aGF0LWhhdmUtaW1wbGllZC1lbmQtdGFncyI6ICJo
dG1sL3N5bnRheC9wYXJzaW5nIiwKLSAgICAiZm9zdGVyLXBhcmVudGluZyI6ICJodG1sL3N5bnRh
eC9wYXJzaW5nIiwKLSAgICAicGFyc2luZy1tYWluLWluaHRtbCI6ICJodG1sL3N5bnRheC9wYXJz
aW5nIiwKLSAgICAidGhlLWluaXRpYWwtaW5zZXJ0aW9uLW1vZGUiOiAiaHRtbC9zeW50YXgvcGFy
c2luZyIsCi0gICAgInRoZS1iZWZvcmUtaHRtbC1pbnNlcnRpb24tbW9kZSI6ICJodG1sL3N5bnRh
eC9wYXJzaW5nIiwKLSAgICAidGhlLWJlZm9yZS1oZWFkLWluc2VydGlvbi1tb2RlIjogImh0bWwv
c3ludGF4L3BhcnNpbmciLAotICAgICJwYXJzaW5nLW1haW4taW5oZWFkIjogImh0bWwvc3ludGF4
L3BhcnNpbmciLAotICAgICJwYXJzaW5nLW1haW4taW5oZWFkbm9zY3JpcHQiOiAiaHRtbC9zeW50
YXgvcGFyc2luZyIsCi0gICAgInRoZS1hZnRlci1oZWFkLWluc2VydGlvbi1tb2RlIjogImh0bWwv
c3ludGF4L3BhcnNpbmciLAotICAgICJwYXJzaW5nLW1haW4taW5ib2R5IjogImh0bWwvc3ludGF4
L3BhcnNpbmciLAotICAgICJwYXJzaW5nLW1haW4taW5jZGF0YSI6ICJodG1sL3N5bnRheC9wYXJz
aW5nIiwKLSAgICAicGFyc2luZy1tYWluLWludGFibGUiOiAiaHRtbC9zeW50YXgvcGFyc2luZyIs
Ci0gICAgInBhcnNpbmctbWFpbi1pbnRhYmxldGV4dCI6ICJodG1sL3N5bnRheC9wYXJzaW5nIiwK
LSAgICAicGFyc2luZy1tYWluLWluY2FwdGlvbiI6ICJodG1sL3N5bnRheC9wYXJzaW5nIiwKLSAg
ICAicGFyc2luZy1tYWluLWluY29sZ3JvdXAiOiAiaHRtbC9zeW50YXgvcGFyc2luZyIsCi0gICAg
InBhcnNpbmctbWFpbi1pbnRib2R5IjogImh0bWwvc3ludGF4L3BhcnNpbmciLAotICAgICJwYXJz
aW5nLW1haW4taW50ciI6ICJodG1sL3N5bnRheC9wYXJzaW5nIiwKLSAgICAicGFyc2luZy1tYWlu
LWludGQiOiAiaHRtbC9zeW50YXgvcGFyc2luZyIsCi0gICAgInBhcnNpbmctbWFpbi1pbnNlbGVj
dCI6ICJodG1sL3N5bnRheC9wYXJzaW5nIiwKLSAgICAicGFyc2luZy1tYWluLWluc2VsZWN0aW50
YWJsZSI6ICJodG1sL3N5bnRheC9wYXJzaW5nIiwKLSAgICAicGFyc2luZy1tYWluLWFmdGVyYm9k
eSI6ICJodG1sL3N5bnRheC9wYXJzaW5nIiwKLSAgICAicGFyc2luZy1tYWluLWluZnJhbWVzZXQi
OiAiaHRtbC9zeW50YXgvcGFyc2luZyIsCi0gICAgInBhcnNpbmctbWFpbi1hZnRlcmZyYW1lc2V0
IjogImh0bWwvc3ludGF4L3BhcnNpbmciLAotICAgICJ0aGUtYWZ0ZXItYWZ0ZXItYm9keS1pbnNl
cnRpb24tbW9kZSI6ICJodG1sL3N5bnRheC9wYXJzaW5nIiwKLSAgICAidGhlLWFmdGVyLWFmdGVy
LWZyYW1lc2V0LWluc2VydGlvbi1tb2RlIjogImh0bWwvc3ludGF4L3BhcnNpbmciLAotICAgICJw
YXJzaW5nLW1haW4taW5mb3JlaWduIjogImh0bWwvc3ludGF4L3BhcnNpbmciLAotICAgICJ0aGUt
ZW5kIjogImh0bWwvc3ludGF4L3BhcnNpbmciLAotICAgICJjb2VyY2luZy1hbi1odG1sLWRvbS1p
bnRvLWFuLWluZm9zZXQiOiAiaHRtbC9zeW50YXgvcGFyc2luZyIsCi0gICAgImFuLWludHJvZHVj
dGlvbi10by1lcnJvci1oYW5kbGluZy1hbmQtc3RyYW5nZS1jYXNlcy1pbi10aGUtcGFyc2VyIjog
Imh0bWwvc3ludGF4L3BhcnNpbmciLAotICAgICJtaXNuZXN0ZWQtdGFnczotYi1pLS9iLS9pIjog
Imh0bWwvc3ludGF4L3BhcnNpbmciLAotICAgICJtaXNuZXN0ZWQtdGFnczotYi1wLS9iLS9wIjog
Imh0bWwvc3ludGF4L3BhcnNpbmciLAotICAgICJ1bmV4cGVjdGVkLW1hcmt1cC1pbi10YWJsZXMi
OiAiaHRtbC9zeW50YXgvcGFyc2luZyIsCi0gICAgInNjcmlwdHMtdGhhdC1tb2RpZnktdGhlLXBh
Z2UtYXMtaXQtaXMtYmVpbmctcGFyc2VkIjogImh0bWwvc3ludGF4L3BhcnNpbmciLAotICAgICJ0
aGUtZXhlY3V0aW9uLW9mLXNjcmlwdHMtdGhhdC1hcmUtbW92aW5nLWFjcm9zcy1tdWx0aXBsZS1k
b2N1bWVudHMiOiAiaHRtbC9zeW50YXgvcGFyc2luZyIsCi0gICAgInVuY2xvc2VkLWZvcm1hdHRp
bmctZWxlbWVudHMiOiAiaHRtbC9zeW50YXgvcGFyc2luZyIsCi0gICAgInNlcmlhbGl6aW5nLWh0
bWwtZnJhZ21lbnRzIjogImh0bWwvc3ludGF4L3NlcmlhbGl6aW5nLWh0bWwtZnJhZ21lbnRzIiwK
LSAgICAicGFyc2luZy1odG1sLWZyYWdtZW50cyI6ICJodG1sL3N5bnRheC9wYXJzaW5nLWh0bWwt
ZnJhZ21lbnRzIiwKLSAgICAibmFtZWQtY2hhcmFjdGVyLXJlZmVyZW5jZXMiOiAiaHRtbC9zeW50
YXgvbmFtZWQtY2hhcmFjdGVyLXJlZmVyZW5jZXMiLAotICAgICJ0aGUteGh0bWwtc3ludGF4Ijog
Imh0bWwvdGhlLXhodG1sLXN5bnRheCIsCi0gICAgIndyaXRpbmcteGh0bWwtZG9jdW1lbnRzIjog
Imh0bWwvdGhlLXhodG1sLXN5bnRheC93cml0aW5nLXhodG1sLWRvY3VtZW50cyIsCi0gICAgInBh
cnNpbmcteGh0bWwtZG9jdW1lbnRzIjogImh0bWwvdGhlLXhodG1sLXN5bnRheC9wYXJzaW5nLXho
dG1sLWRvY3VtZW50cyIsCi0gICAgInNlcmlhbGl6aW5nLXhodG1sLWZyYWdtZW50cyI6ICJodG1s
L3RoZS14aHRtbC1zeW50YXgvc2VyaWFsaXppbmcteGh0bWwtZnJhZ21lbnRzIiwKLSAgICAicGFy
c2luZy14aHRtbC1mcmFnbWVudHMiOiAiaHRtbC90aGUteGh0bWwtc3ludGF4L3BhcnNpbmcteGh0
bWwtZnJhZ21lbnRzIiwKLSAgICAicmVuZGVyaW5nIjogImh0bWwvcmVuZGVyaW5nIiwKLSAgICAi
aW50cm9kdWN0aW9uLTgiOiAiaHRtbC9yZW5kZXJpbmcvaW50cm9kdWN0aW9uLTgiLAotICAgICJ0
aGUtY3NzLXVzZXItYWdlbnQtc3R5bGUtc2hlZXQtYW5kLXByZXNlbnRhdGlvbmFsLWhpbnRzIjog
Imh0bWwvcmVuZGVyaW5nL3RoZS1jc3MtdXNlci1hZ2VudC1zdHlsZS1zaGVldC1hbmQtcHJlc2Vu
dGF0aW9uYWwtaGludHMiLAotICAgICJub24tcmVwbGFjZWQtZWxlbWVudHMiOiAiaHRtbC9yZW5k
ZXJpbmcvbm9uLXJlcGxhY2VkLWVsZW1lbnRzIiwKLSAgICAiaGlkZGVuLWVsZW1lbnRzIjogImh0
bWwvcmVuZGVyaW5nL25vbi1yZXBsYWNlZC1lbGVtZW50cy9oaWRkZW4tZWxlbWVudHMiLAotICAg
ICJ0aGUtcGFnZSI6ICJodG1sL3JlbmRlcmluZy9ub24tcmVwbGFjZWQtZWxlbWVudHMvdGhlLXBh
Z2UiLAotICAgICJmbG93LWNvbnRlbnQtMCI6ICJodG1sL3JlbmRlcmluZy9ub24tcmVwbGFjZWQt
ZWxlbWVudHMvZmxvdy1jb250ZW50LTAiLAotICAgICJwaHJhc2luZy1jb250ZW50LTAiOiAiaHRt
bC9yZW5kZXJpbmcvbm9uLXJlcGxhY2VkLWVsZW1lbnRzL3BocmFzaW5nLWNvbnRlbnQtMCIsCi0g
ICAgImJpZGlyZWN0aW9uYWwtdGV4dCI6ICJodG1sL3JlbmRlcmluZy9ub24tcmVwbGFjZWQtZWxl
bWVudHMvYmlkaXJlY3Rpb25hbC10ZXh0IiwKLSAgICAicXVvdGVzIjogImh0bWwvcmVuZGVyaW5n
L25vbi1yZXBsYWNlZC1lbGVtZW50cy9xdW90ZXMiLAotICAgICJzZWN0aW9ucy1hbmQtaGVhZGlu
Z3MiOiAiaHRtbC9yZW5kZXJpbmcvbm9uLXJlcGxhY2VkLWVsZW1lbnRzL3NlY3Rpb25zLWFuZC1o
ZWFkaW5ncyIsCi0gICAgImxpc3RzIjogImh0bWwvcmVuZGVyaW5nL25vbi1yZXBsYWNlZC1lbGVt
ZW50cy9saXN0cyIsCi0gICAgInRhYmxlcyI6ICJodG1sL3JlbmRlcmluZy9ub24tcmVwbGFjZWQt
ZWxlbWVudHMvdGFibGVzIiwKLSAgICAiZm9ybS1jb250cm9scyI6ICJodG1sL3JlbmRlcmluZy9u
b24tcmVwbGFjZWQtZWxlbWVudHMvZm9ybS1jb250cm9scyIsCi0gICAgInRoZS1oci1lbGVtZW50
LTAiOiAiaHRtbC9yZW5kZXJpbmcvbm9uLXJlcGxhY2VkLWVsZW1lbnRzL3RoZS1oci1lbGVtZW50
LTAiLAotICAgICJ0aGUtZmllbGRzZXQtZWxlbWVudC0wIjogImh0bWwvcmVuZGVyaW5nL25vbi1y
ZXBsYWNlZC1lbGVtZW50cy90aGUtZmllbGRzZXQtZWxlbWVudC0wIiwKLSAgICAicmVwbGFjZWQt
ZWxlbWVudHMiOiAiaHRtbC9yZW5kZXJpbmcvcmVwbGFjZWQtZWxlbWVudHMiLAotICAgICJlbWJl
ZGRlZC1jb250ZW50LTEiOiAiaHRtbC9yZW5kZXJpbmcvcmVwbGFjZWQtZWxlbWVudHMvZW1iZWRk
ZWQtY29udGVudC0xIiwKLSAgICAiaW1hZ2VzIjogImh0bWwvcmVuZGVyaW5nL3JlcGxhY2VkLWVs
ZW1lbnRzL2ltYWdlcyIsCi0gICAgImF0dHJpYnV0ZXMtZm9yLWVtYmVkZGVkLWNvbnRlbnQtYW5k
LWltYWdlcyI6ICJodG1sL3JlbmRlcmluZy9yZXBsYWNlZC1lbGVtZW50cy9hdHRyaWJ1dGVzLWZv
ci1lbWJlZGRlZC1jb250ZW50LWFuZC1pbWFnZXMiLAotICAgICJpbWFnZS1tYXBzLTAiOiAiaHRt
bC9yZW5kZXJpbmcvcmVwbGFjZWQtZWxlbWVudHMvaW1hZ2UtbWFwcy0wIiwKLSAgICAidG9vbGJh
cnMtMCI6ICJodG1sL3JlbmRlcmluZy9yZXBsYWNlZC1lbGVtZW50cy90b29sYmFycy0wIiwKLSAg
ICAiYmluZGluZ3MiOiAiaHRtbC9yZW5kZXJpbmcvYmluZGluZ3MiLAotICAgICJpbnRyb2R1Y3Rp
b24tOSI6ICJodG1sL3JlbmRlcmluZy9iaW5kaW5ncy9pbnRyb2R1Y3Rpb24tOSIsCi0gICAgInRo
ZS1idXR0b24tZWxlbWVudC0wIjogImh0bWwvcmVuZGVyaW5nL2JpbmRpbmdzL3RoZS1idXR0b24t
ZWxlbWVudC0wIiwKLSAgICAidGhlLWRldGFpbHMtZWxlbWVudC0wIjogImh0bWwvcmVuZGVyaW5n
L2JpbmRpbmdzL3RoZS1kZXRhaWxzLWVsZW1lbnQtMCIsCi0gICAgInRoZS1pbnB1dC1lbGVtZW50
LWFzLWEtdGV4dC1lbnRyeS13aWRnZXQiOiAiaHRtbC9yZW5kZXJpbmcvYmluZGluZ3MvdGhlLWlu
cHV0LWVsZW1lbnQtYXMtYS10ZXh0LWVudHJ5LXdpZGdldCIsCi0gICAgInRoZS1pbnB1dC1lbGVt
ZW50LWFzLWRvbWFpbi1zcGVjaWZpYy13aWRnZXRzIjogImh0bWwvcmVuZGVyaW5nL2JpbmRpbmdz
L3RoZS1pbnB1dC1lbGVtZW50LWFzLWRvbWFpbi1zcGVjaWZpYy13aWRnZXRzIiwKLSAgICAidGhl
LWlucHV0LWVsZW1lbnQtYXMtYS1yYW5nZS1jb250cm9sIjogImh0bWwvcmVuZGVyaW5nL2JpbmRp
bmdzL3RoZS1pbnB1dC1lbGVtZW50LWFzLWEtcmFuZ2UtY29udHJvbCIsCi0gICAgInRoZS1pbnB1
dC1lbGVtZW50LWFzLWEtY29sb3Itd2VsbCI6ICJodG1sL3JlbmRlcmluZy9iaW5kaW5ncy90aGUt
aW5wdXQtZWxlbWVudC1hcy1hLWNvbG9yLXdlbGwiLAotICAgICJ0aGUtaW5wdXQtZWxlbWVudC1h
cy1hLWNoZWNrYm94LWFuZC1yYWRpby1idXR0b24td2lkZ2V0cyI6ICJodG1sL3JlbmRlcmluZy9i
aW5kaW5ncy90aGUtaW5wdXQtZWxlbWVudC1hcy1hLWNoZWNrYm94LWFuZC1yYWRpby1idXR0b24t
d2lkZ2V0cyIsCi0gICAgInRoZS1pbnB1dC1lbGVtZW50LWFzLWEtZmlsZS11cGxvYWQtY29udHJv
bCI6ICJodG1sL3JlbmRlcmluZy9iaW5kaW5ncy90aGUtaW5wdXQtZWxlbWVudC1hcy1hLWZpbGUt
dXBsb2FkLWNvbnRyb2wiLAotICAgICJ0aGUtaW5wdXQtZWxlbWVudC1hcy1hLWJ1dHRvbiI6ICJo
dG1sL3JlbmRlcmluZy9iaW5kaW5ncy90aGUtaW5wdXQtZWxlbWVudC1hcy1hLWJ1dHRvbiIsCi0g
ICAgInRoZS1tYXJxdWVlLWVsZW1lbnQiOiAiaHRtbC9yZW5kZXJpbmcvYmluZGluZ3MvdGhlLW1h
cnF1ZWUtZWxlbWVudCIsCi0gICAgInRoZS1tZXRlci1lbGVtZW50LTAiOiAiaHRtbC9yZW5kZXJp
bmcvYmluZGluZ3MvdGhlLW1ldGVyLWVsZW1lbnQtMCIsCi0gICAgInRoZS1wcm9ncmVzcy1lbGVt
ZW50LTAiOiAiaHRtbC9yZW5kZXJpbmcvYmluZGluZ3MvdGhlLXByb2dyZXNzLWVsZW1lbnQtMCIs
Ci0gICAgInRoZS1zZWxlY3QtZWxlbWVudC0wIjogImh0bWwvcmVuZGVyaW5nL2JpbmRpbmdzL3Ro
ZS1zZWxlY3QtZWxlbWVudC0wIiwKLSAgICAidGhlLXRleHRhcmVhLWVsZW1lbnQtMCI6ICJodG1s
L3JlbmRlcmluZy9iaW5kaW5ncy90aGUtdGV4dGFyZWEtZWxlbWVudC0wIiwKLSAgICAidGhlLWtl
eWdlbi1lbGVtZW50LTAiOiAiaHRtbC9yZW5kZXJpbmcvYmluZGluZ3MvdGhlLWtleWdlbi1lbGVt
ZW50LTAiLAotICAgICJmcmFtZXMtYW5kLWZyYW1lc2V0cyI6ICJodG1sL3JlbmRlcmluZy9mcmFt
ZXMtYW5kLWZyYW1lc2V0cyIsCi0gICAgImludGVyYWN0aXZlLW1lZGlhIjogImh0bWwvcmVuZGVy
aW5nL2ludGVyYWN0aXZlLW1lZGlhIiwKLSAgICAibGlua3MsLWZvcm1zLC1hbmQtbmF2aWdhdGlv
biI6ICJodG1sL3JlbmRlcmluZy9pbnRlcmFjdGl2ZS1tZWRpYS9saW5rcy1mb3Jtcy1hbmQtbmF2
aWdhdGlvbiIsCi0gICAgInRoZS10aXRsZS1hdHRyaWJ1dGUtMCI6ICJodG1sL3JlbmRlcmluZy9p
bnRlcmFjdGl2ZS1tZWRpYS90aGUtdGl0bGUtYXR0cmlidXRlLTAiLAotICAgICJlZGl0aW5nLWhv
c3RzIjogImh0bWwvcmVuZGVyaW5nL2ludGVyYWN0aXZlLW1lZGlhL2VkaXRpbmctaG9zdHMiLAot
ICAgICJ0ZXh0LXJlbmRlcmVkLWluLW5hdGl2ZS11c2VyLWludGVyZmFjZXMiOiAiaHRtbC9yZW5k
ZXJpbmcvaW50ZXJhY3RpdmUtbWVkaWEvdGV4dC1yZW5kZXJlZC1pbi1uYXRpdmUtdXNlci1pbnRl
cmZhY2VzIiwKLSAgICAicHJpbnQtbWVkaWEiOiAiaHRtbC9yZW5kZXJpbmcvcHJpbnQtbWVkaWEi
LAotICAgICJ1bnN0eWxlZC14bWwtZG9jdW1lbnRzIjogImh0bWwvcmVuZGVyaW5nL3Vuc3R5bGVk
LXhtbC1kb2N1bWVudHMiLAotICAgICJvYnNvbGV0ZSI6ICJodG1sL29ic29sZXRlIiwKLSAgICAi
b2Jzb2xldGUtYnV0LWNvbmZvcm1pbmctZmVhdHVyZXMiOiAiaHRtbC9vYnNvbGV0ZS9vYnNvbGV0
ZS1idXQtY29uZm9ybWluZy1mZWF0dXJlcyIsCi0gICAgIndhcm5pbmdzLWZvci1vYnNvbGV0ZS1i
dXQtY29uZm9ybWluZy1mZWF0dXJlcyI6ICJodG1sL29ic29sZXRlL29ic29sZXRlLWJ1dC1jb25m
b3JtaW5nLWZlYXR1cmVzL3dhcm5pbmdzLWZvci1vYnNvbGV0ZS1idXQtY29uZm9ybWluZy1mZWF0
dXJlcyIsCi0gICAgIm5vbi1jb25mb3JtaW5nLWZlYXR1cmVzIjogImh0bWwvb2Jzb2xldGUvbm9u
LWNvbmZvcm1pbmctZmVhdHVyZXMiLAotICAgICJyZXF1aXJlbWVudHMtZm9yLWltcGxlbWVudGF0
aW9ucyI6ICJodG1sL29ic29sZXRlL3JlcXVpcmVtZW50cy1mb3ItaW1wbGVtZW50YXRpb25zIiwK
LSAgICAidGhlLWFwcGxldC1lbGVtZW50IjogImh0bWwvb2Jzb2xldGUvcmVxdWlyZW1lbnRzLWZv
ci1pbXBsZW1lbnRhdGlvbnMvdGhlLWFwcGxldC1lbGVtZW50IiwKLSAgICAidGhlLW1hcnF1ZWUt
ZWxlbWVudC0wIjogImh0bWwvb2Jzb2xldGUvcmVxdWlyZW1lbnRzLWZvci1pbXBsZW1lbnRhdGlv
bnMvdGhlLW1hcnF1ZWUtZWxlbWVudC0wIiwKLSAgICAiZnJhbWVzIjogImh0bWwvb2Jzb2xldGUv
cmVxdWlyZW1lbnRzLWZvci1pbXBsZW1lbnRhdGlvbnMvZnJhbWVzIiwKLSAgICAib3RoZXItZWxl
bWVudHMsLWF0dHJpYnV0ZXMtYW5kLWFwaXMiOiAiaHRtbC9vYnNvbGV0ZS9yZXF1aXJlbWVudHMt
Zm9yLWltcGxlbWVudGF0aW9ucy9vdGhlci1lbGVtZW50cy1hdHRyaWJ1dGVzLWFuZC1hcGlzIiwK
LSAgICAiaWFuYSI6ICJtaWNyb2RhdGEvaWFuYSIsCi0gICAgInRleHQvaHRtbCI6ICJodG1sL2lh
bmEvdGV4dC1odG1sIiwKLSAgICAibXVsdGlwYXJ0L3gtbWl4ZWQtcmVwbGFjZSI6ICJodG1sL2lh
bmEvbXVsdGlwYXJ0LXgtbWl4ZWQtcmVwbGFjZSIsCi0gICAgImFwcGxpY2F0aW9uL3hodG1sK3ht
bCI6ICJodG1sL2lhbmEvYXBwbGljYXRpb24teGh0bWwteG1sIiwKLSAgICAiYXBwbGljYXRpb24v
eC13d3ctZm9ybS11cmxlbmNvZGVkIjogImh0bWwvaWFuYS9hcHBsaWNhdGlvbi14LXd3dy1mb3Jt
LXVybGVuY29kZWQiLAotICAgICJ0ZXh0L2NhY2hlLW1hbmlmZXN0IjogImh0bWwvaWFuYS90ZXh0
LWNhY2hlLW1hbmlmZXN0IiwKLSAgICAicGluZy10byI6ICJodG1sL2lhbmEvcGluZy10byIsCi0g
ICAgIndlYistc2NoZW1lLXByZWZpeCI6ICJodG1sL2lhbmEvd2ViLXNjaGVtZS1wcmVmaXgiLAot
ICAgICJ0aGUtY2FudmFzLXN0YXRlIjogImNhbnZhczJkL3RoZS1jYW52YXMtc3RhdGUiLAotICAg
ICJkcmF3aW5nc3R5bGUtb2JqZWN0cyI6ICJjYW52YXMyZC9kcmF3aW5nc3R5bGUtb2JqZWN0cyIs
Ci0gICAgImxpbmUtc3R5bGVzIjogImNhbnZhczJkL2xpbmUtc3R5bGVzIiwKLSAgICAidGV4dC1z
dHlsZXMiOiAiY2FudmFzMmQvdGV4dC1zdHlsZXMiLAotICAgICJidWlsZGluZy1wYXRocyI6ICJj
YW52YXMyZC9idWlsZGluZy1wYXRocyIsCi0gICAgInBhdGgtb2JqZWN0cyI6ICJjYW52YXMyZC9w
YXRoLW9iamVjdHMiLAotICAgICJ0cmFuc2Zvcm1hdGlvbnMiOiAiY2FudmFzMmQvdHJhbnNmb3Jt
YXRpb25zIiwKLSAgICAiZmlsbC1hbmQtc3Ryb2tlLXN0eWxlcyI6ICJjYW52YXMyZC9maWxsLWFu
ZC1zdHJva2Utc3R5bGVzIiwKLSAgICAiZHJhd2luZy1yZWN0YW5nbGVzLXRvLXRoZS1jYW52YXMi
OiAiY2FudmFzMmQvZHJhd2luZy1yZWN0YW5nbGVzLXRvLXRoZS1jYW52YXMiLAotICAgICJkcmF3
aW5nLXRleHQtdG8tdGhlLWNhbnZhcyI6ICJjYW52YXMyZC9kcmF3aW5nLXRleHQtdG8tdGhlLWNh
bnZhcyIsCi0gICAgImRyYXdpbmctcGF0aHMtdG8tdGhlLWNhbnZhcyI6ICJjYW52YXMyZC9kcmF3
aW5nLXBhdGhzLXRvLXRoZS1jYW52YXMiLAotICAgICJkcmF3aW5nLWltYWdlcy10by10aGUtY2Fu
dmFzIjogImNhbnZhczJkL2RyYXdpbmctaW1hZ2VzLXRvLXRoZS1jYW52YXMiLAotICAgICJoaXQt
cmVnaW9ucyI6ICJjYW52YXMyZC9oaXQtcmVnaW9ucyIsCi0gICAgInBpeGVsLW1hbmlwdWxhdGlv
biI6ICJjYW52YXMyZC9waXhlbC1tYW5pcHVsYXRpb24iLAotICAgICJjb21wb3NpdGluZyI6ICJj
YW52YXMyZC9jb21wb3NpdGluZyIsCi0gICAgInNoYWRvd3MiOiAiY2FudmFzMmQvc2hhZG93cyIs
Ci0gICAgImRyYXdpbmctbW9kZWwiOiAiY2FudmFzMmQvZHJhd2luZy1tb2RlbCIsCi0gICAgImJl
c3QtcHJhY3RpY2VzIjogImNhbnZhczJkL2Jlc3QtcHJhY3RpY2VzIiwKLSAgICAib3ZlcnZpZXci
OiAibWljcm9kYXRhL2ludHJvZHVjdGlvbi9vdmVydmlldyIsCi0gICAgInRoZS1iYXNpYy1zeW50
YXgiOiAibWljcm9kYXRhL2ludHJvZHVjdGlvbi90aGUtYmFzaWMtc3ludGF4IiwKLSAgICAidHlw
ZWQtaXRlbXMiOiAibWljcm9kYXRhL2ludHJvZHVjdGlvbi90eXBlZC1pdGVtcyIsCi0gICAgImds
b2JhbC1pZGVudGlmaWVycy1mb3ItaXRlbXMiOiAibWljcm9kYXRhL2ludHJvZHVjdGlvbi9nbG9i
YWwtaWRlbnRpZmllcnMtZm9yLWl0ZW1zIiwKLSAgICAic2VsZWN0aW5nLW5hbWVzLXdoZW4tZGVm
aW5pbmctdm9jYWJ1bGFyaWVzIjogIm1pY3JvZGF0YS9pbnRyb2R1Y3Rpb24vc2VsZWN0aW5nLW5h
bWVzLXdoZW4tZGVmaW5pbmctdm9jYWJ1bGFyaWVzIiwKLSAgICAidXNpbmctdGhlLW1pY3JvZGF0
YS1kb20tYXBpIjogIm1pY3JvZGF0YS9pbnRyb2R1Y3Rpb24vdXNpbmctdGhlLW1pY3JvZGF0YS1k
b20tYXBpIiwKLSAgICAiZW5jb2RpbmctbWljcm9kYXRhIjogIm1pY3JvZGF0YS9lbmNvZGluZy1t
aWNyb2RhdGEiLAotICAgICJ0aGUtbWljcm9kYXRhLW1vZGVsIjogIm1pY3JvZGF0YS9lbmNvZGlu
Zy1taWNyb2RhdGEvdGhlLW1pY3JvZGF0YS1tb2RlbCIsCi0gICAgIml0ZW1zIjogIm1pY3JvZGF0
YS9lbmNvZGluZy1taWNyb2RhdGEvaXRlbXMiLAotICAgICJuYW1lczotdGhlLWl0ZW1wcm9wLWF0
dHJpYnV0ZSI6ICJtaWNyb2RhdGEvZW5jb2RpbmctbWljcm9kYXRhL25hbWVzLXRoZS1pdGVtcHJv
cC1hdHRyaWJ1dGUiLAotICAgICJ2YWx1ZXMiOiAibWljcm9kYXRhL2VuY29kaW5nLW1pY3JvZGF0
YS92YWx1ZXMiLAotICAgICJhc3NvY2lhdGluZy1uYW1lcy13aXRoLWl0ZW1zIjogIm1pY3JvZGF0
YS9lbmNvZGluZy1taWNyb2RhdGEvYXNzb2NpYXRpbmctbmFtZXMtd2l0aC1pdGVtcyIsCi0gICAg
Im1pY3JvZGF0YS1hbmQtb3RoZXItbmFtZXNwYWNlcyI6ICJtaWNyb2RhdGEvZW5jb2RpbmctbWlj
cm9kYXRhL21pY3JvZGF0YS1hbmQtb3RoZXItbmFtZXNwYWNlcyIsCi0gICAgIm1pY3JvZGF0YS1k
b20tYXBpIjogIm1pY3JvZGF0YS9taWNyb2RhdGEtZG9tLWFwaSIsCi0gICAgImh0bWxwcm9wZXJ0
aWVzY29sbGVjdGlvbiI6ICJtaWNyb2RhdGEvbWljcm9kYXRhLWRvbS1hcGkvaHRtbHByb3BlcnRp
ZXNjb2xsZWN0aW9uIiwKLSAgICAiY29udmVydGluZy1odG1sLXRvLW90aGVyLWZvcm1hdHMiOiAi
bWljcm9kYXRhL2NvbnZlcnRpbmctaHRtbC10by1vdGhlci1mb3JtYXRzIiwKLSAgICAianNvbiI6
ICJtaWNyb2RhdGEvY29udmVydGluZy1odG1sLXRvLW90aGVyLWZvcm1hdHMvanNvbiIKLX0KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NjcmlwdHMvbWFuaWZlc3QuanMgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NjcmlwdHMvbWFu
aWZlc3QuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5ZTM3MTdhYjU2NDQ2Mzcz
YjdiNzFjMDUyYmVhZjcyYzAxZTMxOGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9zY3JpcHRzL21hbmlmZXN0LmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTQwICswLDAg
QEAKLS8vIGdyYWIgdGVzdCBtZXRhZGF0YSBmcm9tIGEgdGVzdCBmaWxlCi1mdW5jdGlvbiBfX3Jl
c3VsdF9oYW5kbGVyKCkgewotCi0gICAgZnVuY3Rpb24gX19nZXRfbWV0YWRhdGEoKSB7Ci0gICAg
ICAgIHZhciBvYmogPSBuZXcgT2JqZWN0KCk7Ci0gICAgICAgIHZhciBhdXRob3IgPSBbXTsKLSAg
ICAgICAgdmFyIGFzc2VydCA9IFtdOwotICAgICAgICB2YXIgaGVscCA9IFtdOwotICAgICAgICB2
YXIgbWF0Y2ggPSBbXTsKLSAgICAgICAgdmFyIG1pc21hdGNoID0gW107Ci0gICAgICAgIHZhciBm
bGFncyA9IFtdOwotICAgICAgICB2YXIgbm9kZXM7Ci0KLSAgICAgICAgbm9kZXMgPSBkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yQWxsKCdsaW5rW3JlbD0iYXV0aG9yIl0nKTsKLSAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgdmFyIGhyZWYg
PSBub2Rlc1tpXS5nZXRBdHRyaWJ1dGUoImhyZWYiKTsKLSAgICAgICAgICAgIHZhciB0aXRsZSA9
IG5vZGVzW2ldLmdldEF0dHJpYnV0ZSgidGl0bGUiKTsKLSAgICAgICAgICAgIHZhciBzID0gdGl0
bGU7Ci0gICAgICAgICAgICBpZiAoaHJlZiAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgcyAr
PSAiIDwiICsgaHJlZiArICI+IjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGF1dGhvci5w
dXNoKHMpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChub2Rlcy5sZW5ndGggPiAwKSBvYmouYXV0
aG9yID0gYXV0aG9yOwotICAgICAgICBub2RlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwo
J21ldGFbbmFtZT0iYXNzZXJ0Il0nKTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rl
cy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgYXNzZXJ0LnB1c2gobm9kZXNbaV0uZ2V0QXR0
cmlidXRlKCJjb250ZW50IikpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChub2Rlcy5sZW5ndGgg
PiAwKSBvYmouYXNzZXJ0ID0gYXNzZXJ0OwotICAgICAgICBub2RlcyA9IGRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3JBbGwoJ2xpbmtbcmVsPSJoZWxwIl0nKTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgaGVscC5wdXNoKG5vZGVzW2ld
LmdldEF0dHJpYnV0ZSgiaHJlZiIpKTsKLSAgICAgICAgfQotICAgICAgICBpZiAobm9kZXMubGVu
Z3RoID4gMCkgb2JqLmhlbHAgPSBoZWxwOwotICAgICAgICBub2RlcyA9IGRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3JBbGwoJ2xpbmtbcmVsPSJtYXRjaCJdJyk7Ci0gICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIG1hdGNoLnB1c2gobm9kZXNb
aV0uZ2V0QXR0cmlidXRlKCJocmVmIikpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChub2Rlcy5s
ZW5ndGggPiAwKSBvYmoubWF0Y2ggPSBtYXRjaDsKLSAgICAgICAgbm9kZXMgPSBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yQWxsKCdsaW5rW3JlbD0ibWlzbWF0Y2giXScpOwotICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICBtaXNtYXRjaC5w
dXNoKG5vZGVzW2ldLmdldEF0dHJpYnV0ZSgiaHJlZiIpKTsKLSAgICAgICAgfQotICAgICAgICBp
ZiAobm9kZXMubGVuZ3RoID4gMCkgb2JqLm1hdGNoID0gbWlzbWF0Y2g7Ci0gICAgICAgIG5vZGVz
ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnbWV0YVtuYW1lPSJmbGFncyJdJyk7Ci0gICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAg
IGZsYWdzLnB1c2gobm9kZXNbaV0uZ2V0QXR0cmlidXRlKCJjb250ZW50IikpOwotICAgICAgICB9
Ci0gICAgICAgIGlmIChub2Rlcy5sZW5ndGggPiAwKSBvYmouZmxhZ3MgPSBmbGFnczsKLQotICAg
ICAgICByZXR1cm4gb2JqOwotICAgIH0KLQotICAgIHZhciBtZXRhID0gX19nZXRfbWV0YWRhdGEo
KTsKLSAgICB2YXIgbm9kZXM7Ci0KLSAgICBmdW5jdGlvbiBjb3B5KG9iaiwgcHJvcCwgYXJyKSB7
Ci0gICAgICAgIGlmICh0eXBlb2YgYXJyICE9PSAidW5kZWZpbmVkIikgewotICAgICAgICAgICAg
dmFyIGEgPSBbXTsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpPGFyci5sZW5ndGg7aSsr
KSB7Ci0gICAgICAgICAgICAgICAgYVtpXSA9IGFycltpXTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIG9ialtwcm9wXSA9IGE7Ci0gICAgICAgIH0KLSAgICB9Ci0KLQotICAgIHZhciByZXQg
PSBuZXcgT2JqZWN0KCk7Ci0gICAgcmV0LmxvY2F0aW9uID0gZG9jdW1lbnQubG9jYXRpb24uaHJl
ZjsKLSAgICByZXQudHlwZSAgPSAibWFudWFsIjsKLSAgICByZXQudGVzdHMgPSBuZXcgT2JqZWN0
KCk7Ci0KLSAgICB2YXIgbm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3NjcmlwdFtzcmMk
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIl0nKTsKLSAgICBpZiAobm9kZSAhPT0gbnVsbCkg
ewotICAgICAgICByZXQudHlwZSA9ICJzY3JpcHQiOwotICAgIH0KLQotICAgIGlmIChyZXQudHlw
ZSA9PT0gInNjcmlwdCIpIHsKLSAgICAgICAgaWYgKHR5cGVvZiBtZXRhZGF0YV9nZW5lcmF0b3Ig
PT09ICJ1bmRlZmluZWQiCi0gICAgICAgICAgICB8fCBPYmplY3Qua2V5cyhtZXRhZGF0YV9nZW5l
cmF0b3IuY3VycmVudE1ldGFkYXRhKS5sZW5ndGggPT09IDApCi0gICAgICAgICAgICByZXR1cm4g
IldSQVBQRVI6VFJZX0FHQUlOIjsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBmb3IgKHZh
ciBrZXkgaW4gbWV0YWRhdGFfZ2VuZXJhdG9yLmN1cnJlbnRNZXRhZGF0YSkgewotICAgICAgICAg
ICAgICAgIHZhciBvYmogPSBtZXRhZGF0YV9nZW5lcmF0b3IuY3VycmVudE1ldGFkYXRhW2tleV07
Ci0gICAgICAgICAgICAgICAgdmFyIG5ld3Rlc3QgPSBuZXcgT2JqZWN0KCk7Ci0gICAgICAgICAg
ICAgICAgcmV0LnRlc3RzW2tleV09IG5ld3Rlc3Q7Ci0gICAgICAgICAgICAgICAgaWYgKHR5cGVv
ZiBvYmouaGVscCA9PT0gInVuZGVmaW5lZCIpIHsKLSAgICAgICAgICAgICAgICAgICAgY29weShu
ZXd0ZXN0LCAiaGVscCIsIG1ldGEuaGVscCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0
eXBlb2Ygb2JqLmhlbHAgPT09ICJzdHJpbmciKSB7Ci0gICAgICAgICAgICAgICAgICAgIG5ld3Rl
c3QuaGVscCA9IFsgb2JqLmhlbHAgXTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgaWYgKHR5cGVvZiBvYmouYXV0aG9yID09PSAidW5kZWZpbmVkIikgewotICAgICAgICAgICAg
ICAgICAgICBjb3B5KG5ld3Rlc3QsICJhdXRob3IiLCBtZXRhLmF1dGhvcik7Ci0gICAgICAgICAg
ICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygb2JqLmF1dGhvciA9PT0gInN0cmluZyIpIHsKLSAgICAg
ICAgICAgICAgICAgICAgbmV3dGVzdC5hdXRob3IgPSBbIG9iai5hdXRob3IgXTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvYmouYXNzZXJ0ID09PSAidW5k
ZWZpbmVkIikgewotICAgICAgICAgICAgICAgICAgICBjb3B5KG5ld3Rlc3QsICJhc3NlcnQiLCBt
ZXRhLmFzc2VydCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygb2JqLmFzc2Vy
dCA9PT0gInN0cmluZyIpIHsKLSAgICAgICAgICAgICAgICAgICAgbmV3dGVzdC5hc3NlcnQgPSBb
IG9iai5hc3NlcnQgXTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgY29weShu
ZXd0ZXN0LCAibWF0Y2giLCBtZXRhLm1hdGNoKTsKLSAgICAgICAgICAgICAgICBjb3B5KG5ld3Rl
c3QsICJtaXNtYXRjaCIsIG1ldGEubWlzbWF0Y2gpOwotICAgICAgICAgICAgICAgIGNvcHkobmV3
dGVzdCwgImZsYWdzIiwgbWV0YS5mbGFncyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBy
ZXR1cm4gcmV0OwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgdmFyIG5ld3Rlc3Qg
PSBtZXRhOwotICAgICAgICByZXQudGVzdHNbZG9jdW1lbnQudGl0bGVdPSBuZXd0ZXN0OwotCi0g
ICAgICAgIGlmICh0eXBlb2YgbmV3dGVzdC5tYXRjaCAhPT0gInVuZGVmaW5lZCIKLSAgICAgICAg
ICAgIHx8IHR5cGVvZiBuZXd0ZXN0Lm1pc21hdGNoICE9PSAidW5kZWZpbmVkIikgewotICAgICAg
ICAgICAgcmV0LnR5cGUgPSAicmVmdGVzdCI7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4g
cmV0OwotICAgIH0KLQotfQotCi1mdW5jdGlvbiBfX2dpdmVfdXAoKSB7Ci0gICAgdmFyIHJldCA9
IG5ldyBPYmplY3QoKTsKLSAgICByZXQubG9jYXRpb24gPSBkb2N1bWVudC5sb2NhdGlvbi5ocmVm
OwotICAgIHJldC50eXBlICA9ICJtYW51YWwiOwotICAgIHJldC50ZXN0cyA9IG5ldyBPYmplY3Qo
KTsKLQotICAgIHZhciBub2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcignc2NyaXB0W3NyYyQ9
Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiXScpOwotICAgIGlmIChub2RlICE9PSBudWxsKSB7
Ci0gICAgICAgIHJldC50eXBlID0gInNjcmlwdCI7Ci0gICAgfSBlbHNlIGlmICh0eXBlb2YgbmV3
dGVzdC5tYXRjaCAhPT0gInVuZGVmaW5lZCIKLSAgICAgICAgICAgICAgIHx8IHR5cGVvZiBuZXd0
ZXN0Lm1pc21hdGNoICE9PSAidW5kZWZpbmVkIikgewotICAgICAgICByZXQudHlwZSA9ICJyZWZ0
ZXN0IjsKLSAgICB9Ci0KLSAgICB2YXIgbmV3dGVzdCA9IF9fZ2V0X21ldGFkYXRhKCk7Ci0gICAg
cmV0LnRlc3RzW2RvY3VtZW50LnRpdGxlXT0gbmV3dGVzdDsKLQotICAgIHJldHVybiByZXQ7Ci19
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3NjcmlwdHMvcGFja2FnZS5qc29uIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9zY3JpcHRzL3BhY2thZ2UuanNvbgpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNTYxOGY2NjkxZjVmZjJlZTFhM2RmNmUwOGVjMzhiMjNjYzI5NGZj
YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NjcmlwdHMvcGFja2Fn
ZS5qc29uCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotewotICAgICJuYW1lIjogICAg
ICJjb252ZXJ0IgotLCAgICJ2ZXJzaW9uIjogICIwLjAuMSIKLSwgICAicHJpdmF0ZSI6ICB0cnVl
Ci0sICAgImRlcGVuZGVuY2llcyI6IHsKLSAgICAgICAgIm1rZGlycCI6ICAgICAgICIqIgotICAg
ICwgICAid3JlbmNoIjogICAgICAgIioiCi0gICAgLCAgICJ1bmRlcnNjb3JlIjogICAiKiIKLSAg
ICAsICAgImpzZG9tIjogICAgICAgICIqIgotICAgIH0KLX0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvc2NyaXB0cy90b2MuanMg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Njcmlw
dHMvdG9jLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOTdiNzE4MTQzZjkzMTMy
MDA3Nzc2ODZlMjM2M2M5MzZlNjQ5ZDcwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvc2NyaXB0cy90b2MuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxMDcgKzAsMCBAQAot
Ly8gZ3JhYiB0aGUgdGFibGUgb2YgY29udGVudHMgZmlsbGVkIHdpdGggYWxsIHRoZSBhbmNob3Jz
Ci1mdW5jdGlvbiBfX3Jlc3VsdF9oYW5kbGVyKCkgewotICAgIGZ1bmN0aW9uIGdldE1hcCgpIHsK
LSAgICAgICAgdmFyIHRvY19lbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRl
bnRzIikubmV4dEVsZW1lbnRTaWJsaW5nOwotCi0gICAgICAgIGZ1bmN0aW9uIGdldFNlY3Rpb24o
KSB7Ci0gICAgICAgICAgICBmdW5jdGlvbiBnZXRJZHMobm9kZSkgewotICAgICAgICAgICAgICAg
IHZhciBhID0gW107Ci0KLSAgICAgICAgICAgICAgICB2YXIgbm9kZXMgPSBub2RlLnF1ZXJ5U2Vs
ZWN0b3JBbGwoJypbaWRdJyk7Ci0gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBu
b2Rlcy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgICAgICAgICBhLnB1c2gobm9kZXNbaV0u
Z2V0QXR0cmlidXRlKCJpZCIpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIGE7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9uIGdldFRPQ0lk
cygpIHsKLSAgICAgICAgICAgICAgICB2YXIgYSA9IFtdOwotCi0gICAgICAgICAgICAgICAgdmFy
IG5vZGVzID0gdG9jX2VsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnbGknKTsKLSAgICAgICAgICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHZhciBocmVmID0gbm9kZXNbaV0uZmlyc3RFbGVtZW50Q2hpbGQuZ2V0QXR0cmli
dXRlKCJocmVmIik7Ci0gICAgICAgICAgICAgICAgICAgIGEucHVzaChocmVmLnN1YnN0cmluZygx
KSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiBhOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICB2YXIgb2JqID0gbmV3IE9iamVjdCgpOwotICAgICAgICAg
ICAgdmFyIGlkcyA9IGdldElkcyhkb2N1bWVudCk7Ci0gICAgICAgICAgICB2YXIgdG9jID0gZ2V0
VE9DSWRzKCk7Ci0KLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgdG9jLmxlbmd0aDsg
aSsrKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGtleTEgPSB0b2NbaS0xXTsKLSAgICAgICAgICAg
ICAgICB2YXIga2V5MiA9IHRvY1tpXTsKLSAgICAgICAgICAgICAgICB2YXIgbWFwID0gW107Ci0K
LSAgICAgICAgICAgICAgICB2YXIgaW5kZXgxID0gaWRzLmluZGV4T2Yoa2V5MSk7Ci0gICAgICAg
ICAgICAgICAgdmFyIGluZGV4MiA9IGlkcy5pbmRleE9mKGtleTIpOwotCi0gICAgICAgICAgICAg
ICAgaWYgKChpbmRleDItaW5kZXgxKSA+IDEpIHsKLSAgICAgICAgICAgICAgICAgICAgZm9yICh2
YXIgaiA9IGluZGV4MSsxOyBqIDwgaW5kZXgyO2orKykgewotICAgICAgICAgICAgICAgICAgICAg
ICAgbWFwLnB1c2goaWRzW2pdKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgICAgIG9ialtrZXkxXSA9IG1hcDsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB2YXIga2V5ID0gdG9jW3RvYy5sZW5ndGgt
MV07Ci0gICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gaWRzLmluZGV4T2Yoa2V5KTsKLSAgICAg
ICAgICAgICAgICB2YXIgbWFwID0gW107Ci0KLSAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0g
aW5kZXgrMTsgaiA8IGlkcy5sZW5ndGg7aisrKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1hcC5w
dXNoKGlkc1tqXSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG9ialtrZXld
ID0gbWFwOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXR1cm4gb2JqOwotICAgICAg
ICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gc2VjdGlvbihpZCkgewotICAgICAgICAgICAgdGhpcy5p
ZCA9IGlkOwotICAgICAgICB9Ci0gICAgICAgIGZ1bmN0aW9uIGFkZFN1YlNlY3Rpb24oc2VjdGlv
biwgc3ViKSB7Ci0gICAgICAgICAgICBpZiAodHlwZW9mIHNlY3Rpb24uc2VjdGlvbnMgPT09ICJ1
bmRlZmluZWQiKSB7Ci0gICAgICAgICAgICAgICAgc2VjdGlvbi5zZWN0aW9ucyA9IFtdOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgc2VjdGlvbi5zZWN0aW9ucy5wdXNoKHN1Yik7Ci0gICAg
ICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBsaShlbCwgbWFwKSB7Ci0gICAgICAgICAgICB2YXIg
b2JqID0gbmV3IHNlY3Rpb24oZWwuZmlyc3RFbGVtZW50Q2hpbGQuZ2V0QXR0cmlidXRlKCJocmVm
Iikuc3Vic3RyaW5nKDEpKTsKLSAgICAgICAgICAgIG9iai50aXRsZSA9IGVsLmZpcnN0RWxlbWVu
dENoaWxkLnRleHRDb250ZW50OwotICAgICAgICAgICAgdmFyIGNoaWxkID0gZWwuZmlyc3RFbGVt
ZW50Q2hpbGQ7Ci0KLSAgICAgICAgICAgIHZhciBtID0gbWFwW29iai5pZF07Ci0gICAgICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IG0ubGVuZ3RoOyBpKyspICB7Ci0gICAgICAgICAgICAgICAg
dmFyIHN1YiA9IG5ldyBzZWN0aW9uKG1baV0pOwotICAgICAgICAgICAgICAgIGFkZFN1YlNlY3Rp
b24ob2JqLCBzdWIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgd2hpbGUgKGNoaWxkICE9
PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNoaWxkLm5vZGVOYW1lID09PSAiT0wiKSBv
bChjaGlsZCwgb2JqLCBtYXApOwotICAgICAgICAgICAgICAgIGNoaWxkID0gY2hpbGQubmV4dEVs
ZW1lbnRTaWJsaW5nOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIG9iajsKLSAg
ICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIG9sKGVsLCBzZWN0aW9uLCBtYXApIHsKLSAgICAg
ICAgICAgIHZhciBjaGlsZCA9IGVsLmZpcnN0RWxlbWVudENoaWxkOwotICAgICAgICAgICAgd2hp
bGUgKGNoaWxkICE9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgYWRkU3ViU2VjdGlvbihzZWN0
aW9uLCBsaShjaGlsZCwgbWFwKSk7Ci0gICAgICAgICAgICAgICAgY2hpbGQgPSBjaGlsZC5uZXh0
RWxlbWVudFNpYmxpbmc7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIg
bWFwID0gZ2V0U2VjdGlvbigpOwotICAgICAgICB2YXIgbWFpbiA9IG5ldyBzZWN0aW9uKCJfX19t
YWluX19fIik7Ci0gICAgICAgIG1haW4udGl0bGUgPSBkb2N1bWVudC50aXRsZTsKLQotICAgICAg
ICBvbCh0b2NfZWxlbWVudCwgbWFpbiwgbWFwKTsKLQotICAgICAgICByZXR1cm4gbWFpbjsKLSAg
ICB9Ci0KLSAgICByZXR1cm4gZ2V0TWFwKCk7Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NjcmlwdHMvdXBkYXRlLWRpcmVj
dG9yeS1zdHJ1Y3R1cmUuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3NjcmlwdHMvdXBkYXRlLWRpcmVjdG9yeS1zdHJ1Y3R1cmUuanMKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkNzNkOTNhYzk2YjE5ZmVhM2QwZjc4ZDYxZGYxNTA1
YjhhMDZlM2IuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zY3JpcHRz
L3VwZGF0ZS1kaXJlY3Rvcnktc3RydWN0dXJlLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTA2ICsw
LDAgQEAKLQotLy8gY29udmVydCBmcm9tIG9sZC1zdHlsZSB0ZXN0IHN0cnVjdHVyZSB0byBuZXcg
c3R5bGUKLQotdmFyIGZzID0gcmVxdWlyZSgiZnMiKQotLCAgIHB0aCA9IHJlcXVpcmUoInBhdGgi
KQotLCAgIGpzZG9tID0gcmVxdWlyZSgianNkb20iKQotLCAgIG1rZGlycCA9IHJlcXVpcmUoIm1r
ZGlycCIpLnN5bmMKLSwgICB0ZXN0RGlyID0gcHRoLmpvaW4oX19kaXJuYW1lLCAiLi4vLi4iKQot
LCAgIE1BWF9ERVBUSCA9IDMKLSwgICBpZDJwYXRoID0ge30KLSwgICBsaW1pdERlcHRoID0gewot
ICAgICAgICBwYXJzaW5nOiAgICB0cnVlCi0gICAgfQotOwotCi12YXIgc2VjdGlvbnMgPSB7Ci0g
ICAgaHRtbDogICAgICAgImh0dHA6Ly93d3cudzMub3JnL2h0bWwvd2cvZHJhZnRzL2h0bWwvbWFz
dGVyL092ZXJ2aWV3Lmh0bWwiCi0sICAgY2FudmFzMmQ6ICAgImh0dHA6Ly93d3cudzMub3JnL2h0
bWwvd2cvZHJhZnRzLzJkY29udGV4dC9odG1sNV9jYW52YXMvT3ZlcnZpZXcuaHRtbCIKLSwgICBt
aWNyb2RhdGE6ICAiaHR0cDovL3d3dy53My5vcmcvaHRtbC93Zy9kcmFmdHMvbWljcm9kYXRhL21h
c3Rlci9PdmVydmlldy5odG1sIgotfTsKLQotZnVuY3Rpb24gd2Fsa1RyZWUgKCQsICRlbCwgbGlz
dCkgewotICAgICRlbC5maW5kKCI+IGxpIikuZWFjaChmdW5jdGlvbiAoKSB7Ci0gICAgICAgIHZh
ciAkbGkgPSAkKHRoaXMpCi0gICAgICAgICwgICAkYSA9ICRsaS5maW5kKCI+IGEiKS5maXJzdCgp
Ci0gICAgICAgIDsKLSAgICAgICAgLy8gc2tpcCBzZWN0aW9ucyB0aGF0IGRvbid0IGhhdmUgYSBu
dW1iZXIKLSAgICAgICAgaWYgKCEvXlxzKlxkKy8udGVzdCgkYS50ZXh0KCkpKSByZXR1cm47Ci0g
ICAgICAgIHZhciBocmVmID0gJGEuYXR0cigiaHJlZiIpLnJlcGxhY2UoL14uKiMvLCAiIikKLSAg
ICAgICAgLCAgIGRlZiA9IHsKLSAgICAgICAgICAgICAgICBpZDogaHJlZi50b0xvd2VyQ2FzZSgp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvW15hLXowLTlcLV0vZywgIi0iKQot
ICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1wtezIsfS9nLCAiLSIpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAucmVwbGFjZSgvKD86XlwtfFwtJCkvZywgIiIpCi0gICAgICAgICAg
ICAsICAgb3JpZ2luYWxfaWQ6IGhyZWYKLSAgICAgICAgICAgIH0KLSAgICAgICAgLCAgICRvbCA9
ICRsaS5maW5kKCI+IG9sIikuZmlyc3QoKQotICAgICAgICA7Ci0gICAgICAgIGlmICgkb2wubGVu
Z3RoKSB7Ci0gICAgICAgICAgICBkZWYuY2hpbGRyZW4gPSBbXTsKLSAgICAgICAgICAgIHdhbGtU
cmVlKCQsICRvbCwgZGVmLmNoaWxkcmVuKTsKLSAgICAgICAgfQotICAgICAgICBsaXN0LnB1c2go
ZGVmKTsKLSAgICB9KTsKLX0KLQotZnVuY3Rpb24gZXh0cmFjdFNlY3Rpb25zIChzZWMsIHNlY0Rp
ciwgc3BlYywgY2IpIHsKLSAgICBqc2RvbS5lbnYoCi0gICAgICAgIHNwZWMKLSAgICAsICAgZnVu
Y3Rpb24gKGVyciwgd2luZG93KSB7Ci0gICAgICAgICAgICBpZiAoZXJyKSByZXR1cm4gY2IoZXJy
KTsKLSAgICAgICAgICAgIGpzZG9tLmpRdWVyeWlmeSh3aW5kb3csICJodHRwczovL2FqYXguZ29v
Z2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjguMy9qcXVlcnkubWluLmpzIiwgZnVuY3Rp
b24gKHdpbmRvdywgJCkgewotICAgICAgICAgICAgICAgIGlmICghJCkgcmV0dXJuIGNiKCIkIHdh
cyBub3QgZGVmaW5lZCIpOwotICAgICAgICAgICAgICAgIHZhciAkcm9vdCA9ICQoImJvZHkgPiBv
bC50b2MiKS5maXJzdCgpCi0gICAgICAgICAgICAgICAgLCAgIHRyZWUgPSBbXQotICAgICAgICAg
ICAgICAgIDsKLSAgICAgICAgICAgICAgICB3YWxrVHJlZSgkLCAkcm9vdCwgdHJlZSk7Ci0gICAg
ICAgICAgICAgICAgY2IobnVsbCwgdHJlZSwgc2VjLCBzZWNEaXIpOwotICAgICAgICAgICAgfQot
ICAgICAgICApOwotICAgIH0pOwotfQotCi1mdW5jdGlvbiBtYWtlSUQyUGF0aCAoYmFzZSwgdHJl
ZSkgewotICAgIGZvciAodmFyIGkgPSAwLCBuID0gdHJlZS5sZW5ndGg7IGkgPCBuOyBpKyspIHsK
LSAgICAgICAgdmFyIHNlYyA9IHRyZWVbaV07Ci0gICAgICAgIGlkMnBhdGhbc2VjLm9yaWdpbmFs
X2lkXSA9IGJhc2U7Ci0gICAgICAgIGlmIChzZWMuY2hpbGRyZW4gJiYgc2VjLmNoaWxkcmVuLmxl
bmd0aCkgbWFrZUlEMlBhdGgoYmFzZSwgc2VjLmNoaWxkcmVuKTsKLSAgICB9Ci19Ci0KLWZ1bmN0
aW9uIG1ha2VEaXJzIChiYXNlLCB0cmVlLCBkZXB0aCkgewotICAgIGNvbnNvbGUubG9nKCJNYWtp
bmcgIiArIGJhc2UgKyAiIGF0IGRlcHRoICIgKyBkZXB0aCk7Ci0gICAgZm9yICh2YXIgaSA9IDAs
IG4gPSB0cmVlLmxlbmd0aDsgaSA8IG47IGkrKykgewotICAgICAgICB2YXIgc2VjID0gdHJlZVtp
XQotICAgICAgICAsICAgcGF0aCA9IHB0aC5qb2luKGJhc2UsIHNlYy5pZCkKLSAgICAgICAgOwot
ICAgICAgICBta2RpcnAocGF0aCk7Ci0gICAgICAgIGZzLndyaXRlRmlsZVN5bmMocHRoLmpvaW4o
cGF0aCwgIi5naXRrZWVwIiksICIiLCAidXRmOCIpOwotICAgICAgICBpZDJwYXRoW3NlYy5vcmln
aW5hbF9pZF0gPSBwYXRoOwotICAgICAgICBpZiAoc2VjLmlkICE9PSBzZWMub3JpZ2luYWxfaWQp
IHsKLSAgICAgICAgICAgIGZzLndyaXRlRmlsZVN5bmMocHRoLmpvaW4ocGF0aCwgIm9yaWdpbmFs
LWlkLmpzb24iKSwgSlNPTi5zdHJpbmdpZnkoeyBvcmlnaW5hbF9pZDogc2VjLm9yaWdpbmFsX2lk
fSksICJ1dGY4Iik7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHNlYy5jaGlsZHJlbiAmJiBzZWMu
Y2hpbGRyZW4ubGVuZ3RoKSB7Ci0gICAgICAgICAgICBpZiAoZGVwdGggPT09IE1BWF9ERVBUSCB8
fCBsaW1pdERlcHRoW3NlYy5pZF0pIHsKLSAgICAgICAgICAgICAgICBmcy53cml0ZUZpbGVTeW5j
KHB0aC5qb2luKHBhdGgsICJjb250YWlucy5qc29uIiksIEpTT04uc3RyaW5naWZ5KHNlYy5jaGls
ZHJlbiwgbnVsbCwgNCksICJ1dGY4Iik7Ci0gICAgICAgICAgICAgICAgbWFrZUlEMlBhdGgocGF0
aCwgc2VjLmNoaWxkcmVuKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgICAgIG1ha2VEaXJzKHBhdGgsIHNlYy5jaGlsZHJlbiwgZGVwdGggKyAxKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQotZm9yICh2YXIgc2VjIGluIHNlY3Rp
b25zKSB7Ci0gICAgdmFyIHNlY0RpciA9IHB0aC5qb2luKHRlc3REaXIsIHNlYyk7Ci0gICAgbWtk
aXJwKHNlY0Rpcik7Ci0gICAgY29uc29sZS5sb2coIkxhdW5jaGluZyBleHRyYWN0aW9uIGZvciAi
ICsgc2VjKTsKLSAgICBleHRyYWN0U2VjdGlvbnMoc2VjLCBzZWNEaXIsIHNlY3Rpb25zW3NlY10s
IGZ1bmN0aW9uIChlcnIsIHRvYywgc2VjLCBzZWNEaXIpIHsKLSAgICAgICAgaWYgKGVycikgcmV0
dXJuIGNvbnNvbGUubG9nKCJFUlJPUjogIiArIGVycik7Ci0gICAgICAgIG1ha2VEaXJzKHNlY0Rp
ciwgdG9jLCAxKTsKLSAgICAgICAgZm9yICh2YXIgayBpbiBpZDJwYXRoKSBpZDJwYXRoW2tdID0g
aWQycGF0aFtrXS5yZXBsYWNlKHRlc3REaXIgKyAiLyIsICIiKTsKLSAgICAgICAgZnMud3JpdGVG
aWxlU3luYyhwdGguam9pbihfX2Rpcm5hbWUsICJpZDJwYXRoLmpzb24iKSwgSlNPTi5zdHJpbmdp
ZnkoaWQycGF0aCwgbnVsbCwgNCksICJ1dGY4Iik7Ci0gICAgfSk7Ci19CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NjcmlwdHMv
dzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3NjcmlwdHMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDZlYjliMjYyNzNlMmZjNmVkOWY0NDYxOGY0ZDliNTBiZWIzMzQ2ODAuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zY3JpcHRzL3czYy1pbXBvcnQubG9nCisr
KyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5
IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRo
ZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVx
dWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3Jt
LXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3Rz
IGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZp
bGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZp
eGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1O
b25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zY3JpcHRzL2lkMnBhdGguanMKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NjcmlwdHMvaWQy
cGF0aC5qc29uCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9zY3JpcHRzL21hbmlmZXN0LmpzCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9zY3JpcHRzL3BhY2thZ2UuanNvbgotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvc2NyaXB0cy90b2MuanMKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NjcmlwdHMvdXBk
YXRlLWRpcmVjdG9yeS1zdHJ1Y3R1cmUuanMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvc2VydmUvdzNjLWltcG9ydC5sb2cgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NlcnZlL3cz
Yy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOWIzNTZlOWU2Y2Ex
NGVjNzRhOWU4ZDczMGU5NTYyMzQ2ZTE0OTliLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvc2VydmUvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMiAr
MCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRo
ZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4g
V2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHVi
OgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVu
IHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0
Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2
YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
TGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3NlcnZlL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9zZXJ2ZS9jb21tYW5kcy5qc29uCi0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zZXJ2ZS9zZXJ2ZS5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvc2VydmUvdGVz
dF9mdW5jdGlvbmFsLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9zZXJ2ZS90ZXN0X3NlcnZlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zZXJ2ZS93YXZlLnB5CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NpeC9kb2N1bWVu
dGF0aW9uL01ha2VmaWxlIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9zaXgvZG9jdW1lbnRhdGlvbi9NYWtlZmlsZQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZWViYWZjZDZkNjBmMTI5Y2I1YzYyNmZiMmUwNGQ0MGY3OGUzNzVkYS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NpeC9kb2N1bWVudGF0aW9uL01h
a2VmaWxlCisrKyAvZGV2L251bGwKQEAgLTEsMTMwICswLDAgQEAKLSMgTWFrZWZpbGUgZm9yIFNw
aGlueCBkb2N1bWVudGF0aW9uCi0jCi0KLSMgWW91IGNhbiBzZXQgdGhlc2UgdmFyaWFibGVzIGZy
b20gdGhlIGNvbW1hbmQgbGluZS4KLVNQSElOWE9QVFMgICAgPQotU1BISU5YQlVJTEQgICA9IHNw
aGlueC1idWlsZAotUEFQRVIgICAgICAgICA9Ci1CVUlMRERJUiAgICAgID0gX2J1aWxkCi0KLSMg
SW50ZXJuYWwgdmFyaWFibGVzLgotUEFQRVJPUFRfYTQgICAgID0gLUQgbGF0ZXhfcGFwZXJfc2l6
ZT1hNAotUEFQRVJPUFRfbGV0dGVyID0gLUQgbGF0ZXhfcGFwZXJfc2l6ZT1sZXR0ZXIKLUFMTFNQ
SElOWE9QVFMgICA9IC1kICQoQlVJTERESVIpL2RvY3RyZWVzICQoUEFQRVJPUFRfJChQQVBFUikp
ICQoU1BISU5YT1BUUykgLgotCi0uUEhPTlk6IGhlbHAgY2xlYW4gaHRtbCBkaXJodG1sIHNpbmds
ZWh0bWwgcGlja2xlIGpzb24gaHRtbGhlbHAgcXRoZWxwIGRldmhlbHAgZXB1YiBsYXRleCBsYXRl
eHBkZiB0ZXh0IG1hbiBjaGFuZ2VzIGxpbmtjaGVjayBkb2N0ZXN0Ci0KLWhlbHA6Ci0JQGVjaG8g
IlBsZWFzZSB1c2UgXGBtYWtlIDx0YXJnZXQ+JyB3aGVyZSA8dGFyZ2V0PiBpcyBvbmUgb2YiCi0J
QGVjaG8gIiAgaHRtbCAgICAgICB0byBtYWtlIHN0YW5kYWxvbmUgSFRNTCBmaWxlcyIKLQlAZWNo
byAiICBkaXJodG1sICAgIHRvIG1ha2UgSFRNTCBmaWxlcyBuYW1lZCBpbmRleC5odG1sIGluIGRp
cmVjdG9yaWVzIgotCUBlY2hvICIgIHNpbmdsZWh0bWwgdG8gbWFrZSBhIHNpbmdsZSBsYXJnZSBI
VE1MIGZpbGUiCi0JQGVjaG8gIiAgcGlja2xlICAgICB0byBtYWtlIHBpY2tsZSBmaWxlcyIKLQlA
ZWNobyAiICBqc29uICAgICAgIHRvIG1ha2UgSlNPTiBmaWxlcyIKLQlAZWNobyAiICBodG1saGVs
cCAgIHRvIG1ha2UgSFRNTCBmaWxlcyBhbmQgYSBIVE1MIGhlbHAgcHJvamVjdCIKLQlAZWNobyAi
ICBxdGhlbHAgICAgIHRvIG1ha2UgSFRNTCBmaWxlcyBhbmQgYSBxdGhlbHAgcHJvamVjdCIKLQlA
ZWNobyAiICBkZXZoZWxwICAgIHRvIG1ha2UgSFRNTCBmaWxlcyBhbmQgYSBEZXZoZWxwIHByb2pl
Y3QiCi0JQGVjaG8gIiAgZXB1YiAgICAgICB0byBtYWtlIGFuIGVwdWIiCi0JQGVjaG8gIiAgbGF0
ZXggICAgICB0byBtYWtlIExhVGVYIGZpbGVzLCB5b3UgY2FuIHNldCBQQVBFUj1hNCBvciBQQVBF
Uj1sZXR0ZXIiCi0JQGVjaG8gIiAgbGF0ZXhwZGYgICB0byBtYWtlIExhVGVYIGZpbGVzIGFuZCBy
dW4gdGhlbSB0aHJvdWdoIHBkZmxhdGV4IgotCUBlY2hvICIgIHRleHQgICAgICAgdG8gbWFrZSB0
ZXh0IGZpbGVzIgotCUBlY2hvICIgIG1hbiAgICAgICAgdG8gbWFrZSBtYW51YWwgcGFnZXMiCi0J
QGVjaG8gIiAgY2hhbmdlcyAgICB0byBtYWtlIGFuIG92ZXJ2aWV3IG9mIGFsbCBjaGFuZ2VkL2Fk
ZGVkL2RlcHJlY2F0ZWQgaXRlbXMiCi0JQGVjaG8gIiAgbGlua2NoZWNrICB0byBjaGVjayBhbGwg
ZXh0ZXJuYWwgbGlua3MgZm9yIGludGVncml0eSIKLQlAZWNobyAiICBkb2N0ZXN0ICAgIHRvIHJ1
biBhbGwgZG9jdGVzdHMgZW1iZWRkZWQgaW4gdGhlIGRvY3VtZW50YXRpb24gKGlmIGVuYWJsZWQp
IgotCi1jbGVhbjoKLQktcm0gLXJmICQoQlVJTERESVIpLyoKLQotaHRtbDoKLQkkKFNQSElOWEJV
SUxEKSAtYiBodG1sICQoQUxMU1BISU5YT1BUUykgJChCVUlMRERJUikvaHRtbAotCUBlY2hvCi0J
QGVjaG8gIkJ1aWxkIGZpbmlzaGVkLiBUaGUgSFRNTCBwYWdlcyBhcmUgaW4gJChCVUlMRERJUikv
aHRtbC4iCi0KLWRpcmh0bWw6Ci0JJChTUEhJTlhCVUlMRCkgLWIgZGlyaHRtbCAkKEFMTFNQSElO
WE9QVFMpICQoQlVJTERESVIpL2Rpcmh0bWwKLQlAZWNobwotCUBlY2hvICJCdWlsZCBmaW5pc2hl
ZC4gVGhlIEhUTUwgcGFnZXMgYXJlIGluICQoQlVJTERESVIpL2Rpcmh0bWwuIgotCi1zaW5nbGVo
dG1sOgotCSQoU1BISU5YQlVJTEQpIC1iIHNpbmdsZWh0bWwgJChBTExTUEhJTlhPUFRTKSAkKEJV
SUxERElSKS9zaW5nbGVodG1sCi0JQGVjaG8KLQlAZWNobyAiQnVpbGQgZmluaXNoZWQuIFRoZSBI
VE1MIHBhZ2UgaXMgaW4gJChCVUlMRERJUikvc2luZ2xlaHRtbC4iCi0KLXBpY2tsZToKLQkkKFNQ
SElOWEJVSUxEKSAtYiBwaWNrbGUgJChBTExTUEhJTlhPUFRTKSAkKEJVSUxERElSKS9waWNrbGUK
LQlAZWNobwotCUBlY2hvICJCdWlsZCBmaW5pc2hlZDsgbm93IHlvdSBjYW4gcHJvY2VzcyB0aGUg
cGlja2xlIGZpbGVzLiIKLQotanNvbjoKLQkkKFNQSElOWEJVSUxEKSAtYiBqc29uICQoQUxMU1BI
SU5YT1BUUykgJChCVUlMRERJUikvanNvbgotCUBlY2hvCi0JQGVjaG8gIkJ1aWxkIGZpbmlzaGVk
OyBub3cgeW91IGNhbiBwcm9jZXNzIHRoZSBKU09OIGZpbGVzLiIKLQotaHRtbGhlbHA6Ci0JJChT
UEhJTlhCVUlMRCkgLWIgaHRtbGhlbHAgJChBTExTUEhJTlhPUFRTKSAkKEJVSUxERElSKS9odG1s
aGVscAotCUBlY2hvCi0JQGVjaG8gIkJ1aWxkIGZpbmlzaGVkOyBub3cgeW91IGNhbiBydW4gSFRN
TCBIZWxwIFdvcmtzaG9wIHdpdGggdGhlIiBcCi0JICAgICAgIi5oaHAgcHJvamVjdCBmaWxlIGlu
ICQoQlVJTERESVIpL2h0bWxoZWxwLiIKLQotcXRoZWxwOgotCSQoU1BISU5YQlVJTEQpIC1iIHF0
aGVscCAkKEFMTFNQSElOWE9QVFMpICQoQlVJTERESVIpL3F0aGVscAotCUBlY2hvCi0JQGVjaG8g
IkJ1aWxkIGZpbmlzaGVkOyBub3cgeW91IGNhbiBydW4gInFjb2xsZWN0aW9uZ2VuZXJhdG9yIiB3
aXRoIHRoZSIgXAotCSAgICAgICIucWhjcCBwcm9qZWN0IGZpbGUgaW4gJChCVUlMRERJUikvcXRo
ZWxwLCBsaWtlIHRoaXM6IgotCUBlY2hvICIjIHFjb2xsZWN0aW9uZ2VuZXJhdG9yICQoQlVJTERE
SVIpL3F0aGVscC9zaXgucWhjcCIKLQlAZWNobyAiVG8gdmlldyB0aGUgaGVscCBmaWxlOiIKLQlA
ZWNobyAiIyBhc3Npc3RhbnQgLWNvbGxlY3Rpb25GaWxlICQoQlVJTERESVIpL3F0aGVscC9zaXgu
cWhjIgotCi1kZXZoZWxwOgotCSQoU1BISU5YQlVJTEQpIC1iIGRldmhlbHAgJChBTExTUEhJTlhP
UFRTKSAkKEJVSUxERElSKS9kZXZoZWxwCi0JQGVjaG8KLQlAZWNobyAiQnVpbGQgZmluaXNoZWQu
IgotCUBlY2hvICJUbyB2aWV3IHRoZSBoZWxwIGZpbGU6IgotCUBlY2hvICIjIG1rZGlyIC1wICQk
SE9NRS8ubG9jYWwvc2hhcmUvZGV2aGVscC9zaXgiCi0JQGVjaG8gIiMgbG4gLXMgJChCVUlMRERJ
UikvZGV2aGVscCAkJEhPTUUvLmxvY2FsL3NoYXJlL2RldmhlbHAvc2l4IgotCUBlY2hvICIjIGRl
dmhlbHAiCi0KLWVwdWI6Ci0JJChTUEhJTlhCVUlMRCkgLWIgZXB1YiAkKEFMTFNQSElOWE9QVFMp
ICQoQlVJTERESVIpL2VwdWIKLQlAZWNobwotCUBlY2hvICJCdWlsZCBmaW5pc2hlZC4gVGhlIGVw
dWIgZmlsZSBpcyBpbiAkKEJVSUxERElSKS9lcHViLiIKLQotbGF0ZXg6Ci0JJChTUEhJTlhCVUlM
RCkgLWIgbGF0ZXggJChBTExTUEhJTlhPUFRTKSAkKEJVSUxERElSKS9sYXRleAotCUBlY2hvCi0J
QGVjaG8gIkJ1aWxkIGZpbmlzaGVkOyB0aGUgTGFUZVggZmlsZXMgYXJlIGluICQoQlVJTERESVIp
L2xhdGV4LiIKLQlAZWNobyAiUnVuIFxgbWFrZScgaW4gdGhhdCBkaXJlY3RvcnkgdG8gcnVuIHRo
ZXNlIHRocm91Z2ggKHBkZilsYXRleCIgXAotCSAgICAgICIodXNlIFxgbWFrZSBsYXRleHBkZicg
aGVyZSB0byBkbyB0aGF0IGF1dG9tYXRpY2FsbHkpLiIKLQotbGF0ZXhwZGY6Ci0JJChTUEhJTlhC
VUlMRCkgLWIgbGF0ZXggJChBTExTUEhJTlhPUFRTKSAkKEJVSUxERElSKS9sYXRleAotCUBlY2hv
ICJSdW5uaW5nIExhVGVYIGZpbGVzIHRocm91Z2ggcGRmbGF0ZXguLi4iCi0JbWFrZSAtQyAkKEJV
SUxERElSKS9sYXRleCBhbGwtcGRmCi0JQGVjaG8gInBkZmxhdGV4IGZpbmlzaGVkOyB0aGUgUERG
IGZpbGVzIGFyZSBpbiAkKEJVSUxERElSKS9sYXRleC4iCi0KLXRleHQ6Ci0JJChTUEhJTlhCVUlM
RCkgLWIgdGV4dCAkKEFMTFNQSElOWE9QVFMpICQoQlVJTERESVIpL3RleHQKLQlAZWNobwotCUBl
Y2hvICJCdWlsZCBmaW5pc2hlZC4gVGhlIHRleHQgZmlsZXMgYXJlIGluICQoQlVJTERESVIpL3Rl
eHQuIgotCi1tYW46Ci0JJChTUEhJTlhCVUlMRCkgLWIgbWFuICQoQUxMU1BISU5YT1BUUykgJChC
VUlMRERJUikvbWFuCi0JQGVjaG8KLQlAZWNobyAiQnVpbGQgZmluaXNoZWQuIFRoZSBtYW51YWwg
cGFnZXMgYXJlIGluICQoQlVJTERESVIpL21hbi4iCi0KLWNoYW5nZXM6Ci0JJChTUEhJTlhCVUlM
RCkgLWIgY2hhbmdlcyAkKEFMTFNQSElOWE9QVFMpICQoQlVJTERESVIpL2NoYW5nZXMKLQlAZWNo
bwotCUBlY2hvICJUaGUgb3ZlcnZpZXcgZmlsZSBpcyBpbiAkKEJVSUxERElSKS9jaGFuZ2VzLiIK
LQotbGlua2NoZWNrOgotCSQoU1BISU5YQlVJTEQpIC1iIGxpbmtjaGVjayAkKEFMTFNQSElOWE9Q
VFMpICQoQlVJTERESVIpL2xpbmtjaGVjawotCUBlY2hvCi0JQGVjaG8gIkxpbmsgY2hlY2sgY29t
cGxldGU7IGxvb2sgZm9yIGFueSBlcnJvcnMgaW4gdGhlIGFib3ZlIG91dHB1dCAiIFwKLQkgICAg
ICAib3IgaW4gJChCVUlMRERJUikvbGlua2NoZWNrL291dHB1dC50eHQuIgotCi1kb2N0ZXN0Ogot
CSQoU1BISU5YQlVJTEQpIC1iIGRvY3Rlc3QgJChBTExTUEhJTlhPUFRTKSAkKEJVSUxERElSKS9k
b2N0ZXN0Ci0JQGVjaG8gIlRlc3Rpbmcgb2YgZG9jdGVzdHMgaW4gdGhlIHNvdXJjZXMgZmluaXNo
ZWQsIGxvb2sgYXQgdGhlICIgXAotCSAgICAgICJyZXN1bHRzIGluICQoQlVJTERESVIpL2RvY3Rl
c3Qvb3V0cHV0LnR4dC4iCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NpeC9kb2N1bWVudGF0aW9uL2NvbmYucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NpeC9kb2N1bWVudGF0
aW9uL2NvbmYucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlNTQyODdhNjllMDQ3
MDdiMWE1MGVmNmI2NmZhYTZiZDJkMTg4MTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9zaXgvZG9jdW1lbnRhdGlvbi9jb25mLnB5CisrKyAvZGV2L251bGwKQEAgLTEs
MjE3ICswLDAgQEAKLSMgLSotIGNvZGluZzogdXRmLTggLSotCi0jCi0jIHNpeCBkb2N1bWVudGF0
aW9uIGJ1aWxkIGNvbmZpZ3VyYXRpb24gZmlsZQotCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLQot
IyBJZiBleHRlbnNpb25zIChvciBtb2R1bGVzIHRvIGRvY3VtZW50IHdpdGggYXV0b2RvYykgYXJl
IGluIGFub3RoZXIgZGlyZWN0b3J5LAotIyBhZGQgdGhlc2UgZGlyZWN0b3JpZXMgdG8gc3lzLnBh
dGggaGVyZS4gSWYgdGhlIGRpcmVjdG9yeSBpcyByZWxhdGl2ZSB0byB0aGUKLSMgZG9jdW1lbnRh
dGlvbiByb290LCB1c2Ugb3MucGF0aC5hYnNwYXRoIHRvIG1ha2UgaXQgYWJzb2x1dGUsIGxpa2Ug
c2hvd24gaGVyZS4KLSNzeXMucGF0aC5hcHBlbmQob3MucGF0aC5hYnNwYXRoKCcuJykpCi0KLSMg
LS0gR2VuZXJhbCBjb25maWd1cmF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSMgSWYgeW91ciBkb2N1bWVudGF0aW9uIG5lZWRzIGEg
bWluaW1hbCBTcGhpbnggdmVyc2lvbiwgc3RhdGUgaXQgaGVyZS4KLW5lZWRzX3NwaGlueCA9ICIx
LjAiCi0KLSMgQWRkIGFueSBTcGhpbnggZXh0ZW5zaW9uIG1vZHVsZSBuYW1lcyBoZXJlLCBhcyBz
dHJpbmdzLiBUaGV5IGNhbiBiZSBleHRlbnNpb25zCi0jIGNvbWluZyB3aXRoIFNwaGlueCAobmFt
ZWQgJ3NwaGlueC5leHQuKicpIG9yIHlvdXIgY3VzdG9tIG9uZXMuCi1leHRlbnNpb25zID0gWyJz
cGhpbnguZXh0LmludGVyc3BoaW54Il0KLQotIyBBZGQgYW55IHBhdGhzIHRoYXQgY29udGFpbiB0
ZW1wbGF0ZXMgaGVyZSwgcmVsYXRpdmUgdG8gdGhpcyBkaXJlY3RvcnkuCi10ZW1wbGF0ZXNfcGF0
aCA9IFsiX3RlbXBsYXRlcyJdCi0KLSMgVGhlIHN1ZmZpeCBvZiBzb3VyY2UgZmlsZW5hbWVzLgot
c291cmNlX3N1ZmZpeCA9ICIucnN0IgotCi0jIFRoZSBlbmNvZGluZyBvZiBzb3VyY2UgZmlsZXMu
Ci0jc291cmNlX2VuY29kaW5nID0gInV0Zi04LXNpZyIKLQotIyBUaGUgbWFzdGVyIHRvY3RyZWUg
ZG9jdW1lbnQuCi1tYXN0ZXJfZG9jID0gImluZGV4IgotCi0jIEdlbmVyYWwgaW5mb3JtYXRpb24g
YWJvdXQgdGhlIHByb2plY3QuCi1wcm9qZWN0ID0gdSJzaXgiCi1jb3B5cmlnaHQgPSB1IjIwMTAt
MjAxNCwgQmVuamFtaW4gUGV0ZXJzb24iCi0KLXN5cy5wYXRoLmFwcGVuZChvcy5wYXRoLmFic3Bh
dGgob3MucGF0aC5qb2luKCIuIiwgIi4uIikpKQotZnJvbSBzaXggaW1wb3J0IF9fdmVyc2lvbl9f
IGFzIHNpeF92ZXJzaW9uCi1zeXMucGF0aC5wb3AoKQotCi0jIFRoZSB2ZXJzaW9uIGluZm8gZm9y
IHRoZSBwcm9qZWN0IHlvdSdyZSBkb2N1bWVudGluZywgYWN0cyBhcyByZXBsYWNlbWVudCBmb3IK
LSMgfHZlcnNpb258IGFuZCB8cmVsZWFzZXwsIGFsc28gdXNlZCBpbiB2YXJpb3VzIG90aGVyIHBs
YWNlcyB0aHJvdWdob3V0IHRoZQotIyBidWlsdCBkb2N1bWVudHMuCi0jCi0jIFRoZSBzaG9ydCBY
LlkgdmVyc2lvbi4KLXZlcnNpb24gPSBzaXhfdmVyc2lvbls6LTJdCi0jIFRoZSBmdWxsIHZlcnNp
b24sIGluY2x1ZGluZyBhbHBoYS9iZXRhL3JjIHRhZ3MuCi1yZWxlYXNlID0gc2l4X3ZlcnNpb24K
LQotIyBUaGUgbGFuZ3VhZ2UgZm9yIGNvbnRlbnQgYXV0b2dlbmVyYXRlZCBieSBTcGhpbnguIFJl
ZmVyIHRvIGRvY3VtZW50YXRpb24KLSMgZm9yIGEgbGlzdCBvZiBzdXBwb3J0ZWQgbGFuZ3VhZ2Vz
LgotI2xhbmd1YWdlID0gTm9uZQotCi0jIFRoZXJlIGFyZSB0d28gb3B0aW9ucyBmb3IgcmVwbGFj
aW5nIHx0b2RheXw6IGVpdGhlciwgeW91IHNldCB0b2RheSB0byBzb21lCi0jIG5vbi1mYWxzZSB2
YWx1ZSwgdGhlbiBpdCBpcyB1c2VkOgotI3RvZGF5ID0gJycKLSMgRWxzZSwgdG9kYXlfZm10IGlz
IHVzZWQgYXMgdGhlIGZvcm1hdCBmb3IgYSBzdHJmdGltZSBjYWxsLgotI3RvZGF5X2ZtdCA9ICcl
QiAlZCwgJVknCi0KLSMgTGlzdCBvZiBwYXR0ZXJucywgcmVsYXRpdmUgdG8gc291cmNlIGRpcmVj
dG9yeSwgdGhhdCBtYXRjaCBmaWxlcyBhbmQKLSMgZGlyZWN0b3JpZXMgdG8gaWdub3JlIHdoZW4g
bG9va2luZyBmb3Igc291cmNlIGZpbGVzLgotZXhjbHVkZV9wYXR0ZXJucyA9IFsiX2J1aWxkIl0K
LQotIyBUaGUgcmVTVCBkZWZhdWx0IHJvbGUgKHVzZWQgZm9yIHRoaXMgbWFya3VwOiBgdGV4dGAp
IHRvIHVzZSBmb3IgYWxsIGRvY3VtZW50cy4KLSNkZWZhdWx0X3JvbGUgPSBOb25lCi0KLSMgSWYg
dHJ1ZSwgJygpJyB3aWxsIGJlIGFwcGVuZGVkIHRvIDpmdW5jOiBldGMuIGNyb3NzLXJlZmVyZW5j
ZSB0ZXh0LgotI2FkZF9mdW5jdGlvbl9wYXJlbnRoZXNlcyA9IFRydWUKLQotIyBJZiB0cnVlLCB0
aGUgY3VycmVudCBtb2R1bGUgbmFtZSB3aWxsIGJlIHByZXBlbmRlZCB0byBhbGwgZGVzY3JpcHRp
b24KLSMgdW5pdCB0aXRsZXMgKHN1Y2ggYXMgLi4gZnVuY3Rpb246OikuCi0jYWRkX21vZHVsZV9u
YW1lcyA9IFRydWUKLQotIyBJZiB0cnVlLCBzZWN0aW9uYXV0aG9yIGFuZCBtb2R1bGVhdXRob3Ig
ZGlyZWN0aXZlcyB3aWxsIGJlIHNob3duIGluIHRoZQotIyBvdXRwdXQuIFRoZXkgYXJlIGlnbm9y
ZWQgYnkgZGVmYXVsdC4KLSNzaG93X2F1dGhvcnMgPSBGYWxzZQotCi0jIFRoZSBuYW1lIG9mIHRo
ZSBQeWdtZW50cyAoc3ludGF4IGhpZ2hsaWdodGluZykgc3R5bGUgdG8gdXNlLgotcHlnbWVudHNf
c3R5bGUgPSAic3BoaW54IgotCi0jIEEgbGlzdCBvZiBpZ25vcmVkIHByZWZpeGVzIGZvciBtb2R1
bGUgaW5kZXggc29ydGluZy4KLSNtb2RpbmRleF9jb21tb25fcHJlZml4ID0gW10KLQotCi0jIC0t
IE9wdGlvbnMgZm9yIEhUTUwgb3V0cHV0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jIFRoZSB0aGVtZSB0byB1c2UgZm9yIEhUTUwgYW5kIEhU
TUwgSGVscCBwYWdlcy4gIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IKLSMgYSBsaXN0IG9mIGJ1
aWx0aW4gdGhlbWVzLgotaHRtbF90aGVtZSA9ICJkZWZhdWx0IgotCi0jIFRoZW1lIG9wdGlvbnMg
YXJlIHRoZW1lLXNwZWNpZmljIGFuZCBjdXN0b21pemUgdGhlIGxvb2sgYW5kIGZlZWwgb2YgYSB0
aGVtZQotIyBmdXJ0aGVyLiAgRm9yIGEgbGlzdCBvZiBvcHRpb25zIGF2YWlsYWJsZSBmb3IgZWFj
aCB0aGVtZSwgc2VlIHRoZQotIyBkb2N1bWVudGF0aW9uLgotI2h0bWxfdGhlbWVfb3B0aW9ucyA9
IHt9Ci0KLSMgQWRkIGFueSBwYXRocyB0aGF0IGNvbnRhaW4gY3VzdG9tIHRoZW1lcyBoZXJlLCBy
ZWxhdGl2ZSB0byB0aGlzIGRpcmVjdG9yeS4KLSNodG1sX3RoZW1lX3BhdGggPSBbXQotCi0jIFRo
ZSBuYW1lIGZvciB0aGlzIHNldCBvZiBTcGhpbnggZG9jdW1lbnRzLiAgSWYgTm9uZSwgaXQgZGVm
YXVsdHMgdG8KLSMgIjxwcm9qZWN0PiB2PHJlbGVhc2U+IGRvY3VtZW50YXRpb24iLgotI2h0bWxf
dGl0bGUgPSBOb25lCi0KLSMgQSBzaG9ydGVyIHRpdGxlIGZvciB0aGUgbmF2aWdhdGlvbiBiYXIu
ICBEZWZhdWx0IGlzIHRoZSBzYW1lIGFzIGh0bWxfdGl0bGUuCi0jaHRtbF9zaG9ydF90aXRsZSA9
IE5vbmUKLQotIyBUaGUgbmFtZSBvZiBhbiBpbWFnZSBmaWxlIChyZWxhdGl2ZSB0byB0aGlzIGRp
cmVjdG9yeSkgdG8gcGxhY2UgYXQgdGhlIHRvcAotIyBvZiB0aGUgc2lkZWJhci4KLSNodG1sX2xv
Z28gPSBOb25lCi0KLSMgVGhlIG5hbWUgb2YgYW4gaW1hZ2UgZmlsZSAod2l0aGluIHRoZSBzdGF0
aWMgcGF0aCkgdG8gdXNlIGFzIGZhdmljb24gb2YgdGhlCi0jIGRvY3MuICBUaGlzIGZpbGUgc2hv
dWxkIGJlIGEgV2luZG93cyBpY29uIGZpbGUgKC5pY28pIGJlaW5nIDE2eDE2IG9yIDMyeDMyCi0j
IHBpeGVscyBsYXJnZS4KLSNodG1sX2Zhdmljb24gPSBOb25lCi0KLSMgQWRkIGFueSBwYXRocyB0
aGF0IGNvbnRhaW4gY3VzdG9tIHN0YXRpYyBmaWxlcyAoc3VjaCBhcyBzdHlsZSBzaGVldHMpIGhl
cmUsCi0jIHJlbGF0aXZlIHRvIHRoaXMgZGlyZWN0b3J5LiBUaGV5IGFyZSBjb3BpZWQgYWZ0ZXIg
dGhlIGJ1aWx0aW4gc3RhdGljIGZpbGVzLAotIyBzbyBhIGZpbGUgbmFtZWQgImRlZmF1bHQuY3Nz
IiB3aWxsIG92ZXJ3cml0ZSB0aGUgYnVpbHRpbiAiZGVmYXVsdC5jc3MiLgotaHRtbF9zdGF0aWNf
cGF0aCA9IFsiX3N0YXRpYyJdCi0KLSMgSWYgbm90ICcnLCBhICdMYXN0IHVwZGF0ZWQgb246JyB0
aW1lc3RhbXAgaXMgaW5zZXJ0ZWQgYXQgZXZlcnkgcGFnZSBib3R0b20sCi0jIHVzaW5nIHRoZSBn
aXZlbiBzdHJmdGltZSBmb3JtYXQuCi0jaHRtbF9sYXN0X3VwZGF0ZWRfZm10ID0gJyViICVkLCAl
WScKLQotIyBJZiB0cnVlLCBTbWFydHlQYW50cyB3aWxsIGJlIHVzZWQgdG8gY29udmVydCBxdW90
ZXMgYW5kIGRhc2hlcyB0bwotIyB0eXBvZ3JhcGhpY2FsbHkgY29ycmVjdCBlbnRpdGllcy4KLSNo
dG1sX3VzZV9zbWFydHlwYW50cyA9IFRydWUKLQotIyBDdXN0b20gc2lkZWJhciB0ZW1wbGF0ZXMs
IG1hcHMgZG9jdW1lbnQgbmFtZXMgdG8gdGVtcGxhdGUgbmFtZXMuCi0jaHRtbF9zaWRlYmFycyA9
IHt9Ci0KLSMgQWRkaXRpb25hbCB0ZW1wbGF0ZXMgdGhhdCBzaG91bGQgYmUgcmVuZGVyZWQgdG8g
cGFnZXMsIG1hcHMgcGFnZSBuYW1lcyB0bwotIyB0ZW1wbGF0ZSBuYW1lcy4KLSNodG1sX2FkZGl0
aW9uYWxfcGFnZXMgPSB7fQotCi0jIElmIGZhbHNlLCBubyBtb2R1bGUgaW5kZXggaXMgZ2VuZXJh
dGVkLgotI2h0bWxfZG9tYWluX2luZGljZXMgPSBUcnVlCi0KLSMgSWYgZmFsc2UsIG5vIGluZGV4
IGlzIGdlbmVyYXRlZC4KLSNodG1sX3VzZV9pbmRleCA9IFRydWUKLQotIyBJZiB0cnVlLCB0aGUg
aW5kZXggaXMgc3BsaXQgaW50byBpbmRpdmlkdWFsIHBhZ2VzIGZvciBlYWNoIGxldHRlci4KLSNo
dG1sX3NwbGl0X2luZGV4ID0gRmFsc2UKLQotIyBJZiB0cnVlLCBsaW5rcyB0byB0aGUgcmVTVCBz
b3VyY2VzIGFyZSBhZGRlZCB0byB0aGUgcGFnZXMuCi0jaHRtbF9zaG93X3NvdXJjZWxpbmsgPSBU
cnVlCi0KLSMgSWYgdHJ1ZSwgIkNyZWF0ZWQgdXNpbmcgU3BoaW54IiBpcyBzaG93biBpbiB0aGUg
SFRNTCBmb290ZXIuIERlZmF1bHQgaXMgVHJ1ZS4KLSNodG1sX3Nob3dfc3BoaW54ID0gVHJ1ZQot
Ci0jIElmIHRydWUsICIoQykgQ29weXJpZ2h0IC4uLiIgaXMgc2hvd24gaW4gdGhlIEhUTUwgZm9v
dGVyLiBEZWZhdWx0IGlzIFRydWUuCi0jaHRtbF9zaG93X2NvcHlyaWdodCA9IFRydWUKLQotIyBJ
ZiB0cnVlLCBhbiBPcGVuU2VhcmNoIGRlc2NyaXB0aW9uIGZpbGUgd2lsbCBiZSBvdXRwdXQsIGFu
ZCBhbGwgcGFnZXMgd2lsbAotIyBjb250YWluIGEgPGxpbms+IHRhZyByZWZlcnJpbmcgdG8gaXQu
ICBUaGUgdmFsdWUgb2YgdGhpcyBvcHRpb24gbXVzdCBiZSB0aGUKLSMgYmFzZSBVUkwgZnJvbSB3
aGljaCB0aGUgZmluaXNoZWQgSFRNTCBpcyBzZXJ2ZWQuCi0jaHRtbF91c2Vfb3BlbnNlYXJjaCA9
ICcnCi0KLSMgSWYgbm9uZW1wdHksIHRoaXMgaXMgdGhlIGZpbGUgbmFtZSBzdWZmaXggZm9yIEhU
TUwgZmlsZXMgKGUuZy4gIi54aHRtbCIpLgotI2h0bWxfZmlsZV9zdWZmaXggPSAnJwotCi0jIE91
dHB1dCBmaWxlIGJhc2UgbmFtZSBmb3IgSFRNTCBoZWxwIGJ1aWxkZXIuCi1odG1saGVscF9iYXNl
bmFtZSA9ICdzaXhkb2MnCi0KLQotIyAtLSBPcHRpb25zIGZvciBMYVRlWCBvdXRwdXQgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotIyBUaGUgcGFw
ZXIgc2l6ZSAoJ2xldHRlcicgb3IgJ2E0JykuCi0jbGF0ZXhfcGFwZXJfc2l6ZSA9ICdsZXR0ZXIn
Ci0KLSMgVGhlIGZvbnQgc2l6ZSAoJzEwcHQnLCAnMTFwdCcgb3IgJzEycHQnKS4KLSNsYXRleF9m
b250X3NpemUgPSAnMTBwdCcKLQotIyBHcm91cGluZyB0aGUgZG9jdW1lbnQgdHJlZSBpbnRvIExh
VGVYIGZpbGVzLiBMaXN0IG9mIHR1cGxlcwotIyAoc291cmNlIHN0YXJ0IGZpbGUsIHRhcmdldCBu
YW1lLCB0aXRsZSwgYXV0aG9yLCBkb2N1bWVudGNsYXNzIFtob3d0by9tYW51YWxdKS4KLWxhdGV4
X2RvY3VtZW50cyA9IFsKLSAgKCJpbmRleCIsICJzaXgudGV4IiwgdSJzaXggRG9jdW1lbnRhdGlv
biIsCi0gICB1IkJlbmphbWluIFBldGVyc29uIiwgIm1hbnVhbCIpLAotXQotCi0jIFRoZSBuYW1l
IG9mIGFuIGltYWdlIGZpbGUgKHJlbGF0aXZlIHRvIHRoaXMgZGlyZWN0b3J5KSB0byBwbGFjZSBh
dCB0aGUgdG9wIG9mCi0jIHRoZSB0aXRsZSBwYWdlLgotI2xhdGV4X2xvZ28gPSBOb25lCi0KLSMg
Rm9yICJtYW51YWwiIGRvY3VtZW50cywgaWYgdGhpcyBpcyB0cnVlLCB0aGVuIHRvcGxldmVsIGhl
YWRpbmdzIGFyZSBwYXJ0cywKLSMgbm90IGNoYXB0ZXJzLgotI2xhdGV4X3VzZV9wYXJ0cyA9IEZh
bHNlCi0KLSMgSWYgdHJ1ZSwgc2hvdyBwYWdlIHJlZmVyZW5jZXMgYWZ0ZXIgaW50ZXJuYWwgbGlu
a3MuCi0jbGF0ZXhfc2hvd19wYWdlcmVmcyA9IEZhbHNlCi0KLSMgSWYgdHJ1ZSwgc2hvdyBVUkwg
YWRkcmVzc2VzIGFmdGVyIGV4dGVybmFsIGxpbmtzLgotI2xhdGV4X3Nob3dfdXJscyA9IEZhbHNl
Ci0KLSMgQWRkaXRpb25hbCBzdHVmZiBmb3IgdGhlIExhVGVYIHByZWFtYmxlLgotI2xhdGV4X3By
ZWFtYmxlID0gJycKLQotIyBEb2N1bWVudHMgdG8gYXBwZW5kIGFzIGFuIGFwcGVuZGl4IHRvIGFs
bCBtYW51YWxzLgotI2xhdGV4X2FwcGVuZGljZXMgPSBbXQotCi0jIElmIGZhbHNlLCBubyBtb2R1
bGUgaW5kZXggaXMgZ2VuZXJhdGVkLgotI2xhdGV4X2RvbWFpbl9pbmRpY2VzID0gVHJ1ZQotCi0K
LSMgLS0gT3B0aW9ucyBmb3IgbWFudWFsIHBhZ2Ugb3V0cHV0IC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSMgT25lIGVudHJ5IHBlciBtYW51YWwgcGFnZS4g
TGlzdCBvZiB0dXBsZXMKLSMgKHNvdXJjZSBzdGFydCBmaWxlLCBuYW1lLCBkZXNjcmlwdGlvbiwg
YXV0aG9ycywgbWFudWFsIHNlY3Rpb24pLgotbWFuX3BhZ2VzID0gWwotICAgICgiaW5kZXgiLCAi
c2l4IiwgdSJzaXggRG9jdW1lbnRhdGlvbiIsCi0gICAgIFt1IkJlbmphbWluIFBldGVyc29uIl0s
IDEpCi1dCi0KLSMgLS0gSW50ZXJzcGhpbnggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWludGVyc3BoaW54X21hcHBpbmcg
PSB7InB5MiIgOiAoImh0dHBzOi8vZG9jcy5weXRob24ub3JnLzIvIiwgTm9uZSksCi0gICAgICAg
ICAgICAgICAgICAgICAgICJweTMiIDogKCJodHRwczovL2RvY3MucHl0aG9uLm9yZy8zLyIsIE5v
bmUpfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9zaXgvZG9jdW1lbnRhdGlvbi9pbmRleC5yc3QgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NpeC9kb2N1bWVudGF0aW9uL2luZGV4
LnJzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTgyN2U2Njk1YjU5MzFlNTUxNDRj
ODU4NzZiN2Q2ZjI1NWNmMzQ0Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3NpeC9kb2N1bWVudGF0aW9uL2luZGV4LnJzdAorKysgL2Rldi9udWxsCkBAIC0xLDc4NSAr
MCwwIEBACi1TaXg6IFB5dGhvbiAyIGFuZCAzIENvbXBhdGliaWxpdHkgTGlicmFyeQotPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotLi4gbW9kdWxlOjogc2l4Ci0g
ICA6c3lub3BzaXM6IFB5dGhvbiAyIGFuZCAzIGNvbXBhdGliaWxpdHkKLQotLi4gbW9kdWxlYXV0
aG9yOjogQmVuamFtaW4gUGV0ZXJzb24gPGJlbmphbWluQHB5dGhvbi5vcmc+Ci0uLiBzZWN0aW9u
YXV0aG9yOjogQmVuamFtaW4gUGV0ZXJzb24gPGJlbmphbWluQHB5dGhvbi5vcmc+Ci0KLQotU2l4
IHByb3ZpZGVzIHNpbXBsZSB1dGlsaXRpZXMgZm9yIHdyYXBwaW5nIG92ZXIgZGlmZmVyZW5jZXMg
YmV0d2VlbiBQeXRob24gMiBhbmQKLVB5dGhvbiAzLiAgSXQgaXMgaW50ZW5kZWQgdG8gc3VwcG9y
dCBjb2RlYmFzZXMgdGhhdCB3b3JrIG9uIGJvdGggUHl0aG9uIDIgYW5kIDMKLXdpdGhvdXQgbW9k
aWZpY2F0aW9uLiAgc2l4IGNvbnNpc3RzIG9mIG9ubHkgb25lIFB5dGhvbiBmaWxlLCBzbyBpdCBp
cyBwYWlubGVzcwotdG8gY29weSBpbnRvIGEgcHJvamVjdC4KLQotU2l4IGNhbiBiZSBkb3dubG9h
ZGVkIG9uIGBQeVBpIDxodHRwOi8vcHlwaS5weXRob24ub3JnL3B5cGkvc2l4Lz5gXy4gIEl0cyBi
dWcKLXRyYWNrZXIgYW5kIGNvZGUgaG9zdGluZyBpcyBvbiBgQml0QnVja2V0IDxodHRwOi8vYml0
YnVja2V0Lm9yZy9ndXR3b3J0aC9zaXg+YF8uCi0KLVRoZSBuYW1lLCAic2l4IiwgY29tZXMgZnJv
bSB0aGUgZmFjdCB0aGF0IDIqMyBlcXVhbHMgNi4gIFdoeSBub3QgYWRkaXRpb24/Ci1NdWx0aXBs
aWNhdGlvbiBpcyBtb3JlIHBvd2VyZnVsLCBhbmQsIGFueXdheSwgImZpdmUiIGhhcyBhbHJlYWR5
IGJlZW4gc25hdGNoZWQKLWF3YXkgYnkgdGhlIFpvcGUgRml2ZSBwcm9qZWN0LgotCi0KLUluZGlj
ZXMgYW5kIHRhYmxlcwotLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSogOnJlZjpgZ2VuaW5kZXhgCi0q
IDpyZWY6YHNlYXJjaGAKLQotCi1QYWNrYWdlIGNvbnRlbnRzCi0tLS0tLS0tLS0tLS0tLS0tCi0K
LS4uIGRhdGE6OiBQWTIKLQotICAgQSBib29sZWFuIGluZGljYXRpbmcgaWYgdGhlIGNvZGUgaXMg
cnVubmluZyBvbiBQeXRob24gMi4KLQotLi4gZGF0YTo6IFBZMwotCi0gICBBIGJvb2xlYW4gaW5k
aWNhdGluZyBpZiB0aGUgY29kZSBpcyBydW5uaW5nIG9uIFB5dGhvbiAzLgotCi0KLUNvbnN0YW50
cwotPj4+Pj4+Pj4+Ci0KLVNpeCBwcm92aWRlcyBjb25zdGFudHMgdGhhdCBtYXkgZGlmZmVyIGJl
dHdlZW4gUHl0aG9uIHZlcnNpb25zLiAgT25lcyBlbmRpbmcKLWBgX3R5cGVzYGAgYXJlIG1vc3Rs
eSB1c2VmdWwgYXMgdGhlIHNlY29uZCBhcmd1bWVudCB0byBgYGlzaW5zdGFuY2VgYCBvcgotYGBp
c3N1YmNsYXNzYGAuCi0KLQotLi4gZGF0YTo6IGNsYXNzX3R5cGVzCi0KLSAgIFBvc3NpYmxlIGNs
YXNzIHR5cGVzLiAgSW4gUHl0aG9uIDIsIHRoaXMgZW5jb21wYXNzZXMgb2xkLXN0eWxlIGFuZCBu
ZXctc3R5bGUKLSAgIGNsYXNzZXMuICBJbiBQeXRob24gMywgdGhpcyBpcyBqdXN0IG5ldy1zdHls
ZXMuCi0KLQotLi4gZGF0YTo6IGludGVnZXJfdHlwZXMKLQotICAgUG9zc2libGUgaW50ZWdlciB0
eXBlcy4gIEluIFB5dGhvbiAyLCB0aGlzIGlzIDpmdW5jOmBweTI6bG9uZ2AgYW5kCi0gICA6ZnVu
YzpgcHkyOmludGAsIGFuZCBpbiBQeXRob24gMywganVzdCA6ZnVuYzpgcHkzOmludGAuCi0KLQot
Li4gZGF0YTo6IHN0cmluZ190eXBlcwotCi0gICBQb3NzaWJsZSB0eXBlcyBmb3IgdGV4dCBkYXRh
LiAgVGhpcyBpcyA6ZnVuYzpgcHkyOmJhc2VzdHJpbmdgIGluIFB5dGhvbiAyIGFuZAotICAgOmZ1
bmM6YHB5MzpzdHJgIGluIFB5dGhvbiAzLgotCi0KLS4uIGRhdGE6OiB0ZXh0X3R5cGUKLQotICAg
VHlwZSBmb3IgcmVwcmVzZW50aW5nIChVbmljb2RlKSB0ZXh0dWFsIGRhdGEuICBUaGlzIGlzIDpm
dW5jOmBweTI6dW5pY29kZWAgaW4KLSAgIFB5dGhvbiAyIGFuZCA6ZnVuYzpgcHkzOnN0cmAgaW4g
UHl0aG9uIDMuCi0KLQotLi4gZGF0YTo6IGJpbmFyeV90eXBlCi0KLSAgIFR5cGUgZm9yIHJlcHJl
c2VudGluZyBiaW5hcnkgZGF0YS4gIFRoaXMgaXMgOmZ1bmM6YHB5MjpzdHJgIGluIFB5dGhvbiAy
IGFuZAotICAgOmZ1bmM6YHB5MzpieXRlc2AgaW4gUHl0aG9uIDMuCi0KLQotLi4gZGF0YTo6IE1B
WFNJWkUKLQotICAgVGhlIG1heGltdW0gIHNpemUgb2YgYSAgY29udGFpbmVyIGxpa2UgOmZ1bmM6
YHB5MzpsaXN0YCAgb3IgOmZ1bmM6YHB5MzpkaWN0YC4KLSAgIFRoaXMgIGlzICBlcXVpdmFsZW50
ICB0byAgOmRhdGE6YHB5MzpzeXMubWF4c2l6ZWAgaW4gIFB5dGhvbiAgMi42ICBhbmQgIGxhdGVy
Ci0gICAoaW5jbHVkaW5nIDMueCkuICAgTm90ZSwgdGhpcyBpcyB0ZW1wdGluZ2x5ICBzaW1pbGFy
IHRvLCBidXQgbm90ICB0aGUgc2FtZSBhcwotICAgOmRhdGE6YHB5MjpzeXMubWF4aW50YCAgaW4g
IFB5dGhvbiAgMi4gICBUaGVyZSBpcyAgbm8gIGRpcmVjdCAgZXF1aXZhbGVudCAgdG8KLSAgIDpk
YXRhOmBweTI6c3lzLm1heGludGAgaW4gIFB5dGhvbiAzICBiZWNhdXNlIGl0cyBpbnRlZ2VyICB0
eXBlIGhhcyAgbm8gbGltaXRzCi0gICBhc2lkZSBmcm9tIG1lbW9yeS4KLQotCi1IZXJlJ3MgZXhh
bXBsZSB1c2FnZSBvZiB0aGUgbW9kdWxlOjoKLQotICAgaW1wb3J0IHNpeAotCi0gICBkZWYgZGlz
cGF0Y2hfdHlwZXModmFsdWUpOgotICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIHNpeC5pbnRl
Z2VyX3R5cGVzKToKLSAgICAgICAgICAgaGFuZGxlX2ludGVnZXIodmFsdWUpCi0gICAgICAgZWxp
ZiBpc2luc3RhbmNlKHZhbHVlLCBzaXguY2xhc3NfdHlwZXMpOgotICAgICAgICAgICBoYW5kbGVf
Y2xhc3ModmFsdWUpCi0gICAgICAgZWxpZiBpc2luc3RhbmNlKHZhbHVlLCBzaXguc3RyaW5nX3R5
cGVzKToKLSAgICAgICAgICAgaGFuZGxlX3N0cmluZyh2YWx1ZSkKLQotCi1PYmplY3QgbW9kZWwg
Y29tcGF0aWJpbGl0eQotPj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4KLQotUHl0aG9uIDMgcmVu
YW1lZCB0aGUgYXR0cmlidXRlcyBvZiBzZXZlcmFsIGludGVycHJldGVyIGRhdGEgc3RydWN0dXJl
cy4gIFRoZQotZm9sbG93aW5nIGFjY2Vzc29ycyBhcmUgYXZhaWxhYmxlLiAgTm90ZSB0aGF0IHRo
ZSByZWNvbW1lbmRlZCB3YXkgdG8gaW5zcGVjdAotZnVuY3Rpb25zIGFuZCBtZXRob2RzIGlzIHRo
ZSBzdGRsaWIgOm1vZDpgcHkzOmluc3BlY3RgIG1vZHVsZS4KLQotCi0uLiBmdW5jdGlvbjo6IGdl
dF91bmJvdW5kX2Z1bmN0aW9uKG1ldGgpCi0KLSAgIEdldCB0aGUgZnVuY3Rpb24gb3V0IG9mIHVu
Ym91bmQgbWV0aG9kICptZXRoKi4gIEluIFB5dGhvbiAzLCB1bmJvdW5kIG1ldGhvZHMKLSAgIGRv
bid0IGV4aXN0LCBzbyB0aGlzIGZ1bmN0aW9uIGp1c3QgcmV0dXJucyAqbWV0aCogdW5jaGFuZ2Vk
LiAgRXhhbXBsZQotICAgdXNhZ2U6OgotCi0gICAgICBmcm9tIHNpeCBpbXBvcnQgZ2V0X3VuYm91
bmRfZnVuY3Rpb24KLQotICAgICAgY2xhc3MgWChvYmplY3QpOgotICAgICAgICAgIGRlZiBtZXRo
b2Qoc2VsZik6Ci0gICAgICAgICAgICAgIHBhc3MKLSAgICAgIG1ldGhvZF9mdW5jdGlvbiA9IGdl
dF91bmJvdW5kX2Z1bmN0aW9uKFgubWV0aG9kKQotCi0KLS4uIGZ1bmN0aW9uOjogZ2V0X21ldGhv
ZF9mdW5jdGlvbihtZXRoKQotCi0gICBHZXQgdGhlIGZ1bmN0aW9uIG91dCBvZiBtZXRob2Qgb2Jq
ZWN0ICptZXRoKi4KLQotCi0uLiBmdW5jdGlvbjo6IGdldF9tZXRob2Rfc2VsZihtZXRoKQotCi0g
ICBHZXQgdGhlIGBgc2VsZmBgIG9mIGJvdW5kIG1ldGhvZCAqbWV0aCouCi0KLQotLi4gZnVuY3Rp
b246OiBnZXRfZnVuY3Rpb25fY2xvc3VyZShmdW5jKQotCi0gICBHZXQgdGhlIGNsb3N1cmUgKGxp
c3Qgb2YgY2VsbHMpIGFzc29jaWF0ZWQgd2l0aCAqZnVuYyouICBUaGlzIGlzIGVxdWl2YWxlbnQK
LSAgIHRvIGBgZnVuYy5fX2Nsb3N1cmVfX2BgIG9uIFB5dGhvbiAyLjYrIGFuZCBgYGZ1bmMuZnVu
Y19jbG9zdXJlYGAgb24gUHl0aG9uCi0gICAyLjUuCi0KLQotLi4gZnVuY3Rpb246OiBnZXRfZnVu
Y3Rpb25fY29kZShmdW5jKQotCi0gICBHZXQgdGhlIGNvZGUgb2JqZWN0IGFzc29jaWF0ZWQgd2l0
aCAqZnVuYyouICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8KLSAgIGBgZnVuYy5fX2NvZGVfX2BgIG9u
IFB5dGhvbiAyLjYrIGFuZCBgYGZ1bmMuZnVuY19jb2RlYGAgb24gUHl0aG9uIDIuNS4KLQotCi0u
LiBmdW5jdGlvbjo6IGdldF9mdW5jdGlvbl9kZWZhdWx0cyhmdW5jKQotCi0gICBHZXQgdGhlIGRl
ZmF1bHRzIHR1cGxlIGFzc29jaWF0ZWQgd2l0aCAqZnVuYyouICBUaGlzIGlzIGVxdWl2YWxlbnQg
dG8KLSAgIGBgZnVuYy5fX2RlZmF1bHRzX19gYCBvbiBQeXRob24gMi42KyBhbmQgYGBmdW5jLmZ1
bmNfZGVmYXVsdHNgYCBvbiBQeXRob24KLSAgIDIuNS4KLQotCi0uLiBmdW5jdGlvbjo6IGdldF9m
dW5jdGlvbl9nbG9iYWxzKGZ1bmMpCi0KLSAgIEdldCB0aGUgZ2xvYmFscyBvZiAqZnVuYyouICBU
aGlzIGlzIGVxdWl2YWxlbnQgdG8gYGBmdW5jLl9fZ2xvYmFsc19fYGAgb24KLSAgIFB5dGhvbiAy
LjYrIGFuZCBgYGZ1bmMuZnVuY19nbG9iYWxzYGAgb24gUHl0aG9uIDIuNS4KLQotCi0uLiBmdW5j
dGlvbjo6IG5leHQoaXQpCi0gICAgICAgICAgICAgIGFkdmFuY2VfaXRlcmF0b3IoaXQpCi0KLSAg
IEdldCB0aGUgbmV4dCBpdGVtIG9mIGl0ZXJhdG9yICppdCouICA6ZXhjOmBweTM6U3RvcEl0ZXJh
dGlvbmAgaXMgcmFpc2VkIGlmCi0gICB0aGUgaXRlcmF0b3IgaXMgZXhoYXVzdGVkLiAgVGhpcyBp
cyBhIHJlcGxhY2VtZW50IGZvciBjYWxsaW5nIGBgaXQubmV4dCgpYGAKLSAgIGluIFB5dGhvbiAy
IGFuZCBgYG5leHQoaXQpYGAgaW4gUHl0aG9uIDMuCi0KLQotLi4gZnVuY3Rpb246OiBjYWxsYWJs
ZShvYmopCi0KLSAgIENoZWNrIGlmICpvYmoqIGNhbiBiZSBjYWxsZWQuICBOb3RlIGBgY2FsbGFi
bGVgYCBoYXMgcmV0dXJuZWQgaW4gUHl0aG9uIDMuMiwKLSAgIHNvIHVzaW5nIHNpeCdzIHZlcnNp
b24gaXMgb25seSBuZWNlc3Nhcnkgd2hlbiBzdXBwb3J0aW5nIFB5dGhvbiAzLjAgb3IgMy4xLgot
Ci0KLS4uIGZ1bmN0aW9uOjogaXRlcmtleXMoZGljdGlvbmFyeSwgKiprd2FyZ3MpCi0KLSAgIFJl
dHVybnMgYW4gaXRlcmF0b3Igb3ZlciAqZGljdGlvbmFyeSpcJ3Mga2V5cy4gVGhpcyByZXBsYWNl
cwotICAgYGBkaWN0aW9uYXJ5Lml0ZXJrZXlzKClgYCBvbiBQeXRob24gMiBhbmQgYGBkaWN0aW9u
YXJ5LmtleXMoKWBgIG9uCi0gICBQeXRob24gMy4gICprd2FyZ3MqIGFyZSBwYXNzZWQgdGhyb3Vn
aCB0byB0aGUgdW5kZXJseWluZyBtZXRob2QuCi0KLQotLi4gZnVuY3Rpb246OiBpdGVydmFsdWVz
KGRpY3Rpb25hcnksICoqa3dhcmdzKQotCi0gICBSZXR1cm5zIGFuIGl0ZXJhdG9yIG92ZXIgKmRp
Y3Rpb25hcnkqXCdzIHZhbHVlcy4gVGhpcyByZXBsYWNlcwotICAgYGBkaWN0aW9uYXJ5Lml0ZXJ2
YWx1ZXMoKWBgIG9uIFB5dGhvbiAyIGFuZCBgYGRpY3Rpb25hcnkudmFsdWVzKClgYCBvbgotICAg
UHl0aG9uIDMuICAqa3dhcmdzKiBhcmUgcGFzc2VkIHRocm91Z2ggdG8gdGhlIHVuZGVybHlpbmcg
bWV0aG9kLgotCi0KLS4uIGZ1bmN0aW9uOjogaXRlcml0ZW1zKGRpY3Rpb25hcnksICoqa3dhcmdz
KQotCi0gICBSZXR1cm5zIGFuIGl0ZXJhdG9yIG92ZXIgKmRpY3Rpb25hcnkqXCdzIGl0ZW1zLiBU
aGlzIHJlcGxhY2VzCi0gICBgYGRpY3Rpb25hcnkuaXRlcml0ZW1zKClgYCBvbiBQeXRob24gMiBh
bmQgYGBkaWN0aW9uYXJ5Lml0ZW1zKClgYCBvbgotICAgUHl0aG9uIDMuICAqa3dhcmdzKiBhcmUg
cGFzc2VkIHRocm91Z2ggdG8gdGhlIHVuZGVybHlpbmcgbWV0aG9kLgotCi0KLS4uIGZ1bmN0aW9u
OjogaXRlcmxpc3RzKGRpY3Rpb25hcnksICoqa3dhcmdzKQotCi0gICBDYWxscyBgYGRpY3Rpb25h
cnkuaXRlcmxpc3RzKClgYCBvbiBQeXRob24gMiBhbmQgYGBkaWN0aW9uYXJ5Lmxpc3RzKClgYCBv
bgotICAgUHl0aG9uIDMuICBObyBidWlsdGluIFB5dGhvbiBtYXBwaW5nIHR5cGUgaGFzIHN1Y2gg
YSBtZXRob2Q7IHRoaXMgbWV0aG9kIGlzCi0gICBpbnRlbmRlZCBmb3IgdXNlIHdpdGggbXVsdGkt
dmFsdWVkIGRpY3Rpb25hcmllcyBsaWtlIGBXZXJremV1ZydzCi0gICA8aHR0cDovL3dlcmt6ZXVn
LnBvY29vLm9yZy9kb2NzL2RhdGFzdHJ1Y3R1cmVzLyN3ZXJremV1Zy5kYXRhc3RydWN0dXJlcy5N
dWx0aURpY3Q+YF8uCi0gICAqa3dhcmdzKiBhcmUgcGFzc2VkIHRocm91Z2ggdG8gdGhlIHVuZGVy
bHlpbmcgbWV0aG9kLgotCi0KLS4uIGZ1bmN0aW9uOjogdmlld2tleXMoZGljdGlvbmFyeSkKLQot
ICAgUmV0dXJuIGEgdmlldyBvdmVyICpkaWN0aW9uYXJ5KlwncyBrZXlzLiBUaGlzIHJlcGxhY2Vz
Ci0gICA6bWV0aDpgcHkyOmRpY3Qudmlld2tleXNgIG9uIFB5dGhvbiAyLjcgYW5kIDptZXRoOmBw
eTM6ZGljdC5rZXlzYCBvbgotICAgUHl0aG9uIDMuCi0KLQotLi4gZnVuY3Rpb246OiB2aWV3dmFs
dWVzKGRpY3Rpb25hcnkpCi0KLSAgIFJldHVybiBhIHZpZXcgb3ZlciAqZGljdGlvbmFyeSpcJ3Mg
dmFsdWVzLiBUaGlzIHJlcGxhY2VzCi0gICA6bWV0aDpgcHkyOmRpY3Qudmlld3ZhbHVlc2Agb24g
UHl0aG9uIDIuNyBhbmQgOm1ldGg6YHB5MzpkaWN0LnZhbHVlc2Agb24KLSAgIFB5dGhvbiAzLgot
Ci0KLS4uIGZ1bmN0aW9uOjogdmlld2l0ZW1zKGRpY3Rpb25hcnkpCi0KLSAgIFJldHVybiBhIHZp
ZXcgb3ZlciAqZGljdGlvbmFyeSpcJ3MgaXRlbXMuIFRoaXMgcmVwbGFjZXMKLSAgIDptZXRoOmBw
eTI6ZGljdC52aWV3aXRlbXNgIG9uIFB5dGhvbiAyLjcgYW5kIDptZXRoOmBweTM6ZGljdC5pdGVt
c2Agb24KLSAgIFB5dGhvbiAzLgotCi0KLS4uIGZ1bmN0aW9uOjogY3JlYXRlX2JvdW5kX21ldGhv
ZChmdW5jLCBvYmopCi0KLSAgIFJldHVybiBhIG1ldGhvZCBvYmplY3Qgd3JhcHBpbmcgKmZ1bmMq
IGFuZCBib3VuZCB0byAqb2JqKi4gIE9uIGJvdGggUHl0aG9uIDIKLSAgIGFuZCAzLCB0aGlzIHdp
bGwgcmV0dXJuIGEgOmZ1bmM6YHB5Mzp0eXBlcy5NZXRob2RUeXBlYCBvYmplY3QuICBUaGUgcmVh
c29uCi0gICB0aGlzIHdyYXBwZXIgZXhpc3RzIGlzIHRoYXQgb24gUHl0aG9uIDIsIHRoZSBgYE1l
dGhvZFR5cGVgYCBjb25zdHJ1Y3RvcgotICAgcmVxdWlyZXMgdGhlICpvYmoqJ3MgY2xhc3MgdG8g
YmUgcGFzc2VkLgotCi0KLS4uIGNsYXNzOjogSXRlcmF0b3IKLQotICAgQSBjbGFzcyBmb3IgbWFr
aW5nIHBvcnRhYmxlIGl0ZXJhdG9ycy4gVGhlIGludGVudGlvbiBpcyB0aGF0IGl0IGJlIHN1YmNs
YXNzZWQKLSAgIGFuZCBzdWJjbGFzc2VzIHByb3ZpZGUgYSBgYF9fbmV4dF9fYGAgbWV0aG9kLiBJ
biBQeXRob24gMiwgOmNsYXNzOmBJdGVyYXRvcmAKLSAgIGhhcyBvbmUgbWV0aG9kOiBgYG5leHRg
YC4gSXQgc2ltcGx5IGRlbGVnYXRlcyB0byBgYF9fbmV4dF9fYGAuIEFuIGFsdGVybmF0ZQotICAg
d2F5IHRvIGRvIHRoaXMgd291bGQgYmUgdG8gc2ltcGx5IGFsaWFzIGBgbmV4dGBgIHRvIGBgX19u
ZXh0X19gYC4gSG93ZXZlciwKLSAgIHRoaXMgaW50ZXJhY3RzIGJhZGx5IHdpdGggc3ViY2xhc3Nl
cyB0aGF0IG92ZXJyaWRlCi0gICBgYF9fbmV4dF9fYGAuIDpjbGFzczpgSXRlcmF0b3JgIGlzIGVt
cHR5IG9uIFB5dGhvbiAzLiAoSW4gZmFjdCwgaXQgaXMganVzdAotICAgYWxpYXNlZCB0byA6Y2xh
c3M6YHB5MzpvYmplY3RgLikKLQotCi0uLiBmdW5jdGlvbjo6IHdyYXBzKHdyYXBwZWQsIGFzc2ln
bmVkPWZ1bmN0b29scy5XUkFQUEVSX0FTU0lHTk1FTlRTLCB1cGRhdGVkPWZ1bmN0b29scy5XUkFQ
UEVSX1VQREFURVMpCi0KLSAgIFRoaXMgaXMgZXhhY3RseSB0aGUgOmZ1bmM6YHB5MzpmdW5jdG9v
bHMud3JhcHNgIGRlY29yYXRvciwgYnV0IGl0IHNldHMgdGhlCi0gICBgYF9fd3JhcHBlZF9fYGAg
YXR0cmlidXRlIG9uIHdoYXQgaXQgZGVjb3JhdGVzIGFzIDpmdW5jOmBweTM6ZnVuY3Rvb2xzLndy
YXBzYAotICAgZG9lcyBvbiBQeXRob24gdmVyc2lvbnMgYWZ0ZXIgMy4yLgotCi0KLVN5bnRheCBj
b21wYXRpYmlsaXR5Ci0+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+PgotCi1UaGVzZSBmdW5jdGlvbnMgc21v
b3RoIG92ZXIgb3BlcmF0aW9ucyB3aGljaCBoYXZlIGRpZmZlcmVudCBzeW50YXhlcyBiZXR3ZWVu
Ci1QeXRob24gMiBhbmQgMy4KLQotCi0uLiBmdW5jdGlvbjo6IGV4ZWNfKGNvZGUsIGdsb2JhbHM9
Tm9uZSwgbG9jYWxzPU5vbmUpCi0KLSAgIEV4ZWN1dGUgKmNvZGUqIGluIHRoZSBzY29wZSBvZiAq
Z2xvYmFscyogYW5kICpsb2NhbHMqLiAgKmNvZGUqIGNhbiBiZSBhCi0gICBzdHJpbmcgb3IgYSBj
b2RlIG9iamVjdC4gIElmICpnbG9iYWxzKiBvciAqbG9jYWxzKiBhcmUgbm90IGdpdmVuLCB0aGV5
IHdpbGwKLSAgIGRlZmF1bHQgdG8gdGhlIHNjb3BlIG9mIHRoZSBjYWxsZXIuICBJZiBqdXN0ICpn
bG9iYWxzKiBpcyBnaXZlbiwgaXQgd2lsbCBhbHNvCi0gICBiZSB1c2VkIGFzICpsb2NhbHMqLgot
Ci0gICAuLiBub3RlOjoKLQotICAgICAgUHl0aG9uIDMncyA6ZnVuYzpgcHkzOmV4ZWNgIGRvZXNu
J3QgdGFrZSBrZXl3b3JkIGFyZ3VtZW50cywgc28gY2FsbGluZwotICAgICAgOmZ1bmM6YGV4ZWNg
IHdpdGggdGhlbSBzaG91bGQgYmUgYXZvaWRlZC4KLQotCi0uLiBmdW5jdGlvbjo6IHByaW50Xygq
YXJncywgKiwgZmlsZT1zeXMuc3Rkb3V0LCBlbmQ9IlxcbiIsIHNlcD0iICIpCi0KLSAgIFByaW50
ICphcmdzKiBpbnRvICpmaWxlKi4gIEVhY2ggYXJndW1lbnQgd2lsbCBiZSBzZXBhcmF0ZWQgd2l0
aCAqc2VwKiBhbmQKLSAgICplbmQqIHdpbGwgYmUgd3JpdHRlbiB0byB0aGUgZmlsZSBhZnRlciB0
aGUgbGFzdCBhcmd1bWVudCBpcyBwcmludGVkLgotCi0gICAuLiBub3RlOjoKLQotICAgICAgSW4g
UHl0aG9uIDIsIHRoaXMgZnVuY3Rpb24gaW1pdGF0ZXMgUHl0aG9uIDMncyA6ZnVuYzpgcHkzOnBy
aW50YCBieSBub3QKLSAgICAgIGhhdmluZyBzb2Z0c3BhY2Ugc3VwcG9ydC4gIElmIHlvdSBkb24n
dCBrbm93IHdoYXQgdGhhdCBpcywgeW91J3JlIHByb2JhYmx5Ci0gICAgICBvay4gOikKLQotCi0u
LiBmdW5jdGlvbjo6IHJhaXNlX2Zyb20oZXhjX3ZhbHVlLCBleGNfdmFsdWVfZnJvbSkKLQotICAg
UmFpc2UgYW4gZXhjZXB0aW9uIGZyb20gYSBjb250ZXh0LiAgT24gUHl0aG9uIDMsIHRoaXMgaXMg
ZXF1aXZhbGVudCB0bwotICAgYGByYWlzZSBleGNfdmFsdWUgZnJvbSBleGNfdmFsdWVfZnJvbWBg
LiAgT24gUHl0aG9uIDIsIHdoaWNoIGRvZXMgbm90IHN1cHBvcnQKLSAgIGV4Y2VwdGlvbiBjaGFp
bmluZywgaXQgaXMgZXF1aXZhbGVudCB0byBgYHJhaXNlIGV4Y192YWx1ZWBgLgotCi0KLS4uIGZ1
bmN0aW9uOjogcmVyYWlzZShleGNfdHlwZSwgZXhjX3ZhbHVlLCBleGNfdHJhY2ViYWNrPU5vbmUp
Ci0KLSAgIFJlcmFpc2UgYW4gZXhjZXB0aW9uLCBwb3NzaWJseSB3aXRoIGEgZGlmZmVyZW50IHRy
YWNlYmFjay4gIEluIHRoZSBzaW1wbGUKLSAgIGNhc2UsIGBgcmVyYWlzZSgqc3lzLmV4Y19pbmZv
KCkpYGAgd2l0aCBhbiBhY3RpdmUgZXhjZXB0aW9uIChpbiBhbiBleGNlcHQKLSAgIGJsb2NrKSBy
ZXJhaXNlcyB0aGUgY3VycmVudCBleGNlcHRpb24gd2l0aCB0aGUgbGFzdCB0cmFjZWJhY2suICBB
IGRpZmZlcmVudAotICAgdHJhY2ViYWNrIGNhbiBiZSBzcGVjaWZpZWQgd2l0aCB0aGUgKmV4Y190
cmFjZWJhY2sqIHBhcmFtZXRlci4gIE5vdGUgdGhhdAotICAgc2luY2UgdGhlIGV4Y2VwdGlvbiBy
ZXJhaXNpbmcgaXMgZG9uZSB3aXRoaW4gdGhlIDpmdW5jOmByZXJhaXNlYCBmdW5jdGlvbiwKLSAg
IFB5dGhvbiB3aWxsIGF0dGFjaCB0aGUgY2FsbCBmcmFtZSBvZiA6ZnVuYzpgcmVyYWlzZWAgdG8g
d2hhdGV2ZXIgdHJhY2ViYWNrIGlzCi0gICByYWlzZWQuCi0KLQotLi4gZnVuY3Rpb246OiB3aXRo
X21ldGFjbGFzcyhtZXRhY2xhc3MsICpiYXNlcykKLQotICAgQ3JlYXRlIGEgbmV3IGNsYXNzIHdp
dGggYmFzZSBjbGFzc2VzICpiYXNlcyogYW5kIG1ldGFjbGFzcyAqbWV0YWNsYXNzKi4gIFRoaXMK
LSAgIGlzIGRlc2lnbmVkIHRvIGJlIHVzZWQgaW4gY2xhc3MgZGVjbGFyYXRpb25zIGxpa2UgdGhp
czogOjoKLQotICAgICAgZnJvbSBzaXggaW1wb3J0IHdpdGhfbWV0YWNsYXNzCi0KLSAgICAgIGNs
YXNzIE1ldGEodHlwZSk6Ci0gICAgICAgICAgcGFzcwotCi0gICAgICBjbGFzcyBCYXNlKG9iamVj
dCk6Ci0gICAgICAgICAgcGFzcwotCi0gICAgICBjbGFzcyBNeUNsYXNzKHdpdGhfbWV0YWNsYXNz
KE1ldGEsIEJhc2UpKToKLSAgICAgICAgICBwYXNzCi0KLSAgIEFub3RoZXIgd2F5IHRvIHNldCBh
IG1ldGFjbGFzcyBvbiBhIGNsYXNzIGlzIHdpdGggdGhlIDpmdW5jOmBhZGRfbWV0YWNsYXNzYAot
ICAgZGVjb3JhdG9yLgotCi0KLS4uIGZ1bmN0aW9uOjogYWRkX21ldGFjbGFzcyhtZXRhY2xhc3Mp
Ci0KLSAgIENsYXNzIGRlY29yYXRvciB0aGF0IHJlcGxhY2VzIGEgbm9ybWFsbHktY29uc3RydWN0
ZWQgY2xhc3Mgd2l0aCBhCi0gICBtZXRhY2xhc3MtY29uc3RydWN0ZWQgb25lLiAgRXhhbXBsZSB1
c2FnZTogOjoKLQotICAgICAgIEBhZGRfbWV0YWNsYXNzKE1ldGEpCi0gICAgICAgY2xhc3MgTXlD
bGFzcyhvYmplY3QpOgotICAgICAgICAgICBwYXNzCi0KLSAgIFRoYXQgY29kZSBwcm9kdWNlcyBh
IGNsYXNzIGVxdWl2YWxlbnQgdG8gOjoKLQotICAgICAgIGNsYXNzIE15Q2xhc3Mob2JqZWN0LCBt
ZXRhY2xhc3M9TWV0YSk6Ci0gICAgICAgICAgIHBhc3MKLQotICAgb24gUHl0aG9uIDMgb3IgOjoK
LQotICAgICAgIGNsYXNzIE15Q2xhc3Mob2JqZWN0KToKLSAgICAgICAgICAgX19tZXRhY2xhc3Nf
XyA9IE15TWV0YQotCi0gICBvbiBQeXRob24gMi4KLQotICAgTm90ZSB0aGF0IGNsYXNzIGRlY29y
YXRvcnMgcmVxdWlyZSBQeXRob24gMi42LiBIb3dldmVyLCB0aGUgZWZmZWN0IG9mIHRoZQotICAg
ZGVjb3JhdG9yIGNhbiBiZSBlbXVsYXRlZCBvbiBQeXRob24gMi41IGxpa2Ugc286OgotCi0gICAg
ICAgY2xhc3MgTXlDbGFzcyhvYmplY3QpOgotICAgICAgICAgICBwYXNzCi0gICAgICAgTXlDbGFz
cyA9IGFkZF9tZXRhY2xhc3MoTWV0YSkoTXlDbGFzcykKLQotCi1CaW5hcnkgYW5kIHRleHQgZGF0
YQotPj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4KLQotUHl0aG9uIDMgZW5mb3JjZXMgdGhlIGRpc3RpbmN0
aW9uIGJldHdlZW4gYnl0ZSBzdHJpbmdzIGFuZCB0ZXh0IHN0cmluZ3MgZmFyIG1vcmUKLXJpZ29y
aW91c2x5IHRoYW4gUHl0aG9uIDIgZG9lczsgYmluYXJ5IGRhdGEgY2Fubm90IGJlIGF1dG9tYXRp
Y2FsbHkgY29lcmNlZCB0bwotb3IgZnJvbSB0ZXh0IGRhdGEuICBzaXggcHJvdmlkZXMgc2V2ZXJh
bCBmdW5jdGlvbnMgdG8gYXNzaXN0IGluIGNsYXNzaWZ5aW5nCi1zdHJpbmcgZGF0YSBpbiBhbGwg
UHl0aG9uIHZlcnNpb25zLgotCi0KLS4uIGZ1bmN0aW9uOjogYihkYXRhKQotCi0gICBBICJmYWtl
IiBieXRlcyBsaXRlcmFsLiAgKmRhdGEqIHNob3VsZCBhbHdheXMgYmUgYSBub3JtYWwgc3RyaW5n
IGxpdGVyYWwuICBJbgotICAgUHl0aG9uIDIsIDpmdW5jOmBiYCByZXR1cm5zIGEgOC1iaXQgc3Ry
aW5nLiAgSW4gUHl0aG9uIDMsICpkYXRhKiBpcyBlbmNvZGVkCi0gICB3aXRoIHRoZSBsYXRpbi0x
IGVuY29kaW5nIHRvIGJ5dGVzLgotCi0KLSAgIC4uIG5vdGU6OgotCi0gICAgICBTaW5jZSBhbGwg
UHl0aG9uIHZlcnNpb25zIDIuNiBhbmQgYWZ0ZXIgc3VwcG9ydCB0aGUgYGBiYGAgcHJlZml4LAot
ICAgICAgOmZ1bmM6YGJgLCBjb2RlIHdpdGhvdXQgMi41IHN1cHBvcnQgZG9lc24ndCBuZWVkIDpm
dW5jOmBiYC4KLQotCi0uLiBmdW5jdGlvbjo6IHUodGV4dCkKLQotICAgQSAiZmFrZSIgdW5pY29k
ZSBsaXRlcmFsLiAgKnRleHQqIHNob3VsZCBhbHdheXMgYmUgYSBub3JtYWwgc3RyaW5nIGxpdGVy
YWwuCi0gICBJbiBQeXRob24gMiwgOmZ1bmM6YHVgIHJldHVybnMgdW5pY29kZSwgYW5kIGluIFB5
dGhvbiAzLCBhIHN0cmluZy4gIEFsc28sIGluCi0gICBQeXRob24gMiwgdGhlIHN0cmluZyBpcyBk
ZWNvZGVkIHdpdGggdGhlIGBgdW5pY29kZS1lc2NhcGVgYCBjb2RlYywgd2hpY2gKLSAgIGFsbG93
cyB1bmljb2RlIGVzY2FwZXMgdG8gYmUgdXNlZCBpbiBpdC4KLQotCi0gICAuLiBub3RlOjoKLQot
ICAgICAgSW4gUHl0aG9uIDMuMywgdGhlIGBgdWBgIHByZWZpeCBoYXMgYmVlbiByZWludHJvZHVj
ZWQuIENvZGUgdGhhdCBvbmx5Ci0gICAgICBzdXBwb3J0cyBQeXRob24gMyB2ZXJzaW9ucyBncmVh
dGVyIHRoYW4gMy4zIHRodXMgZG9lcyBub3QgbmVlZAotICAgICAgOmZ1bmM6YHVgLgotCi0gICAu
LiBub3RlOjoKLQotICAgICAgT24gUHl0aG9uIDIsIDpmdW5jOmB1YCBkb2Vzbid0IGtub3cgd2hh
dCB0aGUgZW5jb2Rpbmcgb2YgdGhlIGxpdGVyYWwKLSAgICAgIGlzLiBFYWNoIGJ5dGUgaXMgY29u
dmVydGVkIGRpcmVjdGx5IHRvIHRoZSB1bmljb2RlIGNvZGVwb2ludCBvZiB0aGUgc2FtZQotICAg
ICAgdmFsdWUuIEJlY2F1c2Ugb2YgdGhpcywgaXQncyBvbmx5IHNhZmUgdG8gdXNlIDpmdW5jOmB1
YCB3aXRoIHN0cmluZ3Mgb2YKLSAgICAgIEFTQ0lJIGRhdGEuCi0KLQotLi4gZnVuY3Rpb246OiB1
bmljaHIoYykKLQotICAgUmV0dXJuIHRoZSAoVW5pY29kZSkgc3RyaW5nIHJlcHJlc2VudGluZyB0
aGUgY29kZXBvaW50ICpjKi4gIFRoaXMgaXMKLSAgIGVxdWl2YWxlbnQgdG8gOmZ1bmM6YHB5Mjp1
bmljaHJgIG9uIFB5dGhvbiAyIGFuZCA6ZnVuYzpgcHkzOmNocmAgb24gUHl0aG9uIDMuCi0KLQot
Li4gZnVuY3Rpb246OiBpbnQyYnl0ZShpKQotCi0gICBDb252ZXJ0cyAqaSogdG8gYSBieXRlLiAg
KmkqIG11c3QgYmUgaW4gYGByYW5nZSgwLCAyNTYpYGAuICBUaGlzIGlzCi0gICBlcXVpdmFsZW50
IHRvIDpmdW5jOmBweTI6Y2hyYCBpbiBQeXRob24gMiBhbmQgYGBieXRlcygoaSwpKWBgIGluIFB5
dGhvbiAzLgotCi0KLS4uIGZ1bmN0aW9uOjogYnl0ZTJpbnQoYnMpCi0KLSAgIENvbnZlcnRzIHRo
ZSBmaXJzdCBieXRlIG9mICpicyogdG8gYW4gaW50ZWdlci4gIFRoaXMgaXMgZXF1aXZhbGVudCB0
bwotICAgYGBvcmQoYnNbMF0pYGAgb24gUHl0aG9uIDIgYW5kIGBgYnNbMF1gYCBvbiBQeXRob24g
My4KLQotCi0uLiBmdW5jdGlvbjo6IGluZGV4Ynl0ZXMoYnVmLCBpKQotCi0gICBSZXR1cm4gdGhl
IGJ5dGUgYXQgaW5kZXggKmkqIG9mICpidWYqIGFzIGFuIGludGVnZXIuICBUaGlzIGlzIGVxdWl2
YWxlbnQgdG8KLSAgIGluZGV4aW5nIGEgYnl0ZXMgb2JqZWN0IGluIFB5dGhvbiAzLgotCi0KLS4u
IGZ1bmN0aW9uOjogaXRlcmJ5dGVzKGJ1ZikKLQotICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIg
Ynl0ZXMgaW4gKmJ1ZiogYXMgaW50ZWdlcnMuICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8KLSAgIGEg
Ynl0ZXMgb2JqZWN0IGl0ZXJhdG9yIGluIFB5dGhvbiAzLgotCi0KLS4uIGRhdGE6OiBTdHJpbmdJ
TwotCi0gICBUaGlzIGlzIGFuIGZha2UgZmlsZSBvYmplY3QgZm9yIHRleHR1YWwgZGF0YS4gIEl0
J3MgYW4gYWxpYXMgZm9yCi0gICA6Y2xhc3M6YHB5MjpTdHJpbmdJTy5TdHJpbmdJT2AgaW4gUHl0
aG9uIDIgYW5kIDpjbGFzczpgcHkzOmlvLlN0cmluZ0lPYCBpbgotICAgUHl0aG9uIDMuCi0KLQot
Li4gZGF0YTo6IEJ5dGVzSU8KLQotICAgVGhpcyBpcyBhIGZha2UgZmlsZSBvYmplY3QgZm9yIGJp
bmFyeSBkYXRhLiAgSW4gUHl0aG9uIDIsIGl0J3MgYW4gYWxpYXMgZm9yCi0gICA6Y2xhc3M6YHB5
MjpTdHJpbmdJTy5TdHJpbmdJT2AsIGJ1dCBpbiBQeXRob24gMywgaXQncyBhbiBhbGlhcyBmb3IK
LSAgIDpjbGFzczpgcHkzOmlvLkJ5dGVzSU9gLgotCi0KLVJlbmFtZWQgbW9kdWxlcyBhbmQgYXR0
cmlidXRlcyBjb21wYXRpYmlsaXR5Ci0+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+
Pj4+Pj4+Pj4+PgotCi0uLiBtb2R1bGU6OiBzaXgubW92ZXMKLSAgIDpzeW5vcHNpczogUmVuYW1l
ZCBtb2R1bGVzIGFuZCBhdHRyaWJ1dGVzIGNvbXBhdGliaWxpdHkKLQotUHl0aG9uIDMgcmVvcmdh
bml6ZWQgdGhlIHN0YW5kYXJkIGxpYnJhcnkgYW5kIG1vdmVkIHNldmVyYWwgZnVuY3Rpb25zIHRv
Ci1kaWZmZXJlbnQgbW9kdWxlcy4gIFNpeCBwcm92aWRlcyBhIGNvbnNpc3RlbnQgaW50ZXJmYWNl
IHRvIHRoZW0gdGhyb3VnaCB0aGUgZmFrZQotOm1vZDpgc2l4Lm1vdmVzYCBtb2R1bGUuICBGb3Ig
ZXhhbXBsZSwgdG8gbG9hZCB0aGUgbW9kdWxlIGZvciBwYXJzaW5nIEhUTUwgb24KLVB5dGhvbiAy
IG9yIDMsIHdyaXRlOjoKLQotICAgZnJvbSBzaXgubW92ZXMgaW1wb3J0IGh0bWxfcGFyc2VyCi0K
LVNpbWlsYXJseSwgdG8gZ2V0IHRoZSBmdW5jdGlvbiB0byByZWxvYWQgbW9kdWxlcywgd2hpY2gg
d2FzIG1vdmVkIGZyb20gdGhlCi1idWlsdGluIG1vZHVsZSB0byB0aGUgYGBpbXBgYCBtb2R1bGUs
IHVzZTo6Ci0KLSAgIGZyb20gc2l4Lm1vdmVzIGltcG9ydCByZWxvYWRfbW9kdWxlCi0KLUZvciB0
aGUgbW9zdCBwYXJ0LCA6bW9kOmBzaXgubW92ZXNgIGFsaWFzZXMgYXJlIHRoZSBuYW1lcyBvZiB0
aGUgbW9kdWxlcyBpbgotUHl0aG9uIDMuICBXaGVuIHRoZSBuZXcgUHl0aG9uIDMgbmFtZSBpcyBh
IHBhY2thZ2UsIHRoZSBjb21wb25lbnRzIG9mIHRoZSBuYW1lCi1hcmUgc2VwYXJhdGVkIGJ5IHVu
ZGVyc2NvcmVzLiAgRm9yIGV4YW1wbGUsIGBgaHRtbC5wYXJzZXJgYCBiZWNvbWVzCi1gYGh0bWxf
cGFyc2VyYGAuICBJbiBzb21lIGNhc2VzIHdoZXJlIHNldmVyYWwgbW9kdWxlcyBoYXZlIGJlZW4g
Y29tYmluZWQsIHRoZQotUHl0aG9uIDIgbmFtZSBpcyByZXRhaW5lZC4gIFRoaXMgaXMgc28gdGhl
IGFwcHJvcHJpYXRlIG1vZHVsZXMgY2FuIGJlIGZvdW5kIHdoZW4KLXJ1bm5pbmcgb24gUHl0aG9u
IDIuICBGb3IgZXhhbXBsZSwgYGBCYXNlSFRUUFNlcnZlcmBgIHdoaWNoIGlzIGluCi1gYGh0dHAu
c2VydmVyYGAgaW4gUHl0aG9uIDMgaXMgYWxpYXNlZCBhcyBgYEJhc2VIVFRQU2VydmVyYGAuCi0K
LVNvbWUgbW9kdWxlcyB3aGljaCBoYWQgdHdvIGltcGxlbWVudGF0aW9ucyBoYXZlIGJlZW4gbWVy
Z2VkIGluIFB5dGhvbiAzLiAgRm9yCi1leGFtcGxlLCBgYGNQaWNrbGVgYCBubyBsb25nZXIgZXhp
c3RzIGluIFB5dGhvbiAzOyBpdCB3YXMgbWVyZ2VkIHdpdGgKLWBgcGlja2xlYGAuICBJbiB0aGVz
ZSBjYXNlcywgZmV0Y2hpbmcgdGhlIGZhc3QgdmVyc2lvbiB3aWxsIGxvYWQgdGhlIGZhc3Qgb25l
IG9uCi1QeXRob24gMiBhbmQgdGhlIG1lcmdlZCBtb2R1bGUgaW4gUHl0aG9uIDMuCi0KLVRoZSA6
bW9kOmBweTI6dXJsbGliYCwgOm1vZDpgcHkyOnVybGxpYjJgLCBhbmQgOm1vZDpgcHkyOnVybHBh
cnNlYCBtb2R1bGVzIGhhdmUKLWJlZW4gY29tYmluZWQgaW4gdGhlIDptb2Q6YHB5Mzp1cmxsaWJg
IHBhY2thZ2UgaW4gUHl0aG9uIDMuICBUaGUKLTptb2Q6YHNpeC5tb3Zlcy51cmxsaWJgIHBhY2th
Z2UgaXMgYSB2ZXJzaW9uLWluZGVwZW5kZW50IGxvY2F0aW9uIGZvciB0aGlzCi1mdW5jdGlvbmFs
aXR5OyBpdHMgc3RydWN0dXJlIG1pbWljcyB0aGUgc3RydWN0dXJlIG9mIHRoZSBQeXRob24gMwot
Om1vZDpgcHkzOnVybGxpYmAgcGFja2FnZS4KLQotLi4gbm90ZTo6Ci0KLSAgIEluIG9yZGVyIHRv
IG1ha2UgaW1wb3J0cyBvZiB0aGUgZm9ybTo6Ci0KLSAgICAgZnJvbSBzaXgubW92ZXMuY1BpY2ts
ZSBpbXBvcnQgbG9hZHMKLQotICAgd29yaywgc2l4IHBsYWNlcyBzcGVjaWFsIHByb3h5IG9iamVj
dHMgaW4gaW4gOmRhdGE6YHB5MzpzeXMubW9kdWxlc2AuIFRoZXNlCi0gICBwcm94aWVzIGxhemls
eSBsb2FkIHRoZSB1bmRlcmx5aW5nIG1vZHVsZSB3aGVuIGFuIGF0dHJpYnV0ZSBpcyBmZXRjaGVk
LiBUaGlzCi0gICB3aWxsIGZhaWwgaWYgdGhlIHVuZGVybHlpbmcgbW9kdWxlIGlzIG5vdCBhdmFp
bGFibGUgaW4gdGhlIFB5dGhvbgotICAgaW50ZXJwcmV0ZXIuIEZvciBleGFtcGxlLCBgYHN5cy5t
b2R1bGVzWyJzaXgubW92ZXMud2lucmVnIl0uTG9hZEtleWBgIHdvdWxkCi0gICBmYWlsIG9uIGFu
eSBub24tV2luZG93cyBwbGF0Zm9ybS4gVW5mb3J0dW5hdGVseSwgc29tZSBhcHBsaWNhdGlvbnMg
dHJ5IHRvCi0gICBsb2FkIGF0dHJpYnV0ZXMgb24gZXZlcnkgbW9kdWxlIGluIDpkYXRhOmBweTM6
c3lzLm1vZHVsZXNgLiBzaXggbWl0aWdhdGVzCi0gICB0aGlzIHByb2JsZW0gZm9yIHNvbWUgYXBw
bGljYXRpb25zIGJ5IHByZXRlbmRpbmcgYXR0cmlidXRlcyBvbiB1bmltcG9ydGFibGUKLSAgIG1v
ZHVsZXMgZG9uJ3QgZXhpc3QuIFRoaXMgaGFjayBkb2Vzbid0IHdvcmsgaW4gZXZlcnkgY2FzZSwg
dGhvdWdoLiBJZiB5b3UgYXJlCi0gICBlbmNvdW50ZXJpbmcgcHJvYmxlbXMgd2l0aCB0aGUgbGF6
eSBtb2R1bGVzIGFuZCBkb24ndCB1c2UgYW55IGZyb20gaW1wb3J0cwotICAgZGlyZWN0bHkgZnJv
bSBgYHNpeC5tb3Zlc2BgIG1vZHVsZXMsIHlvdSBjYW4gd29ya2Fyb3VuZCB0aGUgaXNzdWUgYnkg
cmVtb3ZpbmcKLSAgIHRoZSBzaXggcHJveHkgbW9kdWxlczo6Ci0KLSAgICAgZCA9IFtuYW1lIGZv
ciBuYW1lIGluIHN5cy5tb2R1bGVzIGlmIG5hbWUuc3RhcnRzd2l0aCgic2l4Lm1vdmVzLiIpXQot
ICAgICBmb3IgbmFtZSBpbiBkOgotICAgICAgICAgZGVsIHN5cy5tb2R1bGVzW25hbWVdCi0KLVN1
cHBvcnRlZCByZW5hbWVzOgotCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSsKLXwgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICB8IFB5dGhvbiAy
IG5hbWUgICAgICAgICAgICAgICAgICAgICAgIHwgUHl0aG9uIDMgbmFtZSAgICAgICAgICAgICAg
ICAgICAgICAgfAotKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0rCi18IGBgYnVpbHRpbnNgYCAgICAgICAgICAgICAgICAgfCA6bW9kOmBweTI6X19idWls
dGluX19gICAgICAgICAgICAgICB8IDptb2Q6YHB5MzpidWlsdGluc2AgICAgICAgICAgICAgICAg
IHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwot
fCBgYGNvbmZpZ3BhcnNlcmBgICAgICAgICAgICAgIHwgOm1vZDpgcHkyOkNvbmZpZ1BhcnNlcmAg
ICAgICAgICAgICAgfCA6bW9kOmBweTM6Y29uZmlncGFyc2VyYCAgICAgICAgICAgICB8Ci0rLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGBjb3B5
cmVnYGAgICAgICAgICAgICAgICAgICB8IDptb2Q6YHB5Mjpjb3B5X3JlZ2AgICAgICAgICAgICAg
ICAgIHwgOm1vZDpgcHkzOmNvcHlyZWdgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgY1BpY2tsZWBgICAg
ICAgICAgICAgICAgICAgfCA6bW9kOmBweTI6Y1BpY2tsZWAgICAgICAgICAgICAgICAgICB8IDpt
b2Q6YHB5MzpwaWNrbGVgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYGNTdHJpbmdJT2BgICAgICAgICAg
ICAgICAgIHwgOmZ1bmM6YHB5MjpjU3RyaW5nSU8uU3RyaW5nSU9gICAgICAgfCA6Y2xhc3M6YHB5
Mzppby5TdHJpbmdJT2AgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGBkYm1fZ251YGAgICAgICAgICAgICAgICAgICB8
IDpmdW5jOmBweTI6Z2RibWAgICAgICAgICAgICAgICAgICAgIHwgOmNsYXNzOmBweTM6ZGJtLmdu
dWAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0rCi18IGBgX2R1bW15X3RocmVhZGBgICAgICAgICAgICAgfCA6bW9kOmBw
eTI6ZHVtbXlfdGhyZWFkYCAgICAgICAgICAgICB8IDptb2Q6YHB5MzpfZHVtbXlfdGhyZWFkYCAg
ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tKwotfCBgYGVtYWlsX21pbWVfbXVsdGlwYXJ0YGAgICAgIHwgOm1vZDpgcHkyOmVtYWls
Lk1JTUVNdWx0aXBhcnRgICAgICAgfCA6bW9kOmBweTM6ZW1haWwubWltZS5tdWx0aXBhcnRgICAg
ICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsK
LXwgYGBlbWFpbF9taW1lX25vbm11bHRpcGFydGBgICB8IDptb2Q6YHB5MjplbWFpbC5NSU1FTm9u
TXVsdGlwYXJ0YCAgIHwgOm1vZDpgcHkzOmVtYWlsLm1pbWUubm9ubXVsdGlwYXJ0YCAgfAotKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgZW1h
aWxfbWltZV90ZXh0YGAgICAgICAgICAgfCA6bW9kOmBweTI6ZW1haWwuTUlNRVRleHRgICAgICAg
ICAgICB8IDptb2Q6YHB5MzplbWFpbC5taW1lLnRleHRgICAgICAgICAgIHwKLSstLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYGVtYWlsX21pbWVf
YmFzZWBgICAgICAgICAgIHwgOm1vZDpgcHkyOmVtYWlsLk1JTUVCYXNlYCAgICAgICAgICAgfCA6
bW9kOmBweTM6ZW1haWwubWltZS5iYXNlYCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGBmaWx0ZXJgYCAgICAgICAgICAg
ICAgICAgICB8IDpmdW5jOmBweTI6aXRlcnRvb2xzLmlmaWx0ZXJgICAgICAgIHwgOmZ1bmM6YHB5
MzpmaWx0ZXJgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgZmlsdGVyZmFsc2VgYCAgICAgICAgICAgICAg
fCA6ZnVuYzpgcHkyOml0ZXJ0b29scy5pZmlsdGVyZmFsc2VgICB8IDpmdW5jOmBweTM6aXRlcnRv
b2xzLmZpbHRlcmZhbHNlYCAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKwotfCBgYGh0dHBfY29va2llamFyYGAgICAgICAgICAgIHwgOm1vZDpg
cHkyOmNvb2tpZWxpYmAgICAgICAgICAgICAgICAgfCA6bW9kOmBweTM6aHR0cC5jb29raWVqYXJg
ICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSsKLXwgYGBodHRwX2Nvb2tpZXNgYCAgICAgICAgICAgICB8IDptb2Q6YHB5MjpDb29r
aWVgICAgICAgICAgICAgICAgICAgIHwgOm1vZDpgcHkzOmh0dHAuY29va2llc2AgICAgICAgICAg
ICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r
Ci18IGBgaHRtbF9lbnRpdGllc2BgICAgICAgICAgICAgfCA6bW9kOmBweTI6aHRtbGVudGl0eWRl
ZnNgICAgICAgICAgICB8IDptb2Q6YHB5MzpodG1sLmVudGl0aWVzYCAgICAgICAgICAgIHwKLSst
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYGh0
bWxfcGFyc2VyYGAgICAgICAgICAgICAgIHwgOm1vZDpgcHkyOkhUTUxQYXJzZXJgICAgICAgICAg
ICAgICAgfCA6bW9kOmBweTM6aHRtbC5wYXJzZXJgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGBodHRwX2NsaWVu
dGBgICAgICAgICAgICAgICB8IDptb2Q6YHB5MjpodHRwbGliYCAgICAgICAgICAgICAgICAgIHwg
Om1vZDpgcHkzOmh0dHAuY2xpZW50YCAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgQmFzZUhUVFBTZXJ2ZXJgYCAg
ICAgICAgICAgfCA6bW9kOmBweTI6QmFzZUhUVFBTZXJ2ZXJgICAgICAgICAgICB8IDptb2Q6YHB5
MzpodHRwLnNlcnZlcmAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYENHSUhUVFBTZXJ2ZXJgYCAgICAgICAgICAg
IHwgOm1vZDpgcHkyOkNHSUhUVFBTZXJ2ZXJgICAgICAgICAgICAgfCA6bW9kOmBweTM6aHR0cC5z
ZXJ2ZXJgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSsKLXwgYGBTaW1wbGVIVFRQU2VydmVyYGAgICAgICAgICB8IDptb2Q6
YHB5MjpTaW1wbGVIVFRQU2VydmVyYCAgICAgICAgIHwgOm1vZDpgcHkzOmh0dHAuc2VydmVyYCAg
ICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0rCi18IGBgaW5wdXRgYCAgICAgICAgICAgICAgICAgICAgfCA6ZnVuYzpgcHkyOnJh
d19pbnB1dGAgICAgICAgICAgICAgICB8IDpmdW5jOmBweTM6aW5wdXRgICAgICAgICAgICAgICAg
ICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
KwotfCBgYGludGVybmBgICAgICAgICAgICAgICAgICAgIHwgOmZ1bmM6YHB5MjppbnRlcm5gICAg
ICAgICAgICAgICAgICAgfCA6ZnVuYzpgcHkzOnN5cy5pbnRlcm5gICAgICAgICAgICAgICB8Ci0r
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGBt
YXBgYCAgICAgICAgICAgICAgICAgICAgICB8IDpmdW5jOmBweTI6aXRlcnRvb2xzLmltYXBgICAg
ICAgICAgIHwgOmZ1bmM6YHB5MzptYXBgICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgcXVldWVgYCAg
ICAgICAgICAgICAgICAgICAgfCA6bW9kOmBweTI6UXVldWVgICAgICAgICAgICAgICAgICAgICB8
IDptb2Q6YHB5MzpxdWV1ZWAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHJhbmdlYGAgICAgICAgICAg
ICAgICAgICAgIHwgOmZ1bmM6YHB5Mjp4cmFuZ2VgICAgICAgICAgICAgICAgICAgfCA6ZnVuYzpg
cHkzOnJhbmdlYCAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGByZWR1Y2VgYCAgICAgICAgICAgICAgICAg
ICB8IDpmdW5jOmBweTI6cmVkdWNlYCAgICAgICAgICAgICAgICAgIHwgOmZ1bmM6YHB5MzpmdW5j
dG9vbHMucmVkdWNlYCAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgcmVsb2FkX21vZHVsZWBgICAgICAgICAgICAgfCA6ZnVu
YzpgcHkyOnJlbG9hZGAgICAgICAgICAgICAgICAgICB8IDpmdW5jOmBweTM6aW1wLnJlbG9hZGAg
ICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKwotfCBgYHJlcHJsaWJgYCAgICAgICAgICAgICAgICAgIHwgOm1vZDpgcHkyOnJl
cHJgICAgICAgICAgICAgICAgICAgICAgfCA6bW9kOmBweTM6cmVwcmxpYmAgICAgICAgICAgICAg
ICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSsKLXwgYGBzaGxleF9xdW90ZWBgICAgICAgICAgICAgICB8IDptb2Q6YHB5MjpwaXBlcy5xdW90
ZWAgICAgICAgICAgICAgIHwgOm1vZDpgcHkzOnNobGV4LnF1b3RlYCAgICAgICAgICAgICAgfAot
Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBg
c29ja2V0c2VydmVyYGAgICAgICAgICAgICAgfCA6bW9kOmBweTI6U29ja2V0U2VydmVyYCAgICAg
ICAgICAgICB8IDptb2Q6YHB5Mzpzb2NrZXRzZXJ2ZXJgICAgICAgICAgICAgIHwKLSstLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYF90aHJlYWRg
YCAgICAgICAgICAgICAgICAgIHwgOm1vZDpgcHkyOnRocmVhZGAgICAgICAgICAgICAgICAgICAg
fCA6bW9kOmBweTM6X3RocmVhZGAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGB0a2ludGVyYGAgICAgICAg
ICAgICAgICAgICB8IDptb2Q6YHB5MjpUa2ludGVyYCAgICAgICAgICAgICAgICAgIHwgOm1vZDpg
cHkzOnRraW50ZXJgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgdGtpbnRlcl9kaWFsb2dgYCAgICAgICAg
ICAgfCA6bW9kOmBweTI6RGlhbG9nYCAgICAgICAgICAgICAgICAgICB8IDptb2Q6YHB5Mzp0a2lu
dGVyLmRpYWxvZ2AgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHRraW50ZXJfZmlsZWRpYWxvZ2BgICAgICAgIHwgOm1v
ZDpgcHkyOkZpbGVEaWFsb2dgICAgICAgICAgICAgICAgfCA6bW9kOmBweTM6dGtpbnRlci5GaWxl
RGlhbG9nYCAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSsKLXwgYGB0a2ludGVyX3Njcm9sbGVkdGV4dGBgICAgICB8IDptb2Q6YHB5MjpT
Y3JvbGxlZFRleHRgICAgICAgICAgICAgIHwgOm1vZDpgcHkzOnRraW50ZXIuc2Nyb2xsZWR0ZXh0
YCAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0rCi18IGBgdGtpbnRlcl9zaW1wbGVkaWFsb2dgYCAgICAgfCA6bW9kOmBweTI6U2ltcGxlRGlh
bG9nYCAgICAgICAgICAgICB8IDptb2Q6YHB5Mzp0a2ludGVyLnNpbXBsZWRpYWxvZ2AgICAgIHwK
LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBg
YHRraW50ZXJfdHRrYGAgICAgICAgICAgICAgIHwgOm1vZDpgcHkyOnR0a2AgICAgICAgICAgICAg
ICAgICAgICAgfCA6bW9kOmBweTM6dGtpbnRlci50dGtgICAgICAgICAgICAgICB8Ci0rLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGB0a2ludGVy
X3RpeGBgICAgICAgICAgICAgICB8IDptb2Q6YHB5MjpUaXhgICAgICAgICAgICAgICAgICAgICAg
IHwgOm1vZDpgcHkzOnRraW50ZXIudGl4YCAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgdGtpbnRlcl9jb25zdGFu
dHNgYCAgICAgICAgfCA6bW9kOmBweTI6VGtjb25zdGFudHNgICAgICAgICAgICAgICB8IDptb2Q6
YHB5Mzp0a2ludGVyLmNvbnN0YW50c2AgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHRraW50ZXJfZG5kYGAgICAgICAgICAg
ICAgIHwgOm1vZDpgcHkyOlRrZG5kYCAgICAgICAgICAgICAgICAgICAgfCA6bW9kOmBweTM6dGtp
bnRlci5kbmRgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGB0a2ludGVyX2NvbG9yY2hvb3NlcmBgICAgICB8IDpt
b2Q6YHB5Mjp0a0NvbG9yQ2hvb3NlcmAgICAgICAgICAgIHwgOm1vZDpgcHkzOnRraW50ZXIuY29s
b3JjaG9vc2VyYCAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0rCi18IGBgdGtpbnRlcl9jb21tb25kaWFsb2dgYCAgICAgfCA6bW9kOmBweTI6
dGtDb21tb25EaWFsb2dgICAgICAgICAgICB8IDptb2Q6YHB5Mzp0a2ludGVyLmNvbW1vbmRpYWxv
Z2AgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKwotfCBgYHRraW50ZXJfdGtmaWxlZGlhbG9nYGAgICAgIHwgOm1vZDpgcHkyOnRrRmlsZURp
YWxvZ2AgICAgICAgICAgICAgfCA6bW9kOmBweTM6dGtpbnRlci5maWxlZGlhbG9nYCAgICAgICB8
Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwg
YGB0a2ludGVyX2ZvbnRgYCAgICAgICAgICAgICB8IDptb2Q6YHB5Mjp0a0ZvbnRgICAgICAgICAg
ICAgICAgICAgIHwgOm1vZDpgcHkzOnRraW50ZXIuZm9udGAgICAgICAgICAgICAgfAotKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgdGtpbnRl
cl9tZXNzYWdlYm94YGAgICAgICAgfCA6bW9kOmBweTI6dGtNZXNzYWdlQm94YCAgICAgICAgICAg
ICB8IDptb2Q6YHB5Mzp0a2ludGVyLm1lc3NhZ2Vib3hgICAgICAgIHwKLSstLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHRraW50ZXJfdGtzaW1w
bGVkaWFsb2dgYCAgIHwgOm1vZDpgcHkyOnRrU2ltcGxlRGlhbG9nYCAgICAgICAgICAgfCA6bW9k
OmBweTM6dGtpbnRlci5zaW1wbGVkaWFsb2dgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGB1cmxsaWIucGFyc2VgYCAgICAgICAg
ICAgICB8IFNlZSA6bW9kOmBzaXgubW92ZXMudXJsbGliLnBhcnNlYCAgIHwgOm1vZDpgcHkzOnVy
bGxpYi5wYXJzZWAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgdXJsbGliLmVycm9yYGAgICAgICAgICAgICAgfCBT
ZWUgOm1vZDpgc2l4Lm1vdmVzLnVybGxpYi5lcnJvcmAgICB8IDptb2Q6YHB5Mzp1cmxsaWIuZXJy
b3JgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tKwotfCBgYHVybGxpYi5yZXF1ZXN0YGAgICAgICAgICAgIHwgU2VlIDptb2Q6
YHNpeC5tb3Zlcy51cmxsaWIucmVxdWVzdGAgfCA6bW9kOmBweTM6dXJsbGliLnJlcXVlc3RgICAg
ICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSsKLXwgYGB1cmxsaWIucmVzcG9uc2VgYCAgICAgICAgICB8IFNlZSA6bW9kOmBzaXgubW92
ZXMudXJsbGliLnJlc3BvbnNlYHwgOm1vZDpgcHkzOnVybGxpYi5yZXNwb25zZWAgICAgICAgICAg
fAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18
IGBgdXJsbGliLnJvYm90cGFyc2VyYGAgICAgICAgfCA6bW9kOmBweTI6cm9ib3RwYXJzZXJgICAg
ICAgICAgICAgICB8IDptb2Q6YHB5Mzp1cmxsaWIucm9ib3RwYXJzZXJgICAgICAgIHwKLSstLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHVybGxp
Yl9yb2JvdHBhcnNlcmBgICAgICAgIHwgOm1vZDpgcHkyOnJvYm90cGFyc2VyYCAgICAgICAgICAg
ICAgfCA6bW9kOmBweTM6dXJsbGliLnJvYm90cGFyc2VyYCAgICAgICB8Ci0rLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGBVc2VyRGljdGBgICAg
ICAgICAgICAgICAgICB8IDpjbGFzczpgcHkyOlVzZXJEaWN0LlVzZXJEaWN0YCAgICAgIHwgOmNs
YXNzOmBweTM6Y29sbGVjdGlvbnMuVXNlckRpY3RgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgVXNlckxpc3RgYCAgICAgICAgICAg
ICAgICAgfCA6Y2xhc3M6YHB5MjpVc2VyTGlzdC5Vc2VyTGlzdGAgICAgICB8IDpjbGFzczpgcHkz
OmNvbGxlY3Rpb25zLlVzZXJMaXN0YCAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYFVzZXJTdHJpbmdgYCAgICAgICAgICAgICAgIHwg
OmNsYXNzOmBweTI6VXNlclN0cmluZy5Vc2VyU3RyaW5nYCAgfCA6Y2xhc3M6YHB5Mzpjb2xsZWN0
aW9ucy5Vc2VyU3RyaW5nYCB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSsKLXwgYGB3aW5yZWdgYCAgICAgICAgICAgICAgICAgICB8IDptb2Q6YHB5
Mjpfd2lucmVnYCAgICAgICAgICAgICAgICAgIHwgOm1vZDpgcHkzOndpbnJlZ2AgICAgICAgICAg
ICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0rCi18IGBgeG1scnBjX2NsaWVudGBgICAgICAgICAgICAgfCA6bW9kOmBweTI6eG1scnBj
bGliYCAgICAgICAgICAgICAgICB8IDptb2Q6YHB5Mzp4bWxycGMuY2xpZW50YCAgICAgICAgICAg
IHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwot
fCBgYHhtbHJwY19zZXJ2ZXJgYCAgICAgICAgICAgIHwgOm1vZDpgcHkyOlNpbXBsZVhNTFJQQ1Nl
cnZlcmAgICAgICAgfCA6bW9kOmBweTM6eG1scnBjLnNlcnZlcmAgICAgICAgICAgICB8Ci0rLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGB4cmFu
Z2VgYCAgICAgICAgICAgICAgICAgICB8IDpmdW5jOmBweTI6eHJhbmdlYCAgICAgICAgICAgICAg
ICAgIHwgOmZ1bmM6YHB5MzpyYW5nZWAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgemlwYGAgICAgICAg
ICAgICAgICAgICAgICAgfCA6ZnVuYzpgcHkyOml0ZXJ0b29scy5pemlwYCAgICAgICAgICB8IDpm
dW5jOmBweTM6emlwYCAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHppcF9sb25nZXN0YGAgICAgICAg
ICAgICAgIHwgOmZ1bmM6YHB5MjppdGVydG9vbHMuaXppcF9sb25nZXN0YCAgfCA6ZnVuYzpgcHkz
Oml0ZXJ0b29scy56aXBfbG9uZ2VzdGAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLQotdXJsbGliIHBhcnNlCi08PDw8PDw8PDw8PDwKLQot
Li4gbW9kdWxlOjogc2l4Lm1vdmVzLnVybGxpYi5wYXJzZQotICAgOnN5bm9wc2lzOiBTdHVmZiBm
cm9tIDptb2Q6YHB5Mjp1cmxwYXJzZWAgYW5kIDptb2Q6YHB5Mjp1cmxsaWJgIGluIFB5dGhvbiAy
IGFuZCA6bW9kOmBweTM6dXJsbGliLnBhcnNlYCBpbiBQeXRob24gMwotCi1Db250YWlucyBmdW5j
dGlvbnMgZnJvbSBQeXRob24gMydzIDptb2Q6YHB5Mzp1cmxsaWIucGFyc2VgIGFuZCBQeXRob24g
MidzOgotCi06bW9kOmBweTI6dXJscGFyc2VgOgotCi0qIDpmdW5jOmBweTI6dXJscGFyc2UuUGFy
c2VSZXN1bHRgCi0qIDpmdW5jOmBweTI6dXJscGFyc2UuU3BsaXRSZXN1bHRgCi0qIDpmdW5jOmBw
eTI6dXJscGFyc2UudXJscGFyc2VgCi0qIDpmdW5jOmBweTI6dXJscGFyc2UudXJsdW5wYXJzZWAK
LSogOmZ1bmM6YHB5Mjp1cmxwYXJzZS5wYXJzZV9xc2AKLSogOmZ1bmM6YHB5Mjp1cmxwYXJzZS5w
YXJzZV9xc2xgCi0qIDpmdW5jOmBweTI6dXJscGFyc2UudXJsam9pbmAKLSogOmZ1bmM6YHB5Mjp1
cmxwYXJzZS51cmxkZWZyYWdgCi0qIDpmdW5jOmBweTI6dXJscGFyc2UudXJsc3BsaXRgCi0qIDpm
dW5jOmBweTI6dXJscGFyc2UudXJsdW5zcGxpdGAKLSogOmZ1bmM6YHB5Mjp1cmxwYXJzZS5zcGxp
dHF1ZXJ5YAotKiA6ZnVuYzpgcHkyOnVybHBhcnNlLnVzZXNfZnJhZ21lbnRgCi0qIDpmdW5jOmBw
eTI6dXJscGFyc2UudXNlc19uZXRsb2NgCi0qIDpmdW5jOmBweTI6dXJscGFyc2UudXNlc19wYXJh
bXNgCi0qIDpmdW5jOmBweTI6dXJscGFyc2UudXNlc19xdWVyeWAKLSogOmZ1bmM6YHB5Mjp1cmxw
YXJzZS51c2VzX3JlbGF0aXZlYAotCi1hbmQgOm1vZDpgcHkyOnVybGxpYmA6Ci0KLSogOmZ1bmM6
YHB5Mjp1cmxsaWIucXVvdGVgCi0qIDpmdW5jOmBweTI6dXJsbGliLnF1b3RlX3BsdXNgCi0qIDpm
dW5jOmBweTI6dXJsbGliLnNwbGl0dGFnYAotKiA6ZnVuYzpgcHkyOnVybGxpYi5zcGxpdHVzZXJg
Ci0qIDpmdW5jOmBweTI6dXJsbGliLnVucXVvdGVgCi0qIDpmdW5jOmBweTI6dXJsbGliLnVucXVv
dGVfcGx1c2AKLSogOmZ1bmM6YHB5Mjp1cmxsaWIudXJsZW5jb2RlYAotCi0KLXVybGxpYiBlcnJv
cgotPDw8PDw8PDw8PDw8Ci0KLS4uIG1vZHVsZTo6IHNpeC5tb3Zlcy51cmxsaWIuZXJyb3IKLSAg
IDpzeW5vcHNpczogU3R1ZmYgZnJvbSA6bW9kOmBweTI6dXJsbGliYCBhbmQgOm1vZDpgcHkyOnVy
bGxpYjJgIGluIFB5dGhvbiAyIGFuZCA6bW9kOmBweTM6dXJsbGliLmVycm9yYCBpbiBQeXRob24g
MwotCi1Db250YWlucyBleGNlcHRpb25zIGZyb20gUHl0aG9uIDMncyA6bW9kOmBweTM6dXJsbGli
LmVycm9yYCBhbmQgUHl0aG9uIDInczoKLQotOm1vZDpgcHkyOnVybGxpYmA6Ci0KLSogOmV4Yzpg
cHkyOnVybGxpYi5Db250ZW50VG9vU2hvcnRFcnJvcmAKLQotYW5kIDptb2Q6YHB5Mjp1cmxsaWIy
YDoKLQotKiA6ZXhjOmBweTI6dXJsbGliMi5VUkxFcnJvcmAKLSogOmV4YzpgcHkyOnVybGxpYjIu
SFRUUEVycm9yYAotCi0KLXVybGxpYiByZXF1ZXN0Ci08PDw8PDw8PDw8PDw8PAotCi0uLiBtb2R1
bGU6OiBzaXgubW92ZXMudXJsbGliLnJlcXVlc3QKLSAgIDpzeW5vcHNpczogU3R1ZmYgZnJvbSA6
bW9kOmBweTI6dXJsbGliYCBhbmQgOm1vZDpgcHkyOnVybGxpYjJgIGluIFB5dGhvbiAyIGFuZCA6
bW9kOmBweTM6dXJsbGliLnJlcXVlc3RgIGluIFB5dGhvbiAzCi0KLUNvbnRhaW5zIGl0ZW1zIGZy
b20gUHl0aG9uIDMncyA6bW9kOmBweTM6dXJsbGliLnJlcXVlc3RgIGFuZCBQeXRob24gMidzOgot
Ci06bW9kOmBweTI6dXJsbGliYDoKLQotKiA6ZnVuYzpgcHkyOnVybGxpYi5wYXRobmFtZTJ1cmxg
Ci0qIDpmdW5jOmBweTI6dXJsbGliLnVybDJwYXRobmFtZWAKLSogOmZ1bmM6YHB5Mjp1cmxsaWIu
Z2V0cHJveGllc2AKLSogOmZ1bmM6YHB5Mjp1cmxsaWIudXJscmV0cmlldmVgCi0qIDpmdW5jOmBw
eTI6dXJsbGliLnVybGNsZWFudXBgCi0qIDpjbGFzczpgcHkyOnVybGxpYi5VUkxvcGVuZXJgCi0q
IDpjbGFzczpgcHkyOnVybGxpYi5GYW5jeVVSTG9wZW5lcmAKLSogOmZ1bmM6YHB5Mjp1cmxsaWIu
cHJveHlfYnlwYXNzYAotCi1hbmQgOm1vZDpgcHkyOnVybGxpYjJgOgotCi0qIDpmdW5jOmBweTI6
dXJsbGliMi51cmxvcGVuYAotKiA6ZnVuYzpgcHkyOnVybGxpYjIuaW5zdGFsbF9vcGVuZXJgCi0q
IDpmdW5jOmBweTI6dXJsbGliMi5idWlsZF9vcGVuZXJgCi0qIDpjbGFzczpgcHkyOnVybGxpYjIu
UmVxdWVzdGAKLSogOmNsYXNzOmBweTI6dXJsbGliMi5PcGVuZXJEaXJlY3RvcmAKLSogOmNsYXNz
OmBweTI6dXJsbGliMi5IVFRQRGVmYXVsdEVycm9ySGFuZGxlcmAKLSogOmNsYXNzOmBweTI6dXJs
bGliMi5IVFRQUmVkaXJlY3RIYW5kbGVyYAotKiA6Y2xhc3M6YHB5Mjp1cmxsaWIyLkhUVFBDb29r
aWVQcm9jZXNzb3JgCi0qIDpjbGFzczpgcHkyOnVybGxpYjIuUHJveHlIYW5kbGVyYAotKiA6Y2xh
c3M6YHB5Mjp1cmxsaWIyLkJhc2VIYW5kbGVyYAotKiA6Y2xhc3M6YHB5Mjp1cmxsaWIyLkhUVFBQ
YXNzd29yZE1ncmAKLSogOmNsYXNzOmBweTI6dXJsbGliMi5IVFRQUGFzc3dvcmRNZ3JXaXRoRGVm
YXVsdFJlYWxtYAotKiA6Y2xhc3M6YHB5Mjp1cmxsaWIyLkFic3RyYWN0QmFzaWNBdXRoSGFuZGxl
cmAKLSogOmNsYXNzOmBweTI6dXJsbGliMi5IVFRQQmFzaWNBdXRoSGFuZGxlcmAKLSogOmNsYXNz
OmBweTI6dXJsbGliMi5Qcm94eUJhc2ljQXV0aEhhbmRsZXJgCi0qIDpjbGFzczpgcHkyOnVybGxp
YjIuQWJzdHJhY3REaWdlc3RBdXRoSGFuZGxlcmAKLSogOmNsYXNzOmBweTI6dXJsbGliMi5IVFRQ
RGlnZXN0QXV0aEhhbmRsZXJgCi0qIDpjbGFzczpgcHkyOnVybGxpYjIuUHJveHlEaWdlc3RBdXRo
SGFuZGxlcmAKLSogOmNsYXNzOmBweTI6dXJsbGliMi5IVFRQSGFuZGxlcmAKLSogOmNsYXNzOmBw
eTI6dXJsbGliMi5IVFRQU0hhbmRsZXJgCi0qIDpjbGFzczpgcHkyOnVybGxpYjIuRmlsZUhhbmRs
ZXJgCi0qIDpjbGFzczpgcHkyOnVybGxpYjIuRlRQSGFuZGxlcmAKLSogOmNsYXNzOmBweTI6dXJs
bGliMi5DYWNoZUZUUEhhbmRsZXJgCi0qIDpjbGFzczpgcHkyOnVybGxpYjIuVW5rbm93bkhhbmRs
ZXJgCi0qIDpjbGFzczpgcHkyOnVybGxpYjIuSFRUUEVycm9yUHJvY2Vzc29yYAotCi0KLXVybGxp
YiByZXNwb25zZQotPDw8PDw8PDw8PDw8PDw8Ci0KLS4uIG1vZHVsZTo6IHNpeC5tb3Zlcy51cmxs
aWIucmVzcG9uc2UKLSAgIDpzeW5vcHNpczogU3R1ZmYgZnJvbSA6bW9kOmBweTI6dXJsbGliYCBp
biBQeXRob24gMiBhbmQgOm1vZDpgcHkzOnVybGxpYi5yZXNwb25zZWAgaW4gUHl0aG9uIDMKLQot
Q29udGFpbnMgY2xhc3NlcyBmcm9tIFB5dGhvbiAzJ3MgOm1vZDpgcHkzOnVybGxpYi5yZXNwb25z
ZWAgYW5kIFB5dGhvbiAyJ3M6Ci0KLTptb2Q6YHB5Mjp1cmxsaWJgOgotCi0qIDpjbGFzczpgcHky
OnVybGxpYi5hZGRiYXNlYAotKiA6Y2xhc3M6YHB5Mjp1cmxsaWIuYWRkY2xvc2Vob29rYAotKiA6
Y2xhc3M6YHB5Mjp1cmxsaWIuYWRkaW5mb2AKLSogOmNsYXNzOmBweTI6dXJsbGliLmFkZGluZm91
cmxgCi0KLQotQWR2YW5jZWQgLSBDdXN0b21pemluZyByZW5hbWVzCi08PDw8PDw8PDw8PDw8PDw8
PDw8PDw8PDw8PDw8PDwKLQotLi4gY3VycmVudG1vZHVsZTo6IHNpeAotCi1JdCBpcyBwb3NzaWJs
ZSB0byBhZGQgYWRkaXRpb25hbCBuYW1lcyB0byB0aGUgOm1vZDpgc2l4Lm1vdmVzYCBuYW1lc3Bh
Y2UuCi0KLQotLi4gZnVuY3Rpb246OiBhZGRfbW92ZShpdGVtKQotCi0gICBBZGQgKml0ZW0qIHRv
IHRoZSA6bW9kOmBzaXgubW92ZXNgIG1hcHBpbmcuICAqaXRlbSogc2hvdWxkIGJlIGEKLSAgIDpj
bGFzczpgTW92ZWRBdHRyaWJ1dGVgIG9yIDpjbGFzczpgTW92ZWRNb2R1bGVgIGluc3RhbmNlLgot
Ci0KLS4uIGZ1bmN0aW9uOjogcmVtb3ZlX21vdmUobmFtZSkKLQotICAgUmVtb3ZlIHRoZSA6bW9k
OmBzaXgubW92ZXNgIG1hcHBpbmcgY2FsbGVkICpuYW1lKi4gICpuYW1lKiBzaG91bGQgYmUgYQot
ICAgc3RyaW5nLgotCi0KLUluc3RhbmNlcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgY2FuIGJl
IHBhc3NlZCB0byA6ZnVuYzpgYWRkX21vdmVgLiAgTmVpdGhlcgotaGF2ZSBhbnkgcHVibGljIG1l
bWJlcnMuCi0KLQotLi4gY2xhc3M6OiBNb3ZlZE1vZHVsZShuYW1lLCBvbGRfbW9kLCBuZXdfbW9k
KQotCi0gICBDcmVhdGUgYSBtYXBwaW5nIGZvciA6bW9kOmBzaXgubW92ZXNgIGNhbGxlZCAqbmFt
ZSogdGhhdCByZWZlcmVuY2VzIGRpZmZlcmVudAotICAgbW9kdWxlcyBpbiBQeXRob24gMiBhbmQg
My4gICpvbGRfbW9kKiBpcyB0aGUgbmFtZSBvZiB0aGUgUHl0aG9uIDIgbW9kdWxlLgotICAgKm5l
d19tb2QqIGlzIHRoZSBuYW1lIG9mIHRoZSBQeXRob24gMyBtb2R1bGUuCi0KLQotLi4gY2xhc3M6
OiBNb3ZlZEF0dHJpYnV0ZShuYW1lLCBvbGRfbW9kLCBuZXdfbW9kLCBvbGRfYXR0cj1Ob25lLCBu
ZXdfYXR0cj1Ob25lKQotCi0gICBDcmVhdGUgYSBtYXBwaW5nIGZvciA6bW9kOmBzaXgubW92ZXNg
IGNhbGxlZCAqbmFtZSogdGhhdCByZWZlcmVuY2VzIGRpZmZlcmVudAotICAgYXR0cmlidXRlcyBp
biBQeXRob24gMiBhbmQgMy4gICpvbGRfbW9kKiBpcyB0aGUgbmFtZSBvZiB0aGUgUHl0aG9uIDIg
bW9kdWxlLgotICAgKm5ld19tb2QqIGlzIHRoZSBuYW1lIG9mIHRoZSBQeXRob24gMyBtb2R1bGUu
ICBJZiAqbmV3X2F0dHIqIGlzIG5vdCBnaXZlbiwgaXQKLSAgIGRlZmF1bHRzIHRvICpvbGRfYXR0
ciouICBJZiBuZWl0aGVyIGlzIGdpdmVuLCB0aGV5IGJvdGggZGVmYXVsdCB0byAqbmFtZSouCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3NpeC9kb2N1bWVudGF0aW9uL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zaXgvZG9jdW1lbnRhdGlvbi93M2MtaW1w
b3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjBkN2I3OGZiNTE2MDg1Y2Ew
YTczYjA0NTQ4MDA2ZTdhNTIxZWYzMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3NpeC9kb2N1bWVudGF0aW9uL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAg
LTEsMTkgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQg
ZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVj
dGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BU
IGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cwotCi1U
aGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byBy
ZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJv
cGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9zaXgvZG9jdW1lbnRhdGlvbi9NYWtlZmlsZQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvc2l4L2RvY3VtZW50YXRpb24v
Y29uZi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvc2l4L2RvY3VtZW50YXRpb24vaW5kZXgucnN0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NpeC93M2MtaW1wb3J0LmxvZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvc2l4L3cz
Yy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MTk4NjUzZWQwZmUy
ZmFlZThhZmY2N2E0Y2IzZWZkOTdlYTMwN2I3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvc2l4L3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAs
MCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUg
VzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdl
YktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoK
LQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0
aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAot
Ci1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
UHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFs
dWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxp
c3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9zaXgvc2l4LnB5YwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zc2x1dGlscy9fX2luaXRfXy5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvc3NsdXRpbHMvX19pbml0
X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0NmJlODUxZDY0ZmIwOTdjMjg3
Yjg2ZmI1MWExOTc4NDZmNDJjMzUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9zc2x1dGlscy9fX2luaXRfXy5weQorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAot
aW1wb3J0IG9wZW5zc2wKLWltcG9ydCBwcmVnZW5lcmF0ZWQKLWZyb20gYmFzZSBpbXBvcnQgTm9T
U0xFbnZpcm9ubWVudAotZnJvbSBvcGVuc3NsIGltcG9ydCBPcGVuU1NMRW52aXJvbm1lbnQKLWZy
b20gcHJlZ2VuZXJhdGVkIGltcG9ydCBQcmVnZW5lcmF0ZWRTU0xFbnZpcm9ubWVudAotCi1lbnZp
cm9ubWVudHMgPSB7Im5vbmUiOiBOb1NTTEVudmlyb25tZW50LAotICAgICAgICAgICAgICAgICJv
cGVuc3NsIjogT3BlblNTTEVudmlyb25tZW50LAotICAgICAgICAgICAgICAgICJwcmVnZW5lcmF0
ZWQiOiBQcmVnZW5lcmF0ZWRTU0xFbnZpcm9ubWVudH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvc3NsdXRpbHMvYmFzZS5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvc3NsdXRp
bHMvYmFzZS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjM3YWU1ZjIzY2NmMWZh
OThjZDM5NmFmODg2OWIyNzRmYzllMzQ2NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3NzbHV0aWxzL2Jhc2UucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBA
Ci1jbGFzcyBOb1NTTEVudmlyb25tZW50KG9iamVjdCk6Ci0gICAgc3NsX2VuYWJsZWQgPSBGYWxz
ZQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgIHBh
c3MKLQotICAgIGRlZiBfX2VudGVyX18oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmCi0KLSAg
ICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgcGFzcwotCi0g
ICAgZGVmIGhvc3RfY2VydF9wYXRoKHNlbGYsIGhvc3QpOgotICAgICAgICByZXR1cm4gTm9uZSwg
Tm9uZQotCi0gICAgZGVmIGNhX2NlcnRfcGF0aChzZWxmKToKLSAgICAgICAgcmV0dXJuIE5vbmUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvc3NsdXRpbHMvb3BlbnNzbC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvc3NsdXRpbHMvb3BlbnNzbC5weQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDljMjQ3MWFhZWUzOTllNTdkMDQyNWFiMWYzNjNlNzAxNWQ0NWExYy4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NzbHV0aWxzL29wZW5zc2wu
cHkKKysrIC9kZXYvbnVsbApAQCAtMSw0MjIgKzAsMCBAQAotaW1wb3J0IGZ1bmN0b29scwotaW1w
b3J0IG9zCi1pbXBvcnQgcmFuZG9tCi1pbXBvcnQgc2h1dGlsCi1pbXBvcnQgc3VicHJvY2Vzcwot
aW1wb3J0IHRlbXBmaWxlCi1mcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZSwgdGltZWRlbHRh
Ci0KLSMgQW1vdW50IG9mIHRpbWUgYmV5b25kIHRoZSBwcmVzZW50IHRvIGNvbnNpZGVyIGNlcnRp
ZmljYXRlcyAiZXhwaXJlZC4iIFRoaXMKLSMgYWxsb3dzIGNlcnRpZmljYXRlcyB0byBiZSBwcm9h
Y3RpdmVseSByZS1nZW5lcmF0ZWQgaW4gdGhlICJidWZmZXIiIHBlcmlvZAotIyBwcmlvciB0byB0
aGVpciBleGFjdCBleHBpcmF0aW9uIHRpbWUuCi1DRVJUX0VYUElSWV9CVUZGRVIgPSBkaWN0KGhv
dXJzPTYpCi0KLWNsYXNzIE9wZW5TU0wob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwg
bG9nZ2VyLCBiaW5hcnksIGJhc2VfcGF0aCwgY29uZl9wYXRoLCBob3N0cywgZHVyYXRpb24sCi0g
ICAgICAgICAgICAgICAgIGJhc2VfY29uZl9wYXRoPU5vbmUpOgotICAgICAgICAiIiJDb250ZXh0
IG1hbmFnZXIgZm9yIGludGVyYWN0aW5nIHdpdGggT3BlblNTTC4KLSAgICAgICAgQ3JlYXRlcyBh
IGNvbmZpZyBmaWxlIGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIGNvbnRleHQuCi0KLSAgICAgICAg
OnBhcmFtIGxvZ2dlcjogc3RkbGliIGxvZ2dlciBvciBweXRob24gc3RydWN0dXJlZCBsb2dnZXIK
LSAgICAgICAgOnBhcmFtIGJpbmFyeTogcGF0aCB0byBvcGVuc3NsIGJpbmFyeQotICAgICAgICA6
cGFyYW0gYmFzZV9wYXRoOiBwYXRoIHRvIGRpcmVjdG9yeSBmb3Igc3RvcmluZyBjZXJ0aWZpY2F0
ZXMKLSAgICAgICAgOnBhcmFtIGNvbmZfcGF0aDogcGF0aCBmb3IgY29uZmlndXJhdGlvbiBmaWxl
IHN0b3JpbmcgY29uZmlndXJhdGlvbiBkYXRhCi0gICAgICAgIDpwYXJhbSBob3N0czogbGlzdCBv
ZiBob3N0cyB0byBpbmNsdWRlIGluIGNvbmZpZ3VyYXRpb24gKG9yIE5vbmUgaWYgbm90Ci0gICAg
ICAgICAgICAgICAgICAgICAgZ2VuZXJhdGluZyBob3N0IGNlcnRpZmljYXRlcykKLSAgICAgICAg
OnBhcmFtIGR1cmF0aW9uOiBDZXJ0aWZpY2F0ZSBkdXJhdGlvbiBpbiBkYXlzIiIiCi0KLSAgICAg
ICAgc2VsZi5iYXNlX3BhdGggPSBiYXNlX3BhdGgKLSAgICAgICAgc2VsZi5iaW5hcnkgPSBiaW5h
cnkKLSAgICAgICAgc2VsZi5jb25mX3BhdGggPSBjb25mX3BhdGgKLSAgICAgICAgc2VsZi5iYXNl
X2NvbmZfcGF0aCA9IGJhc2VfY29uZl9wYXRoCi0gICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2Vy
Ci0gICAgICAgIHNlbGYucHJvYyA9IE5vbmUKLSAgICAgICAgc2VsZi5jbWQgPSBbXQotICAgICAg
ICBzZWxmLmhvc3RzID0gaG9zdHMKLSAgICAgICAgc2VsZi5kdXJhdGlvbiA9IGR1cmF0aW9uCi0K
LSAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgotICAgICAgICB3aXRoIG9wZW4oc2VsZi5jb25mX3Bh
dGgsICJ3IikgYXMgZjoKLSAgICAgICAgICAgIGYud3JpdGUoZ2V0X2NvbmZpZyhzZWxmLmJhc2Vf
cGF0aCwgc2VsZi5ob3N0cywgc2VsZi5kdXJhdGlvbikpCi0gICAgICAgIHJldHVybiBzZWxmCi0K
LSAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgb3MudW5s
aW5rKHNlbGYuY29uZl9wYXRoKQotCi0gICAgZGVmIGxvZyhzZWxmLCBsaW5lKToKLSAgICAgICAg
aWYgaGFzYXR0cihzZWxmLmxvZ2dlciwgInByb2Nlc3Nfb3V0cHV0Iik6Ci0gICAgICAgICAgICBz
ZWxmLmxvZ2dlci5wcm9jZXNzX291dHB1dChzZWxmLnByb2MucGlkIGlmIHNlbGYucHJvYyBpcyBu
b3QgTm9uZSBlbHNlIE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsaW5lLmRlY29kZSgidXRmOCIsICJyZXBsYWNlIiksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb21tYW5kPSIgIi5qb2luKHNlbGYuY21kKSkKLSAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKGxpbmUpCi0KLSAgICBkZWYgX19jYWxs
X18oc2VsZiwgY21kLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICAiIiJSdW4gYSBjb21tYW5k
IHVzaW5nIE9wZW5TU0wgaW4gdGhlIGN1cnJlbnQgY29udGV4dC4KLQotICAgICAgICA6cGFyYW0g
Y21kOiBUaGUgb3BlbnNzbCBzdWJjb21tYW5kIHRvIHJ1bgotICAgICAgICA6cGFyYW0gKmFyZ3M6
IEFkZGl0aW9uYWwgYXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlIGNvbW1hbmQKLSAgICAgICAgIiIi
Ci0gICAgICAgIHNlbGYuY21kID0gW3NlbGYuYmluYXJ5LCBjbWRdCi0gICAgICAgIGlmIGNtZCAh
PSAieDUwOSI6Ci0gICAgICAgICAgICBzZWxmLmNtZCArPSBbIi1jb25maWciLCBzZWxmLmNvbmZf
cGF0aF0KLSAgICAgICAgc2VsZi5jbWQgKz0gbGlzdChhcmdzKQotCi0gICAgICAgICMgQ29weSB0
aGUgZW52aXJvbm1lbnQsIGNvbnZlcnRpbmcgdG8gcGxhaW4gc3RyaW5ncy4gV2luZG93cwotICAg
ICAgICAjIFN0YXJ0UHJvY2VzcyBpcyBwaWNreSBhYm91dCBhbGwgdGhlIGtleXMvdmFsdWVzIGJl
aW5nIHBsYWluIHN0cmluZ3MsCi0gICAgICAgICMgYnV0IGF0IGxlYXN0IGluIE1TWVMgc2hlbGxz
LCB0aGUgb3MuZW52aXJvbiBkaWN0aW9uYXJ5IGNhbiBiZSBtaXhlZC4KLSAgICAgICAgZW52ID0g
e30KLSAgICAgICAgZm9yIGssIHYgaW4gb3MuZW52aXJvbi5pdGVyaXRlbXMoKToKLSAgICAgICAg
ICAgIHRyeToKLSAgICAgICAgICAgICAgICBlbnZbay5lbmNvZGUoInV0ZjgiKV0gPSB2LmVuY29k
ZSgidXRmOCIpCi0gICAgICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yOgotICAgICAg
ICAgICAgICAgIHBhc3MKLQotICAgICAgICBpZiBzZWxmLmJhc2VfY29uZl9wYXRoIGlzIG5vdCBO
b25lOgotICAgICAgICAgICAgZW52WyJPUEVOU1NMX0NPTkYiXSA9IHNlbGYuYmFzZV9jb25mX3Bh
dGguZW5jb2RlKCJ1dGY4IikKLQotICAgICAgICBzZWxmLnByb2MgPSBzdWJwcm9jZXNzLlBvcGVu
KHNlbGYuY21kLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERP
VVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PWVudikKLSAgICAg
ICAgc3Rkb3V0LCBzdGRlcnIgPSBzZWxmLnByb2MuY29tbXVuaWNhdGUoKQotICAgICAgICBzZWxm
LmxvZyhzdGRvdXQpCi0gICAgICAgIGlmIHNlbGYucHJvYy5yZXR1cm5jb2RlICE9IDA6Ci0gICAg
ICAgICAgICByYWlzZSBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcihzZWxmLnByb2MucmV0
dXJuY29kZSwgc2VsZi5jbWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvdXRwdXQ9c3Rkb3V0KQotCi0gICAgICAgIHNlbGYuY21kID0gW10KLSAgICAg
ICAgc2VsZi5wcm9jID0gTm9uZQotICAgICAgICByZXR1cm4gc3Rkb3V0Ci0KLQotZGVmIG1ha2Vf
c3ViamVjdChjb21tb25fbmFtZSwKLSAgICAgICAgICAgICAgICAgY291bnRyeT1Ob25lLAotICAg
ICAgICAgICAgICAgICBzdGF0ZT1Ob25lLAotICAgICAgICAgICAgICAgICBsb2NhbGl0eT1Ob25l
LAotICAgICAgICAgICAgICAgICBvcmdhbml6YXRpb249Tm9uZSwKLSAgICAgICAgICAgICAgICAg
b3JnYW5pemF0aW9uX3VuaXQ9Tm9uZSk6Ci0gICAgYXJncyA9IFsoImNvdW50cnkiLCAiQyIpLAot
ICAgICAgICAgICAgKCJzdGF0ZSIsICJTVCIpLAotICAgICAgICAgICAgKCJsb2NhbGl0eSIsICJM
IiksCi0gICAgICAgICAgICAoIm9yZ2FuaXphdGlvbiIsICJPIiksCi0gICAgICAgICAgICAoIm9y
Z2FuaXphdGlvbl91bml0IiwgIk9VIiksCi0gICAgICAgICAgICAoImNvbW1vbl9uYW1lIiwgIkNO
IildCi0KLSAgICBydiA9IFtdCi0KLSAgICBmb3IgdmFyLCBrZXkgaW4gYXJnczoKLSAgICAgICAg
dmFsdWUgPSBsb2NhbHMoKVt2YXJdCi0gICAgICAgIGlmIHZhbHVlIGlzIG5vdCBOb25lOgotICAg
ICAgICAgICAgcnYuYXBwZW5kKCIvJXM9JXMiICUgKGtleSwgdmFsdWUucmVwbGFjZSgiLyIsICJc
XC8iKSkpCi0KLSAgICByZXR1cm4gIiIuam9pbihydikKLQotZGVmIG1ha2VfYWx0X25hbWVzKGhv
c3RzKToKLSAgICBydiA9IFtdCi0gICAgZm9yIG5hbWUgaW4gaG9zdHM6Ci0gICAgICAgIHJ2LmFw
cGVuZCgiRE5TOiVzIiAlIG5hbWUpCi0gICAgcmV0dXJuICIsIi5qb2luKHJ2KQotCi1kZWYgZ2V0
X2NvbmZpZyhyb290X2RpciwgaG9zdHMsIGR1cmF0aW9uPTMwKToKLSAgICBpZiBob3N0cyBpcyBO
b25lOgotICAgICAgICBzYW5fbGluZSA9ICIiCi0gICAgZWxzZToKLSAgICAgICAgc2FuX2xpbmUg
PSAic3ViamVjdEFsdE5hbWUgPSAlcyIgJSBtYWtlX2FsdF9uYW1lcyhob3N0cykKLQotICAgIGlm
IG9zLnBhdGguc2VwID09ICJcXCI6Ci0gICAgICAgICMgVGhpcyBzZWVtcyB0byBiZSBuZWVkZWQg
Zm9yIHRoZSBTaGluaW5nIExpZ2h0IE9wZW5TU0wgb24KLSAgICAgICAgIyBXaW5kb3dzLCBhdCBs
ZWFzdC4KLSAgICAgICAgcm9vdF9kaXIgPSByb290X2Rpci5yZXBsYWNlKCJcXCIsICJcXFxcIikK
LQotICAgIHJ2ID0gIiIiWyBjYSBdCi1kZWZhdWx0X2NhID0gQ0FfZGVmYXVsdAotCi1bIENBX2Rl
ZmF1bHQgXQotZGlyID0gJShyb290X2RpcilzCi1jZXJ0cyA9ICRkaXIKLW5ld19jZXJ0c19kaXIg
PSAkY2VydHMKLWNybF9kaXIgPSAkZGlyJShzZXApc2NybAotZGF0YWJhc2UgPSAkZGlyJShzZXAp
c2luZGV4LnR4dAotcHJpdmF0ZV9rZXkgPSAkZGlyJShzZXApc2Nha2V5LnBlbQotY2VydGlmaWNh
dGUgPSAkZGlyJShzZXApc2NhY2VydC5wZW0KLXNlcmlhbCA9ICRkaXIlKHNlcClzc2VyaWFsCi1j
cmxkaXIgPSAkZGlyJShzZXApc2NybAotY3JsbnVtYmVyID0gJGRpciUoc2VwKXNjcmxudW1iZXIK
LWNybCA9ICRjcmxkaXIlKHNlcClzY3JsLnBlbQotUkFOREZJTEUgPSAkZGlyJShzZXApc3ByaXZh
dGUlKHNlcClzLnJhbmQKLXg1MDlfZXh0ZW5zaW9ucyA9IHVzcl9jZXJ0Ci1uYW1lX29wdCAgICAg
ICAgPSBjYV9kZWZhdWx0Ci1jZXJ0X29wdCAgICAgICAgPSBjYV9kZWZhdWx0Ci1kZWZhdWx0X2Rh
eXMgPSAlKGR1cmF0aW9uKWQKLWRlZmF1bHRfY3JsX2RheXMgPSAlKGR1cmF0aW9uKWQKLWRlZmF1
bHRfbWQgPSBzaGEyNTYKLXByZXNlcnZlID0gbm8KLXBvbGljeSA9IHBvbGljeV9hbnl0aGluZwot
Y29weV9leHRlbnNpb25zID0gY29weQotCi1bIHBvbGljeV9hbnl0aGluZyBdCi1jb3VudHJ5TmFt
ZSA9IG9wdGlvbmFsCi1zdGF0ZU9yUHJvdmluY2VOYW1lID0gb3B0aW9uYWwKLWxvY2FsaXR5TmFt
ZSA9IG9wdGlvbmFsCi1vcmdhbml6YXRpb25OYW1lID0gb3B0aW9uYWwKLW9yZ2FuaXphdGlvbmFs
VW5pdE5hbWUgPSBvcHRpb25hbAotY29tbW9uTmFtZSA9IHN1cHBsaWVkCi1lbWFpbEFkZHJlc3Mg
PSBvcHRpb25hbAotCi1bIHJlcSBdCi1kZWZhdWx0X2JpdHMgPSAyMDQ4Ci1kZWZhdWx0X2tleWZp
bGUgID0gcHJpdmtleS5wZW0KLWRpc3Rpbmd1aXNoZWRfbmFtZSA9IHJlcV9kaXN0aW5ndWlzaGVk
X25hbWUKLWF0dHJpYnV0ZXMgPSByZXFfYXR0cmlidXRlcwoteDUwOV9leHRlbnNpb25zID0gdjNf
Y2EKLQotIyBQYXNzd29yZHMgZm9yIHByaXZhdGUga2V5cyBpZiBub3QgcHJlc2VudCB0aGV5IHdp
bGwgYmUgcHJvbXB0ZWQgZm9yCi0jIGlucHV0X3Bhc3N3b3JkID0gc2VjcmV0Ci0jIG91dHB1dF9w
YXNzd29yZCA9IHNlY3JldAotc3RyaW5nX21hc2sgPSB1dGY4b25seQotcmVxX2V4dGVuc2lvbnMg
PSB2M19yZXEKLQotWyByZXFfZGlzdGluZ3Vpc2hlZF9uYW1lIF0KLWNvdW50cnlOYW1lID0gQ291
bnRyeSBOYW1lICgyIGxldHRlciBjb2RlKQotY291bnRyeU5hbWVfZGVmYXVsdCA9IEFVCi1jb3Vu
dHJ5TmFtZV9taW4gPSAyCi1jb3VudHJ5TmFtZV9tYXggPSAyCi1zdGF0ZU9yUHJvdmluY2VOYW1l
ID0gU3RhdGUgb3IgUHJvdmluY2UgTmFtZSAoZnVsbCBuYW1lKQotc3RhdGVPclByb3ZpbmNlTmFt
ZV9kZWZhdWx0ID0KLWxvY2FsaXR5TmFtZSA9IExvY2FsaXR5IE5hbWUgKGVnLCBjaXR5KQotMC5v
cmdhbml6YXRpb25OYW1lID0gT3JnYW5pemF0aW9uIE5hbWUKLTAub3JnYW5pemF0aW9uTmFtZV9k
ZWZhdWx0ID0gV2ViIFBsYXRmb3JtIFRlc3RzCi1vcmdhbml6YXRpb25hbFVuaXROYW1lID0gT3Jn
YW5pemF0aW9uYWwgVW5pdCBOYW1lIChlZywgc2VjdGlvbikKLSNvcmdhbml6YXRpb25hbFVuaXRO
YW1lX2RlZmF1bHQgPQotY29tbW9uTmFtZSA9IENvbW1vbiBOYW1lIChlLmcuIHNlcnZlciBGUURO
IG9yIFlPVVIgbmFtZSkKLWNvbW1vbk5hbWVfbWF4ID0gNjQKLWVtYWlsQWRkcmVzcyA9IEVtYWls
IEFkZHJlc3MKLWVtYWlsQWRkcmVzc19tYXggPSA2NAotCi1bIHJlcV9hdHRyaWJ1dGVzIF0KLQot
WyB1c3JfY2VydCBdCi1iYXNpY0NvbnN0cmFpbnRzPUNBOmZhbHNlCi1zdWJqZWN0S2V5SWRlbnRp
Zmllcj1oYXNoCi1hdXRob3JpdHlLZXlJZGVudGlmaWVyPWtleWlkLGlzc3VlcgotCi1bIHYzX3Jl
cSBdCi1iYXNpY0NvbnN0cmFpbnRzID0gQ0E6RkFMU0UKLWtleVVzYWdlID0gbm9uUmVwdWRpYXRp
b24sIGRpZ2l0YWxTaWduYXR1cmUsIGtleUVuY2lwaGVybWVudAotZXh0ZW5kZWRLZXlVc2FnZSA9
IHNlcnZlckF1dGgKLSUoc2FuX2xpbmUpcwotCi1bIHYzX2NhIF0KLWJhc2ljQ29uc3RyYWludHMg
PSBDQTp0cnVlCi1zdWJqZWN0S2V5SWRlbnRpZmllcj1oYXNoCi1hdXRob3JpdHlLZXlJZGVudGlm
aWVyPWtleWlkOmFsd2F5cyxpc3N1ZXI6YWx3YXlzCi1rZXlVc2FnZSA9IGtleUNlcnRTaWduCi0i
IiIgJSB7InJvb3RfZGlyIjogcm9vdF9kaXIsCi0gICAgICAgInNhbl9saW5lIjogc2FuX2xpbmUs
Ci0gICAgICAgImR1cmF0aW9uIjogZHVyYXRpb24sCi0gICAgICAgInNlcCI6IG9zLnBhdGguc2Vw
LnJlcGxhY2UoIlxcIiwgIlxcXFwiKX0KLQotICAgIHJldHVybiBydgotCi1jbGFzcyBPcGVuU1NM
RW52aXJvbm1lbnQob2JqZWN0KToKLSAgICBzc2xfZW5hYmxlZCA9IFRydWUKLQotICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBsb2dnZXIsIG9wZW5zc2xfYmluYXJ5PSJvcGVuc3NsIiwgYmFzZV9wYXRo
PU5vbmUsCi0gICAgICAgICAgICAgICAgIHBhc3N3b3JkPSJ3ZWItcGxhdGZvcm0tdGVzdHMiLCBm
b3JjZV9yZWdlbmVyYXRlPUZhbHNlLAotICAgICAgICAgICAgICAgICBkdXJhdGlvbj0zMCwgYmFz
ZV9jb25mX3BhdGg9Tm9uZSk6Ci0gICAgICAgICIiIlNTTCBlbnZpcm9ubWVudCB0aGF0IGNyZWF0
ZXMgYSBsb2NhbCBDQSBhbmQgaG9zdCBjZXJ0aWZpY2F0ZSB1c2luZyBPcGVuU1NMLgotCi0gICAg
ICAgIEJ5IGRlZmF1bHQgdGhpcyB3aWxsIGxvb2sgaW4gYmFzZV9wYXRoIGZvciBleGlzdGluZyBj
ZXJ0aWZpY2F0ZXMgdGhhdCBhcmUgc3RpbGwKLSAgICAgICAgdmFsaWQgYW5kIG9ubHkgY3JlYXRl
IG5ldyBjZXJ0aWZpY2F0ZXMgaWYgdGhlcmUgYXJlbid0IGFueS4gVGhpcyBiZWhhdmlvdXIgY2Fu
Ci0gICAgICAgIGJlIGFkanVzdGVkIHVzaW5nIHRoZSBmb3JjZV9yZWdlbmVyYXRlIG9wdGlvbi4K
LQotICAgICAgICA6cGFyYW0gbG9nZ2VyOiBhIHN0ZGxpYiBsb2dnaW5nIGNvbXBhdGlibGUgbG9n
Z2VyIG9yIG1vemxvZyBzdHJ1Y3R1cmVkIGxvZ2dlcgotICAgICAgICA6cGFyYW0gb3BlbnNzbF9i
aW5hcnk6IFBhdGggdG8gdGhlIE9wZW5TU0wgYmluYXJ5Ci0gICAgICAgIDpwYXJhbSBiYXNlX3Bh
dGg6IFBhdGggaW4gd2hpY2ggY2VydGlmaWNhdGVzIHdpbGwgYmUgc3RvcmVkLiBJZiBOb25lLCBh
IHRlbXBvcmFyeQotICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rvcnkgd2lsbCBiZSB1
c2VkIGFuZCByZW1vdmVkIHdoZW4gdGhlIHNlcnZlciBzaHV0cyBkb3duCi0gICAgICAgIDpwYXJh
bSBwYXNzd29yZDogUGFzc3dvcmQgdG8gdXNlCi0gICAgICAgIDpwYXJhbSBmb3JjZV9yZWdlbmVy
YXRlOiBBbHdheXMgY3JlYXRlIGEgbmV3IGNlcnRpZmljYXRlIGV2ZW4gaWYgb25lIGFscmVhZHkg
ZXhpc3RzLgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIKLQotICAg
ICAgICBzZWxmLnRlbXBvcmFyeSA9IEZhbHNlCi0gICAgICAgIGlmIGJhc2VfcGF0aCBpcyBOb25l
OgotICAgICAgICAgICAgYmFzZV9wYXRoID0gdGVtcGZpbGUubWtkdGVtcCgpCi0gICAgICAgICAg
ICBzZWxmLnRlbXBvcmFyeSA9IFRydWUKLQotICAgICAgICBzZWxmLmJhc2VfcGF0aCA9IG9zLnBh
dGguYWJzcGF0aChiYXNlX3BhdGgpCi0gICAgICAgIHNlbGYucGFzc3dvcmQgPSBwYXNzd29yZAot
ICAgICAgICBzZWxmLmZvcmNlX3JlZ2VuZXJhdGUgPSBmb3JjZV9yZWdlbmVyYXRlCi0gICAgICAg
IHNlbGYuZHVyYXRpb24gPSBkdXJhdGlvbgotICAgICAgICBzZWxmLmJhc2VfY29uZl9wYXRoID0g
YmFzZV9jb25mX3BhdGgKLQotICAgICAgICBzZWxmLnBhdGggPSBOb25lCi0gICAgICAgIHNlbGYu
YmluYXJ5ID0gb3BlbnNzbF9iaW5hcnkKLSAgICAgICAgc2VsZi5vcGVuc3NsID0gTm9uZQotCi0g
ICAgICAgIHNlbGYuX2NhX2NlcnRfcGF0aCA9IE5vbmUKLSAgICAgICAgc2VsZi5fY2Ffa2V5X3Bh
dGggPSBOb25lCi0gICAgICAgIHNlbGYuaG9zdF9jZXJ0aWZpY2F0ZXMgPSB7fQotCi0gICAgZGVm
IF9fZW50ZXJfXyhzZWxmKToKLSAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNlbGYuYmFz
ZV9wYXRoKToKLSAgICAgICAgICAgIG9zLm1ha2VkaXJzKHNlbGYuYmFzZV9wYXRoKQotCi0gICAg
ICAgIHBhdGggPSBmdW5jdG9vbHMucGFydGlhbChvcy5wYXRoLmpvaW4sIHNlbGYuYmFzZV9wYXRo
KQotCi0gICAgICAgIHdpdGggb3BlbihwYXRoKCJpbmRleC50eHQiKSwgInciKToKLSAgICAgICAg
ICAgIHBhc3MKLSAgICAgICAgd2l0aCBvcGVuKHBhdGgoInNlcmlhbCIpLCAidyIpIGFzIGY6Ci0g
ICAgICAgICAgICBzZXJpYWwgPSAiJXgiICUgcmFuZG9tLnJhbmRpbnQoMCwgMTAwMDAwMCkKLSAg
ICAgICAgICAgIGlmIGxlbihzZXJpYWwpICUgMjoKLSAgICAgICAgICAgICAgICBzZXJpYWwgPSAi
MCIgKyBzZXJpYWwKLSAgICAgICAgICAgIGYud3JpdGUoc2VyaWFsKQotCi0gICAgICAgIHNlbGYu
cGF0aCA9IHBhdGgKLQotICAgICAgICByZXR1cm4gc2VsZgotCi0gICAgZGVmIF9fZXhpdF9fKHNl
bGYsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgIGlmIHNlbGYudGVtcG9yYXJ5OgotICAgICAg
ICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLmJhc2VfcGF0aCkKLQotICAgIGRlZiBfY29uZmlnX29w
ZW5zc2woc2VsZiwgaG9zdHMpOgotICAgICAgICBjb25mX3BhdGggPSBzZWxmLnBhdGgoIm9wZW5z
c2wuY2ZnIikKLSAgICAgICAgcmV0dXJuIE9wZW5TU0woc2VsZi5sb2dnZXIsIHNlbGYuYmluYXJ5
LCBzZWxmLmJhc2VfcGF0aCwgY29uZl9wYXRoLCBob3N0cywKLSAgICAgICAgICAgICAgICAgICAg
ICAgc2VsZi5kdXJhdGlvbiwgc2VsZi5iYXNlX2NvbmZfcGF0aCkKLQotICAgIGRlZiBjYV9jZXJ0
X3BhdGgoc2VsZik6Ci0gICAgICAgICIiIkdldCB0aGUgcGF0aCB0byB0aGUgQ0EgY2VydGlmaWNh
dGUgZmlsZSwgZ2VuZXJhdGluZyBhCi0gICAgICAgIG5ldyBvbmUgaWYgbmVlZGVkIiIiCi0gICAg
ICAgIGlmIHNlbGYuX2NhX2NlcnRfcGF0aCBpcyBOb25lIGFuZCBub3Qgc2VsZi5mb3JjZV9yZWdl
bmVyYXRlOgotICAgICAgICAgICAgc2VsZi5fbG9hZF9jYV9jZXJ0KCkKLSAgICAgICAgaWYgc2Vs
Zi5fY2FfY2VydF9wYXRoIGlzIE5vbmU6Ci0gICAgICAgICAgICBzZWxmLl9nZW5lcmF0ZV9jYSgp
Ci0gICAgICAgIHJldHVybiBzZWxmLl9jYV9jZXJ0X3BhdGgKLQotICAgIGRlZiBfbG9hZF9jYV9j
ZXJ0KHNlbGYpOgotICAgICAgICBrZXlfcGF0aCA9IHNlbGYucGF0aCgiY2FrZXkucGVtIikKLSAg
ICAgICAgY2VydF9wYXRoID0gc2VsZi5wYXRoKCJjYWNlcnQucGVtIikKLQotICAgICAgICBpZiBz
ZWxmLmNoZWNrX2tleV9jZXJ0KGtleV9wYXRoLCBjZXJ0X3BhdGgsIE5vbmUpOgotICAgICAgICAg
ICAgc2VsZi5sb2dnZXIuaW5mbygiVXNpbmcgZXhpc3RpbmcgQ0EgY2VydCIpCi0gICAgICAgICAg
ICBzZWxmLl9jYV9rZXlfcGF0aCwgc2VsZi5fY2FfY2VydF9wYXRoID0ga2V5X3BhdGgsIGNlcnRf
cGF0aAotCi0gICAgZGVmIGNoZWNrX2tleV9jZXJ0KHNlbGYsIGtleV9wYXRoLCBjZXJ0X3BhdGgs
IGhvc3RzKToKLSAgICAgICAgIiIiQ2hlY2sgdGhhdCBhIGtleSBhbmQgY2VydCBmaWxlIGV4aXN0
IGFuZCBhcmUgdmFsaWQiIiIKLSAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGtleV9wYXRo
KSBvciBub3Qgb3MucGF0aC5leGlzdHMoY2VydF9wYXRoKToKLSAgICAgICAgICAgIHJldHVybiBG
YWxzZQotCi0gICAgICAgIHdpdGggc2VsZi5fY29uZmlnX29wZW5zc2woaG9zdHMpIGFzIG9wZW5z
c2w6Ci0gICAgICAgICAgICBlbmRfZGF0ZV9zdHIgPSBvcGVuc3NsKCJ4NTA5IiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1ub291dCIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICItZW5kZGF0ZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICItaW4iLCBjZXJ0X3BhdGgpLnNwbGl0KCI9IiwgMSlbMV0uc3RyaXAoKQotICAgICAg
ICAgICAgIyBOb3Qgc3VyZSBpZiB0aGlzIHdvcmtzIGluIG90aGVyIGxvY2FsZXMKLSAgICAgICAg
ICAgIGVuZF9kYXRlID0gZGF0ZXRpbWUuc3RycHRpbWUoZW5kX2RhdGVfc3RyLCAiJWIgJWQgJUg6
JU06JVMgJVkgJVoiKQotICAgICAgICAgICAgdGltZV9idWZmZXIgPSB0aW1lZGVsdGEoKipDRVJU
X0VYUElSWV9CVUZGRVIpCi0gICAgICAgICAgICAjIEJlY2F1c2UgYHN0cnB0aW1lYCBkb2VzIG5v
dCBhY2NvdW50IGZvciB0aW1lIHpvbmUgb2Zmc2V0cywgaXQgaXMKLSAgICAgICAgICAgICMgYWx3
YXlzIGluIHRlcm1zIG9mIFVUQywgc28gdGhlIGN1cnJlbnQgdGltZSBzaG91bGQgYmUgY2FsY3Vs
YXRlZAotICAgICAgICAgICAgIyBhY2NvcmRpbmdseS4KLSAgICAgICAgICAgIGlmIGVuZF9kYXRl
IDwgZGF0ZXRpbWUudXRjbm93KCkgKyB0aW1lX2J1ZmZlcjoKLSAgICAgICAgICAgICAgICByZXR1
cm4gRmFsc2UKLQotICAgICAgICAjVE9ETzogY2hlY2sgdGhlIGtleSBhY3R1YWxseSBzaWduZWQg
dGhlIGNlcnQuCi0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICBkZWYgX2dlbmVyYXRlX2NhKHNl
bGYpOgotICAgICAgICBwYXRoID0gc2VsZi5wYXRoCi0gICAgICAgIHNlbGYubG9nZ2VyLmluZm8o
IkdlbmVyYXRpbmcgbmV3IENBIGluICVzIiAlIHNlbGYuYmFzZV9wYXRoKQotCi0gICAgICAgIGtl
eV9wYXRoID0gcGF0aCgiY2FrZXkucGVtIikKLSAgICAgICAgcmVxX3BhdGggPSBwYXRoKCJjYXJl
cS5wZW0iKQotICAgICAgICBjZXJ0X3BhdGggPSBwYXRoKCJjYWNlcnQucGVtIikKLQotICAgICAg
ICB3aXRoIHNlbGYuX2NvbmZpZ19vcGVuc3NsKE5vbmUpIGFzIG9wZW5zc2w6Ci0gICAgICAgICAg
ICBvcGVuc3NsKCJyZXEiLAotICAgICAgICAgICAgICAgICAgICAiLWJhdGNoIiwKLSAgICAgICAg
ICAgICAgICAgICAgIi1uZXciLAotICAgICAgICAgICAgICAgICAgICAiLW5ld2tleSIsICJyc2E6
MjA0OCIsCi0gICAgICAgICAgICAgICAgICAgICIta2V5b3V0Iiwga2V5X3BhdGgsCi0gICAgICAg
ICAgICAgICAgICAgICItb3V0IiwgcmVxX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICItc3Vi
aiIsIG1ha2Vfc3ViamVjdCgid2ViLXBsYXRmb3JtLXRlc3RzIiksCi0gICAgICAgICAgICAgICAg
ICAgICItcGFzc291dCIsICJwYXNzOiVzIiAlIHNlbGYucGFzc3dvcmQpCi0KLSAgICAgICAgICAg
IG9wZW5zc2woImNhIiwKLSAgICAgICAgICAgICAgICAgICAgIi1iYXRjaCIsCi0gICAgICAgICAg
ICAgICAgICAgICItY3JlYXRlX3NlcmlhbCIsCi0gICAgICAgICAgICAgICAgICAgICIta2V5Zmls
ZSIsIGtleV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAiLXBhc3NpbiIsICJwYXNzOiVzIiAl
IHNlbGYucGFzc3dvcmQsCi0gICAgICAgICAgICAgICAgICAgICItc2VsZnNpZ24iLAotICAgICAg
ICAgICAgICAgICAgICAiLWV4dGVuc2lvbnMiLCAidjNfY2EiLAotICAgICAgICAgICAgICAgICAg
ICAiLWluIiwgcmVxX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICItb3V0IiwgY2VydF9wYXRo
KQotCi0gICAgICAgIG9zLnVubGluayhyZXFfcGF0aCkKLQotICAgICAgICBzZWxmLl9jYV9rZXlf
cGF0aCwgc2VsZi5fY2FfY2VydF9wYXRoID0ga2V5X3BhdGgsIGNlcnRfcGF0aAotCi0gICAgZGVm
IGhvc3RfY2VydF9wYXRoKHNlbGYsIGhvc3RzKToKLSAgICAgICAgIiIiR2V0IGEgdHVwbGUgb2Yg
KHByaXZhdGUga2V5IHBhdGgsIGNlcnRpZmljYXRlIHBhdGgpIGZvciBhIGhvc3QsCi0gICAgICAg
IGdlbmVyYXRpbmcgbmV3IG9uZXMgaWYgbmVjZXNzYXJ5LgotCi0gICAgICAgIGhvc3RzIG11c3Qg
YmUgYSBsaXN0IG9mIGFsbCBob3N0cyB0byBhcHBlYXIgb24gdGhlIGNlcnRpZmljYXRlLCB3aXRo
Ci0gICAgICAgIHRoZSBwcmltYXJ5IGhvc3RuYW1lIGZpcnN0LiIiIgotICAgICAgICBob3N0cyA9
IHR1cGxlKGhvc3RzKQotICAgICAgICBpZiBob3N0cyBub3QgaW4gc2VsZi5ob3N0X2NlcnRpZmlj
YXRlczoKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLmZvcmNlX3JlZ2VuZXJhdGU6Ci0gICAgICAg
ICAgICAgICAga2V5X2NlcnQgPSBzZWxmLl9sb2FkX2hvc3RfY2VydChob3N0cykKLSAgICAgICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAga2V5X2NlcnQgPSBOb25lCi0gICAgICAgICAgICBp
ZiBrZXlfY2VydCBpcyBOb25lOgotICAgICAgICAgICAgICAgIGtleSwgY2VydCA9IHNlbGYuX2dl
bmVyYXRlX2hvc3RfY2VydChob3N0cykKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAg
ICAga2V5LCBjZXJ0ID0ga2V5X2NlcnQKLSAgICAgICAgICAgIHNlbGYuaG9zdF9jZXJ0aWZpY2F0
ZXNbaG9zdHNdID0ga2V5LCBjZXJ0Ci0KLSAgICAgICAgcmV0dXJuIHNlbGYuaG9zdF9jZXJ0aWZp
Y2F0ZXNbaG9zdHNdCi0KLSAgICBkZWYgX2xvYWRfaG9zdF9jZXJ0KHNlbGYsIGhvc3RzKToKLSAg
ICAgICAgaG9zdCA9IGhvc3RzWzBdCi0gICAgICAgIGtleV9wYXRoID0gc2VsZi5wYXRoKCIlcy5r
ZXkiICUgaG9zdCkKLSAgICAgICAgY2VydF9wYXRoID0gc2VsZi5wYXRoKCIlcy5wZW0iICUgaG9z
dCkKLQotICAgICAgICAjIFRPRE86IGNoZWNrIHRoYXQgdGhpcyBjZXJ0IHdhcyBzaWduZWQgYnkg
dGhlIENBIGNlcnQKLSAgICAgICAgaWYgc2VsZi5jaGVja19rZXlfY2VydChrZXlfcGF0aCwgY2Vy
dF9wYXRoLCBob3N0cyk6Ci0gICAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJVc2luZyBleGlz
dGluZyBob3N0IGNlcnQiKQotICAgICAgICAgICAgcmV0dXJuIGtleV9wYXRoLCBjZXJ0X3BhdGgK
LQotICAgIGRlZiBfZ2VuZXJhdGVfaG9zdF9jZXJ0KHNlbGYsIGhvc3RzKToKLSAgICAgICAgaG9z
dCA9IGhvc3RzWzBdCi0gICAgICAgIGlmIHNlbGYuX2NhX2tleV9wYXRoIGlzIE5vbmU6Ci0gICAg
ICAgICAgICBzZWxmLl9nZW5lcmF0ZV9jYSgpCi0gICAgICAgIGNhX2tleV9wYXRoID0gc2VsZi5f
Y2Ffa2V5X3BhdGgKLQotICAgICAgICBhc3NlcnQgb3MucGF0aC5leGlzdHMoY2Ffa2V5X3BhdGgp
Ci0KLSAgICAgICAgcGF0aCA9IHNlbGYucGF0aAotCi0gICAgICAgIHJlcV9wYXRoID0gcGF0aCgi
d3B0LnJlcSIpCi0gICAgICAgIGNlcnRfcGF0aCA9IHBhdGgoIiVzLnBlbSIgJSBob3N0KQotICAg
ICAgICBrZXlfcGF0aCA9IHBhdGgoIiVzLmtleSIgJSBob3N0KQotCi0gICAgICAgIHNlbGYubG9n
Z2VyLmluZm8oIkdlbmVyYXRpbmcgbmV3IGhvc3QgY2VydCIpCi0KLSAgICAgICAgd2l0aCBzZWxm
Ll9jb25maWdfb3BlbnNzbChob3N0cykgYXMgb3BlbnNzbDoKLSAgICAgICAgICAgIG9wZW5zc2wo
InJlcSIsCi0gICAgICAgICAgICAgICAgICAgICItYmF0Y2giLAotICAgICAgICAgICAgICAgICAg
ICAiLW5ld2tleSIsICJyc2E6MjA0OCIsCi0gICAgICAgICAgICAgICAgICAgICIta2V5b3V0Iiwg
a2V5X3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICItaW4iLCBjYV9rZXlfcGF0aCwKLSAgICAg
ICAgICAgICAgICAgICAgIi1ub2RlcyIsCi0gICAgICAgICAgICAgICAgICAgICItb3V0IiwgcmVx
X3BhdGgpCi0KLSAgICAgICAgICAgIG9wZW5zc2woImNhIiwKLSAgICAgICAgICAgICAgICAgICAg
Ii1iYXRjaCIsCi0gICAgICAgICAgICAgICAgICAgICItaW4iLCByZXFfcGF0aCwKLSAgICAgICAg
ICAgICAgICAgICAgIi1wYXNzaW4iLCAicGFzczolcyIgJSBzZWxmLnBhc3N3b3JkLAotICAgICAg
ICAgICAgICAgICAgICAiLXN1YmoiLCBtYWtlX3N1YmplY3QoaG9zdCksCi0gICAgICAgICAgICAg
ICAgICAgICItb3V0IiwgY2VydF9wYXRoKQotCi0gICAgICAgIG9zLnVubGluayhyZXFfcGF0aCkK
LQotICAgICAgICByZXR1cm4ga2V5X3BhdGgsIGNlcnRfcGF0aApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zc2x1dGlscy9wcmVn
ZW5lcmF0ZWQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3NzbHV0aWxzL3ByZWdlbmVyYXRlZC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZmM0ODdkZjNhZGQwMzkxYzNlZjcxYjY5ZWQ5ZjM3NzM0ZjE0Mjg5MS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NzbHV0aWxzL3ByZWdlbmVyYXRlZC5weQor
KysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLWNsYXNzIFByZWdlbmVyYXRlZFNTTEVudmly
b25tZW50KG9iamVjdCk6Ci0gICAgIiIiU1NMIGVudmlyb25tZW50IHRvIHVzZSB3aXRoIGV4aXN0
aW5nIGtleS9jZXJ0aWZpY2F0ZSBmaWxlcwotICAgIGUuZy4gd2hlbiBydW5uaW5nIG9uIGEgc2Vy
dmVyIHdpdGggYSBwdWJsaWMgZG9tYWluIG5hbWUKLSAgICAiIiIKLSAgICBzc2xfZW5hYmxlZCA9
IFRydWUKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIGhvc3Rfa2V5X3BhdGgsIGhv
c3RfY2VydF9wYXRoLAotICAgICAgICAgICAgICAgICBjYV9jZXJ0X3BhdGg9Tm9uZSk6Ci0gICAg
ICAgIHNlbGYuX2NhX2NlcnRfcGF0aCA9IGNhX2NlcnRfcGF0aAotICAgICAgICBzZWxmLl9ob3N0
X2tleV9wYXRoID0gaG9zdF9rZXlfcGF0aAotICAgICAgICBzZWxmLl9ob3N0X2NlcnRfcGF0aCA9
IGhvc3RfY2VydF9wYXRoCi0KLSAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgotICAgICAgICByZXR1
cm4gc2VsZgotCi0gICAgZGVmIF9fZXhpdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6Ci0gICAg
ICAgIHBhc3MKLQotICAgIGRlZiBob3N0X2NlcnRfcGF0aChzZWxmLCBob3N0cyk6Ci0gICAgICAg
ICIiIlJldHVybiB0aGUga2V5IGFuZCBjZXJ0aWZpY2F0ZSBwYXRocyBmb3IgdGhlIGhvc3QiIiIK
LSAgICAgICAgcmV0dXJuIHNlbGYuX2hvc3Rfa2V5X3BhdGgsIHNlbGYuX2hvc3RfY2VydF9wYXRo
Ci0KLSAgICBkZWYgY2FfY2VydF9wYXRoKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIGNl
cnRpZmljYXRlIHBhdGggb2YgdGhlIENBIHRoYXQgc2lnbmVkIHRoZQotICAgICAgICBob3N0IGNl
cnRpZmljYXRlcywgb3IgTm9uZSBpZiB0aGF0IGlzbid0IGtub3duIiIiCi0gICAgICAgIHJldHVy
biBzZWxmLl9jYV9jZXJ0X3BhdGgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvc3NsdXRpbHMvdzNjLWltcG9ydC5sb2cgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NzbHV0aWxzL3cz
Yy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NmMwMTc5Zjg3NGU5
MzBmZGU4NDM0ODUwOTY1ZGFmOTA5MmJkMjU2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvc3NsdXRpbHMvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwy
MCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9t
IHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkg
aW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0
aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzCi0KLVRoZW4g
cnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1w
b3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0
eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3NzbHV0aWxzL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zc2x1dGlscy9iYXNlLnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zc2x1dGlscy9vcGVuc3Ns
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9z
c2x1dGlscy9wcmVnZW5lcmF0ZWQucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy8uZ2l0aHVi
L3dvcmtmbG93cy90ZXN0cy55bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvLmdpdGh1Yi93b3JrZmxvd3MvdGVz
dHMueW1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMjQ0ZGU5MzU2OWI3Nzg0MDA1
NjQxYTY1ODE3MWQ5YzdhYTUyNmE5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy8uZ2l0aHViL3dvcmtmbG93cy90ZXN0cy55bWwKKysr
IC9kZXYvbnVsbApAQCAtMSwxMTggKzAsMCBAQAotbmFtZTogdGVzdHMKLQotb246IFtwdXNoLCBw
dWxsX3JlcXVlc3RdCi0KLWpvYnM6Ci0KLSAgbGludDoKLSAgICBydW5zLW9uOiB1YnVudHUtbGF0
ZXN0Ci0gICAgc3RlcHM6Ci0gICAgICAtIHVzZXM6IGFjdGlvbnMvY2hlY2tvdXRAdjIKLSAgICAg
IC0gdXNlczogYWN0aW9ucy9zZXR1cC1weXRob25AdjEKLSAgICAgICAgd2l0aDoKLSAgICAgICAg
ICBweXRob24tdmVyc2lvbjogMy43Ci0gICAgICAtIG5hbWU6IEluc3RhbGwgcGFja2FnZXMKLSAg
ICAgICAgcnVuOiBwaXAgaW5zdGFsbCBibGFjayBmbGFrZTggaXNvcnQgbXlweQotICAgICAgLSBu
YW1lOiBSdW4gbGludGVycwotICAgICAgICBydW46IHwKLSAgICAgICAgICBmbGFrZTggZXhhbXBs
ZXMgc3JjIHRlc3RzCi0gICAgICAgICAgaXNvcnQgLWMgLWRmIC1yYyBleGFtcGxlcyBzcmMgdGVz
dHMKLSAgICAgICAgICBibGFjayAtLWNoZWNrIC0tZGlmZiBleGFtcGxlcyBzcmMgdGVzdHMKLSAg
ICAgICAgICBteXB5IGV4YW1wbGVzIHNyYwotCi0gIHRlc3Q6Ci0gICAgcnVucy1vbjogJHt7IG1h
dHJpeC5vcyB9fQotICAgIHN0cmF0ZWd5OgotICAgICAgZmFpbC1mYXN0OiBmYWxzZQotICAgICAg
bWF0cml4OgotICAgICAgICBvczogW3VidW50dS1sYXRlc3QsIG1hY29zLWxhdGVzdCwgd2luZG93
cy1sYXRlc3RdCi0gICAgICAgIHB5dGhvbjogWzMuOCwgMy43LCAzLjZdCi0gICAgc3RlcHM6Ci0g
ICAgICAtIHVzZXM6IGFjdGlvbnMvY2hlY2tvdXRAdjIKLSAgICAgIC0gdXNlczogYWN0aW9ucy9z
ZXR1cC1weXRob25AdjEKLSAgICAgICAgd2l0aDoKLSAgICAgICAgICBweXRob24tdmVyc2lvbjog
JHt7IG1hdHJpeC5weXRob24gfX0KLSAgICAgIC0gbmFtZTogRGlzYWJsZSBmaXJld2FsbCBhbmQg
Y29uZmlndXJlIGNvbXBpbGVyCi0gICAgICAgIGlmOiBtYXRyaXgub3MgPT0gJ21hY29zLWxhdGVz
dCcKLSAgICAgICAgcnVuOiB8Ci0gICAgICAgICAgc3VkbyAvdXNyL2xpYmV4ZWMvQXBwbGljYXRp
b25GaXJld2FsbC9zb2NrZXRmaWx0ZXJmdyAtLXNldGdsb2JhbHN0YXRlIG9mZgotICAgICAgICAg
IGVjaG8gIjo6c2V0LWVudiBuYW1lPUFJT1FVSUNfU0tJUF9URVNUUzo6Y2hhY2hhMjAiCi0gICAg
ICAgICAgZWNobyAiOjpzZXQtZW52IG5hbWU9Q0ZMQUdTOjotSS91c3IvbG9jYWwvb3B0L29wZW5z
c2wvaW5jbHVkZSIKLSAgICAgICAgICBlY2hvICI6OnNldC1lbnYgbmFtZT1MREZMQUdTOjotTC91
c3IvbG9jYWwvb3B0L29wZW5zc2wvbGliIgotICAgICAgLSBuYW1lOiBJbnN0YWxsIE9wZW5TU0wK
LSAgICAgICAgaWY6IG1hdHJpeC5vcyA9PSAnd2luZG93cy1sYXRlc3QnCi0gICAgICAgIHJ1bjog
fAotICAgICAgICAgIGNob2NvIGluc3RhbGwgb3BlbnNzbCAtLW5vLXByb2dyZXNzCi0gICAgICAg
ICAgZWNobyAiOjpzZXQtZW52IG5hbWU9Q0w6Oi9JQzpcUHJvZ3JhfjFcT3BlblNTTC1XaW42NFxp
bmNsdWRlIgotICAgICAgICAgIGVjaG8gIjo6c2V0LWVudiBuYW1lPUxJTks6Oi9MSUJQQVRIOkM6
XFByb2dyYX4xXE9wZW5TU0wtV2luNjRcbGliIgotICAgICAgLSBuYW1lOiBSdW4gdGVzdHMKLSAg
ICAgICAgcnVuOiB8Ci0gICAgICAgICAgcHl0aG9uIC1tIHBpcCBpbnN0YWxsIC1VIHBpcCBzZXR1
cHRvb2xzIHdoZWVsCi0gICAgICAgICAgcGlwIGluc3RhbGwgY292ZXJhZ2UKLSAgICAgICAgICBw
aXAgaW5zdGFsbCAuCi0gICAgICAgICAgY292ZXJhZ2UgcnVuIC1tIHVuaXR0ZXN0IGRpc2NvdmVy
IC12Ci0gICAgICAgICAgY292ZXJhZ2UgeG1sCi0gICAgICAgIHNoZWxsOiBiYXNoCi0gICAgICAt
IG5hbWU6IFVwbG9hZCBjb3ZlcmFnZSByZXBvcnQKLSAgICAgICAgdXNlczogY29kZWNvdi9jb2Rl
Y292LWFjdGlvbkB2MQotICAgICAgICBpZjogbWF0cml4LnB5dGhvbiAhPSAncHlweTMnCi0gICAg
ICAgIHdpdGg6Ci0gICAgICAgICAgdG9rZW46ICR7eyBzZWNyZXRzLkNPREVDT1ZfVE9LRU4gfX0K
LQotICBwYWNrYWdlLXNvdXJjZToKLSAgICBydW5zLW9uOiB1YnVudHUtbGF0ZXN0Ci0gICAgc3Rl
cHM6Ci0gICAgICAtIHVzZXM6IGFjdGlvbnMvY2hlY2tvdXRAdjIKLSAgICAgIC0gdXNlczogYWN0
aW9ucy9zZXR1cC1weXRob25AdjEKLSAgICAgICAgd2l0aDoKLSAgICAgICAgICBweXRob24tdmVy
c2lvbjogMy43Ci0gICAgICAtIG5hbWU6IEJ1aWxkIHNvdXJjZSBwYWNrYWdlCi0gICAgICAgIHJ1
bjogcHl0aG9uIHNldHVwLnB5IHNkaXN0Ci0gICAgICAtIG5hbWU6IFVwbG9hZCBzb3VyY2UgcGFj
a2FnZQotICAgICAgICB1c2VzOiBhY3Rpb25zL3VwbG9hZC1hcnRpZmFjdEB2MQotICAgICAgICB3
aXRoOgotICAgICAgICAgIG5hbWU6IGRpc3QKLSAgICAgICAgICBwYXRoOiBkaXN0LwotCi0gIHBh
Y2thZ2Utd2hlZWw6Ci0gICAgcnVucy1vbjogJHt7IG1hdHJpeC5vcyB9fQotICAgIHN0cmF0ZWd5
OgotICAgICAgbWF0cml4OgotICAgICAgICBvczogW3VidW50dS1sYXRlc3QsIG1hY29zLWxhdGVz
dCwgd2luZG93cy1sYXRlc3RdCi0gICAgc3RlcHM6Ci0gICAgICAtIHVzZXM6IGFjdGlvbnMvY2hl
Y2tvdXRAdjIKLSAgICAgIC0gdXNlczogYWN0aW9ucy9zZXR1cC1weXRob25AdjEKLSAgICAgICAg
d2l0aDoKLSAgICAgICAgICBweXRob24tdmVyc2lvbjogMy43Ci0gICAgICAtIG5hbWU6IEJ1aWxk
IHdoZWVscwotICAgICAgICBlbnY6Ci0gICAgICAgICAgQ0lCV19CRUZPUkVfQlVJTEQ6IHB5dGhv
biBzY3JpcHRzL2ZldGNoLXZlbmRvciAvdG1wL3ZlbmRvcgotICAgICAgICAgIENJQldfQkVGT1JF
X0JVSUxEX1dJTkRPV1M6IHB5dGhvbiBzY3JpcHRzXGZldGNoLXZlbmRvciBDOlxjaWJ3XHZlbmRv
cgotICAgICAgICAgIENJQldfRU5WSVJPTk1FTlQ6IEFJT1FVSUNfU0tJUF9URVNUUz1pcHY2LGxv
c3MgQ0ZMQUdTPS1JL3RtcC92ZW5kb3IvaW5jbHVkZSBMREZMQUdTPS1ML3RtcC92ZW5kb3IvbGli
Ci0gICAgICAgICAgQ0lCV19FTlZJUk9OTUVOVF9XSU5ET1dTOiBBSU9RVUlDX1NLSVBfVEVTVFM9
aXB2Nixsb3NzIENMPSIvSUM6XGNpYndcdmVuZG9yXGluY2x1ZGUiIExJTks9Ii9MSUJQQVRIOkM6
XGNpYndcdmVuZG9yXGxpYiIKLSAgICAgICAgICBDSUJXX1NLSVA6IGNwMjctKiBjcDMzLSogY3Az
NC0qIGNwMzUtKiBwcDI3LSoKLSAgICAgICAgICBDSUJXX1RFU1RfQ09NTUFORDogcHl0aG9uIC1t
IHVuaXR0ZXN0IGRpc2NvdmVyIC10IHtwcm9qZWN0fSAtcyB7cHJvamVjdH0vdGVzdHMKLSAgICAg
ICAgcnVuOiB8Ci0gICAgICAgICAgcGlwIGluc3RhbGwgY2lidWlsZHdoZWVsCi0gICAgICAgICAg
Y2lidWlsZHdoZWVsIC0tb3V0cHV0LWRpciBkaXN0Ci0gICAgICAtIG5hbWU6IFVwbG9hZCB3aGVl
bHMKLSAgICAgICAgdXNlczogYWN0aW9ucy91cGxvYWQtYXJ0aWZhY3RAdjEKLSAgICAgICAgd2l0
aDoKLSAgICAgICAgICBuYW1lOiBkaXN0Ci0gICAgICAgICAgcGF0aDogZGlzdC8KLQotICBwdWJs
aXNoOgotICAgIHJ1bnMtb246IHVidW50dS1sYXRlc3QKLSAgICBuZWVkczogW2xpbnQsIHRlc3Qs
IHBhY2thZ2Utc291cmNlLCBwYWNrYWdlLXdoZWVsXQotICAgIHN0ZXBzOgotICAgICAgLSB1c2Vz
OiBhY3Rpb25zL2NoZWNrb3V0QHYyCi0gICAgICAtIHVzZXM6IGFjdGlvbnMvZG93bmxvYWQtYXJ0
aWZhY3RAdjEKLSAgICAgICAgd2l0aDoKLSAgICAgICAgICBuYW1lOiBkaXN0Ci0gICAgICAgICAg
cGF0aDogZGlzdC8KLSAgICAgIC0gbmFtZTogUHVibGlzaCB0byBQeVBJCi0gICAgICAgIGlmOiBn
aXRodWIuZXZlbnRfbmFtZSA9PSAncHVzaCcgJiYgc3RhcnRzV2l0aChnaXRodWIuZXZlbnQucmVm
LCAncmVmcy90YWdzLycpCi0gICAgICAgIHVzZXM6IHB5cGEvZ2gtYWN0aW9uLXB5cGktcHVibGlz
aEBtYXN0ZXIKLSAgICAgICAgd2l0aDoKLSAgICAgICAgICB1c2VyOiBfX3Rva2VuX18KLSAgICAg
ICAgICBwYXNzd29yZDogJHt7IHNlY3JldHMuUFlQSV9UT0tFTiB9fQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljLy5naXRodWIvd29ya2Zsb3dzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
Ly5naXRodWIvd29ya2Zsb3dzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBjYmMwYWU5OWIyMGY0ODllZTc3YTg1NTllNTJhYzc5NDUzNGRhZTA3Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy8uZ2l0
aHViL3dvcmtmbG93cy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAg
QEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFcz
QyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJL
aXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0J
aHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhl
IFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQot
RG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVBy
b3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVl
cyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0
IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy8uZ2l0aHViL3dvcmtmbG93cy90ZXN0cy55bWwKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy9MSUNFTlNFIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL0xJQ0VOU0UKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0OTkyNGE1YWEwODM5ODZkMGJkNzA2OWVkYzZl
ZGRlYWI3Y2UwYWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL0xJQ0VOU0UKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1D
b3B5cmlnaHQgKGMpIDIwMTkgSmVyZW15IExhaW7DqS4KLUFsbCByaWdodHMgcmVzZXJ2ZWQuCi0K
LVJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6Ci0KLSAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKLSAg
ICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCi0gICAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCi0gICAgICBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgYWlvcXVpYyBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250
cmlidXRvcnMgbWF5Ci0gICAgICBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0Ci0gICAgICBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0KLVRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLUFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECi1XQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi1ESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCi1GT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTAotREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLVNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi1DQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLAotT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLU9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvTUFOSUZFU1QuaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvTUFOSUZFU1QuaW4K
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1ZTA5MDNhZjk5NGUzNGMzNWQ4YjJlZWUy
MGI0YmIzYjc2OWRlMjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL01BTklGRVNULmluCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCww
IEBACi1pbmNsdWRlIExJQ0VOU0UKLXJlY3Vyc2l2ZS1pbmNsdWRlIGRvY3MgKi5weSAqLnJzdCBN
YWtlZmlsZQotcmVjdXJzaXZlLWluY2x1ZGUgZXhhbXBsZXMgKi5odG1sICoucHkKLXJlY3Vyc2l2
ZS1pbmNsdWRlIHRlc3RzICouYmluICoucGVtICoucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy9SRUFETUUucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL1JFQURNRS5yc3QKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDIwZDUwMmE3NzAwYmE3OWQ1N2I0MjY3OTkxMjQxNzgxZGQ5YTc0NjkuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L1JFQURNRS5yc3QKKysrIC9kZXYvbnVsbApAQCAtMSwxMzEgKzAsMCBAQAotYWlvcXVpYwotPT09
PT09PQotCi18cnRkfCB8cHlwaS12fCB8cHlwaS1weXZlcnNpb25zfCB8cHlwaS1sfCB8dGVzdHN8
IHxjb2RlY292fCB8YmxhY2t8Ci0KLS4uIHxydGR8IGltYWdlOjogaHR0cHM6Ly9yZWFkdGhlZG9j
cy5vcmcvcHJvamVjdHMvYWlvcXVpYy9iYWRnZS8/dmVyc2lvbj1sYXRlc3QKLSAgICA6dGFyZ2V0
OiBodHRwczovL2Fpb3F1aWMucmVhZHRoZWRvY3MuaW8vCi0KLS4uIHxweXBpLXZ8IGltYWdlOjog
aHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3YvYWlvcXVpYy5zdmcKLSAgICA6dGFyZ2V0OiBo
dHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL2Fpb3F1aWMKLQotLi4gfHB5cGktcHl2ZXJzaW9u
c3wgaW1hZ2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvcHl2ZXJzaW9ucy9haW9xdWlj
LnN2ZwotICAgIDp0YXJnZXQ6IGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvYWlvcXVpYwot
Ci0uLiB8cHlwaS1sfCBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS9sL2Fpb3F1
aWMuc3ZnCi0gICAgOnRhcmdldDogaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9haW9xdWlj
Ci0KLS4uIHx0ZXN0c3wgaW1hZ2U6OiBodHRwczovL2dpdGh1Yi5jb20vYWlvcnRjL2Fpb3F1aWMv
d29ya2Zsb3dzL3Rlc3RzL2JhZGdlLnN2ZwotICAgIDp0YXJnZXQ6IGh0dHBzOi8vZ2l0aHViLmNv
bS9haW9ydGMvYWlvcXVpYy9hY3Rpb25zCi0KLS4uIHxjb2RlY292fCBpbWFnZTo6IGh0dHBzOi8v
aW1nLnNoaWVsZHMuaW8vY29kZWNvdi9jL2dpdGh1Yi9haW9ydGMvYWlvcXVpYy5zdmcKLSAgICA6
dGFyZ2V0OiBodHRwczovL2NvZGVjb3YuaW8vZ2gvYWlvcnRjL2Fpb3F1aWMKLQotLi4gfGJsYWNr
fCBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvY29kZSUyMHN0eWxlLWJsYWNr
LTAwMDAwMC5zdmcKLSAgICA6dGFyZ2V0OiBodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL2JsYWNr
Ci0KLVdoYXQgaXMgYGBhaW9xdWljYGA/Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1gYGFpb3F1
aWNgYCBpcyBhIGxpYnJhcnkgZm9yIHRoZSBRVUlDIG5ldHdvcmsgcHJvdG9jb2wgaW4gUHl0aG9u
LiBJdCBmZWF0dXJlcwotYSBtaW5pbWFsIFRMUyAxLjMgaW1wbGVtZW50YXRpb24sIGEgUVVJQyBz
dGFjayBhbmQgYW4gSFRUUC8zIHN0YWNrLgotCi1RVUlDIHN0YW5kYXJkaXNhdGlvbiBpcyBub3Qg
ZmluYWxpc2VkIHlldCwgYnV0IGBgYWlvcXVpY2BgIGNsb3NlbHkgdHJhY2tzIHRoZQotc3BlY2lm
aWNhdGlvbiBkcmFmdHMgYW5kIGlzIHJlZ3VsYXJseSB0ZXN0ZWQgZm9yIGludGVyb3BlcmFiaWxp
dHkgYWdhaW5zdCBvdGhlcgotYFFVSUMgaW1wbGVtZW50YXRpb25zYF8uCi0KLVRvIGxlYXJuIG1v
cmUgYWJvdXQgYGBhaW9xdWljYGAgcGxlYXNlIGByZWFkIHRoZSBkb2N1bWVudGF0aW9uYF8uCi0K
LVdoeSBzaG91bGQgSSB1c2UgYGBhaW9xdWljYGA/Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotCi1gYGFpb3F1aWNgYCBoYXMgYmVlbiBkZXNpZ25lZCB0byBiZSBlbWJlZGRlZCBpbnRv
IFB5dGhvbiBjbGllbnQgYW5kIHNlcnZlcgotbGlicmFyaWVzIHdpc2hpbmcgdG8gc3VwcG9ydCBR
VUlDIGFuZCAvIG9yIEhUVFAvMy4gVGhlIGdvYWwgaXMgdG8gcHJvdmlkZSBhCi1jb21tb24gY29k
ZWJhc2UgZm9yIFB5dGhvbiBsaWJyYXJpZXMgaW4gdGhlIGhvcGUgb2YgYXZvaWRpbmcgZHVwbGlj
YXRlZCBlZmZvcnQuCi0KLUJvdGggdGhlIFFVSUMgYW5kIHRoZSBIVFRQLzMgQVBJcyBmb2xsb3cg
dGhlICJicmluZyB5b3VyIG93biBJL08iIHBhdHRlcm4sCi1sZWF2aW5nIGFjdHVhbCBJL08gb3Bl
cmF0aW9ucyB0byB0aGUgQVBJIHVzZXIuIFRoaXMgYXBwcm9hY2ggaGFzIGEgbnVtYmVyIG9mCi1h
ZHZhbnRhZ2VzIGluY2x1ZGluZyBtYWtpbmcgdGhlIGNvZGUgdGVzdGFibGUgYW5kIGFsbG93aW5n
IGludGVncmF0aW9uIHdpdGgKLWRpZmZlcmVudCBjb25jdXJyZW5jeSBtb2RlbHMuCi0KLUZlYXR1
cmVzCi0tLS0tLS0tLQotCi0tIFFVSUMgc3RhY2sgY29uZm9ybWluZyB3aXRoIGRyYWZ0LTI3Ci0t
IEhUVFAvMyBzdGFjayBjb25mb3JtaW5nIHdpdGggZHJhZnQtMjcKLS0gbWluaW1hbCBUTFMgMS4z
IGltcGxlbWVudGF0aW9uCi0tIElQdjQgYW5kIElQdjYgc3VwcG9ydAotLSBjb25uZWN0aW9uIG1p
Z3JhdGlvbiBhbmQgTkFUIHJlYmluZGluZwotLSBsb2dnaW5nIFRMUyB0cmFmZmljIHNlY3JldHMK
LS0gbG9nZ2luZyBRVUlDIGV2ZW50cyBpbiBRTE9HIGZvcm1hdAotLSBIVFRQLzMgc2VydmVyIHB1
c2ggc3VwcG9ydAotCi1SZXF1aXJlbWVudHMKLS0tLS0tLS0tLS0tLQotCi1gYGFpb3F1aWNgYCBy
ZXF1aXJlcyBQeXRob24gMy42IG9yIGJldHRlciwgYW5kIHRoZSBPcGVuU1NMIGRldmVsb3BtZW50
IGhlYWRlcnMuCi0KLUxpbnV4Ci0uLi4uLgotCi1PbiBEZWJpYW4vVWJ1bnR1IHJ1bjoKLQotLi4g
Y29kZS1ibG9jazo6IGNvbnNvbGUKLQotICAgJCBzdWRvIGFwdCBpbnN0YWxsIGxpYnNzbC1kZXYg
cHl0aG9uMy1kZXYKLQotT24gQWxwaW5lIExpbnV4IHlvdSB3aWxsIGFsc28gbmVlZCB0aGUgZm9s
bG93aW5nOgotCi0uLiBjb2RlLWJsb2NrOjogY29uc29sZQotCi0gICAkIHN1ZG8gYXB0IGluc3Rh
bGwgYnNkLWNvbXBhdC1oZWFkZXJzIGxpYmZmaS1kZXYKLQotT1MgWAotLi4uLgotCi1PbiBPUyBY
IHJ1bjoKLQotLi4gY29kZS1ibG9jazo6IGNvbnNvbGUKLQotICAgJCBicmV3IGluc3RhbGwgb3Bl
bnNzbAotCi1Zb3Ugd2lsbCBuZWVkIHRvIHNldCBzb21lIGVudmlyb25tZW50IHZhcmlhYmxlcyB0
byBsaW5rIGFnYWluc3QgT3BlblNTTDoKLQotLi4gY29kZS1ibG9jazo6IGNvbnNvbGUKLQotICAg
JCBleHBvcnQgQ0ZMQUdTPS1JL3Vzci9sb2NhbC9vcHQvb3BlbnNzbC9pbmNsdWRlCi0gICAkIGV4
cG9ydCBMREZMQUdTPS1ML3Vzci9sb2NhbC9vcHQvb3BlbnNzbC9saWIKLQotV2luZG93cwotLi4u
Li4uLgotCi1PbiBXaW5kb3dzIHRoZSBlYXNpZXN0IHdheSB0byBpbnN0YWxsIE9wZW5TU0wgaXMg
dG8gdXNlIGBDaG9jb2xhdGV5YF8uCi0KLS4uIGNvZGUtYmxvY2s6OiBjb25zb2xlCi0KLSAgID4g
Y2hvY28gaW5zdGFsbCBvcGVuc3NsCi0KLVlvdSB3aWxsIG5lZWQgdG8gc2V0IHNvbWUgZW52aXJv
bm1lbnQgdmFyaWFibGVzIHRvIGxpbmsgYWdhaW5zdCBPcGVuU1NMOgotCi0uLiBjb2RlLWJsb2Nr
OjogY29uc29sZQotCi0gID4gJEVudjpDTCA9ICIvSUM6XFByb2dyYX4xXE9wZW5TU0wtV2luNjRc
aW5jbHVkZSIKLSAgPiAkRW52OkxJTksgPSAiL0xJQlBBVEg6QzpcUHJvZ3JhfjFcT3BlblNTTC1X
aW42NFxsaWIiCi0KLVJ1bm5pbmcgdGhlIGV4YW1wbGVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
Ci1gYWlvcXVpY2AgY29tZXMgd2l0aCBhIG51bWJlciBvZiBleGFtcGxlcyBpbGx1c3RyYXRpbmcg
dmFyaW91cyBRVUlDIHVzZWNhc2VzLgotCi1Zb3UgY2FuIGJyb3dzZSB0aGVzZSBleGFtcGxlcyBo
ZXJlOiBodHRwczovL2dpdGh1Yi5jb20vYWlvcnRjL2Fpb3F1aWMvdHJlZS9tYXN0ZXIvZXhhbXBs
ZXMKLQotTGljZW5zZQotLS0tLS0tLQotCi1gYGFpb3F1aWNgYCBpcyByZWxlYXNlZCB1bmRlciB0
aGUgYEJTRCBsaWNlbnNlYF8uCi0KLS4uIF9yZWFkIHRoZSBkb2N1bWVudGF0aW9uOiBodHRwczov
L2Fpb3F1aWMucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0LwotLi4gX1FVSUMgaW1wbGVtZW50YXRp
b25zOiBodHRwczovL2dpdGh1Yi5jb20vcXVpY3dnL2Jhc2UtZHJhZnRzL3dpa2kvSW1wbGVtZW50
YXRpb25zCi0uLiBfY3J5cHRvZ3JhcGh5OiBodHRwczovL2NyeXB0b2dyYXBoeS5pby8KLS4uIF9D
aG9jb2xhdGV5OiBodHRwczovL2Nob2NvbGF0ZXkub3JnLwotLi4gX0JTRCBsaWNlbnNlOiBodHRw
czovL2Fpb3F1aWMucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0L2xpY2Vuc2UuaHRtbApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvTWFrZWZpbGUgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9NYWtl
ZmlsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2NiNzM4Yjk2MTdmYjJkOWRkMDY2
ODRiZDIyNGYwYWQwM2UwNmEwNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9NYWtlZmlsZQorKysgL2Rldi9udWxsCkBAIC0x
LDIwICswLDAgQEAKLSMgTWluaW1hbCBtYWtlZmlsZSBmb3IgU3BoaW54IGRvY3VtZW50YXRpb24K
LSMKLQotIyBZb3UgY2FuIHNldCB0aGVzZSB2YXJpYWJsZXMgZnJvbSB0aGUgY29tbWFuZCBsaW5l
LgotU1BISU5YT1BUUyAgICA9Ci1TUEhJTlhCVUlMRCAgID0gc3BoaW54LWJ1aWxkCi1TUEhJTlhQ
Uk9KICAgID0gYWlvcXVpYwotU09VUkNFRElSICAgICA9IC4KLUJVSUxERElSICAgICAgPSBfYnVp
bGQKLQotIyBQdXQgaXQgZmlyc3Qgc28gdGhhdCAibWFrZSIgd2l0aG91dCBhcmd1bWVudCBpcyBs
aWtlICJtYWtlIGhlbHAiLgotaGVscDoKLQlAJChTUEhJTlhCVUlMRCkgLU0gaGVscCAiJChTT1VS
Q0VESVIpIiAiJChCVUlMRERJUikiICQoU1BISU5YT1BUUykgJChPKQotCi0uUEhPTlk6IGhlbHAg
TWFrZWZpbGUKLQotIyBDYXRjaC1hbGwgdGFyZ2V0OiByb3V0ZSBhbGwgdW5rbm93biB0YXJnZXRz
IHRvIFNwaGlueCB1c2luZyB0aGUgbmV3Ci0jICJtYWtlIG1vZGUiIG9wdGlvbi4gICQoTykgaXMg
bWVhbnQgYXMgYSBzaG9ydGN1dCBmb3IgJChTUEhJTlhPUFRTKS4KLSU6IE1ha2VmaWxlCi0JQCQo
U1BISU5YQlVJTEQpIC1NICRAICIkKFNPVVJDRURJUikiICIkKEJVSUxERElSKSIgJChTUEhJTlhP
UFRTKSAkKE8pClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL2RvY3MvYXN5bmNpby5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9hc3luY2lvLnJzdApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmVjNTY4MDkwMTQ2MGIwMzI4M2E0YWM2Y2Y2
NTRlOGMyYWFjNjBmYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9hc3luY2lvLnJzdAorKysgL2Rldi9udWxsCkBAIC0xLDMy
ICswLDAgQEAKLWFzeW5jaW8gQVBJCi09PT09PT09PT09PQotCi1UaGUgYXN5bmNpbyBBUEkgcHJv
dmlkZXMgYSBoaWdoLWxldmVsIFFVSUMgQVBJIGJ1aWx0IG9uIHRvcCBvZiA6bW9kOmBhc3luY2lv
YCwKLVB5dGhvbidzIHN0YW5kYXJkIGFzeW5jaHJvbm91cyBJL08gZnJhbWV3b3JrLgotCi1gYGFp
b3F1aWNgYCBjb21lcyB3aXRoIGEgc2VsZWN0aW9uIG9mIGV4YW1wbGVzLCBpbmNsdWRpbmc6Ci0K
LS0gYW4gSFRUUC8zIGNsaWVudAotLSBhbiBIVFRQLzMgc2VydmVyCi0KLVRoZSBleGFtcGxlcyBj
YW4gYmUgYnJvd3NlZCBvbiBHaXRIdWI6Ci0KLWh0dHBzOi8vZ2l0aHViLmNvbS9haW9ydGMvYWlv
cXVpYy90cmVlL21hc3Rlci9leGFtcGxlcwotCi0uLiBhdXRvbW9kdWxlOjogYWlvcXVpYy5hc3lu
Y2lvCi0KLUNsaWVudAotLS0tLS0tCi0KLSAgICAuLiBhdXRvZnVuY3Rpb246OiBjb25uZWN0Ci0K
LVNlcnZlcgotLS0tLS0tCi0KLSAgICAuLiBhdXRvZnVuY3Rpb246OiBzZXJ2ZQotCi1Db21tb24K
LS0tLS0tLQotCi0gICAgLi4gYXV0b2NsYXNzOjogUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbAotICAg
ICAgICA6bWVtYmVyczoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL2NvbmYucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvZG9jcy9jb25mLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBm
ODkwNjJhYzk3NTMyNmE0N2Y4OGVkYWU0ZDhkMzQzY2ZlNzYwYzBjLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL2NvbmYucHkK
KysrIC9kZXYvbnVsbApAQCAtMSwyMDUgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwot
IyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KLSMKLSMgYWlvcXVpYyBkb2N1bWVudGF0aW9uIGJ1aWxk
IGNvbmZpZ3VyYXRpb24gZmlsZSwgY3JlYXRlZCBieQotIyBzcGhpbngtcXVpY2tzdGFydCBvbiBU
aHUgRmViICA4IDE3OjIyOjE0IDIwMTguCi0jCi0jIFRoaXMgZmlsZSBpcyBleGVjZmlsZSgpZCB3
aXRoIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBzZXQgdG8gaXRzCi0jIGNvbnRhaW5pbmcgZGlyLgot
IwotIyBOb3RlIHRoYXQgbm90IGFsbCBwb3NzaWJsZSBjb25maWd1cmF0aW9uIHZhbHVlcyBhcmUg
cHJlc2VudCBpbiB0aGlzCi0jIGF1dG9nZW5lcmF0ZWQgZmlsZS4KLSMKLSMgQWxsIGNvbmZpZ3Vy
YXRpb24gdmFsdWVzIGhhdmUgYSBkZWZhdWx0OyB2YWx1ZXMgdGhhdCBhcmUgY29tbWVudGVkIG91
dAotIyBzZXJ2ZSB0byBzaG93IHRoZSBkZWZhdWx0LgotCi1pbXBvcnQgc3lzLCBvcwotCi0jIElm
IGV4dGVuc2lvbnMgKG9yIG1vZHVsZXMgdG8gZG9jdW1lbnQgd2l0aCBhdXRvZG9jKSBhcmUgaW4g
YW5vdGhlciBkaXJlY3RvcnksCi0jIGFkZCB0aGVzZSBkaXJlY3RvcmllcyB0byBzeXMucGF0aCBo
ZXJlLiBJZiB0aGUgZGlyZWN0b3J5IGlzIHJlbGF0aXZlIHRvIHRoZQotIyBkb2N1bWVudGF0aW9u
IHJvb3QsIHVzZSBvcy5wYXRoLmFic3BhdGggdG8gbWFrZSBpdCBhYnNvbHV0ZSwgbGlrZSBzaG93
biBoZXJlLgotc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguYWJzcGF0aCgnLi4nKSkKLQotCi1j
bGFzcyBNb2NrQnVmZmVyOgotICAgIEJ1ZmZlciA9IE5vbmUKLSAgICBCdWZmZXJSZWFkRXJyb3Ig
PSBOb25lCi0gICAgQnVmZmVyV3JpdGVFcnJvciA9IE5vbmUKLQotCi1jbGFzcyBNb2NrQ3J5cHRv
OgotICAgIEFFQUQgPSBOb25lCi0gICAgQ3J5cHRvRXJyb3IgPSBWYWx1ZUVycm9yCi0gICAgSGVh
ZGVyUHJvdGVjdGlvbiA9IE5vbmUKLQotCi1jbGFzcyBNb2NrUHlsc3FwYWNrOgotICAgIERlY29k
ZXIgPSBOb25lCi0gICAgRW5jb2RlciA9IE5vbmUKLSAgICBTdHJlYW1CbG9ja2VkID0gTm9uZQot
Ci0KLXN5cy5tb2R1bGVzLnVwZGF0ZSh7Ci0gICAgImFpb3F1aWMuX2J1ZmZlciI6IE1vY2tCdWZm
ZXIoKSwKLSAgICAiYWlvcXVpYy5fY3J5cHRvIjogTW9ja0NyeXB0bygpLAotICAgICJweWxzcXBh
Y2siOiBNb2NrUHlsc3FwYWNrKCksCi19KQotCi0jIC0tIEdlbmVyYWwgY29uZmlndXJhdGlvbiAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotIyBJZiB5
b3VyIGRvY3VtZW50YXRpb24gbmVlZHMgYSBtaW5pbWFsIFNwaGlueCB2ZXJzaW9uLCBzdGF0ZSBp
dCBoZXJlLgotIwotIyBuZWVkc19zcGhpbnggPSAnMS4wJwotCi0jIEFkZCBhbnkgU3BoaW54IGV4
dGVuc2lvbiBtb2R1bGUgbmFtZXMgaGVyZSwgYXMgc3RyaW5ncy4gVGhleSBjYW4gYmUKLSMgZXh0
ZW5zaW9ucyBjb21pbmcgd2l0aCBTcGhpbnggKG5hbWVkICdzcGhpbnguZXh0LionKSBvciB5b3Vy
IGN1c3RvbQotIyBvbmVzLgotZXh0ZW5zaW9ucyA9IFsKLSAgICAnc3BoaW54LmV4dC5hdXRvZG9j
JywKLSAgICAnc3BoaW54LmV4dC5pbnRlcnNwaGlueCcsCi0gICAgJ3NwaGlueF9hdXRvZG9jX3R5
cGVoaW50cycsCi0gICAgJ3NwaGlueGNvbnRyaWIuYXN5bmNpbycsCi1dCi1pbnRlcnNwaGlueF9t
YXBwaW5nID0gewotICAgICdjcnlwdG9ncmFwaHknOiAoJ2h0dHBzOi8vY3J5cHRvZ3JhcGh5Lmlv
L2VuL2xhdGVzdCcsIE5vbmUpLAotICAgICdweXRob24nOiAoJ2h0dHBzOi8vZG9jcy5weXRob24u
b3JnLzMnLCBOb25lKSwKLX0KLQotIyBBZGQgYW55IHBhdGhzIHRoYXQgY29udGFpbiB0ZW1wbGF0
ZXMgaGVyZSwgcmVsYXRpdmUgdG8gdGhpcyBkaXJlY3RvcnkuCi10ZW1wbGF0ZXNfcGF0aCA9IFsn
X3RlbXBsYXRlcyddCi0KLSMgVGhlIHN1ZmZpeChlcykgb2Ygc291cmNlIGZpbGVuYW1lcy4KLSMg
WW91IGNhbiBzcGVjaWZ5IG11bHRpcGxlIHN1ZmZpeCBhcyBhIGxpc3Qgb2Ygc3RyaW5nOgotIwot
IyBzb3VyY2Vfc3VmZml4ID0gWycucnN0JywgJy5tZCddCi1zb3VyY2Vfc3VmZml4ID0gJy5yc3Qn
Ci0KLSMgVGhlIG1hc3RlciB0b2N0cmVlIGRvY3VtZW50LgotbWFzdGVyX2RvYyA9ICdpbmRleCcK
LQotIyBHZW5lcmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwcm9qZWN0LgotcHJvamVjdCA9ICdh
aW9xdWljJwotY29weXJpZ2h0ID0gdScyMDE5LCBKZXJlbXkgTGFpbsOpJwotYXV0aG9yID0gdSdK
ZXJlbXkgTGFpbsOpJwotCi0jIFRoZSB2ZXJzaW9uIGluZm8gZm9yIHRoZSBwcm9qZWN0IHlvdSdy
ZSBkb2N1bWVudGluZywgYWN0cyBhcyByZXBsYWNlbWVudCBmb3IKLSMgfHZlcnNpb258IGFuZCB8
cmVsZWFzZXwsIGFsc28gdXNlZCBpbiB2YXJpb3VzIG90aGVyIHBsYWNlcyB0aHJvdWdob3V0IHRo
ZQotIyBidWlsdCBkb2N1bWVudHMuCi0jCi0jIFRoZSBzaG9ydCBYLlkgdmVyc2lvbi4KLXZlcnNp
b24gPSAnJwotIyBUaGUgZnVsbCB2ZXJzaW9uLCBpbmNsdWRpbmcgYWxwaGEvYmV0YS9yYyB0YWdz
LgotcmVsZWFzZSA9ICcnCi0KLSMgVGhlIGxhbmd1YWdlIGZvciBjb250ZW50IGF1dG9nZW5lcmF0
ZWQgYnkgU3BoaW54LiBSZWZlciB0byBkb2N1bWVudGF0aW9uCi0jIGZvciBhIGxpc3Qgb2Ygc3Vw
cG9ydGVkIGxhbmd1YWdlcy4KLSMKLSMgVGhpcyBpcyBhbHNvIHVzZWQgaWYgeW91IGRvIGNvbnRl
bnQgdHJhbnNsYXRpb24gdmlhIGdldHRleHQgY2F0YWxvZ3MuCi0jIFVzdWFsbHkgeW91IHNldCAi
bGFuZ3VhZ2UiIGZyb20gdGhlIGNvbW1hbmQgbGluZSBmb3IgdGhlc2UgY2FzZXMuCi1sYW5ndWFn
ZSA9IE5vbmUKLQotIyBMaXN0IG9mIHBhdHRlcm5zLCByZWxhdGl2ZSB0byBzb3VyY2UgZGlyZWN0
b3J5LCB0aGF0IG1hdGNoIGZpbGVzIGFuZAotIyBkaXJlY3RvcmllcyB0byBpZ25vcmUgd2hlbiBs
b29raW5nIGZvciBzb3VyY2UgZmlsZXMuCi0jIFRoaXMgcGF0dGVybnMgYWxzbyBlZmZlY3QgdG8g
aHRtbF9zdGF0aWNfcGF0aCBhbmQgaHRtbF9leHRyYV9wYXRoCi1leGNsdWRlX3BhdHRlcm5zID0g
WydfYnVpbGQnLCAnVGh1bWJzLmRiJywgJy5EU19TdG9yZSddCi0KLSMgVGhlIG5hbWUgb2YgdGhl
IFB5Z21lbnRzIChzeW50YXggaGlnaGxpZ2h0aW5nKSBzdHlsZSB0byB1c2UuCi1weWdtZW50c19z
dHlsZSA9ICdzcGhpbngnCi0KLSMgSWYgdHJ1ZSwgYHRvZG9gIGFuZCBgdG9kb0xpc3RgIHByb2R1
Y2Ugb3V0cHV0LCBlbHNlIHRoZXkgcHJvZHVjZSBub3RoaW5nLgotdG9kb19pbmNsdWRlX3RvZG9z
ID0gRmFsc2UKLQotCi0jIC0tIE9wdGlvbnMgZm9yIEhUTUwgb3V0cHV0IC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotIyBUaGUgdGhlbWUgdG8gdXNlIGZv
ciBIVE1MIGFuZCBIVE1MIEhlbHAgcGFnZXMuICBTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yCi0j
IGEgbGlzdCBvZiBidWlsdGluIHRoZW1lcy4KLSMKLWh0bWxfdGhlbWUgPSAnYWxhYmFzdGVyJwot
Ci0jIFRoZW1lIG9wdGlvbnMgYXJlIHRoZW1lLXNwZWNpZmljIGFuZCBjdXN0b21pemUgdGhlIGxv
b2sgYW5kIGZlZWwgb2YgYSB0aGVtZQotIyBmdXJ0aGVyLiAgRm9yIGEgbGlzdCBvZiBvcHRpb25z
IGF2YWlsYWJsZSBmb3IgZWFjaCB0aGVtZSwgc2VlIHRoZQotIyBkb2N1bWVudGF0aW9uLgotIwot
aHRtbF90aGVtZV9vcHRpb25zID0gewotICAgICdkZXNjcmlwdGlvbic6ICdBIGxpYnJhcnkgZm9y
IFFVSUMgaW4gUHl0aG9uLicsCi0gICAgJ2dpdGh1Yl9idXR0b24nOiBUcnVlLAotICAgICdnaXRo
dWJfdXNlcic6ICdhaW9ydGMnLAotICAgICdnaXRodWJfcmVwbyc6ICdhaW9xdWljJywKLX0KLQot
IyBBZGQgYW55IHBhdGhzIHRoYXQgY29udGFpbiBjdXN0b20gc3RhdGljIGZpbGVzIChzdWNoIGFz
IHN0eWxlIHNoZWV0cykgaGVyZSwKLSMgcmVsYXRpdmUgdG8gdGhpcyBkaXJlY3RvcnkuIFRoZXkg
YXJlIGNvcGllZCBhZnRlciB0aGUgYnVpbHRpbiBzdGF0aWMgZmlsZXMsCi0jIHNvIGEgZmlsZSBu
YW1lZCAiZGVmYXVsdC5jc3MiIHdpbGwgb3ZlcndyaXRlIHRoZSBidWlsdGluICJkZWZhdWx0LmNz
cyIuCi1odG1sX3N0YXRpY19wYXRoID0gWydfc3RhdGljJ10KLQotIyBDdXN0b20gc2lkZWJhciB0
ZW1wbGF0ZXMsIG11c3QgYmUgYSBkaWN0aW9uYXJ5IHRoYXQgbWFwcyBkb2N1bWVudCBuYW1lcwot
IyB0byB0ZW1wbGF0ZSBuYW1lcy4KLSMKLSMgVGhpcyBpcyByZXF1aXJlZCBmb3IgdGhlIGFsYWJh
c3RlciB0aGVtZQotIyByZWZzOiBodHRwOi8vYWxhYmFzdGVyLnJlYWR0aGVkb2NzLmlvL2VuL2xh
dGVzdC9pbnN0YWxsYXRpb24uaHRtbCNzaWRlYmFycwotaHRtbF9zaWRlYmFycyA9IHsKLSAgICAn
KionOiBbCi0gICAgICAgICdhYm91dC5odG1sJywKLSAgICAgICAgJ25hdmlnYXRpb24uaHRtbCcs
Ci0gICAgICAgICdyZWxhdGlvbnMuaHRtbCcsCi0gICAgICAgICdzZWFyY2hib3guaHRtbCcsCi0g
ICAgXQotfQotCi0KLSMgLS0gT3B0aW9ucyBmb3IgSFRNTEhlbHAgb3V0cHV0IC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jIE91dHB1dCBmaWxlIGJhc2UgbmFt
ZSBmb3IgSFRNTCBoZWxwIGJ1aWxkZXIuCi1odG1saGVscF9iYXNlbmFtZSA9ICdhaW9xdWljZG9j
JwotCi0KLSMgLS0gT3B0aW9ucyBmb3IgTGFUZVggb3V0cHV0IC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1sYXRleF9lbGVtZW50cyA9IHsKLSAgICAjIFRo
ZSBwYXBlciBzaXplICgnbGV0dGVycGFwZXInIG9yICdhNHBhcGVyJykuCi0gICAgIwotICAgICMg
J3BhcGVyc2l6ZSc6ICdsZXR0ZXJwYXBlcicsCi0KLSAgICAjIFRoZSBmb250IHNpemUgKCcxMHB0
JywgJzExcHQnIG9yICcxMnB0JykuCi0gICAgIwotICAgICMgJ3BvaW50c2l6ZSc6ICcxMHB0JywK
LQotICAgICMgQWRkaXRpb25hbCBzdHVmZiBmb3IgdGhlIExhVGVYIHByZWFtYmxlLgotICAgICMK
LSAgICAjICdwcmVhbWJsZSc6ICcnLAotCi0gICAgIyBMYXRleCBmaWd1cmUgKGZsb2F0KSBhbGln
bm1lbnQKLSAgICAjCi0gICAgIyAnZmlndXJlX2FsaWduJzogJ2h0YnAnLAotfQotCi0jIEdyb3Vw
aW5nIHRoZSBkb2N1bWVudCB0cmVlIGludG8gTGFUZVggZmlsZXMuIExpc3Qgb2YgdHVwbGVzCi0j
IChzb3VyY2Ugc3RhcnQgZmlsZSwgdGFyZ2V0IG5hbWUsIHRpdGxlLAotIyAgYXV0aG9yLCBkb2N1
bWVudGNsYXNzIFtob3d0bywgbWFudWFsLCBvciBvd24gY2xhc3NdKS4KLWxhdGV4X2RvY3VtZW50
cyA9IFsKLSAgICAobWFzdGVyX2RvYywgJ2Fpb3F1aWMudGV4JywgJ2Fpb3F1aWMgRG9jdW1lbnRh
dGlvbicsCi0gICAgIGF1dGhvciwgJ21hbnVhbCcpLAotXQotCi0KLSMgLS0gT3B0aW9ucyBmb3Ig
bWFudWFsIHBhZ2Ugb3V0cHV0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotCi0jIE9uZSBlbnRyeSBwZXIgbWFudWFsIHBhZ2UuIExpc3Qgb2YgdHVwbGVzCi0jIChzb3Vy
Y2Ugc3RhcnQgZmlsZSwgbmFtZSwgZGVzY3JpcHRpb24sIGF1dGhvcnMsIG1hbnVhbCBzZWN0aW9u
KS4KLW1hbl9wYWdlcyA9IFsKLSAgICAobWFzdGVyX2RvYywgJ2Fpb3F1aWMnLCAnYWlvcXVpYyBE
b2N1bWVudGF0aW9uJywKLSAgICAgW2F1dGhvcl0sIDEpCi1dCi0KLQotIyAtLSBPcHRpb25zIGZv
ciBUZXhpbmZvIG91dHB1dCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi0KLSMgR3JvdXBpbmcgdGhlIGRvY3VtZW50IHRyZWUgaW50byBUZXhpbmZvIGZpbGVzLiBM
aXN0IG9mIHR1cGxlcwotIyAoc291cmNlIHN0YXJ0IGZpbGUsIHRhcmdldCBuYW1lLCB0aXRsZSwg
YXV0aG9yLAotIyAgZGlyIG1lbnUgZW50cnksIGRlc2NyaXB0aW9uLCBjYXRlZ29yeSkKLXRleGlu
Zm9fZG9jdW1lbnRzID0gWwotICAgIChtYXN0ZXJfZG9jLCAnYWlvcXVpYycsICdhaW9xdWljIERv
Y3VtZW50YXRpb24nLAotICAgICBhdXRob3IsICdhaW9xdWljJywgJ09uZSBsaW5lIGRlc2NyaXB0
aW9uIG9mIHByb2plY3QuJywKLSAgICAgJ01pc2NlbGxhbmVvdXMnKSwKLV0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy9kb2NzL2Rlc2lnbi5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9kZXNpZ24u
cnN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NTI5ZTc2MmY1YTYzNGUyYTM1Nzkx
ZTQ2NWI5MDQ5YmE0YmU2MjE4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL2Rlc2lnbi5yc3QKKysrIC9kZXYvbnVsbApAQCAt
MSwzNyArMCwwIEBACi1EZXNpZ24KLT09PT09PQotCi1TYW5zLUlPIEFQSXMKLS4uLi4uLi4uLi4u
LgotCi1Cb3RoIHRoZSBRVUlDIGFuZCB0aGUgSFRUUC8zIEFQSXMgZm9sbG93IHRoZSBgc2FucyBJ
L09gXyBwYXR0ZXJuLCBsZWF2aW5nCi1hY3R1YWwgSS9PIG9wZXJhdGlvbnMgdG8gdGhlIEFQSSB1
c2VyLiBUaGlzIGFwcHJvYWNoIGhhcyBhIG51bWJlciBvZgotYWR2YW50YWdlcyBpbmNsdWRpbmcg
bWFraW5nIHRoZSBjb2RlIHRlc3RhYmxlIGFuZCBhbGxvd2luZyBpbnRlZ3JhdGlvbiB3aXRoCi1k
aWZmZXJlbnQgY29uY3VycmVuY3kgbW9kZWxzLgotCi1UTFMgYW5kIGVuY3J5cHRpb24KLS4uLi4u
Li4uLi4uLi4uLi4uLgotCi1UTFMgMS4zCi0rKysrKysrCi0KLWBgYWlvcXVpY2BgIGZlYXR1cmVz
IGEgbWluaW1hbCBUTFMgMS4zIGltcGxlbWVudGF0aW9uIGJ1aWx0IHVwb24gdGhlCi1gY3J5cHRv
Z3JhcGh5YF8gbGlicmFyeS4gVGhpcyBpcyBiZWNhdXNlIFFVSUMgcmVxdWlyZXMgc29tZSBBUElz
IHdoaWNoIGFyZQotY3VycmVudGx5IHVuYXZhaWxhYmxlIGluIG1haW5zdHJlYW0gVExTIGltcGxl
bWVudGF0aW9ucyBzdWNoIGFzIE9wZW5TU0w6Ci0KLS0gdGhlIGFiaWxpdHkgdG8gZXh0cmFjdCB0
cmFmZmljIHNlY3JldHMKLQotLSB0aGUgYWJpbGl0eSB0byBvcGVyYXRlIGRpcmVjdGx5IG9uIFRM
UyBtZXNzYWdlcywgd2l0aG91dCB1c2luZyB0aGUgVExTCi0gIHJlY29yZCBsYXllcgotCi1IZWFk
ZXIgcHJvdGVjdGlvbiBhbmQgcGF5bG9hZCBlbmNyeXB0aW9uCi0rKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrCi0KLVFVSUMgbWFrZXMgZXh0ZW5zaXZlIHVzZSBvZiBjcnlw
dG9ncmFwaGljIG9wZXJhdGlvbnMgdG8gcHJvdGVjdCBRVUlDIHBhY2tldAotaGVhZGVycyBhbmQg
ZW5jcnlwdCBwYWNrZXQgcGF5bG9hZHMuIFRoZXNlIG9wZXJhdGlvbnMgb2NjdXIgZm9yIGV2ZXJ5
IHNpbmdsZQotcGFja2V0IGFuZCBhcmUgYSBkZXRlcm1pbmluZyBmYWN0b3IgZm9yIHBlcmZvcm1h
bmNlLiBGb3IgdGhpcyByZWFzb24sIHRoZXkKLWFyZSBpbXBsZW1lbnRlZCBhcyBhIEMgZXh0ZW5z
aW9uIGxpbmtlZCB0byBgT3BlblNTTGBfLgotCi0uLiBfc2FucyBJL086IGh0dHBzOi8vc2Fucy1p
by5yZWFkdGhlZG9jcy5pby8KLS4uIF9jcnlwdG9ncmFwaHk6IGh0dHBzOi8vY3J5cHRvZ3JhcGh5
LmlvLwotLi4gX09wZW5TU0w6IGh0dHBzOi8vd3d3Lm9wZW5zc2wub3JnLwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL2RvY3MvaDMucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvaDMucnN0CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMGUyMjAxYzQzZDQ2YjBjYmIyYmFjMjhkZmNmNTky
MGEwMTI5MTVmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy9kb2NzL2gzLnJzdAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAK
LUhUVFAvMyBBUEkKLT09PT09PT09PT0KLQotVGhlIEhUVFAvMyBBUEkgcGVyZm9ybXMgbm8gSS9P
IG9uIGl0cyBvd24sIGxlYXZpbmcgdGhpcyB0byB0aGUgQVBJIHVzZXIuCi1UaGlzIGFsbG93cyB5
b3UgdG8gaW50ZWdyYXRlIEhUVFAvMyBpbiBhbnkgUHl0aG9uIGFwcGxpY2F0aW9uLCByZWdhcmRs
ZXNzIG9mCi10aGUgY29uY3VycmVuY3kgbW9kZWwgeW91IGFyZSB1c2luZy4KLQotQ29ubmVjdGlv
bgotLS0tLS0tLS0tLQotCi0uLiBhdXRvbW9kdWxlOjogYWlvcXVpYy5oMy5jb25uZWN0aW9uCi0K
LSAgICAuLiBhdXRvY2xhc3M6OiBIM0Nvbm5lY3Rpb24KLSAgICAgICAgOm1lbWJlcnM6Ci0KLQot
RXZlbnRzCi0tLS0tLS0KLQotLi4gYXV0b21vZHVsZTo6IGFpb3F1aWMuaDMuZXZlbnRzCi0KLSAg
ICAuLiBhdXRvY2xhc3M6OiBIM0V2ZW50Ci0gICAgICAgIDptZW1iZXJzOgotCi0gICAgLi4gYXV0
b2NsYXNzOjogRGF0YVJlY2VpdmVkCi0gICAgICAgIDptZW1iZXJzOgotCi0gICAgLi4gYXV0b2Ns
YXNzOjogSGVhZGVyc1JlY2VpdmVkCi0gICAgICAgIDptZW1iZXJzOgotCi0gICAgLi4gYXV0b2Ns
YXNzOjogUHVzaFByb21pc2VSZWNlaXZlZAotICAgICAgICA6bWVtYmVyczoKLQotCi1FeGNlcHRp
b25zCi0tLS0tLS0tLS0tCi0KLS4uIGF1dG9tb2R1bGU6OiBhaW9xdWljLmgzLmV4Y2VwdGlvbnMK
LQotICAgIC4uIGF1dG9jbGFzczo6IEgzRXJyb3IKLSAgICAgICAgOm1lbWJlcnM6Ci0KLSAgICAu
LiBhdXRvY2xhc3M6OiBOb0F2YWlsYWJsZVB1c2hJREVycm9yCi0gICAgICAgIDptZW1iZXJzOgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvaW5kZXgucnN0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2Rv
Y3MvaW5kZXgucnN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyODQxNTYxYTIyNDA0
MGJjMWE4YWNlMjY2YWQwMTU2OGY2ODQxN2E0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL2luZGV4LnJzdAorKysgL2Rldi9u
dWxsCkBAIC0xLDM5ICswLDAgQEAKLWFpb3F1aWMKLT09PT09PT0KLQotfHB5cGktdnwgfHB5cGkt
cHl2ZXJzaW9uc3wgfHB5cGktbHwgfHRlc3RzfCB8Y29kZWNvdnwKLQotLi4gfHB5cGktdnwgaW1h
Z2U6OiBodHRwczovL2ltZy5zaGllbGRzLmlvL3B5cGkvdi9haW9xdWljLnN2ZwotICAgIDp0YXJn
ZXQ6IGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvYWlvcXVpYwotCi0uLiB8cHlwaS1weXZl
cnNpb25zfCBpbWFnZTo6IGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS9weXZlcnNpb25zL2Fp
b3F1aWMuc3ZnCi0gICAgOnRhcmdldDogaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9haW9x
dWljCi0KLS4uIHxweXBpLWx8IGltYWdlOjogaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL2wv
YWlvcXVpYy5zdmcKLSAgICA6dGFyZ2V0OiBodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL2Fp
b3F1aWMKLQotLi4gfHRlc3RzfCBpbWFnZTo6IGh0dHBzOi8vZ2l0aHViLmNvbS9haW9ydGMvYWlv
cXVpYy93b3JrZmxvd3MvdGVzdHMvYmFkZ2Uuc3ZnCi0gICAgOnRhcmdldDogaHR0cHM6Ly9naXRo
dWIuY29tL2Fpb3J0Yy9haW9xdWljL2FjdGlvbnMKLQotLi4gfGNvZGVjb3Z8IGltYWdlOjogaHR0
cHM6Ly9pbWcuc2hpZWxkcy5pby9jb2RlY292L2MvZ2l0aHViL2Fpb3J0Yy9haW9xdWljLnN2Zwot
ICAgIDp0YXJnZXQ6IGh0dHBzOi8vY29kZWNvdi5pby9naC9haW9ydGMvYWlvcXVpYwotCi1gYGFp
b3F1aWNgYCBpcyBhIGxpYnJhcnkgZm9yIHRoZSBRVUlDIG5ldHdvcmsgcHJvdG9jb2wgaW4gUHl0
aG9uLiBJdCBmZWF0dXJlcyBzZXZlcmFsCi1BUElzOgotCi0tIGEgUVVJQyBBUEkgZm9sbG93aW5n
IHRoZSAiYnJpbmcgeW91ciBvd24gSS9PIiBwYXR0ZXJuLCBzdWl0YWJsZSBmb3IKLSAgZW1iZWRk
aW5nIGluIGFueSBmcmFtZXdvcmssCi0KLS0gYW4gSFRUUC8zIEFQSSB3aGljaCBhbHNvIGZvbGxv
d3MgdGhlICJicmluZyB5b3VyIG93biBJL08iIHBhdHRlcm4sCi0KLS0gYSBRVUlDIGNvbnZlbmll
bmNlIEFQSSBidWlsdCBvbiB0b3Agb2YgOm1vZDpgYXN5bmNpb2AsIFB5dGhvbidzIHN0YW5kYXJk
IGFzeW5jaHJvbm91cwotICBJL08gZnJhbWV3b3JrLgotCi0uLiB0b2N0cmVlOjoKLSAgIDptYXhk
ZXB0aDogMgotCi0gICBkZXNpZ24KLSAgIHF1aWMKLSAgIGgzCi0gICBhc3luY2lvCi0gICBsaWNl
bnNlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9saWNlbnNlLnJzdCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy9kb2NzL2xpY2Vuc2UucnN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NDJk
M2IwN2ZjOTNmNjQ3ZjNmZDA4ZTY1YjRiNGZhZGRjZjMzYWZhLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL2xpY2Vuc2UucnN0
CisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1MaWNlbnNlCi0tLS0tLS0tCi0KLS4uIGxp
dGVyYWxpbmNsdWRlOjogLi4vTElDRU5TRQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3Mv
cXVpYy5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9xdWljLnJzdApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNjBlYmVmYjQ5ZDUxNGE0NTE1YzIyM2NkYzg0MzY5Y2QxNmExMmI3My4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
ZG9jcy9xdWljLnJzdAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLVFVSUMgQVBJCi09
PT09PT09PQotCi1UaGUgUVVJQyBBUEkgcGVyZm9ybXMgbm8gSS9PIG9uIGl0cyBvd24sIGxlYXZp
bmcgdGhpcyB0byB0aGUgQVBJIHVzZXIuCi1UaGlzIGFsbG93cyB5b3UgdG8gaW50ZWdyYXRlIFFV
SUMgaW4gYW55IFB5dGhvbiBhcHBsaWNhdGlvbiwgcmVnYXJkbGVzcyBvZgotdGhlIGNvbmN1cnJl
bmN5IG1vZGVsIHlvdSBhcmUgdXNpbmcuCi0KLUNvbm5lY3Rpb24KLS0tLS0tLS0tLS0KLQotLi4g
YXV0b21vZHVsZTo6IGFpb3F1aWMucXVpYy5jb25uZWN0aW9uCi0KLSAgICAuLiBhdXRvY2xhc3M6
OiBRdWljQ29ubmVjdGlvbgotICAgICAgICA6bWVtYmVyczoKLQotCi1Db25maWd1cmF0aW9uCi0t
LS0tLS0tLS0tLS0tCi0KLS4uIGF1dG9tb2R1bGU6OiBhaW9xdWljLnF1aWMuY29uZmlndXJhdGlv
bgotCi0gICAgLi4gYXV0b2NsYXNzOjogUXVpY0NvbmZpZ3VyYXRpb24KLSAgICAgICAgOm1lbWJl
cnM6Ci0KLS4uIGF1dG9tb2R1bGU6OiBhaW9xdWljLnF1aWMubG9nZ2VyCi0KLSAgICAuLiBhdXRv
Y2xhc3M6OiBRdWljTG9nZ2VyCi0gICAgICAgIDptZW1iZXJzOgotCi1FdmVudHMKLS0tLS0tLQot
Ci0uLiBhdXRvbW9kdWxlOjogYWlvcXVpYy5xdWljLmV2ZW50cwotCi0gICAgLi4gYXV0b2NsYXNz
OjogUXVpY0V2ZW50Ci0gICAgICAgIDptZW1iZXJzOgotCi0gICAgLi4gYXV0b2NsYXNzOjogQ29u
bmVjdGlvblRlcm1pbmF0ZWQKLSAgICAgICAgOm1lbWJlcnM6Ci0KLSAgICAuLiBhdXRvY2xhc3M6
OiBIYW5kc2hha2VDb21wbGV0ZWQKLSAgICAgICAgOm1lbWJlcnM6Ci0KLSAgICAuLiBhdXRvY2xh
c3M6OiBQaW5nQWNrbm93bGVkZ2VkCi0gICAgICAgIDptZW1iZXJzOgotCi0gICAgLi4gYXV0b2Ns
YXNzOjogU3RyZWFtRGF0YVJlY2VpdmVkCi0gICAgICAgIDptZW1iZXJzOgotCi0gICAgLi4gYXV0
b2NsYXNzOjogU3RyZWFtUmVzZXQKLSAgICAgICAgOm1lbWJlcnM6CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvZG9jcy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL3czYy1pbXBv
cnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwODBlNzk5OTA0M2QyOTc0MWEx
MzQ5MTY2NzhkNTQwNDk5MmE5NzVkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251
bGwKQEAgLTEsMjQgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1w
b3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3Rz
IGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0
aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dw
dAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktp
dCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9u
ZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvTWFrZWZpbGUK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvZG9jcy9hc3luY2lvLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9kb2NzL2NvbmYu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9kZXNpZ24ucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvaDMu
cnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvaW5kZXgucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2RvY3MvbGlj
ZW5zZS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZG9jcy9xdWljLnJzdApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL2V4YW1wbGVzL1JFQURNRS5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvUkVBRE1F
LnJzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQ0YWY1N2Q1MTQ0YWYxM2U0MmQ3
OTdiYTMwOWY5NzRjNjM1NzU4Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvUkVBRE1FLnJzdAorKysgL2Rldi9udWxs
CkBAIC0xLDYyICswLDAgQEAKLUV4YW1wbGVzCi09PT09PT09PQotCi1BZnRlciBjaGVja2luZyBv
dXQgdGhlIGNvZGUgdXNpbmcgZ2l0IHlvdSBjYW4gcnVuOgotCi0uLiBjb2RlLWJsb2NrOjogY29u
c29sZQotCi0gICAkIHBpcCBpbnN0YWxsIC1lIC4KLSAgICQgcGlwIGluc3RhbGwgYWlvZmlsZXMg
YXNnaXJlZiBkbnNsaWIgaHR0cGJpbiBzdGFybGV0dGUgd3Nwcm90bwotCi0KLUhUVFAvMwotLS0t
LS0tCi0KLUhUVFAvMyBzZXJ2ZXIKLS4uLi4uLi4uLi4uLi4KLQotWW91IGNhbiBydW4gdGhlIGV4
YW1wbGUgc2VydmVyLCB3aGljaCBoYW5kbGVzIGJvdGggSFRUUC8wLjkgYW5kIEhUVFAvMzoKLQot
Li4gY29kZS1ibG9jazo6IGNvbnNvbGUKLQotICAgJCBweXRob24gZXhhbXBsZXMvaHR0cDNfc2Vy
dmVyLnB5IC0tY2VydGlmaWNhdGUgdGVzdHMvc3NsX2NlcnQucGVtIC0tcHJpdmF0ZS1rZXkgdGVz
dHMvc3NsX2tleS5wZW0KLQotSFRUUC8zIGNsaWVudAotLi4uLi4uLi4uLi4uLgotCi1Zb3UgY2Fu
IHJ1biB0aGUgZXhhbXBsZSBjbGllbnQgdG8gcGVyZm9ybSBhbiBIVFRQLzMgcmVxdWVzdDoKLQot
Li4gY29kZS1ibG9jazo6IGNvbnNvbGUKLQotICAkIHB5dGhvbiBleGFtcGxlcy9odHRwM19jbGll
bnQucHkgLS1jYS1jZXJ0cyB0ZXN0cy9weWNhY2VydC5wZW0gaHR0cHM6Ly9sb2NhbGhvc3Q6NDQz
My8KLQotQWx0ZXJuYXRpdmVseSB5b3UgY2FuIHBlcmZvcm0gYW4gSFRUUC8wLjkgcmVxdWVzdDoK
LQotLi4gY29kZS1ibG9jazo6IGNvbnNvbGUKLQotICAkIHB5dGhvbiBleGFtcGxlcy9odHRwM19j
bGllbnQucHkgLS1jYS1jZXJ0cyB0ZXN0cy9weWNhY2VydC5wZW0gLS1sZWdhY3ktaHR0cCBodHRw
czovL2xvY2FsaG9zdDo0NDMzLwotCi1Zb3UgY2FuIGFsc28gb3BlbiBhIFdlYlNvY2tldCBvdmVy
IEhUVFAvMzoKLQotLi4gY29kZS1ibG9jazo6IGNvbnNvbGUKLQotICAkIHB5dGhvbiBleGFtcGxl
cy9odHRwM19jbGllbnQucHkgLS1jYS1jZXJ0cyB0ZXN0cy9weWNhY2VydC5wZW0gd3NzOi8vbG9j
YWxob3N0OjQ0MzMvd3MKLQotCi1ETlMgb3ZlciBRVUlDCi0tLS0tLS0tLS0tLS0tCi0KLUJ5IGRl
ZmF1bHQgdGhlIHNlcnZlciB3aWxsIHVzZSB0aGUgYEdvb2dsZSBQdWJsaWMgRE5TYF8gc2Vydmlj
ZSwgeW91IGNhbgotb3ZlcnJpZGUgdGhpcyB3aXRoIHRoZSBgYC0tcmVzb2x2ZXJgYCBhcmd1bWVu
dC4KLQotLi4gY29kZS1ibG9jazo6IGNvbnNvbGUKLQotICAgICQgcHl0aG9uIGV4YW1wbGVzL2Rv
cV9zZXJ2ZXIucHkgLS1jZXJ0aWZpY2F0ZSB0ZXN0cy9zc2xfY2VydC5wZW0gLS1wcml2YXRlLWtl
eSB0ZXN0cy9zc2xfa2V5LnBlbQotCi1Zb3UgY2FuIHRoZW4gcnVuIHRoZSBjbGllbnQgd2l0aCBh
IHNwZWNpZmljIHF1ZXJ5OgotCi0uLiBjb2RlLWJsb2NrOjogY29uc29sZQotCi0gICAgJCBweXRo
b24gZXhhbXBsZXMvZG9xX2NsaWVudC5weSAtLWNhLWNlcnRzIHRlc3RzL3B5Y2FjZXJ0LnBlbSAt
LWRuc190eXBlICJBIiAtLXF1ZXJ5ICJxdWljLmFpb3J0Yy5vcmciIC0tcG9ydCA0Nzg0Ci0KLS4u
IF9Hb29nbGUgUHVibGljIEROUzogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vc3BlZWQv
cHVibGljLWRucwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2RlbW8ucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvZXhhbXBsZXMvZGVtby5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZmQ0Zjk3NTJmMTRjNzk3ZjQyOTI3NzM3OWQwNzZkZDU2YWNlOTIwMy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMv
ZGVtby5weQorKysgL2Rldi9udWxsCkBAIC0xLDEwOSArMCwwIEBACi0jCi0jIGRlbW8gYXBwbGlj
YXRpb24gZm9yIGh0dHAzX3NlcnZlci5weQotIwotCi1pbXBvcnQgZGF0ZXRpbWUKLWltcG9ydCBv
cwotZnJvbSB1cmxsaWIucGFyc2UgaW1wb3J0IHVybGVuY29kZQotCi1pbXBvcnQgaHR0cGJpbgot
ZnJvbSBhc2dpcmVmLndzZ2kgaW1wb3J0IFdzZ2lUb0FzZ2kKLWZyb20gc3RhcmxldHRlLmFwcGxp
Y2F0aW9ucyBpbXBvcnQgU3RhcmxldHRlCi1mcm9tIHN0YXJsZXR0ZS5yZXNwb25zZXMgaW1wb3J0
IFBsYWluVGV4dFJlc3BvbnNlLCBSZXNwb25zZQotZnJvbSBzdGFybGV0dGUuc3RhdGljZmlsZXMg
aW1wb3J0IFN0YXRpY0ZpbGVzCi1mcm9tIHN0YXJsZXR0ZS50ZW1wbGF0aW5nIGltcG9ydCBKaW5q
YTJUZW1wbGF0ZXMKLWZyb20gc3RhcmxldHRlLndlYnNvY2tldHMgaW1wb3J0IFdlYlNvY2tldERp
c2Nvbm5lY3QKLQotUk9PVCA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKLVNUQVRJQ19ST09U
ID0gb3MuZW52aXJvbi5nZXQoIlNUQVRJQ19ST09UIiwgb3MucGF0aC5qb2luKFJPT1QsICJodGRv
Y3MiKSkKLVNUQVRJQ19VUkwgPSAiLyIKLUxPR1NfUEFUSCA9IG9zLnBhdGguam9pbihTVEFUSUNf
Uk9PVCwgImxvZ3MiKQotUVZJU19VUkwgPSAiaHR0cHM6Ly9xdmlzLmVkbS51aGFzc2VsdC5iZS8i
Ci0KLXRlbXBsYXRlcyA9IEppbmphMlRlbXBsYXRlcyhkaXJlY3Rvcnk9b3MucGF0aC5qb2luKFJP
T1QsICJ0ZW1wbGF0ZXMiKSkKLWFwcCA9IFN0YXJsZXR0ZSgpCi0KLQotQGFwcC5yb3V0ZSgiLyIp
Ci1hc3luYyBkZWYgaG9tZXBhZ2UocmVxdWVzdCk6Ci0gICAgIiIiCi0gICAgU2ltcGxlIGhvbWVw
YWdlLgotICAgICIiIgotICAgIGF3YWl0IHJlcXVlc3Quc2VuZF9wdXNoX3Byb21pc2UoIi9zdHls
ZS5jc3MiKQotICAgIHJldHVybiB0ZW1wbGF0ZXMuVGVtcGxhdGVSZXNwb25zZSgiaW5kZXguaHRt
bCIsIHsicmVxdWVzdCI6IHJlcXVlc3R9KQotCi0KLUBhcHAucm91dGUoIi9lY2hvIiwgbWV0aG9k
cz1bIlBPU1QiXSkKLWFzeW5jIGRlZiBlY2hvKHJlcXVlc3QpOgotICAgICIiIgotICAgIEhUVFAg
ZWNobyBlbmRwb2ludC4KLSAgICAiIiIKLSAgICBjb250ZW50ID0gYXdhaXQgcmVxdWVzdC5ib2R5
KCkKLSAgICBtZWRpYV90eXBlID0gcmVxdWVzdC5oZWFkZXJzLmdldCgiY29udGVudC10eXBlIikK
LSAgICByZXR1cm4gUmVzcG9uc2UoY29udGVudCwgbWVkaWFfdHlwZT1tZWRpYV90eXBlKQotCi0K
LUBhcHAucm91dGUoIi9sb2dzLz8iKQotYXN5bmMgZGVmIGxvZ3MocmVxdWVzdCk6Ci0gICAgIiIi
Ci0gICAgQnJvd3NhYmxlIGxpc3Qgb2YgUUxPRyBmaWxlcy4KLSAgICAiIiIKLSAgICBsb2dzID0g
W10KLSAgICBmb3IgbmFtZSBpbiBvcy5saXN0ZGlyKExPR1NfUEFUSCk6Ci0gICAgICAgIGlmIG5h
bWUuZW5kc3dpdGgoIi5xbG9nIik6Ci0gICAgICAgICAgICBzID0gb3Muc3RhdChvcy5wYXRoLmpv
aW4oTE9HU19QQVRILCBuYW1lKSkKLSAgICAgICAgICAgIGZpbGVfdXJsID0gImh0dHBzOi8vIiAr
IHJlcXVlc3QuaGVhZGVyc1siaG9zdCJdICsgIi9sb2dzLyIgKyBuYW1lCi0gICAgICAgICAgICBs
b2dzLmFwcGVuZCgKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJkYXRl
IjogZGF0ZXRpbWUuZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcChzLnN0X210aW1lKS5zdHJmdGlt
ZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICIlWS0lbS0lZCAlSDolTTolUyIKLSAgICAgICAg
ICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICAgICAgImZpbGVfdXJsIjogZmlsZV91cmws
Ci0gICAgICAgICAgICAgICAgICAgICJuYW1lIjogbmFtZVs6LTVdLAotICAgICAgICAgICAgICAg
ICAgICAicXZpc191cmwiOiBRVklTX1VSTAotICAgICAgICAgICAgICAgICAgICArICI/IgotICAg
ICAgICAgICAgICAgICAgICArIHVybGVuY29kZSh7ImZpbGUiOiBmaWxlX3VybH0pCi0gICAgICAg
ICAgICAgICAgICAgICsgIiMvc2VxdWVuY2UiLAotICAgICAgICAgICAgICAgICAgICAic2l6ZSI6
IHMuc3Rfc2l6ZSwKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICApCi0gICAgcmV0dXJu
IHRlbXBsYXRlcy5UZW1wbGF0ZVJlc3BvbnNlKAotICAgICAgICAibG9ncy5odG1sIiwKLSAgICAg
ICAgewotICAgICAgICAgICAgImxvZ3MiOiBzb3J0ZWQobG9ncywga2V5PWxhbWJkYSB4OiB4WyJk
YXRlIl0sIHJldmVyc2U9VHJ1ZSksCi0gICAgICAgICAgICAicmVxdWVzdCI6IHJlcXVlc3QsCi0g
ICAgICAgIH0sCi0gICAgKQotCi0KLUBhcHAucm91dGUoIi97c2l6ZTppbnR9IikKLWRlZiBwYWRk
aW5nKHJlcXVlc3QpOgotICAgICIiIgotICAgIER5bmFtaWNhbGx5IGdlbmVyYXRlZCBkYXRhLCBt
YXhpbXVtIDUwTUIuCi0gICAgIiIiCi0gICAgc2l6ZSA9IG1pbig1MDAwMDAwMCwgcmVxdWVzdC5w
YXRoX3BhcmFtc1sic2l6ZSJdKQotICAgIHJldHVybiBQbGFpblRleHRSZXNwb25zZSgiWiIgKiBz
aXplKQotCi0KLUBhcHAud2Vic29ja2V0X3JvdXRlKCIvd3MiKQotYXN5bmMgZGVmIHdzKHdlYnNv
Y2tldCk6Ci0gICAgIiIiCi0gICAgV2ViU29ja2V0IGVjaG8gZW5kcG9pbnQuCi0gICAgIiIiCi0g
ICAgaWYgImNoYXQiIGluIHdlYnNvY2tldC5zY29wZVsic3VicHJvdG9jb2xzIl06Ci0gICAgICAg
IHN1YnByb3RvY29sID0gImNoYXQiCi0gICAgZWxzZToKLSAgICAgICAgc3VicHJvdG9jb2wgPSBO
b25lCi0gICAgYXdhaXQgd2Vic29ja2V0LmFjY2VwdChzdWJwcm90b2NvbD1zdWJwcm90b2NvbCkK
LQotICAgIHRyeToKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIG1lc3NhZ2UgPSBh
d2FpdCB3ZWJzb2NrZXQucmVjZWl2ZV90ZXh0KCkKLSAgICAgICAgICAgIGF3YWl0IHdlYnNvY2tl
dC5zZW5kX3RleHQobWVzc2FnZSkKLSAgICBleGNlcHQgV2ViU29ja2V0RGlzY29ubmVjdDoKLSAg
ICAgICAgcGFzcwotCi0KLWFwcC5tb3VudCgiL2h0dHBiaW4iLCBXc2dpVG9Bc2dpKGh0dHBiaW4u
YXBwKSkKLQotYXBwLm1vdW50KFNUQVRJQ19VUkwsIFN0YXRpY0ZpbGVzKGRpcmVjdG9yeT1TVEFU
SUNfUk9PVCwgaHRtbD1UcnVlKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9k
b3FfY2xpZW50LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2RvcV9jbGllbnQucHkKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2YzFhNDRmMDI4Y2I1OTY5MmM5NDA3MTk1MTdmMTNk
Y2I0ZjEwYTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL2V4YW1wbGVzL2RvcV9jbGllbnQucHkKKysrIC9kZXYvbnVsbApAQCAtMSwx
NjIgKzAsMCBAQAotaW1wb3J0IGFyZ3BhcnNlCi1pbXBvcnQgYXN5bmNpbwotaW1wb3J0IGpzb24K
LWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgcGlja2xlCi1pbXBvcnQgc3NsCi1mcm9tIHR5cGluZyBp
bXBvcnQgT3B0aW9uYWwsIGNhc3QKLQotZnJvbSBkbnNsaWIuZG5zIGltcG9ydCBRVFlQRSwgRE5T
UXVlc3Rpb24sIEROU1JlY29yZAotCi1mcm9tIGFpb3F1aWMuYXN5bmNpby5jbGllbnQgaW1wb3J0
IGNvbm5lY3QKLWZyb20gYWlvcXVpYy5hc3luY2lvLnByb3RvY29sIGltcG9ydCBRdWljQ29ubmVj
dGlvblByb3RvY29sCi1mcm9tIGFpb3F1aWMucXVpYy5jb25maWd1cmF0aW9uIGltcG9ydCBRdWlj
Q29uZmlndXJhdGlvbgotZnJvbSBhaW9xdWljLnF1aWMuZXZlbnRzIGltcG9ydCBRdWljRXZlbnQs
IFN0cmVhbURhdGFSZWNlaXZlZAotZnJvbSBhaW9xdWljLnF1aWMubG9nZ2VyIGltcG9ydCBRdWlj
TG9nZ2VyCi0KLWxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJjbGllbnQiKQotCi0KLWNsYXNz
IERvUUNsaWVudChRdWljQ29ubmVjdGlvblByb3RvY29sKToKLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqYXJncywgKipr
d2FyZ3MpCi0gICAgICAgIHNlbGYuX2Fja193YWl0ZXI6IE9wdGlvbmFsW2FzeW5jaW8uRnV0dXJl
W05vbmVdXSA9IE5vbmUKLQotICAgIGFzeW5jIGRlZiBxdWVyeShzZWxmLCBxdWVyeV90eXBlOiBz
dHIsIGRuc19xdWVyeTogc3RyKSAtPiBOb25lOgotICAgICAgICBxdWVyeSA9IEROU1JlY29yZChx
PUROU1F1ZXN0aW9uKGRuc19xdWVyeSwgZ2V0YXR0cihRVFlQRSwgcXVlcnlfdHlwZSkpKQotICAg
ICAgICBzdHJlYW1faWQgPSBzZWxmLl9xdWljLmdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQo
KQotICAgICAgICBsb2dnZXIuZGVidWcoZiJTdHJlYW0gSUQ6IHtzdHJlYW1faWR9IikKLSAgICAg
ICAgZW5kX3N0cmVhbSA9IEZhbHNlCi0gICAgICAgIHNlbGYuX3F1aWMuc2VuZF9zdHJlYW1fZGF0
YShzdHJlYW1faWQsIGJ5dGVzKHF1ZXJ5LnBhY2soKSksIGVuZF9zdHJlYW0pCi0gICAgICAgIHdh
aXRlciA9IHNlbGYuX2xvb3AuY3JlYXRlX2Z1dHVyZSgpCi0gICAgICAgIHNlbGYuX2Fja193YWl0
ZXIgPSB3YWl0ZXIKLSAgICAgICAgc2VsZi50cmFuc21pdCgpCi0KLSAgICAgICAgcmV0dXJuIGF3
YWl0IGFzeW5jaW8uc2hpZWxkKHdhaXRlcikKLQotICAgIGRlZiBxdWljX2V2ZW50X3JlY2VpdmVk
KHNlbGYsIGV2ZW50OiBRdWljRXZlbnQpIC0+IE5vbmU6Ci0gICAgICAgIGlmIHNlbGYuX2Fja193
YWl0ZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBTdHJl
YW1EYXRhUmVjZWl2ZWQpOgotICAgICAgICAgICAgICAgIGFuc3dlciA9IEROU1JlY29yZC5wYXJz
ZShldmVudC5kYXRhKQotICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGFuc3dlcikKLSAgICAg
ICAgICAgICAgICB3YWl0ZXIgPSBzZWxmLl9hY2tfd2FpdGVyCi0gICAgICAgICAgICAgICAgc2Vs
Zi5fYWNrX3dhaXRlciA9IE5vbmUKLSAgICAgICAgICAgICAgICB3YWl0ZXIuc2V0X3Jlc3VsdChO
b25lKQotCi0KLWRlZiBzYXZlX3Nlc3Npb25fdGlja2V0KHRpY2tldCk6Ci0gICAgIiIiCi0gICAg
Q2FsbGJhY2sgd2hpY2ggaXMgaW52b2tlZCBieSB0aGUgVExTIGVuZ2luZSB3aGVuIGEgbmV3IHNl
c3Npb24gdGlja2V0Ci0gICAgaXMgcmVjZWl2ZWQuCi0gICAgIiIiCi0gICAgbG9nZ2VyLmluZm8o
Ik5ldyBzZXNzaW9uIHRpY2tldCByZWNlaXZlZCIpCi0gICAgaWYgYXJncy5zZXNzaW9uX3RpY2tl
dDoKLSAgICAgICAgd2l0aCBvcGVuKGFyZ3Muc2Vzc2lvbl90aWNrZXQsICJ3YiIpIGFzIGZwOgot
ICAgICAgICAgICAgcGlja2xlLmR1bXAodGlja2V0LCBmcCkKLQotCi1hc3luYyBkZWYgcnVuKAot
ICAgIGNvbmZpZ3VyYXRpb246IFF1aWNDb25maWd1cmF0aW9uLAotICAgIGhvc3Q6IHN0ciwKLSAg
ICBwb3J0OiBpbnQsCi0gICAgcXVlcnlfdHlwZTogc3RyLAotICAgIGRuc19xdWVyeTogc3RyLAot
KSAtPiBOb25lOgotICAgIGxvZ2dlci5kZWJ1ZyhmIkNvbm5lY3RpbmcgdG8ge2hvc3R9Ontwb3J0
fSIpCi0gICAgYXN5bmMgd2l0aCBjb25uZWN0KAotICAgICAgICBob3N0LAotICAgICAgICBwb3J0
LAotICAgICAgICBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sCi0gICAgICAgIHNlc3Npb25f
dGlja2V0X2hhbmRsZXI9c2F2ZV9zZXNzaW9uX3RpY2tldCwKLSAgICAgICAgY3JlYXRlX3Byb3Rv
Y29sPURvUUNsaWVudCwKLSAgICApIGFzIGNsaWVudDoKLSAgICAgICAgY2xpZW50ID0gY2FzdChE
b1FDbGllbnQsIGNsaWVudCkKLSAgICAgICAgbG9nZ2VyLmRlYnVnKCJTZW5kaW5nIEROUyBxdWVy
eSIpCi0gICAgICAgIGF3YWl0IGNsaWVudC5xdWVyeShxdWVyeV90eXBlLCBkbnNfcXVlcnkpCi0K
LQotaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1
bWVudFBhcnNlcihkZXNjcmlwdGlvbj0iRE5TIG92ZXIgUVVJQyBjbGllbnQiKQotICAgIHBhcnNl
ci5hZGRfYXJndW1lbnQoIi10IiwgIi0tdHlwZSIsIHR5cGU9c3RyLCBoZWxwPSJUeXBlIG9mIHJl
Y29yZCB0byAiKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCi0gICAgICAgICItLWhvc3QiLAot
ICAgICAgICB0eXBlPXN0ciwKLSAgICAgICAgZGVmYXVsdD0ibG9jYWxob3N0IiwKLSAgICAgICAg
aGVscD0iVGhlIHJlbW90ZSBwZWVyJ3MgaG9zdCBuYW1lIG9yIElQIGFkZHJlc3MiLAotICAgICkK
LSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAotICAgICAgICAiLS1wb3J0IiwgdHlwZT1pbnQsIGRl
ZmF1bHQ9Nzg0LCBoZWxwPSJUaGUgcmVtb3RlIHBlZXIncyBwb3J0IG51bWJlciIKLSAgICApCi0g
ICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKLSAgICAgICAgIi1rIiwKLSAgICAgICAgIi0taW5zZWN1
cmUiLAotICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLAotICAgICAgICBoZWxwPSJkbyBub3Qg
dmFsaWRhdGUgc2VydmVyIGNlcnRpZmljYXRlIiwKLSAgICApCi0gICAgcGFyc2VyLmFkZF9hcmd1
bWVudCgKLSAgICAgICAgIi0tY2EtY2VydHMiLCB0eXBlPXN0ciwgaGVscD0ibG9hZCBDQSBjZXJ0
aWZpY2F0ZXMgZnJvbSB0aGUgc3BlY2lmaWVkIGZpbGUiCi0gICAgKQotICAgIHBhcnNlci5hZGRf
YXJndW1lbnQoIi0tZG5zX3R5cGUiLCBoZWxwPSJUaGUgRE5TIHF1ZXJ5IHR5cGUgdG8gc2VuZCIp
Ci0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS1xdWVyeSIsIGhlbHA9IkRvbWFpbiB0byBxdWVy
eSIpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKLSAgICAgICAgIi1xIiwgIi0tcXVpYy1sb2ci
LCB0eXBlPXN0ciwgaGVscD0ibG9nIFFVSUMgZXZlbnRzIHRvIGEgZmlsZSBpbiBRTE9HIGZvcm1h
dCIKLSAgICApCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKLSAgICAgICAgIi1sIiwKLSAgICAg
ICAgIi0tc2VjcmV0cy1sb2ciLAotICAgICAgICB0eXBlPXN0ciwKLSAgICAgICAgaGVscD0ibG9n
IHNlY3JldHMgdG8gYSBmaWxlLCBmb3IgdXNlIHdpdGggV2lyZXNoYXJrIiwKLSAgICApCi0gICAg
cGFyc2VyLmFkZF9hcmd1bWVudCgKLSAgICAgICAgIi1zIiwKLSAgICAgICAgIi0tc2Vzc2lvbi10
aWNrZXQiLAotICAgICAgICB0eXBlPXN0ciwKLSAgICAgICAgaGVscD0icmVhZCBhbmQgd3JpdGUg
c2Vzc2lvbiB0aWNrZXQgZnJvbSB0aGUgc3BlY2lmaWVkIGZpbGUiLAotICAgICkKLSAgICBwYXJz
ZXIuYWRkX2FyZ3VtZW50KAotICAgICAgICAiLXYiLCAiLS12ZXJib3NlIiwgYWN0aW9uPSJzdG9y
ZV90cnVlIiwgaGVscD0iaW5jcmVhc2UgbG9nZ2luZyB2ZXJib3NpdHkiCi0gICAgKQotCi0gICAg
YXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKLQotICAgIGxvZ2dpbmcuYmFzaWNDb25maWcoCi0g
ICAgICAgIGZvcm1hdD0iJShhc2N0aW1lKXMgJShsZXZlbG5hbWUpcyAlKG5hbWUpcyAlKG1lc3Nh
Z2UpcyIsCi0gICAgICAgIGxldmVsPWxvZ2dpbmcuREVCVUcgaWYgYXJncy52ZXJib3NlIGVsc2Ug
bG9nZ2luZy5JTkZPLAotICAgICkKLQotICAgIGNvbmZpZ3VyYXRpb24gPSBRdWljQ29uZmlndXJh
dGlvbigKLSAgICAgICAgYWxwbl9wcm90b2NvbHM9WyJkcSJdLCBpc19jbGllbnQ9VHJ1ZSwgbWF4
X2RhdGFncmFtX2ZyYW1lX3NpemU9NjU1MzYKLSAgICApCi0gICAgaWYgYXJncy5jYV9jZXJ0czoK
LSAgICAgICAgY29uZmlndXJhdGlvbi5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoYXJncy5jYV9jZXJ0
cykKLSAgICBpZiBhcmdzLmluc2VjdXJlOgotICAgICAgICBjb25maWd1cmF0aW9uLnZlcmlmeV9t
b2RlID0gc3NsLkNFUlRfTk9ORQotICAgIGlmIGFyZ3MucXVpY19sb2c6Ci0gICAgICAgIGNvbmZp
Z3VyYXRpb24ucXVpY19sb2dnZXIgPSBRdWljTG9nZ2VyKCkKLSAgICBpZiBhcmdzLnNlY3JldHNf
bG9nOgotICAgICAgICBjb25maWd1cmF0aW9uLnNlY3JldHNfbG9nX2ZpbGUgPSBvcGVuKGFyZ3Mu
c2VjcmV0c19sb2csICJhIikKLSAgICBpZiBhcmdzLnNlc3Npb25fdGlja2V0OgotICAgICAgICB0
cnk6Ci0gICAgICAgICAgICB3aXRoIG9wZW4oYXJncy5zZXNzaW9uX3RpY2tldCwgInJiIikgYXMg
ZnA6Ci0gICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi5zZXNzaW9uX3RpY2tldCA9IHBpY2ts
ZS5sb2FkKGZwKQotICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6Ci0gICAgICAgICAg
ICBsb2dnZXIuZGVidWcoZiJVbmFibGUgdG8gcmVhZCB7YXJncy5zZXNzaW9uX3RpY2tldH0iKQot
ICAgICAgICAgICAgcGFzcwotICAgIGVsc2U6Ci0gICAgICAgIGxvZ2dlci5kZWJ1ZygiTm8gc2Vz
c2lvbiB0aWNrZXQgZGVmaW5lZC4uLiIpCi0KLSAgICBsb29wID0gYXN5bmNpby5nZXRfZXZlbnRf
bG9vcCgpCi0gICAgdHJ5OgotICAgICAgICBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZSgKLSAgICAg
ICAgICAgIHJ1bigKLSAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24s
Ci0gICAgICAgICAgICAgICAgaG9zdD1hcmdzLmhvc3QsCi0gICAgICAgICAgICAgICAgcG9ydD1h
cmdzLnBvcnQsCi0gICAgICAgICAgICAgICAgcXVlcnlfdHlwZT1hcmdzLmRuc190eXBlLAotICAg
ICAgICAgICAgICAgIGRuc19xdWVyeT1hcmdzLnF1ZXJ5LAotICAgICAgICAgICAgKQotICAgICAg
ICApCi0gICAgZmluYWxseToKLSAgICAgICAgaWYgY29uZmlndXJhdGlvbi5xdWljX2xvZ2dlciBp
cyBub3QgTm9uZToKLSAgICAgICAgICAgIHdpdGggb3BlbihhcmdzLnF1aWNfbG9nLCAidyIpIGFz
IGxvZ2dlcl9mcDoKLSAgICAgICAgICAgICAgICBqc29uLmR1bXAoY29uZmlndXJhdGlvbi5xdWlj
X2xvZ2dlci50b19kaWN0KCksIGxvZ2dlcl9mcCwgaW5kZW50PTQpCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvZXhhbXBsZXMvZG9xX3NlcnZlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9k
b3Ffc2VydmVyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMzM0N2ZlNmMxODk2
M2UwNTk2YTg2ODhhNWVjNmViYTI4NGQwMjU2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9kb3Ffc2VydmVyLnB5Cisr
KyAvZGV2L251bGwKQEAgLTEsMTY3ICswLDAgQEAKLWltcG9ydCBhcmdwYXJzZQotaW1wb3J0IGFz
eW5jaW8KLWltcG9ydCBqc29uCi1pbXBvcnQgbG9nZ2luZwotZnJvbSB0eXBpbmcgaW1wb3J0IERp
Y3QsIE9wdGlvbmFsCi0KLWZyb20gZG5zbGliLmRucyBpbXBvcnQgRE5TUmVjb3JkCi0KLWZyb20g
YWlvcXVpYy5hc3luY2lvIGltcG9ydCBRdWljQ29ubmVjdGlvblByb3RvY29sLCBzZXJ2ZQotZnJv
bSBhaW9xdWljLnF1aWMuY29uZmlndXJhdGlvbiBpbXBvcnQgUXVpY0NvbmZpZ3VyYXRpb24KLWZy
b20gYWlvcXVpYy5xdWljLmNvbm5lY3Rpb24gaW1wb3J0IFF1aWNDb25uZWN0aW9uCi1mcm9tIGFp
b3F1aWMucXVpYy5ldmVudHMgaW1wb3J0IFByb3RvY29sTmVnb3RpYXRlZCwgUXVpY0V2ZW50LCBT
dHJlYW1EYXRhUmVjZWl2ZWQKLWZyb20gYWlvcXVpYy5xdWljLmxvZ2dlciBpbXBvcnQgUXVpY0xv
Z2dlcgotZnJvbSBhaW9xdWljLnRscyBpbXBvcnQgU2Vzc2lvblRpY2tldAotCi10cnk6Ci0gICAg
aW1wb3J0IHV2bG9vcAotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIHV2bG9vcCA9IE5vbmUKLQot
Ci1jbGFzcyBEbnNDb25uZWN0aW9uOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBxdWljOiBRdWlj
Q29ubmVjdGlvbik6Ci0gICAgICAgIHNlbGYuX3F1aWMgPSBxdWljCi0KLSAgICBkZWYgZG9fcXVl
cnkoc2VsZiwgcGF5bG9hZCkgLT4gYnl0ZXM6Ci0gICAgICAgIHEgPSBETlNSZWNvcmQucGFyc2Uo
cGF5bG9hZCkKLSAgICAgICAgcmV0dXJuIHEuc2VuZChzZWxmLnJlc29sdmVyKCksIDUzKQotCi0g
ICAgZGVmIHJlc29sdmVyKHNlbGYpIC0+IHN0cjoKLSAgICAgICAgcmV0dXJuIGFyZ3MucmVzb2x2
ZXIKLQotICAgIGRlZiBoYW5kbGVfZXZlbnQoc2VsZiwgZXZlbnQ6IFF1aWNFdmVudCkgLT4gTm9u
ZToKLSAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgU3RyZWFtRGF0YVJlY2VpdmVkKToKLSAg
ICAgICAgICAgIGRhdGEgPSBzZWxmLmRvX3F1ZXJ5KGV2ZW50LmRhdGEpCi0gICAgICAgICAgICBl
bmRfc3RyZWFtID0gRmFsc2UKLSAgICAgICAgICAgIHNlbGYuX3F1aWMuc2VuZF9zdHJlYW1fZGF0
YShldmVudC5zdHJlYW1faWQsIGRhdGEsIGVuZF9zdHJlYW0pCi0KLQotY2xhc3MgRG5zU2VydmVy
UHJvdG9jb2woUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbCk6Ci0KLSAgICAjIC0wMCBzcGVjaWZpZXMg
J2RxJywgJ2RvcScsIGFuZCAnZG9xLWgwMCcgKHRoZSBsYXR0ZXIgb2J2aW91c2x5IHR5aW5nIHRv
Ci0gICAgIyB0aGUgdmVyc2lvbiBvZiB0aGUgZHJhZnQgaXQgbWF0Y2hlcykuIFRoaXMgaXMgY29u
ZnVzaW5nLCBzbyB3ZSdsbCBqdXN0Ci0gICAgIyBzdXBwb3J0IHRoZW0gYWxsLCB1bnRpbCBmdXR1
cmUgZHJhZnRzIGRlZmluZSBjb25mbGljdGluZyBiZWhhdmlvdXIuCi0gICAgU1VQUE9SVEVEX0FM
UE5TID0gWyJkcSIsICJkb3EiLCAiZG9xLWgwMCJdCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwg
KmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqYXJncywgKiprd2Fy
Z3MpCi0gICAgICAgIHNlbGYuX2RuczogT3B0aW9uYWxbRG5zQ29ubmVjdGlvbl0gPSBOb25lCi0K
LSAgICBkZWYgcXVpY19ldmVudF9yZWNlaXZlZChzZWxmLCBldmVudDogUXVpY0V2ZW50KToKLSAg
ICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgUHJvdG9jb2xOZWdvdGlhdGVkKToKLSAgICAgICAg
ICAgIGlmIGV2ZW50LmFscG5fcHJvdG9jb2wgaW4gRG5zU2VydmVyUHJvdG9jb2wuU1VQUE9SVEVE
X0FMUE5TOgotICAgICAgICAgICAgICAgIHNlbGYuX2RucyA9IERuc0Nvbm5lY3Rpb24oc2VsZi5f
cXVpYykKLSAgICAgICAgaWYgc2VsZi5fZG5zIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2Vs
Zi5fZG5zLmhhbmRsZV9ldmVudChldmVudCkKLQotCi1jbGFzcyBTZXNzaW9uVGlja2V0U3RvcmU6
Ci0gICAgIiIiCi0gICAgU2ltcGxlIGluLW1lbW9yeSBzdG9yZSBmb3Igc2Vzc2lvbiB0aWNrZXRz
LgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYpIC0+IE5vbmU6Ci0gICAgICAgIHNl
bGYudGlja2V0czogRGljdFtieXRlcywgU2Vzc2lvblRpY2tldF0gPSB7fQotCi0gICAgZGVmIGFk
ZChzZWxmLCB0aWNrZXQ6IFNlc3Npb25UaWNrZXQpIC0+IE5vbmU6Ci0gICAgICAgIHNlbGYudGlj
a2V0c1t0aWNrZXQudGlja2V0XSA9IHRpY2tldAotCi0gICAgZGVmIHBvcChzZWxmLCBsYWJlbDog
Ynl0ZXMpIC0+IE9wdGlvbmFsW1Nlc3Npb25UaWNrZXRdOgotICAgICAgICByZXR1cm4gc2VsZi50
aWNrZXRzLnBvcChsYWJlbCwgTm9uZSkKLQotCi1pZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgot
Ci0gICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249IkROUyBv
dmVyIFFVSUMgc2VydmVyIikKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAotICAgICAgICAiLS1o
b3N0IiwKLSAgICAgICAgdHlwZT1zdHIsCi0gICAgICAgIGRlZmF1bHQ9Ijo6IiwKLSAgICAgICAg
aGVscD0ibGlzdGVuIG9uIHRoZSBzcGVjaWZpZWQgYWRkcmVzcyAoZGVmYXVsdHMgdG8gOjopIiwK
LSAgICApCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKLSAgICAgICAgIi0tcG9ydCIsCi0gICAg
ICAgIHR5cGU9aW50LAotICAgICAgICBkZWZhdWx0PTQ3ODQsCi0gICAgICAgIGhlbHA9Imxpc3Rl
biBvbiB0aGUgc3BlY2lmaWVkIHBvcnQgKGRlZmF1bHRzIHRvIDQ3ODQpIiwKLSAgICApCi0gICAg
cGFyc2VyLmFkZF9hcmd1bWVudCgKLSAgICAgICAgIi1rIiwKLSAgICAgICAgIi0tcHJpdmF0ZS1r
ZXkiLAotICAgICAgICB0eXBlPXN0ciwKLSAgICAgICAgcmVxdWlyZWQ9VHJ1ZSwKLSAgICAgICAg
aGVscD0ibG9hZCB0aGUgVExTIHByaXZhdGUga2V5IGZyb20gdGhlIHNwZWNpZmllZCBmaWxlIiwK
LSAgICApCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKLSAgICAgICAgIi1jIiwKLSAgICAgICAg
Ii0tY2VydGlmaWNhdGUiLAotICAgICAgICB0eXBlPXN0ciwKLSAgICAgICAgcmVxdWlyZWQ9VHJ1
ZSwKLSAgICAgICAgaGVscD0ibG9hZCB0aGUgVExTIGNlcnRpZmljYXRlIGZyb20gdGhlIHNwZWNp
ZmllZCBmaWxlIiwKLSAgICApCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKLSAgICAgICAgIi1y
IiwKLSAgICAgICAgIi0tcmVzb2x2ZXIiLAotICAgICAgICB0eXBlPXN0ciwKLSAgICAgICAgZGVm
YXVsdD0iOC44LjguOCIsCi0gICAgICAgIGhlbHA9IlVwc3RyZWFtIENsYXNzaWMgRE5TIHJlc29s
dmVyIHRvIHVzZSIsCi0gICAgKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCi0gICAgICAgICIt
cyIsCi0gICAgICAgICItLXN0YXRlbGVzcy1yZXRyeSIsCi0gICAgICAgIGFjdGlvbj0ic3RvcmVf
dHJ1ZSIsCi0gICAgICAgIGhlbHA9InNlbmQgYSBzdGF0ZWxlc3MgcmV0cnkgZm9yIG5ldyBjb25u
ZWN0aW9ucyIsCi0gICAgKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCi0gICAgICAgICItcSIs
ICItLXF1aWMtbG9nIiwgdHlwZT1zdHIsIGhlbHA9ImxvZyBRVUlDIGV2ZW50cyB0byBhIGZpbGUg
aW4gUUxPRyBmb3JtYXQiCi0gICAgKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCi0gICAgICAg
ICItdiIsICItLXZlcmJvc2UiLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSJpbmNyZWFzZSBs
b2dnaW5nIHZlcmJvc2l0eSIKLSAgICApCi0KLSAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3Mo
KQotCi0gICAgbG9nZ2luZy5iYXNpY0NvbmZpZygKLSAgICAgICAgZm9ybWF0PSIlKGFzY3RpbWUp
cyAlKGxldmVsbmFtZSlzICUobmFtZSlzICUobWVzc2FnZSlzIiwKLSAgICAgICAgbGV2ZWw9bG9n
Z2luZy5ERUJVRyBpZiBhcmdzLnZlcmJvc2UgZWxzZSBsb2dnaW5nLklORk8sCi0gICAgKQotCi0g
ICAgaWYgYXJncy5xdWljX2xvZzoKLSAgICAgICAgcXVpY19sb2dnZXIgPSBRdWljTG9nZ2VyKCkK
LSAgICBlbHNlOgotICAgICAgICBxdWljX2xvZ2dlciA9IE5vbmUKLQotICAgIGNvbmZpZ3VyYXRp
b24gPSBRdWljQ29uZmlndXJhdGlvbigKLSAgICAgICAgYWxwbl9wcm90b2NvbHM9WyJkcSJdLAot
ICAgICAgICBpc19jbGllbnQ9RmFsc2UsCi0gICAgICAgIG1heF9kYXRhZ3JhbV9mcmFtZV9zaXpl
PTY1NTM2LAotICAgICAgICBxdWljX2xvZ2dlcj1xdWljX2xvZ2dlciwKLSAgICApCi0KLSAgICBj
b25maWd1cmF0aW9uLmxvYWRfY2VydF9jaGFpbihhcmdzLmNlcnRpZmljYXRlLCBhcmdzLnByaXZh
dGVfa2V5KQotCi0gICAgdGlja2V0X3N0b3JlID0gU2Vzc2lvblRpY2tldFN0b3JlKCkKLQotICAg
IGlmIHV2bG9vcCBpcyBub3QgTm9uZToKLSAgICAgICAgdXZsb29wLmluc3RhbGwoKQotICAgIGxv
b3AgPSBhc3luY2lvLmdldF9ldmVudF9sb29wKCkKLSAgICBsb29wLnJ1bl91bnRpbF9jb21wbGV0
ZSgKLSAgICAgICAgc2VydmUoCi0gICAgICAgICAgICBhcmdzLmhvc3QsCi0gICAgICAgICAgICBh
cmdzLnBvcnQsCi0gICAgICAgICAgICBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sCi0gICAg
ICAgICAgICBjcmVhdGVfcHJvdG9jb2w9RG5zU2VydmVyUHJvdG9jb2wsCi0gICAgICAgICAgICBz
ZXNzaW9uX3RpY2tldF9mZXRjaGVyPXRpY2tldF9zdG9yZS5wb3AsCi0gICAgICAgICAgICBzZXNz
aW9uX3RpY2tldF9oYW5kbGVyPXRpY2tldF9zdG9yZS5hZGQsCi0gICAgICAgICAgICBzdGF0ZWxl
c3NfcmV0cnk9YXJncy5zdGF0ZWxlc3NfcmV0cnksCi0gICAgICAgICkKLSAgICApCi0gICAgdHJ5
OgotICAgICAgICBsb29wLnJ1bl9mb3JldmVyKCkKLSAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1
cHQ6Ci0gICAgICAgIHBhc3MKLSAgICBmaW5hbGx5OgotICAgICAgICBpZiBjb25maWd1cmF0aW9u
LnF1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgd2l0aCBvcGVuKGFyZ3MucXVp
Y19sb2csICJ3IikgYXMgbG9nZ2VyX2ZwOgotICAgICAgICAgICAgICAgIGpzb24uZHVtcChjb25m
aWd1cmF0aW9uLnF1aWNfbG9nZ2VyLnRvX2RpY3QoKSwgbG9nZ2VyX2ZwLCBpbmRlbnQ9NCkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9odGRvY3Mvcm9ib3RzLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9leGFtcGxlcy9odGRvY3Mvcm9ib3RzLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNTFhYTBiZGVhYWNlNjM3MmE3ZWIxMzAxMGZkMTY2NmM2NTU0Njg2NC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhh
bXBsZXMvaHRkb2NzL3JvYm90cy50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLVVz
ZXItYWdlbnQ6ICoKLURpc2FsbG93OiAvbG9ncwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4
YW1wbGVzL2h0ZG9jcy9zdHlsZS5jc3MgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvaHRkb2NzL3N0
eWxlLmNzcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDE1MjNkYjhhZDhkMTZmNzUy
NjBjNTgxN2FiNDhlODllMjFlYmJkNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvaHRkb2NzL3N0eWxlLmNzcworKysg
L2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLWJvZHkgewotICAgIGZvbnQtZmFtaWx5OiBBcmlh
bCwgc2Fucy1zZXJpZjsKLSAgICBmb250LXNpemU6IDE2cHg7Ci0gICAgbWFyZ2luOiAwIGF1dG87
Ci0gICAgd2lkdGg6IDQwZW07Ci19Ci0KLXRhYmxlLmxvZ3MgewotICAgIHdpZHRoOiAxMDAlOwot
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2h0ZG9jcy93M2MtaW1wb3J0Lmxv
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9odGRvY3MvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2NjgyMGRmMGRmODA5YzdjOTg5OTI3YThiOGIzMjhlMDQ5
NTZmZjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL2V4YW1wbGVzL2h0ZG9jcy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBA
IC0xLDE4ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVk
IGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJl
Y3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQ
VCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQot
VGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8g
cmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVBy
b3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9odGRvY3Mvcm9i
b3RzLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9odGRvY3Mvc3R5bGUuY3NzCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvaHR0cDNfY2xpZW50LnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L2V4YW1wbGVzL2h0dHAzX2NsaWVudC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
OGE4ODhhMzZlYTdlYmEyN2YzNmE1ZGQ0MGIwYzc2YTA0MjQ5ZGMyOS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvaHR0
cDNfY2xpZW50LnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDU1ICswLDAgQEAKLWltcG9ydCBhcmdw
YXJzZQotaW1wb3J0IGFzeW5jaW8KLWltcG9ydCBqc29uCi1pbXBvcnQgbG9nZ2luZwotaW1wb3J0
IG9zCi1pbXBvcnQgcGlja2xlCi1pbXBvcnQgc3NsCi1pbXBvcnQgdGltZQotZnJvbSBjb2xsZWN0
aW9ucyBpbXBvcnQgZGVxdWUKLWZyb20gdHlwaW5nIGltcG9ydCBDYWxsYWJsZSwgRGVxdWUsIERp
Y3QsIExpc3QsIE9wdGlvbmFsLCBVbmlvbiwgY2FzdAotZnJvbSB1cmxsaWIucGFyc2UgaW1wb3J0
IHVybHBhcnNlCi0KLWltcG9ydCB3c3Byb3RvCi1pbXBvcnQgd3Nwcm90by5ldmVudHMKLQotaW1w
b3J0IGFpb3F1aWMKLWZyb20gYWlvcXVpYy5hc3luY2lvLmNsaWVudCBpbXBvcnQgY29ubmVjdAot
ZnJvbSBhaW9xdWljLmFzeW5jaW8ucHJvdG9jb2wgaW1wb3J0IFF1aWNDb25uZWN0aW9uUHJvdG9j
b2wKLWZyb20gYWlvcXVpYy5oMC5jb25uZWN0aW9uIGltcG9ydCBIMF9BTFBOLCBIMENvbm5lY3Rp
b24KLWZyb20gYWlvcXVpYy5oMy5jb25uZWN0aW9uIGltcG9ydCBIM19BTFBOLCBIM0Nvbm5lY3Rp
b24KLWZyb20gYWlvcXVpYy5oMy5ldmVudHMgaW1wb3J0ICgKLSAgICBEYXRhUmVjZWl2ZWQsCi0g
ICAgSDNFdmVudCwKLSAgICBIZWFkZXJzUmVjZWl2ZWQsCi0gICAgUHVzaFByb21pc2VSZWNlaXZl
ZCwKLSkKLWZyb20gYWlvcXVpYy5xdWljLmNvbmZpZ3VyYXRpb24gaW1wb3J0IFF1aWNDb25maWd1
cmF0aW9uCi1mcm9tIGFpb3F1aWMucXVpYy5ldmVudHMgaW1wb3J0IFF1aWNFdmVudAotZnJvbSBh
aW9xdWljLnF1aWMubG9nZ2VyIGltcG9ydCBRdWljTG9nZ2VyCi1mcm9tIGFpb3F1aWMudGxzIGlt
cG9ydCBTZXNzaW9uVGlja2V0Ci0KLXRyeToKLSAgICBpbXBvcnQgdXZsb29wCi1leGNlcHQgSW1w
b3J0RXJyb3I6Ci0gICAgdXZsb29wID0gTm9uZQotCi1sb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dl
cigiY2xpZW50IikKLQotSHR0cENvbm5lY3Rpb24gPSBVbmlvbltIMENvbm5lY3Rpb24sIEgzQ29u
bmVjdGlvbl0KLQotVVNFUl9BR0VOVCA9ICJhaW9xdWljLyIgKyBhaW9xdWljLl9fdmVyc2lvbl9f
Ci0KLQotY2xhc3MgVVJMOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1cmw6IHN0cikgLT4gTm9u
ZToKLSAgICAgICAgcGFyc2VkID0gdXJscGFyc2UodXJsKQotCi0gICAgICAgIHNlbGYuYXV0aG9y
aXR5ID0gcGFyc2VkLm5ldGxvYwotICAgICAgICBzZWxmLmZ1bGxfcGF0aCA9IHBhcnNlZC5wYXRo
Ci0gICAgICAgIGlmIHBhcnNlZC5xdWVyeToKLSAgICAgICAgICAgIHNlbGYuZnVsbF9wYXRoICs9
ICI/IiArIHBhcnNlZC5xdWVyeQotICAgICAgICBzZWxmLnNjaGVtZSA9IHBhcnNlZC5zY2hlbWUK
LQotCi1jbGFzcyBIdHRwUmVxdWVzdDoKLSAgICBkZWYgX19pbml0X18oCi0gICAgICAgIHNlbGYs
IG1ldGhvZDogc3RyLCB1cmw6IFVSTCwgY29udGVudDogYnl0ZXMgPSBiIiIsIGhlYWRlcnM6IERp
Y3QgPSB7fQotICAgICkgLT4gTm9uZToKLSAgICAgICAgc2VsZi5jb250ZW50ID0gY29udGVudAot
ICAgICAgICBzZWxmLmhlYWRlcnMgPSBoZWFkZXJzCi0gICAgICAgIHNlbGYubWV0aG9kID0gbWV0
aG9kCi0gICAgICAgIHNlbGYudXJsID0gdXJsCi0KLQotY2xhc3MgV2ViU29ja2V0OgotICAgIGRl
ZiBfX2luaXRfXygKLSAgICAgICAgc2VsZiwgaHR0cDogSHR0cENvbm5lY3Rpb24sIHN0cmVhbV9p
ZDogaW50LCB0cmFuc21pdDogQ2FsbGFibGVbW10sIE5vbmVdCi0gICAgKSAtPiBOb25lOgotICAg
ICAgICBzZWxmLmh0dHAgPSBodHRwCi0gICAgICAgIHNlbGYucXVldWU6IGFzeW5jaW8uUXVldWVb
c3RyXSA9IGFzeW5jaW8uUXVldWUoKQotICAgICAgICBzZWxmLnN0cmVhbV9pZCA9IHN0cmVhbV9p
ZAotICAgICAgICBzZWxmLnN1YnByb3RvY29sOiBPcHRpb25hbFtzdHJdID0gTm9uZQotICAgICAg
ICBzZWxmLnRyYW5zbWl0ID0gdHJhbnNtaXQKLSAgICAgICAgc2VsZi53ZWJzb2NrZXQgPSB3c3By
b3RvLkNvbm5lY3Rpb24od3Nwcm90by5Db25uZWN0aW9uVHlwZS5DTElFTlQpCi0KLSAgICBhc3lu
YyBkZWYgY2xvc2Uoc2VsZiwgY29kZT0xMDAwLCByZWFzb249IiIpIC0+IE5vbmU6Ci0gICAgICAg
ICIiIgotICAgICAgICBQZXJmb3JtIHRoZSBjbG9zaW5nIGhhbmRzaGFrZS4KLSAgICAgICAgIiIi
Ci0gICAgICAgIGRhdGEgPSBzZWxmLndlYnNvY2tldC5zZW5kKAotICAgICAgICAgICAgd3Nwcm90
by5ldmVudHMuQ2xvc2VDb25uZWN0aW9uKGNvZGU9Y29kZSwgcmVhc29uPXJlYXNvbikKLSAgICAg
ICAgKQotICAgICAgICBzZWxmLmh0dHAuc2VuZF9kYXRhKHN0cmVhbV9pZD1zZWxmLnN0cmVhbV9p
ZCwgZGF0YT1kYXRhLCBlbmRfc3RyZWFtPVRydWUpCi0gICAgICAgIHNlbGYudHJhbnNtaXQoKQot
Ci0gICAgYXN5bmMgZGVmIHJlY3Yoc2VsZikgLT4gc3RyOgotICAgICAgICAiIiIKLSAgICAgICAg
UmVjZWl2ZSB0aGUgbmV4dCBtZXNzYWdlLgotICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIGF3
YWl0IHNlbGYucXVldWUuZ2V0KCkKLQotICAgIGFzeW5jIGRlZiBzZW5kKHNlbGYsIG1lc3NhZ2U6
IHN0cikgLT4gTm9uZToKLSAgICAgICAgIiIiCi0gICAgICAgIFNlbmQgYSBtZXNzYWdlLgotICAg
ICAgICAiIiIKLSAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UobWVzc2FnZSwgc3RyKQotCi0gICAg
ICAgIGRhdGEgPSBzZWxmLndlYnNvY2tldC5zZW5kKHdzcHJvdG8uZXZlbnRzLlRleHRNZXNzYWdl
KGRhdGE9bWVzc2FnZSkpCi0gICAgICAgIHNlbGYuaHR0cC5zZW5kX2RhdGEoc3RyZWFtX2lkPXNl
bGYuc3RyZWFtX2lkLCBkYXRhPWRhdGEsIGVuZF9zdHJlYW09RmFsc2UpCi0gICAgICAgIHNlbGYu
dHJhbnNtaXQoKQotCi0gICAgZGVmIGh0dHBfZXZlbnRfcmVjZWl2ZWQoc2VsZiwgZXZlbnQ6IEgz
RXZlbnQpIC0+IE5vbmU6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIEhlYWRlcnNSZWNl
aXZlZCk6Ci0gICAgICAgICAgICBmb3IgaGVhZGVyLCB2YWx1ZSBpbiBldmVudC5oZWFkZXJzOgot
ICAgICAgICAgICAgICAgIGlmIGhlYWRlciA9PSBiInNlYy13ZWJzb2NrZXQtcHJvdG9jb2wiOgot
ICAgICAgICAgICAgICAgICAgICBzZWxmLnN1YnByb3RvY29sID0gdmFsdWUuZGVjb2RlKCkKLSAg
ICAgICAgZWxpZiBpc2luc3RhbmNlKGV2ZW50LCBEYXRhUmVjZWl2ZWQpOgotICAgICAgICAgICAg
c2VsZi53ZWJzb2NrZXQucmVjZWl2ZV9kYXRhKGV2ZW50LmRhdGEpCi0KLSAgICAgICAgZm9yIHdz
X2V2ZW50IGluIHNlbGYud2Vic29ja2V0LmV2ZW50cygpOgotICAgICAgICAgICAgc2VsZi53ZWJz
b2NrZXRfZXZlbnRfcmVjZWl2ZWQod3NfZXZlbnQpCi0KLSAgICBkZWYgd2Vic29ja2V0X2V2ZW50
X3JlY2VpdmVkKHNlbGYsIGV2ZW50OiB3c3Byb3RvLmV2ZW50cy5FdmVudCkgLT4gTm9uZToKLSAg
ICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgd3Nwcm90by5ldmVudHMuVGV4dE1lc3NhZ2UpOgot
ICAgICAgICAgICAgc2VsZi5xdWV1ZS5wdXRfbm93YWl0KGV2ZW50LmRhdGEpCi0KLQotY2xhc3Mg
SHR0cENsaWVudChRdWljQ29ubmVjdGlvblByb3RvY29sKToKLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgKmFyZ3MsICoqa3dhcmdzKSAtPiBOb25lOgotICAgICAgICBzdXBlcigpLl9faW5pdF9fKCph
cmdzLCAqKmt3YXJncykKLQotICAgICAgICBzZWxmLnB1c2hlczogRGljdFtpbnQsIERlcXVlW0gz
RXZlbnRdXSA9IHt9Ci0gICAgICAgIHNlbGYuX2h0dHA6IE9wdGlvbmFsW0h0dHBDb25uZWN0aW9u
XSA9IE5vbmUKLSAgICAgICAgc2VsZi5fcmVxdWVzdF9ldmVudHM6IERpY3RbaW50LCBEZXF1ZVtI
M0V2ZW50XV0gPSB7fQotICAgICAgICBzZWxmLl9yZXF1ZXN0X3dhaXRlcjogRGljdFtpbnQsIGFz
eW5jaW8uRnV0dXJlW0RlcXVlW0gzRXZlbnRdXV0gPSB7fQotICAgICAgICBzZWxmLl93ZWJzb2Nr
ZXRzOiBEaWN0W2ludCwgV2ViU29ja2V0XSA9IHt9Ci0KLSAgICAgICAgaWYgc2VsZi5fcXVpYy5j
b25maWd1cmF0aW9uLmFscG5fcHJvdG9jb2xzWzBdLnN0YXJ0c3dpdGgoImhxLSIpOgotICAgICAg
ICAgICAgc2VsZi5faHR0cCA9IEgwQ29ubmVjdGlvbihzZWxmLl9xdWljKQotICAgICAgICBlbHNl
OgotICAgICAgICAgICAgc2VsZi5faHR0cCA9IEgzQ29ubmVjdGlvbihzZWxmLl9xdWljKQotCi0g
ICAgYXN5bmMgZGVmIGdldChzZWxmLCB1cmw6IHN0ciwgaGVhZGVyczogRGljdCA9IHt9KSAtPiBE
ZXF1ZVtIM0V2ZW50XToKLSAgICAgICAgIiIiCi0gICAgICAgIFBlcmZvcm0gYSBHRVQgcmVxdWVz
dC4KLSAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiBhd2FpdCBzZWxmLl9yZXF1ZXN0KAotICAg
ICAgICAgICAgSHR0cFJlcXVlc3QobWV0aG9kPSJHRVQiLCB1cmw9VVJMKHVybCksIGhlYWRlcnM9
aGVhZGVycykKLSAgICAgICAgKQotCi0gICAgYXN5bmMgZGVmIHBvc3Qoc2VsZiwgdXJsOiBzdHIs
IGRhdGE6IGJ5dGVzLCBoZWFkZXJzOiBEaWN0ID0ge30pIC0+IERlcXVlW0gzRXZlbnRdOgotICAg
ICAgICAiIiIKLSAgICAgICAgUGVyZm9ybSBhIFBPU1QgcmVxdWVzdC4KLSAgICAgICAgIiIiCi0g
ICAgICAgIHJldHVybiBhd2FpdCBzZWxmLl9yZXF1ZXN0KAotICAgICAgICAgICAgSHR0cFJlcXVl
c3QobWV0aG9kPSJQT1NUIiwgdXJsPVVSTCh1cmwpLCBjb250ZW50PWRhdGEsIGhlYWRlcnM9aGVh
ZGVycykKLSAgICAgICAgKQotCi0gICAgYXN5bmMgZGVmIHdlYnNvY2tldChzZWxmLCB1cmw6IHN0
ciwgc3VicHJvdG9jb2xzOiBMaXN0W3N0cl0gPSBbXSkgLT4gV2ViU29ja2V0OgotICAgICAgICAi
IiIKLSAgICAgICAgT3BlbiBhIFdlYlNvY2tldC4KLSAgICAgICAgIiIiCi0gICAgICAgIHJlcXVl
c3QgPSBIdHRwUmVxdWVzdChtZXRob2Q9IkNPTk5FQ1QiLCB1cmw9VVJMKHVybCkpCi0gICAgICAg
IHN0cmVhbV9pZCA9IHNlbGYuX3F1aWMuZ2V0X25leHRfYXZhaWxhYmxlX3N0cmVhbV9pZCgpCi0g
ICAgICAgIHdlYnNvY2tldCA9IFdlYlNvY2tldCgKLSAgICAgICAgICAgIGh0dHA9c2VsZi5faHR0
cCwgc3RyZWFtX2lkPXN0cmVhbV9pZCwgdHJhbnNtaXQ9c2VsZi50cmFuc21pdAotICAgICAgICAp
Ci0KLSAgICAgICAgc2VsZi5fd2Vic29ja2V0c1tzdHJlYW1faWRdID0gd2Vic29ja2V0Ci0KLSAg
ICAgICAgaGVhZGVycyA9IFsKLSAgICAgICAgICAgIChiIjptZXRob2QiLCBiIkNPTk5FQ1QiKSwK
LSAgICAgICAgICAgIChiIjpzY2hlbWUiLCBiImh0dHBzIiksCi0gICAgICAgICAgICAoYiI6YXV0
aG9yaXR5IiwgcmVxdWVzdC51cmwuYXV0aG9yaXR5LmVuY29kZSgpKSwKLSAgICAgICAgICAgIChi
IjpwYXRoIiwgcmVxdWVzdC51cmwuZnVsbF9wYXRoLmVuY29kZSgpKSwKLSAgICAgICAgICAgIChi
Ijpwcm90b2NvbCIsIGIid2Vic29ja2V0IiksCi0gICAgICAgICAgICAoYiJ1c2VyLWFnZW50Iiwg
VVNFUl9BR0VOVC5lbmNvZGUoKSksCi0gICAgICAgICAgICAoYiJzZWMtd2Vic29ja2V0LXZlcnNp
b24iLCBiIjEzIiksCi0gICAgICAgIF0KLSAgICAgICAgaWYgc3VicHJvdG9jb2xzOgotICAgICAg
ICAgICAgaGVhZGVycy5hcHBlbmQoCi0gICAgICAgICAgICAgICAgKGIic2VjLXdlYnNvY2tldC1w
cm90b2NvbCIsICIsICIuam9pbihzdWJwcm90b2NvbHMpLmVuY29kZSgpKQotICAgICAgICAgICAg
KQotICAgICAgICBzZWxmLl9odHRwLnNlbmRfaGVhZGVycyhzdHJlYW1faWQ9c3RyZWFtX2lkLCBo
ZWFkZXJzPWhlYWRlcnMpCi0KLSAgICAgICAgc2VsZi50cmFuc21pdCgpCi0KLSAgICAgICAgcmV0
dXJuIHdlYnNvY2tldAotCi0gICAgZGVmIGh0dHBfZXZlbnRfcmVjZWl2ZWQoc2VsZiwgZXZlbnQ6
IEgzRXZlbnQpIC0+IE5vbmU6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIChIZWFkZXJz
UmVjZWl2ZWQsIERhdGFSZWNlaXZlZCkpOgotICAgICAgICAgICAgc3RyZWFtX2lkID0gZXZlbnQu
c3RyZWFtX2lkCi0gICAgICAgICAgICBpZiBzdHJlYW1faWQgaW4gc2VsZi5fcmVxdWVzdF9ldmVu
dHM6Ci0gICAgICAgICAgICAgICAgIyBodHRwCi0gICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVz
dF9ldmVudHNbZXZlbnQuc3RyZWFtX2lkXS5hcHBlbmQoZXZlbnQpCi0gICAgICAgICAgICAgICAg
aWYgZXZlbnQuc3RyZWFtX2VuZGVkOgotICAgICAgICAgICAgICAgICAgICByZXF1ZXN0X3dhaXRl
ciA9IHNlbGYuX3JlcXVlc3Rfd2FpdGVyLnBvcChzdHJlYW1faWQpCi0gICAgICAgICAgICAgICAg
ICAgIHJlcXVlc3Rfd2FpdGVyLnNldF9yZXN1bHQoc2VsZi5fcmVxdWVzdF9ldmVudHMucG9wKHN0
cmVhbV9pZCkpCi0KLSAgICAgICAgICAgIGVsaWYgc3RyZWFtX2lkIGluIHNlbGYuX3dlYnNvY2tl
dHM6Ci0gICAgICAgICAgICAgICAgIyB3ZWJzb2NrZXQKLSAgICAgICAgICAgICAgICB3ZWJzb2Nr
ZXQgPSBzZWxmLl93ZWJzb2NrZXRzW3N0cmVhbV9pZF0KLSAgICAgICAgICAgICAgICB3ZWJzb2Nr
ZXQuaHR0cF9ldmVudF9yZWNlaXZlZChldmVudCkKLQotICAgICAgICAgICAgZWxpZiBldmVudC5w
dXNoX2lkIGluIHNlbGYucHVzaGVzOgotICAgICAgICAgICAgICAgICMgcHVzaAotICAgICAgICAg
ICAgICAgIHNlbGYucHVzaGVzW2V2ZW50LnB1c2hfaWRdLmFwcGVuZChldmVudCkKLQotICAgICAg
ICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIFB1c2hQcm9taXNlUmVjZWl2ZWQpOgotICAgICAgICAg
ICAgc2VsZi5wdXNoZXNbZXZlbnQucHVzaF9pZF0gPSBkZXF1ZSgpCi0gICAgICAgICAgICBzZWxm
LnB1c2hlc1tldmVudC5wdXNoX2lkXS5hcHBlbmQoZXZlbnQpCi0KLSAgICBkZWYgcXVpY19ldmVu
dF9yZWNlaXZlZChzZWxmLCBldmVudDogUXVpY0V2ZW50KSAtPiBOb25lOgotICAgICAgICAjIMKg
cGFzcyBldmVudCB0byB0aGUgSFRUUCBsYXllcgotICAgICAgICBpZiBzZWxmLl9odHRwIGlzIG5v
dCBOb25lOgotICAgICAgICAgICAgZm9yIGh0dHBfZXZlbnQgaW4gc2VsZi5faHR0cC5oYW5kbGVf
ZXZlbnQoZXZlbnQpOgotICAgICAgICAgICAgICAgIHNlbGYuaHR0cF9ldmVudF9yZWNlaXZlZCho
dHRwX2V2ZW50KQotCi0gICAgYXN5bmMgZGVmIF9yZXF1ZXN0KHNlbGYsIHJlcXVlc3Q6IEh0dHBS
ZXF1ZXN0KToKLSAgICAgICAgc3RyZWFtX2lkID0gc2VsZi5fcXVpYy5nZXRfbmV4dF9hdmFpbGFi
bGVfc3RyZWFtX2lkKCkKLSAgICAgICAgc2VsZi5faHR0cC5zZW5kX2hlYWRlcnMoCi0gICAgICAg
ICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAotICAgICAgICAgICAgaGVhZGVycz1bCi0gICAgICAg
ICAgICAgICAgKGIiOm1ldGhvZCIsIHJlcXVlc3QubWV0aG9kLmVuY29kZSgpKSwKLSAgICAgICAg
ICAgICAgICAoYiI6c2NoZW1lIiwgcmVxdWVzdC51cmwuc2NoZW1lLmVuY29kZSgpKSwKLSAgICAg
ICAgICAgICAgICAoYiI6YXV0aG9yaXR5IiwgcmVxdWVzdC51cmwuYXV0aG9yaXR5LmVuY29kZSgp
KSwKLSAgICAgICAgICAgICAgICAoYiI6cGF0aCIsIHJlcXVlc3QudXJsLmZ1bGxfcGF0aC5lbmNv
ZGUoKSksCi0gICAgICAgICAgICAgICAgKGIidXNlci1hZ2VudCIsIFVTRVJfQUdFTlQuZW5jb2Rl
KCkpLAotICAgICAgICAgICAgXQotICAgICAgICAgICAgKyBbKGsuZW5jb2RlKCksIHYuZW5jb2Rl
KCkpIGZvciAoaywgdikgaW4gcmVxdWVzdC5oZWFkZXJzLml0ZW1zKCldLAotICAgICAgICApCi0g
ICAgICAgIHNlbGYuX2h0dHAuc2VuZF9kYXRhKHN0cmVhbV9pZD1zdHJlYW1faWQsIGRhdGE9cmVx
dWVzdC5jb250ZW50LCBlbmRfc3RyZWFtPVRydWUpCi0KLSAgICAgICAgd2FpdGVyID0gc2VsZi5f
bG9vcC5jcmVhdGVfZnV0dXJlKCkKLSAgICAgICAgc2VsZi5fcmVxdWVzdF9ldmVudHNbc3RyZWFt
X2lkXSA9IGRlcXVlKCkKLSAgICAgICAgc2VsZi5fcmVxdWVzdF93YWl0ZXJbc3RyZWFtX2lkXSA9
IHdhaXRlcgotICAgICAgICBzZWxmLnRyYW5zbWl0KCkKLQotICAgICAgICByZXR1cm4gYXdhaXQg
YXN5bmNpby5zaGllbGQod2FpdGVyKQotCi0KLWFzeW5jIGRlZiBwZXJmb3JtX2h0dHBfcmVxdWVz
dCgKLSAgICBjbGllbnQ6IEh0dHBDbGllbnQsIHVybDogc3RyLCBkYXRhOiBzdHIsIGluY2x1ZGU6
IGJvb2wsIG91dHB1dF9kaXI6IE9wdGlvbmFsW3N0cl0sCi0pIC0+IE5vbmU6Ci0gICAgIyBwZXJm
b3JtIHJlcXVlc3QKLSAgICBzdGFydCA9IHRpbWUudGltZSgpCi0gICAgaWYgZGF0YSBpcyBub3Qg
Tm9uZToKLSAgICAgICAgaHR0cF9ldmVudHMgPSBhd2FpdCBjbGllbnQucG9zdCgKLSAgICAgICAg
ICAgIHVybCwKLSAgICAgICAgICAgIGRhdGE9ZGF0YS5lbmNvZGUoKSwKLSAgICAgICAgICAgIGhl
YWRlcnM9eyJjb250ZW50LXR5cGUiOiAiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVk
In0sCi0gICAgICAgICkKLSAgICBlbHNlOgotICAgICAgICBodHRwX2V2ZW50cyA9IGF3YWl0IGNs
aWVudC5nZXQodXJsKQotICAgIGVsYXBzZWQgPSB0aW1lLnRpbWUoKSAtIHN0YXJ0Ci0KLSAgICAj
IHByaW50IHNwZWVkCi0gICAgb2N0ZXRzID0gMAotICAgIGZvciBodHRwX2V2ZW50IGluIGh0dHBf
ZXZlbnRzOgotICAgICAgICBpZiBpc2luc3RhbmNlKGh0dHBfZXZlbnQsIERhdGFSZWNlaXZlZCk6
Ci0gICAgICAgICAgICBvY3RldHMgKz0gbGVuKGh0dHBfZXZlbnQuZGF0YSkKLSAgICBsb2dnZXIu
aW5mbygKLSAgICAgICAgIlJlY2VpdmVkICVkIGJ5dGVzIGluICUuMWYgcyAoJS4zZiBNYnBzKSIK
LSAgICAgICAgJSAob2N0ZXRzLCBlbGFwc2VkLCBvY3RldHMgKiA4IC8gZWxhcHNlZCAvIDEwMDAw
MDApCi0gICAgKQotCi0gICAgIyBvdXRwdXQgcmVzcG9uc2UKLSAgICBpZiBvdXRwdXRfZGlyIGlz
IG5vdCBOb25lOgotICAgICAgICBvdXRwdXRfcGF0aCA9IG9zLnBhdGguam9pbigKLSAgICAgICAg
ICAgIG91dHB1dF9kaXIsIG9zLnBhdGguYmFzZW5hbWUodXJscGFyc2UodXJsKS5wYXRoKSBvciAi
aW5kZXguaHRtbCIKLSAgICAgICAgKQotICAgICAgICB3aXRoIG9wZW4ob3V0cHV0X3BhdGgsICJ3
YiIpIGFzIG91dHB1dF9maWxlOgotICAgICAgICAgICAgZm9yIGh0dHBfZXZlbnQgaW4gaHR0cF9l
dmVudHM6Ci0gICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShodHRwX2V2ZW50LCBIZWFkZXJz
UmVjZWl2ZWQpIGFuZCBpbmNsdWRlOgotICAgICAgICAgICAgICAgICAgICBoZWFkZXJzID0gYiIi
Ci0gICAgICAgICAgICAgICAgICAgIGZvciBrLCB2IGluIGh0dHBfZXZlbnQuaGVhZGVyczoKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnMgKz0gayArIGIiOiAiICsgdiArIGIiXHJcbiIK
LSAgICAgICAgICAgICAgICAgICAgaWYgaGVhZGVyczoKLSAgICAgICAgICAgICAgICAgICAgICAg
IG91dHB1dF9maWxlLndyaXRlKGhlYWRlcnMgKyBiIlxyXG4iKQotICAgICAgICAgICAgICAgIGVs
aWYgaXNpbnN0YW5jZShodHRwX2V2ZW50LCBEYXRhUmVjZWl2ZWQpOgotICAgICAgICAgICAgICAg
ICAgICBvdXRwdXRfZmlsZS53cml0ZShodHRwX2V2ZW50LmRhdGEpCi0KLQotZGVmIHNhdmVfc2Vz
c2lvbl90aWNrZXQodGlja2V0OiBTZXNzaW9uVGlja2V0KSAtPiBOb25lOgotICAgICIiIgotICAg
IENhbGxiYWNrIHdoaWNoIGlzIGludm9rZWQgYnkgdGhlIFRMUyBlbmdpbmUgd2hlbiBhIG5ldyBz
ZXNzaW9uIHRpY2tldAotICAgIGlzIHJlY2VpdmVkLgotICAgICIiIgotICAgIGxvZ2dlci5pbmZv
KCJOZXcgc2Vzc2lvbiB0aWNrZXQgcmVjZWl2ZWQiKQotICAgIGlmIGFyZ3Muc2Vzc2lvbl90aWNr
ZXQ6Ci0gICAgICAgIHdpdGggb3BlbihhcmdzLnNlc3Npb25fdGlja2V0LCAid2IiKSBhcyBmcDoK
LSAgICAgICAgICAgIHBpY2tsZS5kdW1wKHRpY2tldCwgZnApCi0KLQotYXN5bmMgZGVmIHJ1bigK
LSAgICBjb25maWd1cmF0aW9uOiBRdWljQ29uZmlndXJhdGlvbiwKLSAgICB1cmxzOiBMaXN0W3N0
cl0sCi0gICAgZGF0YTogc3RyLAotICAgIGluY2x1ZGU6IGJvb2wsCi0gICAgb3V0cHV0X2Rpcjog
T3B0aW9uYWxbc3RyXSwKLSAgICBsb2NhbF9wb3J0OiBpbnQsCi0pIC0+IE5vbmU6Ci0gICAgIyBw
YXJzZSBVUkwKLSAgICBwYXJzZWQgPSB1cmxwYXJzZSh1cmxzWzBdKQotICAgIGFzc2VydCBwYXJz
ZWQuc2NoZW1lIGluICgKLSAgICAgICAgImh0dHBzIiwKLSAgICAgICAgIndzcyIsCi0gICAgKSwg
Ik9ubHkgaHR0cHM6Ly8gb3Igd3NzOi8vIFVSTHMgYXJlIHN1cHBvcnRlZC4iCi0gICAgaWYgIjoi
IGluIHBhcnNlZC5uZXRsb2M6Ci0gICAgICAgIGhvc3QsIHBvcnRfc3RyID0gcGFyc2VkLm5ldGxv
Yy5zcGxpdCgiOiIpCi0gICAgICAgIHBvcnQgPSBpbnQocG9ydF9zdHIpCi0gICAgZWxzZToKLSAg
ICAgICAgaG9zdCA9IHBhcnNlZC5uZXRsb2MKLSAgICAgICAgcG9ydCA9IDQ0MwotCi0gICAgYXN5
bmMgd2l0aCBjb25uZWN0KAotICAgICAgICBob3N0LAotICAgICAgICBwb3J0LAotICAgICAgICBj
b25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sCi0gICAgICAgIGNyZWF0ZV9wcm90b2NvbD1IdHRw
Q2xpZW50LAotICAgICAgICBzZXNzaW9uX3RpY2tldF9oYW5kbGVyPXNhdmVfc2Vzc2lvbl90aWNr
ZXQsCi0gICAgICAgIGxvY2FsX3BvcnQ9bG9jYWxfcG9ydCwKLSAgICApIGFzIGNsaWVudDoKLSAg
ICAgICAgY2xpZW50ID0gY2FzdChIdHRwQ2xpZW50LCBjbGllbnQpCi0KLSAgICAgICAgaWYgcGFy
c2VkLnNjaGVtZSA9PSAid3NzIjoKLSAgICAgICAgICAgIHdzID0gYXdhaXQgY2xpZW50LndlYnNv
Y2tldCh1cmxzWzBdLCBzdWJwcm90b2NvbHM9WyJjaGF0IiwgInN1cGVyY2hhdCJdKQotCi0gICAg
ICAgICAgICAjIHNlbmQgc29tZSBtZXNzYWdlcyBhbmQgcmVjZWl2ZSByZXBseQotICAgICAgICAg
ICAgZm9yIGkgaW4gcmFuZ2UoMik6Ci0gICAgICAgICAgICAgICAgbWVzc2FnZSA9ICJIZWxsbyB7
fSwgV2ViU29ja2V0ISIuZm9ybWF0KGkpCi0gICAgICAgICAgICAgICAgcHJpbnQoIj4gIiArIG1l
c3NhZ2UpCi0gICAgICAgICAgICAgICAgYXdhaXQgd3Muc2VuZChtZXNzYWdlKQotCi0gICAgICAg
ICAgICAgICAgbWVzc2FnZSA9IGF3YWl0IHdzLnJlY3YoKQotICAgICAgICAgICAgICAgIHByaW50
KCI8ICIgKyBtZXNzYWdlKQotCi0gICAgICAgICAgICBhd2FpdCB3cy5jbG9zZSgpCi0gICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICAjIHBlcmZvcm0gcmVxdWVzdAotICAgICAgICAgICAgY29yb3Mg
PSBbCi0gICAgICAgICAgICAgICAgcGVyZm9ybV9odHRwX3JlcXVlc3QoCi0gICAgICAgICAgICAg
ICAgICAgIGNsaWVudD1jbGllbnQsCi0gICAgICAgICAgICAgICAgICAgIHVybD11cmwsCi0gICAg
ICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgaW5jbHVkZT1p
bmNsdWRlLAotICAgICAgICAgICAgICAgICAgICBvdXRwdXRfZGlyPW91dHB1dF9kaXIsCi0gICAg
ICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgIGZvciB1cmwgaW4gdXJscwotICAgICAgICAg
ICAgXQotICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5nYXRoZXIoKmNvcm9zKQotCi0KLWlmIF9f
bmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgZGVmYXVsdHMgPSBRdWljQ29uZmlndXJhdGlvbihp
c19jbGllbnQ9VHJ1ZSkKLQotICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRl
c2NyaXB0aW9uPSJIVFRQLzMgY2xpZW50IikKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAotICAg
ICAgICAidXJsIiwgdHlwZT1zdHIsIG5hcmdzPSIrIiwgaGVscD0idGhlIFVSTCB0byBxdWVyeSAo
bXVzdCBiZSBIVFRQUykiCi0gICAgKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCi0gICAgICAg
ICItLWNhLWNlcnRzIiwgdHlwZT1zdHIsIGhlbHA9ImxvYWQgQ0EgY2VydGlmaWNhdGVzIGZyb20g
dGhlIHNwZWNpZmllZCBmaWxlIgotICAgICkKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAotICAg
ICAgICAiLWQiLCAiLS1kYXRhIiwgdHlwZT1zdHIsIGhlbHA9InNlbmQgdGhlIHNwZWNpZmllZCBk
YXRhIGluIGEgUE9TVCByZXF1ZXN0IgotICAgICkKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAot
ICAgICAgICAiLWkiLAotICAgICAgICAiLS1pbmNsdWRlIiwKLSAgICAgICAgYWN0aW9uPSJzdG9y
ZV90cnVlIiwKLSAgICAgICAgaGVscD0iaW5jbHVkZSB0aGUgSFRUUCByZXNwb25zZSBoZWFkZXJz
IGluIHRoZSBvdXRwdXQiLAotICAgICkKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAotICAgICAg
ICAiLS1tYXgtZGF0YSIsCi0gICAgICAgIHR5cGU9aW50LAotICAgICAgICBoZWxwPSJjb25uZWN0
aW9uLXdpZGUgZmxvdyBjb250cm9sIGxpbWl0IChkZWZhdWx0OiAlZCkiICUgZGVmYXVsdHMubWF4
X2RhdGEsCi0gICAgKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCi0gICAgICAgICItLW1heC1z
dHJlYW0tZGF0YSIsCi0gICAgICAgIHR5cGU9aW50LAotICAgICAgICBoZWxwPSJwZXItc3RyZWFt
IGZsb3cgY29udHJvbCBsaW1pdCAoZGVmYXVsdDogJWQpIiAlIGRlZmF1bHRzLm1heF9zdHJlYW1f
ZGF0YSwKLSAgICApCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKLSAgICAgICAgIi1rIiwKLSAg
ICAgICAgIi0taW5zZWN1cmUiLAotICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLAotICAgICAg
ICBoZWxwPSJkbyBub3QgdmFsaWRhdGUgc2VydmVyIGNlcnRpZmljYXRlIiwKLSAgICApCi0gICAg
cGFyc2VyLmFkZF9hcmd1bWVudCgiLS1sZWdhY3ktaHR0cCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIs
IGhlbHA9InVzZSBIVFRQLzAuOSIpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKLSAgICAgICAg
Ii0tb3V0cHV0LWRpciIsIHR5cGU9c3RyLCBoZWxwPSJ3cml0ZSBkb3dubG9hZGVkIGZpbGVzIHRv
IHRoaXMgZGlyZWN0b3J5IiwKLSAgICApCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKLSAgICAg
ICAgIi1xIiwgIi0tcXVpYy1sb2ciLCB0eXBlPXN0ciwgaGVscD0ibG9nIFFVSUMgZXZlbnRzIHRv
IGEgZmlsZSBpbiBRTE9HIGZvcm1hdCIKLSAgICApCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgK
LSAgICAgICAgIi1sIiwKLSAgICAgICAgIi0tc2VjcmV0cy1sb2ciLAotICAgICAgICB0eXBlPXN0
ciwKLSAgICAgICAgaGVscD0ibG9nIHNlY3JldHMgdG8gYSBmaWxlLCBmb3IgdXNlIHdpdGggV2ly
ZXNoYXJrIiwKLSAgICApCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKLSAgICAgICAgIi1zIiwK
LSAgICAgICAgIi0tc2Vzc2lvbi10aWNrZXQiLAotICAgICAgICB0eXBlPXN0ciwKLSAgICAgICAg
aGVscD0icmVhZCBhbmQgd3JpdGUgc2Vzc2lvbiB0aWNrZXQgZnJvbSB0aGUgc3BlY2lmaWVkIGZp
bGUiLAotICAgICkKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAotICAgICAgICAiLXYiLCAiLS12
ZXJib3NlIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0iaW5jcmVhc2UgbG9nZ2luZyB2ZXJi
b3NpdHkiCi0gICAgKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCi0gICAgICAgICItLWxvY2Fs
LXBvcnQiLCB0eXBlPWludCwgZGVmYXVsdD0wLCBoZWxwPSJsb2NhbCBwb3J0IHRvIGJpbmQgZm9y
IGNvbm5lY3Rpb25zIiwKLSAgICApCi0KLSAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQot
Ci0gICAgbG9nZ2luZy5iYXNpY0NvbmZpZygKLSAgICAgICAgZm9ybWF0PSIlKGFzY3RpbWUpcyAl
KGxldmVsbmFtZSlzICUobmFtZSlzICUobWVzc2FnZSlzIiwKLSAgICAgICAgbGV2ZWw9bG9nZ2lu
Zy5ERUJVRyBpZiBhcmdzLnZlcmJvc2UgZWxzZSBsb2dnaW5nLklORk8sCi0gICAgKQotCi0gICAg
aWYgYXJncy5vdXRwdXRfZGlyIGlzIG5vdCBOb25lIGFuZCBub3Qgb3MucGF0aC5pc2Rpcihhcmdz
Lm91dHB1dF9kaXIpOgotICAgICAgICByYWlzZSBFeGNlcHRpb24oIiVzIGlzIG5vdCBhIGRpcmVj
dG9yeSIgJSBhcmdzLm91dHB1dF9kaXIpCi0KLSAgICAjIHByZXBhcmUgY29uZmlndXJhdGlvbgot
ICAgIGNvbmZpZ3VyYXRpb24gPSBRdWljQ29uZmlndXJhdGlvbigKLSAgICAgICAgaXNfY2xpZW50
PVRydWUsIGFscG5fcHJvdG9jb2xzPUgwX0FMUE4gaWYgYXJncy5sZWdhY3lfaHR0cCBlbHNlIEgz
X0FMUE4KLSAgICApCi0gICAgaWYgYXJncy5jYV9jZXJ0czoKLSAgICAgICAgY29uZmlndXJhdGlv
bi5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoYXJncy5jYV9jZXJ0cykKLSAgICBpZiBhcmdzLmluc2Vj
dXJlOgotICAgICAgICBjb25maWd1cmF0aW9uLnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfTk9ORQot
ICAgIGlmIGFyZ3MubWF4X2RhdGE6Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24ubWF4X2RhdGEgPSBh
cmdzLm1heF9kYXRhCi0gICAgaWYgYXJncy5tYXhfc3RyZWFtX2RhdGE6Ci0gICAgICAgIGNvbmZp
Z3VyYXRpb24ubWF4X3N0cmVhbV9kYXRhID0gYXJncy5tYXhfc3RyZWFtX2RhdGEKLSAgICBpZiBh
cmdzLnF1aWNfbG9nOgotICAgICAgICBjb25maWd1cmF0aW9uLnF1aWNfbG9nZ2VyID0gUXVpY0xv
Z2dlcigpCi0gICAgaWYgYXJncy5zZWNyZXRzX2xvZzoKLSAgICAgICAgY29uZmlndXJhdGlvbi5z
ZWNyZXRzX2xvZ19maWxlID0gb3BlbihhcmdzLnNlY3JldHNfbG9nLCAiYSIpCi0gICAgaWYgYXJn
cy5zZXNzaW9uX3RpY2tldDoKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2l0aCBvcGVuKGFy
Z3Muc2Vzc2lvbl90aWNrZXQsICJyYiIpIGFzIGZwOgotICAgICAgICAgICAgICAgIGNvbmZpZ3Vy
YXRpb24uc2Vzc2lvbl90aWNrZXQgPSBwaWNrbGUubG9hZChmcCkKLSAgICAgICAgZXhjZXB0IEZp
bGVOb3RGb3VuZEVycm9yOgotICAgICAgICAgICAgcGFzcwotCi0gICAgaWYgdXZsb29wIGlzIG5v
dCBOb25lOgotICAgICAgICB1dmxvb3AuaW5zdGFsbCgpCi0gICAgbG9vcCA9IGFzeW5jaW8uZ2V0
X2V2ZW50X2xvb3AoKQotICAgIHRyeToKLSAgICAgICAgbG9vcC5ydW5fdW50aWxfY29tcGxldGUo
Ci0gICAgICAgICAgICBydW4oCi0gICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbj1jb25maWd1
cmF0aW9uLAotICAgICAgICAgICAgICAgIHVybHM9YXJncy51cmwsCi0gICAgICAgICAgICAgICAg
ZGF0YT1hcmdzLmRhdGEsCi0gICAgICAgICAgICAgICAgaW5jbHVkZT1hcmdzLmluY2x1ZGUsCi0g
ICAgICAgICAgICAgICAgb3V0cHV0X2Rpcj1hcmdzLm91dHB1dF9kaXIsCi0gICAgICAgICAgICAg
ICAgbG9jYWxfcG9ydD1hcmdzLmxvY2FsX3BvcnQsCi0gICAgICAgICAgICApCi0gICAgICAgICkK
LSAgICBmaW5hbGx5OgotICAgICAgICBpZiBjb25maWd1cmF0aW9uLnF1aWNfbG9nZ2VyIGlzIG5v
dCBOb25lOgotICAgICAgICAgICAgd2l0aCBvcGVuKGFyZ3MucXVpY19sb2csICJ3IikgYXMgbG9n
Z2VyX2ZwOgotICAgICAgICAgICAgICAgIGpzb24uZHVtcChjb25maWd1cmF0aW9uLnF1aWNfbG9n
Z2VyLnRvX2RpY3QoKSwgbG9nZ2VyX2ZwLCBpbmRlbnQ9NCkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy9leGFtcGxlcy9odHRwM19zZXJ2ZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvaHR0
cDNfc2VydmVyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MTViMDRiMDNjMTU0
M2YzNjBkMDQ2ODg2OTgzNTM2Y2UyNWVhYTdhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9odHRwM19zZXJ2ZXIucHkK
KysrIC9kZXYvbnVsbApAQCAtMSw0ODQgKzAsMCBAQAotaW1wb3J0IGFyZ3BhcnNlCi1pbXBvcnQg
YXN5bmNpbwotaW1wb3J0IGltcG9ydGxpYgotaW1wb3J0IGpzb24KLWltcG9ydCBsb2dnaW5nCi1p
bXBvcnQgb3MKLWltcG9ydCB0aW1lCi1mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQotZnJv
bSBlbWFpbC51dGlscyBpbXBvcnQgZm9ybWF0ZGF0ZQotZnJvbSB0eXBpbmcgaW1wb3J0IENhbGxh
YmxlLCBEZXF1ZSwgRGljdCwgTGlzdCwgT3B0aW9uYWwsIFVuaW9uLCBjYXN0Ci0KLWltcG9ydCB3
c3Byb3RvCi1pbXBvcnQgd3Nwcm90by5ldmVudHMKLQotaW1wb3J0IGFpb3F1aWMKLWZyb20gYWlv
cXVpYy5hc3luY2lvIGltcG9ydCBRdWljQ29ubmVjdGlvblByb3RvY29sLCBzZXJ2ZQotZnJvbSBh
aW9xdWljLmgwLmNvbm5lY3Rpb24gaW1wb3J0IEgwX0FMUE4sIEgwQ29ubmVjdGlvbgotZnJvbSBh
aW9xdWljLmgzLmNvbm5lY3Rpb24gaW1wb3J0IEgzX0FMUE4sIEgzQ29ubmVjdGlvbgotZnJvbSBh
aW9xdWljLmgzLmV2ZW50cyBpbXBvcnQgRGF0YVJlY2VpdmVkLCBIM0V2ZW50LCBIZWFkZXJzUmVj
ZWl2ZWQKLWZyb20gYWlvcXVpYy5oMy5leGNlcHRpb25zIGltcG9ydCBOb0F2YWlsYWJsZVB1c2hJ
REVycm9yCi1mcm9tIGFpb3F1aWMucXVpYy5jb25maWd1cmF0aW9uIGltcG9ydCBRdWljQ29uZmln
dXJhdGlvbgotZnJvbSBhaW9xdWljLnF1aWMuZXZlbnRzIGltcG9ydCBEYXRhZ3JhbUZyYW1lUmVj
ZWl2ZWQsIFByb3RvY29sTmVnb3RpYXRlZCwgUXVpY0V2ZW50Ci1mcm9tIGFpb3F1aWMucXVpYy5s
b2dnZXIgaW1wb3J0IFF1aWNMb2dnZXIsIFF1aWNMb2dnZXJUcmFjZQotZnJvbSBhaW9xdWljLnRs
cyBpbXBvcnQgU2Vzc2lvblRpY2tldAotCi10cnk6Ci0gICAgaW1wb3J0IHV2bG9vcAotZXhjZXB0
IEltcG9ydEVycm9yOgotICAgIHV2bG9vcCA9IE5vbmUKLQotQXNnaUFwcGxpY2F0aW9uID0gQ2Fs
bGFibGUKLUh0dHBDb25uZWN0aW9uID0gVW5pb25bSDBDb25uZWN0aW9uLCBIM0Nvbm5lY3Rpb25d
Ci0KLVNFUlZFUl9OQU1FID0gImFpb3F1aWMvIiArIGFpb3F1aWMuX192ZXJzaW9uX18KLQotCi1j
bGFzcyBIdHRwUmVxdWVzdEhhbmRsZXI6Ci0gICAgZGVmIF9faW5pdF9fKAotICAgICAgICBzZWxm
LAotICAgICAgICAqLAotICAgICAgICBhdXRob3JpdHk6IGJ5dGVzLAotICAgICAgICBjb25uZWN0
aW9uOiBIdHRwQ29ubmVjdGlvbiwKLSAgICAgICAgcHJvdG9jb2w6IFF1aWNDb25uZWN0aW9uUHJv
dG9jb2wsCi0gICAgICAgIHNjb3BlOiBEaWN0LAotICAgICAgICBzdHJlYW1fZW5kZWQ6IGJvb2ws
Ci0gICAgICAgIHN0cmVhbV9pZDogaW50LAotICAgICAgICB0cmFuc21pdDogQ2FsbGFibGVbW10s
IE5vbmVdLAotICAgICkgLT4gTm9uZToKLSAgICAgICAgc2VsZi5hdXRob3JpdHkgPSBhdXRob3Jp
dHkKLSAgICAgICAgc2VsZi5jb25uZWN0aW9uID0gY29ubmVjdGlvbgotICAgICAgICBzZWxmLnBy
b3RvY29sID0gcHJvdG9jb2wKLSAgICAgICAgc2VsZi5xdWV1ZTogYXN5bmNpby5RdWV1ZVtEaWN0
XSA9IGFzeW5jaW8uUXVldWUoKQotICAgICAgICBzZWxmLnNjb3BlID0gc2NvcGUKLSAgICAgICAg
c2VsZi5zdHJlYW1faWQgPSBzdHJlYW1faWQKLSAgICAgICAgc2VsZi50cmFuc21pdCA9IHRyYW5z
bWl0Ci0KLSAgICAgICAgaWYgc3RyZWFtX2VuZGVkOgotICAgICAgICAgICAgc2VsZi5xdWV1ZS5w
dXRfbm93YWl0KHsidHlwZSI6ICJodHRwLnJlcXVlc3QifSkKLQotICAgIGRlZiBodHRwX2V2ZW50
X3JlY2VpdmVkKHNlbGYsIGV2ZW50OiBIM0V2ZW50KSAtPiBOb25lOgotICAgICAgICBpZiBpc2lu
c3RhbmNlKGV2ZW50LCBEYXRhUmVjZWl2ZWQpOgotICAgICAgICAgICAgc2VsZi5xdWV1ZS5wdXRf
bm93YWl0KAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAi
aHR0cC5yZXF1ZXN0IiwKLSAgICAgICAgICAgICAgICAgICAgImJvZHkiOiBldmVudC5kYXRhLAot
ICAgICAgICAgICAgICAgICAgICAibW9yZV9ib2R5Ijogbm90IGV2ZW50LnN0cmVhbV9lbmRlZCwK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICApCi0gICAgICAgIGVsaWYgaXNpbnN0YW5j
ZShldmVudCwgSGVhZGVyc1JlY2VpdmVkKSBhbmQgZXZlbnQuc3RyZWFtX2VuZGVkOgotICAgICAg
ICAgICAgc2VsZi5xdWV1ZS5wdXRfbm93YWl0KAotICAgICAgICAgICAgICAgIHsidHlwZSI6ICJo
dHRwLnJlcXVlc3QiLCAiYm9keSI6IGIiIiwgIm1vcmVfYm9keSI6IEZhbHNlfQotICAgICAgICAg
ICAgKQotCi0gICAgYXN5bmMgZGVmIHJ1bl9hc2dpKHNlbGYsIGFwcDogQXNnaUFwcGxpY2F0aW9u
KSAtPiBOb25lOgotICAgICAgICBhd2FpdCBhcHBsaWNhdGlvbihzZWxmLnNjb3BlLCBzZWxmLnJl
Y2VpdmUsIHNlbGYuc2VuZCkKLQotICAgIGFzeW5jIGRlZiByZWNlaXZlKHNlbGYpIC0+IERpY3Q6
Ci0gICAgICAgIHJldHVybiBhd2FpdCBzZWxmLnF1ZXVlLmdldCgpCi0KLSAgICBhc3luYyBkZWYg
c2VuZChzZWxmLCBtZXNzYWdlOiBEaWN0KSAtPiBOb25lOgotICAgICAgICBpZiBtZXNzYWdlWyJ0
eXBlIl0gPT0gImh0dHAucmVzcG9uc2Uuc3RhcnQiOgotICAgICAgICAgICAgc2VsZi5jb25uZWN0
aW9uLnNlbmRfaGVhZGVycygKLSAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c2VsZi5zdHJlYW1f
aWQsCi0gICAgICAgICAgICAgICAgaGVhZGVycz1bCi0gICAgICAgICAgICAgICAgICAgIChiIjpz
dGF0dXMiLCBzdHIobWVzc2FnZVsic3RhdHVzIl0pLmVuY29kZSgpKSwKLSAgICAgICAgICAgICAg
ICAgICAgKGIic2VydmVyIiwgU0VSVkVSX05BTUUuZW5jb2RlKCkpLAotICAgICAgICAgICAgICAg
ICAgICAoYiJkYXRlIiwgZm9ybWF0ZGF0ZSh0aW1lLnRpbWUoKSwgdXNlZ210PVRydWUpLmVuY29k
ZSgpKSwKLSAgICAgICAgICAgICAgICBdCi0gICAgICAgICAgICAgICAgKyBbKGssIHYpIGZvciBr
LCB2IGluIG1lc3NhZ2VbImhlYWRlcnMiXV0sCi0gICAgICAgICAgICApCi0gICAgICAgIGVsaWYg
bWVzc2FnZVsidHlwZSJdID09ICJodHRwLnJlc3BvbnNlLmJvZHkiOgotICAgICAgICAgICAgc2Vs
Zi5jb25uZWN0aW9uLnNlbmRfZGF0YSgKLSAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c2VsZi5z
dHJlYW1faWQsCi0gICAgICAgICAgICAgICAgZGF0YT1tZXNzYWdlLmdldCgiYm9keSIsIGIiIiks
Ci0gICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1ub3QgbWVzc2FnZS5nZXQoIm1vcmVfYm9keSIs
IEZhbHNlKSwKLSAgICAgICAgICAgICkKLSAgICAgICAgZWxpZiBtZXNzYWdlWyJ0eXBlIl0gPT0g
Imh0dHAucmVzcG9uc2UucHVzaCIgYW5kIGlzaW5zdGFuY2UoCi0gICAgICAgICAgICBzZWxmLmNv
bm5lY3Rpb24sIEgzQ29ubmVjdGlvbgotICAgICAgICApOgotICAgICAgICAgICAgcmVxdWVzdF9o
ZWFkZXJzID0gWwotICAgICAgICAgICAgICAgIChiIjptZXRob2QiLCBiIkdFVCIpLAotICAgICAg
ICAgICAgICAgIChiIjpzY2hlbWUiLCBiImh0dHBzIiksCi0gICAgICAgICAgICAgICAgKGIiOmF1
dGhvcml0eSIsIHNlbGYuYXV0aG9yaXR5KSwKLSAgICAgICAgICAgICAgICAoYiI6cGF0aCIsIG1l
c3NhZ2VbInBhdGgiXS5lbmNvZGUoKSksCi0gICAgICAgICAgICBdICsgWyhrLCB2KSBmb3Igaywg
diBpbiBtZXNzYWdlWyJoZWFkZXJzIl1dCi0KLSAgICAgICAgICAgICMgc2VuZCBwdXNoIHByb21p
c2UKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBwdXNoX3N0cmVhbV9pZCA9IHNl
bGYuY29ubmVjdGlvbi5zZW5kX3B1c2hfcHJvbWlzZSgKLSAgICAgICAgICAgICAgICAgICAgc3Ry
ZWFtX2lkPXNlbGYuc3RyZWFtX2lkLCBoZWFkZXJzPXJlcXVlc3RfaGVhZGVycwotICAgICAgICAg
ICAgICAgICkKLSAgICAgICAgICAgIGV4Y2VwdCBOb0F2YWlsYWJsZVB1c2hJREVycm9yOgotICAg
ICAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgICAgICAjIGZha2UgcmVxdWVzdAotICAgICAg
ICAgICAgY2FzdChIdHRwU2VydmVyUHJvdG9jb2wsIHNlbGYucHJvdG9jb2wpLmh0dHBfZXZlbnRf
cmVjZWl2ZWQoCi0gICAgICAgICAgICAgICAgSGVhZGVyc1JlY2VpdmVkKAotICAgICAgICAgICAg
ICAgICAgICBoZWFkZXJzPXJlcXVlc3RfaGVhZGVycywgc3RyZWFtX2VuZGVkPVRydWUsIHN0cmVh
bV9pZD1wdXNoX3N0cmVhbV9pZAotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICkKLSAg
ICAgICAgc2VsZi50cmFuc21pdCgpCi0KLQotY2xhc3MgV2ViU29ja2V0SGFuZGxlcjoKLSAgICBk
ZWYgX19pbml0X18oCi0gICAgICAgIHNlbGYsCi0gICAgICAgICosCi0gICAgICAgIGNvbm5lY3Rp
b246IEh0dHBDb25uZWN0aW9uLAotICAgICAgICBzY29wZTogRGljdCwKLSAgICAgICAgc3RyZWFt
X2lkOiBpbnQsCi0gICAgICAgIHRyYW5zbWl0OiBDYWxsYWJsZVtbXSwgTm9uZV0sCi0gICAgKSAt
PiBOb25lOgotICAgICAgICBzZWxmLmNsb3NlZCA9IEZhbHNlCi0gICAgICAgIHNlbGYuY29ubmVj
dGlvbiA9IGNvbm5lY3Rpb24KLSAgICAgICAgc2VsZi5odHRwX2V2ZW50X3F1ZXVlOiBEZXF1ZVtE
YXRhUmVjZWl2ZWRdID0gZGVxdWUoKQotICAgICAgICBzZWxmLnF1ZXVlOiBhc3luY2lvLlF1ZXVl
W0RpY3RdID0gYXN5bmNpby5RdWV1ZSgpCi0gICAgICAgIHNlbGYuc2NvcGUgPSBzY29wZQotICAg
ICAgICBzZWxmLnN0cmVhbV9pZCA9IHN0cmVhbV9pZAotICAgICAgICBzZWxmLnRyYW5zbWl0ID0g
dHJhbnNtaXQKLSAgICAgICAgc2VsZi53ZWJzb2NrZXQ6IE9wdGlvbmFsW3dzcHJvdG8uQ29ubmVj
dGlvbl0gPSBOb25lCi0KLSAgICBkZWYgaHR0cF9ldmVudF9yZWNlaXZlZChzZWxmLCBldmVudDog
SDNFdmVudCkgLT4gTm9uZToKLSAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgRGF0YVJlY2Vp
dmVkKSBhbmQgbm90IHNlbGYuY2xvc2VkOgotICAgICAgICAgICAgaWYgc2VsZi53ZWJzb2NrZXQg
aXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgc2VsZi53ZWJzb2NrZXQucmVjZWl2ZV9kYXRh
KGV2ZW50LmRhdGEpCi0KLSAgICAgICAgICAgICAgICBmb3Igd3NfZXZlbnQgaW4gc2VsZi53ZWJz
b2NrZXQuZXZlbnRzKCk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYud2Vic29ja2V0X2V2ZW50
X3JlY2VpdmVkKHdzX2V2ZW50KQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAj
IGRlbGF5IGV2ZW50IHByb2Nlc3NpbmcgdW50aWwgd2UgZ2V0IGB3ZWJzb2NrZXQuYWNjZXB0YAot
ICAgICAgICAgICAgICAgICMgZnJvbSB0aGUgQVNHSSBhcHBsaWNhdGlvbgotICAgICAgICAgICAg
ICAgIHNlbGYuaHR0cF9ldmVudF9xdWV1ZS5hcHBlbmQoZXZlbnQpCi0KLSAgICBkZWYgd2Vic29j
a2V0X2V2ZW50X3JlY2VpdmVkKHNlbGYsIGV2ZW50OiB3c3Byb3RvLmV2ZW50cy5FdmVudCkgLT4g
Tm9uZToKLSAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgd3Nwcm90by5ldmVudHMuVGV4dE1l
c3NhZ2UpOgotICAgICAgICAgICAgc2VsZi5xdWV1ZS5wdXRfbm93YWl0KHsidHlwZSI6ICJ3ZWJz
b2NrZXQucmVjZWl2ZSIsICJ0ZXh0IjogZXZlbnQuZGF0YX0pCi0gICAgICAgIGVsaWYgaXNpbnN0
YW5jZShldmVudCwgd3Nwcm90by5ldmVudHMuTWVzc2FnZSk6Ci0gICAgICAgICAgICBzZWxmLnF1
ZXVlLnB1dF9ub3dhaXQoeyJ0eXBlIjogIndlYnNvY2tldC5yZWNlaXZlIiwgImJ5dGVzIjogZXZl
bnQuZGF0YX0pCi0gICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgd3Nwcm90by5ldmVudHMu
Q2xvc2VDb25uZWN0aW9uKToKLSAgICAgICAgICAgIHNlbGYucXVldWUucHV0X25vd2FpdCh7InR5
cGUiOiAid2Vic29ja2V0LmRpc2Nvbm5lY3QiLCAiY29kZSI6IGV2ZW50LmNvZGV9KQotCi0gICAg
YXN5bmMgZGVmIHJ1bl9hc2dpKHNlbGYsIGFwcDogQXNnaUFwcGxpY2F0aW9uKSAtPiBOb25lOgot
ICAgICAgICBzZWxmLnF1ZXVlLnB1dF9ub3dhaXQoeyJ0eXBlIjogIndlYnNvY2tldC5jb25uZWN0
In0pCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgYXdhaXQgYXBwbGljYXRpb24oc2VsZi5z
Y29wZSwgc2VsZi5yZWNlaXZlLCBzZWxmLnNlbmQpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAg
ICAgICBpZiBub3Qgc2VsZi5jbG9zZWQ6Ci0gICAgICAgICAgICAgICAgYXdhaXQgc2VsZi5zZW5k
KHsidHlwZSI6ICJ3ZWJzb2NrZXQuY2xvc2UiLCAiY29kZSI6IDEwMDB9KQotCi0gICAgYXN5bmMg
ZGVmIHJlY2VpdmUoc2VsZikgLT4gRGljdDoKLSAgICAgICAgcmV0dXJuIGF3YWl0IHNlbGYucXVl
dWUuZ2V0KCkKLQotICAgIGFzeW5jIGRlZiBzZW5kKHNlbGYsIG1lc3NhZ2U6IERpY3QpIC0+IE5v
bmU6Ci0gICAgICAgIGRhdGEgPSBiIiIKLSAgICAgICAgZW5kX3N0cmVhbSA9IEZhbHNlCi0gICAg
ICAgIGlmIG1lc3NhZ2VbInR5cGUiXSA9PSAid2Vic29ja2V0LmFjY2VwdCI6Ci0gICAgICAgICAg
ICBzdWJwcm90b2NvbCA9IG1lc3NhZ2UuZ2V0KCJzdWJwcm90b2NvbCIpCi0KLSAgICAgICAgICAg
IHNlbGYud2Vic29ja2V0ID0gd3Nwcm90by5Db25uZWN0aW9uKHdzcHJvdG8uQ29ubmVjdGlvblR5
cGUuU0VSVkVSKQotCi0gICAgICAgICAgICBoZWFkZXJzID0gWwotICAgICAgICAgICAgICAgIChi
IjpzdGF0dXMiLCBiIjIwMCIpLAotICAgICAgICAgICAgICAgIChiInNlcnZlciIsIFNFUlZFUl9O
QU1FLmVuY29kZSgpKSwKLSAgICAgICAgICAgICAgICAoYiJkYXRlIiwgZm9ybWF0ZGF0ZSh0aW1l
LnRpbWUoKSwgdXNlZ210PVRydWUpLmVuY29kZSgpKSwKLSAgICAgICAgICAgIF0KLSAgICAgICAg
ICAgIGlmIHN1YnByb3RvY29sIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIGhlYWRlcnMu
YXBwZW5kKChiInNlYy13ZWJzb2NrZXQtcHJvdG9jb2wiLCBzdWJwcm90b2NvbC5lbmNvZGUoKSkp
Ci0gICAgICAgICAgICBzZWxmLmNvbm5lY3Rpb24uc2VuZF9oZWFkZXJzKHN0cmVhbV9pZD1zZWxm
LnN0cmVhbV9pZCwgaGVhZGVycz1oZWFkZXJzKQotCi0gICAgICAgICAgICAjIGNvbnN1bWUgYmFj
a2xvZwotICAgICAgICAgICAgd2hpbGUgc2VsZi5odHRwX2V2ZW50X3F1ZXVlOgotICAgICAgICAg
ICAgICAgIHNlbGYuaHR0cF9ldmVudF9yZWNlaXZlZChzZWxmLmh0dHBfZXZlbnRfcXVldWUucG9w
bGVmdCgpKQotCi0gICAgICAgIGVsaWYgbWVzc2FnZVsidHlwZSJdID09ICJ3ZWJzb2NrZXQuY2xv
c2UiOgotICAgICAgICAgICAgaWYgc2VsZi53ZWJzb2NrZXQgaXMgbm90IE5vbmU6Ci0gICAgICAg
ICAgICAgICAgZGF0YSA9IHNlbGYud2Vic29ja2V0LnNlbmQoCi0gICAgICAgICAgICAgICAgICAg
IHdzcHJvdG8uZXZlbnRzLkNsb3NlQ29ubmVjdGlvbihjb2RlPW1lc3NhZ2VbImNvZGUiXSkKLSAg
ICAgICAgICAgICAgICApCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYu
Y29ubmVjdGlvbi5zZW5kX2hlYWRlcnMoCi0gICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1z
ZWxmLnN0cmVhbV9pZCwgaGVhZGVycz1bKGIiOnN0YXR1cyIsIGIiNDAzIildCi0gICAgICAgICAg
ICAgICAgKQotICAgICAgICAgICAgZW5kX3N0cmVhbSA9IFRydWUKLSAgICAgICAgZWxpZiBtZXNz
YWdlWyJ0eXBlIl0gPT0gIndlYnNvY2tldC5zZW5kIjoKLSAgICAgICAgICAgIGlmIG1lc3NhZ2Uu
Z2V0KCJ0ZXh0IikgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYud2Vi
c29ja2V0LnNlbmQoCi0gICAgICAgICAgICAgICAgICAgIHdzcHJvdG8uZXZlbnRzLlRleHRNZXNz
YWdlKGRhdGE9bWVzc2FnZVsidGV4dCJdKQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAg
IGVsaWYgbWVzc2FnZS5nZXQoImJ5dGVzIikgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAg
ZGF0YSA9IHNlbGYud2Vic29ja2V0LnNlbmQoCi0gICAgICAgICAgICAgICAgICAgIHdzcHJvdG8u
ZXZlbnRzLk1lc3NhZ2UoZGF0YT1tZXNzYWdlWyJieXRlcyJdKQotICAgICAgICAgICAgICAgICkK
LQotICAgICAgICBpZiBkYXRhOgotICAgICAgICAgICAgc2VsZi5jb25uZWN0aW9uLnNlbmRfZGF0
YSgKLSAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c2VsZi5zdHJlYW1faWQsIGRhdGE9ZGF0YSwg
ZW5kX3N0cmVhbT1lbmRfc3RyZWFtCi0gICAgICAgICAgICApCi0gICAgICAgIGlmIGVuZF9zdHJl
YW06Ci0gICAgICAgICAgICBzZWxmLmNsb3NlZCA9IFRydWUKLSAgICAgICAgc2VsZi50cmFuc21p
dCgpCi0KLQotSGFuZGxlciA9IFVuaW9uW0h0dHBSZXF1ZXN0SGFuZGxlciwgV2ViU29ja2V0SGFu
ZGxlcl0KLQotCi1jbGFzcyBIdHRwU2VydmVyUHJvdG9jb2woUXVpY0Nvbm5lY3Rpb25Qcm90b2Nv
bCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncykgLT4gTm9uZToKLSAg
ICAgICAgc3VwZXIoKS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCi0gICAgICAgIHNlbGYuX2hh
bmRsZXJzOiBEaWN0W2ludCwgSGFuZGxlcl0gPSB7fQotICAgICAgICBzZWxmLl9odHRwOiBPcHRp
b25hbFtIdHRwQ29ubmVjdGlvbl0gPSBOb25lCi0KLSAgICBkZWYgaHR0cF9ldmVudF9yZWNlaXZl
ZChzZWxmLCBldmVudDogSDNFdmVudCkgLT4gTm9uZToKLSAgICAgICAgaWYgaXNpbnN0YW5jZShl
dmVudCwgSGVhZGVyc1JlY2VpdmVkKSBhbmQgZXZlbnQuc3RyZWFtX2lkIG5vdCBpbiBzZWxmLl9o
YW5kbGVyczoKLSAgICAgICAgICAgIGF1dGhvcml0eSA9IE5vbmUKLSAgICAgICAgICAgIGhlYWRl
cnMgPSBbXQotICAgICAgICAgICAgaHR0cF92ZXJzaW9uID0gIjAuOSIgaWYgaXNpbnN0YW5jZShz
ZWxmLl9odHRwLCBIMENvbm5lY3Rpb24pIGVsc2UgIjMiCi0gICAgICAgICAgICByYXdfcGF0aCA9
IGIiIgotICAgICAgICAgICAgbWV0aG9kID0gIiIKLSAgICAgICAgICAgIHByb3RvY29sID0gTm9u
ZQotICAgICAgICAgICAgZm9yIGhlYWRlciwgdmFsdWUgaW4gZXZlbnQuaGVhZGVyczoKLSAgICAg
ICAgICAgICAgICBpZiBoZWFkZXIgPT0gYiI6YXV0aG9yaXR5IjoKLSAgICAgICAgICAgICAgICAg
ICAgYXV0aG9yaXR5ID0gdmFsdWUKLSAgICAgICAgICAgICAgICAgICAgaGVhZGVycy5hcHBlbmQo
KGIiaG9zdCIsIHZhbHVlKSkKLSAgICAgICAgICAgICAgICBlbGlmIGhlYWRlciA9PSBiIjptZXRo
b2QiOgotICAgICAgICAgICAgICAgICAgICBtZXRob2QgPSB2YWx1ZS5kZWNvZGUoKQotICAgICAg
ICAgICAgICAgIGVsaWYgaGVhZGVyID09IGIiOnBhdGgiOgotICAgICAgICAgICAgICAgICAgICBy
YXdfcGF0aCA9IHZhbHVlCi0gICAgICAgICAgICAgICAgZWxpZiBoZWFkZXIgPT0gYiI6cHJvdG9j
b2wiOgotICAgICAgICAgICAgICAgICAgICBwcm90b2NvbCA9IHZhbHVlLmRlY29kZSgpCi0gICAg
ICAgICAgICAgICAgZWxpZiBoZWFkZXIgYW5kIG5vdCBoZWFkZXIuc3RhcnRzd2l0aChiIjoiKToK
LSAgICAgICAgICAgICAgICAgICAgaGVhZGVycy5hcHBlbmQoKGhlYWRlciwgdmFsdWUpKQotCi0g
ICAgICAgICAgICBpZiBiIj8iIGluIHJhd19wYXRoOgotICAgICAgICAgICAgICAgIHBhdGhfYnl0
ZXMsIHF1ZXJ5X3N0cmluZyA9IHJhd19wYXRoLnNwbGl0KGIiPyIsIG1heHNwbGl0PTEpCi0gICAg
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHBhdGhfYnl0ZXMsIHF1ZXJ5X3N0cmluZyA9
IHJhd19wYXRoLCBiIiIKLSAgICAgICAgICAgIHBhdGggPSBwYXRoX2J5dGVzLmRlY29kZSgpCi0K
LSAgICAgICAgICAgICMgRklYTUU6IGFkZCBhIHB1YmxpYyBBUEkgdG8gcmV0cmlldmUgcGVlciBh
ZGRyZXNzCi0gICAgICAgICAgICBjbGllbnRfYWRkciA9IHNlbGYuX2h0dHAuX3F1aWMuX25ldHdv
cmtfcGF0aHNbMF0uYWRkcgotICAgICAgICAgICAgY2xpZW50ID0gKGNsaWVudF9hZGRyWzBdLCBj
bGllbnRfYWRkclsxXSkKLQotICAgICAgICAgICAgaGFuZGxlcjogSGFuZGxlcgotICAgICAgICAg
ICAgc2NvcGU6IERpY3QKLSAgICAgICAgICAgIGlmIG1ldGhvZCA9PSAiQ09OTkVDVCIgYW5kIHBy
b3RvY29sID09ICJ3ZWJzb2NrZXQiOgotICAgICAgICAgICAgICAgIHN1YnByb3RvY29sczogTGlz
dFtzdHJdID0gW10KLSAgICAgICAgICAgICAgICBmb3IgaGVhZGVyLCB2YWx1ZSBpbiBldmVudC5o
ZWFkZXJzOgotICAgICAgICAgICAgICAgICAgICBpZiBoZWFkZXIgPT0gYiJzZWMtd2Vic29ja2V0
LXByb3RvY29sIjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHN1YnByb3RvY29scyA9IFt4LnN0
cmlwKCkgZm9yIHggaW4gdmFsdWUuZGVjb2RlKCkuc3BsaXQoIiwiKV0KLSAgICAgICAgICAgICAg
ICBzY29wZSA9IHsKLSAgICAgICAgICAgICAgICAgICAgImNsaWVudCI6IGNsaWVudCwKLSAgICAg
ICAgICAgICAgICAgICAgImhlYWRlcnMiOiBoZWFkZXJzLAotICAgICAgICAgICAgICAgICAgICAi
aHR0cF92ZXJzaW9uIjogaHR0cF92ZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICAibWV0aG9k
IjogbWV0aG9kLAotICAgICAgICAgICAgICAgICAgICAicGF0aCI6IHBhdGgsCi0gICAgICAgICAg
ICAgICAgICAgICJxdWVyeV9zdHJpbmciOiBxdWVyeV9zdHJpbmcsCi0gICAgICAgICAgICAgICAg
ICAgICJyYXdfcGF0aCI6IHJhd19wYXRoLAotICAgICAgICAgICAgICAgICAgICAicm9vdF9wYXRo
IjogIiIsCi0gICAgICAgICAgICAgICAgICAgICJzY2hlbWUiOiAid3NzIiwKLSAgICAgICAgICAg
ICAgICAgICAgInN1YnByb3RvY29scyI6IHN1YnByb3RvY29scywKLSAgICAgICAgICAgICAgICAg
ICAgInR5cGUiOiAid2Vic29ja2V0IiwKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgaGFuZGxlciA9IFdlYlNvY2tldEhhbmRsZXIoCi0gICAgICAgICAgICAgICAgICAgIGNvbm5l
Y3Rpb249c2VsZi5faHR0cCwKLSAgICAgICAgICAgICAgICAgICAgc2NvcGU9c2NvcGUsCi0gICAg
ICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1ldmVudC5zdHJlYW1faWQsCi0gICAgICAgICAgICAg
ICAgICAgIHRyYW5zbWl0PXNlbGYudHJhbnNtaXQsCi0gICAgICAgICAgICAgICAgKQotICAgICAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBleHRlbnNpb25zOiBEaWN0W3N0ciwgRGljdF0g
PSB7fQotICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5faHR0cCwgSDNDb25uZWN0
aW9uKToKLSAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9uc1siaHR0cC5yZXNwb25zZS5wdXNo
Il0gPSB7fQotICAgICAgICAgICAgICAgIHNjb3BlID0gewotICAgICAgICAgICAgICAgICAgICAi
Y2xpZW50IjogY2xpZW50LAotICAgICAgICAgICAgICAgICAgICAiZXh0ZW5zaW9ucyI6IGV4dGVu
c2lvbnMsCi0gICAgICAgICAgICAgICAgICAgICJoZWFkZXJzIjogaGVhZGVycywKLSAgICAgICAg
ICAgICAgICAgICAgImh0dHBfdmVyc2lvbiI6IGh0dHBfdmVyc2lvbiwKLSAgICAgICAgICAgICAg
ICAgICAgIm1ldGhvZCI6IG1ldGhvZCwKLSAgICAgICAgICAgICAgICAgICAgInBhdGgiOiBwYXRo
LAotICAgICAgICAgICAgICAgICAgICAicXVlcnlfc3RyaW5nIjogcXVlcnlfc3RyaW5nLAotICAg
ICAgICAgICAgICAgICAgICAicmF3X3BhdGgiOiByYXdfcGF0aCwKLSAgICAgICAgICAgICAgICAg
ICAgInJvb3RfcGF0aCI6ICIiLAotICAgICAgICAgICAgICAgICAgICAic2NoZW1lIjogImh0dHBz
IiwKLSAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiaHR0cCIsCi0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIGhhbmRsZXIgPSBIdHRwUmVxdWVzdEhhbmRsZXIoCi0gICAgICAg
ICAgICAgICAgICAgIGF1dGhvcml0eT1hdXRob3JpdHksCi0gICAgICAgICAgICAgICAgICAgIGNv
bm5lY3Rpb249c2VsZi5faHR0cCwKLSAgICAgICAgICAgICAgICAgICAgcHJvdG9jb2w9c2VsZiwK
LSAgICAgICAgICAgICAgICAgICAgc2NvcGU9c2NvcGUsCi0gICAgICAgICAgICAgICAgICAgIHN0
cmVhbV9lbmRlZD1ldmVudC5zdHJlYW1fZW5kZWQsCi0gICAgICAgICAgICAgICAgICAgIHN0cmVh
bV9pZD1ldmVudC5zdHJlYW1faWQsCi0gICAgICAgICAgICAgICAgICAgIHRyYW5zbWl0PXNlbGYu
dHJhbnNtaXQsCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgc2VsZi5faGFuZGxlcnNb
ZXZlbnQuc3RyZWFtX2lkXSA9IGhhbmRsZXIKLSAgICAgICAgICAgIGFzeW5jaW8uZW5zdXJlX2Z1
dHVyZShoYW5kbGVyLnJ1bl9hc2dpKGFwcGxpY2F0aW9uKSkKLSAgICAgICAgZWxpZiAoCi0gICAg
ICAgICAgICBpc2luc3RhbmNlKGV2ZW50LCAoRGF0YVJlY2VpdmVkLCBIZWFkZXJzUmVjZWl2ZWQp
KQotICAgICAgICAgICAgYW5kIGV2ZW50LnN0cmVhbV9pZCBpbiBzZWxmLl9oYW5kbGVycwotICAg
ICAgICApOgotICAgICAgICAgICAgaGFuZGxlciA9IHNlbGYuX2hhbmRsZXJzW2V2ZW50LnN0cmVh
bV9pZF0KLSAgICAgICAgICAgIGhhbmRsZXIuaHR0cF9ldmVudF9yZWNlaXZlZChldmVudCkKLQot
ICAgIGRlZiBxdWljX2V2ZW50X3JlY2VpdmVkKHNlbGYsIGV2ZW50OiBRdWljRXZlbnQpIC0+IE5v
bmU6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIFByb3RvY29sTmVnb3RpYXRlZCk6Ci0g
ICAgICAgICAgICBpZiBldmVudC5hbHBuX3Byb3RvY29sLnN0YXJ0c3dpdGgoImgzLSIpOgotICAg
ICAgICAgICAgICAgIHNlbGYuX2h0dHAgPSBIM0Nvbm5lY3Rpb24oc2VsZi5fcXVpYykKLSAgICAg
ICAgICAgIGVsaWYgZXZlbnQuYWxwbl9wcm90b2NvbC5zdGFydHN3aXRoKCJocS0iKToKLSAgICAg
ICAgICAgICAgICBzZWxmLl9odHRwID0gSDBDb25uZWN0aW9uKHNlbGYuX3F1aWMpCi0gICAgICAg
IGVsaWYgaXNpbnN0YW5jZShldmVudCwgRGF0YWdyYW1GcmFtZVJlY2VpdmVkKToKLSAgICAgICAg
ICAgIGlmIGV2ZW50LmRhdGEgPT0gYiJxdWFjayI6Ci0gICAgICAgICAgICAgICAgc2VsZi5fcXVp
Yy5zZW5kX2RhdGFncmFtX2ZyYW1lKGIicXVhY2stYWNrIikKLQotICAgICAgICAjIMKgcGFzcyBl
dmVudCB0byB0aGUgSFRUUCBsYXllcgotICAgICAgICBpZiBzZWxmLl9odHRwIGlzIG5vdCBOb25l
OgotICAgICAgICAgICAgZm9yIGh0dHBfZXZlbnQgaW4gc2VsZi5faHR0cC5oYW5kbGVfZXZlbnQo
ZXZlbnQpOgotICAgICAgICAgICAgICAgIHNlbGYuaHR0cF9ldmVudF9yZWNlaXZlZChodHRwX2V2
ZW50KQotCi0KLWNsYXNzIFNlc3Npb25UaWNrZXRTdG9yZToKLSAgICAiIiIKLSAgICBTaW1wbGUg
aW4tbWVtb3J5IHN0b3JlIGZvciBzZXNzaW9uIHRpY2tldHMuCi0gICAgIiIiCi0KLSAgICBkZWYg
X19pbml0X18oc2VsZikgLT4gTm9uZToKLSAgICAgICAgc2VsZi50aWNrZXRzOiBEaWN0W2J5dGVz
LCBTZXNzaW9uVGlja2V0XSA9IHt9Ci0KLSAgICBkZWYgYWRkKHNlbGYsIHRpY2tldDogU2Vzc2lv
blRpY2tldCkgLT4gTm9uZToKLSAgICAgICAgc2VsZi50aWNrZXRzW3RpY2tldC50aWNrZXRdID0g
dGlja2V0Ci0KLSAgICBkZWYgcG9wKHNlbGYsIGxhYmVsOiBieXRlcykgLT4gT3B0aW9uYWxbU2Vz
c2lvblRpY2tldF06Ci0gICAgICAgIHJldHVybiBzZWxmLnRpY2tldHMucG9wKGxhYmVsLCBOb25l
KQotCi0KLWNsYXNzIFF1aWNMb2dnZXJDdXN0b20oUXVpY0xvZ2dlcik6Ci0gICAgIiIiCi0gICAg
Q3VzdG9tIFFVSUMgbG9nZ2VyIHdoaWNoIHdyaXRlcyBvbmUgdHJhY2UgcGVyIGZpbGUuCi0gICAg
IiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aDogc3RyKSAtPiBOb25lOgotICAgICAg
ICBpZiBub3Qgb3MucGF0aC5pc2RpcihwYXRoKToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJy
b3IoIlFVSUMgbG9nIG91dHB1dCBkaXJlY3RvcnkgJyVzJyBkb2VzIG5vdCBleGlzdCIgJSBwYXRo
KQotICAgICAgICBzZWxmLnBhdGggPSBwYXRoCi0gICAgICAgIHN1cGVyKCkuX19pbml0X18oKQot
Ci0gICAgZGVmIGVuZF90cmFjZShzZWxmLCB0cmFjZTogUXVpY0xvZ2dlclRyYWNlKSAtPiBOb25l
OgotICAgICAgICB0cmFjZV9kaWN0ID0gdHJhY2UudG9fZGljdCgpCi0gICAgICAgIHRyYWNlX3Bh
dGggPSBvcy5wYXRoLmpvaW4oCi0gICAgICAgICAgICBzZWxmLnBhdGgsIHRyYWNlX2RpY3RbImNv
bW1vbl9maWVsZHMiXVsiT0RDSUQiXSArICIucWxvZyIKLSAgICAgICAgKQotICAgICAgICB3aXRo
IG9wZW4odHJhY2VfcGF0aCwgInciKSBhcyBsb2dnZXJfZnA6Ci0gICAgICAgICAgICBqc29uLmR1
bXAoeyJxbG9nX3ZlcnNpb24iOiAiZHJhZnQtMDEiLCAidHJhY2VzIjogW3RyYWNlX2RpY3RdfSwg
bG9nZ2VyX2ZwKQotICAgICAgICBzZWxmLl90cmFjZXMucmVtb3ZlKHRyYWNlKQotCi0KLWlmIF9f
bmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJz
ZXIoZGVzY3JpcHRpb249IlFVSUMgc2VydmVyIikKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAot
ICAgICAgICAiYXBwIiwKLSAgICAgICAgdHlwZT1zdHIsCi0gICAgICAgIG5hcmdzPSI/IiwKLSAg
ICAgICAgZGVmYXVsdD0iZGVtbzphcHAiLAotICAgICAgICBoZWxwPSJ0aGUgQVNHSSBhcHBsaWNh
dGlvbiBhcyA8bW9kdWxlPjo8YXR0cmlidXRlPiIsCi0gICAgKQotICAgIHBhcnNlci5hZGRfYXJn
dW1lbnQoCi0gICAgICAgICItYyIsCi0gICAgICAgICItLWNlcnRpZmljYXRlIiwKLSAgICAgICAg
dHlwZT1zdHIsCi0gICAgICAgIHJlcXVpcmVkPVRydWUsCi0gICAgICAgIGhlbHA9ImxvYWQgdGhl
IFRMUyBjZXJ0aWZpY2F0ZSBmcm9tIHRoZSBzcGVjaWZpZWQgZmlsZSIsCi0gICAgKQotICAgIHBh
cnNlci5hZGRfYXJndW1lbnQoCi0gICAgICAgICItLWhvc3QiLAotICAgICAgICB0eXBlPXN0ciwK
LSAgICAgICAgZGVmYXVsdD0iOjoiLAotICAgICAgICBoZWxwPSJsaXN0ZW4gb24gdGhlIHNwZWNp
ZmllZCBhZGRyZXNzIChkZWZhdWx0cyB0byA6OikiLAotICAgICkKLSAgICBwYXJzZXIuYWRkX2Fy
Z3VtZW50KAotICAgICAgICAiLS1wb3J0IiwKLSAgICAgICAgdHlwZT1pbnQsCi0gICAgICAgIGRl
ZmF1bHQ9NDQzMywKLSAgICAgICAgaGVscD0ibGlzdGVuIG9uIHRoZSBzcGVjaWZpZWQgcG9ydCAo
ZGVmYXVsdHMgdG8gNDQzMykiLAotICAgICkKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAotICAg
ICAgICAiLWsiLAotICAgICAgICAiLS1wcml2YXRlLWtleSIsCi0gICAgICAgIHR5cGU9c3RyLAot
ICAgICAgICByZXF1aXJlZD1UcnVlLAotICAgICAgICBoZWxwPSJsb2FkIHRoZSBUTFMgcHJpdmF0
ZSBrZXkgZnJvbSB0aGUgc3BlY2lmaWVkIGZpbGUiLAotICAgICkKLSAgICBwYXJzZXIuYWRkX2Fy
Z3VtZW50KAotICAgICAgICAiLWwiLAotICAgICAgICAiLS1zZWNyZXRzLWxvZyIsCi0gICAgICAg
IHR5cGU9c3RyLAotICAgICAgICBoZWxwPSJsb2cgc2VjcmV0cyB0byBhIGZpbGUsIGZvciB1c2Ug
d2l0aCBXaXJlc2hhcmsiLAotICAgICkKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAotICAgICAg
ICAiLXEiLCAiLS1xdWljLWxvZyIsIHR5cGU9c3RyLCBoZWxwPSJsb2cgUVVJQyBldmVudHMgdG8g
YSBmaWxlIGluIFFMT0cgZm9ybWF0IgotICAgICkKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAot
ICAgICAgICAiLXIiLAotICAgICAgICAiLS1zdGF0ZWxlc3MtcmV0cnkiLAotICAgICAgICBhY3Rp
b249InN0b3JlX3RydWUiLAotICAgICAgICBoZWxwPSJzZW5kIGEgc3RhdGVsZXNzIHJldHJ5IGZv
ciBuZXcgY29ubmVjdGlvbnMiLAotICAgICkKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAotICAg
ICAgICAiLXYiLCAiLS12ZXJib3NlIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0iaW5jcmVh
c2UgbG9nZ2luZyB2ZXJib3NpdHkiCi0gICAgKQotICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJn
cygpCi0KLSAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKAotICAgICAgICBmb3JtYXQ9IiUoYXNjdGlt
ZSlzICUobGV2ZWxuYW1lKXMgJShuYW1lKXMgJShtZXNzYWdlKXMiLAotICAgICAgICBsZXZlbD1s
b2dnaW5nLkRFQlVHIGlmIGFyZ3MudmVyYm9zZSBlbHNlIGxvZ2dpbmcuSU5GTywKLSAgICApCi0K
LSAgICAjIGltcG9ydCBBU0dJIGFwcGxpY2F0aW9uCi0gICAgbW9kdWxlX3N0ciwgYXR0cl9zdHIg
PSBhcmdzLmFwcC5zcGxpdCgiOiIsIG1heHNwbGl0PTEpCi0gICAgbW9kdWxlID0gaW1wb3J0bGli
LmltcG9ydF9tb2R1bGUobW9kdWxlX3N0cikKLSAgICBhcHBsaWNhdGlvbiA9IGdldGF0dHIobW9k
dWxlLCBhdHRyX3N0cikKLQotICAgICMgY3JlYXRlIFFVSUMgbG9nZ2VyCi0gICAgaWYgYXJncy5x
dWljX2xvZzoKLSAgICAgICAgcXVpY19sb2dnZXIgPSBRdWljTG9nZ2VyQ3VzdG9tKGFyZ3MucXVp
Y19sb2cpCi0gICAgZWxzZToKLSAgICAgICAgcXVpY19sb2dnZXIgPSBOb25lCi0KLSAgICAjIG9w
ZW4gU1NMIGxvZyBmaWxlCi0gICAgaWYgYXJncy5zZWNyZXRzX2xvZzoKLSAgICAgICAgc2VjcmV0
c19sb2dfZmlsZSA9IG9wZW4oYXJncy5zZWNyZXRzX2xvZywgImEiKQotICAgIGVsc2U6Ci0gICAg
ICAgIHNlY3JldHNfbG9nX2ZpbGUgPSBOb25lCi0KLSAgICBjb25maWd1cmF0aW9uID0gUXVpY0Nv
bmZpZ3VyYXRpb24oCi0gICAgICAgIGFscG5fcHJvdG9jb2xzPUgzX0FMUE4gKyBIMF9BTFBOICsg
WyJzaWR1Y2siXSwKLSAgICAgICAgaXNfY2xpZW50PUZhbHNlLAotICAgICAgICBtYXhfZGF0YWdy
YW1fZnJhbWVfc2l6ZT02NTUzNiwKLSAgICAgICAgcXVpY19sb2dnZXI9cXVpY19sb2dnZXIsCi0g
ICAgICAgIHNlY3JldHNfbG9nX2ZpbGU9c2VjcmV0c19sb2dfZmlsZSwKLSAgICApCi0KLSAgICAj
IGxvYWQgU1NMIGNlcnRpZmljYXRlIGFuZCBrZXkKLSAgICBjb25maWd1cmF0aW9uLmxvYWRfY2Vy
dF9jaGFpbihhcmdzLmNlcnRpZmljYXRlLCBhcmdzLnByaXZhdGVfa2V5KQotCi0gICAgdGlja2V0
X3N0b3JlID0gU2Vzc2lvblRpY2tldFN0b3JlKCkKLQotICAgIGlmIHV2bG9vcCBpcyBub3QgTm9u
ZToKLSAgICAgICAgdXZsb29wLmluc3RhbGwoKQotICAgIGxvb3AgPSBhc3luY2lvLmdldF9ldmVu
dF9sb29wKCkKLSAgICBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZSgKLSAgICAgICAgc2VydmUoCi0g
ICAgICAgICAgICBhcmdzLmhvc3QsCi0gICAgICAgICAgICBhcmdzLnBvcnQsCi0gICAgICAgICAg
ICBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sCi0gICAgICAgICAgICBjcmVhdGVfcHJvdG9j
b2w9SHR0cFNlcnZlclByb3RvY29sLAotICAgICAgICAgICAgc2Vzc2lvbl90aWNrZXRfZmV0Y2hl
cj10aWNrZXRfc3RvcmUucG9wLAotICAgICAgICAgICAgc2Vzc2lvbl90aWNrZXRfaGFuZGxlcj10
aWNrZXRfc3RvcmUuYWRkLAotICAgICAgICAgICAgc3RhdGVsZXNzX3JldHJ5PWFyZ3Muc3RhdGVs
ZXNzX3JldHJ5LAotICAgICAgICApCi0gICAgKQotICAgIHRyeToKLSAgICAgICAgbG9vcC5ydW5f
Zm9yZXZlcigpCi0gICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgotICAgICAgICBwYXNzCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvaHR0cHhfY2xpZW50LnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL2V4YW1wbGVzL2h0dHB4X2NsaWVudC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAxZTM4NGUzNTRiMjI1MjQzZDRkNjBiNzU5ODU1ZDUwMmMyOTk5ZS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBs
ZXMvaHR0cHhfY2xpZW50LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjEzICswLDAgQEAKLWltcG9y
dCBhcmdwYXJzZQotaW1wb3J0IGFzeW5jaW8KLWltcG9ydCBqc29uCi1pbXBvcnQgbG9nZ2luZwot
aW1wb3J0IHBpY2tsZQotaW1wb3J0IHN5cwotaW1wb3J0IHRpbWUKLWZyb20gY29sbGVjdGlvbnMg
aW1wb3J0IGRlcXVlCi1mcm9tIHR5cGluZyBpbXBvcnQgRGVxdWUsIERpY3QsIGNhc3QKLWZyb20g
dXJsbGliLnBhcnNlIGltcG9ydCB1cmxwYXJzZQotCi1mcm9tIGh0dHB4IGltcG9ydCBBc3luY0Ns
aWVudAotZnJvbSBodHRweC5jb25maWcgaW1wb3J0IFRpbWVvdXQKLWZyb20gaHR0cHguZGlzcGF0
Y2guYmFzZSBpbXBvcnQgQXN5bmNEaXNwYXRjaGVyCi1mcm9tIGh0dHB4Lm1vZGVscyBpbXBvcnQg
UmVxdWVzdCwgUmVzcG9uc2UKLQotZnJvbSBhaW9xdWljLmFzeW5jaW8uY2xpZW50IGltcG9ydCBj
b25uZWN0Ci1mcm9tIGFpb3F1aWMuYXN5bmNpby5wcm90b2NvbCBpbXBvcnQgUXVpY0Nvbm5lY3Rp
b25Qcm90b2NvbAotZnJvbSBhaW9xdWljLmgzLmNvbm5lY3Rpb24gaW1wb3J0IEgzX0FMUE4sIEgz
Q29ubmVjdGlvbgotZnJvbSBhaW9xdWljLmgzLmV2ZW50cyBpbXBvcnQgRGF0YVJlY2VpdmVkLCBI
M0V2ZW50LCBIZWFkZXJzUmVjZWl2ZWQKLWZyb20gYWlvcXVpYy5xdWljLmNvbmZpZ3VyYXRpb24g
aW1wb3J0IFF1aWNDb25maWd1cmF0aW9uCi1mcm9tIGFpb3F1aWMucXVpYy5ldmVudHMgaW1wb3J0
IFF1aWNFdmVudAotZnJvbSBhaW9xdWljLnF1aWMubG9nZ2VyIGltcG9ydCBRdWljTG9nZ2VyCi0K
LWxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJjbGllbnQiKQotCi0KLWNsYXNzIEgzRGlzcGF0
Y2hlcihRdWljQ29ubmVjdGlvblByb3RvY29sLCBBc3luY0Rpc3BhdGNoZXIpOgotICAgIGRlZiBf
X2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICBzdXBlcigpLl9faW5pdF9f
KCphcmdzLCAqKmt3YXJncykKLQotICAgICAgICBzZWxmLl9odHRwID0gSDNDb25uZWN0aW9uKHNl
bGYuX3F1aWMpCi0gICAgICAgIHNlbGYuX3JlcXVlc3RfZXZlbnRzOiBEaWN0W2ludCwgRGVxdWVb
SDNFdmVudF1dID0ge30KLSAgICAgICAgc2VsZi5fcmVxdWVzdF93YWl0ZXI6IERpY3RbaW50LCBh
c3luY2lvLkZ1dHVyZVtEZXF1ZVtIM0V2ZW50XV1dID0ge30KLQotICAgIGFzeW5jIGRlZiBzZW5k
KHNlbGYsIHJlcXVlc3Q6IFJlcXVlc3QsIHRpbWVvdXQ6IFRpbWVvdXQgPSBOb25lKSAtPiBSZXNw
b25zZToKLSAgICAgICAgc3RyZWFtX2lkID0gc2VsZi5fcXVpYy5nZXRfbmV4dF9hdmFpbGFibGVf
c3RyZWFtX2lkKCkKLQotICAgICAgICAjIHByZXBhcmUgcmVxdWVzdAotICAgICAgICBzZWxmLl9o
dHRwLnNlbmRfaGVhZGVycygKLSAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCi0gICAg
ICAgICAgICBoZWFkZXJzPVsKLSAgICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwgcmVxdWVzdC5t
ZXRob2QuZW5jb2RlKCkpLAotICAgICAgICAgICAgICAgIChiIjpzY2hlbWUiLCByZXF1ZXN0LnVy
bC5zY2hlbWUuZW5jb2RlKCkpLAotICAgICAgICAgICAgICAgIChiIjphdXRob3JpdHkiLCBzdHIo
cmVxdWVzdC51cmwuYXV0aG9yaXR5KS5lbmNvZGUoKSksCi0gICAgICAgICAgICAgICAgKGIiOnBh
dGgiLCByZXF1ZXN0LnVybC5mdWxsX3BhdGguZW5jb2RlKCkpLAotICAgICAgICAgICAgXQotICAg
ICAgICAgICAgKyBbCi0gICAgICAgICAgICAgICAgKGsuZW5jb2RlKCksIHYuZW5jb2RlKCkpCi0g
ICAgICAgICAgICAgICAgZm9yIChrLCB2KSBpbiByZXF1ZXN0LmhlYWRlcnMuaXRlbXMoKQotICAg
ICAgICAgICAgICAgIGlmIGsgbm90IGluICgiY29ubmVjdGlvbiIsICJob3N0IikKLSAgICAgICAg
ICAgIF0sCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5faHR0cC5zZW5kX2RhdGEoc3RyZWFtX2lk
PXN0cmVhbV9pZCwgZGF0YT1yZXF1ZXN0LnJlYWQoKSwgZW5kX3N0cmVhbT1UcnVlKQotCi0gICAg
ICAgICMgdHJhbnNtaXQgcmVxdWVzdAotICAgICAgICB3YWl0ZXIgPSBzZWxmLl9sb29wLmNyZWF0
ZV9mdXR1cmUoKQotICAgICAgICBzZWxmLl9yZXF1ZXN0X2V2ZW50c1tzdHJlYW1faWRdID0gZGVx
dWUoKQotICAgICAgICBzZWxmLl9yZXF1ZXN0X3dhaXRlcltzdHJlYW1faWRdID0gd2FpdGVyCi0g
ICAgICAgIHNlbGYudHJhbnNtaXQoKQotCi0gICAgICAgICMgcHJvY2VzcyByZXNwb25zZQotICAg
ICAgICBldmVudHM6IERlcXVlW0gzRXZlbnRdID0gYXdhaXQgYXN5bmNpby5zaGllbGQod2FpdGVy
KQotICAgICAgICBjb250ZW50ID0gYiIiCi0gICAgICAgIGhlYWRlcnMgPSBbXQotICAgICAgICBz
dGF0dXNfY29kZSA9IE5vbmUKLSAgICAgICAgZm9yIGV2ZW50IGluIGV2ZW50czoKLSAgICAgICAg
ICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIEhlYWRlcnNSZWNlaXZlZCk6Ci0gICAgICAgICAgICAg
ICAgZm9yIGhlYWRlciwgdmFsdWUgaW4gZXZlbnQuaGVhZGVyczoKLSAgICAgICAgICAgICAgICAg
ICAgaWYgaGVhZGVyID09IGIiOnN0YXR1cyI6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0
dXNfY29kZSA9IGludCh2YWx1ZS5kZWNvZGUoKSkKLSAgICAgICAgICAgICAgICAgICAgZWxpZiBo
ZWFkZXJbMDoxXSAhPSBiIjoiOgotICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVycy5hcHBl
bmQoKGhlYWRlci5kZWNvZGUoKSwgdmFsdWUuZGVjb2RlKCkpKQotICAgICAgICAgICAgZWxpZiBp
c2luc3RhbmNlKGV2ZW50LCBEYXRhUmVjZWl2ZWQpOgotICAgICAgICAgICAgICAgIGNvbnRlbnQg
Kz0gZXZlbnQuZGF0YQotCi0gICAgICAgIHJldHVybiBSZXNwb25zZSgKLSAgICAgICAgICAgIHN0
YXR1c19jb2RlPXN0YXR1c19jb2RlLAotICAgICAgICAgICAgaHR0cF92ZXJzaW9uPSJIVFRQLzMi
LAotICAgICAgICAgICAgaGVhZGVycz1oZWFkZXJzLAotICAgICAgICAgICAgY29udGVudD1jb250
ZW50LAotICAgICAgICAgICAgcmVxdWVzdD1yZXF1ZXN0LAotICAgICAgICApCi0KLSAgICBkZWYg
aHR0cF9ldmVudF9yZWNlaXZlZChzZWxmLCBldmVudDogSDNFdmVudCk6Ci0gICAgICAgIGlmIGlz
aW5zdGFuY2UoZXZlbnQsIChIZWFkZXJzUmVjZWl2ZWQsIERhdGFSZWNlaXZlZCkpOgotICAgICAg
ICAgICAgc3RyZWFtX2lkID0gZXZlbnQuc3RyZWFtX2lkCi0gICAgICAgICAgICBpZiBzdHJlYW1f
aWQgaW4gc2VsZi5fcmVxdWVzdF9ldmVudHM6Ci0gICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVz
dF9ldmVudHNbZXZlbnQuc3RyZWFtX2lkXS5hcHBlbmQoZXZlbnQpCi0gICAgICAgICAgICAgICAg
aWYgZXZlbnQuc3RyZWFtX2VuZGVkOgotICAgICAgICAgICAgICAgICAgICByZXF1ZXN0X3dhaXRl
ciA9IHNlbGYuX3JlcXVlc3Rfd2FpdGVyLnBvcChzdHJlYW1faWQpCi0gICAgICAgICAgICAgICAg
ICAgIHJlcXVlc3Rfd2FpdGVyLnNldF9yZXN1bHQoc2VsZi5fcmVxdWVzdF9ldmVudHMucG9wKHN0
cmVhbV9pZCkpCi0KLSAgICBkZWYgcXVpY19ldmVudF9yZWNlaXZlZChzZWxmLCBldmVudDogUXVp
Y0V2ZW50KToKLSAgICAgICAgIyDCoHBhc3MgZXZlbnQgdG8gdGhlIEhUVFAgbGF5ZXIKLSAgICAg
ICAgaWYgc2VsZi5faHR0cCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGZvciBodHRwX2V2ZW50
IGluIHNlbGYuX2h0dHAuaGFuZGxlX2V2ZW50KGV2ZW50KToKLSAgICAgICAgICAgICAgICBzZWxm
Lmh0dHBfZXZlbnRfcmVjZWl2ZWQoaHR0cF9ldmVudCkKLQotCi1kZWYgc2F2ZV9zZXNzaW9uX3Rp
Y2tldCh0aWNrZXQpOgotICAgICIiIgotICAgIENhbGxiYWNrIHdoaWNoIGlzIGludm9rZWQgYnkg
dGhlIFRMUyBlbmdpbmUgd2hlbiBhIG5ldyBzZXNzaW9uIHRpY2tldAotICAgIGlzIHJlY2VpdmVk
LgotICAgICIiIgotICAgIGxvZ2dlci5pbmZvKCJOZXcgc2Vzc2lvbiB0aWNrZXQgcmVjZWl2ZWQi
KQotICAgIGlmIGFyZ3Muc2Vzc2lvbl90aWNrZXQ6Ci0gICAgICAgIHdpdGggb3BlbihhcmdzLnNl
c3Npb25fdGlja2V0LCAid2IiKSBhcyBmcDoKLSAgICAgICAgICAgIHBpY2tsZS5kdW1wKHRpY2tl
dCwgZnApCi0KLQotYXN5bmMgZGVmIHJ1bihjb25maWd1cmF0aW9uOiBRdWljQ29uZmlndXJhdGlv
biwgdXJsOiBzdHIsIGRhdGE6IHN0cikgLT4gTm9uZToKLSAgICAjIHBhcnNlIFVSTAotICAgIHBh
cnNlZCA9IHVybHBhcnNlKHVybCkKLSAgICBhc3NlcnQgcGFyc2VkLnNjaGVtZSA9PSAiaHR0cHMi
LCAiT25seSBodHRwczovLyBVUkxzIGFyZSBzdXBwb3J0ZWQuIgotICAgIGlmICI6IiBpbiBwYXJz
ZWQubmV0bG9jOgotICAgICAgICBob3N0LCBwb3J0X3N0ciA9IHBhcnNlZC5uZXRsb2Muc3BsaXQo
IjoiKQotICAgICAgICBwb3J0ID0gaW50KHBvcnRfc3RyKQotICAgIGVsc2U6Ci0gICAgICAgIGhv
c3QgPSBwYXJzZWQubmV0bG9jCi0gICAgICAgIHBvcnQgPSA0NDMKLQotICAgIGFzeW5jIHdpdGgg
Y29ubmVjdCgKLSAgICAgICAgaG9zdCwKLSAgICAgICAgcG9ydCwKLSAgICAgICAgY29uZmlndXJh
dGlvbj1jb25maWd1cmF0aW9uLAotICAgICAgICBjcmVhdGVfcHJvdG9jb2w9SDNEaXNwYXRjaGVy
LAotICAgICAgICBzZXNzaW9uX3RpY2tldF9oYW5kbGVyPXNhdmVfc2Vzc2lvbl90aWNrZXQsCi0g
ICAgKSBhcyBkaXNwYXRjaDoKLSAgICAgICAgY2xpZW50ID0gQXN5bmNDbGllbnQoZGlzcGF0Y2g9
Y2FzdChBc3luY0Rpc3BhdGNoZXIsIGRpc3BhdGNoKSkKLQotICAgICAgICAjIHBlcmZvcm0gcmVx
dWVzdAotICAgICAgICBzdGFydCA9IHRpbWUudGltZSgpCi0gICAgICAgIGlmIGRhdGEgaXMgbm90
IE5vbmU6Ci0gICAgICAgICAgICByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wb3N0KAotICAgICAg
ICAgICAgICAgIHVybCwKLSAgICAgICAgICAgICAgICBkYXRhPWRhdGEuZW5jb2RlKCksCi0gICAg
ICAgICAgICAgICAgaGVhZGVycz17ImNvbnRlbnQtdHlwZSI6ICJhcHBsaWNhdGlvbi94LXd3dy1m
b3JtLXVybGVuY29kZWQifSwKLSAgICAgICAgICAgICkKLSAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgIHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldCh1cmwpCi0KLSAgICAgICAgZWxhcHNlZCA9
IHRpbWUudGltZSgpIC0gc3RhcnQKLQotICAgICAgICAjIHByaW50IHNwZWVkCi0gICAgICAgIG9j
dGV0cyA9IGxlbihyZXNwb25zZS5jb250ZW50KQotICAgICAgICBsb2dnZXIuaW5mbygKLSAgICAg
ICAgICAgICJSZWNlaXZlZCAlZCBieXRlcyBpbiAlLjFmIHMgKCUuM2YgTWJwcykiCi0gICAgICAg
ICAgICAlIChvY3RldHMsIGVsYXBzZWQsIG9jdGV0cyAqIDggLyBlbGFwc2VkIC8gMTAwMDAwMCkK
LSAgICAgICAgKQotCi0gICAgICAgICMgcHJpbnQgcmVzcG9uc2UKLSAgICAgICAgZm9yIGhlYWRl
ciwgdmFsdWUgaW4gcmVzcG9uc2UuaGVhZGVycy5pdGVtcygpOgotICAgICAgICAgICAgc3lzLnN0
ZGVyci53cml0ZShoZWFkZXIgKyAiOiAiICsgdmFsdWUgKyAiXHJcbiIpCi0gICAgICAgIHN5cy5z
dGRlcnIud3JpdGUoIlxyXG4iKQotICAgICAgICBzeXMuc3Rkb3V0LmJ1ZmZlci53cml0ZShyZXNw
b25zZS5jb250ZW50KQotICAgICAgICBzeXMuc3Rkb3V0LmJ1ZmZlci5mbHVzaCgpCi0KLQotaWYg
X19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBh
cnNlcihkZXNjcmlwdGlvbj0iSFRUUC8zIGNsaWVudCIpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVu
dCgidXJsIiwgdHlwZT1zdHIsIGhlbHA9InRoZSBVUkwgdG8gcXVlcnkgKG11c3QgYmUgSFRUUFMp
IikKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAotICAgICAgICAiLWQiLCAiLS1kYXRhIiwgdHlw
ZT1zdHIsIGhlbHA9InNlbmQgdGhlIHNwZWNpZmllZCBkYXRhIGluIGEgUE9TVCByZXF1ZXN0Igot
ICAgICkKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAotICAgICAgICAiLXEiLCAiLS1xdWljLWxv
ZyIsIHR5cGU9c3RyLCBoZWxwPSJsb2cgUVVJQyBldmVudHMgdG8gYSBmaWxlIGluIFFMT0cgZm9y
bWF0IgotICAgICkKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAotICAgICAgICAiLWwiLAotICAg
ICAgICAiLS1zZWNyZXRzLWxvZyIsCi0gICAgICAgIHR5cGU9c3RyLAotICAgICAgICBoZWxwPSJs
b2cgc2VjcmV0cyB0byBhIGZpbGUsIGZvciB1c2Ugd2l0aCBXaXJlc2hhcmsiLAotICAgICkKLSAg
ICBwYXJzZXIuYWRkX2FyZ3VtZW50KAotICAgICAgICAiLXMiLAotICAgICAgICAiLS1zZXNzaW9u
LXRpY2tldCIsCi0gICAgICAgIHR5cGU9c3RyLAotICAgICAgICBoZWxwPSJyZWFkIGFuZCB3cml0
ZSBzZXNzaW9uIHRpY2tldCBmcm9tIHRoZSBzcGVjaWZpZWQgZmlsZSIsCi0gICAgKQotICAgIHBh
cnNlci5hZGRfYXJndW1lbnQoCi0gICAgICAgICItdiIsICItLXZlcmJvc2UiLCBhY3Rpb249InN0
b3JlX3RydWUiLCBoZWxwPSJpbmNyZWFzZSBsb2dnaW5nIHZlcmJvc2l0eSIKLSAgICApCi0KLSAg
ICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQotCi0gICAgbG9nZ2luZy5iYXNpY0NvbmZpZygK
LSAgICAgICAgZm9ybWF0PSIlKGFzY3RpbWUpcyAlKGxldmVsbmFtZSlzICUobmFtZSlzICUobWVz
c2FnZSlzIiwKLSAgICAgICAgbGV2ZWw9bG9nZ2luZy5ERUJVRyBpZiBhcmdzLnZlcmJvc2UgZWxz
ZSBsb2dnaW5nLklORk8sCi0gICAgKQotCi0gICAgIyBwcmVwYXJlIGNvbmZpZ3VyYXRpb24KLSAg
ICBjb25maWd1cmF0aW9uID0gUXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PVRydWUsIGFscG5f
cHJvdG9jb2xzPUgzX0FMUE4pCi0gICAgaWYgYXJncy5xdWljX2xvZzoKLSAgICAgICAgY29uZmln
dXJhdGlvbi5xdWljX2xvZ2dlciA9IFF1aWNMb2dnZXIoKQotICAgIGlmIGFyZ3Muc2VjcmV0c19s
b2c6Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24uc2VjcmV0c19sb2dfZmlsZSA9IG9wZW4oYXJncy5z
ZWNyZXRzX2xvZywgImEiKQotICAgIGlmIGFyZ3Muc2Vzc2lvbl90aWNrZXQ6Ci0gICAgICAgIHRy
eToKLSAgICAgICAgICAgIHdpdGggb3BlbihhcmdzLnNlc3Npb25fdGlja2V0LCAicmIiKSBhcyBm
cDoKLSAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLnNlc3Npb25fdGlja2V0ID0gcGlja2xl
LmxvYWQoZnApCi0gICAgICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvcjoKLSAgICAgICAgICAg
IHBhc3MKLQotICAgIGxvb3AgPSBhc3luY2lvLmdldF9ldmVudF9sb29wKCkKLSAgICB0cnk6Ci0g
ICAgICAgIGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKAotICAgICAgICAgICAgcnVuKGNvbmZpZ3Vy
YXRpb249Y29uZmlndXJhdGlvbiwgdXJsPWFyZ3MudXJsLCBkYXRhPWFyZ3MuZGF0YSkKLSAgICAg
ICAgKQotICAgIGZpbmFsbHk6Ci0gICAgICAgIGlmIGNvbmZpZ3VyYXRpb24ucXVpY19sb2dnZXIg
aXMgbm90IE5vbmU6Ci0gICAgICAgICAgICB3aXRoIG9wZW4oYXJncy5xdWljX2xvZywgInciKSBh
cyBsb2dnZXJfZnA6Ci0gICAgICAgICAgICAgICAganNvbi5kdW1wKGNvbmZpZ3VyYXRpb24ucXVp
Y19sb2dnZXIudG9fZGljdCgpLCBsb2dnZXJfZnAsIGluZGVudD00KQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL2V4YW1wbGVzL2ludGVyb3AucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvaW50
ZXJvcC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDZhZDIwYjY2YjRiNzUxM2Vj
ZWE2YmEzM2QzNzRhNDk1ZTRlNTJhYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvaW50ZXJvcC5weQorKysgL2Rldi9u
dWxsCkBAIC0xLDUzMiArMCwwIEBACi0jCi0jICEhISBXQVJOSU5HICEhIQotIwotIyBUaGlzIGV4
YW1wbGUgdXNlcyBzb21lIHByaXZhdGUgQVBJcy4KLSMKLQotaW1wb3J0IGFyZ3BhcnNlCi1pbXBv
cnQgYXN5bmNpbwotaW1wb3J0IGpzb24KLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgc3NsCi1pbXBv
cnQgdGltZQotZnJvbSBkYXRhY2xhc3NlcyBpbXBvcnQgZGF0YWNsYXNzLCBmaWVsZAotZnJvbSBl
bnVtIGltcG9ydCBGbGFnCi1mcm9tIHR5cGluZyBpbXBvcnQgT3B0aW9uYWwsIGNhc3QKLQotaW1w
b3J0IHJlcXVlc3RzCi1pbXBvcnQgdXJsbGliMwotZnJvbSBodHRwM19jbGllbnQgaW1wb3J0IEh0
dHBDbGllbnQKLQotZnJvbSBhaW9xdWljLmFzeW5jaW8gaW1wb3J0IGNvbm5lY3QKLWZyb20gYWlv
cXVpYy5oMC5jb25uZWN0aW9uIGltcG9ydCBIMF9BTFBOCi1mcm9tIGFpb3F1aWMuaDMuY29ubmVj
dGlvbiBpbXBvcnQgSDNfQUxQTiwgSDNDb25uZWN0aW9uCi1mcm9tIGFpb3F1aWMuaDMuZXZlbnRz
IGltcG9ydCBEYXRhUmVjZWl2ZWQsIEhlYWRlcnNSZWNlaXZlZCwgUHVzaFByb21pc2VSZWNlaXZl
ZAotZnJvbSBhaW9xdWljLnF1aWMuY29uZmlndXJhdGlvbiBpbXBvcnQgUXVpY0NvbmZpZ3VyYXRp
b24KLWZyb20gYWlvcXVpYy5xdWljLmxvZ2dlciBpbXBvcnQgUXVpY0xvZ2dlcgotCi0KLWNsYXNz
IFJlc3VsdChGbGFnKToKLSAgICBWID0gMHgwMDAwMDEKLSAgICBIID0gMHgwMDAwMDIKLSAgICBE
ID0gMHgwMDAwMDQKLSAgICBDID0gMHgwMDAwMDgKLSAgICBSID0gMHgwMDAwMTAKLSAgICBaID0g
MHgwMDAwMjAKLSAgICBTID0gMHgwMDAwNDAKLSAgICBRID0gMHgwMDAwODAKLQotICAgIE0gPSAw
eDAwMDEwMAotICAgIEIgPSAweDAwMDIwMAotICAgIEEgPSAweDAwMDQwMAotICAgIFUgPSAweDAw
MDgwMAotICAgIFAgPSAweDAwMTAwMAotICAgIEUgPSAweDAwMjAwMAotICAgIEwgPSAweDAwNDAw
MAotICAgIFQgPSAweDAwODAwMAotCi0gICAgdGhyZWUgPSAweDAxMDAwMAotICAgIGQgPSAweDAy
MDAwMAotICAgIHAgPSAweDA0MDAwMAotCi0gICAgZGVmIF9fc3RyX18oc2VsZik6Ci0gICAgICAg
IGZsYWdzID0gc29ydGVkKAotICAgICAgICAgICAgbWFwKAotICAgICAgICAgICAgICAgIGxhbWJk
YSB4OiBnZXRhdHRyKFJlc3VsdCwgeCksCi0gICAgICAgICAgICAgICAgZmlsdGVyKGxhbWJkYSB4
OiBub3QgeC5zdGFydHN3aXRoKCJfIiksIGRpcihSZXN1bHQpKSwKLSAgICAgICAgICAgICksCi0g
ICAgICAgICAgICBrZXk9bGFtYmRhIHg6IHgudmFsdWUsCi0gICAgICAgICkKLSAgICAgICAgcmVz
dWx0X3N0ciA9ICIiCi0gICAgICAgIGZvciBmbGFnIGluIGZsYWdzOgotICAgICAgICAgICAgaWYg
c2VsZiAmIGZsYWc6Ci0gICAgICAgICAgICAgICAgcmVzdWx0X3N0ciArPSBmbGFnLm5hbWUKLSAg
ICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmVzdWx0X3N0ciArPSAiLSIKLSAgICAg
ICAgcmV0dXJuIHJlc3VsdF9zdHIKLQotCi1AZGF0YWNsYXNzCi1jbGFzcyBTZXJ2ZXI6Ci0gICAg
bmFtZTogc3RyCi0gICAgaG9zdDogc3RyCi0gICAgcG9ydDogaW50ID0gNDQzMwotICAgIGh0dHAz
OiBib29sID0gVHJ1ZQotICAgIHJldHJ5X3BvcnQ6IE9wdGlvbmFsW2ludF0gPSA0NDM0Ci0gICAg
cGF0aDogc3RyID0gIi8iCi0gICAgcHVzaF9wYXRoOiBPcHRpb25hbFtzdHJdID0gTm9uZQotICAg
IHJlc3VsdDogUmVzdWx0ID0gZmllbGQoZGVmYXVsdF9mYWN0b3J5PWxhbWJkYTogUmVzdWx0KDAp
KQotICAgIHNlc3Npb25fcmVzdW1wdGlvbl9wb3J0OiBPcHRpb25hbFtpbnRdID0gTm9uZQotICAg
IHN0cnVjdHVyZWRfbG9nZ2luZzogYm9vbCA9IEZhbHNlCi0gICAgdGhyb3VnaHB1dF9maWxlX3N1
ZmZpeDogc3RyID0gIiIKLSAgICB2ZXJpZnlfbW9kZTogT3B0aW9uYWxbaW50XSA9IE5vbmUKLQot
Ci1TRVJWRVJTID0gWwotICAgIFNlcnZlcigiYWthbWFpcXVpYyIsICJpZXRmLmFrYXF1aWMuY29t
IiwgcG9ydD00NDMsIHZlcmlmeV9tb2RlPXNzbC5DRVJUX05PTkUpLAotICAgIFNlcnZlcigKLSAg
ICAgICAgImFpb3F1aWMiLCAicXVpYy5haW9ydGMub3JnIiwgcG9ydD00NDMsIHB1c2hfcGF0aD0i
LyIsIHN0cnVjdHVyZWRfbG9nZ2luZz1UcnVlCi0gICAgKSwKLSAgICBTZXJ2ZXIoImF0cyIsICJx
dWljLm9ncmUuY29tIiksCi0gICAgU2VydmVyKCJmNSIsICJmNXF1aWMuY29tIiwgcmV0cnlfcG9y
dD00NDMzKSwKLSAgICBTZXJ2ZXIoImhhc2tlbGwiLCAibWV3Lm9yZyIsIHJldHJ5X3BvcnQ9NDQz
MyksCi0gICAgU2VydmVyKCJncXVpYyIsICJxdWljLnJvY2tzIiwgcmV0cnlfcG9ydD1Ob25lKSwK
LSAgICBTZXJ2ZXIoImxzcXVpYyIsICJodHRwMy10ZXN0LmxpdGVzcGVlZHRlY2guY29tIiwgcHVz
aF9wYXRoPSIvMjAwP3B1c2g9LzEwMCIpLAotICAgIFNlcnZlcigKLSAgICAgICAgIm1zcXVpYyIs
Ci0gICAgICAgICJxdWljLndlc3R1cy5jbG91ZGFwcC5henVyZS5jb20iLAotICAgICAgICBwb3J0
PTQ0MzMsCi0gICAgICAgIHNlc3Npb25fcmVzdW1wdGlvbl9wb3J0PTQ0MzMsCi0gICAgICAgIHN0
cnVjdHVyZWRfbG9nZ2luZz1UcnVlLAotICAgICAgICB0aHJvdWdocHV0X2ZpbGVfc3VmZml4PSIu
dHh0IiwKLSAgICAgICAgdmVyaWZ5X21vZGU9c3NsLkNFUlRfTk9ORSwKLSAgICApLAotICAgIFNl
cnZlcigKLSAgICAgICAgIm12ZnN0IiwgImZiLm12ZnN0Lm5ldCIsIHBvcnQ9NDQzLCBwdXNoX3Bh
dGg9Ii9wdXNoIiwgc3RydWN0dXJlZF9sb2dnaW5nPVRydWUKLSAgICApLAotICAgIFNlcnZlcigi
bmd0Y3AyIiwgIm5naHR0cDIub3JnIiwgcHVzaF9wYXRoPSIvP3B1c2g9LzEwMCIpLAotICAgIFNl
cnZlcigibmd4X3F1aWMiLCAiY2xvdWRmbGFyZS1xdWljLmNvbSIsIHBvcnQ9NDQzLCByZXRyeV9w
b3J0PTQ0MyksCi0gICAgU2VydmVyKCJwYW5kb3JhIiwgInBhbmRvcmEuY20uaW4udHVtLmRlIiwg
dmVyaWZ5X21vZGU9c3NsLkNFUlRfTk9ORSksCi0gICAgU2VydmVyKCJwaWNvcXVpYyIsICJ0ZXN0
LnByaXZhdGVvY3RvcHVzLmNvbSIsIHN0cnVjdHVyZWRfbG9nZ2luZz1UcnVlKSwKLSAgICBTZXJ2
ZXIoInF1YW50IiwgInF1YW50LmVnZ2VydC5vcmciLCBodHRwMz1GYWxzZSksCi0gICAgU2VydmVy
KCJxdWljLWdvIiwgInF1aWMuc2VlbWFubi5pbyIsIHBvcnQ9NDQzLCByZXRyeV9wb3J0PTQ0Myks
Ci0gICAgU2VydmVyKCJxdWljaGUiLCAicXVpYy50ZWNoIiwgcG9ydD04NDQzLCByZXRyeV9wb3J0
PTg0NDQpLAotICAgIFNlcnZlcigicXVpY2x5IiwgInF1aWMuZXhhbXAxZS5uZXQiKSwKLSAgICBT
ZXJ2ZXIoInF1aW5uIiwgInJhbGl0aC5jb20iKSwKLV0KLQotCi1hc3luYyBkZWYgdGVzdF92ZXJz
aW9uX25lZ290aWF0aW9uKHNlcnZlcjogU2VydmVyLCBjb25maWd1cmF0aW9uOiBRdWljQ29uZmln
dXJhdGlvbik6Ci0gICAgIyBmb3JjZSB2ZXJzaW9uIG5lZ290aWF0aW9uCi0gICAgY29uZmlndXJh
dGlvbi5zdXBwb3J0ZWRfdmVyc2lvbnMuaW5zZXJ0KDAsIDB4MUEyQTNBNEEpCi0KLSAgICBhc3lu
YyB3aXRoIGNvbm5lY3QoCi0gICAgICAgIHNlcnZlci5ob3N0LCBzZXJ2ZXIucG9ydCwgY29uZmln
dXJhdGlvbj1jb25maWd1cmF0aW9uCi0gICAgKSBhcyBwcm90b2NvbDoKLSAgICAgICAgYXdhaXQg
cHJvdG9jb2wucGluZygpCi0KLSAgICAgICAgIyBjaGVjayBsb2cKLSAgICAgICAgZm9yIHN0YW1w
LCBjYXRlZ29yeSwgZXZlbnQsIGRhdGEgaW4gY29uZmlndXJhdGlvbi5xdWljX2xvZ2dlci50b19k
aWN0KClbCi0gICAgICAgICAgICAidHJhY2VzIgotICAgICAgICBdWzBdWyJldmVudHMiXToKLSAg
ICAgICAgICAgIGlmICgKLSAgICAgICAgICAgICAgICBjYXRlZ29yeSA9PSAidHJhbnNwb3J0Igot
ICAgICAgICAgICAgICAgIGFuZCBldmVudCA9PSAicGFja2V0X3JlY2VpdmVkIgotICAgICAgICAg
ICAgICAgIGFuZCBkYXRhWyJwYWNrZXRfdHlwZSJdID09ICJ2ZXJzaW9uX25lZ290aWF0aW9uIgot
ICAgICAgICAgICAgKToKLSAgICAgICAgICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJlc3VsdC5W
Ci0KLQotYXN5bmMgZGVmIHRlc3RfaGFuZHNoYWtlX2FuZF9jbG9zZShzZXJ2ZXI6IFNlcnZlciwg
Y29uZmlndXJhdGlvbjogUXVpY0NvbmZpZ3VyYXRpb24pOgotICAgIGFzeW5jIHdpdGggY29ubmVj
dCgKLSAgICAgICAgc2VydmVyLmhvc3QsIHNlcnZlci5wb3J0LCBjb25maWd1cmF0aW9uPWNvbmZp
Z3VyYXRpb24KLSAgICApIGFzIHByb3RvY29sOgotICAgICAgICBhd2FpdCBwcm90b2NvbC5waW5n
KCkKLSAgICAgICAgc2VydmVyLnJlc3VsdCB8PSBSZXN1bHQuSAotICAgIHNlcnZlci5yZXN1bHQg
fD0gUmVzdWx0LkMKLQotCi1hc3luYyBkZWYgdGVzdF9zdGF0ZWxlc3NfcmV0cnkoc2VydmVyOiBT
ZXJ2ZXIsIGNvbmZpZ3VyYXRpb246IFF1aWNDb25maWd1cmF0aW9uKToKLSAgICBhc3luYyB3aXRo
IGNvbm5lY3QoCi0gICAgICAgIHNlcnZlci5ob3N0LCBzZXJ2ZXIucmV0cnlfcG9ydCwgY29uZmln
dXJhdGlvbj1jb25maWd1cmF0aW9uCi0gICAgKSBhcyBwcm90b2NvbDoKLSAgICAgICAgYXdhaXQg
cHJvdG9jb2wucGluZygpCi0KLSAgICAgICAgIyBjaGVjayBsb2cKLSAgICAgICAgZm9yIHN0YW1w
LCBjYXRlZ29yeSwgZXZlbnQsIGRhdGEgaW4gY29uZmlndXJhdGlvbi5xdWljX2xvZ2dlci50b19k
aWN0KClbCi0gICAgICAgICAgICAidHJhY2VzIgotICAgICAgICBdWzBdWyJldmVudHMiXToKLSAg
ICAgICAgICAgIGlmICgKLSAgICAgICAgICAgICAgICBjYXRlZ29yeSA9PSAidHJhbnNwb3J0Igot
ICAgICAgICAgICAgICAgIGFuZCBldmVudCA9PSAicGFja2V0X3JlY2VpdmVkIgotICAgICAgICAg
ICAgICAgIGFuZCBkYXRhWyJwYWNrZXRfdHlwZSJdID09ICJyZXRyeSIKLSAgICAgICAgICAgICk6
Ci0gICAgICAgICAgICAgICAgc2VydmVyLnJlc3VsdCB8PSBSZXN1bHQuUwotCi0KLWFzeW5jIGRl
ZiB0ZXN0X3F1YW50dW1fcmVhZGluZXNzKHNlcnZlcjogU2VydmVyLCBjb25maWd1cmF0aW9uOiBR
dWljQ29uZmlndXJhdGlvbik6Ci0gICAgY29uZmlndXJhdGlvbi5xdWFudHVtX3JlYWRpbmVzc190
ZXN0ID0gVHJ1ZQotICAgIGFzeW5jIHdpdGggY29ubmVjdCgKLSAgICAgICAgc2VydmVyLmhvc3Qs
IHNlcnZlci5wb3J0LCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24KLSAgICApIGFzIHByb3Rv
Y29sOgotICAgICAgICBhd2FpdCBwcm90b2NvbC5waW5nKCkKLSAgICAgICAgc2VydmVyLnJlc3Vs
dCB8PSBSZXN1bHQuUQotCi0KLWFzeW5jIGRlZiB0ZXN0X2h0dHBfMChzZXJ2ZXI6IFNlcnZlciwg
Y29uZmlndXJhdGlvbjogUXVpY0NvbmZpZ3VyYXRpb24pOgotICAgIGlmIHNlcnZlci5wYXRoIGlz
IE5vbmU6Ci0gICAgICAgIHJldHVybgotCi0gICAgY29uZmlndXJhdGlvbi5hbHBuX3Byb3RvY29s
cyA9IEgwX0FMUE4KLSAgICBhc3luYyB3aXRoIGNvbm5lY3QoCi0gICAgICAgIHNlcnZlci5ob3N0
LAotICAgICAgICBzZXJ2ZXIucG9ydCwKLSAgICAgICAgY29uZmlndXJhdGlvbj1jb25maWd1cmF0
aW9uLAotICAgICAgICBjcmVhdGVfcHJvdG9jb2w9SHR0cENsaWVudCwKLSAgICApIGFzIHByb3Rv
Y29sOgotICAgICAgICBwcm90b2NvbCA9IGNhc3QoSHR0cENsaWVudCwgcHJvdG9jb2wpCi0KLSAg
ICAgICAgIyBwZXJmb3JtIEhUVFAgcmVxdWVzdAotICAgICAgICBldmVudHMgPSBhd2FpdCBwcm90
b2NvbC5nZXQoCi0gICAgICAgICAgICAiaHR0cHM6Ly97fTp7fXt9Ii5mb3JtYXQoc2VydmVyLmhv
c3QsIHNlcnZlci5wb3J0LCBzZXJ2ZXIucGF0aCkKLSAgICAgICAgKQotICAgICAgICBpZiBldmVu
dHMgYW5kIGlzaW5zdGFuY2UoZXZlbnRzWzBdLCBIZWFkZXJzUmVjZWl2ZWQpOgotICAgICAgICAg
ICAgc2VydmVyLnJlc3VsdCB8PSBSZXN1bHQuRAotCi0KLWFzeW5jIGRlZiB0ZXN0X2h0dHBfMyhz
ZXJ2ZXI6IFNlcnZlciwgY29uZmlndXJhdGlvbjogUXVpY0NvbmZpZ3VyYXRpb24pOgotICAgIGlm
IHNlcnZlci5wYXRoIGlzIE5vbmU6Ci0gICAgICAgIHJldHVybgotCi0gICAgY29uZmlndXJhdGlv
bi5hbHBuX3Byb3RvY29scyA9IEgzX0FMUE4KLSAgICBhc3luYyB3aXRoIGNvbm5lY3QoCi0gICAg
ICAgIHNlcnZlci5ob3N0LAotICAgICAgICBzZXJ2ZXIucG9ydCwKLSAgICAgICAgY29uZmlndXJh
dGlvbj1jb25maWd1cmF0aW9uLAotICAgICAgICBjcmVhdGVfcHJvdG9jb2w9SHR0cENsaWVudCwK
LSAgICApIGFzIHByb3RvY29sOgotICAgICAgICBwcm90b2NvbCA9IGNhc3QoSHR0cENsaWVudCwg
cHJvdG9jb2wpCi0KLSAgICAgICAgIyBwZXJmb3JtIEhUVFAgcmVxdWVzdAotICAgICAgICBldmVu
dHMgPSBhd2FpdCBwcm90b2NvbC5nZXQoCi0gICAgICAgICAgICAiaHR0cHM6Ly97fTp7fXt9Ii5m
b3JtYXQoc2VydmVyLmhvc3QsIHNlcnZlci5wb3J0LCBzZXJ2ZXIucGF0aCkKLSAgICAgICAgKQot
ICAgICAgICBpZiBldmVudHMgYW5kIGlzaW5zdGFuY2UoZXZlbnRzWzBdLCBIZWFkZXJzUmVjZWl2
ZWQpOgotICAgICAgICAgICAgc2VydmVyLnJlc3VsdCB8PSBSZXN1bHQuRAotICAgICAgICAgICAg
c2VydmVyLnJlc3VsdCB8PSBSZXN1bHQudGhyZWUKLQotICAgICAgICAjIHBlcmZvcm0gbW9yZSBI
VFRQIHJlcXVlc3RzIHRvIHVzZSBRUEFDSyBkeW5hbWljIHRhYmxlcwotICAgICAgICBmb3IgaSBp
biByYW5nZSgyKToKLSAgICAgICAgICAgIGV2ZW50cyA9IGF3YWl0IHByb3RvY29sLmdldCgKLSAg
ICAgICAgICAgICAgICAiaHR0cHM6Ly97fTp7fXt9Ii5mb3JtYXQoc2VydmVyLmhvc3QsIHNlcnZl
ci5wb3J0LCBzZXJ2ZXIucGF0aCkKLSAgICAgICAgICAgICkKLSAgICAgICAgaWYgZXZlbnRzIGFu
ZCBpc2luc3RhbmNlKGV2ZW50c1swXSwgSGVhZGVyc1JlY2VpdmVkKToKLSAgICAgICAgICAgIGh0
dHAgPSBjYXN0KEgzQ29ubmVjdGlvbiwgcHJvdG9jb2wuX2h0dHApCi0gICAgICAgICAgICBwcm90
b2NvbC5fcXVpYy5fbG9nZ2VyLmluZm8oCi0gICAgICAgICAgICAgICAgIlFQQUNLIGRlY29kZXIg
Ynl0ZXMgUlggJWQgVFggJWQiLAotICAgICAgICAgICAgICAgIGh0dHAuX2RlY29kZXJfYnl0ZXNf
cmVjZWl2ZWQsCi0gICAgICAgICAgICAgICAgaHR0cC5fZGVjb2Rlcl9ieXRlc19zZW50LAotICAg
ICAgICAgICAgKQotICAgICAgICAgICAgcHJvdG9jb2wuX3F1aWMuX2xvZ2dlci5pbmZvKAotICAg
ICAgICAgICAgICAgICJRUEFDSyBlbmNvZGVyIGJ5dGVzIFJYICVkIFRYICVkIiwKLSAgICAgICAg
ICAgICAgICBodHRwLl9lbmNvZGVyX2J5dGVzX3JlY2VpdmVkLAotICAgICAgICAgICAgICAgIGh0
dHAuX2VuY29kZXJfYnl0ZXNfc2VudCwKLSAgICAgICAgICAgICkKLSAgICAgICAgICAgIGlmICgK
LSAgICAgICAgICAgICAgICBodHRwLl9kZWNvZGVyX2J5dGVzX3JlY2VpdmVkCi0gICAgICAgICAg
ICAgICAgYW5kIGh0dHAuX2RlY29kZXJfYnl0ZXNfc2VudAotICAgICAgICAgICAgICAgIGFuZCBo
dHRwLl9lbmNvZGVyX2J5dGVzX3JlY2VpdmVkCi0gICAgICAgICAgICAgICAgYW5kIGh0dHAuX2Vu
Y29kZXJfYnl0ZXNfc2VudAotICAgICAgICAgICAgKToKLSAgICAgICAgICAgICAgICBzZXJ2ZXIu
cmVzdWx0IHw9IFJlc3VsdC5kCi0KLSAgICAgICAgIyBjaGVjayBwdXNoIHN1cHBvcnQKLSAgICAg
ICAgaWYgc2VydmVyLnB1c2hfcGF0aCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHByb3RvY29s
LnB1c2hlcy5jbGVhcigpCi0gICAgICAgICAgICBhd2FpdCBwcm90b2NvbC5nZXQoCi0gICAgICAg
ICAgICAgICAgImh0dHBzOi8ve306e317fSIuZm9ybWF0KHNlcnZlci5ob3N0LCBzZXJ2ZXIucG9y
dCwgc2VydmVyLnB1c2hfcGF0aCkKLSAgICAgICAgICAgICkKLSAgICAgICAgICAgIGF3YWl0IGFz
eW5jaW8uc2xlZXAoMC41KQotICAgICAgICAgICAgZm9yIHB1c2hfaWQsIGV2ZW50cyBpbiBwcm90
b2NvbC5wdXNoZXMuaXRlbXMoKToKLSAgICAgICAgICAgICAgICBpZiAoCi0gICAgICAgICAgICAg
ICAgICAgIGxlbihldmVudHMpID49IDMKLSAgICAgICAgICAgICAgICAgICAgYW5kIGlzaW5zdGFu
Y2UoZXZlbnRzWzBdLCBQdXNoUHJvbWlzZVJlY2VpdmVkKQotICAgICAgICAgICAgICAgICAgICBh
bmQgaXNpbnN0YW5jZShldmVudHNbMV0sIEhlYWRlcnNSZWNlaXZlZCkKLSAgICAgICAgICAgICAg
ICAgICAgYW5kIGlzaW5zdGFuY2UoZXZlbnRzWzJdLCBEYXRhUmVjZWl2ZWQpCi0gICAgICAgICAg
ICAgICAgKToKLSAgICAgICAgICAgICAgICAgICAgcHJvdG9jb2wuX3F1aWMuX2xvZ2dlci5pbmZv
KAotICAgICAgICAgICAgICAgICAgICAgICAgIlB1c2ggcHJvbWlzZSAlZCBmb3IgJXMgcmVjZWl2
ZWQgKHN0YXR1cyAlcykiLAotICAgICAgICAgICAgICAgICAgICAgICAgcHVzaF9pZCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGRpY3QoZXZlbnRzWzBdLmhlYWRlcnMpW2IiOnBhdGgiXS5kZWNv
ZGUoImFzY2lpIiksCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnQoZGljdChldmVudHNbMV0u
aGVhZGVycylbYiI6c3RhdHVzIl0pLAotICAgICAgICAgICAgICAgICAgICApCi0KLSAgICAgICAg
ICAgICAgICAgICAgc2VydmVyLnJlc3VsdCB8PSBSZXN1bHQucAotCi0KLWFzeW5jIGRlZiB0ZXN0
X3Nlc3Npb25fcmVzdW1wdGlvbihzZXJ2ZXI6IFNlcnZlciwgY29uZmlndXJhdGlvbjogUXVpY0Nv
bmZpZ3VyYXRpb24pOgotICAgIHBvcnQgPSBzZXJ2ZXIuc2Vzc2lvbl9yZXN1bXB0aW9uX3BvcnQg
b3Igc2VydmVyLnBvcnQKLSAgICBzYXZlZF90aWNrZXQgPSBOb25lCi0KLSAgICBkZWYgc2Vzc2lv
bl90aWNrZXRfaGFuZGxlcih0aWNrZXQpOgotICAgICAgICBub25sb2NhbCBzYXZlZF90aWNrZXQK
LSAgICAgICAgc2F2ZWRfdGlja2V0ID0gdGlja2V0Ci0KLSAgICAjIGNvbm5lY3QgYSBmaXJzdCB0
aW1lLCByZWNlaXZlIGEgdGlja2V0Ci0gICAgYXN5bmMgd2l0aCBjb25uZWN0KAotICAgICAgICBz
ZXJ2ZXIuaG9zdCwKLSAgICAgICAgcG9ydCwKLSAgICAgICAgY29uZmlndXJhdGlvbj1jb25maWd1
cmF0aW9uLAotICAgICAgICBzZXNzaW9uX3RpY2tldF9oYW5kbGVyPXNlc3Npb25fdGlja2V0X2hh
bmRsZXIsCi0gICAgKSBhcyBwcm90b2NvbDoKLSAgICAgICAgYXdhaXQgcHJvdG9jb2wucGluZygp
Ci0KLSAgICAgICAgIyBzb21lIHNlcnZlcnMgZG9uJ3Qgc2VuZCB0aGUgdGlja2V0IGltbWVkaWF0
ZWx5Ci0gICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMSkKLQotICAgICMgY29ubmVjdCBhIHNl
Y29uZCB0aW1lLCB3aXRoIHRoZSB0aWNrZXQKLSAgICBpZiBzYXZlZF90aWNrZXQgaXMgbm90IE5v
bmU6Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24uc2Vzc2lvbl90aWNrZXQgPSBzYXZlZF90aWNrZXQK
LSAgICAgICAgYXN5bmMgd2l0aCBjb25uZWN0KHNlcnZlci5ob3N0LCBwb3J0LCBjb25maWd1cmF0
aW9uPWNvbmZpZ3VyYXRpb24pIGFzIHByb3RvY29sOgotICAgICAgICAgICAgYXdhaXQgcHJvdG9j
b2wucGluZygpCi0KLSAgICAgICAgICAgICMgY2hlY2sgc2Vzc2lvbiB3YXMgcmVzdW1lZAotICAg
ICAgICAgICAgaWYgcHJvdG9jb2wuX3F1aWMudGxzLnNlc3Npb25fcmVzdW1lZDoKLSAgICAgICAg
ICAgICAgICBzZXJ2ZXIucmVzdWx0IHw9IFJlc3VsdC5SCi0KLSAgICAgICAgICAgICMgY2hlY2sg
ZWFybHkgZGF0YSB3YXMgYWNjZXB0ZWQKLSAgICAgICAgICAgIGlmIHByb3RvY29sLl9xdWljLnRs
cy5lYXJseV9kYXRhX2FjY2VwdGVkOgotICAgICAgICAgICAgICAgIHNlcnZlci5yZXN1bHQgfD0g
UmVzdWx0LloKLQotCi1hc3luYyBkZWYgdGVzdF9rZXlfdXBkYXRlKHNlcnZlcjogU2VydmVyLCBj
b25maWd1cmF0aW9uOiBRdWljQ29uZmlndXJhdGlvbik6Ci0gICAgYXN5bmMgd2l0aCBjb25uZWN0
KAotICAgICAgICBzZXJ2ZXIuaG9zdCwgc2VydmVyLnBvcnQsIGNvbmZpZ3VyYXRpb249Y29uZmln
dXJhdGlvbgotICAgICkgYXMgcHJvdG9jb2w6Ci0gICAgICAgICMgY2F1c2Ugc29tZSB0cmFmZmlj
Ci0gICAgICAgIGF3YWl0IHByb3RvY29sLnBpbmcoKQotCi0gICAgICAgICMgcmVxdWVzdCBrZXkg
dXBkYXRlCi0gICAgICAgIHByb3RvY29sLnJlcXVlc3Rfa2V5X3VwZGF0ZSgpCi0KLSAgICAgICAg
IyBjYXVzZSBtb3JlIHRyYWZmaWMKLSAgICAgICAgYXdhaXQgcHJvdG9jb2wucGluZygpCi0KLSAg
ICAgICAgc2VydmVyLnJlc3VsdCB8PSBSZXN1bHQuVQotCi0KLWFzeW5jIGRlZiB0ZXN0X21pZ3Jh
dGlvbihzZXJ2ZXI6IFNlcnZlciwgY29uZmlndXJhdGlvbjogUXVpY0NvbmZpZ3VyYXRpb24pOgot
ICAgIGFzeW5jIHdpdGggY29ubmVjdCgKLSAgICAgICAgc2VydmVyLmhvc3QsIHNlcnZlci5wb3J0
LCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24KLSAgICApIGFzIHByb3RvY29sOgotICAgICAg
ICAjIGNhdXNlIHNvbWUgdHJhZmZpYwotICAgICAgICBhd2FpdCBwcm90b2NvbC5waW5nKCkKLQot
ICAgICAgICAjIGNoYW5nZSBjb25uZWN0aW9uIElEIGFuZCByZXBsYWNlIHRyYW5zcG9ydAotICAg
ICAgICBwcm90b2NvbC5jaGFuZ2VfY29ubmVjdGlvbl9pZCgpCi0gICAgICAgIHByb3RvY29sLl90
cmFuc3BvcnQuY2xvc2UoKQotICAgICAgICBhd2FpdCBsb29wLmNyZWF0ZV9kYXRhZ3JhbV9lbmRw
b2ludChsYW1iZGE6IHByb3RvY29sLCBsb2NhbF9hZGRyPSgiOjoiLCAwKSkKLQotICAgICAgICAj
IGNhdXNlIG1vcmUgdHJhZmZpYwotICAgICAgICBhd2FpdCBwcm90b2NvbC5waW5nKCkKLQotICAg
ICAgICAjIGNoZWNrIGxvZwotICAgICAgICBkY2lkcyA9IHNldCgpCi0gICAgICAgIGZvciBzdGFt
cCwgY2F0ZWdvcnksIGV2ZW50LCBkYXRhIGluIGNvbmZpZ3VyYXRpb24ucXVpY19sb2dnZXIudG9f
ZGljdCgpWwotICAgICAgICAgICAgInRyYWNlcyIKLSAgICAgICAgXVswXVsiZXZlbnRzIl06Ci0g
ICAgICAgICAgICBpZiAoCi0gICAgICAgICAgICAgICAgY2F0ZWdvcnkgPT0gInRyYW5zcG9ydCIK
LSAgICAgICAgICAgICAgICBhbmQgZXZlbnQgPT0gInBhY2tldF9yZWNlaXZlZCIKLSAgICAgICAg
ICAgICAgICBhbmQgZGF0YVsicGFja2V0X3R5cGUiXSA9PSAiMVJUVCIKLSAgICAgICAgICAgICk6
Ci0gICAgICAgICAgICAgICAgZGNpZHMuYWRkKGRhdGFbImhlYWRlciJdWyJkY2lkIl0pCi0gICAg
ICAgIGlmIGxlbihkY2lkcykgPT0gMjoKLSAgICAgICAgICAgIHNlcnZlci5yZXN1bHQgfD0gUmVz
dWx0Lk0KLQotCi1hc3luYyBkZWYgdGVzdF9yZWJpbmRpbmcoc2VydmVyOiBTZXJ2ZXIsIGNvbmZp
Z3VyYXRpb246IFF1aWNDb25maWd1cmF0aW9uKToKLSAgICBhc3luYyB3aXRoIGNvbm5lY3QoCi0g
ICAgICAgIHNlcnZlci5ob3N0LCBzZXJ2ZXIucG9ydCwgY29uZmlndXJhdGlvbj1jb25maWd1cmF0
aW9uCi0gICAgKSBhcyBwcm90b2NvbDoKLSAgICAgICAgIyBjYXVzZSBzb21lIHRyYWZmaWMKLSAg
ICAgICAgYXdhaXQgcHJvdG9jb2wucGluZygpCi0KLSAgICAgICAgIyByZXBsYWNlIHRyYW5zcG9y
dAotICAgICAgICBwcm90b2NvbC5fdHJhbnNwb3J0LmNsb3NlKCkKLSAgICAgICAgYXdhaXQgbG9v
cC5jcmVhdGVfZGF0YWdyYW1fZW5kcG9pbnQobGFtYmRhOiBwcm90b2NvbCwgbG9jYWxfYWRkcj0o
Ijo6IiwgMCkpCi0KLSAgICAgICAgIyBjYXVzZSBtb3JlIHRyYWZmaWMKLSAgICAgICAgYXdhaXQg
cHJvdG9jb2wucGluZygpCi0KLSAgICAgICAgc2VydmVyLnJlc3VsdCB8PSBSZXN1bHQuQgotCi0K
LWFzeW5jIGRlZiB0ZXN0X3NwaW5fYml0KHNlcnZlcjogU2VydmVyLCBjb25maWd1cmF0aW9uOiBR
dWljQ29uZmlndXJhdGlvbik6Ci0gICAgYXN5bmMgd2l0aCBjb25uZWN0KAotICAgICAgICBzZXJ2
ZXIuaG9zdCwgc2VydmVyLnBvcnQsIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbgotICAgICkg
YXMgcHJvdG9jb2w6Ci0gICAgICAgIGZvciBpIGluIHJhbmdlKDUpOgotICAgICAgICAgICAgYXdh
aXQgcHJvdG9jb2wucGluZygpCi0KLSAgICAgICAgIyBjaGVjayBsb2cKLSAgICAgICAgc3Bpbl9i
aXRzID0gc2V0KCkKLSAgICAgICAgZm9yIHN0YW1wLCBjYXRlZ29yeSwgZXZlbnQsIGRhdGEgaW4g
Y29uZmlndXJhdGlvbi5xdWljX2xvZ2dlci50b19kaWN0KClbCi0gICAgICAgICAgICAidHJhY2Vz
IgotICAgICAgICBdWzBdWyJldmVudHMiXToKLSAgICAgICAgICAgIGlmIGNhdGVnb3J5ID09ICJj
b25uZWN0aXZpdHkiIGFuZCBldmVudCA9PSAic3Bpbl9iaXRfdXBkYXRlZCI6Ci0gICAgICAgICAg
ICAgICAgc3Bpbl9iaXRzLmFkZChkYXRhWyJzdGF0ZSJdKQotICAgICAgICBpZiBsZW4oc3Bpbl9i
aXRzKSA9PSAyOgotICAgICAgICAgICAgc2VydmVyLnJlc3VsdCB8PSBSZXN1bHQuUAotCi0KLWFz
eW5jIGRlZiB0ZXN0X3Rocm91Z2hwdXQoc2VydmVyOiBTZXJ2ZXIsIGNvbmZpZ3VyYXRpb246IFF1
aWNDb25maWd1cmF0aW9uKToKLSAgICBmYWlsdXJlcyA9IDAKLQotICAgIGZvciBzaXplIGluIFs1
MDAwMDAwLCAxMDAwMDAwMF06Ci0gICAgICAgIHByaW50KCJUZXN0aW5nICVkIGJ5dGVzIGRvd25s
b2FkIiAlIHNpemUpCi0gICAgICAgIHBhdGggPSAiLyVkJXMiICUgKHNpemUsIHNlcnZlci50aHJv
dWdocHV0X2ZpbGVfc3VmZml4KQotCi0gICAgICAgICMgcGVyZm9ybSBIVFRQIHJlcXVlc3Qgb3Zl
ciBUQ1AKLSAgICAgICAgc3RhcnQgPSB0aW1lLnRpbWUoKQotICAgICAgICByZXNwb25zZSA9IHJl
cXVlc3RzLmdldCgiaHR0cHM6Ly8iICsgc2VydmVyLmhvc3QgKyBwYXRoLCB2ZXJpZnk9RmFsc2Up
Ci0gICAgICAgIHRjcF9vY3RldHMgPSBsZW4ocmVzcG9uc2UuY29udGVudCkKLSAgICAgICAgdGNw
X2VsYXBzZWQgPSB0aW1lLnRpbWUoKSAtIHN0YXJ0Ci0gICAgICAgIGFzc2VydCB0Y3Bfb2N0ZXRz
ID09IHNpemUsICJIVFRQL1RDUCByZXNwb25zZSBzaXplIG1pc21hdGNoIgotCi0gICAgICAgICMg
cGVyZm9ybSBIVFRQIHJlcXVlc3Qgb3ZlciBRVUlDCi0gICAgICAgIGlmIHNlcnZlci5odHRwMzoK
LSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24uYWxwbl9wcm90b2NvbHMgPSBIM19BTFBOCi0gICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICBjb25maWd1cmF0aW9uLmFscG5fcHJvdG9jb2xzID0gSDBf
QUxQTgotICAgICAgICBzdGFydCA9IHRpbWUudGltZSgpCi0gICAgICAgIGFzeW5jIHdpdGggY29u
bmVjdCgKLSAgICAgICAgICAgIHNlcnZlci5ob3N0LAotICAgICAgICAgICAgc2VydmVyLnBvcnQs
Ci0gICAgICAgICAgICBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sCi0gICAgICAgICAgICBj
cmVhdGVfcHJvdG9jb2w9SHR0cENsaWVudCwKLSAgICAgICAgKSBhcyBwcm90b2NvbDoKLSAgICAg
ICAgICAgIHByb3RvY29sID0gY2FzdChIdHRwQ2xpZW50LCBwcm90b2NvbCkKLQotICAgICAgICAg
ICAgaHR0cF9ldmVudHMgPSBhd2FpdCBwcm90b2NvbC5nZXQoCi0gICAgICAgICAgICAgICAgImh0
dHBzOi8ve306e317fSIuZm9ybWF0KHNlcnZlci5ob3N0LCBzZXJ2ZXIucG9ydCwgcGF0aCkKLSAg
ICAgICAgICAgICkKLSAgICAgICAgICAgIHF1aWNfZWxhcHNlZCA9IHRpbWUudGltZSgpIC0gc3Rh
cnQKLSAgICAgICAgICAgIHF1aWNfb2N0ZXRzID0gMAotICAgICAgICAgICAgZm9yIGh0dHBfZXZl
bnQgaW4gaHR0cF9ldmVudHM6Ci0gICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShodHRwX2V2
ZW50LCBEYXRhUmVjZWl2ZWQpOgotICAgICAgICAgICAgICAgICAgICBxdWljX29jdGV0cyArPSBs
ZW4oaHR0cF9ldmVudC5kYXRhKQotICAgICAgICBhc3NlcnQgcXVpY19vY3RldHMgPT0gc2l6ZSwg
IkhUVFAvUVVJQyByZXNwb25zZSBzaXplIG1pc21hdGNoIgotCi0gICAgICAgIHByaW50KCIgLSBI
VFRQL1RDUCAgY29tcGxldGVkIGluICUuM2YgcyIgJSB0Y3BfZWxhcHNlZCkKLSAgICAgICAgcHJp
bnQoIiAtIEhUVFAvUVVJQyBjb21wbGV0ZWQgaW4gJS4zZiBzIiAlIHF1aWNfZWxhcHNlZCkKLQot
ICAgICAgICBpZiBxdWljX2VsYXBzZWQgPiAxLjEgKiB0Y3BfZWxhcHNlZDoKLSAgICAgICAgICAg
IGZhaWx1cmVzICs9IDEKLSAgICAgICAgICAgIHByaW50KCIgPT4gRkFJTCIpCi0gICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICBwcmludCgiID0+IFBBU1MiKQotCi0gICAgaWYgZmFpbHVyZXMgPT0g
MDoKLSAgICAgICAgc2VydmVyLnJlc3VsdCB8PSBSZXN1bHQuVAotCi0KLWRlZiBwcmludF9yZXN1
bHQoc2VydmVyOiBTZXJ2ZXIpIC0+IE5vbmU6Ci0gICAgcmVzdWx0ID0gc3RyKHNlcnZlci5yZXN1
bHQpLnJlcGxhY2UoInRocmVlIiwgIjMiKQotICAgIHJlc3VsdCA9IHJlc3VsdFswOjhdICsgIiAi
ICsgcmVzdWx0Wzg6MTZdICsgIiAiICsgcmVzdWx0WzE2Ol0KLSAgICBwcmludCgiJXMlcyVzIiAl
IChzZXJ2ZXIubmFtZSwgIiAiICogKDIwIC0gbGVuKHNlcnZlci5uYW1lKSksIHJlc3VsdCkpCi0K
LQotYXN5bmMgZGVmIHJ1bihzZXJ2ZXJzLCB0ZXN0cywgcXVpY19sb2c9RmFsc2UsIHNlY3JldHNf
bG9nX2ZpbGU9Tm9uZSkgLT4gTm9uZToKLSAgICBmb3Igc2VydmVyIGluIHNlcnZlcnM6Ci0gICAg
ICAgIGlmIHNlcnZlci5zdHJ1Y3R1cmVkX2xvZ2dpbmc6Ci0gICAgICAgICAgICBzZXJ2ZXIucmVz
dWx0IHw9IFJlc3VsdC5MCi0gICAgICAgIGZvciB0ZXN0X25hbWUsIHRlc3RfZnVuYyBpbiB0ZXN0
czoKLSAgICAgICAgICAgIHByaW50KCJcbj09PSAlcyAlcyA9PT1cbiIgJSAoc2VydmVyLm5hbWUs
IHRlc3RfbmFtZSkpCi0gICAgICAgICAgICBjb25maWd1cmF0aW9uID0gUXVpY0NvbmZpZ3VyYXRp
b24oCi0gICAgICAgICAgICAgICAgYWxwbl9wcm90b2NvbHM9SDNfQUxQTiArIEgwX0FMUE4sCi0g
ICAgICAgICAgICAgICAgaXNfY2xpZW50PVRydWUsCi0gICAgICAgICAgICAgICAgcXVpY19sb2dn
ZXI9UXVpY0xvZ2dlcigpLAotICAgICAgICAgICAgICAgIHNlY3JldHNfbG9nX2ZpbGU9c2VjcmV0
c19sb2dfZmlsZSwKLSAgICAgICAgICAgICAgICB2ZXJpZnlfbW9kZT1zZXJ2ZXIudmVyaWZ5X21v
ZGUsCi0gICAgICAgICAgICApCi0gICAgICAgICAgICBpZiB0ZXN0X25hbWUgPT0gInRlc3RfdGhy
b3VnaHB1dCI6Ci0gICAgICAgICAgICAgICAgdGltZW91dCA9IDYwCi0gICAgICAgICAgICBlbHNl
OgotICAgICAgICAgICAgICAgIHRpbWVvdXQgPSAxMAotICAgICAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgICAgIGF3YWl0IGFzeW5jaW8ud2FpdF9mb3IoCi0gICAgICAgICAgICAgICAgICAgIHRl
c3RfZnVuYyhzZXJ2ZXIsIGNvbmZpZ3VyYXRpb24pLCB0aW1lb3V0PXRpbWVvdXQKLSAgICAgICAg
ICAgICAgICApCi0gICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGV4YzoKLSAgICAgICAg
ICAgICAgICBwcmludChleGMpCi0KLSAgICAgICAgICAgIGlmIHF1aWNfbG9nOgotICAgICAgICAg
ICAgICAgIHdpdGggb3BlbigiJXMtJXMucWxvZyIgJSAoc2VydmVyLm5hbWUsIHRlc3RfbmFtZSks
ICJ3IikgYXMgbG9nZ2VyX2ZwOgotICAgICAgICAgICAgICAgICAgICBqc29uLmR1bXAoY29uZmln
dXJhdGlvbi5xdWljX2xvZ2dlci50b19kaWN0KCksIGxvZ2dlcl9mcCwgaW5kZW50PTQpCi0KLSAg
ICAgICAgcHJpbnQoIiIpCi0gICAgICAgIHByaW50X3Jlc3VsdChzZXJ2ZXIpCi0KLSAgICAjIHBy
aW50IHN1bW1hcnkKLSAgICBpZiBsZW4oc2VydmVycykgPiAxOgotICAgICAgICBwcmludCgiU1VN
TUFSWSIpCi0gICAgICAgIGZvciBzZXJ2ZXIgaW4gc2VydmVyczoKLSAgICAgICAgICAgIHByaW50
X3Jlc3VsdChzZXJ2ZXIpCi0KLQotaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICBwYXJz
ZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihkZXNjcmlwdGlvbj0iUVVJQyBpbnRlcm9wIGNs
aWVudCIpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKLSAgICAgICAgIi1xIiwKLSAgICAgICAg
Ii0tcXVpYy1sb2ciLAotICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLAotICAgICAgICBoZWxw
PSJsb2cgUVVJQyBldmVudHMgdG8gYSBmaWxlIGluIFFMT0cgZm9ybWF0IiwKLSAgICApCi0gICAg
cGFyc2VyLmFkZF9hcmd1bWVudCgKLSAgICAgICAgIi0tc2VydmVyIiwgdHlwZT1zdHIsIGhlbHA9
Im9ubHkgcnVuIGFnYWluc3QgdGhlIHNwZWNpZmllZCBzZXJ2ZXIuIgotICAgICkKLSAgICBwYXJz
ZXIuYWRkX2FyZ3VtZW50KCItLXRlc3QiLCB0eXBlPXN0ciwgaGVscD0ib25seSBydW4gdGhlIHNw
ZWNpZmVkIHRlc3QuIikKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAotICAgICAgICAiLWwiLAot
ICAgICAgICAiLS1zZWNyZXRzLWxvZyIsCi0gICAgICAgIHR5cGU9c3RyLAotICAgICAgICBoZWxw
PSJsb2cgc2VjcmV0cyB0byBhIGZpbGUsIGZvciB1c2Ugd2l0aCBXaXJlc2hhcmsiLAotICAgICkK
LSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAotICAgICAgICAiLXYiLCAiLS12ZXJib3NlIiwgYWN0
aW9uPSJzdG9yZV90cnVlIiwgaGVscD0iaW5jcmVhc2UgbG9nZ2luZyB2ZXJib3NpdHkiCi0gICAg
KQotCi0gICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKLQotICAgIGxvZ2dpbmcuYmFzaWND
b25maWcoCi0gICAgICAgIGZvcm1hdD0iJShhc2N0aW1lKXMgJShsZXZlbG5hbWUpcyAlKG5hbWUp
cyAlKG1lc3NhZ2UpcyIsCi0gICAgICAgIGxldmVsPWxvZ2dpbmcuREVCVUcgaWYgYXJncy52ZXJi
b3NlIGVsc2UgbG9nZ2luZy5JTkZPLAotICAgICkKLQotICAgICMgb3BlbiBTU0wgbG9nIGZpbGUK
LSAgICBpZiBhcmdzLnNlY3JldHNfbG9nOgotICAgICAgICBzZWNyZXRzX2xvZ19maWxlID0gb3Bl
bihhcmdzLnNlY3JldHNfbG9nLCAiYSIpCi0gICAgZWxzZToKLSAgICAgICAgc2VjcmV0c19sb2df
ZmlsZSA9IE5vbmUKLQotICAgICMgZGV0ZXJtaW5lIHdoYXQgdG8gcnVuCi0gICAgc2VydmVycyA9
IFNFUlZFUlMKLSAgICB0ZXN0cyA9IGxpc3QoZmlsdGVyKGxhbWJkYSB4OiB4WzBdLnN0YXJ0c3dp
dGgoInRlc3RfIiksIGdsb2JhbHMoKS5pdGVtcygpKSkKLSAgICBpZiBhcmdzLnNlcnZlcjoKLSAg
ICAgICAgc2VydmVycyA9IGxpc3QoZmlsdGVyKGxhbWJkYSB4OiB4Lm5hbWUgPT0gYXJncy5zZXJ2
ZXIsIHNlcnZlcnMpKQotICAgIGlmIGFyZ3MudGVzdDoKLSAgICAgICAgdGVzdHMgPSBsaXN0KGZp
bHRlcihsYW1iZGEgeDogeFswXSA9PSBhcmdzLnRlc3QsIHRlc3RzKSkKLQotICAgICMgZGlzYWJs
ZSByZXF1ZXN0cyBTU0wgd2FybmluZ3MKLSAgICB1cmxsaWIzLmRpc2FibGVfd2FybmluZ3ModXJs
bGliMy5leGNlcHRpb25zLkluc2VjdXJlUmVxdWVzdFdhcm5pbmcpCi0KLSAgICBsb29wID0gYXN5
bmNpby5nZXRfZXZlbnRfbG9vcCgpCi0gICAgbG9vcC5ydW5fdW50aWxfY29tcGxldGUoCi0gICAg
ICAgIHJ1bigKLSAgICAgICAgICAgIHNlcnZlcnM9c2VydmVycywKLSAgICAgICAgICAgIHRlc3Rz
PXRlc3RzLAotICAgICAgICAgICAgcXVpY19sb2c9YXJncy5xdWljX2xvZywKLSAgICAgICAgICAg
IHNlY3JldHNfbG9nX2ZpbGU9c2VjcmV0c19sb2dfZmlsZSwKLSAgICAgICAgKQotICAgICkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy9zaWR1Y2tfY2xpZW50LnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL2V4YW1wbGVzL3NpZHVja19jbGllbnQucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDFiNmE1Yjc2ZTBlNzAxODI4MjY3YzMzM2YzMzg0NzZkNWIwZTcyMmEuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1w
bGVzL3NpZHVja19jbGllbnQucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBAQAotaW1w
b3J0IGFyZ3BhcnNlCi1pbXBvcnQgYXN5bmNpbwotaW1wb3J0IGpzb24KLWltcG9ydCBsb2dnaW5n
Ci1pbXBvcnQgc3NsCi1mcm9tIHR5cGluZyBpbXBvcnQgT3B0aW9uYWwsIGNhc3QKLQotZnJvbSBh
aW9xdWljLmFzeW5jaW8uY2xpZW50IGltcG9ydCBjb25uZWN0Ci1mcm9tIGFpb3F1aWMuYXN5bmNp
by5wcm90b2NvbCBpbXBvcnQgUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbAotZnJvbSBhaW9xdWljLnF1
aWMuY29uZmlndXJhdGlvbiBpbXBvcnQgUXVpY0NvbmZpZ3VyYXRpb24KLWZyb20gYWlvcXVpYy5x
dWljLmV2ZW50cyBpbXBvcnQgRGF0YWdyYW1GcmFtZVJlY2VpdmVkLCBRdWljRXZlbnQKLWZyb20g
YWlvcXVpYy5xdWljLmxvZ2dlciBpbXBvcnQgUXVpY0xvZ2dlcgotCi1sb2dnZXIgPSBsb2dnaW5n
LmdldExvZ2dlcigiY2xpZW50IikKLQotCi1jbGFzcyBTaWR1Y2tDbGllbnQoUXVpY0Nvbm5lY3Rp
b25Qcm90b2NvbCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6Ci0g
ICAgICAgIHN1cGVyKCkuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQotICAgICAgICBzZWxmLl9h
Y2tfd2FpdGVyOiBPcHRpb25hbFthc3luY2lvLkZ1dHVyZVtOb25lXV0gPSBOb25lCi0KLSAgICBh
c3luYyBkZWYgcXVhY2soc2VsZikgLT4gTm9uZToKLSAgICAgICAgYXNzZXJ0IHNlbGYuX2Fja193
YWl0ZXIgaXMgTm9uZSwgIk9ubHkgb25lIHF1YWNrIGF0IGEgdGltZS4iCi0gICAgICAgIHNlbGYu
X3F1aWMuc2VuZF9kYXRhZ3JhbV9mcmFtZShiInF1YWNrIikKLQotICAgICAgICB3YWl0ZXIgPSBz
ZWxmLl9sb29wLmNyZWF0ZV9mdXR1cmUoKQotICAgICAgICBzZWxmLl9hY2tfd2FpdGVyID0gd2Fp
dGVyCi0gICAgICAgIHNlbGYudHJhbnNtaXQoKQotCi0gICAgICAgIHJldHVybiBhd2FpdCBhc3lu
Y2lvLnNoaWVsZCh3YWl0ZXIpCi0KLSAgICBkZWYgcXVpY19ldmVudF9yZWNlaXZlZChzZWxmLCBl
dmVudDogUXVpY0V2ZW50KSAtPiBOb25lOgotICAgICAgICBpZiBzZWxmLl9hY2tfd2FpdGVyIGlz
IG5vdCBOb25lOgotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgRGF0YWdyYW1GcmFt
ZVJlY2VpdmVkKSBhbmQgZXZlbnQuZGF0YSA9PSBiInF1YWNrLWFjayI6Ci0gICAgICAgICAgICAg
ICAgd2FpdGVyID0gc2VsZi5fYWNrX3dhaXRlcgotICAgICAgICAgICAgICAgIHNlbGYuX2Fja193
YWl0ZXIgPSBOb25lCi0gICAgICAgICAgICAgICAgd2FpdGVyLnNldF9yZXN1bHQoTm9uZSkKLQot
Ci1hc3luYyBkZWYgcnVuKGNvbmZpZ3VyYXRpb246IFF1aWNDb25maWd1cmF0aW9uLCBob3N0OiBz
dHIsIHBvcnQ6IGludCkgLT4gTm9uZToKLSAgICBhc3luYyB3aXRoIGNvbm5lY3QoCi0gICAgICAg
IGhvc3QsIHBvcnQsIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwgY3JlYXRlX3Byb3RvY29s
PVNpZHVja0NsaWVudAotICAgICkgYXMgY2xpZW50OgotICAgICAgICBjbGllbnQgPSBjYXN0KFNp
ZHVja0NsaWVudCwgY2xpZW50KQotICAgICAgICBsb2dnZXIuaW5mbygic2VuZGluZyBxdWFjayIp
Ci0gICAgICAgIGF3YWl0IGNsaWVudC5xdWFjaygpCi0gICAgICAgIGxvZ2dlci5pbmZvKCJyZWNl
aXZlZCBxdWFjay1hY2siKQotCi0KLWlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgcGFy
c2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249IlNpRFVDSyBjbGllbnQi
KQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCi0gICAgICAgICJob3N0IiwgdHlwZT1zdHIsIGhl
bHA9IlRoZSByZW1vdGUgcGVlcidzIGhvc3QgbmFtZSBvciBJUCBhZGRyZXNzIgotICAgICkKLSAg
ICBwYXJzZXIuYWRkX2FyZ3VtZW50KCJwb3J0IiwgdHlwZT1pbnQsIGhlbHA9IlRoZSByZW1vdGUg
cGVlcidzIHBvcnQgbnVtYmVyIikKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAotICAgICAgICAi
LWsiLAotICAgICAgICAiLS1pbnNlY3VyZSIsCi0gICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIs
Ci0gICAgICAgIGhlbHA9ImRvIG5vdCB2YWxpZGF0ZSBzZXJ2ZXIgY2VydGlmaWNhdGUiLAotICAg
ICkKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAotICAgICAgICAiLXEiLCAiLS1xdWljLWxvZyIs
IHR5cGU9c3RyLCBoZWxwPSJsb2cgUVVJQyBldmVudHMgdG8gYSBmaWxlIGluIFFMT0cgZm9ybWF0
IgotICAgICkKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAotICAgICAgICAiLWwiLAotICAgICAg
ICAiLS1zZWNyZXRzLWxvZyIsCi0gICAgICAgIHR5cGU9c3RyLAotICAgICAgICBoZWxwPSJsb2cg
c2VjcmV0cyB0byBhIGZpbGUsIGZvciB1c2Ugd2l0aCBXaXJlc2hhcmsiLAotICAgICkKLSAgICBw
YXJzZXIuYWRkX2FyZ3VtZW50KAotICAgICAgICAiLXYiLCAiLS12ZXJib3NlIiwgYWN0aW9uPSJz
dG9yZV90cnVlIiwgaGVscD0iaW5jcmVhc2UgbG9nZ2luZyB2ZXJib3NpdHkiCi0gICAgKQotCi0g
ICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKLQotICAgIGxvZ2dpbmcuYmFzaWNDb25maWco
Ci0gICAgICAgIGZvcm1hdD0iJShhc2N0aW1lKXMgJShsZXZlbG5hbWUpcyAlKG5hbWUpcyAlKG1l
c3NhZ2UpcyIsCi0gICAgICAgIGxldmVsPWxvZ2dpbmcuREVCVUcgaWYgYXJncy52ZXJib3NlIGVs
c2UgbG9nZ2luZy5JTkZPLAotICAgICkKLQotICAgIGNvbmZpZ3VyYXRpb24gPSBRdWljQ29uZmln
dXJhdGlvbigKLSAgICAgICAgYWxwbl9wcm90b2NvbHM9WyJzaWR1Y2siXSwgaXNfY2xpZW50PVRy
dWUsIG1heF9kYXRhZ3JhbV9mcmFtZV9zaXplPTY1NTM2Ci0gICAgKQotICAgIGlmIGFyZ3MuaW5z
ZWN1cmU6Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24udmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9OT05F
Ci0gICAgaWYgYXJncy5xdWljX2xvZzoKLSAgICAgICAgY29uZmlndXJhdGlvbi5xdWljX2xvZ2dl
ciA9IFF1aWNMb2dnZXIoKQotICAgIGlmIGFyZ3Muc2VjcmV0c19sb2c6Ci0gICAgICAgIGNvbmZp
Z3VyYXRpb24uc2VjcmV0c19sb2dfZmlsZSA9IG9wZW4oYXJncy5zZWNyZXRzX2xvZywgImEiKQot
Ci0gICAgbG9vcCA9IGFzeW5jaW8uZ2V0X2V2ZW50X2xvb3AoKQotICAgIHRyeToKLSAgICAgICAg
bG9vcC5ydW5fdW50aWxfY29tcGxldGUoCi0gICAgICAgICAgICBydW4oY29uZmlndXJhdGlvbj1j
b25maWd1cmF0aW9uLCBob3N0PWFyZ3MuaG9zdCwgcG9ydD1hcmdzLnBvcnQpCi0gICAgICAgICkK
LSAgICBmaW5hbGx5OgotICAgICAgICBpZiBjb25maWd1cmF0aW9uLnF1aWNfbG9nZ2VyIGlzIG5v
dCBOb25lOgotICAgICAgICAgICAgd2l0aCBvcGVuKGFyZ3MucXVpY19sb2csICJ3IikgYXMgbG9n
Z2VyX2ZwOgotICAgICAgICAgICAgICAgIGpzb24uZHVtcChjb25maWd1cmF0aW9uLnF1aWNfbG9n
Z2VyLnRvX2RpY3QoKSwgbG9nZ2VyX2ZwLCBpbmRlbnQ9NCkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy9leGFtcGxlcy90ZW1wbGF0ZXMvaW5kZXguaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxl
cy90ZW1wbGF0ZXMvaW5kZXguaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDA4
NTQ4N2U4NDA4MTAzNzY1MzRiYzQyOGQ1MTAyYjRlZThhNjJlOC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvdGVtcGxh
dGVzL2luZGV4Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi08IURPQ1RZUEUg
aHRtbD4KLTxodG1sPgotICAgIDxoZWFkPgotICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCIv
PgotICAgICAgICA8dGl0bGU+YWlvcXVpYzwvdGl0bGU+Ci0gICAgICAgIDxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iL3N0eWxlLmNzcyIvPgotICAgIDwvaGVhZD4KLSAgICA8Ym9keT4KLSAg
ICAgICAgPGgxPldlbGNvbWUgdG8gYWlvcXVpYzwvaDE+Ci0gICAgICAgIDxwPgotICAgICAgICAg
ICAgVGhpcyBpcyBhIHRlc3QgcGFnZSBmb3IgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2Fp
b3J0Yy9haW9xdWljLyI+YWlvcXVpYzwvYT4sCi0gICAgICAgICAgICBhIFFVSUMgYW5kIEhUVFAv
MyBpbXBsZW1lbnRhdGlvbiB3cml0dGVuIGluIFB5dGhvbi4KLSAgICAgICAgPC9wPgoteyUgaWYg
cmVxdWVzdC5zY29wZVsiaHR0cF92ZXJzaW9uIl0gPT0gIjMiICV9Ci0gICAgICAgIDxwPgotICAg
ICAgICAgICAgQ29uZ3JhdHVsYXRpb25zLCB5b3UgbG9hZGVkIHRoaXMgcGFnZSB1c2luZyBIVFRQ
LzMhCi0gICAgICAgIDwvcD4KLXslIGVuZGlmICV9Ci0gICAgICAgIDxoMj5BdmFpbGFibGUgZW5k
cG9pbnRzPC9oMj4KLSAgICAgICAgPHVsPgotICAgICAgICAgICAgPGxpPjxzdHJvbmc+R0VUIC88
L3N0cm9uZz4gcmV0dXJucyB0aGUgaG9tZXBhZ2U8L2xpPgotICAgICAgICAgICAgPGxpPjxzdHJv
bmc+R0VUIC9OTk5OTjwvc3Ryb25nPiByZXR1cm5zIE5OTk5OIGJ5dGVzIG9mIHBsYWluIHRleHQ8
L2xpPgotICAgICAgICAgICAgPGxpPjxzdHJvbmc+UE9TVCAvZWNobzwvc3Ryb25nPiByZXR1cm5z
IHRoZSByZXF1ZXN0IGRhdGE8L2xpPgotICAgICAgICAgICAgPGxpPgotICAgICAgICAgICAgICAg
IDxzdHJvbmc+Q09OTkVDVCAvd3M8L3N0cm9uZz4gcnVucyBhIFdlYlNvY2tldCBlY2hvIHNlcnZp
Y2UuCi0gICAgICAgICAgICAgICAgWW91IG11c3Qgc2V0IHRoZSA8ZW0+OnByb3RvY29sPC9lbT4g
cHNldWRvLWhlYWRlciB0byA8ZW0+IndlYnNvY2tldCI8L2VtPi4KLSAgICAgICAgICAgIDwvbGk+
Ci0gICAgICAgICAgICA8bGk+VGhlcmUgaXMgYWxzbyBhbiA8YSBocmVmPSIvaHR0cGJpbi8iPmh0
dHBiaW4gaW5zdGFuY2U8L2E+LjwvbGk+Ci0gICAgICAgIDwvdWw+Ci0gICAgPC9ib2R5PgotPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL3RlbXBsYXRlcy9sb2dzLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvdGVtcGxhdGVzL2xvZ3MuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNzA5OWY2N2RjYTIyYzU3ZmJjOTFkOGQxOWEwZDZhODhmM2Mx
YjlmNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvZXhhbXBsZXMvdGVtcGxhdGVzL2xvZ3MuaHRtbAorKysgL2Rldi9udWxsCkBAIC0x
LDI4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci0gICAgPGhlYWQ+Ci0gICAgICAg
IDxtZXRhIGNoYXJzZXQ9InV0Zi04Ii8+Ci0gICAgICAgIDx0aXRsZT5haW9xdWljIC0gbG9nczwv
dGl0bGU+Ci0gICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL3N0eWxlLmNzcyIv
PgotICAgIDwvaGVhZD4KLSAgICA8Ym9keT4KLSAgICAgICAgPGgxPlFMT0cgZmlsZXM8L2gxPgot
ICAgICAgICA8dGFibGUgY2xhc3M9ImxvZ3MiPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgICA8
dGg+bmFtZTwvdGg+Ci0gICAgICAgICAgICA8dGg+ZGF0ZSAoVVRDKTwvdGg+Ci0gICAgICAgICAg
ICA8dGg+c2l6ZTwvdGg+Ci0gICAgICAgIDwvdHI+Ci17JSBmb3IgbG9nIGluIGxvZ3MgJX0KLSAg
ICAgICAgPHRyPgotICAgICAgICAgICAgPHRkIGNsYXNzPSJuYW1lIj4KLSAgICAgICAgICAgICAg
ICA8YSBocmVmPSJ7eyBsb2cuZmlsZV91cmwgfX0iPnt7IGxvZy5uYW1lIH19PC9hPgotICAgICAg
ICAgICAgICAgIDxhIGhyZWY9Int7IGxvZy5xdmlzX3VybCB9fSI+W3F2aXNdPC9hPgotICAgICAg
ICAgICAgPC90ZD4KLSAgICAgICAgICAgIDx0ZCBjbGFzcz0iZGF0ZSI+e3sgbG9nLmRhdGUgfX08
L3RkPgotICAgICAgICAgICAgPHRkIGNsYXNzPSJzaXplIj57eyBsb2cuc2l6ZSB9fTwvdGQ+Ci0g
ICAgICAgIDwvdHI+Ci17JSBlbmRmb3IgJX0KLSAgICAgICAgPC90YWJsZT4KLSAgICA8L2JvZHk+
Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvdGVtcGxhdGVzL3cz
Yy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL3RlbXBsYXRlcy93M2MtaW1wb3J0
LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzZiYjlkMzY0ZDdjZGMwMmYyNjQz
ZTNkN2JkZDc0ODIxYmY0NDY4My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvdGVtcGxhdGVzL3czYy1pbXBvcnQubG9n
CisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0
b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5
IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwg
cmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRm
b3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRl
c3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlz
IGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6
Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4
YW1wbGVzL3RlbXBsYXRlcy9pbmRleC5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL3RlbXBs
YXRlcy9sb2dzLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy93M2MtaW1w
b3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy9leGFtcGxlcy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggOTBiYTZkMTI0Y2JiOThlODBmNzk0ZmVjYTVlNmQ5YjNhNTJm
Mzg1ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvZXhhbXBsZXMvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyNSAr
MCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRo
ZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4g
V2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHVi
OgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVu
IHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0
Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2
YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
TGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvUkVBRE1FLnJzdAotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9leGFtcGxlcy9kZW1vLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2RvcV9jbGll
bnQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvZG9xX3NlcnZlci5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy9leGFtcGxlcy9odHRwM19jbGllbnQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvZXhhbXBsZXMvaHR0cDNf
c2VydmVyLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL2h0dHB4X2NsaWVudC5weQotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9leGFtcGxlcy9pbnRlcm9wLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL2V4YW1wbGVzL3NpZHVj
a19jbGllbnQucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9yZXF1aXJlbWVudHMvZG9jLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy9yZXF1aXJlbWVudHMvZG9jLnR4dApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNmMzM2EzOTc4NzRjNjUzYzkxYTIwYTBiOTI1NjczZDVjNDljN2I4OS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
cmVxdWlyZW1lbnRzL2RvYy50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLWNyeXB0
b2dyYXBoeQotc3BoaW54X2F1dG9kb2NfdHlwZWhpbnRzCi1zcGhpbnhjb250cmliLWFzeW5jaW8K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9yZXF1aXJlbWVudHMvdzNjLWltcG9ydC5sb2cgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvcmVxdWlyZW1lbnRzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA5ZWUyMmU3NGJkMjFhOTQ2N2NmMTY2ZDk0MDRjNjI2OWEwOWQ1YTBjLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy9yZXF1aXJlbWVudHMvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCww
IEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBX
M0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2Vi
S2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgot
CWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRo
ZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0K
LURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Q
cm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1
ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlz
dCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvcmVxdWlyZW1lbnRzL2RvYy50eHQKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy9zY3JpcHRzL2ZldGNoLXZlbmRvciBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zY3Jp
cHRzL2ZldGNoLXZlbmRvcgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTA2ZDYyMzcx
NDc4ZDQyN2M5NWY1MjI1ZGI0MzAwZjdhMWE4NTgyMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc2NyaXB0cy9mZXRjaC12ZW5kb3IK
KysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLQot
aW1wb3J0IGFyZ3BhcnNlCi1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IGpzb24KLWltcG9ydCBvcwot
aW1wb3J0IHNodXRpbAotaW1wb3J0IHN0cnVjdAotaW1wb3J0IHN1YnByb2Nlc3MKLWltcG9ydCBz
eXMKLQotCi1kZWYgZ2V0X3BsYXRmb3JtKCk6Ci0gICAgaWYgc3lzLnBsYXRmb3JtID09ICJsaW51
eCI6Ci0gICAgICAgIHJldHVybiAibWFueWxpbnV4XyVzIiAlIG9zLnVuYW1lKCkubWFjaGluZQot
ICAgIGVsaWYgc3lzLnBsYXRmb3JtID09ICJkYXJ3aW4iOgotICAgICAgICByZXR1cm4gIm1hY29z
eF8lcyIgJSBvcy51bmFtZSgpLm1hY2hpbmUKLSAgICBlbGlmIHN5cy5wbGF0Zm9ybSA9PSAid2lu
MzIiOgotICAgICAgICByZXR1cm4gIndpbiVzIiAlIChzdHJ1Y3QuY2FsY3NpemUoIlAiKSAqIDgp
Ci0gICAgZWxzZToKLSAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJVbnN1cHBvcnRlZCBwbGF0Zm9t
ICVzIiAlIHN5cy5wbGF0Zm9ybSkKLQotCi1wYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNl
cihkZXNjcmlwdGlvbj0iRmV0Y2ggYW5kIGV4dHJhY3QgdGFyYmFsbHMiKQotcGFyc2VyLmFkZF9h
cmd1bWVudCgiZGVzdGluYXRpb25fZGlyIikKLXBhcnNlci5hZGRfYXJndW1lbnQoIi0tY2FjaGUt
ZGlyIiwgZGVmYXVsdD0idGFyYmFsbHMiKQotcGFyc2VyLmFkZF9hcmd1bWVudCgiLS1jb25maWct
ZmlsZSIsIGRlZmF1bHQ9X19maWxlX18gKyAiLmpzb24iKQotYXJncyA9IHBhcnNlci5wYXJzZV9h
cmdzKCkKLWxvZ2dpbmcuYmFzaWNDb25maWcobGV2ZWw9bG9nZ2luZy5JTkZPKQotCi0jIHdvcmsg
YXJvdW5kIGJ1Z2d5ICd0YXInIGV4ZWN1dGFibGUgb24gV2luZG93cwotaWYgc3lzLnBsYXRmb3Jt
ID09ICJ3aW4zMiI6Ci0gICAgb3MuZW52aXJvblsiUEFUSCJdID0gIkM6XFxQcm9ncmFtIEZpbGVz
XFxHaXRcXHVzclxcYmluOyIgKyBvcy5lbnZpcm9uWyJQQVRIIl0KLQotIyByZWFkIGNvbmZpZyBm
aWxlCi13aXRoIG9wZW4oYXJncy5jb25maWdfZmlsZSwgInIiKSBhcyBmcDoKLSAgICBjb25maWcg
PSBqc29uLmxvYWQoZnApCi0KLSMgY3JlYXRlIGZyZXNoIGRlc3RpbmF0aW9uIGRpcmVjdG9yeQot
bG9nZ2luZy5pbmZvKCJDcmVhdGluZyBkaXJlY3RvcnkgJXMiICUgYXJncy5kZXN0aW5hdGlvbl9k
aXIpCi1pZiBvcy5wYXRoLmV4aXN0cyhhcmdzLmRlc3RpbmF0aW9uX2Rpcik6Ci0gICAgc2h1dGls
LnJtdHJlZShhcmdzLmRlc3RpbmF0aW9uX2RpcikKLW9zLm1rZGlyKGFyZ3MuZGVzdGluYXRpb25f
ZGlyKQotCi1mb3IgdXJsX3RlbXBsYXRlIGluIGNvbmZpZ1sidXJscyJdOgotICAgIHRhcmJhbGxf
dXJsID0gdXJsX3RlbXBsYXRlLnJlcGxhY2UoIntwbGF0Zm9ybX0iLCBnZXRfcGxhdGZvcm0oKSkK
LQotICAgICMgZG93bmxvYWQgdGFyYmFsbAotICAgIHRhcmJhbGxfbmFtZSA9IHRhcmJhbGxfdXJs
LnNwbGl0KCIvIilbLTFdCi0gICAgdGFyYmFsbF9maWxlID0gb3MucGF0aC5qb2luKGFyZ3MuY2Fj
aGVfZGlyLCB0YXJiYWxsX25hbWUpCi0gICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHRhcmJhbGxf
ZmlsZSk6Ci0gICAgICAgIGxvZ2dpbmcuaW5mbygiRG93bmxvYWRpbmcgJXMiICUgdGFyYmFsbF91
cmwpCi0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhhcmdzLmNhY2hlX2Rpcik6Ci0gICAg
ICAgICAgICBvcy5ta2RpcihhcmdzLmNhY2hlX2RpcikKLSAgICAgICAgc3VicHJvY2Vzcy5jaGVj
a19jYWxsKAotICAgICAgICAgICAgWyJjdXJsIiwgIi0tbG9jYXRpb24iLCAiLS1vdXRwdXQiLCB0
YXJiYWxsX2ZpbGUsICItLXNpbGVudCIsIHRhcmJhbGxfdXJsXQotICAgICAgICApCi0KLSAgICAj
IGV4dHJhY3QgdGFyYmFsbAotICAgIGxvZ2dpbmcuaW5mbygiRXh0cmFjdGluZyAlcyIgJSB0YXJi
YWxsX25hbWUpCi0gICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKFsidGFyIiwgIi1DIiwgYXJncy5k
ZXN0aW5hdGlvbl9kaXIsICIteGYiLCB0YXJiYWxsX2ZpbGVdKQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3NjcmlwdHMvZmV0Y2gtdmVuZG9yLmpzb24gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc2NyaXB0cy9m
ZXRjaC12ZW5kb3IuanNvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjI4MDIzNWJl
YjAzODQ4YTM0ODZhYTk3YjFjMzlmNDZmOWI5MjdjZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc2NyaXB0cy9mZXRjaC12ZW5kb3Iu
anNvbgorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotewotICAgICJ1cmxzIjogWyJodHRw
czovL2dpdGh1Yi5jb20vYWlvcnRjL2Fpb3F1aWMtb3BlbnNzbC9yZWxlYXNlcy9kb3dubG9hZC8x
LjEuMWYtMS9vcGVuc3NsLXtwbGF0Zm9ybX0udGFyLmJ6MiJdCi19CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvc2NyaXB0cy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zY3JpcHRzL3cz
Yy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYmE5YTlkNDA0NjMw
ZWZiMWJhOGNhNDk1YTliMzNiZGQ2N2E1ZjdhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zY3JpcHRzL3czYy1pbXBvcnQubG9nCisr
KyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5
IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRo
ZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVx
dWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3Jt
LXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3Rz
IGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZp
bGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZp
eGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1O
b25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Njcmlw
dHMvZmV0Y2gtdmVuZG9yCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NjcmlwdHMvZmV0Y2gtdmVuZG9yLmpzb24K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zZXR1cC5jZmcgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc2V0dXAu
Y2ZnCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OWMwMjVhZDBmNzMzYjM4YmI5NGY4
YmI4ZWIwNDc4NWRhM2I0ZjQ5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zZXR1cC5jZmcKKysrIC9kZXYvbnVsbApAQCAtMSwyMSAr
MCwwIEBACi1bY292ZXJhZ2U6cnVuXQotc291cmNlID0gYWlvcXVpYwotCi1bZmxha2U4XQotaWdu
b3JlPUUyMDMsVzUwMwotbWF4LWxpbmUtbGVuZ3RoPTE1MAotCi1baXNvcnRdCi1kZWZhdWx0X3Nl
Y3Rpb24gPSBUSElSRFBBUlRZCi1pbmNsdWRlX3RyYWlsaW5nX2NvbW1hID0gVHJ1ZQota25vd25f
Zmlyc3RfcGFydHkgPSBhaW9xdWljCi1saW5lX2xlbmd0aCA9IDg4Ci1tdWx0aV9saW5lX291dHB1
dCA9IDMKLQotW215cHldCi1kaXNhbGxvd191bnR5cGVkX2NhbGxzID0gVHJ1ZQotZGlzYWxsb3df
dW50eXBlZF9kZWNvcmF0b3JzID0gVHJ1ZQotaWdub3JlX21pc3NpbmdfaW1wb3J0cyA9IFRydWUK
LXN0cmljdF9vcHRpb25hbCA9IEZhbHNlCi13YXJuX3JlZHVuZGFudF9jYXN0cyA9IFRydWUKLXdh
cm5fdW51c2VkX2lnbm9yZXMgPSBUcnVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc2V0dXAu
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvc2V0dXAucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGE1YzVlYTNjNDQzZjBkMWJjZGJiZWYxYTI5MmVkMDQ3NDRlYjk2YjkuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NldHVwLnB5Cisr
KyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotaW1wb3J0IG9zLnBhdGgKLWltcG9ydCBzeXMK
LQotaW1wb3J0IHNldHVwdG9vbHMKLQotcm9vdF9kaXIgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0
aC5kaXJuYW1lKF9fZmlsZV9fKSkKLQotYWJvdXQgPSB7fQotYWJvdXRfZmlsZSA9IG9zLnBhdGgu
am9pbihyb290X2RpciwgInNyYyIsICJhaW9xdWljIiwgImFib3V0LnB5IikKLXdpdGggb3Blbihh
Ym91dF9maWxlLCBlbmNvZGluZz0idXRmLTgiKSBhcyBmcDoKLSAgICBleGVjKGZwLnJlYWQoKSwg
YWJvdXQpCi0KLXJlYWRtZV9maWxlID0gb3MucGF0aC5qb2luKHJvb3RfZGlyLCAiUkVBRE1FLnJz
dCIpCi13aXRoIG9wZW4ocmVhZG1lX2ZpbGUsIGVuY29kaW5nPSJ1dGYtOCIpIGFzIGY6Ci0gICAg
bG9uZ19kZXNjcmlwdGlvbiA9IGYucmVhZCgpCi0KLWlmIHN5cy5wbGF0Zm9ybSA9PSAid2luMzIi
OgotICAgIGV4dHJhX2NvbXBpbGVfYXJncyA9IFtdCi0gICAgbGlicmFyaWVzID0gWyJsaWJjcnlw
dG8iLCAiYWR2YXBpMzIiLCAiY3J5cHQzMiIsICJnZGkzMiIsICJ1c2VyMzIiLCAid3MyXzMyIl0K
LWVsc2U6Ci0gICAgZXh0cmFfY29tcGlsZV9hcmdzID0gWyItc3RkPWM5OSJdCi0gICAgbGlicmFy
aWVzID0gWyJjcnlwdG8iXQotCi1zZXR1cHRvb2xzLnNldHVwKAotICAgIG5hbWU9YWJvdXRbIl9f
dGl0bGVfXyJdLAotICAgIHZlcnNpb249YWJvdXRbIl9fdmVyc2lvbl9fIl0sCi0gICAgZGVzY3Jp
cHRpb249YWJvdXRbIl9fc3VtbWFyeV9fIl0sCi0gICAgbG9uZ19kZXNjcmlwdGlvbj1sb25nX2Rl
c2NyaXB0aW9uLAotICAgIHVybD1hYm91dFsiX191cmlfXyJdLAotICAgIGF1dGhvcj1hYm91dFsi
X19hdXRob3JfXyJdLAotICAgIGF1dGhvcl9lbWFpbD1hYm91dFsiX19lbWFpbF9fIl0sCi0gICAg
bGljZW5zZT1hYm91dFsiX19saWNlbnNlX18iXSwKLSAgICBpbmNsdWRlX3BhY2thZ2VfZGF0YT1U
cnVlLAotICAgIGNsYXNzaWZpZXJzPVsKLSAgICAgICAgIkRldmVsb3BtZW50IFN0YXR1cyA6OiA0
IC0gQmV0YSIsCi0gICAgICAgICJFbnZpcm9ubWVudCA6OiBXZWIgRW52aXJvbm1lbnQiLAotICAg
ICAgICAiSW50ZW5kZWQgQXVkaWVuY2UgOjogRGV2ZWxvcGVycyIsCi0gICAgICAgICJMaWNlbnNl
IDo6IE9TSSBBcHByb3ZlZCA6OiBCU0QgTGljZW5zZSIsCi0gICAgICAgICJPcGVyYXRpbmcgU3lz
dGVtIDo6IE9TIEluZGVwZW5kZW50IiwKLSAgICAgICAgIlByb2dyYW1taW5nIExhbmd1YWdlIDo6
IFB5dGhvbiIsCi0gICAgICAgICJQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMyIs
Ci0gICAgICAgICJQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMy42IiwKLSAgICAg
ICAgIlByb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAzLjciLAotICAgICAgICAiUHJv
Z3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMuOCIsCi0gICAgICAgICJUb3BpYyA6OiBJ
bnRlcm5ldCA6OiBXV1cvSFRUUCIsCi0gICAgXSwKLSAgICBleHRfbW9kdWxlcz1bCi0gICAgICAg
IHNldHVwdG9vbHMuRXh0ZW5zaW9uKAotICAgICAgICAgICAgImFpb3F1aWMuX2J1ZmZlciIsCi0g
ICAgICAgICAgICBleHRyYV9jb21waWxlX2FyZ3M9ZXh0cmFfY29tcGlsZV9hcmdzLAotICAgICAg
ICAgICAgc291cmNlcz1bInNyYy9haW9xdWljL19idWZmZXIuYyJdLAotICAgICAgICApLAotICAg
ICAgICBzZXR1cHRvb2xzLkV4dGVuc2lvbigKLSAgICAgICAgICAgICJhaW9xdWljLl9jcnlwdG8i
LAotICAgICAgICAgICAgZXh0cmFfY29tcGlsZV9hcmdzPWV4dHJhX2NvbXBpbGVfYXJncywKLSAg
ICAgICAgICAgIGxpYnJhcmllcz1saWJyYXJpZXMsCi0gICAgICAgICAgICBzb3VyY2VzPVsic3Jj
L2Fpb3F1aWMvX2NyeXB0by5jIl0sCi0gICAgICAgICksCi0gICAgXSwKLSAgICBwYWNrYWdlX2Rp
cj17IiI6ICJzcmMifSwKLSAgICBwYWNrYWdlX2RhdGE9eyJhaW9xdWljIjogWyJweS50eXBlZCIs
ICJfYnVmZmVyLnB5aSIsICJfY3J5cHRvLnB5aSJdfSwKLSAgICBwYWNrYWdlcz1bImFpb3F1aWMi
LCAiYWlvcXVpYy5hc3luY2lvIiwgImFpb3F1aWMuaDAiLCAiYWlvcXVpYy5oMyIsICJhaW9xdWlj
LnF1aWMiXSwKLSAgICBpbnN0YWxsX3JlcXVpcmVzPVsKLSAgICAgICAgImNlcnRpZmkiLAotICAg
ICAgICAiY3J5cHRvZ3JhcGh5ID49IDIuNSIsCi0gICAgICAgICdkYXRhY2xhc3NlczsgcHl0aG9u
X3ZlcnNpb24gPCAiMy43IicsCi0gICAgICAgICJweWxzcXBhY2sgPj0gMC4zLjMsIDwgMC40LjAi
LAotICAgIF0sCi0pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvX19pbml0
X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvX19pbml0X18ucHkKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDA0YWNlYmVlZjgzZWE0MTg5YmZhZTRjYTlmMDgwZDIzZDg3N2E4
YjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3NyYy9haW9xdWljL19faW5pdF9fLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCww
IEBACi0jIGZsYWtlODogbm9xYQotCi1mcm9tIC5hYm91dCBpbXBvcnQgX192ZXJzaW9uX18KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9fYnVmZmVyLmMgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvc3JjL2Fpb3F1aWMvX2J1ZmZlci5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBl
ZWZjNGRiODE3NTkwYmU4ZDczNmIzMjY0NmQ0Y2ZmNDFjOWY2NDY5Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9f
YnVmZmVyLmMKKysrIC9kZXYvbnVsbApAQCAtMSw0NDAgKzAsMCBAQAotI2RlZmluZSBQWV9TU0la
RV9UX0NMRUFOCi0KLSNpbmNsdWRlIDxQeXRob24uaD4KLSNpbmNsdWRlIDxzdGRpbnQuaD4KLQot
I2RlZmluZSBNT0RVTEVfTkFNRSAiYWlvcXVpYy5fYnVmZmVyIgotCi1zdGF0aWMgUHlPYmplY3Qg
KkJ1ZmZlclJlYWRFcnJvcjsKLXN0YXRpYyBQeU9iamVjdCAqQnVmZmVyV3JpdGVFcnJvcjsKLQot
dHlwZWRlZiBzdHJ1Y3QgewotICAgIFB5T2JqZWN0X0hFQUQKLSAgICB1aW50OF90ICpiYXNlOwot
ICAgIHVpbnQ4X3QgKmVuZDsKLSAgICB1aW50OF90ICpwb3M7Ci19IEJ1ZmZlck9iamVjdDsKLQot
I2RlZmluZSBDSEVDS19SRUFEX0JPVU5EUyhzZWxmLCBsZW4pIFwKLSAgICBpZiAobGVuIDwgMCB8
fCBzZWxmLT5wb3MgKyBsZW4gPiBzZWxmLT5lbmQpIHsgXAotICAgICAgICBQeUVycl9TZXRTdHJp
bmcoQnVmZmVyUmVhZEVycm9yLCAiUmVhZCBvdXQgb2YgYm91bmRzIik7IFwKLSAgICAgICAgcmV0
dXJuIE5VTEw7IFwKLSAgICB9Ci0KLSNkZWZpbmUgQ0hFQ0tfV1JJVEVfQk9VTkRTKHNlbGYsIGxl
bikgXAotICAgIGlmIChzZWxmLT5wb3MgKyBsZW4gPiBzZWxmLT5lbmQpIHsgXAotICAgICAgICBQ
eUVycl9TZXRTdHJpbmcoQnVmZmVyV3JpdGVFcnJvciwgIldyaXRlIG91dCBvZiBib3VuZHMiKTsg
XAotICAgICAgICByZXR1cm4gTlVMTDsgXAotICAgIH0KLQotc3RhdGljIGludAotQnVmZmVyX2lu
aXQoQnVmZmVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykK
LXsKLSAgICBjb25zdCBjaGFyICprd2xpc3RbXSA9IHsiY2FwYWNpdHkiLCAiZGF0YSIsIE5VTEx9
OwotICAgIGludCBjYXBhY2l0eSA9IDA7Ci0gICAgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSA9
IE5VTEw7Ci0gICAgUHlfc3NpemVfdCBkYXRhX2xlbiA9IDA7Ci0KLSAgICBpZiAoIVB5QXJnX1Bh
cnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8aXkjIiwgKGNoYXIqKilrd2xpc3Qs
ICZjYXBhY2l0eSwgJmRhdGEsICZkYXRhX2xlbikpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAg
IGlmIChkYXRhICE9IE5VTEwpIHsKLSAgICAgICAgc2VsZi0+YmFzZSA9IG1hbGxvYyhkYXRhX2xl
bik7Ci0gICAgICAgIHNlbGYtPmVuZCA9IHNlbGYtPmJhc2UgKyBkYXRhX2xlbjsKLSAgICAgICAg
bWVtY3B5KHNlbGYtPmJhc2UsIGRhdGEsIGRhdGFfbGVuKTsKLSAgICB9IGVsc2UgewotICAgICAg
ICBzZWxmLT5iYXNlID0gbWFsbG9jKGNhcGFjaXR5KTsKLSAgICAgICAgc2VsZi0+ZW5kID0gc2Vs
Zi0+YmFzZSArIGNhcGFjaXR5OwotICAgIH0KLSAgICBzZWxmLT5wb3MgPSBzZWxmLT5iYXNlOwot
ICAgIHJldHVybiAwOwotfQotCi1zdGF0aWMgdm9pZAotQnVmZmVyX2RlYWxsb2MoQnVmZmVyT2Jq
ZWN0ICpzZWxmKQotewotICAgIGZyZWUoc2VsZi0+YmFzZSk7Ci19Ci0KLXN0YXRpYyBQeU9iamVj
dCAqCi1CdWZmZXJfZGF0YV9zbGljZShCdWZmZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdz
KQotewotICAgIGludCBzdGFydCwgc3RvcDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJn
cywgImlpIiwgJnN0YXJ0LCAmc3RvcCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYg
KHN0YXJ0IDwgMCB8fCBzZWxmLT5iYXNlICsgc3RhcnQgPiBzZWxmLT5lbmQgfHwKLSAgICAgICAg
c3RvcCA8IDAgfHwgc2VsZi0+YmFzZSArIHN0b3AgPiBzZWxmLT5lbmQgfHwKLSAgICAgICAgc3Rv
cCA8IHN0YXJ0KSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhCdWZmZXJSZWFkRXJyb3IsICJS
ZWFkIG91dCBvZiBib3VuZHMiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAg
cmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNvbnN0IGNoYXIqKShzZWxmLT5iYXNl
ICsgc3RhcnQpLCAoc3RvcCAtIHN0YXJ0KSk7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1CdWZm
ZXJfZW9mKEJ1ZmZlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgaWYgKHNl
bGYtPnBvcyA9PSBzZWxmLT5lbmQpCi0gICAgICAgIFB5X1JFVFVSTl9UUlVFOwotICAgIFB5X1JF
VFVSTl9GQUxTRTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLUJ1ZmZlcl9wdWxsX2J5dGVzKEJ1
ZmZlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgaW50IGxlbjsKLSAgICBp
ZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImkiLCAmbGVuKSkKLSAgICAgICAgcmV0dXJuIE5V
TEw7Ci0KLSAgICBDSEVDS19SRUFEX0JPVU5EUyhzZWxmLCBsZW4pOwotCi0gICAgUHlPYmplY3Qg
Km8gPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyKilzZWxmLT5wb3MsIGxl
bik7Ci0gICAgc2VsZi0+cG9zICs9IGxlbjsKLSAgICByZXR1cm4gbzsKLX0KLQotc3RhdGljIFB5
T2JqZWN0ICoKLUJ1ZmZlcl9wdWxsX3VpbnQ4KEJ1ZmZlck9iamVjdCAqc2VsZiwgUHlPYmplY3Qg
KmFyZ3MpCi17Ci0gICAgQ0hFQ0tfUkVBRF9CT1VORFMoc2VsZiwgMSkKLQotICAgIHJldHVybiBQ
eUxvbmdfRnJvbVVuc2lnbmVkTG9uZygKLSAgICAgICAgKHVpbnQ4X3QpKCooc2VsZi0+cG9zKysp
KQotICAgICk7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1CdWZmZXJfcHVsbF91aW50MTYoQnVm
ZmVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBDSEVDS19SRUFEX0JPVU5E
UyhzZWxmLCAyKQotCi0gICAgdWludDE2X3QgdmFsdWUgPSAodWludDE2X3QpKCooc2VsZi0+cG9z
KSkgPDwgOCB8Ci0gICAgICAgICAgICAgICAgICAgICAodWludDE2X3QpKCooc2VsZi0+cG9zICsg
MSkpOwotICAgIHNlbGYtPnBvcyArPSAyOwotICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVk
TG9uZyh2YWx1ZSk7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1CdWZmZXJfcHVsbF91aW50MzIo
QnVmZmVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBDSEVDS19SRUFEX0JP
VU5EUyhzZWxmLCA0KQotCi0gICAgdWludDMyX3QgdmFsdWUgPSAodWludDMyX3QpKCooc2VsZi0+
cG9zKSkgPDwgMjQgfAotICAgICAgICAgICAgICAgICAgICAgKHVpbnQzMl90KSgqKHNlbGYtPnBv
cyArIDEpKSA8PCAxNiB8Ci0gICAgICAgICAgICAgICAgICAgICAodWludDMyX3QpKCooc2VsZi0+
cG9zICsgMikpIDw8IDggfAotICAgICAgICAgICAgICAgICAgICAgKHVpbnQzMl90KSgqKHNlbGYt
PnBvcyArIDMpKTsKLSAgICBzZWxmLT5wb3MgKz0gNDsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21V
bnNpZ25lZExvbmcodmFsdWUpOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotQnVmZmVyX3B1bGxf
dWludDY0KEJ1ZmZlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgQ0hFQ0tf
UkVBRF9CT1VORFMoc2VsZiwgOCkKLQotICAgIHVpbnQ2NF90IHZhbHVlID0gKHVpbnQ2NF90KSgq
KHNlbGYtPnBvcykpIDw8IDU2IHwKLSAgICAgICAgICAgICAgICAgICAgICh1aW50NjRfdCkoKihz
ZWxmLT5wb3MgKyAxKSkgPDwgNDggfAotICAgICAgICAgICAgICAgICAgICAgKHVpbnQ2NF90KSgq
KHNlbGYtPnBvcyArIDIpKSA8PCA0MCB8Ci0gICAgICAgICAgICAgICAgICAgICAodWludDY0X3Qp
KCooc2VsZi0+cG9zICsgMykpIDw8IDMyIHwKLSAgICAgICAgICAgICAgICAgICAgICh1aW50NjRf
dCkoKihzZWxmLT5wb3MgKyA0KSkgPDwgMjQgfAotICAgICAgICAgICAgICAgICAgICAgKHVpbnQ2
NF90KSgqKHNlbGYtPnBvcyArIDUpKSA8PCAxNiB8Ci0gICAgICAgICAgICAgICAgICAgICAodWlu
dDY0X3QpKCooc2VsZi0+cG9zICsgNikpIDw8IDggfAotICAgICAgICAgICAgICAgICAgICAgKHVp
bnQ2NF90KSgqKHNlbGYtPnBvcyArIDcpKTsKLSAgICBzZWxmLT5wb3MgKz0gODsKLSAgICByZXR1
cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKHZhbHVlKTsKLX0KLQotc3RhdGljIFB5T2Jq
ZWN0ICoKLUJ1ZmZlcl9wdWxsX3VpbnRfdmFyKEJ1ZmZlck9iamVjdCAqc2VsZiwgUHlPYmplY3Qg
KmFyZ3MpCi17Ci0gICAgdWludDY0X3QgdmFsdWU7Ci0gICAgQ0hFQ0tfUkVBRF9CT1VORFMoc2Vs
ZiwgMSkKLSAgICBzd2l0Y2ggKCooc2VsZi0+cG9zKSA+PiA2KSB7Ci0gICAgY2FzZSAwOgotICAg
ICAgICB2YWx1ZSA9ICooc2VsZi0+cG9zKyspICYgMHgzRjsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSAxOgotICAgICAgICBDSEVDS19SRUFEX0JPVU5EUyhzZWxmLCAyKQotICAgICAgICB2YWx1
ZSA9ICh1aW50MTZfdCkoKihzZWxmLT5wb3MpICYgMHgzRikgPDwgOCB8Ci0gICAgICAgICAgICAg
ICAgKHVpbnQxNl90KSgqKHNlbGYtPnBvcyArIDEpKTsKLSAgICAgICAgc2VsZi0+cG9zICs9IDI7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgMjoKLSAgICAgICAgQ0hFQ0tfUkVBRF9CT1VORFMo
c2VsZiwgNCkKLSAgICAgICAgdmFsdWUgPSAodWludDMyX3QpKCooc2VsZi0+cG9zKSAmIDB4M0Yp
IDw8IDI0IHwKLSAgICAgICAgICAgICAgICAodWludDMyX3QpKCooc2VsZi0+cG9zICsgMSkpIDw8
IDE2IHwKLSAgICAgICAgICAgICAgICAodWludDMyX3QpKCooc2VsZi0+cG9zICsgMikpIDw8IDgg
fAotICAgICAgICAgICAgICAgICh1aW50MzJfdCkoKihzZWxmLT5wb3MgKyAzKSk7Ci0gICAgICAg
IHNlbGYtPnBvcyArPSA0OwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBD
SEVDS19SRUFEX0JPVU5EUyhzZWxmLCA4KQotICAgICAgICB2YWx1ZSA9ICh1aW50NjRfdCkoKihz
ZWxmLT5wb3MpICYgMHgzRikgPDwgNTYgfAotICAgICAgICAgICAgICAgICh1aW50NjRfdCkoKihz
ZWxmLT5wb3MgKyAxKSkgPDwgNDggfAotICAgICAgICAgICAgICAgICh1aW50NjRfdCkoKihzZWxm
LT5wb3MgKyAyKSkgPDwgNDAgfAotICAgICAgICAgICAgICAgICh1aW50NjRfdCkoKihzZWxmLT5w
b3MgKyAzKSkgPDwgMzIgfAotICAgICAgICAgICAgICAgICh1aW50NjRfdCkoKihzZWxmLT5wb3Mg
KyA0KSkgPDwgMjQgfAotICAgICAgICAgICAgICAgICh1aW50NjRfdCkoKihzZWxmLT5wb3MgKyA1
KSkgPDwgMTYgfAotICAgICAgICAgICAgICAgICh1aW50NjRfdCkoKihzZWxmLT5wb3MgKyA2KSkg
PDwgOCB8Ci0gICAgICAgICAgICAgICAgKHVpbnQ2NF90KSgqKHNlbGYtPnBvcyArIDcpKTsKLSAg
ICAgICAgc2VsZi0+cG9zICs9IDg7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4g
UHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKHZhbHVlKTsKLX0KLQotc3RhdGljIFB5T2JqZWN0
ICoKLUJ1ZmZlcl9wdXNoX2J5dGVzKEJ1ZmZlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3Mp
Ci17Ci0gICAgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YTsKLSAgICBQeV9zc2l6ZV90IGRhdGFf
bGVuOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSMiLCAmZGF0YSwgJmRhdGFf
bGVuKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBDSEVDS19XUklURV9CT1VORFMoc2Vs
ZiwgZGF0YV9sZW4pCi0KLSAgICBtZW1jcHkoc2VsZi0+cG9zLCBkYXRhLCBkYXRhX2xlbik7Ci0g
ICAgc2VsZi0+cG9zICs9IGRhdGFfbGVuOwotICAgIFB5X1JFVFVSTl9OT05FOwotfQotCi1zdGF0
aWMgUHlPYmplY3QgKgotQnVmZmVyX3B1c2hfdWludDgoQnVmZmVyT2JqZWN0ICpzZWxmLCBQeU9i
amVjdCAqYXJncykKLXsKLSAgICB1aW50OF90IHZhbHVlOwotICAgIGlmICghUHlBcmdfUGFyc2VU
dXBsZShhcmdzLCAiQiIsICZ2YWx1ZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgQ0hF
Q0tfV1JJVEVfQk9VTkRTKHNlbGYsIDEpCi0KLSAgICAqKHNlbGYtPnBvcysrKSA9IHZhbHVlOwot
ICAgIFB5X1JFVFVSTl9OT05FOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotQnVmZmVyX3B1c2hf
dWludDE2KEJ1ZmZlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgdWludDE2
X3QgdmFsdWU7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJIIiwgJnZhbHVlKSkK
LSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBDSEVDS19XUklURV9CT1VORFMoc2VsZiwgMikK
LQotICAgICooc2VsZi0+cG9zKyspID0gKHZhbHVlID4+IDgpOwotICAgICooc2VsZi0+cG9zKysp
ID0gdmFsdWU7Ci0gICAgUHlfUkVUVVJOX05PTkU7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1C
dWZmZXJfcHVzaF91aW50MzIoQnVmZmVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsK
LSAgICB1aW50MzJfdCB2YWx1ZTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIkki
LCAmdmFsdWUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIENIRUNLX1dSSVRFX0JPVU5E
UyhzZWxmLCA0KQotICAgICooc2VsZi0+cG9zKyspID0gKHZhbHVlID4+IDI0KTsKLSAgICAqKHNl
bGYtPnBvcysrKSA9ICh2YWx1ZSA+PiAxNik7Ci0gICAgKihzZWxmLT5wb3MrKykgPSAodmFsdWUg
Pj4gOCk7Ci0gICAgKihzZWxmLT5wb3MrKykgPSB2YWx1ZTsKLSAgICBQeV9SRVRVUk5fTk9ORTsK
LX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLUJ1ZmZlcl9wdXNoX3VpbnQ2NChCdWZmZXJPYmplY3Qg
KnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIHVpbnQ2NF90IHZhbHVlOwotICAgIGlmICgh
UHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiSyIsICZ2YWx1ZSkpCi0gICAgICAgIHJldHVybiBOVUxM
OwotCi0gICAgQ0hFQ0tfV1JJVEVfQk9VTkRTKHNlbGYsIDgpCi0gICAgKihzZWxmLT5wb3MrKykg
PSAodmFsdWUgPj4gNTYpOwotICAgICooc2VsZi0+cG9zKyspID0gKHZhbHVlID4+IDQ4KTsKLSAg
ICAqKHNlbGYtPnBvcysrKSA9ICh2YWx1ZSA+PiA0MCk7Ci0gICAgKihzZWxmLT5wb3MrKykgPSAo
dmFsdWUgPj4gMzIpOwotICAgICooc2VsZi0+cG9zKyspID0gKHZhbHVlID4+IDI0KTsKLSAgICAq
KHNlbGYtPnBvcysrKSA9ICh2YWx1ZSA+PiAxNik7Ci0gICAgKihzZWxmLT5wb3MrKykgPSAodmFs
dWUgPj4gOCk7Ci0gICAgKihzZWxmLT5wb3MrKykgPSB2YWx1ZTsKLSAgICBQeV9SRVRVUk5fTk9O
RTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLUJ1ZmZlcl9wdXNoX3VpbnRfdmFyKEJ1ZmZlck9i
amVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgdWludDY0X3QgdmFsdWU7Ci0gICAg
aWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJLIiwgJnZhbHVlKSkKLSAgICAgICAgcmV0dXJu
IE5VTEw7Ci0KLSAgICBpZiAodmFsdWUgPD0gMHgzRikgewotICAgICAgICBDSEVDS19XUklURV9C
T1VORFMoc2VsZiwgMSkKLSAgICAgICAgKihzZWxmLT5wb3MrKykgPSB2YWx1ZTsKLSAgICAgICAg
UHlfUkVUVVJOX05PTkU7Ci0gICAgfSBlbHNlIGlmICh2YWx1ZSA8PSAweDNGRkYpIHsKLSAgICAg
ICAgQ0hFQ0tfV1JJVEVfQk9VTkRTKHNlbGYsIDIpCi0gICAgICAgICooc2VsZi0+cG9zKyspID0g
KHZhbHVlID4+IDgpIHwgMHg0MDsKLSAgICAgICAgKihzZWxmLT5wb3MrKykgPSB2YWx1ZTsKLSAg
ICAgICAgUHlfUkVUVVJOX05PTkU7Ci0gICAgfSBlbHNlIGlmICh2YWx1ZSA8PSAweDNGRkZGRkZG
KSB7Ci0gICAgICAgIENIRUNLX1dSSVRFX0JPVU5EUyhzZWxmLCA0KQotICAgICAgICAqKHNlbGYt
PnBvcysrKSA9ICh2YWx1ZSA+PiAyNCkgfCAweDgwOwotICAgICAgICAqKHNlbGYtPnBvcysrKSA9
ICh2YWx1ZSA+PiAxNik7Ci0gICAgICAgICooc2VsZi0+cG9zKyspID0gKHZhbHVlID4+IDgpOwot
ICAgICAgICAqKHNlbGYtPnBvcysrKSA9IHZhbHVlOwotICAgICAgICBQeV9SRVRVUk5fTk9ORTsK
LSAgICB9IGVsc2UgaWYgKHZhbHVlIDw9IDB4M0ZGRkZGRkZGRkZGRkZGRikgewotICAgICAgICBD
SEVDS19XUklURV9CT1VORFMoc2VsZiwgOCkKLSAgICAgICAgKihzZWxmLT5wb3MrKykgPSAodmFs
dWUgPj4gNTYpIHwgMHhDMDsKLSAgICAgICAgKihzZWxmLT5wb3MrKykgPSAodmFsdWUgPj4gNDgp
OwotICAgICAgICAqKHNlbGYtPnBvcysrKSA9ICh2YWx1ZSA+PiA0MCk7Ci0gICAgICAgICooc2Vs
Zi0+cG9zKyspID0gKHZhbHVlID4+IDMyKTsKLSAgICAgICAgKihzZWxmLT5wb3MrKykgPSAodmFs
dWUgPj4gMjQpOwotICAgICAgICAqKHNlbGYtPnBvcysrKSA9ICh2YWx1ZSA+PiAxNik7Ci0gICAg
ICAgICooc2VsZi0+cG9zKyspID0gKHZhbHVlID4+IDgpOwotICAgICAgICAqKHNlbGYtPnBvcysr
KSA9IHZhbHVlOwotICAgICAgICBQeV9SRVRVUk5fTk9ORTsKLSAgICB9IGVsc2UgewotICAgICAg
ICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkludGVnZXIgaXMgdG9vIGJpZyBm
b3IgYSB2YXJpYWJsZS1sZW5ndGggaW50ZWdlciIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAg
ICB9Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1CdWZmZXJfc2VlayhCdWZmZXJPYmplY3QgKnNl
bGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIGludCBwb3M7Ci0gICAgaWYgKCFQeUFyZ19QYXJz
ZVR1cGxlKGFyZ3MsICJpIiwgJnBvcykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYg
KHBvcyA8IDAgfHwgc2VsZi0+YmFzZSArIHBvcyA+IHNlbGYtPmVuZCkgewotICAgICAgICBQeUVy
cl9TZXRTdHJpbmcoQnVmZmVyUmVhZEVycm9yLCAiU2VlayBvdXQgb2YgYm91bmRzIik7Ci0gICAg
ICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIHNlbGYtPnBvcyA9IHNlbGYtPmJhc2UgKyBw
b3M7Ci0gICAgUHlfUkVUVVJOX05PTkU7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1CdWZmZXJf
dGVsbChCdWZmZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIHJldHVybiBQ
eUxvbmdfRnJvbVNzaXplX3Qoc2VsZi0+cG9zIC0gc2VsZi0+YmFzZSk7Ci19Ci0KLXN0YXRpYyBQ
eU1ldGhvZERlZiBCdWZmZXJfbWV0aG9kc1tdID0gewotICAgIHsiZGF0YV9zbGljZSIsIChQeUNG
dW5jdGlvbilCdWZmZXJfZGF0YV9zbGljZSwgTUVUSF9WQVJBUkdTLCAiIn0sCi0gICAgeyJlb2Yi
LCAoUHlDRnVuY3Rpb24pQnVmZmVyX2VvZiwgTUVUSF9WQVJBUkdTLCAiIn0sCi0gICAgeyJwdWxs
X2J5dGVzIiwgKFB5Q0Z1bmN0aW9uKUJ1ZmZlcl9wdWxsX2J5dGVzLCBNRVRIX1ZBUkFSR1MsICJQ
dWxsIGJ5dGVzLiJ9LAotICAgIHsicHVsbF91aW50OCIsIChQeUNGdW5jdGlvbilCdWZmZXJfcHVs
bF91aW50OCwgTUVUSF9WQVJBUkdTLCAiUHVsbCBhbiA4LWJpdCB1bnNpZ25lZCBpbnRlZ2VyLiJ9
LAotICAgIHsicHVsbF91aW50MTYiLCAoUHlDRnVuY3Rpb24pQnVmZmVyX3B1bGxfdWludDE2LCBN
RVRIX1ZBUkFSR1MsICJQdWxsIGEgMTYtYml0IHVuc2lnbmVkIGludGVnZXIuIn0sCi0gICAgeyJw
dWxsX3VpbnQzMiIsIChQeUNGdW5jdGlvbilCdWZmZXJfcHVsbF91aW50MzIsIE1FVEhfVkFSQVJH
UywgIlB1bGwgYSAzMi1iaXQgdW5zaWduZWQgaW50ZWdlci4ifSwKLSAgICB7InB1bGxfdWludDY0
IiwgKFB5Q0Z1bmN0aW9uKUJ1ZmZlcl9wdWxsX3VpbnQ2NCwgTUVUSF9WQVJBUkdTLCAiUHVsbCBh
IDY0LWJpdCB1bnNpZ25lZCBpbnRlZ2VyLiJ9LAotICAgIHsicHVsbF91aW50X3ZhciIsIChQeUNG
dW5jdGlvbilCdWZmZXJfcHVsbF91aW50X3ZhciwgTUVUSF9WQVJBUkdTLCAiUHVsbCBhIFFVSUMg
dmFyaWFibGUtbGVuZ3RoIHVuc2lnbmVkIGludGVnZXIuIn0sCi0gICAgeyJwdXNoX2J5dGVzIiwg
KFB5Q0Z1bmN0aW9uKUJ1ZmZlcl9wdXNoX2J5dGVzLCBNRVRIX1ZBUkFSR1MsICJQdXNoIGJ5dGVz
LiJ9LAotICAgIHsicHVzaF91aW50OCIsIChQeUNGdW5jdGlvbilCdWZmZXJfcHVzaF91aW50OCwg
TUVUSF9WQVJBUkdTLCAiUHVzaCBhbiA4LWJpdCB1bnNpZ25lZCBpbnRlZ2VyLiJ9LAotICAgIHsi
cHVzaF91aW50MTYiLCAoUHlDRnVuY3Rpb24pQnVmZmVyX3B1c2hfdWludDE2LCBNRVRIX1ZBUkFS
R1MsICJQdXNoIGEgMTYtYml0IHVuc2lnbmVkIGludGVnZXIuIn0sCi0gICAgeyJwdXNoX3VpbnQz
MiIsIChQeUNGdW5jdGlvbilCdWZmZXJfcHVzaF91aW50MzIsIE1FVEhfVkFSQVJHUywgIlB1c2gg
YSAzMi1iaXQgdW5zaWduZWQgaW50ZWdlci4ifSwKLSAgICB7InB1c2hfdWludDY0IiwgKFB5Q0Z1
bmN0aW9uKUJ1ZmZlcl9wdXNoX3VpbnQ2NCwgTUVUSF9WQVJBUkdTLCAiUHVzaCBhIDY0LWJpdCB1
bnNpZ25lZCBpbnRlZ2VyLiJ9LAotICAgIHsicHVzaF91aW50X3ZhciIsIChQeUNGdW5jdGlvbilC
dWZmZXJfcHVzaF91aW50X3ZhciwgTUVUSF9WQVJBUkdTLCAiUHVzaCBhIFFVSUMgdmFyaWFibGUt
bGVuZ3RoIHVuc2lnbmVkIGludGVnZXIuIn0sCi0gICAgeyJzZWVrIiwgKFB5Q0Z1bmN0aW9uKUJ1
ZmZlcl9zZWVrLCBNRVRIX1ZBUkFSR1MsICIifSwKLSAgICB7InRlbGwiLCAoUHlDRnVuY3Rpb24p
QnVmZmVyX3RlbGwsIE1FVEhfVkFSQVJHUywgIiJ9LAotICAgIHtOVUxMfQotfTsKLQotc3RhdGlj
IFB5T2JqZWN0KgotQnVmZmVyX2NhcGFjaXR5X2dldHRlcihCdWZmZXJPYmplY3QqIHNlbGYsIHZv
aWQgKmNsb3N1cmUpIHsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHNlbGYtPmVuZCAt
IHNlbGYtPmJhc2UpOwotfQotCi1zdGF0aWMgUHlPYmplY3QqCi1CdWZmZXJfZGF0YV9nZXR0ZXIo
QnVmZmVyT2JqZWN0KiBzZWxmLCB2b2lkICpjbG9zdXJlKSB7Ci0gICAgcmV0dXJuIFB5Qnl0ZXNf
RnJvbVN0cmluZ0FuZFNpemUoKGNvbnN0IGNoYXIqKXNlbGYtPmJhc2UsIHNlbGYtPnBvcyAtIHNl
bGYtPmJhc2UpOwotfQotCi1zdGF0aWMgUHlHZXRTZXREZWYgQnVmZmVyX2dldHNldFtdID0gewot
ICAgIHsiY2FwYWNpdHkiLCAoZ2V0dGVyKSBCdWZmZXJfY2FwYWNpdHlfZ2V0dGVyLCBOVUxMLCAi
IiwgTlVMTCB9LAotICAgIHsiZGF0YSIsIChnZXR0ZXIpIEJ1ZmZlcl9kYXRhX2dldHRlciwgTlVM
TCwgIiIsIE5VTEwgfSwKLSAgICB7TlVMTH0KLX07Ci0KLXN0YXRpYyBQeVR5cGVPYmplY3QgQnVm
ZmVyVHlwZSA9IHsKLSAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKLSAgICBNT0RV
TEVfTkFNRSAiLkJ1ZmZlciIsICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCi0gICAgc2l6ZW9m
KEJ1ZmZlck9iamVjdCksICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCi0gICAgMCwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KLSAgICAo
ZGVzdHJ1Y3RvcilCdWZmZXJfZGVhbGxvYywgICAgICAgICAvKiB0cF9kZWFsbG9jICovCi0gICAg
MCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KLSAgICAw
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCi0gICAg
MCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLwotICAg
IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCi0g
ICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLwotICAg
IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLwot
ICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNl
ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFw
cGluZyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hh
c2ggICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2Fs
bCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAq
LwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJv
ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0
cm8gKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19i
dWZmZXIgKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgICAgICAgICAvKiB0cF9m
bGFncyAqLwotICAgICJCdWZmZXIgb2JqZWN0cyIsICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rv
YyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZl
cnNlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xl
YXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNo
Y29tcGFyZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRw
X3dlYWtsaXN0b2Zmc2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogdHBfaXRlciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgQnVmZmVyX21ldGhvZHMsICAgICAgICAgICAgICAgICAg
ICAgLyogdHBfbWV0aG9kcyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIHRwX21lbWJlcnMgKi8KLSAgICBCdWZmZXJfZ2V0c2V0LCAgICAgICAgICAgICAgICAg
ICAgICAvKiB0cF9nZXRzZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiB0cF9iYXNlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogdHBfZGljdCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIHRwX2Rlc2NyX2dldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIHRwX2Rlc2NyX3NldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KLSAgICAoaW5pdHByb2MpQnVmZmVyX2luaXQsICAg
ICAgICAgICAgICAvKiB0cF9pbml0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogdHBfYWxsb2MgKi8KLX07Ci0KLQotc3RhdGljIHN0cnVjdCBQeU1vZHVsZURl
ZiBtb2R1bGVkZWYgPSB7Ci0gICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULAotICAgIE1PRFVMRV9O
QU1FLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fbmFtZSAqLwotICAgICJBIGZhc3RlciBi
dWZmZXIuIiwgICAgICAgICAgICAgICAgIC8qIG1fZG9jICovCi0gICAgLTEsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogbV9zaXplICovCi0gICAgTlVMTCwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogbV9tZXRob2RzICovCi0gICAgTlVMTCwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogbV9yZWxvYWQgKi8KLSAgICBOVUxMLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiBtX3RyYXZlcnNlICovCi0gICAgTlVMTCwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogbV9jbGVhciAqLwotICAgIE5VTEwsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIG1fZnJlZSAqLwotfTsKLQotCi1QeU1PRElOSVRfRlVOQwotUHlJ
bml0X19idWZmZXIodm9pZCkKLXsKLSAgICBQeU9iamVjdCogbTsKLQotICAgIG0gPSBQeU1vZHVs
ZV9DcmVhdGUoJm1vZHVsZWRlZik7Ci0gICAgaWYgKG0gPT0gTlVMTCkKLSAgICAgICAgcmV0dXJu
IE5VTEw7Ci0KLSAgICBCdWZmZXJSZWFkRXJyb3IgPSBQeUVycl9OZXdFeGNlcHRpb24oTU9EVUxF
X05BTUUgIi5CdWZmZXJSZWFkRXJyb3IiLCBQeUV4Y19WYWx1ZUVycm9yLCBOVUxMKTsKLSAgICBQ
eV9JTkNSRUYoQnVmZmVyUmVhZEVycm9yKTsKLSAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIkJ1
ZmZlclJlYWRFcnJvciIsIEJ1ZmZlclJlYWRFcnJvcik7Ci0KLSAgICBCdWZmZXJXcml0ZUVycm9y
ID0gUHlFcnJfTmV3RXhjZXB0aW9uKE1PRFVMRV9OQU1FICIuQnVmZmVyV3JpdGVFcnJvciIsIFB5
RXhjX1ZhbHVlRXJyb3IsIE5VTEwpOwotICAgIFB5X0lOQ1JFRihCdWZmZXJXcml0ZUVycm9yKTsK
LSAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIkJ1ZmZlcldyaXRlRXJyb3IiLCBCdWZmZXJXcml0
ZUVycm9yKTsKLQotICAgIEJ1ZmZlclR5cGUudHBfbmV3ID0gUHlUeXBlX0dlbmVyaWNOZXc7Ci0g
ICAgaWYgKFB5VHlwZV9SZWFkeSgmQnVmZmVyVHlwZSkgPCAwKQotICAgICAgICByZXR1cm4gTlVM
TDsKLSAgICBQeV9JTkNSRUYoJkJ1ZmZlclR5cGUpOwotICAgIFB5TW9kdWxlX0FkZE9iamVjdCht
LCAiQnVmZmVyIiwgKFB5T2JqZWN0ICopJkJ1ZmZlclR5cGUpOwotCi0gICAgcmV0dXJuIG07Ci19
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvX2J1ZmZlci5weWkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvX2J1ZmZlci5weWkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGE2ZTQzY2NhM2E1MThmZjc1ZTIxM2QzZGVkZjU4YjFiMGM3N2M2MGYuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9h
aW9xdWljL19idWZmZXIucHlpCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotZnJvbSB0
eXBpbmcgaW1wb3J0IE9wdGlvbmFsCi0KLWNsYXNzIEJ1ZmZlclJlYWRFcnJvcihWYWx1ZUVycm9y
KTogLi4uCi1jbGFzcyBCdWZmZXJXcml0ZUVycm9yKFZhbHVlRXJyb3IpOiAuLi4KLQotY2xhc3Mg
QnVmZmVyOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjYXBhY2l0eTogT3B0aW9uYWxbaW50XSA9
IDAsIGRhdGE6IE9wdGlvbmFsW2J5dGVzXSA9IE5vbmUpOiAuLi4KLSAgICBAcHJvcGVydHkKLSAg
ICBkZWYgY2FwYWNpdHkoc2VsZikgLT4gaW50OiAuLi4KLSAgICBAcHJvcGVydHkKLSAgICBkZWYg
ZGF0YShzZWxmKSAtPiBieXRlczogLi4uCi0gICAgZGVmIGRhdGFfc2xpY2Uoc2VsZiwgc3RhcnQ6
IGludCwgZW5kOiBpbnQpIC0+IGJ5dGVzOiAuLi4KLSAgICBkZWYgZW9mKHNlbGYpIC0+IGJvb2w6
IC4uLgotICAgIGRlZiBzZWVrKHNlbGYsIHBvczogaW50KSAtPiBOb25lOiAuLi4KLSAgICBkZWYg
dGVsbChzZWxmKSAtPiBpbnQ6IC4uLgotICAgIGRlZiBwdWxsX2J5dGVzKHNlbGYsIGxlbmd0aDog
aW50KSAtPiBieXRlczogLi4uCi0gICAgZGVmIHB1bGxfdWludDgoc2VsZikgLT4gaW50OiAuLi4K
LSAgICBkZWYgcHVsbF91aW50MTYoc2VsZikgLT4gaW50OiAuLi4KLSAgICBkZWYgcHVsbF91aW50
MzIoc2VsZikgLT4gaW50OiAuLi4KLSAgICBkZWYgcHVsbF91aW50NjQoc2VsZikgLT4gaW50OiAu
Li4KLSAgICBkZWYgcHVsbF91aW50X3ZhcihzZWxmKSAtPiBpbnQ6IC4uLgotICAgIGRlZiBwdXNo
X2J5dGVzKHNlbGYsIHZhbHVlOiBieXRlcykgLT4gTm9uZTogLi4uCi0gICAgZGVmIHB1c2hfdWlu
dDgoc2VsZiwgdmFsdWU6IGludCkgLT4gTm9uZTogLi4uCi0gICAgZGVmIHB1c2hfdWludDE2KHNl
bGYsIHZhbHVlOiBpbnQpIC0+IE5vbmU6IC4uLgotICAgIGRlZiBwdXNoX3VpbnQzMihzZWxmLCB2
OiBpbnQpIC0+IE5vbmU6IC4uLgotICAgIGRlZiBwdXNoX3VpbnQ2NChzZWxmLCB2OiBpbnQpIC0+
IE5vbmU6IC4uLgotICAgIGRlZiBwdXNoX3VpbnRfdmFyKHNlbGYsIHZhbHVlOiBpbnQpIC0+IE5v
bmU6IC4uLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL19jcnlwdG8uYyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9fY3J5cHRvLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDVlMTU1NGQ0YjIxM2NkMDdmY2VkZjhhMzkzMDRjZDYyMDA0NGYxNjcuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Ny
Yy9haW9xdWljL19jcnlwdG8uYworKysgL2Rldi9udWxsCkBAIC0xLDQ1NSArMCwwIEBACi0jZGVm
aW5lIFBZX1NTSVpFX1RfQ0xFQU4KLQotI2luY2x1ZGUgPFB5dGhvbi5oPgotI2luY2x1ZGUgPG9w
ZW5zc2wvZXJyLmg+Ci0jaW5jbHVkZSA8b3BlbnNzbC9ldnAuaD4KLQotI2RlZmluZSBNT0RVTEVf
TkFNRSAiYWlvcXVpYy5fY3J5cHRvIgotCi0jZGVmaW5lIEFFQURfS0VZX0xFTkdUSF9NQVggMzIK
LSNkZWZpbmUgQUVBRF9OT05DRV9MRU5HVEggMTIKLSNkZWZpbmUgQUVBRF9UQUdfTEVOR1RIIDE2
Ci0KLSNkZWZpbmUgUEFDS0VUX0xFTkdUSF9NQVggMTUwMAotI2RlZmluZSBQQUNLRVRfTlVNQkVS
X0xFTkdUSF9NQVggNAotI2RlZmluZSBTQU1QTEVfTEVOR1RIIDE2Ci0KLSNkZWZpbmUgQ0hFQ0tf
UkVTVUxUKGV4cHIpIFwKLSAgICBpZiAoIShleHByKSkgeyBcCi0gICAgICAgIEVSUl9jbGVhcl9l
cnJvcigpOyBcCi0gICAgICAgIFB5RXJyX1NldFN0cmluZyhDcnlwdG9FcnJvciwgIk9wZW5TU0wg
Y2FsbCBmYWlsZWQiKTsgXAotICAgICAgICByZXR1cm4gTlVMTDsgXAotICAgIH0KLQotI2RlZmlu
ZSBDSEVDS19SRVNVTFRfQ1RPUihleHByKSBcCi0gICAgaWYgKCEoZXhwcikpIHsgXAotICAgICAg
ICBFUlJfY2xlYXJfZXJyb3IoKTsgXAotICAgICAgICBQeUVycl9TZXRTdHJpbmcoQ3J5cHRvRXJy
b3IsICJPcGVuU1NMIGNhbGwgZmFpbGVkIik7IFwKLSAgICAgICAgcmV0dXJuIC0xOyBcCi0gICAg
fQotCi1zdGF0aWMgUHlPYmplY3QgKkNyeXB0b0Vycm9yOwotCi0vKiBBRUFEICovCi0KLXR5cGVk
ZWYgc3RydWN0IHsKLSAgICBQeU9iamVjdF9IRUFECi0gICAgRVZQX0NJUEhFUl9DVFggKmRlY3J5
cHRfY3R4OwotICAgIEVWUF9DSVBIRVJfQ1RYICplbmNyeXB0X2N0eDsKLSAgICB1bnNpZ25lZCBj
aGFyIGJ1ZmZlcltQQUNLRVRfTEVOR1RIX01BWF07Ci0gICAgdW5zaWduZWQgY2hhciBrZXlbQUVB
RF9LRVlfTEVOR1RIX01BWF07Ci0gICAgdW5zaWduZWQgY2hhciBpdltBRUFEX05PTkNFX0xFTkdU
SF07Ci0gICAgdW5zaWduZWQgY2hhciBub25jZVtBRUFEX05PTkNFX0xFTkdUSF07Ci19IEFFQURP
YmplY3Q7Ci0KLXN0YXRpYyBFVlBfQ0lQSEVSX0NUWCAqCi1jcmVhdGVfY3R4KGNvbnN0IEVWUF9D
SVBIRVIgKmNpcGhlciwgaW50IGtleV9sZW5ndGgsIGludCBvcGVyYXRpb24pCi17Ci0gICAgRVZQ
X0NJUEhFUl9DVFggKmN0eDsKLSAgICBpbnQgcmVzOwotCi0gICAgY3R4ID0gRVZQX0NJUEhFUl9D
VFhfbmV3KCk7Ci0gICAgQ0hFQ0tfUkVTVUxUKGN0eCAhPSAwKTsKLQotICAgIHJlcyA9IEVWUF9D
aXBoZXJJbml0X2V4KGN0eCwgY2lwaGVyLCBOVUxMLCBOVUxMLCBOVUxMLCBvcGVyYXRpb24pOwot
ICAgIENIRUNLX1JFU1VMVChyZXMgIT0gMCk7Ci0KLSAgICByZXMgPSBFVlBfQ0lQSEVSX0NUWF9z
ZXRfa2V5X2xlbmd0aChjdHgsIGtleV9sZW5ndGgpOwotICAgIENIRUNLX1JFU1VMVChyZXMgIT0g
MCk7Ci0KLSAgICByZXMgPSBFVlBfQ0lQSEVSX0NUWF9jdHJsKGN0eCwgRVZQX0NUUkxfQ0NNX1NF
VF9JVkxFTiwgQUVBRF9OT05DRV9MRU5HVEgsIE5VTEwpOwotICAgIENIRUNLX1JFU1VMVChyZXMg
IT0gMCk7Ci0KLSAgICByZXR1cm4gY3R4OwotfQotCi1zdGF0aWMgaW50Ci1BRUFEX2luaXQoQUVB
RE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCi17Ci0gICAg
Y29uc3QgY2hhciAqY2lwaGVyX25hbWU7Ci0gICAgY29uc3QgdW5zaWduZWQgY2hhciAqa2V5LCAq
aXY7Ci0gICAgUHlfc3NpemVfdCBjaXBoZXJfbmFtZV9sZW4sIGtleV9sZW4sIGl2X2xlbjsKLQot
ICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSN5I3kjIiwgJmNpcGhlcl9uYW1lLCAm
Y2lwaGVyX25hbWVfbGVuLCAma2V5LCAma2V5X2xlbiwgJml2LCAmaXZfbGVuKSkKLSAgICAgICAg
cmV0dXJuIC0xOwotCi0gICAgY29uc3QgRVZQX0NJUEhFUiAqZXZwX2NpcGhlciA9IEVWUF9nZXRf
Y2lwaGVyYnluYW1lKGNpcGhlcl9uYW1lKTsKLSAgICBpZiAoZXZwX2NpcGhlciA9PSAwKSB7Ci0g
ICAgICAgIFB5RXJyX0Zvcm1hdChDcnlwdG9FcnJvciwgIkludmFsaWQgY2lwaGVyIG5hbWU6ICVz
IiwgY2lwaGVyX25hbWUpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIGlmIChrZXlf
bGVuID4gQUVBRF9LRVlfTEVOR1RIX01BWCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoQ3J5
cHRvRXJyb3IsICJJbnZhbGlkIGtleSBsZW5ndGgiKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAg
IH0KLSAgICBpZiAoaXZfbGVuID4gQUVBRF9OT05DRV9MRU5HVEgpIHsKLSAgICAgICAgUHlFcnJf
U2V0U3RyaW5nKENyeXB0b0Vycm9yLCAiSW52YWxpZCBpdiBsZW5ndGgiKTsKLSAgICAgICAgcmV0
dXJuIC0xOwotICAgIH0KLQotICAgIG1lbWNweShzZWxmLT5rZXksIGtleSwga2V5X2xlbik7Ci0g
ICAgbWVtY3B5KHNlbGYtPml2LCBpdiwgaXZfbGVuKTsKLQotICAgIHNlbGYtPmRlY3J5cHRfY3R4
ID0gY3JlYXRlX2N0eChldnBfY2lwaGVyLCBrZXlfbGVuLCAwKTsKLSAgICBDSEVDS19SRVNVTFRf
Q1RPUihzZWxmLT5kZWNyeXB0X2N0eCAhPSAwKTsKLQotICAgIHNlbGYtPmVuY3J5cHRfY3R4ID0g
Y3JlYXRlX2N0eChldnBfY2lwaGVyLCBrZXlfbGVuLCAxKTsKLSAgICBDSEVDS19SRVNVTFRfQ1RP
UihzZWxmLT5lbmNyeXB0X2N0eCAhPSAwKTsKLQotICAgIHJldHVybiAwOwotfQotCi1zdGF0aWMg
dm9pZAotQUVBRF9kZWFsbG9jKEFFQURPYmplY3QgKnNlbGYpCi17Ci0gICAgRVZQX0NJUEhFUl9D
VFhfZnJlZShzZWxmLT5kZWNyeXB0X2N0eCk7Ci0gICAgRVZQX0NJUEhFUl9DVFhfZnJlZShzZWxm
LT5lbmNyeXB0X2N0eCk7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCoKLUFFQURfZGVjcnlwdChBRUFE
T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBjb25zdCB1bnNpZ25lZCBjaGFy
ICpkYXRhLCAqYXNzb2NpYXRlZDsKLSAgICBQeV9zc2l6ZV90IGRhdGFfbGVuLCBhc3NvY2lhdGVk
X2xlbjsKLSAgICBpbnQgb3V0bGVuLCBvdXRsZW4yLCByZXM7Ci0gICAgdWludDY0X3QgcG47Ci0K
LSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkjeSNLIiwgJmRhdGEsICZkYXRhX2xl
biwgJmFzc29jaWF0ZWQsICZhc3NvY2lhdGVkX2xlbiwgJnBuKSkKLSAgICAgICAgcmV0dXJuIE5V
TEw7Ci0KLSAgICBpZiAoZGF0YV9sZW4gPCBBRUFEX1RBR19MRU5HVEggfHwgZGF0YV9sZW4gPiBQ
QUNLRVRfTEVOR1RIX01BWCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoQ3J5cHRvRXJyb3Is
ICJJbnZhbGlkIHBheWxvYWQgbGVuZ3RoIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0K
LQotICAgIG1lbWNweShzZWxmLT5ub25jZSwgc2VsZi0+aXYsIEFFQURfTk9OQ0VfTEVOR1RIKTsK
LSAgICBmb3IgKGludCBpID0gMDsgaSA8IDg7ICsraSkgewotICAgICAgICBzZWxmLT5ub25jZVtB
RUFEX05PTkNFX0xFTkdUSCAtIDEgLSBpXSBePSAodWludDhfdCkocG4gPj4gOCAqIGkpOwotICAg
IH0KLQotICAgIHJlcyA9IEVWUF9DSVBIRVJfQ1RYX2N0cmwoc2VsZi0+ZGVjcnlwdF9jdHgsIEVW
UF9DVFJMX0NDTV9TRVRfVEFHLCBBRUFEX1RBR19MRU5HVEgsICh2b2lkKikoZGF0YSArIChkYXRh
X2xlbiAtIEFFQURfVEFHX0xFTkdUSCkpKTsKLSAgICBDSEVDS19SRVNVTFQocmVzICE9IDApOwot
Ci0gICAgcmVzID0gRVZQX0NpcGhlckluaXRfZXgoc2VsZi0+ZGVjcnlwdF9jdHgsIE5VTEwsIE5V
TEwsIHNlbGYtPmtleSwgc2VsZi0+bm9uY2UsIDApOwotICAgIENIRUNLX1JFU1VMVChyZXMgIT0g
MCk7Ci0KLSAgICByZXMgPSBFVlBfQ2lwaGVyVXBkYXRlKHNlbGYtPmRlY3J5cHRfY3R4LCBOVUxM
LCAmb3V0bGVuLCBhc3NvY2lhdGVkLCBhc3NvY2lhdGVkX2xlbik7Ci0gICAgQ0hFQ0tfUkVTVUxU
KHJlcyAhPSAwKTsKLQotICAgIHJlcyA9IEVWUF9DaXBoZXJVcGRhdGUoc2VsZi0+ZGVjcnlwdF9j
dHgsIHNlbGYtPmJ1ZmZlciwgJm91dGxlbiwgZGF0YSwgZGF0YV9sZW4gLSBBRUFEX1RBR19MRU5H
VEgpOwotICAgIENIRUNLX1JFU1VMVChyZXMgIT0gMCk7Ci0KLSAgICByZXMgPSBFVlBfQ2lwaGVy
RmluYWxfZXgoc2VsZi0+ZGVjcnlwdF9jdHgsIE5VTEwsICZvdXRsZW4yKTsKLSAgICBpZiAocmVz
ID09IDApIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKENyeXB0b0Vycm9yLCAiUGF5bG9hZCBk
ZWNyeXB0aW9uIGZhaWxlZCIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY29uc3QgY2hhciopc2VsZi0+YnVmZmVy
LCBvdXRsZW4pOwotfQotCi1zdGF0aWMgUHlPYmplY3QqCi1BRUFEX2VuY3J5cHQoQUVBRE9iamVj
dCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0
YSwgKmFzc29jaWF0ZWQ7Ci0gICAgUHlfc3NpemVfdCBkYXRhX2xlbiwgYXNzb2NpYXRlZF9sZW47
Ci0gICAgaW50IG91dGxlbiwgb3V0bGVuMiwgcmVzOwotICAgIHVpbnQ2NF90IHBuOwotCi0gICAg
aWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5I3kjSyIsICZkYXRhLCAmZGF0YV9sZW4sICZh
c3NvY2lhdGVkLCAmYXNzb2NpYXRlZF9sZW4sICZwbikpCi0gICAgICAgIHJldHVybiBOVUxMOwot
Ci0gICAgaWYgKGRhdGFfbGVuID4gUEFDS0VUX0xFTkdUSF9NQVgpIHsKLSAgICAgICAgUHlFcnJf
U2V0U3RyaW5nKENyeXB0b0Vycm9yLCAiSW52YWxpZCBwYXlsb2FkIGxlbmd0aCIpOwotICAgICAg
ICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBtZW1jcHkoc2VsZi0+bm9uY2UsIHNlbGYtPml2
LCBBRUFEX05PTkNFX0xFTkdUSCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCA4OyArK2kpIHsK
LSAgICAgICAgc2VsZi0+bm9uY2VbQUVBRF9OT05DRV9MRU5HVEggLSAxIC0gaV0gXj0gKHVpbnQ4
X3QpKHBuID4+IDggKiBpKTsKLSAgICB9Ci0KLSAgICByZXMgPSBFVlBfQ2lwaGVySW5pdF9leChz
ZWxmLT5lbmNyeXB0X2N0eCwgTlVMTCwgTlVMTCwgc2VsZi0+a2V5LCBzZWxmLT5ub25jZSwgMSk7
Ci0gICAgQ0hFQ0tfUkVTVUxUKHJlcyAhPSAwKTsKLQotICAgIHJlcyA9IEVWUF9DaXBoZXJVcGRh
dGUoc2VsZi0+ZW5jcnlwdF9jdHgsIE5VTEwsICZvdXRsZW4sIGFzc29jaWF0ZWQsIGFzc29jaWF0
ZWRfbGVuKTsKLSAgICBDSEVDS19SRVNVTFQocmVzICE9IDApOwotCi0gICAgcmVzID0gRVZQX0Np
cGhlclVwZGF0ZShzZWxmLT5lbmNyeXB0X2N0eCwgc2VsZi0+YnVmZmVyLCAmb3V0bGVuLCBkYXRh
LCBkYXRhX2xlbik7Ci0gICAgQ0hFQ0tfUkVTVUxUKHJlcyAhPSAwKTsKLQotICAgIHJlcyA9IEVW
UF9DaXBoZXJGaW5hbF9leChzZWxmLT5lbmNyeXB0X2N0eCwgTlVMTCwgJm91dGxlbjIpOwotICAg
IENIRUNLX1JFU1VMVChyZXMgIT0gMCAmJiBvdXRsZW4yID09IDApOwotCi0gICAgcmVzID0gRVZQ
X0NJUEhFUl9DVFhfY3RybChzZWxmLT5lbmNyeXB0X2N0eCwgRVZQX0NUUkxfQ0NNX0dFVF9UQUcs
IEFFQURfVEFHX0xFTkdUSCwgc2VsZi0+YnVmZmVyICsgb3V0bGVuKTsKLSAgICBDSEVDS19SRVNV
TFQocmVzICE9IDApOwotCi0gICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNv
bnN0IGNoYXIqKXNlbGYtPmJ1ZmZlciwgb3V0bGVuICsgQUVBRF9UQUdfTEVOR1RIKTsKLX0KLQot
c3RhdGljIFB5TWV0aG9kRGVmIEFFQURfbWV0aG9kc1tdID0gewotICAgIHsiZGVjcnlwdCIsIChQ
eUNGdW5jdGlvbilBRUFEX2RlY3J5cHQsIE1FVEhfVkFSQVJHUywgIiJ9LAotICAgIHsiZW5jcnlw
dCIsIChQeUNGdW5jdGlvbilBRUFEX2VuY3J5cHQsIE1FVEhfVkFSQVJHUywgIiJ9LAotCi0gICAg
e05VTEx9Ci19OwotCi1zdGF0aWMgUHlUeXBlT2JqZWN0IEFFQURUeXBlID0gewotICAgIFB5VmFy
T2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQotICAgIE1PRFVMRV9OQU1FICIuQUVBRCIsICAgICAg
ICAgICAgICAgIC8qIHRwX25hbWUgKi8KLSAgICBzaXplb2YoQUVBRE9iamVjdCksICAgICAgICAg
ICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLwotICAgIChkZXN0cnVjdG9yKUFFQURfZGVhbGxv
YywgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCi0gICAgMCwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KLSAgICAwLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCi0gICAgMCwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAgKi8KLSAgICAwLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCi0gICAgMCwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCi0gICAgMCwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KLSAgICAwLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLwotICAgIDAsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwotICAgIFB5X1RQRkxB
R1NfREVGQVVMVCwgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCi0gICAgIkFFQUQgb2Jq
ZWN0cyIsICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCi0gICAgMCwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KLSAgICAwLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwotICAgIDAsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCi0gICAgMCwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KLSAg
ICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCi0gICAg
MCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAg
ICBBRUFEX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCi0g
ICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwot
ICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwot
ICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KLSAg
ICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCi0gICAg
MCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCi0g
ICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICov
Ci0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNl
dCAqLwotICAgIChpbml0cHJvYylBRUFEX2luaXQsICAgICAgICAgICAgICAgIC8qIHRwX2luaXQg
Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAq
LwotfTsKLQotLyogSGVhZGVyUHJvdGVjdGlvbiAqLwotCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAg
UHlPYmplY3RfSEVBRAotICAgIEVWUF9DSVBIRVJfQ1RYICpjdHg7Ci0gICAgaW50IGlzX2NoYWNo
YTIwOwotICAgIHVuc2lnbmVkIGNoYXIgYnVmZmVyW1BBQ0tFVF9MRU5HVEhfTUFYXTsKLSAgICB1
bnNpZ25lZCBjaGFyIG1hc2tbMzFdOwotICAgIHVuc2lnbmVkIGNoYXIgemVyb1s1XTsKLX0gSGVh
ZGVyUHJvdGVjdGlvbk9iamVjdDsKLQotc3RhdGljIGludAotSGVhZGVyUHJvdGVjdGlvbl9pbml0
KEhlYWRlclByb3RlY3Rpb25PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAq
a3dhcmdzKQotewotICAgIGNvbnN0IGNoYXIgKmNpcGhlcl9uYW1lOwotICAgIGNvbnN0IHVuc2ln
bmVkIGNoYXIgKmtleTsKLSAgICBQeV9zc2l6ZV90IGNpcGhlcl9uYW1lX2xlbiwga2V5X2xlbjsK
LSAgICBpbnQgcmVzOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5I3kjIiwg
JmNpcGhlcl9uYW1lLCAmY2lwaGVyX25hbWVfbGVuLCAma2V5LCAma2V5X2xlbikpCi0gICAgICAg
IHJldHVybiAtMTsKLQotICAgIGNvbnN0IEVWUF9DSVBIRVIgKmV2cF9jaXBoZXIgPSBFVlBfZ2V0
X2NpcGhlcmJ5bmFtZShjaXBoZXJfbmFtZSk7Ci0gICAgaWYgKGV2cF9jaXBoZXIgPT0gMCkgewot
ICAgICAgICBQeUVycl9Gb3JtYXQoQ3J5cHRvRXJyb3IsICJJbnZhbGlkIGNpcGhlciBuYW1lOiAl
cyIsIGNpcGhlcl9uYW1lKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQotICAgIG1lbXNl
dChzZWxmLT5tYXNrLCAwLCBzaXplb2Yoc2VsZi0+bWFzaykpOwotICAgIG1lbXNldChzZWxmLT56
ZXJvLCAwLCBzaXplb2Yoc2VsZi0+emVybykpOwotICAgIHNlbGYtPmlzX2NoYWNoYTIwID0gY2lw
aGVyX25hbWVfbGVuID09IDggJiYgbWVtY21wKGNpcGhlcl9uYW1lLCAiY2hhY2hhMjAiLCA4KSA9
PSAwOwotCi0gICAgc2VsZi0+Y3R4ID0gRVZQX0NJUEhFUl9DVFhfbmV3KCk7Ci0gICAgQ0hFQ0tf
UkVTVUxUX0NUT1Ioc2VsZi0+Y3R4ICE9IDApOwotCi0gICAgcmVzID0gRVZQX0NpcGhlckluaXRf
ZXgoc2VsZi0+Y3R4LCBldnBfY2lwaGVyLCBOVUxMLCBOVUxMLCBOVUxMLCAxKTsKLSAgICBDSEVD
S19SRVNVTFRfQ1RPUihyZXMgIT0gMCk7Ci0KLSAgICByZXMgPSBFVlBfQ0lQSEVSX0NUWF9zZXRf
a2V5X2xlbmd0aChzZWxmLT5jdHgsIGtleV9sZW4pOwotICAgIENIRUNLX1JFU1VMVF9DVE9SKHJl
cyAhPSAwKTsKLQotICAgIHJlcyA9IEVWUF9DaXBoZXJJbml0X2V4KHNlbGYtPmN0eCwgTlVMTCwg
TlVMTCwga2V5LCBOVUxMLCAxKTsKLSAgICBDSEVDS19SRVNVTFRfQ1RPUihyZXMgIT0gMCk7Ci0K
LSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIHZvaWQKLUhlYWRlclByb3RlY3Rpb25fZGVhbGxv
YyhIZWFkZXJQcm90ZWN0aW9uT2JqZWN0ICpzZWxmKQotewotICAgIEVWUF9DSVBIRVJfQ1RYX2Zy
ZWUoc2VsZi0+Y3R4KTsKLX0KLQotc3RhdGljIGludCBIZWFkZXJQcm90ZWN0aW9uX21hc2soSGVh
ZGVyUHJvdGVjdGlvbk9iamVjdCAqc2VsZiwgY29uc3QgdW5zaWduZWQgY2hhciogc2FtcGxlKQot
ewotICAgIGludCBvdXRsZW47Ci0gICAgaWYgKHNlbGYtPmlzX2NoYWNoYTIwKSB7Ci0gICAgICAg
IHJldHVybiBFVlBfQ2lwaGVySW5pdF9leChzZWxmLT5jdHgsIE5VTEwsIE5VTEwsIE5VTEwsIHNh
bXBsZSwgMSkgJiYKLSAgICAgICAgICAgICAgIEVWUF9DaXBoZXJVcGRhdGUoc2VsZi0+Y3R4LCBz
ZWxmLT5tYXNrLCAmb3V0bGVuLCBzZWxmLT56ZXJvLCBzaXplb2Yoc2VsZi0+emVybykpOwotICAg
IH0gZWxzZSB7Ci0gICAgICAgIHJldHVybiBFVlBfQ2lwaGVyVXBkYXRlKHNlbGYtPmN0eCwgc2Vs
Zi0+bWFzaywgJm91dGxlbiwgc2FtcGxlLCBTQU1QTEVfTEVOR1RIKTsKLSAgICB9Ci19Ci0KLXN0
YXRpYyBQeU9iamVjdCoKLUhlYWRlclByb3RlY3Rpb25fYXBwbHkoSGVhZGVyUHJvdGVjdGlvbk9i
amVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgY29uc3QgdW5zaWduZWQgY2hhciAq
aGVhZGVyLCAqcGF5bG9hZDsKLSAgICBQeV9zc2l6ZV90IGhlYWRlcl9sZW4sIHBheWxvYWRfbGVu
OwotICAgIGludCByZXM7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkjeSMi
LCAmaGVhZGVyLCAmaGVhZGVyX2xlbiwgJnBheWxvYWQsICZwYXlsb2FkX2xlbikpCi0gICAgICAg
IHJldHVybiBOVUxMOwotCi0gICAgaW50IHBuX2xlbmd0aCA9IChoZWFkZXJbMF0gJiAweDAzKSAr
IDE7Ci0gICAgaW50IHBuX29mZnNldCA9IGhlYWRlcl9sZW4gLSBwbl9sZW5ndGg7Ci0KLSAgICBy
ZXMgPSBIZWFkZXJQcm90ZWN0aW9uX21hc2soc2VsZiwgcGF5bG9hZCArIFBBQ0tFVF9OVU1CRVJf
TEVOR1RIX01BWCAtIHBuX2xlbmd0aCk7Ci0gICAgQ0hFQ0tfUkVTVUxUKHJlcyAhPSAwKTsKLQot
ICAgIG1lbWNweShzZWxmLT5idWZmZXIsIGhlYWRlciwgaGVhZGVyX2xlbik7Ci0gICAgbWVtY3B5
KHNlbGYtPmJ1ZmZlciArIGhlYWRlcl9sZW4sIHBheWxvYWQsIHBheWxvYWRfbGVuKTsKLQotICAg
IGlmIChzZWxmLT5idWZmZXJbMF0gJiAweDgwKSB7Ci0gICAgICAgIHNlbGYtPmJ1ZmZlclswXSBe
PSBzZWxmLT5tYXNrWzBdICYgMHgwRjsKLSAgICB9IGVsc2UgewotICAgICAgICBzZWxmLT5idWZm
ZXJbMF0gXj0gc2VsZi0+bWFza1swXSAmIDB4MUY7Ci0gICAgfQotCi0gICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBwbl9sZW5ndGg7ICsraSkgewotICAgICAgICBzZWxmLT5idWZmZXJbcG5fb2Zmc2V0
ICsgaV0gXj0gc2VsZi0+bWFza1sxICsgaV07Ci0gICAgfQotCi0gICAgcmV0dXJuIFB5Qnl0ZXNf
RnJvbVN0cmluZ0FuZFNpemUoKGNvbnN0IGNoYXIqKXNlbGYtPmJ1ZmZlciwgaGVhZGVyX2xlbiAr
IHBheWxvYWRfbGVuKTsKLX0KLQotc3RhdGljIFB5T2JqZWN0KgotSGVhZGVyUHJvdGVjdGlvbl9y
ZW1vdmUoSGVhZGVyUHJvdGVjdGlvbk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0g
ICAgY29uc3QgdW5zaWduZWQgY2hhciAqcGFja2V0OwotICAgIFB5X3NzaXplX3QgcGFja2V0X2xl
bjsKLSAgICBpbnQgcG5fb2Zmc2V0LCByZXM7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUo
YXJncywgInkjSSIsICZwYWNrZXQsICZwYWNrZXRfbGVuLCAmcG5fb2Zmc2V0KSkKLSAgICAgICAg
cmV0dXJuIE5VTEw7Ci0KLSAgICByZXMgPSBIZWFkZXJQcm90ZWN0aW9uX21hc2soc2VsZiwgcGFj
a2V0ICsgcG5fb2Zmc2V0ICsgUEFDS0VUX05VTUJFUl9MRU5HVEhfTUFYKTsKLSAgICBDSEVDS19S
RVNVTFQocmVzICE9IDApOwotCi0gICAgbWVtY3B5KHNlbGYtPmJ1ZmZlciwgcGFja2V0LCBwbl9v
ZmZzZXQgKyBQQUNLRVRfTlVNQkVSX0xFTkdUSF9NQVgpOwotCi0gICAgaWYgKHNlbGYtPmJ1ZmZl
clswXSAmIDB4ODApIHsKLSAgICAgICAgc2VsZi0+YnVmZmVyWzBdIF49IHNlbGYtPm1hc2tbMF0g
JiAweDBGOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHNlbGYtPmJ1ZmZlclswXSBePSBzZWxmLT5t
YXNrWzBdICYgMHgxRjsKLSAgICB9Ci0KLSAgICBpbnQgcG5fbGVuZ3RoID0gKHNlbGYtPmJ1ZmZl
clswXSAmIDB4MDMpICsgMTsKLSAgICB1aW50MzJfdCBwbl90cnVuY2F0ZWQgPSAwOwotICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgcG5fbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgc2VsZi0+YnVmZmVy
W3BuX29mZnNldCArIGldIF49IHNlbGYtPm1hc2tbMSArIGldOwotICAgICAgICBwbl90cnVuY2F0
ZWQgPSBzZWxmLT5idWZmZXJbcG5fb2Zmc2V0ICsgaV0gfCAocG5fdHJ1bmNhdGVkIDw8IDgpOwot
ICAgIH0KLQotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJ5I2kiLCBzZWxmLT5idWZmZXIsIHBu
X29mZnNldCArIHBuX2xlbmd0aCwgcG5fdHJ1bmNhdGVkKTsKLX0KLQotc3RhdGljIFB5TWV0aG9k
RGVmIEhlYWRlclByb3RlY3Rpb25fbWV0aG9kc1tdID0gewotICAgIHsiYXBwbHkiLCAoUHlDRnVu
Y3Rpb24pSGVhZGVyUHJvdGVjdGlvbl9hcHBseSwgTUVUSF9WQVJBUkdTLCAiIn0sCi0gICAgeyJy
ZW1vdmUiLCAoUHlDRnVuY3Rpb24pSGVhZGVyUHJvdGVjdGlvbl9yZW1vdmUsIE1FVEhfVkFSQVJH
UywgIiJ9LAotICAgIHtOVUxMfQotfTsKLQotc3RhdGljIFB5VHlwZU9iamVjdCBIZWFkZXJQcm90
ZWN0aW9uVHlwZSA9IHsKLSAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKLSAgICBN
T0RVTEVfTkFNRSAiLkhlYWRlclByb3RlY3Rpb24iLCAgICAvKiB0cF9uYW1lICovCi0gICAgc2l6
ZW9mKEhlYWRlclByb3RlY3Rpb25PYmplY3QpLCAgICAgLyogdHBfYmFzaWNzaXplICovCi0gICAg
MCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KLSAg
ICAoZGVzdHJ1Y3RvcilIZWFkZXJQcm90ZWN0aW9uX2RlYWxsb2MsICAgLyogdHBfZGVhbGxvYyAq
LwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICov
Ci0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAq
LwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIg
Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZl
ZCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIg
Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1i
ZXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19z
ZXF1ZW5jZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRw
X2FzX21hcHBpbmcgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiB0cF9oYXNoICAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q
IHRwX2NhbGwgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0
cF9zdHIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9n
ZXRhdHRybyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRw
X3NldGF0dHJvICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog
dHBfYXNfYnVmZmVyICovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgICAgICAgICAg
LyogdHBfZmxhZ3MgKi8KLSAgICAiSGVhZGVyUHJvdGVjdGlvbiBvYmplY3RzIiwgICAgICAgICAv
KiB0cF9kb2MgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0
cF90cmF2ZXJzZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q
IHRwX2NsZWFyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog
dHBfcmljaGNvbXBhcmUgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIEhlYWRlclByb3RlY3Rpb25fbWV0aG9kcywg
ICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogdHBfYmFzZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIHRwX2RpY3QgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCi0gICAgKGluaXRwcm9jKUhlYWRlclBy
b3RlY3Rpb25faW5pdCwgICAgLyogdHBfaW5pdCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCi19OwotCi0KLXN0YXRpYyBzdHJ1Y3QgUHlN
b2R1bGVEZWYgbW9kdWxlZGVmID0gewotICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKLSAgICBN
T0RVTEVfTkFNRSwgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX25hbWUgKi8KLSAgICAiQSBm
YXN0ZXIgYnVmZmVyLiIsICAgICAgICAgICAgICAgICAvKiBtX2RvYyAqLwotICAgIC0xLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fc2l6ZSAqLwotICAgIE5VTEwsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fbWV0aG9kcyAqLwotICAgIE5VTEwsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fcmVsb2FkICovCi0gICAgTlVMTCwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogbV90cmF2ZXJzZSAqLwotICAgIE5VTEwsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fY2xlYXIgKi8KLSAgICBOVUxMLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiBtX2ZyZWUgKi8KLX07Ci0KLVB5TU9ESU5JVF9GVU5D
Ci1QeUluaXRfX2NyeXB0byh2b2lkKQotewotICAgIFB5T2JqZWN0KiBtOwotCi0gICAgbSA9IFB5
TW9kdWxlX0NyZWF0ZSgmbW9kdWxlZGVmKTsKLSAgICBpZiAobSA9PSBOVUxMKQotICAgICAgICBy
ZXR1cm4gTlVMTDsKLQotICAgIENyeXB0b0Vycm9yID0gUHlFcnJfTmV3RXhjZXB0aW9uKE1PRFVM
RV9OQU1FICIuQ3J5cHRvRXJyb3IiLCBQeUV4Y19WYWx1ZUVycm9yLCBOVUxMKTsKLSAgICBQeV9J
TkNSRUYoQ3J5cHRvRXJyb3IpOwotICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiQ3J5cHRvRXJy
b3IiLCBDcnlwdG9FcnJvcik7Ci0KLSAgICBBRUFEVHlwZS50cF9uZXcgPSBQeVR5cGVfR2VuZXJp
Y05ldzsKLSAgICBpZiAoUHlUeXBlX1JlYWR5KCZBRUFEVHlwZSkgPCAwKQotICAgICAgICByZXR1
cm4gTlVMTDsKLSAgICBQeV9JTkNSRUYoJkFFQURUeXBlKTsKLSAgICBQeU1vZHVsZV9BZGRPYmpl
Y3QobSwgIkFFQUQiLCAoUHlPYmplY3QgKikmQUVBRFR5cGUpOwotCi0gICAgSGVhZGVyUHJvdGVj
dGlvblR5cGUudHBfbmV3ID0gUHlUeXBlX0dlbmVyaWNOZXc7Ci0gICAgaWYgKFB5VHlwZV9SZWFk
eSgmSGVhZGVyUHJvdGVjdGlvblR5cGUpIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAg
UHlfSU5DUkVGKCZIZWFkZXJQcm90ZWN0aW9uVHlwZSk7Ci0gICAgUHlNb2R1bGVfQWRkT2JqZWN0
KG0sICJIZWFkZXJQcm90ZWN0aW9uIiwgKFB5T2JqZWN0ICopJkhlYWRlclByb3RlY3Rpb25UeXBl
KTsKLQotICAgIC8vIGVuc3VyZSByZXF1aXJlZCBjaXBoZXJzIGFyZSBpbml0aWFsaXNlZAotICAg
IEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMTI4X2VjYigpKTsKLSAgICBFVlBfYWRkX2NpcGhlcihF
VlBfYWVzXzEyOF9nY20oKSk7Ci0gICAgRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18yNTZfZWNiKCkp
OwotICAgIEVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMjU2X2djbSgpKTsKLQotICAgIHJldHVybiBt
OwotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL19jcnlwdG8ucHlpIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3NyYy9haW9xdWljL19jcnlwdG8ucHlpCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAzMmM1MjMwZDk5MmU3ZjIxOWM5M2JlYzNjYjQ1NzIxNGMyNTE4Yzc3Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9z
cmMvYWlvcXVpYy9fY3J5cHRvLnB5aQorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLWZy
b20gdHlwaW5nIGltcG9ydCBUdXBsZQotCi1jbGFzcyBBRUFEOgotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBjaXBoZXJfbmFtZTogYnl0ZXMsIGtleTogYnl0ZXMsIGl2OiBieXRlcyk6IC4uLgotICAg
IGRlZiBkZWNyeXB0KAotICAgICAgICBzZWxmLCBkYXRhOiBieXRlcywgYXNzb2NpYXRlZF9kYXRh
OiBieXRlcywgcGFja2V0X251bWJlcjogaW50Ci0gICAgKSAtPiBieXRlczogLi4uCi0gICAgZGVm
IGVuY3J5cHQoCi0gICAgICAgIHNlbGYsIGRhdGE6IGJ5dGVzLCBhc3NvY2lhdGVkX2RhdGE6IGJ5
dGVzLCBwYWNrZXRfbnVtYmVyOiBpbnQKLSAgICApIC0+IGJ5dGVzOiAuLi4KLQotY2xhc3MgQ3J5
cHRvRXJyb3IoVmFsdWVFcnJvcik6IC4uLgotCi1jbGFzcyBIZWFkZXJQcm90ZWN0aW9uOgotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBjaXBoZXJfbmFtZTogYnl0ZXMsIGtleTogYnl0ZXMpOiAuLi4K
LSAgICBkZWYgYXBwbHkoc2VsZiwgcGxhaW5faGVhZGVyOiBieXRlcywgcHJvdGVjdGVkX3BheWxv
YWQ6IGJ5dGVzKSAtPiBieXRlczogLi4uCi0gICAgZGVmIHJlbW92ZShzZWxmLCBwYWNrZXQ6IGJ5
dGVzLCBlbmNyeXB0ZWRfb2Zmc2V0OiBpbnQpIC0+IFR1cGxlW2J5dGVzLCBpbnRdOiAuLi4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9hYm91dC5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy9zcmMvYWlvcXVpYy9hYm91dC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOThl
ZWQ4ZDZiY2MzZWIzNTdhN2IwMGFjNTQ2OTQyZDUxY2MzZGY2NC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvYWJv
dXQucHkKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLV9fYXV0aG9yX18gPSAiSmVyZW15
IExhaW7DqSIKLV9fZW1haWxfXyA9ICJqZXJlbXkubGFpbmVAbTR4Lm9yZyIKLV9fbGljZW5zZV9f
ID0gIkJTRCIKLV9fc3VtbWFyeV9fID0gIkFuIGltcGxlbWVudGF0aW9uIG9mIFFVSUMgYW5kIEhU
VFAvMyIKLV9fdGl0bGVfXyA9ICJhaW9xdWljIgotX191cmlfXyA9ICJodHRwczovL2dpdGh1Yi5j
b20vYWlvcnRjL2Fpb3F1aWMiCi1fX3ZlcnNpb25fXyA9ICIwLjguOCIKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9hc3luY2lvL19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L3NyYy9haW9xdWljL2FzeW5jaW8vX19pbml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDNmZGE2OWQ4OTkzNGU4Zjg3YTIxYzViOThlOTdhMTE0OTEyYmU4Y2IuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9h
aW9xdWljL2FzeW5jaW8vX19pbml0X18ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAK
LWZyb20gLmNsaWVudCBpbXBvcnQgY29ubmVjdCAgIyBub3FhCi1mcm9tIC5wcm90b2NvbCBpbXBv
cnQgUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbCAgIyBub3FhCi1mcm9tIC5zZXJ2ZXIgaW1wb3J0IHNl
cnZlICAjIG5vcWEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9hc3luY2lv
L2NsaWVudC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9hc3luY2lvL2NsaWVudC5weQpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDI5MzdlOWU4OTJiZmU3NmNkMmMyZmM3Y2Iz
YTZlNGZmNzM5MzNkYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvYXN5bmNpby9jbGllbnQucHkKKysrIC9kZXYv
bnVsbApAQCAtMSw5NCArMCwwIEBACi1pbXBvcnQgYXN5bmNpbwotaW1wb3J0IGlwYWRkcmVzcwot
aW1wb3J0IHNvY2tldAotaW1wb3J0IHN5cwotZnJvbSB0eXBpbmcgaW1wb3J0IEFzeW5jR2VuZXJh
dG9yLCBDYWxsYWJsZSwgT3B0aW9uYWwsIGNhc3QKLQotZnJvbSAuLnF1aWMuY29uZmlndXJhdGlv
biBpbXBvcnQgUXVpY0NvbmZpZ3VyYXRpb24KLWZyb20gLi5xdWljLmNvbm5lY3Rpb24gaW1wb3J0
IFF1aWNDb25uZWN0aW9uCi1mcm9tIC4udGxzIGltcG9ydCBTZXNzaW9uVGlja2V0SGFuZGxlcgot
ZnJvbSAuY29tcGF0IGltcG9ydCBhc3luY2NvbnRleHRtYW5hZ2VyCi1mcm9tIC5wcm90b2NvbCBp
bXBvcnQgUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbCwgUXVpY1N0cmVhbUhhbmRsZXIKLQotX19hbGxf
XyA9IFsiY29ubmVjdCJdCi0KLQotQGFzeW5jY29udGV4dG1hbmFnZXIKLWFzeW5jIGRlZiBjb25u
ZWN0KAotICAgIGhvc3Q6IHN0ciwKLSAgICBwb3J0OiBpbnQsCi0gICAgKiwKLSAgICBjb25maWd1
cmF0aW9uOiBPcHRpb25hbFtRdWljQ29uZmlndXJhdGlvbl0gPSBOb25lLAotICAgIGNyZWF0ZV9w
cm90b2NvbDogT3B0aW9uYWxbQ2FsbGFibGVdID0gUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbCwKLSAg
ICBzZXNzaW9uX3RpY2tldF9oYW5kbGVyOiBPcHRpb25hbFtTZXNzaW9uVGlja2V0SGFuZGxlcl0g
PSBOb25lLAotICAgIHN0cmVhbV9oYW5kbGVyOiBPcHRpb25hbFtRdWljU3RyZWFtSGFuZGxlcl0g
PSBOb25lLAotICAgIHdhaXRfY29ubmVjdGVkOiBib29sID0gVHJ1ZSwKLSAgICBsb2NhbF9wb3J0
OiBpbnQgPSAwLAotKSAtPiBBc3luY0dlbmVyYXRvcltRdWljQ29ubmVjdGlvblByb3RvY29sLCBO
b25lXToKLSAgICAiIiIKLSAgICBDb25uZWN0IHRvIGEgUVVJQyBzZXJ2ZXIgYXQgdGhlIGdpdmVu
IGBob3N0YCBhbmQgYHBvcnRgLgotCi0gICAgOm1ldGg6YGNvbm5lY3QoKWAgcmV0dXJucyBhbiBh
d2FpdGFibGUuIEF3YWl0aW5nIGl0IHlpZWxkcyBhCi0gICAgOmNsYXNzOmB+YWlvcXVpYy5hc3lu
Y2lvLlF1aWNDb25uZWN0aW9uUHJvdG9jb2xgIHdoaWNoIGNhbiBiZSB1c2VkIHRvCi0gICAgY3Jl
YXRlIHN0cmVhbXMuCi0KLSAgICA6ZnVuYzpgY29ubmVjdGAgYWxzbyBhY2NlcHRzIHRoZSBmb2xs
b3dpbmcgb3B0aW9uYWwgYXJndW1lbnRzOgotCi0gICAgKiBgYGNvbmZpZ3VyYXRpb25gYCBpcyBh
IDpjbGFzczpgfmFpb3F1aWMucXVpYy5jb25maWd1cmF0aW9uLlF1aWNDb25maWd1cmF0aW9uYAot
ICAgICAgY29uZmlndXJhdGlvbiBvYmplY3QuCi0gICAgKiBgYGNyZWF0ZV9wcm90b2NvbGBgIGFs
bG93cyBjdXN0b21pemluZyB0aGUgOmNsYXNzOmB+YXN5bmNpby5Qcm90b2NvbGAgdGhhdAotICAg
ICAgbWFuYWdlcyB0aGUgY29ubmVjdGlvbi4gSXQgc2hvdWxkIGJlIGEgY2FsbGFibGUgb3IgY2xh
c3MgYWNjZXB0aW5nIHRoZSBzYW1lCi0gICAgICBhcmd1bWVudHMgYXMgOmNsYXNzOmB+YWlvcXVp
Yy5hc3luY2lvLlF1aWNDb25uZWN0aW9uUHJvdG9jb2xgIGFuZCByZXR1cm5pbmcKLSAgICAgIGFu
IGluc3RhbmNlIG9mIDpjbGFzczpgfmFpb3F1aWMuYXN5bmNpby5RdWljQ29ubmVjdGlvblByb3Rv
Y29sYCBvciBhIHN1YmNsYXNzLgotICAgICogYGBzZXNzaW9uX3RpY2tldF9oYW5kbGVyYGAgaXMg
YSBjYWxsYmFjayB3aGljaCBpcyBpbnZva2VkIGJ5IHRoZSBUTFMKLSAgICAgIGVuZ2luZSB3aGVu
IGEgbmV3IHNlc3Npb24gdGlja2V0IGlzIHJlY2VpdmVkLgotICAgICogYGBzdHJlYW1faGFuZGxl
cmBgIGlzIGEgY2FsbGJhY2sgd2hpY2ggaXMgaW52b2tlZCB3aGVuZXZlciBhIHN0cmVhbSBpcwot
ICAgICAgY3JlYXRlZC4gSXQgbXVzdCBhY2NlcHQgdHdvIGFyZ3VtZW50czogYSA6Y2xhc3M6YGFz
eW5jaW8uU3RyZWFtUmVhZGVyYAotICAgICAgYW5kIGEgOmNsYXNzOmBhc3luY2lvLlN0cmVhbVdy
aXRlcmAuCi0gICAgKiBgYGxvY2FsX3BvcnRgYCBpcyB0aGUgVURQIHBvcnQgbnVtYmVyIHRoYXQg
dGhpcyBjbGllbnQgd2FudHMgdG8gYmluZC4KLSAgICAiIiIKLSAgICBsb29wID0gYXN5bmNpby5n
ZXRfZXZlbnRfbG9vcCgpCi0gICAgbG9jYWxfaG9zdCA9ICI6OiIKLQotICAgICMgaWYgaG9zdCBp
cyBub3QgYW4gSVAgYWRkcmVzcywgcGFzcyBpdCB0byBlbmFibGUgU05JCi0gICAgdHJ5OgotICAg
ICAgICBpcGFkZHJlc3MuaXBfYWRkcmVzcyhob3N0KQotICAgICAgICBzZXJ2ZXJfbmFtZSA9IE5v
bmUKLSAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgc2VydmVyX25hbWUgPSBob3N0Ci0K
LSAgICAjIGxvb2t1cCByZW1vdGUgYWRkcmVzcwotICAgIGluZm9zID0gYXdhaXQgbG9vcC5nZXRh
ZGRyaW5mbyhob3N0LCBwb3J0LCB0eXBlPXNvY2tldC5TT0NLX0RHUkFNKQotICAgIGFkZHIgPSBp
bmZvc1swXVs0XQotICAgIGlmIGxlbihhZGRyKSA9PSAyOgotICAgICAgICAjIGRldGVybWluZSBi
ZWhhdmlvdXIgZm9yIElQdjQKLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiI6Ci0g
ICAgICAgICAgICAjIG9uIFdpbmRvd3MsIHdlIG11c3QgdXNlIGFuIElQdjQgc29ja2V0IHRvIHJl
YWNoIGFuIElQdjQgaG9zdAotICAgICAgICAgICAgbG9jYWxfaG9zdCA9ICIwLjAuMC4wIgotICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgIyBvdGhlciBwbGF0Zm9ybXMgc3VwcG9ydCBkdWFsLXN0
YWNrIHNvY2tldHMKLSAgICAgICAgICAgIGFkZHIgPSAoIjo6ZmZmZjoiICsgYWRkclswXSwgYWRk
clsxXSwgMCwgMCkKLQotICAgICMgcHJlcGFyZSBRVUlDIGNvbm5lY3Rpb24KLSAgICBpZiBjb25m
aWd1cmF0aW9uIGlzIE5vbmU6Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24gPSBRdWljQ29uZmlndXJh
dGlvbihpc19jbGllbnQ9VHJ1ZSkKLSAgICBpZiBzZXJ2ZXJfbmFtZSBpcyBub3QgTm9uZToKLSAg
ICAgICAgY29uZmlndXJhdGlvbi5zZXJ2ZXJfbmFtZSA9IHNlcnZlcl9uYW1lCi0gICAgY29ubmVj
dGlvbiA9IFF1aWNDb25uZWN0aW9uKAotICAgICAgICBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRp
b24sIHNlc3Npb25fdGlja2V0X2hhbmRsZXI9c2Vzc2lvbl90aWNrZXRfaGFuZGxlcgotICAgICkK
LQotICAgICMgY29ubmVjdAotICAgIF8sIHByb3RvY29sID0gYXdhaXQgbG9vcC5jcmVhdGVfZGF0
YWdyYW1fZW5kcG9pbnQoCi0gICAgICAgIGxhbWJkYTogY3JlYXRlX3Byb3RvY29sKGNvbm5lY3Rp
b24sIHN0cmVhbV9oYW5kbGVyPXN0cmVhbV9oYW5kbGVyKSwKLSAgICAgICAgbG9jYWxfYWRkcj0o
bG9jYWxfaG9zdCwgbG9jYWxfcG9ydCksCi0gICAgKQotICAgIHByb3RvY29sID0gY2FzdChRdWlj
Q29ubmVjdGlvblByb3RvY29sLCBwcm90b2NvbCkKLSAgICBwcm90b2NvbC5jb25uZWN0KGFkZHIp
Ci0gICAgaWYgd2FpdF9jb25uZWN0ZWQ6Ci0gICAgICAgIGF3YWl0IHByb3RvY29sLndhaXRfY29u
bmVjdGVkKCkKLSAgICB0cnk6Ci0gICAgICAgIHlpZWxkIHByb3RvY29sCi0gICAgZmluYWxseToK
LSAgICAgICAgcHJvdG9jb2wuY2xvc2UoKQotICAgIGF3YWl0IHByb3RvY29sLndhaXRfY2xvc2Vk
KCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9hc3luY2lvL2NvbXBhdC5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9hc3luY2lvL2NvbXBhdC5weQpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMjAxZTYyZjZkOTQyOTYxOTMzZmI2ZmUwNzJhZTBmMjdlNjQz
YjRmZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvYXN5bmNpby9jb21wYXQucHkKKysrIC9kZXYvbnVsbApAQCAt
MSwzMyArMCwwIEBACi1mcm9tIGNvbnRleHRsaWIgaW1wb3J0IENvbnRleHREZWNvcmF0b3IKLWZy
b20gZnVuY3Rvb2xzIGltcG9ydCB3cmFwcwotCi10cnk6Ci0gICAgZnJvbSBjb250ZXh0bGliIGlt
cG9ydCBhc3luY2NvbnRleHRtYW5hZ2VyCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgYXN5bmNj
b250ZXh0bWFuYWdlciA9IE5vbmUKLQotCi1jbGFzcyBfQXN5bmNHZW5lcmF0b3JDb250ZXh0TWFu
YWdlcihDb250ZXh0RGVjb3JhdG9yKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZnVuYywgYXJn
cywga3dkcyk6Ci0gICAgICAgIHNlbGYuZ2VuID0gZnVuYygqYXJncywgKiprd2RzKQotICAgICAg
ICBzZWxmLmZ1bmMsIHNlbGYuYXJncywgc2VsZi5rd2RzID0gZnVuYywgYXJncywga3dkcwotICAg
ICAgICBzZWxmLl9fZG9jX18gPSBmdW5jLl9fZG9jX18KLQotICAgIGFzeW5jIGRlZiBfX2FlbnRl
cl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gYXdhaXQgc2VsZi5nZW4uX19hbmV4dF9fKCkKLQot
ICAgIGFzeW5jIGRlZiBfX2FleGl0X18oc2VsZiwgdHlwLCB2YWx1ZSwgdHJhY2ViYWNrKToKLSAg
ICAgICAgaWYgdHlwIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgYXdhaXQgc2VsZi5nZW4uYXRo
cm93KHR5cCwgdmFsdWUsIHRyYWNlYmFjaykKLQotCi1kZWYgX2FzeW5jY29udGV4dG1hbmFnZXIo
ZnVuYyk6Ci0gICAgQHdyYXBzKGZ1bmMpCi0gICAgZGVmIGhlbHBlcigqYXJncywgKiprd2RzKToK
LSAgICAgICAgcmV0dXJuIF9Bc3luY0dlbmVyYXRvckNvbnRleHRNYW5hZ2VyKGZ1bmMsIGFyZ3Ms
IGt3ZHMpCi0KLSAgICByZXR1cm4gaGVscGVyCi0KLQotaWYgYXN5bmNjb250ZXh0bWFuYWdlciBp
cyBOb25lOgotICAgIGFzeW5jY29udGV4dG1hbmFnZXIgPSBfYXN5bmNjb250ZXh0bWFuYWdlcgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2FzeW5jaW8vcHJvdG9jb2wucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvYXN5bmNpby9wcm90b2NvbC5weQpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYmUwMDQzMzViOGZmZmY5ZDcwMjVkMzY1ZWNhYTkzMWY3NzQ3
MjI5My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvYXN5bmNpby9wcm90b2NvbC5weQorKysgL2Rldi9udWxsCkBA
IC0xLDI0MCArMCwwIEBACi1pbXBvcnQgYXN5bmNpbwotZnJvbSB0eXBpbmcgaW1wb3J0IEFueSwg
Q2FsbGFibGUsIERpY3QsIE9wdGlvbmFsLCBUZXh0LCBUdXBsZSwgVW5pb24sIGNhc3QKLQotZnJv
bSAuLnF1aWMgaW1wb3J0IGV2ZW50cwotZnJvbSAuLnF1aWMuY29ubmVjdGlvbiBpbXBvcnQgTmV0
d29ya0FkZHJlc3MsIFF1aWNDb25uZWN0aW9uCi0KLVF1aWNDb25uZWN0aW9uSWRIYW5kbGVyID0g
Q2FsbGFibGVbW2J5dGVzXSwgTm9uZV0KLVF1aWNTdHJlYW1IYW5kbGVyID0gQ2FsbGFibGVbW2Fz
eW5jaW8uU3RyZWFtUmVhZGVyLCBhc3luY2lvLlN0cmVhbVdyaXRlcl0sIE5vbmVdCi0KLQotY2xh
c3MgUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbChhc3luY2lvLkRhdGFncmFtUHJvdG9jb2wpOgotICAg
IGRlZiBfX2luaXRfXygKLSAgICAgICAgc2VsZiwgcXVpYzogUXVpY0Nvbm5lY3Rpb24sIHN0cmVh
bV9oYW5kbGVyOiBPcHRpb25hbFtRdWljU3RyZWFtSGFuZGxlcl0gPSBOb25lCi0gICAgKToKLSAg
ICAgICAgbG9vcCA9IGFzeW5jaW8uZ2V0X2V2ZW50X2xvb3AoKQotCi0gICAgICAgIHNlbGYuX2Ns
b3NlZCA9IGFzeW5jaW8uRXZlbnQoKQotICAgICAgICBzZWxmLl9jb25uZWN0ZWQgPSBGYWxzZQot
ICAgICAgICBzZWxmLl9jb25uZWN0ZWRfd2FpdGVyOiBPcHRpb25hbFthc3luY2lvLkZ1dHVyZVtO
b25lXV0gPSBOb25lCi0gICAgICAgIHNlbGYuX2xvb3AgPSBsb29wCi0gICAgICAgIHNlbGYuX3Bp
bmdfd2FpdGVyczogRGljdFtpbnQsIGFzeW5jaW8uRnV0dXJlW05vbmVdXSA9IHt9Ci0gICAgICAg
IHNlbGYuX3F1aWMgPSBxdWljCi0gICAgICAgIHNlbGYuX3N0cmVhbV9yZWFkZXJzOiBEaWN0W2lu
dCwgYXN5bmNpby5TdHJlYW1SZWFkZXJdID0ge30KLSAgICAgICAgc2VsZi5fdGltZXI6IE9wdGlv
bmFsW2FzeW5jaW8uVGltZXJIYW5kbGVdID0gTm9uZQotICAgICAgICBzZWxmLl90aW1lcl9hdDog
T3B0aW9uYWxbZmxvYXRdID0gTm9uZQotICAgICAgICBzZWxmLl90cmFuc21pdF90YXNrOiBPcHRp
b25hbFthc3luY2lvLkhhbmRsZV0gPSBOb25lCi0gICAgICAgIHNlbGYuX3RyYW5zcG9ydDogT3B0
aW9uYWxbYXN5bmNpby5EYXRhZ3JhbVRyYW5zcG9ydF0gPSBOb25lCi0KLSAgICAgICAgIyBjYWxs
YmFja3MKLSAgICAgICAgc2VsZi5fY29ubmVjdGlvbl9pZF9pc3N1ZWRfaGFuZGxlcjogUXVpY0Nv
bm5lY3Rpb25JZEhhbmRsZXIgPSBsYW1iZGEgYzogTm9uZQotICAgICAgICBzZWxmLl9jb25uZWN0
aW9uX2lkX3JldGlyZWRfaGFuZGxlcjogUXVpY0Nvbm5lY3Rpb25JZEhhbmRsZXIgPSBsYW1iZGEg
YzogTm9uZQotICAgICAgICBzZWxmLl9jb25uZWN0aW9uX3Rlcm1pbmF0ZWRfaGFuZGxlcjogQ2Fs
bGFibGVbW10sIE5vbmVdID0gbGFtYmRhOiBOb25lCi0gICAgICAgIGlmIHN0cmVhbV9oYW5kbGVy
IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2VsZi5fc3RyZWFtX2hhbmRsZXIgPSBzdHJlYW1f
aGFuZGxlcgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5fc3RyZWFtX2hhbmRsZXIg
PSBsYW1iZGEgciwgdzogTm9uZQotCi0gICAgZGVmIGNoYW5nZV9jb25uZWN0aW9uX2lkKHNlbGYp
IC0+IE5vbmU6Ci0gICAgICAgICIiIgotICAgICAgICBDaGFuZ2UgdGhlIGNvbm5lY3Rpb24gSUQg
dXNlZCB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBwZWVyLgotCi0gICAgICAgIFRoZSBwcmV2aW91
cyBjb25uZWN0aW9uIElEIHdpbGwgYmUgcmV0aXJlZC4KLSAgICAgICAgIiIiCi0gICAgICAgIHNl
bGYuX3F1aWMuY2hhbmdlX2Nvbm5lY3Rpb25faWQoKQotICAgICAgICBzZWxmLnRyYW5zbWl0KCkK
LQotICAgIGRlZiBjbG9zZShzZWxmKSAtPiBOb25lOgotICAgICAgICAiIiIKLSAgICAgICAgQ2xv
c2UgdGhlIGNvbm5lY3Rpb24uCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLl9xdWljLmNsb3Nl
KCkKLSAgICAgICAgc2VsZi50cmFuc21pdCgpCi0KLSAgICBkZWYgY29ubmVjdChzZWxmLCBhZGRy
OiBOZXR3b3JrQWRkcmVzcykgLT4gTm9uZToKLSAgICAgICAgIiIiCi0gICAgICAgIEluaXRpYXRl
IHRoZSBUTFMgaGFuZHNoYWtlLgotCi0gICAgICAgIFRoaXMgbWV0aG9kIGNhbiBvbmx5IGJlIGNh
bGxlZCBmb3IgY2xpZW50cyBhbmQgYSBzaW5nbGUgdGltZS4KLSAgICAgICAgIiIiCi0gICAgICAg
IHNlbGYuX3F1aWMuY29ubmVjdChhZGRyLCBub3c9c2VsZi5fbG9vcC50aW1lKCkpCi0gICAgICAg
IHNlbGYudHJhbnNtaXQoKQotCi0gICAgYXN5bmMgZGVmIGNyZWF0ZV9zdHJlYW0oCi0gICAgICAg
IHNlbGYsIGlzX3VuaWRpcmVjdGlvbmFsOiBib29sID0gRmFsc2UKLSAgICApIC0+IFR1cGxlW2Fz
eW5jaW8uU3RyZWFtUmVhZGVyLCBhc3luY2lvLlN0cmVhbVdyaXRlcl06Ci0gICAgICAgICIiIgot
ICAgICAgICBDcmVhdGUgYSBRVUlDIHN0cmVhbSBhbmQgcmV0dXJuIGEgcGFpciBvZiAocmVhZGVy
LCB3cml0ZXIpIG9iamVjdHMuCi0KLSAgICAgICAgVGhlIHJldHVybmVkIHJlYWRlciBhbmQgd3Jp
dGVyIG9iamVjdHMgYXJlIGluc3RhbmNlcyBvZiA6Y2xhc3M6YGFzeW5jaW8uU3RyZWFtUmVhZGVy
YAotICAgICAgICBhbmQgOmNsYXNzOmBhc3luY2lvLlN0cmVhbVdyaXRlcmAgY2xhc3Nlcy4KLSAg
ICAgICAgIiIiCi0gICAgICAgIHN0cmVhbV9pZCA9IHNlbGYuX3F1aWMuZ2V0X25leHRfYXZhaWxh
YmxlX3N0cmVhbV9pZCgKLSAgICAgICAgICAgIGlzX3VuaWRpcmVjdGlvbmFsPWlzX3VuaWRpcmVj
dGlvbmFsCi0gICAgICAgICkKLSAgICAgICAgcmV0dXJuIHNlbGYuX2NyZWF0ZV9zdHJlYW0oc3Ry
ZWFtX2lkKQotCi0gICAgZGVmIHJlcXVlc3Rfa2V5X3VwZGF0ZShzZWxmKSAtPiBOb25lOgotICAg
ICAgICAiIiIKLSAgICAgICAgUmVxdWVzdCBhbiB1cGRhdGUgb2YgdGhlIGVuY3J5cHRpb24ga2V5
cy4KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuX3F1aWMucmVxdWVzdF9rZXlfdXBkYXRlKCkK
LSAgICAgICAgc2VsZi50cmFuc21pdCgpCi0KLSAgICBhc3luYyBkZWYgcGluZyhzZWxmKSAtPiBO
b25lOgotICAgICAgICAiIiIKLSAgICAgICAgUGluZyB0aGUgcGVlciBhbmQgd2FpdCBmb3IgdGhl
IHJlc3BvbnNlLgotICAgICAgICAiIiIKLSAgICAgICAgd2FpdGVyID0gc2VsZi5fbG9vcC5jcmVh
dGVfZnV0dXJlKCkKLSAgICAgICAgdWlkID0gaWQod2FpdGVyKQotICAgICAgICBzZWxmLl9waW5n
X3dhaXRlcnNbdWlkXSA9IHdhaXRlcgotICAgICAgICBzZWxmLl9xdWljLnNlbmRfcGluZyh1aWQp
Ci0gICAgICAgIHNlbGYudHJhbnNtaXQoKQotICAgICAgICBhd2FpdCBhc3luY2lvLnNoaWVsZCh3
YWl0ZXIpCi0KLSAgICBkZWYgdHJhbnNtaXQoc2VsZikgLT4gTm9uZToKLSAgICAgICAgIiIiCi0g
ICAgICAgIFNlbmQgcGVuZGluZyBkYXRhZ3JhbXMgdG8gdGhlIHBlZXIgYW5kIGFybSB0aGUgdGlt
ZXIgaWYgbmVlZGVkLgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5fdHJhbnNtaXRfdGFzayA9
IE5vbmUKLQotICAgICAgICAjIHNlbmQgZGF0YWdyYW1zCi0gICAgICAgIGZvciBkYXRhLCBhZGRy
IGluIHNlbGYuX3F1aWMuZGF0YWdyYW1zX3RvX3NlbmQobm93PXNlbGYuX2xvb3AudGltZSgpKToK
LSAgICAgICAgICAgIHNlbGYuX3RyYW5zcG9ydC5zZW5kdG8oZGF0YSwgYWRkcikKLQotICAgICAg
ICAjIHJlLWFybSB0aW1lcgotICAgICAgICB0aW1lcl9hdCA9IHNlbGYuX3F1aWMuZ2V0X3RpbWVy
KCkKLSAgICAgICAgaWYgc2VsZi5fdGltZXIgaXMgbm90IE5vbmUgYW5kIHNlbGYuX3RpbWVyX2F0
ICE9IHRpbWVyX2F0OgotICAgICAgICAgICAgc2VsZi5fdGltZXIuY2FuY2VsKCkKLSAgICAgICAg
ICAgIHNlbGYuX3RpbWVyID0gTm9uZQotICAgICAgICBpZiBzZWxmLl90aW1lciBpcyBOb25lIGFu
ZCB0aW1lcl9hdCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYuX3RpbWVyID0gc2VsZi5f
bG9vcC5jYWxsX2F0KHRpbWVyX2F0LCBzZWxmLl9oYW5kbGVfdGltZXIpCi0gICAgICAgIHNlbGYu
X3RpbWVyX2F0ID0gdGltZXJfYXQKLQotICAgIGFzeW5jIGRlZiB3YWl0X2Nsb3NlZChzZWxmKSAt
PiBOb25lOgotICAgICAgICAiIiIKLSAgICAgICAgV2FpdCBmb3IgdGhlIGNvbm5lY3Rpb24gdG8g
YmUgY2xvc2VkLgotICAgICAgICAiIiIKLSAgICAgICAgYXdhaXQgc2VsZi5fY2xvc2VkLndhaXQo
KQotCi0gICAgYXN5bmMgZGVmIHdhaXRfY29ubmVjdGVkKHNlbGYpIC0+IE5vbmU6Ci0gICAgICAg
ICIiIgotICAgICAgICBXYWl0IGZvciB0aGUgVExTIGhhbmRzaGFrZSB0byBjb21wbGV0ZS4KLSAg
ICAgICAgIiIiCi0gICAgICAgIGFzc2VydCBzZWxmLl9jb25uZWN0ZWRfd2FpdGVyIGlzIE5vbmUs
ICJhbHJlYWR5IGF3YWl0aW5nIGNvbm5lY3RlZCIKLSAgICAgICAgaWYgbm90IHNlbGYuX2Nvbm5l
Y3RlZDoKLSAgICAgICAgICAgIHNlbGYuX2Nvbm5lY3RlZF93YWl0ZXIgPSBzZWxmLl9sb29wLmNy
ZWF0ZV9mdXR1cmUoKQotICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zaGllbGQoc2VsZi5fY29u
bmVjdGVkX3dhaXRlcikKLQotICAgICMgYXN5bmNpby5UcmFuc3BvcnQKLQotICAgIGRlZiBjb25u
ZWN0aW9uX21hZGUoc2VsZiwgdHJhbnNwb3J0OiBhc3luY2lvLkJhc2VUcmFuc3BvcnQpIC0+IE5v
bmU6Ci0gICAgICAgIHNlbGYuX3RyYW5zcG9ydCA9IGNhc3QoYXN5bmNpby5EYXRhZ3JhbVRyYW5z
cG9ydCwgdHJhbnNwb3J0KQotCi0gICAgZGVmIGRhdGFncmFtX3JlY2VpdmVkKHNlbGYsIGRhdGE6
IFVuaW9uW2J5dGVzLCBUZXh0XSwgYWRkcjogTmV0d29ya0FkZHJlc3MpIC0+IE5vbmU6Ci0gICAg
ICAgIHNlbGYuX3F1aWMucmVjZWl2ZV9kYXRhZ3JhbShjYXN0KGJ5dGVzLCBkYXRhKSwgYWRkciwg
bm93PXNlbGYuX2xvb3AudGltZSgpKQotICAgICAgICBzZWxmLl9wcm9jZXNzX2V2ZW50cygpCi0g
ICAgICAgIHNlbGYudHJhbnNtaXQoKQotCi0gICAgIyBvdmVycmlkYWJsZQotCi0gICAgZGVmIHF1
aWNfZXZlbnRfcmVjZWl2ZWQoc2VsZiwgZXZlbnQ6IGV2ZW50cy5RdWljRXZlbnQpIC0+IE5vbmU6
Ci0gICAgICAgICIiIgotICAgICAgICBDYWxsZWQgd2hlbiBhIFFVSUMgZXZlbnQgaXMgcmVjZWl2
ZWQuCi0KLSAgICAgICAgUmVpbXBsZW1lbnQgdGhpcyBpbiB5b3VyIHN1YmNsYXNzIHRvIGhhbmRs
ZSB0aGUgZXZlbnRzLgotICAgICAgICAiIiIKLSAgICAgICAgIyBGSVhNRTogbW92ZSB0aGlzIHRv
IGEgc3ViY2xhc3MKLSAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgZXZlbnRzLkNvbm5lY3Rp
b25UZXJtaW5hdGVkKToKLSAgICAgICAgICAgIGZvciByZWFkZXIgaW4gc2VsZi5fc3RyZWFtX3Jl
YWRlcnMudmFsdWVzKCk6Ci0gICAgICAgICAgICAgICAgcmVhZGVyLmZlZWRfZW9mKCkKLSAgICAg
ICAgZWxpZiBpc2luc3RhbmNlKGV2ZW50LCBldmVudHMuU3RyZWFtRGF0YVJlY2VpdmVkKToKLSAg
ICAgICAgICAgIHJlYWRlciA9IHNlbGYuX3N0cmVhbV9yZWFkZXJzLmdldChldmVudC5zdHJlYW1f
aWQsIE5vbmUpCi0gICAgICAgICAgICBpZiByZWFkZXIgaXMgTm9uZToKLSAgICAgICAgICAgICAg
ICByZWFkZXIsIHdyaXRlciA9IHNlbGYuX2NyZWF0ZV9zdHJlYW0oZXZlbnQuc3RyZWFtX2lkKQot
ICAgICAgICAgICAgICAgIHNlbGYuX3N0cmVhbV9oYW5kbGVyKHJlYWRlciwgd3JpdGVyKQotICAg
ICAgICAgICAgcmVhZGVyLmZlZWRfZGF0YShldmVudC5kYXRhKQotICAgICAgICAgICAgaWYgZXZl
bnQuZW5kX3N0cmVhbToKLSAgICAgICAgICAgICAgICByZWFkZXIuZmVlZF9lb2YoKQotCi0gICAg
IyBwcml2YXRlCi0KLSAgICBkZWYgX2NyZWF0ZV9zdHJlYW0oCi0gICAgICAgIHNlbGYsIHN0cmVh
bV9pZDogaW50Ci0gICAgKSAtPiBUdXBsZVthc3luY2lvLlN0cmVhbVJlYWRlciwgYXN5bmNpby5T
dHJlYW1Xcml0ZXJdOgotICAgICAgICBhZGFwdGVyID0gUXVpY1N0cmVhbUFkYXB0ZXIoc2VsZiwg
c3RyZWFtX2lkKQotICAgICAgICByZWFkZXIgPSBhc3luY2lvLlN0cmVhbVJlYWRlcigpCi0gICAg
ICAgIHdyaXRlciA9IGFzeW5jaW8uU3RyZWFtV3JpdGVyKGFkYXB0ZXIsIE5vbmUsIHJlYWRlciwg
c2VsZi5fbG9vcCkKLSAgICAgICAgc2VsZi5fc3RyZWFtX3JlYWRlcnNbc3RyZWFtX2lkXSA9IHJl
YWRlcgotICAgICAgICByZXR1cm4gcmVhZGVyLCB3cml0ZXIKLQotICAgIGRlZiBfaGFuZGxlX3Rp
bWVyKHNlbGYpIC0+IE5vbmU6Ci0gICAgICAgIG5vdyA9IG1heChzZWxmLl90aW1lcl9hdCwgc2Vs
Zi5fbG9vcC50aW1lKCkpCi0gICAgICAgIHNlbGYuX3RpbWVyID0gTm9uZQotICAgICAgICBzZWxm
Ll90aW1lcl9hdCA9IE5vbmUKLSAgICAgICAgc2VsZi5fcXVpYy5oYW5kbGVfdGltZXIobm93PW5v
dykKLSAgICAgICAgc2VsZi5fcHJvY2Vzc19ldmVudHMoKQotICAgICAgICBzZWxmLnRyYW5zbWl0
KCkKLQotICAgIGRlZiBfcHJvY2Vzc19ldmVudHMoc2VsZikgLT4gTm9uZToKLSAgICAgICAgZXZl
bnQgPSBzZWxmLl9xdWljLm5leHRfZXZlbnQoKQotICAgICAgICB3aGlsZSBldmVudCBpcyBub3Qg
Tm9uZToKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGV2ZW50cy5Db25uZWN0aW9u
SWRJc3N1ZWQpOgotICAgICAgICAgICAgICAgIHNlbGYuX2Nvbm5lY3Rpb25faWRfaXNzdWVkX2hh
bmRsZXIoZXZlbnQuY29ubmVjdGlvbl9pZCkKLSAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShl
dmVudCwgZXZlbnRzLkNvbm5lY3Rpb25JZFJldGlyZWQpOgotICAgICAgICAgICAgICAgIHNlbGYu
X2Nvbm5lY3Rpb25faWRfcmV0aXJlZF9oYW5kbGVyKGV2ZW50LmNvbm5lY3Rpb25faWQpCi0gICAg
ICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIGV2ZW50cy5Db25uZWN0aW9uVGVybWluYXRl
ZCk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fY29ubmVjdGlvbl90ZXJtaW5hdGVkX2hhbmRsZXIo
KQotCi0gICAgICAgICAgICAgICAgIyBhYm9ydCBjb25uZWN0aW9uIHdhaXRlcgotICAgICAgICAg
ICAgICAgIGlmIHNlbGYuX2Nvbm5lY3RlZF93YWl0ZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAg
ICAgICAgICAgIHdhaXRlciA9IHNlbGYuX2Nvbm5lY3RlZF93YWl0ZXIKLSAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fY29ubmVjdGVkX3dhaXRlciA9IE5vbmUKLSAgICAgICAgICAgICAgICAgICAg
d2FpdGVyLnNldF9leGNlcHRpb24oQ29ubmVjdGlvbkVycm9yKQotCi0gICAgICAgICAgICAgICAg
IyBhYm9ydCBwaW5nIHdhaXRlcnMKLSAgICAgICAgICAgICAgICBmb3Igd2FpdGVyIGluIHNlbGYu
X3Bpbmdfd2FpdGVycy52YWx1ZXMoKToKLSAgICAgICAgICAgICAgICAgICAgd2FpdGVyLnNldF9l
eGNlcHRpb24oQ29ubmVjdGlvbkVycm9yKQotICAgICAgICAgICAgICAgIHNlbGYuX3Bpbmdfd2Fp
dGVycy5jbGVhcigpCi0KLSAgICAgICAgICAgICAgICBzZWxmLl9jbG9zZWQuc2V0KCkKLSAgICAg
ICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgZXZlbnRzLkhhbmRzaGFrZUNvbXBsZXRlZCk6
Ci0gICAgICAgICAgICAgICAgaWYgc2VsZi5fY29ubmVjdGVkX3dhaXRlciBpcyBub3QgTm9uZToK
LSAgICAgICAgICAgICAgICAgICAgd2FpdGVyID0gc2VsZi5fY29ubmVjdGVkX3dhaXRlcgotICAg
ICAgICAgICAgICAgICAgICBzZWxmLl9jb25uZWN0ZWQgPSBUcnVlCi0gICAgICAgICAgICAgICAg
ICAgIHNlbGYuX2Nvbm5lY3RlZF93YWl0ZXIgPSBOb25lCi0gICAgICAgICAgICAgICAgICAgIHdh
aXRlci5zZXRfcmVzdWx0KE5vbmUpCi0gICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQs
IGV2ZW50cy5QaW5nQWNrbm93bGVkZ2VkKToKLSAgICAgICAgICAgICAgICB3YWl0ZXIgPSBzZWxm
Ll9waW5nX3dhaXRlcnMucG9wKGV2ZW50LnVpZCwgTm9uZSkKLSAgICAgICAgICAgICAgICBpZiB3
YWl0ZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHdhaXRlci5zZXRfcmVzdWx0
KE5vbmUpCi0gICAgICAgICAgICBzZWxmLnF1aWNfZXZlbnRfcmVjZWl2ZWQoZXZlbnQpCi0gICAg
ICAgICAgICBldmVudCA9IHNlbGYuX3F1aWMubmV4dF9ldmVudCgpCi0KLSAgICBkZWYgX3RyYW5z
bWl0X3Nvb24oc2VsZikgLT4gTm9uZToKLSAgICAgICAgaWYgc2VsZi5fdHJhbnNtaXRfdGFzayBp
cyBOb25lOgotICAgICAgICAgICAgc2VsZi5fdHJhbnNtaXRfdGFzayA9IHNlbGYuX2xvb3AuY2Fs
bF9zb29uKHNlbGYudHJhbnNtaXQpCi0KLQotY2xhc3MgUXVpY1N0cmVhbUFkYXB0ZXIoYXN5bmNp
by5UcmFuc3BvcnQpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwcm90b2NvbDogUXVpY0Nvbm5l
Y3Rpb25Qcm90b2NvbCwgc3RyZWFtX2lkOiBpbnQpOgotICAgICAgICBzZWxmLnByb3RvY29sID0g
cHJvdG9jb2wKLSAgICAgICAgc2VsZi5zdHJlYW1faWQgPSBzdHJlYW1faWQKLQotICAgIGRlZiBj
YW5fd3JpdGVfZW9mKHNlbGYpIC0+IGJvb2w6Ci0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICBk
ZWYgZ2V0X2V4dHJhX2luZm8oc2VsZiwgbmFtZTogc3RyLCBkZWZhdWx0OiBBbnkgPSBOb25lKSAt
PiBBbnk6Ci0gICAgICAgICIiIgotICAgICAgICBHZXQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHVu
ZGVybHlpbmcgUVVJQyBzdHJlYW0uCi0gICAgICAgICIiIgotICAgICAgICBpZiBuYW1lID09ICJz
dHJlYW1faWQiOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuc3RyZWFtX2lkCi0KLSAgICBkZWYg
d3JpdGUoc2VsZiwgZGF0YSk6Ci0gICAgICAgIHNlbGYucHJvdG9jb2wuX3F1aWMuc2VuZF9zdHJl
YW1fZGF0YShzZWxmLnN0cmVhbV9pZCwgZGF0YSkKLSAgICAgICAgc2VsZi5wcm90b2NvbC5fdHJh
bnNtaXRfc29vbigpCi0KLSAgICBkZWYgd3JpdGVfZW9mKHNlbGYpOgotICAgICAgICBzZWxmLnBy
b3RvY29sLl9xdWljLnNlbmRfc3RyZWFtX2RhdGEoc2VsZi5zdHJlYW1faWQsIGIiIiwgZW5kX3N0
cmVhbT1UcnVlKQotICAgICAgICBzZWxmLnByb3RvY29sLl90cmFuc21pdF9zb29uKCkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9hc3luY2lvL3NlcnZlci5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9zcmMvYWlvcXVpYy9hc3luY2lvL3NlcnZlci5weQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMjQwZWU0NjBiNmVkNjZlMDk0NTM4NWYxZjU0ODU4Y2MwZWY5MTg4NS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
c3JjL2Fpb3F1aWMvYXN5bmNpby9zZXJ2ZXIucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyMTAgKzAs
MCBAQAotaW1wb3J0IGFzeW5jaW8KLWltcG9ydCBvcwotZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHBh
cnRpYWwKLWZyb20gdHlwaW5nIGltcG9ydCBDYWxsYWJsZSwgRGljdCwgT3B0aW9uYWwsIFRleHQs
IFVuaW9uLCBjYXN0Ci0KLWZyb20gLi5idWZmZXIgaW1wb3J0IEJ1ZmZlcgotZnJvbSAuLnF1aWMu
Y29uZmlndXJhdGlvbiBpbXBvcnQgUXVpY0NvbmZpZ3VyYXRpb24KLWZyb20gLi5xdWljLmNvbm5l
Y3Rpb24gaW1wb3J0IE5ldHdvcmtBZGRyZXNzLCBRdWljQ29ubmVjdGlvbgotZnJvbSAuLnF1aWMu
cGFja2V0IGltcG9ydCAoCi0gICAgUEFDS0VUX1RZUEVfSU5JVElBTCwKLSAgICBlbmNvZGVfcXVp
Y19yZXRyeSwKLSAgICBlbmNvZGVfcXVpY192ZXJzaW9uX25lZ290aWF0aW9uLAotICAgIHB1bGxf
cXVpY19oZWFkZXIsCi0pCi1mcm9tIC4ucXVpYy5yZXRyeSBpbXBvcnQgUXVpY1JldHJ5VG9rZW5I
YW5kbGVyCi1mcm9tIC4udGxzIGltcG9ydCBTZXNzaW9uVGlja2V0RmV0Y2hlciwgU2Vzc2lvblRp
Y2tldEhhbmRsZXIKLWZyb20gLnByb3RvY29sIGltcG9ydCBRdWljQ29ubmVjdGlvblByb3RvY29s
LCBRdWljU3RyZWFtSGFuZGxlcgotCi1fX2FsbF9fID0gWyJzZXJ2ZSJdCi0KLQotY2xhc3MgUXVp
Y1NlcnZlcihhc3luY2lvLkRhdGFncmFtUHJvdG9jb2wpOgotICAgIGRlZiBfX2luaXRfXygKLSAg
ICAgICAgc2VsZiwKLSAgICAgICAgKiwKLSAgICAgICAgY29uZmlndXJhdGlvbjogUXVpY0NvbmZp
Z3VyYXRpb24sCi0gICAgICAgIGNyZWF0ZV9wcm90b2NvbDogQ2FsbGFibGUgPSBRdWljQ29ubmVj
dGlvblByb3RvY29sLAotICAgICAgICBzZXNzaW9uX3RpY2tldF9mZXRjaGVyOiBPcHRpb25hbFtT
ZXNzaW9uVGlja2V0RmV0Y2hlcl0gPSBOb25lLAotICAgICAgICBzZXNzaW9uX3RpY2tldF9oYW5k
bGVyOiBPcHRpb25hbFtTZXNzaW9uVGlja2V0SGFuZGxlcl0gPSBOb25lLAotICAgICAgICBzdGF0
ZWxlc3NfcmV0cnk6IGJvb2wgPSBGYWxzZSwKLSAgICAgICAgc3RyZWFtX2hhbmRsZXI6IE9wdGlv
bmFsW1F1aWNTdHJlYW1IYW5kbGVyXSA9IE5vbmUsCi0gICAgKSAtPiBOb25lOgotICAgICAgICBz
ZWxmLl9jb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbgotICAgICAgICBzZWxmLl9jcmVhdGVf
cHJvdG9jb2wgPSBjcmVhdGVfcHJvdG9jb2wKLSAgICAgICAgc2VsZi5fbG9vcCA9IGFzeW5jaW8u
Z2V0X2V2ZW50X2xvb3AoKQotICAgICAgICBzZWxmLl9wcm90b2NvbHM6IERpY3RbYnl0ZXMsIFF1
aWNDb25uZWN0aW9uUHJvdG9jb2xdID0ge30KLSAgICAgICAgc2VsZi5fc2Vzc2lvbl90aWNrZXRf
ZmV0Y2hlciA9IHNlc3Npb25fdGlja2V0X2ZldGNoZXIKLSAgICAgICAgc2VsZi5fc2Vzc2lvbl90
aWNrZXRfaGFuZGxlciA9IHNlc3Npb25fdGlja2V0X2hhbmRsZXIKLSAgICAgICAgc2VsZi5fdHJh
bnNwb3J0OiBPcHRpb25hbFthc3luY2lvLkRhdGFncmFtVHJhbnNwb3J0XSA9IE5vbmUKLQotICAg
ICAgICBzZWxmLl9zdHJlYW1faGFuZGxlciA9IHN0cmVhbV9oYW5kbGVyCi0KLSAgICAgICAgaWYg
c3RhdGVsZXNzX3JldHJ5OgotICAgICAgICAgICAgc2VsZi5fcmV0cnkgPSBRdWljUmV0cnlUb2tl
bkhhbmRsZXIoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5fcmV0cnkgPSBOb25l
Ci0KLSAgICBkZWYgY2xvc2Uoc2VsZik6Ci0gICAgICAgIGZvciBwcm90b2NvbCBpbiBzZXQoc2Vs
Zi5fcHJvdG9jb2xzLnZhbHVlcygpKToKLSAgICAgICAgICAgIHByb3RvY29sLmNsb3NlKCkKLSAg
ICAgICAgc2VsZi5fcHJvdG9jb2xzLmNsZWFyKCkKLSAgICAgICAgc2VsZi5fdHJhbnNwb3J0LmNs
b3NlKCkKLQotICAgIGRlZiBjb25uZWN0aW9uX21hZGUoc2VsZiwgdHJhbnNwb3J0OiBhc3luY2lv
LkJhc2VUcmFuc3BvcnQpIC0+IE5vbmU6Ci0gICAgICAgIHNlbGYuX3RyYW5zcG9ydCA9IGNhc3Qo
YXN5bmNpby5EYXRhZ3JhbVRyYW5zcG9ydCwgdHJhbnNwb3J0KQotCi0gICAgZGVmIGRhdGFncmFt
X3JlY2VpdmVkKHNlbGYsIGRhdGE6IFVuaW9uW2J5dGVzLCBUZXh0XSwgYWRkcjogTmV0d29ya0Fk
ZHJlc3MpIC0+IE5vbmU6Ci0gICAgICAgIGRhdGEgPSBjYXN0KGJ5dGVzLCBkYXRhKQotICAgICAg
ICBidWYgPSBCdWZmZXIoZGF0YT1kYXRhKQotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGhl
YWRlciA9IHB1bGxfcXVpY19oZWFkZXIoCi0gICAgICAgICAgICAgICAgYnVmLCBob3N0X2NpZF9s
ZW5ndGg9c2VsZi5fY29uZmlndXJhdGlvbi5jb25uZWN0aW9uX2lkX2xlbmd0aAotICAgICAgICAg
ICAgKQotICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgIHJldHVybgotCi0g
ICAgICAgICMgdmVyc2lvbiBuZWdvdGlhdGlvbgotICAgICAgICBpZiAoCi0gICAgICAgICAgICBo
ZWFkZXIudmVyc2lvbiBpcyBub3QgTm9uZQotICAgICAgICAgICAgYW5kIGhlYWRlci52ZXJzaW9u
IG5vdCBpbiBzZWxmLl9jb25maWd1cmF0aW9uLnN1cHBvcnRlZF92ZXJzaW9ucwotICAgICAgICAp
OgotICAgICAgICAgICAgc2VsZi5fdHJhbnNwb3J0LnNlbmR0bygKLSAgICAgICAgICAgICAgICBl
bmNvZGVfcXVpY192ZXJzaW9uX25lZ290aWF0aW9uKAotICAgICAgICAgICAgICAgICAgICBzb3Vy
Y2VfY2lkPWhlYWRlci5kZXN0aW5hdGlvbl9jaWQsCi0gICAgICAgICAgICAgICAgICAgIGRlc3Rp
bmF0aW9uX2NpZD1oZWFkZXIuc291cmNlX2NpZCwKLSAgICAgICAgICAgICAgICAgICAgc3VwcG9y
dGVkX3ZlcnNpb25zPXNlbGYuX2NvbmZpZ3VyYXRpb24uc3VwcG9ydGVkX3ZlcnNpb25zLAotICAg
ICAgICAgICAgICAgICksCi0gICAgICAgICAgICAgICAgYWRkciwKLSAgICAgICAgICAgICkKLSAg
ICAgICAgICAgIHJldHVybgotCi0gICAgICAgIHByb3RvY29sID0gc2VsZi5fcHJvdG9jb2xzLmdl
dChoZWFkZXIuZGVzdGluYXRpb25fY2lkLCBOb25lKQotICAgICAgICBvcmlnaW5hbF9jb25uZWN0
aW9uX2lkOiBPcHRpb25hbFtieXRlc10gPSBOb25lCi0gICAgICAgIGlmICgKLSAgICAgICAgICAg
IHByb3RvY29sIGlzIE5vbmUKLSAgICAgICAgICAgIGFuZCBsZW4oZGF0YSkgPj0gMTIwMAotICAg
ICAgICAgICAgYW5kIGhlYWRlci5wYWNrZXRfdHlwZSA9PSBQQUNLRVRfVFlQRV9JTklUSUFMCi0g
ICAgICAgICk6Ci0gICAgICAgICAgICAjIHN0YXRlbGVzcyByZXRyeQotICAgICAgICAgICAgaWYg
c2VsZi5fcmV0cnkgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgaWYgbm90IGhlYWRlci50
b2tlbjoKLSAgICAgICAgICAgICAgICAgICAgIyBjcmVhdGUgYSByZXRyeSB0b2tlbgotICAgICAg
ICAgICAgICAgICAgICBzZWxmLl90cmFuc3BvcnQuc2VuZHRvKAotICAgICAgICAgICAgICAgICAg
ICAgICAgZW5jb2RlX3F1aWNfcmV0cnkoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVy
c2lvbj1oZWFkZXIudmVyc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2Vf
Y2lkPW9zLnVyYW5kb20oOCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRp
b25fY2lkPWhlYWRlci5zb3VyY2VfY2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9y
aWdpbmFsX2Rlc3RpbmF0aW9uX2NpZD1oZWFkZXIuZGVzdGluYXRpb25fY2lkLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHJ5X3Rva2VuPXNlbGYuX3JldHJ5LmNyZWF0ZV90b2tlbigK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkciwgaGVhZGVyLmRlc3RpbmF0aW9u
X2NpZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICAgICAgICAg
ICAgICApLAotICAgICAgICAgICAgICAgICAgICAgICAgYWRkciwKLSAgICAgICAgICAgICAgICAg
ICAgKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgICAgICAgICAjIHZhbGlkYXRlIHJldHJ5IHRva2VuCi0gICAgICAgICAgICAg
ICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsX2Nvbm5lY3Rpb25f
aWQgPSBzZWxmLl9yZXRyeS52YWxpZGF0ZV90b2tlbigKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhZGRyLCBoZWFkZXIudG9rZW4KLSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAg
ICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4KLQotICAgICAgICAgICAgIyBjcmVhdGUgbmV3IGNvbm5lY3Rpb24KLSAgICAgICAg
ICAgIGNvbm5lY3Rpb24gPSBRdWljQ29ubmVjdGlvbigKLSAgICAgICAgICAgICAgICBjb25maWd1
cmF0aW9uPXNlbGYuX2NvbmZpZ3VyYXRpb24sCi0gICAgICAgICAgICAgICAgbG9nZ2VyX2Nvbm5l
Y3Rpb25faWQ9b3JpZ2luYWxfY29ubmVjdGlvbl9pZCBvciBoZWFkZXIuZGVzdGluYXRpb25fY2lk
LAotICAgICAgICAgICAgICAgIG9yaWdpbmFsX2Nvbm5lY3Rpb25faWQ9b3JpZ2luYWxfY29ubmVj
dGlvbl9pZCwKLSAgICAgICAgICAgICAgICBzZXNzaW9uX3RpY2tldF9mZXRjaGVyPXNlbGYuX3Nl
c3Npb25fdGlja2V0X2ZldGNoZXIsCi0gICAgICAgICAgICAgICAgc2Vzc2lvbl90aWNrZXRfaGFu
ZGxlcj1zZWxmLl9zZXNzaW9uX3RpY2tldF9oYW5kbGVyLAotICAgICAgICAgICAgKQotICAgICAg
ICAgICAgcHJvdG9jb2wgPSBzZWxmLl9jcmVhdGVfcHJvdG9jb2woCi0gICAgICAgICAgICAgICAg
Y29ubmVjdGlvbiwgc3RyZWFtX2hhbmRsZXI9c2VsZi5fc3RyZWFtX2hhbmRsZXIKLSAgICAgICAg
ICAgICkKLSAgICAgICAgICAgIHByb3RvY29sLmNvbm5lY3Rpb25fbWFkZShzZWxmLl90cmFuc3Bv
cnQpCi0KLSAgICAgICAgICAgICMgcmVnaXN0ZXIgY2FsbGJhY2tzCi0gICAgICAgICAgICBwcm90
b2NvbC5fY29ubmVjdGlvbl9pZF9pc3N1ZWRfaGFuZGxlciA9IHBhcnRpYWwoCi0gICAgICAgICAg
ICAgICAgc2VsZi5fY29ubmVjdGlvbl9pZF9pc3N1ZWQsIHByb3RvY29sPXByb3RvY29sCi0gICAg
ICAgICAgICApCi0gICAgICAgICAgICBwcm90b2NvbC5fY29ubmVjdGlvbl9pZF9yZXRpcmVkX2hh
bmRsZXIgPSBwYXJ0aWFsKAotICAgICAgICAgICAgICAgIHNlbGYuX2Nvbm5lY3Rpb25faWRfcmV0
aXJlZCwgcHJvdG9jb2w9cHJvdG9jb2wKLSAgICAgICAgICAgICkKLSAgICAgICAgICAgIHByb3Rv
Y29sLl9jb25uZWN0aW9uX3Rlcm1pbmF0ZWRfaGFuZGxlciA9IHBhcnRpYWwoCi0gICAgICAgICAg
ICAgICAgc2VsZi5fY29ubmVjdGlvbl90ZXJtaW5hdGVkLCBwcm90b2NvbD1wcm90b2NvbAotICAg
ICAgICAgICAgKQotCi0gICAgICAgICAgICBzZWxmLl9wcm90b2NvbHNbaGVhZGVyLmRlc3RpbmF0
aW9uX2NpZF0gPSBwcm90b2NvbAotICAgICAgICAgICAgc2VsZi5fcHJvdG9jb2xzW2Nvbm5lY3Rp
b24uaG9zdF9jaWRdID0gcHJvdG9jb2wKLQotICAgICAgICBpZiBwcm90b2NvbCBpcyBub3QgTm9u
ZToKLSAgICAgICAgICAgIHByb3RvY29sLmRhdGFncmFtX3JlY2VpdmVkKGRhdGEsIGFkZHIpCi0K
LSAgICBkZWYgX2Nvbm5lY3Rpb25faWRfaXNzdWVkKHNlbGYsIGNpZDogYnl0ZXMsIHByb3RvY29s
OiBRdWljQ29ubmVjdGlvblByb3RvY29sKToKLSAgICAgICAgc2VsZi5fcHJvdG9jb2xzW2NpZF0g
PSBwcm90b2NvbAotCi0gICAgZGVmIF9jb25uZWN0aW9uX2lkX3JldGlyZWQoCi0gICAgICAgIHNl
bGYsIGNpZDogYnl0ZXMsIHByb3RvY29sOiBRdWljQ29ubmVjdGlvblByb3RvY29sCi0gICAgKSAt
PiBOb25lOgotICAgICAgICBhc3NlcnQgc2VsZi5fcHJvdG9jb2xzW2NpZF0gPT0gcHJvdG9jb2wK
LSAgICAgICAgZGVsIHNlbGYuX3Byb3RvY29sc1tjaWRdCi0KLSAgICBkZWYgX2Nvbm5lY3Rpb25f
dGVybWluYXRlZChzZWxmLCBwcm90b2NvbDogUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbCk6Ci0gICAg
ICAgIGZvciBjaWQsIHByb3RvIGluIGxpc3Qoc2VsZi5fcHJvdG9jb2xzLml0ZW1zKCkpOgotICAg
ICAgICAgICAgaWYgcHJvdG8gPT0gcHJvdG9jb2w6Ci0gICAgICAgICAgICAgICAgZGVsIHNlbGYu
X3Byb3RvY29sc1tjaWRdCi0KLQotYXN5bmMgZGVmIHNlcnZlKAotICAgIGhvc3Q6IHN0ciwKLSAg
ICBwb3J0OiBpbnQsCi0gICAgKiwKLSAgICBjb25maWd1cmF0aW9uOiBRdWljQ29uZmlndXJhdGlv
biwKLSAgICBjcmVhdGVfcHJvdG9jb2w6IENhbGxhYmxlID0gUXVpY0Nvbm5lY3Rpb25Qcm90b2Nv
bCwKLSAgICBzZXNzaW9uX3RpY2tldF9mZXRjaGVyOiBPcHRpb25hbFtTZXNzaW9uVGlja2V0RmV0
Y2hlcl0gPSBOb25lLAotICAgIHNlc3Npb25fdGlja2V0X2hhbmRsZXI6IE9wdGlvbmFsW1Nlc3Np
b25UaWNrZXRIYW5kbGVyXSA9IE5vbmUsCi0gICAgc3RhdGVsZXNzX3JldHJ5OiBib29sID0gRmFs
c2UsCi0gICAgc3RyZWFtX2hhbmRsZXI6IFF1aWNTdHJlYW1IYW5kbGVyID0gTm9uZSwKLSkgLT4g
UXVpY1NlcnZlcjoKLSAgICAiIiIKLSAgICBTdGFydCBhIFFVSUMgc2VydmVyIGF0IHRoZSBnaXZl
biBgaG9zdGAgYW5kIGBwb3J0YC4KLQotICAgIDpmdW5jOmBzZXJ2ZWAgcmVxdWlyZXMgYSA6Y2xh
c3M6YH5haW9xdWljLnF1aWMuY29uZmlndXJhdGlvbi5RdWljQ29uZmlndXJhdGlvbmAKLSAgICBj
b250YWluaW5nIFRMUyBjZXJ0aWZpY2F0ZSBhbmQgcHJpdmF0ZSBrZXkgYXMgdGhlIGBgY29uZmln
dXJhdGlvbmBgIGFyZ3VtZW50LgotCi0gICAgOmZ1bmM6YHNlcnZlYCBhbHNvIGFjY2VwdHMgdGhl
IGZvbGxvd2luZyBvcHRpb25hbCBhcmd1bWVudHM6Ci0KLSAgICAqIGBgY3JlYXRlX3Byb3RvY29s
YGAgYWxsb3dzIGN1c3RvbWl6aW5nIHRoZSA6Y2xhc3M6YH5hc3luY2lvLlByb3RvY29sYCB0aGF0
Ci0gICAgICBtYW5hZ2VzIHRoZSBjb25uZWN0aW9uLiBJdCBzaG91bGQgYmUgYSBjYWxsYWJsZSBv
ciBjbGFzcyBhY2NlcHRpbmcgdGhlIHNhbWUKLSAgICAgIGFyZ3VtZW50cyBhcyA6Y2xhc3M6YH5h
aW9xdWljLmFzeW5jaW8uUXVpY0Nvbm5lY3Rpb25Qcm90b2NvbGAgYW5kIHJldHVybmluZwotICAg
ICAgYW4gaW5zdGFuY2Ugb2YgOmNsYXNzOmB+YWlvcXVpYy5hc3luY2lvLlF1aWNDb25uZWN0aW9u
UHJvdG9jb2xgIG9yIGEgc3ViY2xhc3MuCi0gICAgKiBgYHNlc3Npb25fdGlja2V0X2ZldGNoZXJg
YCBpcyBhIGNhbGxiYWNrIHdoaWNoIGlzIGludm9rZWQgYnkgdGhlIFRMUwotICAgICAgZW5naW5l
IHdoZW4gYSBzZXNzaW9uIHRpY2tldCBpcyBwcmVzZW50ZWQgYnkgdGhlIHBlZXIuIEl0IHNob3Vs
ZCByZXR1cm4KLSAgICAgIHRoZSBzZXNzaW9uIHRpY2tldCB3aXRoIHRoZSBzcGVjaWZpZWQgSUQg
b3IgYE5vbmVgIGlmIGl0IGlzIG5vdCBmb3VuZC4KLSAgICAqIGBgc2Vzc2lvbl90aWNrZXRfaGFu
ZGxlcmBgIGlzIGEgY2FsbGJhY2sgd2hpY2ggaXMgaW52b2tlZCBieSB0aGUgVExTCi0gICAgICBl
bmdpbmUgd2hlbiBhIG5ldyBzZXNzaW9uIHRpY2tldCBpcyBpc3N1ZWQuIEl0IHNob3VsZCBzdG9y
ZSB0aGUgc2Vzc2lvbgotICAgICAgdGlja2V0IGZvciBmdXR1cmUgbG9va3VwLgotICAgICogYGBz
dGF0ZWxlc3NfcmV0cnlgYCBzcGVjaWZpZXMgd2hldGhlciBhIHN0YXRlbGVzcyByZXRyeSBzaG91
bGQgYmUKLSAgICAgIHBlcmZvcm1lZCBwcmlvciB0byBoYW5kbGluZyBuZXcgY29ubmVjdGlvbnMu
Ci0gICAgKiBgYHN0cmVhbV9oYW5kbGVyYGAgaXMgYSBjYWxsYmFjayB3aGljaCBpcyBpbnZva2Vk
IHdoZW5ldmVyIGEgc3RyZWFtIGlzCi0gICAgICBjcmVhdGVkLiBJdCBtdXN0IGFjY2VwdCB0d28g
YXJndW1lbnRzOiBhIDpjbGFzczpgYXN5bmNpby5TdHJlYW1SZWFkZXJgCi0gICAgICBhbmQgYSA6
Y2xhc3M6YGFzeW5jaW8uU3RyZWFtV3JpdGVyYC4KLSAgICAiIiIKLQotICAgIGxvb3AgPSBhc3lu
Y2lvLmdldF9ldmVudF9sb29wKCkKLQotICAgIF8sIHByb3RvY29sID0gYXdhaXQgbG9vcC5jcmVh
dGVfZGF0YWdyYW1fZW5kcG9pbnQoCi0gICAgICAgIGxhbWJkYTogUXVpY1NlcnZlcigKLSAgICAg
ICAgICAgIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwKLSAgICAgICAgICAgIGNyZWF0ZV9w
cm90b2NvbD1jcmVhdGVfcHJvdG9jb2wsCi0gICAgICAgICAgICBzZXNzaW9uX3RpY2tldF9mZXRj
aGVyPXNlc3Npb25fdGlja2V0X2ZldGNoZXIsCi0gICAgICAgICAgICBzZXNzaW9uX3RpY2tldF9o
YW5kbGVyPXNlc3Npb25fdGlja2V0X2hhbmRsZXIsCi0gICAgICAgICAgICBzdGF0ZWxlc3NfcmV0
cnk9c3RhdGVsZXNzX3JldHJ5LAotICAgICAgICAgICAgc3RyZWFtX2hhbmRsZXI9c3RyZWFtX2hh
bmRsZXIsCi0gICAgICAgICksCi0gICAgICAgIGxvY2FsX2FkZHI9KGhvc3QsIHBvcnQpLAotICAg
ICkKLSAgICByZXR1cm4gY2FzdChRdWljU2VydmVyLCBwcm90b2NvbCkKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9hc3luY2lvL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9x
dWljL3NyYy9haW9xdWljL2FzeW5jaW8vdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDhiODM0NWUwY2U4ZjVjNDNkNDY3MWNiYmNkYWQ4OGYxZWIxNTkyYTYuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L3NyYy9haW9xdWljL2FzeW5jaW8vdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwy
MSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9t
IHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkg
aW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0
aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4g
cnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1w
b3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0
eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvYXN5bmNpby9fX2lu
aXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9hc3luY2lvL2NsaWVudC5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9hc3luY2lvL2NvbXBhdC5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9z
cmMvYWlvcXVpYy9hc3luY2lvL3Byb3RvY29sLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWlj
L2FzeW5jaW8vc2VydmVyLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMv
YnVmZmVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2J1ZmZlci5weQpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMTdhNDI5OGY5NTRjMjJlNTM4OWExMjlhMWVlNjc1ZThlZmVk
ODdlYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvYnVmZmVyLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAs
MCBAQAotZnJvbSAuX2J1ZmZlciBpbXBvcnQgQnVmZmVyLCBCdWZmZXJSZWFkRXJyb3IsIEJ1ZmZl
cldyaXRlRXJyb3IgICMgbm9xYQotCi1VSU5UX1ZBUl9NQVggPSAweDNGRkZGRkZGRkZGRkZGRkYK
LQotCi1kZWYgZW5jb2RlX3VpbnRfdmFyKHZhbHVlOiBpbnQpIC0+IGJ5dGVzOgotICAgICIiIgot
ICAgIEVuY29kZSBhIHZhcmlhYmxlLWxlbmd0aCB1bnNpZ25lZCBpbnRlZ2VyLgotICAgICIiIgot
ICAgIGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0eT04KQotICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKHZhbHVl
KQotICAgIHJldHVybiBidWYuZGF0YQotCi0KLWRlZiBzaXplX3VpbnRfdmFyKHZhbHVlOiBpbnQp
IC0+IGludDoKLSAgICAiIiIKLSAgICBSZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyByZXF1aXJl
ZCB0byBlbmNvZGUgdGhlIGdpdmVuIHZhbHVlCi0gICAgYXMgYSBRVUlDIHZhcmlhYmxlLWxlbmd0
aCB1bnNpZ25lZCBpbnRlZ2VyLgotICAgICIiIgotICAgIGlmIHZhbHVlIDw9IDB4M0Y6Ci0gICAg
ICAgIHJldHVybiAxCi0gICAgZWxpZiB2YWx1ZSA8PSAweDNGRkY6Ci0gICAgICAgIHJldHVybiAy
Ci0gICAgZWxpZiB2YWx1ZSA8PSAweDNGRkZGRkZGOgotICAgICAgICByZXR1cm4gNAotICAgIGVs
aWYgdmFsdWUgPD0gMHgzRkZGRkZGRkZGRkZGRkZGOgotICAgICAgICByZXR1cm4gOAotICAgIGVs
c2U6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludGVnZXIgaXMgdG9vIGJpZyBmb3IgYSB2
YXJpYWJsZS1sZW5ndGggaW50ZWdlciIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fp
b3F1aWMvaDAvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDAvX19pbml0
X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2ODM0YjgyODVhNTZiZWYwZTE1
NDNmZDkwMWM3ZTZmMmY4YmMyMDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gwL19faW5pdF9fLnB5CisrKyAv
ZGV2L251bGwKQEAgLTEgKzAsMCBAQAotIyBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFB5dGhv
biB0byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZXMuClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gwL2Nvbm5l
Y3Rpb24ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDAvY29ubmVjdGlvbi5weQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmM4ZGRjZWM2YjM5MzBhYWZmM2MxY2QxNWIxZWU0
ZTdkNmIxOGQ4ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDAvY29ubmVjdGlvbi5weQorKysgL2Rldi9udWxs
CkBAIC0xLDYzICswLDAgQEAKLWZyb20gdHlwaW5nIGltcG9ydCBEaWN0LCBMaXN0Ci0KLWZyb20g
YWlvcXVpYy5oMy5ldmVudHMgaW1wb3J0IERhdGFSZWNlaXZlZCwgSDNFdmVudCwgSGVhZGVycywg
SGVhZGVyc1JlY2VpdmVkCi1mcm9tIGFpb3F1aWMucXVpYy5jb25uZWN0aW9uIGltcG9ydCBRdWlj
Q29ubmVjdGlvbgotZnJvbSBhaW9xdWljLnF1aWMuZXZlbnRzIGltcG9ydCBRdWljRXZlbnQsIFN0
cmVhbURhdGFSZWNlaXZlZAotCi1IMF9BTFBOID0gWyJocS0yNyIsICJocS0yNiIsICJocS0yNSJd
Ci0KLQotY2xhc3MgSDBDb25uZWN0aW9uOgotICAgICIiIgotICAgIEFuIEhUVFAvMC45IGNvbm5l
Y3Rpb24gb2JqZWN0LgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHF1aWM6IFF1
aWNDb25uZWN0aW9uKToKLSAgICAgICAgc2VsZi5faGVhZGVyc19yZWNlaXZlZDogRGljdFtpbnQs
IGJvb2xdID0ge30KLSAgICAgICAgc2VsZi5faXNfY2xpZW50ID0gcXVpYy5jb25maWd1cmF0aW9u
LmlzX2NsaWVudAotICAgICAgICBzZWxmLl9xdWljID0gcXVpYwotCi0gICAgZGVmIGhhbmRsZV9l
dmVudChzZWxmLCBldmVudDogUXVpY0V2ZW50KSAtPiBMaXN0W0gzRXZlbnRdOgotICAgICAgICBo
dHRwX2V2ZW50czogTGlzdFtIM0V2ZW50XSA9IFtdCi0KLSAgICAgICAgaWYgaXNpbnN0YW5jZShl
dmVudCwgU3RyZWFtRGF0YVJlY2VpdmVkKSBhbmQgKGV2ZW50LnN0cmVhbV9pZCAlIDQpID09IDA6
Ci0gICAgICAgICAgICBkYXRhID0gZXZlbnQuZGF0YQotICAgICAgICAgICAgaWYgbm90IHNlbGYu
X2hlYWRlcnNfcmVjZWl2ZWQuZ2V0KGV2ZW50LnN0cmVhbV9pZCwgRmFsc2UpOgotICAgICAgICAg
ICAgICAgIGlmIHNlbGYuX2lzX2NsaWVudDoKLSAgICAgICAgICAgICAgICAgICAgaHR0cF9ldmVu
dHMuYXBwZW5kKAotICAgICAgICAgICAgICAgICAgICAgICAgSGVhZGVyc1JlY2VpdmVkKAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9W10sIHN0cmVhbV9lbmRlZD1GYWxzZSwg
c3RyZWFtX2lkPWV2ZW50LnN0cmVhbV9pZAotICAgICAgICAgICAgICAgICAgICAgICAgKQotICAg
ICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAg
ICAgICAgbWV0aG9kLCBwYXRoID0gZGF0YS5yc3RyaXAoKS5zcGxpdChiIiAiLCAxKQotICAgICAg
ICAgICAgICAgICAgICBodHRwX2V2ZW50cy5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgICAg
ICBIZWFkZXJzUmVjZWl2ZWQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVycz1b
KGIiOm1ldGhvZCIsIG1ldGhvZCksIChiIjpwYXRoIiwgcGF0aCldLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdHJlYW1faWQ9ZXZlbnQuc3RyZWFtX2lkLAotICAgICAgICAgICAgICAgICAgICAgICAg
KQotICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgICAgIGRhdGEgPSBiIiIK
LSAgICAgICAgICAgICAgICBzZWxmLl9oZWFkZXJzX3JlY2VpdmVkW2V2ZW50LnN0cmVhbV9pZF0g
PSBUcnVlCi0KLSAgICAgICAgICAgIGh0dHBfZXZlbnRzLmFwcGVuZCgKLSAgICAgICAgICAgICAg
ICBEYXRhUmVjZWl2ZWQoCi0gICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwgc3RyZWFtX2Vu
ZGVkPWV2ZW50LmVuZF9zdHJlYW0sIHN0cmVhbV9pZD1ldmVudC5zdHJlYW1faWQKLSAgICAgICAg
ICAgICAgICApCi0gICAgICAgICAgICApCi0KLSAgICAgICAgcmV0dXJuIGh0dHBfZXZlbnRzCi0K
LSAgICBkZWYgc2VuZF9kYXRhKHNlbGYsIHN0cmVhbV9pZDogaW50LCBkYXRhOiBieXRlcywgZW5k
X3N0cmVhbTogYm9vbCkgLT4gTm9uZToKLSAgICAgICAgc2VsZi5fcXVpYy5zZW5kX3N0cmVhbV9k
YXRhKHN0cmVhbV9pZCwgZGF0YSwgZW5kX3N0cmVhbSkKLQotICAgIGRlZiBzZW5kX2hlYWRlcnMo
Ci0gICAgICAgIHNlbGYsIHN0cmVhbV9pZDogaW50LCBoZWFkZXJzOiBIZWFkZXJzLCBlbmRfc3Ry
ZWFtOiBib29sID0gRmFsc2UKLSAgICApIC0+IE5vbmU6Ci0gICAgICAgIGlmIHNlbGYuX2lzX2Ns
aWVudDoKLSAgICAgICAgICAgIGhlYWRlcnNfZGljdCA9IGRpY3QoaGVhZGVycykKLSAgICAgICAg
ICAgIGRhdGEgPSBoZWFkZXJzX2RpY3RbYiI6bWV0aG9kIl0gKyBiIiAiICsgaGVhZGVyc19kaWN0
W2IiOnBhdGgiXSArIGIiXHJcbiIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGRhdGEgPSBi
IiIKLSAgICAgICAgc2VsZi5fcXVpYy5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZCwgZGF0YSwg
ZW5kX3N0cmVhbSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMC93M2Mt
aW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMC93M2MtaW1wb3J0LmxvZwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGYzNjFlYTQwNTUxYjYyODZiM2UxZWU1ZjI5
YTc3NzRhZTYwNzBiNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDAvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYv
bnVsbApAQCAtMSwxOCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBp
bXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVz
dHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9u
IHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMv
d3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2Vi
S2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1O
b25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMv
aDAvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDAvY29ubmVjdGlvbi5w
eQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gzL19faW5pdF9fLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gzL19faW5pdF9fLnB5CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBhNjgzNGI4Mjg1YTU2YmVmMGUxNTQzZmQ5MDFjN2U2ZjJmOGJjMjAyLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy9zcmMvYWlvcXVpYy9oMy9fX2luaXRfXy5weQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAK
LSMgVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0
b3J5IGZvciBtb2R1bGVzLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMy9jb25uZWN0aW9uLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L3NyYy9haW9xdWljL2gzL2Nvbm5lY3Rpb24ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGRkZjhjNTQyODNjZDc3YzdmOWQzZWRkZThkNzkwYzAyYTA1MzA4ZDcuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9x
dWljL2gzL2Nvbm5lY3Rpb24ucHkKKysrIC9kZXYvbnVsbApAQCAtMSw3NzYgKzAsMCBAQAotaW1w
b3J0IGxvZ2dpbmcKLWZyb20gZW51bSBpbXBvcnQgRW51bSwgSW50RW51bQotZnJvbSB0eXBpbmcg
aW1wb3J0IERpY3QsIExpc3QsIE9wdGlvbmFsLCBTZXQKLQotaW1wb3J0IHB5bHNxcGFjawotCi1m
cm9tIGFpb3F1aWMuYnVmZmVyIGltcG9ydCBCdWZmZXIsIEJ1ZmZlclJlYWRFcnJvciwgZW5jb2Rl
X3VpbnRfdmFyCi1mcm9tIGFpb3F1aWMuaDMuZXZlbnRzIGltcG9ydCAoCi0gICAgRGF0YVJlY2Vp
dmVkLAotICAgIEgzRXZlbnQsCi0gICAgSGVhZGVycywKLSAgICBIZWFkZXJzUmVjZWl2ZWQsCi0g
ICAgUHVzaFByb21pc2VSZWNlaXZlZCwKLSkKLWZyb20gYWlvcXVpYy5oMy5leGNlcHRpb25zIGlt
cG9ydCBOb0F2YWlsYWJsZVB1c2hJREVycm9yCi1mcm9tIGFpb3F1aWMucXVpYy5jb25uZWN0aW9u
IGltcG9ydCBRdWljQ29ubmVjdGlvbiwgc3RyZWFtX2lzX3VuaWRpcmVjdGlvbmFsCi1mcm9tIGFp
b3F1aWMucXVpYy5ldmVudHMgaW1wb3J0IFF1aWNFdmVudCwgU3RyZWFtRGF0YVJlY2VpdmVkCi1m
cm9tIGFpb3F1aWMucXVpYy5sb2dnZXIgaW1wb3J0IFF1aWNMb2dnZXJUcmFjZQotCi1sb2dnZXIg
PSBsb2dnaW5nLmdldExvZ2dlcigiaHR0cDMiKQotCi1IM19BTFBOID0gWyJoMy0yNyIsICJoMy0y
NiIsICJoMy0yNSJdCi0KLQotY2xhc3MgRXJyb3JDb2RlKEludEVudW0pOgotICAgIEhUVFBfTk9f
RVJST1IgPSAweDEwMAotICAgIEhUVFBfR0VORVJBTF9QUk9UT0NPTF9FUlJPUiA9IDB4MTAxCi0g
ICAgSFRUUF9JTlRFUk5BTF9FUlJPUiA9IDB4MTAyCi0gICAgSFRUUF9TVFJFQU1fQ1JFQVRJT05f
RVJST1IgPSAweDEwMwotICAgIEhUVFBfQ0xPU0VEX0NSSVRJQ0FMX1NUUkVBTSA9IDB4MTA0Ci0g
ICAgSFRUUF9GUkFNRV9VTkVYUEVDVEVEID0gMHgxMDUKLSAgICBIVFRQX0ZSQU1FX0VSUk9SID0g
MHgxMDYKLSAgICBIVFRQX0VYQ0VTU0lWRV9MT0FEID0gMHgxMDcKLSAgICBIVFRQX0lEX0VSUk9S
ID0gMHgxMDgKLSAgICBIVFRQX1NFVFRJTkdTX0VSUk9SID0gMHgxMDkKLSAgICBIVFRQX01JU1NJ
TkdfU0VUVElOR1MgPSAweDEwQQotICAgIEhUVFBfUkVRVUVTVF9SRUpFQ1RFRCA9IDB4MTBCCi0g
ICAgSFRUUF9SRVFVRVNUX0NBTkNFTExFRCA9IDB4MTBDCi0gICAgSFRUUF9SRVFVRVNUX0lOQ09N
UExFVEUgPSAweDEwRAotICAgIEhUVFBfRUFSTFlfUkVTUE9OU0UgPSAweDEwRQotICAgIEhUVFBf
Q09OTkVDVF9FUlJPUiA9IDB4MTBGCi0gICAgSFRUUF9WRVJTSU9OX0ZBTExCQUNLID0gMHgxMTAK
LSAgICBIVFRQX1FQQUNLX0RFQ09NUFJFU1NJT05fRkFJTEVEID0gMHgyMDAKLSAgICBIVFRQX1FQ
QUNLX0VOQ09ERVJfU1RSRUFNX0VSUk9SID0gMHgyMDEKLSAgICBIVFRQX1FQQUNLX0RFQ09ERVJf
U1RSRUFNX0VSUk9SID0gMHgyMDIKLQotCi1jbGFzcyBGcmFtZVR5cGUoSW50RW51bSk6Ci0gICAg
REFUQSA9IDB4MAotICAgIEhFQURFUlMgPSAweDEKLSAgICBQUklPUklUWSA9IDB4MgotICAgIENB
TkNFTF9QVVNIID0gMHgzCi0gICAgU0VUVElOR1MgPSAweDQKLSAgICBQVVNIX1BST01JU0UgPSAw
eDUKLSAgICBHT0FXQVkgPSAweDcKLSAgICBNQVhfUFVTSF9JRCA9IDB4RAotICAgIERVUExJQ0FU
RV9QVVNIID0gMHhFCi0KLQotY2xhc3MgSGVhZGVyc1N0YXRlKEVudW0pOgotICAgIElOSVRJQUwg
PSAwCi0gICAgQUZURVJfSEVBREVSUyA9IDEKLSAgICBBRlRFUl9UUkFJTEVSUyA9IDIKLQotCi1j
bGFzcyBTZXR0aW5nKEludEVudW0pOgotICAgIFFQQUNLX01BWF9UQUJMRV9DQVBBQ0lUWSA9IDEK
LSAgICBTRVRUSU5HU19NQVhfSEVBREVSX0xJU1RfU0laRSA9IDYKLSAgICBRUEFDS19CTE9DS0VE
X1NUUkVBTVMgPSA3Ci0gICAgU0VUVElOR1NfTlVNX1BMQUNFSE9MREVSUyA9IDkKLQotCi1jbGFz
cyBTdHJlYW1UeXBlKEludEVudW0pOgotICAgIENPTlRST0wgPSAwCi0gICAgUFVTSCA9IDEKLSAg
ICBRUEFDS19FTkNPREVSID0gMgotICAgIFFQQUNLX0RFQ09ERVIgPSAzCi0KLQotY2xhc3MgUHJv
dG9jb2xFcnJvcihFeGNlcHRpb24pOgotICAgICIiIgotICAgIEJhc2UgY2xhc3MgZm9yIHByb3Rv
Y29sIGVycm9ycy4KLQotICAgIFRoZXNlIGVycm9ycyBhcmUgbm90IGV4cG9zZWQgdG8gdGhlIEFQ
SSB1c2VyLCB0aGV5IGFyZSBoYW5kbGVkCi0gICAgaW4gOm1ldGg6YEgzQ29ubmVjdGlvbi5oYW5k
bGVfZXZlbnRgLgotICAgICIiIgotCi0gICAgZXJyb3JfY29kZSA9IEVycm9yQ29kZS5IVFRQX0dF
TkVSQUxfUFJPVE9DT0xfRVJST1IKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZWFzb25fcGhy
YXNlOiBzdHIgPSAiIik6Ci0gICAgICAgIHNlbGYucmVhc29uX3BocmFzZSA9IHJlYXNvbl9waHJh
c2UKLQotCi1jbGFzcyBRcGFja0RlY29tcHJlc3Npb25GYWlsZWQoUHJvdG9jb2xFcnJvcik6Ci0g
ICAgZXJyb3JfY29kZSA9IEVycm9yQ29kZS5IVFRQX1FQQUNLX0RFQ09NUFJFU1NJT05fRkFJTEVE
Ci0KLQotY2xhc3MgUXBhY2tEZWNvZGVyU3RyZWFtRXJyb3IoUHJvdG9jb2xFcnJvcik6Ci0gICAg
ZXJyb3JfY29kZSA9IEVycm9yQ29kZS5IVFRQX1FQQUNLX0RFQ09ERVJfU1RSRUFNX0VSUk9SCi0K
LQotY2xhc3MgUXBhY2tFbmNvZGVyU3RyZWFtRXJyb3IoUHJvdG9jb2xFcnJvcik6Ci0gICAgZXJy
b3JfY29kZSA9IEVycm9yQ29kZS5IVFRQX1FQQUNLX0VOQ09ERVJfU1RSRUFNX0VSUk9SCi0KLQot
Y2xhc3MgU3RyZWFtQ3JlYXRpb25FcnJvcihQcm90b2NvbEVycm9yKToKLSAgICBlcnJvcl9jb2Rl
ID0gRXJyb3JDb2RlLkhUVFBfU1RSRUFNX0NSRUFUSU9OX0VSUk9SCi0KLQotY2xhc3MgRnJhbWVV
bmV4cGVjdGVkKFByb3RvY29sRXJyb3IpOgotICAgIGVycm9yX2NvZGUgPSBFcnJvckNvZGUuSFRU
UF9GUkFNRV9VTkVYUEVDVEVECi0KLQotZGVmIGVuY29kZV9mcmFtZShmcmFtZV90eXBlOiBpbnQs
IGZyYW1lX2RhdGE6IGJ5dGVzKSAtPiBieXRlczoKLSAgICBmcmFtZV9sZW5ndGggPSBsZW4oZnJh
bWVfZGF0YSkKLSAgICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9ZnJhbWVfbGVuZ3RoICsgMTYpCi0g
ICAgYnVmLnB1c2hfdWludF92YXIoZnJhbWVfdHlwZSkKLSAgICBidWYucHVzaF91aW50X3Zhcihm
cmFtZV9sZW5ndGgpCi0gICAgYnVmLnB1c2hfYnl0ZXMoZnJhbWVfZGF0YSkKLSAgICByZXR1cm4g
YnVmLmRhdGEKLQotCi1kZWYgZW5jb2RlX3NldHRpbmdzKHNldHRpbmdzOiBEaWN0W2ludCwgaW50
XSkgLT4gYnl0ZXM6Ci0gICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PTEwMjQpCi0gICAgZm9yIHNl
dHRpbmcsIHZhbHVlIGluIHNldHRpbmdzLml0ZW1zKCk6Ci0gICAgICAgIGJ1Zi5wdXNoX3VpbnRf
dmFyKHNldHRpbmcpCi0gICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKHZhbHVlKQotICAgIHJldHVy
biBidWYuZGF0YQotCi0KLWRlZiBwYXJzZV9tYXhfcHVzaF9pZChkYXRhOiBieXRlcykgLT4gaW50
OgotICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWRhdGEpCi0gICAgbWF4X3B1c2hfaWQgPSBidWYucHVs
bF91aW50X3ZhcigpCi0gICAgYXNzZXJ0IGJ1Zi5lb2YoKQotICAgIHJldHVybiBtYXhfcHVzaF9p
ZAotCi0KLWRlZiBwYXJzZV9zZXR0aW5ncyhkYXRhOiBieXRlcykgLT4gRGljdFtpbnQsIGludF06
Ci0gICAgYnVmID0gQnVmZmVyKGRhdGE9ZGF0YSkKLSAgICBzZXR0aW5ncyA9IFtdCi0gICAgd2hp
bGUgbm90IGJ1Zi5lb2YoKToKLSAgICAgICAgc2V0dGluZyA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkK
LSAgICAgICAgdmFsdWUgPSBidWYucHVsbF91aW50X3ZhcigpCi0gICAgICAgIHNldHRpbmdzLmFw
cGVuZCgoc2V0dGluZywgdmFsdWUpKQotICAgIHJldHVybiBkaWN0KHNldHRpbmdzKQotCi0KLWRl
ZiBxbG9nX2VuY29kZV9kYXRhX2ZyYW1lKGJ5dGVfbGVuZ3RoOiBpbnQsIHN0cmVhbV9pZDogaW50
KSAtPiBEaWN0OgotICAgIHJldHVybiB7Ci0gICAgICAgICJieXRlX2xlbmd0aCI6IHN0cihieXRl
X2xlbmd0aCksCi0gICAgICAgICJmcmFtZSI6IHsiZnJhbWVfdHlwZSI6ICJkYXRhIn0sCi0gICAg
ICAgICJzdHJlYW1faWQiOiBzdHIoc3RyZWFtX2lkKSwKLSAgICB9Ci0KLQotZGVmIHFsb2dfZW5j
b2RlX2hlYWRlcnMoaGVhZGVyczogSGVhZGVycykgLT4gTGlzdFtEaWN0XToKLSAgICByZXR1cm4g
WwotICAgICAgICB7Im5hbWUiOiBoWzBdLmRlY29kZSgidXRmOCIpLCAidmFsdWUiOiBoWzFdLmRl
Y29kZSgidXRmOCIpfSBmb3IgaCBpbiBoZWFkZXJzCi0gICAgXQotCi0KLWRlZiBxbG9nX2VuY29k
ZV9oZWFkZXJzX2ZyYW1lKAotICAgIGJ5dGVfbGVuZ3RoOiBpbnQsIGhlYWRlcnM6IEhlYWRlcnMs
IHN0cmVhbV9pZDogaW50Ci0pIC0+IERpY3Q6Ci0gICAgcmV0dXJuIHsKLSAgICAgICAgImJ5dGVf
bGVuZ3RoIjogc3RyKGJ5dGVfbGVuZ3RoKSwKLSAgICAgICAgImZyYW1lIjogeyJmcmFtZV90eXBl
IjogImhlYWRlcnMiLCAiaGVhZGVycyI6IHFsb2dfZW5jb2RlX2hlYWRlcnMoaGVhZGVycyl9LAot
ICAgICAgICAic3RyZWFtX2lkIjogc3RyKHN0cmVhbV9pZCksCi0gICAgfQotCi0KLWRlZiBxbG9n
X2VuY29kZV9wdXNoX3Byb21pc2VfZnJhbWUoCi0gICAgYnl0ZV9sZW5ndGg6IGludCwgaGVhZGVy
czogSGVhZGVycywgcHVzaF9pZDogaW50LCBzdHJlYW1faWQ6IGludAotKSAtPiBEaWN0OgotICAg
IHJldHVybiB7Ci0gICAgICAgICJieXRlX2xlbmd0aCI6IHN0cihieXRlX2xlbmd0aCksCi0gICAg
ICAgICJmcmFtZSI6IHsKLSAgICAgICAgICAgICJmcmFtZV90eXBlIjogInB1c2hfcHJvbWlzZSIs
Ci0gICAgICAgICAgICAiaGVhZGVycyI6IHFsb2dfZW5jb2RlX2hlYWRlcnMoaGVhZGVycyksCi0g
ICAgICAgICAgICAicHVzaF9pZCI6IHN0cihwdXNoX2lkKSwKLSAgICAgICAgfSwKLSAgICAgICAg
InN0cmVhbV9pZCI6IHN0cihzdHJlYW1faWQpLAotICAgIH0KLQotCi1jbGFzcyBIM1N0cmVhbToK
LSAgICBkZWYgX19pbml0X18oc2VsZiwgc3RyZWFtX2lkOiBpbnQpIC0+IE5vbmU6Ci0gICAgICAg
IHNlbGYuYmxvY2tlZCA9IEZhbHNlCi0gICAgICAgIHNlbGYuYmxvY2tlZF9mcmFtZV9zaXplOiBP
cHRpb25hbFtpbnRdID0gTm9uZQotICAgICAgICBzZWxmLmJ1ZmZlciA9IGIiIgotICAgICAgICBz
ZWxmLmVuZGVkID0gRmFsc2UKLSAgICAgICAgc2VsZi5mcmFtZV9zaXplOiBPcHRpb25hbFtpbnRd
ID0gTm9uZQotICAgICAgICBzZWxmLmZyYW1lX3R5cGU6IE9wdGlvbmFsW2ludF0gPSBOb25lCi0g
ICAgICAgIHNlbGYuaGVhZGVyc19yZWN2X3N0YXRlOiBIZWFkZXJzU3RhdGUgPSBIZWFkZXJzU3Rh
dGUuSU5JVElBTAotICAgICAgICBzZWxmLmhlYWRlcnNfc2VuZF9zdGF0ZTogSGVhZGVyc1N0YXRl
ID0gSGVhZGVyc1N0YXRlLklOSVRJQUwKLSAgICAgICAgc2VsZi5wdXNoX2lkOiBPcHRpb25hbFtp
bnRdID0gTm9uZQotICAgICAgICBzZWxmLnN0cmVhbV9pZCA9IHN0cmVhbV9pZAotICAgICAgICBz
ZWxmLnN0cmVhbV90eXBlOiBPcHRpb25hbFtpbnRdID0gTm9uZQotCi0KLWNsYXNzIEgzQ29ubmVj
dGlvbjoKLSAgICAiIiIKLSAgICBBIGxvdy1sZXZlbCBIVFRQLzMgY29ubmVjdGlvbiBvYmplY3Qu
Ci0KLSAgICA6cGFyYW0gcXVpYzogQSA6Y2xhc3M6YH5haW9xdWljLmNvbm5lY3Rpb24uUXVpY0Nv
bm5lY3Rpb25gIGluc3RhbmNlLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHF1
aWM6IFF1aWNDb25uZWN0aW9uKToKLSAgICAgICAgc2VsZi5fbWF4X3RhYmxlX2NhcGFjaXR5ID0g
NDA5NgotICAgICAgICBzZWxmLl9ibG9ja2VkX3N0cmVhbXMgPSAxNgotCi0gICAgICAgIHNlbGYu
X2lzX2NsaWVudCA9IHF1aWMuY29uZmlndXJhdGlvbi5pc19jbGllbnQKLSAgICAgICAgc2VsZi5f
aXNfZG9uZSA9IEZhbHNlCi0gICAgICAgIHNlbGYuX3F1aWMgPSBxdWljCi0gICAgICAgIHNlbGYu
X3F1aWNfbG9nZ2VyOiBPcHRpb25hbFtRdWljTG9nZ2VyVHJhY2VdID0gcXVpYy5fcXVpY19sb2dn
ZXIKLSAgICAgICAgc2VsZi5fZGVjb2RlciA9IHB5bHNxcGFjay5EZWNvZGVyKAotICAgICAgICAg
ICAgc2VsZi5fbWF4X3RhYmxlX2NhcGFjaXR5LCBzZWxmLl9ibG9ja2VkX3N0cmVhbXMKLSAgICAg
ICAgKQotICAgICAgICBzZWxmLl9kZWNvZGVyX2J5dGVzX3JlY2VpdmVkID0gMAotICAgICAgICBz
ZWxmLl9kZWNvZGVyX2J5dGVzX3NlbnQgPSAwCi0gICAgICAgIHNlbGYuX2VuY29kZXIgPSBweWxz
cXBhY2suRW5jb2RlcigpCi0gICAgICAgIHNlbGYuX2VuY29kZXJfYnl0ZXNfcmVjZWl2ZWQgPSAw
Ci0gICAgICAgIHNlbGYuX2VuY29kZXJfYnl0ZXNfc2VudCA9IDAKLSAgICAgICAgc2VsZi5fc3Ry
ZWFtOiBEaWN0W2ludCwgSDNTdHJlYW1dID0ge30KLQotICAgICAgICBzZWxmLl9tYXhfcHVzaF9p
ZDogT3B0aW9uYWxbaW50XSA9IDggaWYgc2VsZi5faXNfY2xpZW50IGVsc2UgTm9uZQotICAgICAg
ICBzZWxmLl9uZXh0X3B1c2hfaWQ6IGludCA9IDAKLQotICAgICAgICBzZWxmLl9sb2NhbF9jb250
cm9sX3N0cmVhbV9pZDogT3B0aW9uYWxbaW50XSA9IE5vbmUKLSAgICAgICAgc2VsZi5fbG9jYWxf
ZGVjb2Rlcl9zdHJlYW1faWQ6IE9wdGlvbmFsW2ludF0gPSBOb25lCi0gICAgICAgIHNlbGYuX2xv
Y2FsX2VuY29kZXJfc3RyZWFtX2lkOiBPcHRpb25hbFtpbnRdID0gTm9uZQotCi0gICAgICAgIHNl
bGYuX3BlZXJfY29udHJvbF9zdHJlYW1faWQ6IE9wdGlvbmFsW2ludF0gPSBOb25lCi0gICAgICAg
IHNlbGYuX3BlZXJfZGVjb2Rlcl9zdHJlYW1faWQ6IE9wdGlvbmFsW2ludF0gPSBOb25lCi0gICAg
ICAgIHNlbGYuX3BlZXJfZW5jb2Rlcl9zdHJlYW1faWQ6IE9wdGlvbmFsW2ludF0gPSBOb25lCi0K
LSAgICAgICAgc2VsZi5faW5pdF9jb25uZWN0aW9uKCkKLQotICAgIGRlZiBoYW5kbGVfZXZlbnQo
c2VsZiwgZXZlbnQ6IFF1aWNFdmVudCkgLT4gTGlzdFtIM0V2ZW50XToKLSAgICAgICAgIiIiCi0g
ICAgICAgIEhhbmRsZSBhIFFVSUMgZXZlbnQgYW5kIHJldHVybiBhIGxpc3Qgb2YgSFRUUCBldmVu
dHMuCi0KLSAgICAgICAgOnBhcmFtIGV2ZW50OiBUaGUgUVVJQyBldmVudCB0byBoYW5kbGUuCi0g
ICAgICAgICIiIgotICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBTdHJlYW1EYXRhUmVjZWl2
ZWQpIGFuZCBub3Qgc2VsZi5faXNfZG9uZToKLSAgICAgICAgICAgIHN0cmVhbV9pZCA9IGV2ZW50
LnN0cmVhbV9pZAotICAgICAgICAgICAgc3RyZWFtID0gc2VsZi5fZ2V0X29yX2NyZWF0ZV9zdHJl
YW0oc3RyZWFtX2lkKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGlmIHN0cmVh
bV9pZCAlIDQgPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JlY2VpdmVf
cmVxdWVzdF9vcl9wdXNoX2RhdGEoCi0gICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW0sIGV2
ZW50LmRhdGEsIGV2ZW50LmVuZF9zdHJlYW0KLSAgICAgICAgICAgICAgICAgICAgKQotICAgICAg
ICAgICAgICAgIGVsaWYgc3RyZWFtX2lzX3VuaWRpcmVjdGlvbmFsKHN0cmVhbV9pZCk6Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9yZWNlaXZlX3N0cmVhbV9kYXRhX3VuaSgKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbSwgZXZlbnQuZGF0YSwgZXZlbnQuZW5kX3N0cmVh
bQotICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICBleGNlcHQgUHJvdG9jb2xFcnJv
ciBhcyBleGM6Ci0gICAgICAgICAgICAgICAgc2VsZi5faXNfZG9uZSA9IFRydWUKLSAgICAgICAg
ICAgICAgICBzZWxmLl9xdWljLmNsb3NlKAotICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2Rl
PWV4Yy5lcnJvcl9jb2RlLCByZWFzb25fcGhyYXNlPWV4Yy5yZWFzb25fcGhyYXNlCi0gICAgICAg
ICAgICAgICAgKQotICAgICAgICByZXR1cm4gW10KLQotICAgIGRlZiBzZW5kX3B1c2hfcHJvbWlz
ZShzZWxmLCBzdHJlYW1faWQ6IGludCwgaGVhZGVyczogSGVhZGVycykgLT4gaW50OgotICAgICAg
ICAiIiIKLSAgICAgICAgU2VuZCBhIHB1c2ggcHJvbWlzZSByZWxhdGVkIHRvIHRoZSBzcGVjaWZp
ZWQgc3RyZWFtLgotCi0gICAgICAgIFJldHVybnMgdGhlIHN0cmVhbSBJRCBvbiB3aGljaCBoZWFk
ZXJzIGFuZCBkYXRhIGNhbiBiZSBzZW50LgotCi0gICAgICAgIDpwYXJhbSBzdHJlYW1faWQ6IFRo
ZSBzdHJlYW0gSUQgb24gd2hpY2ggdG8gc2VuZCB0aGUgZGF0YS4KLSAgICAgICAgOnBhcmFtIGhl
YWRlcnM6IFRoZSBIVFRQIHJlcXVlc3QgaGVhZGVycyBmb3IgdGhpcyBwdXNoLgotICAgICAgICAi
IiIKLSAgICAgICAgYXNzZXJ0IG5vdCBzZWxmLl9pc19jbGllbnQsICJPbmx5IHNlcnZlcnMgbWF5
IHNlbmQgYSBwdXNoIHByb21pc2UuIgotICAgICAgICBpZiBzZWxmLl9tYXhfcHVzaF9pZCBpcyBO
b25lIG9yIHNlbGYuX25leHRfcHVzaF9pZCA+PSBzZWxmLl9tYXhfcHVzaF9pZDoKLSAgICAgICAg
ICAgIHJhaXNlIE5vQXZhaWxhYmxlUHVzaElERXJyb3IKLQotICAgICAgICAjIHNlbmQgcHVzaCBw
cm9taXNlCi0gICAgICAgIHB1c2hfaWQgPSBzZWxmLl9uZXh0X3B1c2hfaWQKLSAgICAgICAgc2Vs
Zi5fbmV4dF9wdXNoX2lkICs9IDEKLSAgICAgICAgc2VsZi5fcXVpYy5zZW5kX3N0cmVhbV9kYXRh
KAotICAgICAgICAgICAgc3RyZWFtX2lkLAotICAgICAgICAgICAgZW5jb2RlX2ZyYW1lKAotICAg
ICAgICAgICAgICAgIEZyYW1lVHlwZS5QVVNIX1BST01JU0UsCi0gICAgICAgICAgICAgICAgZW5j
b2RlX3VpbnRfdmFyKHB1c2hfaWQpICsgc2VsZi5fZW5jb2RlX2hlYWRlcnMoc3RyZWFtX2lkLCBo
ZWFkZXJzKSwKLSAgICAgICAgICAgICksCi0gICAgICAgICkKLQotICAgICAgICAjIMKgY3JlYXRl
IHB1c2ggc3RyZWFtCi0gICAgICAgIHB1c2hfc3RyZWFtX2lkID0gc2VsZi5fY3JlYXRlX3VuaV9z
dHJlYW0oU3RyZWFtVHlwZS5QVVNIKQotICAgICAgICBzZWxmLl9xdWljLnNlbmRfc3RyZWFtX2Rh
dGEocHVzaF9zdHJlYW1faWQsIGVuY29kZV91aW50X3ZhcihwdXNoX2lkKSkKLQotICAgICAgICBy
ZXR1cm4gcHVzaF9zdHJlYW1faWQKLQotICAgIGRlZiBzZW5kX2RhdGEoc2VsZiwgc3RyZWFtX2lk
OiBpbnQsIGRhdGE6IGJ5dGVzLCBlbmRfc3RyZWFtOiBib29sKSAtPiBOb25lOgotICAgICAgICAi
IiIKLSAgICAgICAgU2VuZCBkYXRhIG9uIHRoZSBnaXZlbiBzdHJlYW0uCi0KLSAgICAgICAgVG8g
cmV0cmlldmUgZGF0YWdyYW0gd2hpY2ggbmVlZCB0byBiZSBzZW50IG92ZXIgdGhlIG5ldHdvcmsg
Y2FsbCB0aGUgUVVJQwotICAgICAgICBjb25uZWN0aW9uJ3MgOm1ldGg6YH5haW9xdWljLmNvbm5l
Y3Rpb24uUXVpY0Nvbm5lY3Rpb24uZGF0YWdyYW1zX3RvX3NlbmRgCi0gICAgICAgIG1ldGhvZC4K
LQotICAgICAgICA6cGFyYW0gc3RyZWFtX2lkOiBUaGUgc3RyZWFtIElEIG9uIHdoaWNoIHRvIHNl
bmQgdGhlIGRhdGEuCi0gICAgICAgIDpwYXJhbSBkYXRhOiBUaGUgZGF0YSB0byBzZW5kLgotICAg
ICAgICA6cGFyYW0gZW5kX3N0cmVhbTogV2hldGhlciB0byBlbmQgdGhlIHN0cmVhbS4KLSAgICAg
ICAgIiIiCi0gICAgICAgICMgY2hlY2sgREFUQSBmcmFtZSBpcyBhbGxvd2VkCi0gICAgICAgIHN0
cmVhbSA9IHNlbGYuX2dldF9vcl9jcmVhdGVfc3RyZWFtKHN0cmVhbV9pZCkKLSAgICAgICAgaWYg
c3RyZWFtLmhlYWRlcnNfc2VuZF9zdGF0ZSAhPSBIZWFkZXJzU3RhdGUuQUZURVJfSEVBREVSUzoK
LSAgICAgICAgICAgIHJhaXNlIEZyYW1lVW5leHBlY3RlZCgiREFUQSBmcmFtZSBpcyBub3QgYWxs
b3dlZCBpbiB0aGlzIHN0YXRlIikKLQotICAgICAgICAjIGxvZyBmcmFtZQotICAgICAgICBpZiBz
ZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9n
Z2VyLmxvZ19ldmVudCgKLSAgICAgICAgICAgICAgICBjYXRlZ29yeT0iaHR0cCIsCi0gICAgICAg
ICAgICAgICAgZXZlbnQ9ImZyYW1lX2NyZWF0ZWQiLAotICAgICAgICAgICAgICAgIGRhdGE9cWxv
Z19lbmNvZGVfZGF0YV9mcmFtZShieXRlX2xlbmd0aD1sZW4oZGF0YSksIHN0cmVhbV9pZD1zdHJl
YW1faWQpLAotICAgICAgICAgICAgKQotCi0gICAgICAgIHNlbGYuX3F1aWMuc2VuZF9zdHJlYW1f
ZGF0YSgKLSAgICAgICAgICAgIHN0cmVhbV9pZCwgZW5jb2RlX2ZyYW1lKEZyYW1lVHlwZS5EQVRB
LCBkYXRhKSwgZW5kX3N0cmVhbQotICAgICAgICApCi0KLSAgICBkZWYgc2VuZF9oZWFkZXJzKAot
ICAgICAgICBzZWxmLCBzdHJlYW1faWQ6IGludCwgaGVhZGVyczogSGVhZGVycywgZW5kX3N0cmVh
bTogYm9vbCA9IEZhbHNlCi0gICAgKSAtPiBOb25lOgotICAgICAgICAiIiIKLSAgICAgICAgU2Vu
ZCBoZWFkZXJzIG9uIHRoZSBnaXZlbiBzdHJlYW0uCi0KLSAgICAgICAgVG8gcmV0cmlldmUgZGF0
YWdyYW0gd2hpY2ggbmVlZCB0byBiZSBzZW50IG92ZXIgdGhlIG5ldHdvcmsgY2FsbCB0aGUgUVVJ
QwotICAgICAgICBjb25uZWN0aW9uJ3MgOm1ldGg6YH5haW9xdWljLmNvbm5lY3Rpb24uUXVpY0Nv
bm5lY3Rpb24uZGF0YWdyYW1zX3RvX3NlbmRgCi0gICAgICAgIG1ldGhvZC4KLQotICAgICAgICA6
cGFyYW0gc3RyZWFtX2lkOiBUaGUgc3RyZWFtIElEIG9uIHdoaWNoIHRvIHNlbmQgdGhlIGhlYWRl
cnMuCi0gICAgICAgIDpwYXJhbSBoZWFkZXJzOiBUaGUgSFRUUCBoZWFkZXJzIHRvIHNlbmQuCi0g
ICAgICAgIDpwYXJhbSBlbmRfc3RyZWFtOiBXaGV0aGVyIHRvIGVuZCB0aGUgc3RyZWFtLgotICAg
ICAgICAiIiIKLSAgICAgICAgIyBjaGVjayBIRUFERVJTIGZyYW1lIGlzIGFsbG93ZWQKLSAgICAg
ICAgc3RyZWFtID0gc2VsZi5fZ2V0X29yX2NyZWF0ZV9zdHJlYW0oc3RyZWFtX2lkKQotICAgICAg
ICBpZiBzdHJlYW0uaGVhZGVyc19zZW5kX3N0YXRlID09IEhlYWRlcnNTdGF0ZS5BRlRFUl9UUkFJ
TEVSUzoKLSAgICAgICAgICAgIHJhaXNlIEZyYW1lVW5leHBlY3RlZCgiSEVBREVSUyBmcmFtZSBp
cyBub3QgYWxsb3dlZCBpbiB0aGlzIHN0YXRlIikKLQotICAgICAgICBmcmFtZV9kYXRhID0gc2Vs
Zi5fZW5jb2RlX2hlYWRlcnMoc3RyZWFtX2lkLCBoZWFkZXJzKQotCi0gICAgICAgICMgbG9nIGZy
YW1lCi0gICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgotICAgICAgICAg
ICAgc2VsZi5fcXVpY19sb2dnZXIubG9nX2V2ZW50KAotICAgICAgICAgICAgICAgIGNhdGVnb3J5
PSJodHRwIiwKLSAgICAgICAgICAgICAgICBldmVudD0iZnJhbWVfY3JlYXRlZCIsCi0gICAgICAg
ICAgICAgICAgZGF0YT1xbG9nX2VuY29kZV9oZWFkZXJzX2ZyYW1lKAotICAgICAgICAgICAgICAg
ICAgICBieXRlX2xlbmd0aD1sZW4oZnJhbWVfZGF0YSksIGhlYWRlcnM9aGVhZGVycywgc3RyZWFt
X2lkPXN0cmVhbV9pZAotICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICApCi0KLSAgICAg
ICAgIyB1cGRhdGUgc3RhdGUgYW5kIHNlbmQgaGVhZGVycwotICAgICAgICBpZiBzdHJlYW0uaGVh
ZGVyc19zZW5kX3N0YXRlID09IEhlYWRlcnNTdGF0ZS5JTklUSUFMOgotICAgICAgICAgICAgc3Ry
ZWFtLmhlYWRlcnNfc2VuZF9zdGF0ZSA9IEhlYWRlcnNTdGF0ZS5BRlRFUl9IRUFERVJTCi0gICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICBzdHJlYW0uaGVhZGVyc19zZW5kX3N0YXRlID0gSGVhZGVy
c1N0YXRlLkFGVEVSX1RSQUlMRVJTCi0gICAgICAgIHNlbGYuX3F1aWMuc2VuZF9zdHJlYW1fZGF0
YSgKLSAgICAgICAgICAgIHN0cmVhbV9pZCwgZW5jb2RlX2ZyYW1lKEZyYW1lVHlwZS5IRUFERVJT
LCBmcmFtZV9kYXRhKSwgZW5kX3N0cmVhbQotICAgICAgICApCi0KLSAgICBkZWYgX2NyZWF0ZV91
bmlfc3RyZWFtKHNlbGYsIHN0cmVhbV90eXBlOiBpbnQpIC0+IGludDoKLSAgICAgICAgIiIiCi0g
ICAgICAgIENyZWF0ZSBhbiB1bmlkaXJlY3Rpb25hbCBzdHJlYW0gb2YgdGhlIGdpdmVuIHR5cGUu
Ci0gICAgICAgICIiIgotICAgICAgICBzdHJlYW1faWQgPSBzZWxmLl9xdWljLmdldF9uZXh0X2F2
YWlsYWJsZV9zdHJlYW1faWQoaXNfdW5pZGlyZWN0aW9uYWw9VHJ1ZSkKLSAgICAgICAgc2VsZi5f
cXVpYy5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZCwgZW5jb2RlX3VpbnRfdmFyKHN0cmVhbV90
eXBlKSkKLSAgICAgICAgcmV0dXJuIHN0cmVhbV9pZAotCi0gICAgZGVmIF9kZWNvZGVfaGVhZGVy
cyhzZWxmLCBzdHJlYW1faWQ6IGludCwgZnJhbWVfZGF0YTogT3B0aW9uYWxbYnl0ZXNdKSAtPiBI
ZWFkZXJzOgotICAgICAgICAiIiIKLSAgICAgICAgRGVjb2RlIGEgSEVBREVSUyBibG9jayBhbmQg
c2VuZCBkZWNvZGVyIHVwZGF0ZXMgb24gdGhlIGRlY29kZXIgc3RyZWFtLgotCi0gICAgICAgIFRo
aXMgaXMgY2FsbGVkIHdpdGggZnJhbWVfZGF0YT1Ob25lIHdoZW4gYSBzdHJlYW0gYmVjb21lcyB1
bmJsb2NrZWQuCi0gICAgICAgICIiIgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpZiBmcmFt
ZV9kYXRhIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgZGVjb2RlciwgaGVhZGVycyA9IHNlbGYu
X2RlY29kZXIucmVzdW1lX2hlYWRlcihzdHJlYW1faWQpCi0gICAgICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgICAgIGRlY29kZXIsIGhlYWRlcnMgPSBzZWxmLl9kZWNvZGVyLmZlZWRfaGVhZGVy
KHN0cmVhbV9pZCwgZnJhbWVfZGF0YSkKLSAgICAgICAgICAgIHNlbGYuX2RlY29kZXJfYnl0ZXNf
c2VudCArPSBsZW4oZGVjb2RlcikKLSAgICAgICAgICAgIHNlbGYuX3F1aWMuc2VuZF9zdHJlYW1f
ZGF0YShzZWxmLl9sb2NhbF9kZWNvZGVyX3N0cmVhbV9pZCwgZGVjb2RlcikKLSAgICAgICAgZXhj
ZXB0IHB5bHNxcGFjay5EZWNvbXByZXNzaW9uRmFpbGVkIGFzIGV4YzoKLSAgICAgICAgICAgIHJh
aXNlIFFwYWNrRGVjb21wcmVzc2lvbkZhaWxlZCgpIGZyb20gZXhjCi0KLSAgICAgICAgcmV0dXJu
IGhlYWRlcnMKLQotICAgIGRlZiBfZW5jb2RlX2hlYWRlcnMoc2VsZiwgc3RyZWFtX2lkOiBpbnQs
IGhlYWRlcnM6IEhlYWRlcnMpIC0+IGJ5dGVzOgotICAgICAgICAiIiIKLSAgICAgICAgRW5jb2Rl
IGEgSEVBREVSUyBibG9jayBhbmQgc2VuZCBlbmNvZGVyIHVwZGF0ZXMgb24gdGhlIGVuY29kZXIg
c3RyZWFtLgotICAgICAgICAiIiIKLSAgICAgICAgZW5jb2RlciwgZnJhbWVfZGF0YSA9IHNlbGYu
X2VuY29kZXIuZW5jb2RlKHN0cmVhbV9pZCwgaGVhZGVycykKLSAgICAgICAgc2VsZi5fZW5jb2Rl
cl9ieXRlc19zZW50ICs9IGxlbihlbmNvZGVyKQotICAgICAgICBzZWxmLl9xdWljLnNlbmRfc3Ry
ZWFtX2RhdGEoc2VsZi5fbG9jYWxfZW5jb2Rlcl9zdHJlYW1faWQsIGVuY29kZXIpCi0gICAgICAg
IHJldHVybiBmcmFtZV9kYXRhCi0KLSAgICBkZWYgX2dldF9vcl9jcmVhdGVfc3RyZWFtKHNlbGYs
IHN0cmVhbV9pZDogaW50KSAtPiBIM1N0cmVhbToKLSAgICAgICAgaWYgc3RyZWFtX2lkIG5vdCBp
biBzZWxmLl9zdHJlYW06Ci0gICAgICAgICAgICBzZWxmLl9zdHJlYW1bc3RyZWFtX2lkXSA9IEgz
U3RyZWFtKHN0cmVhbV9pZCkKLSAgICAgICAgcmV0dXJuIHNlbGYuX3N0cmVhbVtzdHJlYW1faWRd
Ci0KLSAgICBkZWYgX2hhbmRsZV9jb250cm9sX2ZyYW1lKHNlbGYsIGZyYW1lX3R5cGU6IGludCwg
ZnJhbWVfZGF0YTogYnl0ZXMpIC0+IE5vbmU6Ci0gICAgICAgICIiIgotICAgICAgICBIYW5kbGUg
YSBmcmFtZSByZWNlaXZlZCBvbiB0aGUgcGVlcidzIGNvbnRyb2wgc3RyZWFtLgotICAgICAgICAi
IiIKLSAgICAgICAgaWYgZnJhbWVfdHlwZSA9PSBGcmFtZVR5cGUuU0VUVElOR1M6Ci0gICAgICAg
ICAgICBzZXR0aW5ncyA9IHBhcnNlX3NldHRpbmdzKGZyYW1lX2RhdGEpCi0gICAgICAgICAgICBl
bmNvZGVyID0gc2VsZi5fZW5jb2Rlci5hcHBseV9zZXR0aW5ncygKLSAgICAgICAgICAgICAgICBt
YXhfdGFibGVfY2FwYWNpdHk9c2V0dGluZ3MuZ2V0KFNldHRpbmcuUVBBQ0tfTUFYX1RBQkxFX0NB
UEFDSVRZLCAwKSwKLSAgICAgICAgICAgICAgICBibG9ja2VkX3N0cmVhbXM9c2V0dGluZ3MuZ2V0
KFNldHRpbmcuUVBBQ0tfQkxPQ0tFRF9TVFJFQU1TLCAwKSwKLSAgICAgICAgICAgICkKLSAgICAg
ICAgICAgIHNlbGYuX3F1aWMuc2VuZF9zdHJlYW1fZGF0YShzZWxmLl9sb2NhbF9lbmNvZGVyX3N0
cmVhbV9pZCwgZW5jb2RlcikKLSAgICAgICAgZWxpZiBmcmFtZV90eXBlID09IEZyYW1lVHlwZS5N
QVhfUFVTSF9JRDoKLSAgICAgICAgICAgIGlmIHNlbGYuX2lzX2NsaWVudDoKLSAgICAgICAgICAg
ICAgICByYWlzZSBGcmFtZVVuZXhwZWN0ZWQoIlNlcnZlcnMgbXVzdCBub3Qgc2VuZCBNQVhfUFVT
SF9JRCIpCi0gICAgICAgICAgICBzZWxmLl9tYXhfcHVzaF9pZCA9IHBhcnNlX21heF9wdXNoX2lk
KGZyYW1lX2RhdGEpCi0gICAgICAgIGVsaWYgZnJhbWVfdHlwZSBpbiAoCi0gICAgICAgICAgICBG
cmFtZVR5cGUuREFUQSwKLSAgICAgICAgICAgIEZyYW1lVHlwZS5IRUFERVJTLAotICAgICAgICAg
ICAgRnJhbWVUeXBlLlBVU0hfUFJPTUlTRSwKLSAgICAgICAgICAgIEZyYW1lVHlwZS5EVVBMSUNB
VEVfUFVTSCwKLSAgICAgICAgKToKLSAgICAgICAgICAgIHJhaXNlIEZyYW1lVW5leHBlY3RlZCgi
SW52YWxpZCBmcmFtZSB0eXBlIG9uIGNvbnRyb2wgc3RyZWFtIikKLQotICAgIGRlZiBfaGFuZGxl
X3JlcXVlc3Rfb3JfcHVzaF9mcmFtZSgKLSAgICAgICAgc2VsZiwKLSAgICAgICAgZnJhbWVfdHlw
ZTogaW50LAotICAgICAgICBmcmFtZV9kYXRhOiBPcHRpb25hbFtieXRlc10sCi0gICAgICAgIHN0
cmVhbTogSDNTdHJlYW0sCi0gICAgICAgIHN0cmVhbV9lbmRlZDogYm9vbCwKLSAgICApIC0+IExp
c3RbSDNFdmVudF06Ci0gICAgICAgICIiIgotICAgICAgICBIYW5kbGUgYSBmcmFtZSByZWNlaXZl
ZCBvbiBhIHJlcXVlc3Qgb3IgcHVzaCBzdHJlYW0uCi0gICAgICAgICIiIgotICAgICAgICBodHRw
X2V2ZW50czogTGlzdFtIM0V2ZW50XSA9IFtdCi0KLSAgICAgICAgaWYgZnJhbWVfdHlwZSA9PSBG
cmFtZVR5cGUuREFUQToKLSAgICAgICAgICAgICMgY2hlY2sgREFUQSBmcmFtZSBpcyBhbGxvd2Vk
Ci0gICAgICAgICAgICBpZiBzdHJlYW0uaGVhZGVyc19yZWN2X3N0YXRlICE9IEhlYWRlcnNTdGF0
ZS5BRlRFUl9IRUFERVJTOgotICAgICAgICAgICAgICAgIHJhaXNlIEZyYW1lVW5leHBlY3RlZCgi
REFUQSBmcmFtZSBpcyBub3QgYWxsb3dlZCBpbiB0aGlzIHN0YXRlIikKLQotICAgICAgICAgICAg
aWYgc3RyZWFtX2VuZGVkIG9yIGZyYW1lX2RhdGE6Ci0gICAgICAgICAgICAgICAgaHR0cF9ldmVu
dHMuYXBwZW5kKAotICAgICAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoCi0gICAgICAgICAg
ICAgICAgICAgICAgICBkYXRhPWZyYW1lX2RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICBw
dXNoX2lkPXN0cmVhbS5wdXNoX2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2Vu
ZGVkPXN0cmVhbV9lbmRlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJl
YW0uc3RyZWFtX2lkLAotICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgKQot
ICAgICAgICBlbGlmIGZyYW1lX3R5cGUgPT0gRnJhbWVUeXBlLkhFQURFUlM6Ci0gICAgICAgICAg
ICAjIGNoZWNrIEhFQURFUlMgZnJhbWUgaXMgYWxsb3dlZAotICAgICAgICAgICAgaWYgc3RyZWFt
LmhlYWRlcnNfcmVjdl9zdGF0ZSA9PSBIZWFkZXJzU3RhdGUuQUZURVJfVFJBSUxFUlM6Ci0gICAg
ICAgICAgICAgICAgcmFpc2UgRnJhbWVVbmV4cGVjdGVkKCJIRUFERVJTIGZyYW1lIGlzIG5vdCBh
bGxvd2VkIGluIHRoaXMgc3RhdGUiKQotCi0gICAgICAgICAgICAjIHRyeSB0byBkZWNvZGUgSEVB
REVSUywgbWF5IHJhaXNlIHB5bHNxcGFjay5TdHJlYW1CbG9ja2VkCi0gICAgICAgICAgICBoZWFk
ZXJzID0gc2VsZi5fZGVjb2RlX2hlYWRlcnMoc3RyZWFtLnN0cmVhbV9pZCwgZnJhbWVfZGF0YSkK
LQotICAgICAgICAgICAgIyBsb2cgZnJhbWUKLSAgICAgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9n
Z2VyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmxvZ19l
dmVudCgKLSAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnk9Imh0dHAiLAotICAgICAgICAgICAg
ICAgICAgICBldmVudD0iZnJhbWVfcGFyc2VkIiwKLSAgICAgICAgICAgICAgICAgICAgZGF0YT1x
bG9nX2VuY29kZV9oZWFkZXJzX2ZyYW1lKAotICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZV9s
ZW5ndGg9c3RyZWFtLmJsb2NrZWRfZnJhbWVfc2l6ZQotICAgICAgICAgICAgICAgICAgICAgICAg
aWYgZnJhbWVfZGF0YSBpcyBOb25lCi0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGxlbihm
cmFtZV9kYXRhKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9aGVhZGVycywKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW0uc3RyZWFtX2lkLAotICAgICAg
ICAgICAgICAgICAgICApLAotICAgICAgICAgICAgICAgICkKLQotICAgICAgICAgICAgIyB1cGRh
dGUgc3RhdGUgYW5kIGVtaXQgaGVhZGVycwotICAgICAgICAgICAgaWYgc3RyZWFtLmhlYWRlcnNf
cmVjdl9zdGF0ZSA9PSBIZWFkZXJzU3RhdGUuSU5JVElBTDoKLSAgICAgICAgICAgICAgICBzdHJl
YW0uaGVhZGVyc19yZWN2X3N0YXRlID0gSGVhZGVyc1N0YXRlLkFGVEVSX0hFQURFUlMKLSAgICAg
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc3RyZWFtLmhlYWRlcnNfcmVjdl9zdGF0ZSA9
IEhlYWRlcnNTdGF0ZS5BRlRFUl9UUkFJTEVSUwotICAgICAgICAgICAgaHR0cF9ldmVudHMuYXBw
ZW5kKAotICAgICAgICAgICAgICAgIEhlYWRlcnNSZWNlaXZlZCgKLSAgICAgICAgICAgICAgICAg
ICAgaGVhZGVycz1oZWFkZXJzLAotICAgICAgICAgICAgICAgICAgICBwdXNoX2lkPXN0cmVhbS5w
dXNoX2lkLAotICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtLnN0cmVhbV9pZCwK
LSAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVkPXN0cmVhbV9lbmRlZCwKLSAgICAgICAg
ICAgICAgICApCi0gICAgICAgICAgICApCi0gICAgICAgIGVsaWYgc3RyZWFtLmZyYW1lX3R5cGUg
PT0gRnJhbWVUeXBlLlBVU0hfUFJPTUlTRSBhbmQgc3RyZWFtLnB1c2hfaWQgaXMgTm9uZToKLSAg
ICAgICAgICAgIGlmIG5vdCBzZWxmLl9pc19jbGllbnQ6Ci0gICAgICAgICAgICAgICAgcmFpc2Ug
RnJhbWVVbmV4cGVjdGVkKCJDbGllbnRzIG11c3Qgbm90IHNlbmQgUFVTSF9QUk9NSVNFIikKLSAg
ICAgICAgICAgIGZyYW1lX2J1ZiA9IEJ1ZmZlcihkYXRhPWZyYW1lX2RhdGEpCi0gICAgICAgICAg
ICBwdXNoX2lkID0gZnJhbWVfYnVmLnB1bGxfdWludF92YXIoKQotICAgICAgICAgICAgaGVhZGVy
cyA9IHNlbGYuX2RlY29kZV9oZWFkZXJzKAotICAgICAgICAgICAgICAgIHN0cmVhbS5zdHJlYW1f
aWQsIGZyYW1lX2RhdGFbZnJhbWVfYnVmLnRlbGwoKSA6XQotICAgICAgICAgICAgKQotCi0gICAg
ICAgICAgICAjIGxvZyBmcmFtZQotICAgICAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMg
bm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIubG9nX2V2ZW50KAot
ICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeT0iaHR0cCIsCi0gICAgICAgICAgICAgICAgICAg
IGV2ZW50PSJmcmFtZV9wYXJzZWQiLAotICAgICAgICAgICAgICAgICAgICBkYXRhPXFsb2dfZW5j
b2RlX3B1c2hfcHJvbWlzZV9mcmFtZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVfbGVu
Z3RoPWxlbihmcmFtZV9kYXRhKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9aGVh
ZGVycywKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1c2hfaWQ9cHVzaF9pZCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW0uc3RyZWFtX2lkLAotICAgICAgICAgICAg
ICAgICAgICApLAotICAgICAgICAgICAgICAgICkKLQotICAgICAgICAgICAgIyBlbWl0IGV2ZW50
Ci0gICAgICAgICAgICBodHRwX2V2ZW50cy5hcHBlbmQoCi0gICAgICAgICAgICAgICAgUHVzaFBy
b21pc2VSZWNlaXZlZCgKLSAgICAgICAgICAgICAgICAgICAgaGVhZGVycz1oZWFkZXJzLCBwdXNo
X2lkPXB1c2hfaWQsIHN0cmVhbV9pZD1zdHJlYW0uc3RyZWFtX2lkCi0gICAgICAgICAgICAgICAg
KQotICAgICAgICAgICAgKQotICAgICAgICBlbGlmIGZyYW1lX3R5cGUgaW4gKAotICAgICAgICAg
ICAgRnJhbWVUeXBlLlBSSU9SSVRZLAotICAgICAgICAgICAgRnJhbWVUeXBlLkNBTkNFTF9QVVNI
LAotICAgICAgICAgICAgRnJhbWVUeXBlLlNFVFRJTkdTLAotICAgICAgICAgICAgRnJhbWVUeXBl
LlBVU0hfUFJPTUlTRSwKLSAgICAgICAgICAgIEZyYW1lVHlwZS5HT0FXQVksCi0gICAgICAgICAg
ICBGcmFtZVR5cGUuTUFYX1BVU0hfSUQsCi0gICAgICAgICAgICBGcmFtZVR5cGUuRFVQTElDQVRF
X1BVU0gsCi0gICAgICAgICk6Ci0gICAgICAgICAgICByYWlzZSBGcmFtZVVuZXhwZWN0ZWQoCi0g
ICAgICAgICAgICAgICAgIkludmFsaWQgZnJhbWUgdHlwZSBvbiByZXF1ZXN0IHN0cmVhbSIKLSAg
ICAgICAgICAgICAgICBpZiBzdHJlYW0ucHVzaF9pZCBpcyBOb25lCi0gICAgICAgICAgICAgICAg
ZWxzZSAiSW52YWxpZCBmcmFtZSB0eXBlIG9uIHB1c2ggc3RyZWFtIgotICAgICAgICAgICAgKQot
Ci0gICAgICAgIHJldHVybiBodHRwX2V2ZW50cwotCi0gICAgZGVmIF9pbml0X2Nvbm5lY3Rpb24o
c2VsZikgLT4gTm9uZToKLSAgICAgICAgIyBzZW5kIG91ciBzZXR0aW5ncwotICAgICAgICBzZWxm
Ll9sb2NhbF9jb250cm9sX3N0cmVhbV9pZCA9IHNlbGYuX2NyZWF0ZV91bmlfc3RyZWFtKFN0cmVh
bVR5cGUuQ09OVFJPTCkKLSAgICAgICAgc2VsZi5fcXVpYy5zZW5kX3N0cmVhbV9kYXRhKAotICAg
ICAgICAgICAgc2VsZi5fbG9jYWxfY29udHJvbF9zdHJlYW1faWQsCi0gICAgICAgICAgICBlbmNv
ZGVfZnJhbWUoCi0gICAgICAgICAgICAgICAgRnJhbWVUeXBlLlNFVFRJTkdTLAotICAgICAgICAg
ICAgICAgIGVuY29kZV9zZXR0aW5ncygKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICAgICAgU2V0dGluZy5RUEFDS19NQVhfVEFCTEVfQ0FQQUNJVFk6IHNlbGYuX21h
eF90YWJsZV9jYXBhY2l0eSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFNldHRpbmcuUVBBQ0tf
QkxPQ0tFRF9TVFJFQU1TOiBzZWxmLl9ibG9ja2VkX3N0cmVhbXMsCi0gICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgKSwKLSAgICAgICAgKQotICAg
ICAgICBpZiBzZWxmLl9pc19jbGllbnQgYW5kIHNlbGYuX21heF9wdXNoX2lkIGlzIG5vdCBOb25l
OgotICAgICAgICAgICAgc2VsZi5fcXVpYy5zZW5kX3N0cmVhbV9kYXRhKAotICAgICAgICAgICAg
ICAgIHNlbGYuX2xvY2FsX2NvbnRyb2xfc3RyZWFtX2lkLAotICAgICAgICAgICAgICAgIGVuY29k
ZV9mcmFtZShGcmFtZVR5cGUuTUFYX1BVU0hfSUQsIGVuY29kZV91aW50X3ZhcihzZWxmLl9tYXhf
cHVzaF9pZCkpLAotICAgICAgICAgICAgKQotCi0gICAgICAgICMgY3JlYXRlIGVuY29kZXIgYW5k
IGRlY29kZXIgc3RyZWFtcwotICAgICAgICBzZWxmLl9sb2NhbF9lbmNvZGVyX3N0cmVhbV9pZCA9
IHNlbGYuX2NyZWF0ZV91bmlfc3RyZWFtKAotICAgICAgICAgICAgU3RyZWFtVHlwZS5RUEFDS19F
TkNPREVSCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5fbG9jYWxfZGVjb2Rlcl9zdHJlYW1faWQg
PSBzZWxmLl9jcmVhdGVfdW5pX3N0cmVhbSgKLSAgICAgICAgICAgIFN0cmVhbVR5cGUuUVBBQ0tf
REVDT0RFUgotICAgICAgICApCi0KLSAgICBkZWYgX3JlY2VpdmVfcmVxdWVzdF9vcl9wdXNoX2Rh
dGEoCi0gICAgICAgIHNlbGYsIHN0cmVhbTogSDNTdHJlYW0sIGRhdGE6IGJ5dGVzLCBzdHJlYW1f
ZW5kZWQ6IGJvb2wKLSAgICApIC0+IExpc3RbSDNFdmVudF06Ci0gICAgICAgICIiIgotICAgICAg
ICBIYW5kbGUgZGF0YSByZWNlaXZlZCBvbiBhIHJlcXVlc3Qgb3IgcHVzaCBzdHJlYW0uCi0gICAg
ICAgICIiIgotICAgICAgICBodHRwX2V2ZW50czogTGlzdFtIM0V2ZW50XSA9IFtdCi0KLSAgICAg
ICAgc3RyZWFtLmJ1ZmZlciArPSBkYXRhCi0gICAgICAgIGlmIHN0cmVhbV9lbmRlZDoKLSAgICAg
ICAgICAgIHN0cmVhbS5lbmRlZCA9IFRydWUKLSAgICAgICAgaWYgc3RyZWFtLmJsb2NrZWQ6Ci0g
ICAgICAgICAgICByZXR1cm4gaHR0cF9ldmVudHMKLQotICAgICAgICAjIHNob3J0Y3V0IGZvciBE
QVRBIGZyYW1lIGZyYWdtZW50cwotICAgICAgICBpZiAoCi0gICAgICAgICAgICBzdHJlYW0uZnJh
bWVfdHlwZSA9PSBGcmFtZVR5cGUuREFUQQotICAgICAgICAgICAgYW5kIHN0cmVhbS5mcmFtZV9z
aXplIGlzIG5vdCBOb25lCi0gICAgICAgICAgICBhbmQgbGVuKHN0cmVhbS5idWZmZXIpIDwgc3Ry
ZWFtLmZyYW1lX3NpemUKLSAgICAgICAgKToKLSAgICAgICAgICAgIGh0dHBfZXZlbnRzLmFwcGVu
ZCgKLSAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoCi0gICAgICAgICAgICAgICAgICAgIGRh
dGE9c3RyZWFtLmJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgcHVzaF9pZD1zdHJlYW0ucHVz
aF9pZCwKLSAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbS5zdHJlYW1faWQsCi0g
ICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1GYWxzZSwKLSAgICAgICAgICAgICAgICAp
Ci0gICAgICAgICAgICApCi0gICAgICAgICAgICBzdHJlYW0uZnJhbWVfc2l6ZSAtPSBsZW4oc3Ry
ZWFtLmJ1ZmZlcikKLSAgICAgICAgICAgIHN0cmVhbS5idWZmZXIgPSBiIiIKLSAgICAgICAgICAg
IHJldHVybiBodHRwX2V2ZW50cwotCi0gICAgICAgICMgaGFuZGxlIGxvbmUgRklOCi0gICAgICAg
IGlmIHN0cmVhbV9lbmRlZCBhbmQgbm90IHN0cmVhbS5idWZmZXI6Ci0gICAgICAgICAgICBodHRw
X2V2ZW50cy5hcHBlbmQoCi0gICAgICAgICAgICAgICAgRGF0YVJlY2VpdmVkKAotICAgICAgICAg
ICAgICAgICAgICBkYXRhPWIiIiwKLSAgICAgICAgICAgICAgICAgICAgcHVzaF9pZD1zdHJlYW0u
cHVzaF9pZCwKLSAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbS5zdHJlYW1faWQs
Ci0gICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1UcnVlLAotICAgICAgICAgICAgICAg
ICkKLSAgICAgICAgICAgICkKLSAgICAgICAgICAgIHJldHVybiBodHRwX2V2ZW50cwotCi0gICAg
ICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPXN0cmVhbS5idWZmZXIpCi0gICAgICAgIGNvbnN1bWVkID0g
MAotCi0gICAgICAgIHdoaWxlIG5vdCBidWYuZW9mKCk6Ci0gICAgICAgICAgICAjIGZldGNoIG5l
eHQgZnJhbWUgaGVhZGVyCi0gICAgICAgICAgICBpZiBzdHJlYW0uZnJhbWVfc2l6ZSBpcyBOb25l
OgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgc3RyZWFtLmZyYW1l
X3R5cGUgPSBidWYucHVsbF91aW50X3ZhcigpCi0gICAgICAgICAgICAgICAgICAgIHN0cmVhbS5m
cmFtZV9zaXplID0gYnVmLnB1bGxfdWludF92YXIoKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBC
dWZmZXJSZWFkRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAg
ICAgY29uc3VtZWQgPSBidWYudGVsbCgpCi0KLSAgICAgICAgICAgICAgICAjIGxvZyBmcmFtZQot
ICAgICAgICAgICAgICAgIGlmICgKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dn
ZXIgaXMgbm90IE5vbmUKLSAgICAgICAgICAgICAgICAgICAgYW5kIHN0cmVhbS5mcmFtZV90eXBl
ID09IEZyYW1lVHlwZS5EQVRBCi0gICAgICAgICAgICAgICAgKToKLSAgICAgICAgICAgICAgICAg
ICAgc2VsZi5fcXVpY19sb2dnZXIubG9nX2V2ZW50KAotICAgICAgICAgICAgICAgICAgICAgICAg
Y2F0ZWdvcnk9Imh0dHAiLAotICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQ9ImZyYW1lX3Bh
cnNlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhPXFsb2dfZW5jb2RlX2RhdGFfZnJh
bWUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZV9sZW5ndGg9c3RyZWFtLmZyYW1l
X3NpemUsIHN0cmVhbV9pZD1zdHJlYW0uc3RyZWFtX2lkCi0gICAgICAgICAgICAgICAgICAgICAg
ICApLAotICAgICAgICAgICAgICAgICAgICApCi0KLSAgICAgICAgICAgICMgY2hlY2sgaG93IG11
Y2ggZGF0YSBpcyBhdmFpbGFibGUKLSAgICAgICAgICAgIGNodW5rX3NpemUgPSBtaW4oc3RyZWFt
LmZyYW1lX3NpemUsIGJ1Zi5jYXBhY2l0eSAtIGNvbnN1bWVkKQotICAgICAgICAgICAgaWYgc3Ry
ZWFtLmZyYW1lX3R5cGUgIT0gRnJhbWVUeXBlLkRBVEEgYW5kIGNodW5rX3NpemUgPCBzdHJlYW0u
ZnJhbWVfc2l6ZToKLSAgICAgICAgICAgICAgICBicmVhawotCi0gICAgICAgICAgICAjIHJlYWQg
YXZhaWxhYmxlIGRhdGEKLSAgICAgICAgICAgIGZyYW1lX2RhdGEgPSBidWYucHVsbF9ieXRlcyhj
aHVua19zaXplKQotICAgICAgICAgICAgY29uc3VtZWQgPSBidWYudGVsbCgpCi0KLSAgICAgICAg
ICAgICMgZGV0ZWN0IGVuZCBvZiBmcmFtZQotICAgICAgICAgICAgc3RyZWFtLmZyYW1lX3NpemUg
LT0gY2h1bmtfc2l6ZQotICAgICAgICAgICAgaWYgbm90IHN0cmVhbS5mcmFtZV9zaXplOgotICAg
ICAgICAgICAgICAgIHN0cmVhbS5mcmFtZV9zaXplID0gTm9uZQotCi0gICAgICAgICAgICB0cnk6
Ci0gICAgICAgICAgICAgICAgaHR0cF9ldmVudHMuZXh0ZW5kKAotICAgICAgICAgICAgICAgICAg
ICBzZWxmLl9oYW5kbGVfcmVxdWVzdF9vcl9wdXNoX2ZyYW1lKAotICAgICAgICAgICAgICAgICAg
ICAgICAgZnJhbWVfdHlwZT1zdHJlYW0uZnJhbWVfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGZyYW1lX2RhdGE9ZnJhbWVfZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVh
bT1zdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9c3RyZWFtLmVu
ZGVkIGFuZCBidWYuZW9mKCksCi0gICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAg
ICApCi0gICAgICAgICAgICBleGNlcHQgcHlsc3FwYWNrLlN0cmVhbUJsb2NrZWQ6Ci0gICAgICAg
ICAgICAgICAgc3RyZWFtLmJsb2NrZWQgPSBUcnVlCi0gICAgICAgICAgICAgICAgc3RyZWFtLmJs
b2NrZWRfZnJhbWVfc2l6ZSA9IGxlbihmcmFtZV9kYXRhKQotICAgICAgICAgICAgICAgIGJyZWFr
Ci0KLSAgICAgICAgIyByZW1vdmUgcHJvY2Vzc2VkIGRhdGEgZnJvbSBidWZmZXIKLSAgICAgICAg
c3RyZWFtLmJ1ZmZlciA9IHN0cmVhbS5idWZmZXJbY29uc3VtZWQ6XQotCi0gICAgICAgIHJldHVy
biBodHRwX2V2ZW50cwotCi0gICAgZGVmIF9yZWNlaXZlX3N0cmVhbV9kYXRhX3VuaSgKLSAgICAg
ICAgc2VsZiwgc3RyZWFtOiBIM1N0cmVhbSwgZGF0YTogYnl0ZXMsIHN0cmVhbV9lbmRlZDogYm9v
bAotICAgICkgLT4gTGlzdFtIM0V2ZW50XToKLSAgICAgICAgaHR0cF9ldmVudHM6IExpc3RbSDNF
dmVudF0gPSBbXQotCi0gICAgICAgIHN0cmVhbS5idWZmZXIgKz0gZGF0YQotICAgICAgICBpZiBz
dHJlYW1fZW5kZWQ6Ci0gICAgICAgICAgICBzdHJlYW0uZW5kZWQgPSBUcnVlCi0KLSAgICAgICAg
YnVmID0gQnVmZmVyKGRhdGE9c3RyZWFtLmJ1ZmZlcikKLSAgICAgICAgY29uc3VtZWQgPSAwCi0g
ICAgICAgIHVuYmxvY2tlZF9zdHJlYW1zOiBTZXRbaW50XSA9IHNldCgpCi0KLSAgICAgICAgd2hp
bGUgc3RyZWFtLnN0cmVhbV90eXBlID09IFN0cmVhbVR5cGUuUFVTSCBvciBub3QgYnVmLmVvZigp
OgotICAgICAgICAgICAgIyBmZXRjaCBzdHJlYW0gdHlwZSBmb3IgdW5pZGlyZWN0aW9uYWwgc3Ry
ZWFtcwotICAgICAgICAgICAgaWYgc3RyZWFtLnN0cmVhbV90eXBlIGlzIE5vbmU6Ci0gICAgICAg
ICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBzdHJlYW0uc3RyZWFtX3R5cGUgPSBi
dWYucHVsbF91aW50X3ZhcigpCi0gICAgICAgICAgICAgICAgZXhjZXB0IEJ1ZmZlclJlYWRFcnJv
cjoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBjb25zdW1lZCA9
IGJ1Zi50ZWxsKCkKLQotICAgICAgICAgICAgICAgICMgY2hlY2sgdW5pY2l0eQotICAgICAgICAg
ICAgICAgIGlmIHN0cmVhbS5zdHJlYW1fdHlwZSA9PSBTdHJlYW1UeXBlLkNPTlRST0w6Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIHNlbGYuX3BlZXJfY29udHJvbF9zdHJlYW1faWQgaXMgbm90IE5v
bmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBTdHJlYW1DcmVhdGlvbkVycm9yKCJP
bmx5IG9uZSBjb250cm9sIHN0cmVhbSBpcyBhbGxvd2VkIikKLSAgICAgICAgICAgICAgICAgICAg
c2VsZi5fcGVlcl9jb250cm9sX3N0cmVhbV9pZCA9IHN0cmVhbS5zdHJlYW1faWQKLSAgICAgICAg
ICAgICAgICBlbGlmIHN0cmVhbS5zdHJlYW1fdHlwZSA9PSBTdHJlYW1UeXBlLlFQQUNLX0RFQ09E
RVI6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX3BlZXJfZGVjb2Rlcl9zdHJlYW1faWQg
aXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBTdHJlYW1DcmVhdGlv
bkVycm9yKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPbmx5IG9uZSBRUEFDSyBkZWNv
ZGVyIHN0cmVhbSBpcyBhbGxvd2VkIgotICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9wZWVyX2RlY29kZXJfc3RyZWFtX2lkID0gc3RyZWFtLnN0cmVh
bV9pZAotICAgICAgICAgICAgICAgIGVsaWYgc3RyZWFtLnN0cmVhbV90eXBlID09IFN0cmVhbVR5
cGUuUVBBQ0tfRU5DT0RFUjoKLSAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5fcGVlcl9lbmNv
ZGVyX3N0cmVhbV9pZCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNl
IFN0cmVhbUNyZWF0aW9uRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9ubHkg
b25lIFFQQUNLIGVuY29kZXIgc3RyZWFtIGlzIGFsbG93ZWQiCi0gICAgICAgICAgICAgICAgICAg
ICAgICApCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3BlZXJfZW5jb2Rlcl9zdHJlYW1faWQg
PSBzdHJlYW0uc3RyZWFtX2lkCi0KLSAgICAgICAgICAgIGlmIHN0cmVhbS5zdHJlYW1fdHlwZSA9
PSBTdHJlYW1UeXBlLkNPTlRST0w6Ci0gICAgICAgICAgICAgICAgIyBmZXRjaCBuZXh0IGZyYW1l
Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBmcmFtZV90eXBlID0g
YnVmLnB1bGxfdWludF92YXIoKQotICAgICAgICAgICAgICAgICAgICBmcmFtZV9sZW5ndGggPSBi
dWYucHVsbF91aW50X3ZhcigpCi0gICAgICAgICAgICAgICAgICAgIGZyYW1lX2RhdGEgPSBidWYu
cHVsbF9ieXRlcyhmcmFtZV9sZW5ndGgpCi0gICAgICAgICAgICAgICAgZXhjZXB0IEJ1ZmZlclJl
YWRFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBjb25z
dW1lZCA9IGJ1Zi50ZWxsKCkKLQotICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9jb250cm9s
X2ZyYW1lKGZyYW1lX3R5cGUsIGZyYW1lX2RhdGEpCi0gICAgICAgICAgICBlbGlmIHN0cmVhbS5z
dHJlYW1fdHlwZSA9PSBTdHJlYW1UeXBlLlBVU0g6Ci0gICAgICAgICAgICAgICAgIyBmZXRjaCBw
dXNoIGlkCi0gICAgICAgICAgICAgICAgaWYgc3RyZWFtLnB1c2hfaWQgaXMgTm9uZToKLSAgICAg
ICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtLnB1c2hf
aWQgPSBidWYucHVsbF91aW50X3ZhcigpCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBCdWZm
ZXJSZWFkRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAg
ICAgICAgICBjb25zdW1lZCA9IGJ1Zi50ZWxsKCkKLQotICAgICAgICAgICAgICAgICMgcmVtb3Zl
IHByb2Nlc3NlZCBkYXRhIGZyb20gYnVmZmVyCi0gICAgICAgICAgICAgICAgc3RyZWFtLmJ1ZmZl
ciA9IHN0cmVhbS5idWZmZXJbY29uc3VtZWQ6XQotCi0gICAgICAgICAgICAgICAgcmV0dXJuIHNl
bGYuX3JlY2VpdmVfcmVxdWVzdF9vcl9wdXNoX2RhdGEoc3RyZWFtLCBiIiIsIHN0cmVhbV9lbmRl
ZCkKLSAgICAgICAgICAgIGVsaWYgc3RyZWFtLnN0cmVhbV90eXBlID09IFN0cmVhbVR5cGUuUVBB
Q0tfREVDT0RFUjoKLSAgICAgICAgICAgICAgICAjIGZlZWQgdW5mcmFtZWQgZGF0YSB0byBkZWNv
ZGVyCi0gICAgICAgICAgICAgICAgZGF0YSA9IGJ1Zi5wdWxsX2J5dGVzKGJ1Zi5jYXBhY2l0eSAt
IGJ1Zi50ZWxsKCkpCi0gICAgICAgICAgICAgICAgY29uc3VtZWQgPSBidWYudGVsbCgpCi0gICAg
ICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9lbmNvZGVyLmZlZWRf
ZGVjb2RlcihkYXRhKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBweWxzcXBhY2suRGVjb2RlclN0
cmVhbUVycm9yIGFzIGV4YzoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgUXBhY2tEZWNvZGVy
U3RyZWFtRXJyb3IoKSBmcm9tIGV4YwotICAgICAgICAgICAgICAgIHNlbGYuX2RlY29kZXJfYnl0
ZXNfcmVjZWl2ZWQgKz0gbGVuKGRhdGEpCi0gICAgICAgICAgICBlbGlmIHN0cmVhbS5zdHJlYW1f
dHlwZSA9PSBTdHJlYW1UeXBlLlFQQUNLX0VOQ09ERVI6Ci0gICAgICAgICAgICAgICAgIyBmZWVk
IHVuZnJhbWVkIGRhdGEgdG8gZW5jb2RlcgotICAgICAgICAgICAgICAgIGRhdGEgPSBidWYucHVs
bF9ieXRlcyhidWYuY2FwYWNpdHkgLSBidWYudGVsbCgpKQotICAgICAgICAgICAgICAgIGNvbnN1
bWVkID0gYnVmLnRlbGwoKQotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAg
ICAgdW5ibG9ja2VkX3N0cmVhbXMudXBkYXRlKHNlbGYuX2RlY29kZXIuZmVlZF9lbmNvZGVyKGRh
dGEpKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBweWxzcXBhY2suRW5jb2RlclN0cmVhbUVycm9y
IGFzIGV4YzoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgUXBhY2tFbmNvZGVyU3RyZWFtRXJy
b3IoKSBmcm9tIGV4YwotICAgICAgICAgICAgICAgIHNlbGYuX2VuY29kZXJfYnl0ZXNfcmVjZWl2
ZWQgKz0gbGVuKGRhdGEpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgdW5r
bm93biBzdHJlYW0gdHlwZSwgZGlzY2FyZCBkYXRhCi0gICAgICAgICAgICAgICAgYnVmLnNlZWso
YnVmLmNhcGFjaXR5KQotICAgICAgICAgICAgICAgIGNvbnN1bWVkID0gYnVmLnRlbGwoKQotCi0g
ICAgICAgICMgcmVtb3ZlIHByb2Nlc3NlZCBkYXRhIGZyb20gYnVmZmVyCi0gICAgICAgIHN0cmVh
bS5idWZmZXIgPSBzdHJlYW0uYnVmZmVyW2NvbnN1bWVkOl0KLQotICAgICAgICAjIHByb2Nlc3Mg
dW5ibG9ja2VkIHN0cmVhbXMKLSAgICAgICAgZm9yIHN0cmVhbV9pZCBpbiB1bmJsb2NrZWRfc3Ry
ZWFtczoKLSAgICAgICAgICAgIHN0cmVhbSA9IHNlbGYuX3N0cmVhbVtzdHJlYW1faWRdCi0KLSAg
ICAgICAgICAgICMgcmVzdW1lIGhlYWRlcnMKLSAgICAgICAgICAgIGh0dHBfZXZlbnRzLmV4dGVu
ZCgKLSAgICAgICAgICAgICAgICBzZWxmLl9oYW5kbGVfcmVxdWVzdF9vcl9wdXNoX2ZyYW1lKAot
ICAgICAgICAgICAgICAgICAgICBmcmFtZV90eXBlPUZyYW1lVHlwZS5IRUFERVJTLAotICAgICAg
ICAgICAgICAgICAgICBmcmFtZV9kYXRhPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgIHN0cmVh
bT1zdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1zdHJlYW0uZW5kZWQg
YW5kIG5vdCBzdHJlYW0uYnVmZmVyLAotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICkK
LSAgICAgICAgICAgIHN0cmVhbS5ibG9ja2VkID0gRmFsc2UKLSAgICAgICAgICAgIHN0cmVhbS5i
bG9ja2VkX2ZyYW1lX3NpemUgPSBOb25lCi0KLSAgICAgICAgICAgICMgcmVzdW1lIHByb2Nlc3Np
bmcKLSAgICAgICAgICAgIGlmIHN0cmVhbS5idWZmZXI6Ci0gICAgICAgICAgICAgICAgaHR0cF9l
dmVudHMuZXh0ZW5kKAotICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZWNlaXZlX3JlcXVlc3Rf
b3JfcHVzaF9kYXRhKHN0cmVhbSwgYiIiLCBzdHJlYW0uZW5kZWQpCi0gICAgICAgICAgICAgICAg
KQotCi0gICAgICAgIHJldHVybiBodHRwX2V2ZW50cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L3NyYy9haW9xdWljL2gzL2V2ZW50cy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMy9l
dmVudHMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkMjFjNWFiYzQyNzBjMmU4
ZjFiZTU4YTAwOWFlNzUyODEyZDFhMTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gzL2V2ZW50cy5weQorKysg
L2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLWZyb20gZGF0YWNsYXNzZXMgaW1wb3J0IGRhdGFj
bGFzcwotZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QsIE9wdGlvbmFsLCBUdXBsZQotCi1IZWFkZXJz
ID0gTGlzdFtUdXBsZVtieXRlcywgYnl0ZXNdXQotCi0KLWNsYXNzIEgzRXZlbnQ6Ci0gICAgIiIi
Ci0gICAgQmFzZSBjbGFzcyBmb3IgSFRUUC8zIGV2ZW50cy4KLSAgICAiIiIKLQotCi1AZGF0YWNs
YXNzCi1jbGFzcyBEYXRhUmVjZWl2ZWQoSDNFdmVudCk6Ci0gICAgIiIiCi0gICAgVGhlIERhdGFS
ZWNlaXZlZCBldmVudCBpcyBmaXJlZCB3aGVuZXZlciBkYXRhIGlzIHJlY2VpdmVkIG9uIGEgc3Ry
ZWFtIGZyb20KLSAgICB0aGUgcmVtb3RlIHBlZXIuCi0gICAgIiIiCi0KLSAgICBkYXRhOiBieXRl
cwotICAgICJUaGUgZGF0YSB3aGljaCB3YXMgcmVjZWl2ZWQuIgotCi0gICAgc3RyZWFtX2lkOiBp
bnQKLSAgICAiVGhlIElEIG9mIHRoZSBzdHJlYW0gdGhlIGRhdGEgd2FzIHJlY2VpdmVkIGZvci4i
Ci0KLSAgICBzdHJlYW1fZW5kZWQ6IGJvb2wKLSAgICAiV2hldGhlciB0aGUgU1RSRUFNIGZyYW1l
IGhhZCB0aGUgRklOIGJpdCBzZXQuIgotCi0gICAgcHVzaF9pZDogT3B0aW9uYWxbaW50XSA9IE5v
bmUKLSAgICAiVGhlIFB1c2ggSUQgb3IgYE5vbmVgIGlmIHRoaXMgaXMgbm90IGEgcHVzaC4iCi0K
LQotQGRhdGFjbGFzcwotY2xhc3MgSGVhZGVyc1JlY2VpdmVkKEgzRXZlbnQpOgotICAgICIiIgot
ICAgIFRoZSBIZWFkZXJzUmVjZWl2ZWQgZXZlbnQgaXMgZmlyZWQgd2hlbmV2ZXIgaGVhZGVycyBh
cmUgcmVjZWl2ZWQuCi0gICAgIiIiCi0KLSAgICBoZWFkZXJzOiBIZWFkZXJzCi0gICAgIlRoZSBo
ZWFkZXJzLiIKLQotICAgIHN0cmVhbV9pZDogaW50Ci0gICAgIlRoZSBJRCBvZiB0aGUgc3RyZWFt
IHRoZSBoZWFkZXJzIHdlcmUgcmVjZWl2ZWQgZm9yLiIKLQotICAgIHN0cmVhbV9lbmRlZDogYm9v
bAotICAgICJXaGV0aGVyIHRoZSBTVFJFQU0gZnJhbWUgaGFkIHRoZSBGSU4gYml0IHNldC4iCi0K
LSAgICBwdXNoX2lkOiBPcHRpb25hbFtpbnRdID0gTm9uZQotICAgICJUaGUgUHVzaCBJRCBvciBg
Tm9uZWAgaWYgdGhpcyBpcyBub3QgYSBwdXNoLiIKLQotCi1AZGF0YWNsYXNzCi1jbGFzcyBQdXNo
UHJvbWlzZVJlY2VpdmVkKEgzRXZlbnQpOgotICAgICIiIgotICAgIFRoZSBQdXNoZWRTdHJlYW1S
ZWNlaXZlZCBldmVudCBpcyBmaXJlZCB3aGVuZXZlciBhIHB1c2hlZCBzdHJlYW0gaGFzIGJlZW4K
LSAgICByZWNlaXZlZCBmcm9tIHRoZSByZW1vdGUgcGVlci4KLSAgICAiIiIKLQotICAgIGhlYWRl
cnM6IEhlYWRlcnMKLSAgICAiVGhlIHJlcXVlc3QgaGVhZGVycy4iCi0KLSAgICBwdXNoX2lkOiBp
bnQKLSAgICAiVGhlIFB1c2ggSUQgb2YgdGhlIHB1c2ggcHJvbWlzZS4iCi0KLSAgICBzdHJlYW1f
aWQ6IGludAotICAgICJUaGUgU3RyZWFtIElEIG9mIHRoZSBzdHJlYW0gdGhhdCB0aGUgcHVzaCBp
cyByZWxhdGVkIHRvLiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9oMy9l
eGNlcHRpb25zLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gzL2V4Y2VwdGlvbnMucHkK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1MjAwYzFkNjFmYTViM2ExMTViNDM0NjRk
NTY3ZWEzYWEyODU3NmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gzL2V4Y2VwdGlvbnMucHkKKysrIC9kZXYv
bnVsbApAQCAtMSwxMCArMCwwIEBACi1jbGFzcyBIM0Vycm9yKEV4Y2VwdGlvbik6Ci0gICAgIiIi
Ci0gICAgQmFzZSBjbGFzcyBmb3IgSFRUUC8zIGV4Y2VwdGlvbnMuCi0gICAgIiIiCi0KLQotY2xh
c3MgTm9BdmFpbGFibGVQdXNoSURFcnJvcihIM0Vycm9yKToKLSAgICAiIiIKLSAgICBUaGVyZSBh
cmUgbm8gYXZhaWxhYmxlIHB1c2ggSURzIGxlZnQuCi0gICAgIiIiCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvaDMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3Jj
L2Fpb3F1aWMvaDMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDBiMzYzZTliNjA4MGIwZWYzZThiZDY4YWE1MzMwMjQ5ZGZmMTIyMzkuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWlj
L2gzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotVGhlIHRl
c3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRv
cnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3Rl
YWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dp
dGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2Ny
aXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9k
aWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyBy
ZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmlu
ZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gzL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L3NyYy9haW9xdWljL2gzL2Nvbm5lY3Rpb24ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMv
aDMvZXZlbnRzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL2gzL2V4Y2VwdGlvbnMucHkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9weS50eXBlZCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy9zcmMvYWlvcXVpYy9weS50eXBlZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZjU2NDJmNzlmMjFkODcyZjAxMDk3OWRjZjZmMGM0YTQxNWFjYzE5ZC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMv
cHkudHlwZWQKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1NYXJrZXIKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L3NyYy9haW9xdWljL3F1aWMvX19pbml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGE2ODM0YjgyODVhNTZiZWYwZTE1NDNmZDkwMWM3ZTZmMmY4YmMyMDIuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9x
dWljL3F1aWMvX19pbml0X18ucHkKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0jIFRoaXMg
ZmlsZSBpcyByZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRpcmVjdG9yeSBmb3Ig
bW9kdWxlcy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9jb25maWd1cmF0aW9uLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Ny
Yy9haW9xdWljL3F1aWMvY29uZmlndXJhdGlvbi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZjg2MWY4Mjk3OWU5OTc2ZDI5ZTdjNThhZjI3ZjNlYTYxZDBkYTA3Yi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fp
b3F1aWMvcXVpYy9jb25maWd1cmF0aW9uLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTI0ICswLDAg
QEAKLWZyb20gZGF0YWNsYXNzZXMgaW1wb3J0IGRhdGFjbGFzcywgZmllbGQKLWZyb20gb3MgaW1w
b3J0IFBhdGhMaWtlCi1mcm9tIHR5cGluZyBpbXBvcnQgQW55LCBMaXN0LCBPcHRpb25hbCwgVGV4
dElPLCBVbmlvbgotCi1mcm9tIC4udGxzIGltcG9ydCBTZXNzaW9uVGlja2V0LCBsb2FkX3BlbV9w
cml2YXRlX2tleSwgbG9hZF9wZW1feDUwOV9jZXJ0aWZpY2F0ZXMKLWZyb20gLmxvZ2dlciBpbXBv
cnQgUXVpY0xvZ2dlcgotZnJvbSAucGFja2V0IGltcG9ydCBRdWljUHJvdG9jb2xWZXJzaW9uCi0K
LQotQGRhdGFjbGFzcwotY2xhc3MgUXVpY0NvbmZpZ3VyYXRpb246Ci0gICAgIiIiCi0gICAgQSBR
VUlDIGNvbmZpZ3VyYXRpb24uCi0gICAgIiIiCi0KLSAgICBhbHBuX3Byb3RvY29sczogT3B0aW9u
YWxbTGlzdFtzdHJdXSA9IE5vbmUKLSAgICAiIiIKLSAgICBBIGxpc3Qgb2Ygc3VwcG9ydGVkIEFM
UE4gcHJvdG9jb2xzLgotICAgICIiIgotCi0gICAgY29ubmVjdGlvbl9pZF9sZW5ndGg6IGludCA9
IDgKLSAgICAiIiIKLSAgICBUaGUgbGVuZ3RoIGluIGJ5dGVzIG9mIGxvY2FsIGNvbm5lY3Rpb24g
SURzLgotICAgICIiIgotCi0gICAgaWRsZV90aW1lb3V0OiBmbG9hdCA9IDYwLjAKLSAgICAiIiIK
LSAgICBUaGUgaWRsZSB0aW1lb3V0IGluIHNlY29uZHMuCi0KLSAgICBUaGUgY29ubmVjdGlvbiBp
cyB0ZXJtaW5hdGVkIGlmIG5vdGhpbmcgaXMgcmVjZWl2ZWQgZm9yIHRoZSBnaXZlbiBkdXJhdGlv
bi4KLSAgICAiIiIKLQotICAgIGlzX2NsaWVudDogYm9vbCA9IFRydWUKLSAgICAiIiIKLSAgICBX
aGV0aGVyIHRoaXMgaXMgdGhlIGNsaWVudCBzaWRlIG9mIHRoZSBRVUlDIGNvbm5lY3Rpb24uCi0g
ICAgIiIiCi0KLSAgICBtYXhfZGF0YTogaW50ID0gMTA0ODU3NgotICAgICIiIgotICAgIENvbm5l
Y3Rpb24td2lkZSBmbG93IGNvbnRyb2wgbGltaXQuCi0gICAgIiIiCi0KLSAgICBtYXhfc3RyZWFt
X2RhdGE6IGludCA9IDEwNDg1NzYKLSAgICAiIiIKLSAgICBQZXItc3RyZWFtIGZsb3cgY29udHJv
bCBsaW1pdC4KLSAgICAiIiIKLQotICAgIHF1aWNfbG9nZ2VyOiBPcHRpb25hbFtRdWljTG9nZ2Vy
XSA9IE5vbmUKLSAgICAiIiIKLSAgICBUaGUgOmNsYXNzOmB+YWlvcXVpYy5xdWljLmxvZ2dlci5R
dWljTG9nZ2VyYCBpbnN0YW5jZSB0byBsb2cgZXZlbnRzIHRvLgotICAgICIiIgotCi0gICAgc2Vj
cmV0c19sb2dfZmlsZTogVGV4dElPID0gTm9uZQotICAgICIiIgotICAgIEEgZmlsZS1saWtlIG9i
amVjdCBpbiB3aGljaCB0byBsb2cgdHJhZmZpYyBzZWNyZXRzLgotCi0gICAgVGhpcyBpcyB1c2Vm
dWwgdG8gYW5hbHl6ZSB0cmFmZmljIGNhcHR1cmVzIHdpdGggV2lyZXNoYXJrLgotICAgICIiIgot
Ci0gICAgc2VydmVyX25hbWU6IE9wdGlvbmFsW3N0cl0gPSBOb25lCi0gICAgIiIiCi0gICAgVGhl
IHNlcnZlciBuYW1lIHRvIHNlbmQgZHVyaW5nIHRoZSBUTFMgaGFuZHNoYWtlIHRoZSBTZXJ2ZXIg
TmFtZSBJbmRpY2F0aW9uLgotCi0gICAgLi4gbm90ZTo6IFRoaXMgaXMgb25seSB1c2VkIGJ5IGNs
aWVudHMuCi0gICAgIiIiCi0KLSAgICBzZXNzaW9uX3RpY2tldDogT3B0aW9uYWxbU2Vzc2lvblRp
Y2tldF0gPSBOb25lCi0gICAgIiIiCi0gICAgVGhlIFRMUyBzZXNzaW9uIHRpY2tldCB3aGljaCBz
aG91bGQgYmUgdXNlZCBmb3Igc2Vzc2lvbiByZXN1bXB0aW9uLgotICAgICIiIgotCi0gICAgY2Fk
YXRhOiBPcHRpb25hbFtieXRlc10gPSBOb25lCi0gICAgY2FmaWxlOiBPcHRpb25hbFtzdHJdID0g
Tm9uZQotICAgIGNhcGF0aDogT3B0aW9uYWxbc3RyXSA9IE5vbmUKLSAgICBjZXJ0aWZpY2F0ZTog
QW55ID0gTm9uZQotICAgIGNlcnRpZmljYXRlX2NoYWluOiBMaXN0W0FueV0gPSBmaWVsZChkZWZh
dWx0X2ZhY3Rvcnk9bGlzdCkKLSAgICBtYXhfZGF0YWdyYW1fZnJhbWVfc2l6ZTogT3B0aW9uYWxb
aW50XSA9IE5vbmUKLSAgICBwcml2YXRlX2tleTogQW55ID0gTm9uZQotICAgIHF1YW50dW1fcmVh
ZGluZXNzX3Rlc3Q6IGJvb2wgPSBGYWxzZQotICAgIHN1cHBvcnRlZF92ZXJzaW9uczogTGlzdFtp
bnRdID0gZmllbGQoCi0gICAgICAgIGRlZmF1bHRfZmFjdG9yeT1sYW1iZGE6IFsKLSAgICAgICAg
ICAgIFF1aWNQcm90b2NvbFZlcnNpb24uRFJBRlRfMjcsCi0gICAgICAgICAgICBRdWljUHJvdG9j
b2xWZXJzaW9uLkRSQUZUXzI2LAotICAgICAgICAgICAgUXVpY1Byb3RvY29sVmVyc2lvbi5EUkFG
VF8yNSwKLSAgICAgICAgXQotICAgICkKLSAgICB2ZXJpZnlfbW9kZTogT3B0aW9uYWxbaW50XSA9
IE5vbmUKLQotICAgIGRlZiBsb2FkX2NlcnRfY2hhaW4oCi0gICAgICAgIHNlbGYsCi0gICAgICAg
IGNlcnRmaWxlOiBQYXRoTGlrZSwKLSAgICAgICAga2V5ZmlsZTogT3B0aW9uYWxbUGF0aExpa2Vd
ID0gTm9uZSwKLSAgICAgICAgcGFzc3dvcmQ6IE9wdGlvbmFsW1VuaW9uW2J5dGVzLCBzdHJdXSA9
IE5vbmUsCi0gICAgKSAtPiBOb25lOgotICAgICAgICAiIiIKLSAgICAgICAgTG9hZCBhIHByaXZh
dGUga2V5IGFuZCB0aGUgY29ycmVzcG9uZGluZyBjZXJ0aWZpY2F0ZS4KLSAgICAgICAgIiIiCi0g
ICAgICAgIHdpdGggb3BlbihjZXJ0ZmlsZSwgInJiIikgYXMgZnA6Ci0gICAgICAgICAgICBjZXJ0
aWZpY2F0ZXMgPSBsb2FkX3BlbV94NTA5X2NlcnRpZmljYXRlcyhmcC5yZWFkKCkpCi0gICAgICAg
IHNlbGYuY2VydGlmaWNhdGUgPSBjZXJ0aWZpY2F0ZXNbMF0KLSAgICAgICAgc2VsZi5jZXJ0aWZp
Y2F0ZV9jaGFpbiA9IGNlcnRpZmljYXRlc1sxOl0KLQotICAgICAgICBpZiBrZXlmaWxlIGlzIG5v
dCBOb25lOgotICAgICAgICAgICAgd2l0aCBvcGVuKGtleWZpbGUsICJyYiIpIGFzIGZwOgotICAg
ICAgICAgICAgICAgIHNlbGYucHJpdmF0ZV9rZXkgPSBsb2FkX3BlbV9wcml2YXRlX2tleSgKLSAg
ICAgICAgICAgICAgICAgICAgZnAucmVhZCgpLAotICAgICAgICAgICAgICAgICAgICBwYXNzd29y
ZD1wYXNzd29yZC5lbmNvZGUoInV0ZjgiKQotICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3Rh
bmNlKHBhc3N3b3JkLCBzdHIpCi0gICAgICAgICAgICAgICAgICAgIGVsc2UgcGFzc3dvcmQsCi0g
ICAgICAgICAgICAgICAgKQotCi0gICAgZGVmIGxvYWRfdmVyaWZ5X2xvY2F0aW9ucygKLSAgICAg
ICAgc2VsZiwKLSAgICAgICAgY2FmaWxlOiBPcHRpb25hbFtzdHJdID0gTm9uZSwKLSAgICAgICAg
Y2FwYXRoOiBPcHRpb25hbFtzdHJdID0gTm9uZSwKLSAgICAgICAgY2FkYXRhOiBPcHRpb25hbFti
eXRlc10gPSBOb25lLAotICAgICkgLT4gTm9uZToKLSAgICAgICAgIiIiCi0gICAgICAgIExvYWQg
YSBzZXQgb2YgImNlcnRpZmljYXRpb24gYXV0aG9yaXR5IiAoQ0EpIGNlcnRpZmljYXRlcyB1c2Vk
IHRvCi0gICAgICAgIHZhbGlkYXRlIG90aGVyIHBlZXJzJyBjZXJ0aWZpY2F0ZXMuCi0gICAgICAg
ICIiIgotICAgICAgICBzZWxmLmNhZmlsZSA9IGNhZmlsZQotICAgICAgICBzZWxmLmNhcGF0aCA9
IGNhcGF0aAotICAgICAgICBzZWxmLmNhZGF0YSA9IGNhZGF0YQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3NyYy9haW9xdWljL3F1aWMvY29ubmVjdGlvbi5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMv
YWlvcXVpYy9xdWljL2Nvbm5lY3Rpb24ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDBlMTM3MmNjMDhiYTAzZGNiNDczZDAyYWQzNDlkY2I5YjM0ZDA5OTEuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWlj
L3F1aWMvY29ubmVjdGlvbi5weQorKysgL2Rldi9udWxsCkBAIC0xLDI2NTMgKzAsMCBAQAotaW1w
b3J0IGJpbmFzY2lpCi1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IG9zCi1mcm9tIGNvbGxlY3Rpb25z
IGltcG9ydCBkZXF1ZQotZnJvbSBkYXRhY2xhc3NlcyBpbXBvcnQgZGF0YWNsYXNzCi1mcm9tIGVu
dW0gaW1wb3J0IEVudW0KLWZyb20gdHlwaW5nIGltcG9ydCBBbnksIERlcXVlLCBEaWN0LCBGcm96
ZW5TZXQsIExpc3QsIE9wdGlvbmFsLCBTZXF1ZW5jZSwgVHVwbGUKLQotZnJvbSAuLiBpbXBvcnQg
dGxzCi1mcm9tIC4uYnVmZmVyIGltcG9ydCBVSU5UX1ZBUl9NQVgsIEJ1ZmZlciwgQnVmZmVyUmVh
ZEVycm9yLCBzaXplX3VpbnRfdmFyCi1mcm9tIC4gaW1wb3J0IGV2ZW50cwotZnJvbSAuY29uZmln
dXJhdGlvbiBpbXBvcnQgUXVpY0NvbmZpZ3VyYXRpb24KLWZyb20gLmNyeXB0byBpbXBvcnQgQ3J5
cHRvRXJyb3IsIENyeXB0b1BhaXIsIEtleVVuYXZhaWxhYmxlRXJyb3IKLWZyb20gLmxvZ2dlciBp
bXBvcnQgUXVpY0xvZ2dlclRyYWNlCi1mcm9tIC5wYWNrZXQgaW1wb3J0ICgKLSAgICBOT05fQUNL
X0VMSUNJVElOR19GUkFNRV9UWVBFUywKLSAgICBQQUNLRVRfVFlQRV9IQU5EU0hBS0UsCi0gICAg
UEFDS0VUX1RZUEVfSU5JVElBTCwKLSAgICBQQUNLRVRfVFlQRV9PTkVfUlRULAotICAgIFBBQ0tF
VF9UWVBFX1JFVFJZLAotICAgIFBBQ0tFVF9UWVBFX1pFUk9fUlRULAotICAgIFBST0JJTkdfRlJB
TUVfVFlQRVMsCi0gICAgUkVUUllfSU5URUdSSVRZX1RBR19TSVpFLAotICAgIFF1aWNFcnJvckNv
ZGUsCi0gICAgUXVpY0ZyYW1lVHlwZSwKLSAgICBRdWljUHJvdG9jb2xWZXJzaW9uLAotICAgIFF1
aWNTdHJlYW1GcmFtZSwKLSAgICBRdWljVHJhbnNwb3J0UGFyYW1ldGVycywKLSAgICBnZXRfcmV0
cnlfaW50ZWdyaXR5X3RhZywKLSAgICBnZXRfc3Bpbl9iaXQsCi0gICAgaXNfbG9uZ19oZWFkZXIs
Ci0gICAgcHVsbF9hY2tfZnJhbWUsCi0gICAgcHVsbF9xdWljX2hlYWRlciwKLSAgICBwdWxsX3F1
aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMsCi0gICAgcHVzaF9hY2tfZnJhbWUsCi0gICAgcHVzaF9x
dWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzLAotKQotZnJvbSAucGFja2V0X2J1aWxkZXIgaW1wb3J0
ICgKLSAgICBQQUNLRVRfTUFYX1NJWkUsCi0gICAgUXVpY0RlbGl2ZXJ5U3RhdGUsCi0gICAgUXVp
Y1BhY2tldEJ1aWxkZXIsCi0gICAgUXVpY1BhY2tldEJ1aWxkZXJTdG9wLAotKQotZnJvbSAucmVj
b3ZlcnkgaW1wb3J0IEtfR1JBTlVMQVJJVFksIFF1aWNQYWNrZXRSZWNvdmVyeSwgUXVpY1BhY2tl
dFNwYWNlCi1mcm9tIC5zdHJlYW0gaW1wb3J0IFF1aWNTdHJlYW0KLQotbG9nZ2VyID0gbG9nZ2lu
Zy5nZXRMb2dnZXIoInF1aWMiKQotCi1DUllQVE9fQlVGRkVSX1NJWkUgPSAxNjM4NAotRVBPQ0hf
U0hPUlRDVVRTID0gewotICAgICJJIjogdGxzLkVwb2NoLklOSVRJQUwsCi0gICAgIkgiOiB0bHMu
RXBvY2guSEFORFNIQUtFLAotICAgICIwIjogdGxzLkVwb2NoLlpFUk9fUlRULAotICAgICIxIjog
dGxzLkVwb2NoLk9ORV9SVFQsCi19Ci1NQVhfRUFSTFlfREFUQSA9IDB4RkZGRkZGRkYKLVNFQ1JF
VFNfTEFCRUxTID0gWwotICAgIFsKLSAgICAgICAgTm9uZSwKLSAgICAgICAgIlFVSUNfQ0xJRU5U
X0VBUkxZX1RSQUZGSUNfU0VDUkVUIiwKLSAgICAgICAgIlFVSUNfQ0xJRU5UX0hBTkRTSEFLRV9U
UkFGRklDX1NFQ1JFVCIsCi0gICAgICAgICJRVUlDX0NMSUVOVF9UUkFGRklDX1NFQ1JFVF8wIiwK
LSAgICBdLAotICAgIFsKLSAgICAgICAgTm9uZSwKLSAgICAgICAgTm9uZSwKLSAgICAgICAgIlFV
SUNfU0VSVkVSX0hBTkRTSEFLRV9UUkFGRklDX1NFQ1JFVCIsCi0gICAgICAgICJRVUlDX1NFUlZF
Ul9UUkFGRklDX1NFQ1JFVF8wIiwKLSAgICBdLAotXQotU1RSRUFNX0ZMQUdTID0gMHgwNwotCi1O
ZXR3b3JrQWRkcmVzcyA9IEFueQotCi0jIGZyYW1lIHNpemVzCi1BQ0tfRlJBTUVfQ0FQQUNJVFkg
PSA2NCAgIyBGSVhNRTogdGhpcyBpcyBhcmJpdHJhcnkhCi1BUFBMSUNBVElPTl9DTE9TRV9GUkFN
RV9DQVBBQ0lUWSA9IDEgKyA4ICsgOCAgIyArIHJlYXNvbiBsZW5ndGgKLUhBTkRTSEFLRV9ET05F
X0ZSQU1FX0NBUEFDSVRZID0gMQotTUFYX0RBVEFfRlJBTUVfQ0FQQUNJVFkgPSAxICsgOAotTUFY
X1NUUkVBTV9EQVRBX0ZSQU1FX0NBUEFDSVRZID0gMSArIDggKyA4Ci1ORVdfQ09OTkVDVElPTl9J
RF9GUkFNRV9DQVBBQ0lUWSA9IDEgKyA4ICsgOCArIDEgKyAyMCArIDE2Ci1QQVRIX0NIQUxMRU5H
RV9GUkFNRV9DQVBBQ0lUWSA9IDEgKyA4Ci1QQVRIX1JFU1BPTlNFX0ZSQU1FX0NBUEFDSVRZID0g
MSArIDgKLVBJTkdfRlJBTUVfQ0FQQUNJVFkgPSAxCi1SRVRJUkVfQ09OTkVDVElPTl9JRF9DQVBB
Q0lUWSA9IDEgKyA4Ci1TVFJFQU1TX0JMT0NLRURfQ0FQQUNJVFkgPSAxICsgOAotVFJBTlNQT1JU
X0NMT1NFX0ZSQU1FX0NBUEFDSVRZID0gMSArIDggKyA4ICsgOCAgIyArIHJlYXNvbiBsZW5ndGgK
LQotCi1kZWYgRVBPQ0hTKHNob3J0Y3V0OiBzdHIpIC0+IEZyb3plblNldFt0bHMuRXBvY2hdOgot
ICAgIHJldHVybiBmcm96ZW5zZXQoRVBPQ0hfU0hPUlRDVVRTW2ldIGZvciBpIGluIHNob3J0Y3V0
KQotCi0KLWRlZiBkdW1wX2NpZChjaWQ6IGJ5dGVzKSAtPiBzdHI6Ci0gICAgcmV0dXJuIGJpbmFz
Y2lpLmhleGxpZnkoY2lkKS5kZWNvZGUoImFzY2lpIikKLQotCi1kZWYgZ2V0X2Vwb2NoKHBhY2tl
dF90eXBlOiBpbnQpIC0+IHRscy5FcG9jaDoKLSAgICBpZiBwYWNrZXRfdHlwZSA9PSBQQUNLRVRf
VFlQRV9JTklUSUFMOgotICAgICAgICByZXR1cm4gdGxzLkVwb2NoLklOSVRJQUwKLSAgICBlbGlm
IHBhY2tldF90eXBlID09IFBBQ0tFVF9UWVBFX1pFUk9fUlRUOgotICAgICAgICByZXR1cm4gdGxz
LkVwb2NoLlpFUk9fUlRUCi0gICAgZWxpZiBwYWNrZXRfdHlwZSA9PSBQQUNLRVRfVFlQRV9IQU5E
U0hBS0U6Ci0gICAgICAgIHJldHVybiB0bHMuRXBvY2guSEFORFNIQUtFCi0gICAgZWxzZToKLSAg
ICAgICAgcmV0dXJuIHRscy5FcG9jaC5PTkVfUlRUCi0KLQotZGVmIHN0cmVhbV9pc19jbGllbnRf
aW5pdGlhdGVkKHN0cmVhbV9pZDogaW50KSAtPiBib29sOgotICAgICIiIgotICAgIFJldHVybnMg
VHJ1ZSBpZiB0aGUgc3RyZWFtIGlzIGNsaWVudCBpbml0aWF0ZWQuCi0gICAgIiIiCi0gICAgcmV0
dXJuIG5vdCAoc3RyZWFtX2lkICYgMSkKLQotCi1kZWYgc3RyZWFtX2lzX3VuaWRpcmVjdGlvbmFs
KHN0cmVhbV9pZDogaW50KSAtPiBib29sOgotICAgICIiIgotICAgIFJldHVybnMgVHJ1ZSBpZiB0
aGUgc3RyZWFtIGlzIHVuaWRpcmVjdGlvbmFsLgotICAgICIiIgotICAgIHJldHVybiBib29sKHN0
cmVhbV9pZCAmIDIpCi0KLQotY2xhc3MgUXVpY0Nvbm5lY3Rpb25FcnJvcihFeGNlcHRpb24pOgot
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBlcnJvcl9jb2RlOiBpbnQsIGZyYW1lX3R5cGU6IGludCwg
cmVhc29uX3BocmFzZTogc3RyKToKLSAgICAgICAgc2VsZi5lcnJvcl9jb2RlID0gZXJyb3JfY29k
ZQotICAgICAgICBzZWxmLmZyYW1lX3R5cGUgPSBmcmFtZV90eXBlCi0gICAgICAgIHNlbGYucmVh
c29uX3BocmFzZSA9IHJlYXNvbl9waHJhc2UKLQotICAgIGRlZiBfX3N0cl9fKHNlbGYpIC0+IHN0
cjoKLSAgICAgICAgcyA9ICJFcnJvcjogJWQsIHJlYXNvbjogJXMiICUgKHNlbGYuZXJyb3JfY29k
ZSwgc2VsZi5yZWFzb25fcGhyYXNlKQotICAgICAgICBpZiBzZWxmLmZyYW1lX3R5cGUgaXMgbm90
IE5vbmU6Ci0gICAgICAgICAgICBzICs9ICIsIGZyYW1lX3R5cGU6ICVzIiAlIHNlbGYuZnJhbWVf
dHlwZQotICAgICAgICByZXR1cm4gcwotCi0KLWNsYXNzIFF1aWNDb25uZWN0aW9uQWRhcHRlcihs
b2dnaW5nLkxvZ2dlckFkYXB0ZXIpOgotICAgIGRlZiBwcm9jZXNzKHNlbGYsIG1zZzogc3RyLCBr
d2FyZ3M6IEFueSkgLT4gVHVwbGVbc3RyLCBBbnldOgotICAgICAgICByZXR1cm4gIlslc10gJXMi
ICUgKHNlbGYuZXh0cmFbImlkIl0sIG1zZyksIGt3YXJncwotCi0KLUBkYXRhY2xhc3MKLWNsYXNz
IFF1aWNDb25uZWN0aW9uSWQ6Ci0gICAgY2lkOiBieXRlcwotICAgIHNlcXVlbmNlX251bWJlcjog
aW50Ci0gICAgc3RhdGVsZXNzX3Jlc2V0X3Rva2VuOiBieXRlcyA9IGIiIgotICAgIHdhc19zZW50
OiBib29sID0gRmFsc2UKLQotCi1jbGFzcyBRdWljQ29ubmVjdGlvblN0YXRlKEVudW0pOgotICAg
IEZJUlNURkxJR0hUID0gMAotICAgIENPTk5FQ1RFRCA9IDEKLSAgICBDTE9TSU5HID0gMgotICAg
IERSQUlOSU5HID0gMwotICAgIFRFUk1JTkFURUQgPSA0Ci0KLQotQGRhdGFjbGFzcwotY2xhc3Mg
UXVpY05ldHdvcmtQYXRoOgotICAgIGFkZHI6IE5ldHdvcmtBZGRyZXNzCi0gICAgYnl0ZXNfcmVj
ZWl2ZWQ6IGludCA9IDAKLSAgICBieXRlc19zZW50OiBpbnQgPSAwCi0gICAgaXNfdmFsaWRhdGVk
OiBib29sID0gRmFsc2UKLSAgICBsb2NhbF9jaGFsbGVuZ2U6IE9wdGlvbmFsW2J5dGVzXSA9IE5v
bmUKLSAgICByZW1vdGVfY2hhbGxlbmdlOiBPcHRpb25hbFtieXRlc10gPSBOb25lCi0KLSAgICBk
ZWYgY2FuX3NlbmQoc2VsZiwgc2l6ZTogaW50KSAtPiBib29sOgotICAgICAgICByZXR1cm4gc2Vs
Zi5pc192YWxpZGF0ZWQgb3IgKHNlbGYuYnl0ZXNfc2VudCArIHNpemUpIDw9IDMgKiBzZWxmLmJ5
dGVzX3JlY2VpdmVkCi0KLQotQGRhdGFjbGFzcwotY2xhc3MgUXVpY1JlY2VpdmVDb250ZXh0Ogot
ICAgIGVwb2NoOiB0bHMuRXBvY2gKLSAgICBob3N0X2NpZDogYnl0ZXMKLSAgICBuZXR3b3JrX3Bh
dGg6IFF1aWNOZXR3b3JrUGF0aAotICAgIHF1aWNfbG9nZ2VyX2ZyYW1lczogT3B0aW9uYWxbTGlz
dFtBbnldXQotICAgIHRpbWU6IGZsb2F0Ci0KLQotRU5EX1NUQVRFUyA9IGZyb3plbnNldCgKLSAg
ICBbCi0gICAgICAgIFF1aWNDb25uZWN0aW9uU3RhdGUuQ0xPU0lORywKLSAgICAgICAgUXVpY0Nv
bm5lY3Rpb25TdGF0ZS5EUkFJTklORywKLSAgICAgICAgUXVpY0Nvbm5lY3Rpb25TdGF0ZS5URVJN
SU5BVEVELAotICAgIF0KLSkKLQotCi1jbGFzcyBRdWljQ29ubmVjdGlvbjoKLSAgICAiIiIKLSAg
ICBBIFFVSUMgY29ubmVjdGlvbi4KLQotICAgIFRoZSBzdGF0ZSBtYWNoaW5lIGlzIGRyaXZlbiBi
eSB0aHJlZSBraW5kcyBvZiBzb3VyY2VzOgotCi0gICAgLSB0aGUgQVBJIHVzZXIgcmVxdWVzdGlu
ZyBkYXRhIHRvIGJlIHNlbmQgb3V0IChzZWUgOm1ldGg6YGNvbm5lY3RgLAotICAgICAgOm1ldGg6
YHNlbmRfcGluZ2AsIDptZXRoOmBzZW5kX2RhdGFncmFtX2RhdGFgIGFuZCA6bWV0aDpgc2VuZF9z
dHJlYW1fZGF0YWApCi0gICAgLSBkYXRhIGJlaW5nIHJlY2VpdmVkIGZyb20gdGhlIG5ldHdvcmsg
KHNlZSA6bWV0aDpgcmVjZWl2ZV9kYXRhZ3JhbWApCi0gICAgLSBhIHRpbWVyIGZpcmluZyAoc2Vl
IDptZXRoOmBoYW5kbGVfdGltZXJgKQotCi0gICAgOnBhcmFtIGNvbmZpZ3VyYXRpb246IFRoZSBR
VUlDIGNvbmZpZ3VyYXRpb24gdG8gdXNlLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKAot
ICAgICAgICBzZWxmLAotICAgICAgICAqLAotICAgICAgICBjb25maWd1cmF0aW9uOiBRdWljQ29u
ZmlndXJhdGlvbiwKLSAgICAgICAgbG9nZ2VyX2Nvbm5lY3Rpb25faWQ6IE9wdGlvbmFsW2J5dGVz
XSA9IE5vbmUsCi0gICAgICAgIG9yaWdpbmFsX2Nvbm5lY3Rpb25faWQ6IE9wdGlvbmFsW2J5dGVz
XSA9IE5vbmUsCi0gICAgICAgIHNlc3Npb25fdGlja2V0X2ZldGNoZXI6IE9wdGlvbmFsW3Rscy5T
ZXNzaW9uVGlja2V0RmV0Y2hlcl0gPSBOb25lLAotICAgICAgICBzZXNzaW9uX3RpY2tldF9oYW5k
bGVyOiBPcHRpb25hbFt0bHMuU2Vzc2lvblRpY2tldEhhbmRsZXJdID0gTm9uZSwKLSAgICApIC0+
IE5vbmU6Ci0gICAgICAgIGlmIGNvbmZpZ3VyYXRpb24uaXNfY2xpZW50OgotICAgICAgICAgICAg
YXNzZXJ0ICgKLSAgICAgICAgICAgICAgICBvcmlnaW5hbF9jb25uZWN0aW9uX2lkIGlzIE5vbmUK
LSAgICAgICAgICAgICksICJDYW5ub3Qgc2V0IG9yaWdpbmFsX2Nvbm5lY3Rpb25faWQgZm9yIGEg
Y2xpZW50IgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYXNzZXJ0ICgKLSAgICAgICAgICAg
ICAgICBjb25maWd1cmF0aW9uLmNlcnRpZmljYXRlIGlzIG5vdCBOb25lCi0gICAgICAgICAgICAp
LCAiU1NMIGNlcnRpZmljYXRlIGlzIHJlcXVpcmVkIGZvciBhIHNlcnZlciIKLSAgICAgICAgICAg
IGFzc2VydCAoCi0gICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi5wcml2YXRlX2tleSBpcyBu
b3QgTm9uZQotICAgICAgICAgICAgKSwgIlNTTCBwcml2YXRlIGtleSBpcyByZXF1aXJlZCBmb3Ig
YSBzZXJ2ZXIiCi0KLSAgICAgICAgIyBjb25maWd1cmF0aW9uCi0gICAgICAgIHNlbGYuX2NvbmZp
Z3VyYXRpb24gPSBjb25maWd1cmF0aW9uCi0gICAgICAgIHNlbGYuX2lzX2NsaWVudCA9IGNvbmZp
Z3VyYXRpb24uaXNfY2xpZW50Ci0KLSAgICAgICAgc2VsZi5fYWNrX2RlbGF5ID0gS19HUkFOVUxB
UklUWQotICAgICAgICBzZWxmLl9jbG9zZV9hdDogT3B0aW9uYWxbZmxvYXRdID0gTm9uZQotICAg
ICAgICBzZWxmLl9jbG9zZV9ldmVudDogT3B0aW9uYWxbZXZlbnRzLkNvbm5lY3Rpb25UZXJtaW5h
dGVkXSA9IE5vbmUKLSAgICAgICAgc2VsZi5fY29ubmVjdF9jYWxsZWQgPSBGYWxzZQotICAgICAg
ICBzZWxmLl9jcnlwdG9zOiBEaWN0W3Rscy5FcG9jaCwgQ3J5cHRvUGFpcl0gPSB7fQotICAgICAg
ICBzZWxmLl9jcnlwdG9fYnVmZmVyczogRGljdFt0bHMuRXBvY2gsIEJ1ZmZlcl0gPSB7fQotICAg
ICAgICBzZWxmLl9jcnlwdG9fc3RyZWFtczogRGljdFt0bHMuRXBvY2gsIFF1aWNTdHJlYW1dID0g
e30KLSAgICAgICAgc2VsZi5fZXZlbnRzOiBEZXF1ZVtldmVudHMuUXVpY0V2ZW50XSA9IGRlcXVl
KCkKLSAgICAgICAgc2VsZi5faGFuZHNoYWtlX2NvbXBsZXRlID0gRmFsc2UKLSAgICAgICAgc2Vs
Zi5faGFuZHNoYWtlX2NvbmZpcm1lZCA9IEZhbHNlCi0gICAgICAgIHNlbGYuX2hvc3RfY2lkcyA9
IFsKLSAgICAgICAgICAgIFF1aWNDb25uZWN0aW9uSWQoCi0gICAgICAgICAgICAgICAgY2lkPW9z
LnVyYW5kb20oY29uZmlndXJhdGlvbi5jb25uZWN0aW9uX2lkX2xlbmd0aCksCi0gICAgICAgICAg
ICAgICAgc2VxdWVuY2VfbnVtYmVyPTAsCi0gICAgICAgICAgICAgICAgc3RhdGVsZXNzX3Jlc2V0
X3Rva2VuPW9zLnVyYW5kb20oMTYpLAotICAgICAgICAgICAgICAgIHdhc19zZW50PVRydWUsCi0g
ICAgICAgICAgICApCi0gICAgICAgIF0KLSAgICAgICAgc2VsZi5ob3N0X2NpZCA9IHNlbGYuX2hv
c3RfY2lkc1swXS5jaWQKLSAgICAgICAgc2VsZi5faG9zdF9jaWRfc2VxID0gMQotICAgICAgICBz
ZWxmLl9sb2NhbF9hY2tfZGVsYXlfZXhwb25lbnQgPSAzCi0gICAgICAgIHNlbGYuX2xvY2FsX2Fj
dGl2ZV9jb25uZWN0aW9uX2lkX2xpbWl0ID0gOAotICAgICAgICBzZWxmLl9sb2NhbF9tYXhfZGF0
YSA9IGNvbmZpZ3VyYXRpb24ubWF4X2RhdGEKLSAgICAgICAgc2VsZi5fbG9jYWxfbWF4X2RhdGFf
c2VudCA9IGNvbmZpZ3VyYXRpb24ubWF4X2RhdGEKLSAgICAgICAgc2VsZi5fbG9jYWxfbWF4X2Rh
dGFfdXNlZCA9IDAKLSAgICAgICAgc2VsZi5fbG9jYWxfbWF4X3N0cmVhbV9kYXRhX2JpZGlfbG9j
YWwgPSBjb25maWd1cmF0aW9uLm1heF9zdHJlYW1fZGF0YQotICAgICAgICBzZWxmLl9sb2NhbF9t
YXhfc3RyZWFtX2RhdGFfYmlkaV9yZW1vdGUgPSBjb25maWd1cmF0aW9uLm1heF9zdHJlYW1fZGF0
YQotICAgICAgICBzZWxmLl9sb2NhbF9tYXhfc3RyZWFtX2RhdGFfdW5pID0gY29uZmlndXJhdGlv
bi5tYXhfc3RyZWFtX2RhdGEKLSAgICAgICAgc2VsZi5fbG9jYWxfbWF4X3N0cmVhbXNfYmlkaSA9
IDEyOAotICAgICAgICBzZWxmLl9sb2NhbF9tYXhfc3RyZWFtc191bmkgPSAxMjgKLSAgICAgICAg
c2VsZi5fbG9zc19hdDogT3B0aW9uYWxbZmxvYXRdID0gTm9uZQotICAgICAgICBzZWxmLl9uZXR3
b3JrX3BhdGhzOiBMaXN0W1F1aWNOZXR3b3JrUGF0aF0gPSBbXQotICAgICAgICBzZWxmLl9vcmln
aW5hbF9jb25uZWN0aW9uX2lkID0gb3JpZ2luYWxfY29ubmVjdGlvbl9pZAotICAgICAgICBzZWxm
Ll9wYWNpbmdfYXQ6IE9wdGlvbmFsW2Zsb2F0XSA9IE5vbmUKLSAgICAgICAgc2VsZi5fcGFja2V0
X251bWJlciA9IDAKLSAgICAgICAgc2VsZi5fcGFyYW1ldGVyc19yZWNlaXZlZCA9IEZhbHNlCi0g
ICAgICAgIHNlbGYuX3BlZXJfY2lkID0gb3MudXJhbmRvbShjb25maWd1cmF0aW9uLmNvbm5lY3Rp
b25faWRfbGVuZ3RoKQotICAgICAgICBzZWxmLl9wZWVyX2NpZF9zZXE6IE9wdGlvbmFsW2ludF0g
PSBOb25lCi0gICAgICAgIHNlbGYuX3BlZXJfY2lkX2F2YWlsYWJsZTogTGlzdFtRdWljQ29ubmVj
dGlvbklkXSA9IFtdCi0gICAgICAgIHNlbGYuX3BlZXJfdG9rZW4gPSBiIiIKLSAgICAgICAgc2Vs
Zi5fcXVpY19sb2dnZXI6IE9wdGlvbmFsW1F1aWNMb2dnZXJUcmFjZV0gPSBOb25lCi0gICAgICAg
IHNlbGYuX3JlbW90ZV9hY2tfZGVsYXlfZXhwb25lbnQgPSAzCi0gICAgICAgIHNlbGYuX3JlbW90
ZV9hY3RpdmVfY29ubmVjdGlvbl9pZF9saW1pdCA9IDAKLSAgICAgICAgc2VsZi5fcmVtb3RlX2lk
bGVfdGltZW91dCA9IDAuMCAgIyBzZWNvbmRzCi0gICAgICAgIHNlbGYuX3JlbW90ZV9tYXhfZGF0
YSA9IDAKLSAgICAgICAgc2VsZi5fcmVtb3RlX21heF9kYXRhX3VzZWQgPSAwCi0gICAgICAgIHNl
bGYuX3JlbW90ZV9tYXhfZGF0YWdyYW1fZnJhbWVfc2l6ZTogT3B0aW9uYWxbaW50XSA9IE5vbmUK
LSAgICAgICAgc2VsZi5fcmVtb3RlX21heF9zdHJlYW1fZGF0YV9iaWRpX2xvY2FsID0gMAotICAg
ICAgICBzZWxmLl9yZW1vdGVfbWF4X3N0cmVhbV9kYXRhX2JpZGlfcmVtb3RlID0gMAotICAgICAg
ICBzZWxmLl9yZW1vdGVfbWF4X3N0cmVhbV9kYXRhX3VuaSA9IDAKLSAgICAgICAgc2VsZi5fcmVt
b3RlX21heF9zdHJlYW1zX2JpZGkgPSAwCi0gICAgICAgIHNlbGYuX3JlbW90ZV9tYXhfc3RyZWFt
c191bmkgPSAwCi0gICAgICAgIHNlbGYuX3NwYWNlczogRGljdFt0bHMuRXBvY2gsIFF1aWNQYWNr
ZXRTcGFjZV0gPSB7fQotICAgICAgICBzZWxmLl9zcGluX2JpdCA9IEZhbHNlCi0gICAgICAgIHNl
bGYuX3NwaW5faGlnaGVzdF9wbiA9IDAKLSAgICAgICAgc2VsZi5fc3RhdGUgPSBRdWljQ29ubmVj
dGlvblN0YXRlLkZJUlNURkxJR0hUCi0gICAgICAgIHNlbGYuX3N0YXRlbGVzc19yZXRyeV9jb3Vu
dCA9IDAKLSAgICAgICAgc2VsZi5fc3RyZWFtczogRGljdFtpbnQsIFF1aWNTdHJlYW1dID0ge30K
LSAgICAgICAgc2VsZi5fc3RyZWFtc19ibG9ja2VkX2JpZGk6IExpc3RbUXVpY1N0cmVhbV0gPSBb
XQotICAgICAgICBzZWxmLl9zdHJlYW1zX2Jsb2NrZWRfdW5pOiBMaXN0W1F1aWNTdHJlYW1dID0g
W10KLSAgICAgICAgc2VsZi5fdmVyc2lvbjogT3B0aW9uYWxbaW50XSA9IE5vbmUKLQotICAgICAg
ICAjIGxvZ2dpbmcKLSAgICAgICAgaWYgbG9nZ2VyX2Nvbm5lY3Rpb25faWQgaXMgTm9uZToKLSAg
ICAgICAgICAgIGxvZ2dlcl9jb25uZWN0aW9uX2lkID0gc2VsZi5fcGVlcl9jaWQKLSAgICAgICAg
c2VsZi5fbG9nZ2VyID0gUXVpY0Nvbm5lY3Rpb25BZGFwdGVyKAotICAgICAgICAgICAgbG9nZ2Vy
LCB7ImlkIjogZHVtcF9jaWQobG9nZ2VyX2Nvbm5lY3Rpb25faWQpfQotICAgICAgICApCi0gICAg
ICAgIGlmIGNvbmZpZ3VyYXRpb24ucXVpY19sb2dnZXI6Ci0gICAgICAgICAgICBzZWxmLl9xdWlj
X2xvZ2dlciA9IGNvbmZpZ3VyYXRpb24ucXVpY19sb2dnZXIuc3RhcnRfdHJhY2UoCi0gICAgICAg
ICAgICAgICAgaXNfY2xpZW50PWNvbmZpZ3VyYXRpb24uaXNfY2xpZW50LCBvZGNpZD1sb2dnZXJf
Y29ubmVjdGlvbl9pZAotICAgICAgICAgICAgKQotCi0gICAgICAgICMgbG9zcyByZWNvdmVyeQot
ICAgICAgICBzZWxmLl9sb3NzID0gUXVpY1BhY2tldFJlY292ZXJ5KAotICAgICAgICAgICAgaXNf
Y2xpZW50X3dpdGhvdXRfMXJ0dD1zZWxmLl9pc19jbGllbnQsCi0gICAgICAgICAgICBxdWljX2xv
Z2dlcj1zZWxmLl9xdWljX2xvZ2dlciwKLSAgICAgICAgICAgIHNlbmRfcHJvYmU9c2VsZi5fc2Vu
ZF9wcm9iZSwKLSAgICAgICAgKQotCi0gICAgICAgICMgdGhpbmdzIHRvIHNlbmQKLSAgICAgICAg
c2VsZi5fY2xvc2VfcGVuZGluZyA9IEZhbHNlCi0gICAgICAgIHNlbGYuX2RhdGFncmFtc19wZW5k
aW5nOiBEZXF1ZVtieXRlc10gPSBkZXF1ZSgpCi0gICAgICAgIHNlbGYuX2hhbmRzaGFrZV9kb25l
X3BlbmRpbmcgPSBGYWxzZQotICAgICAgICBzZWxmLl9waW5nX3BlbmRpbmc6IExpc3RbaW50XSA9
IFtdCi0gICAgICAgIHNlbGYuX3Byb2JlX3BlbmRpbmcgPSBGYWxzZQotICAgICAgICBzZWxmLl9y
ZXRpcmVfY29ubmVjdGlvbl9pZHM6IExpc3RbaW50XSA9IFtdCi0gICAgICAgIHNlbGYuX3N0cmVh
bXNfYmxvY2tlZF9wZW5kaW5nID0gRmFsc2UKLQotICAgICAgICAjIGNhbGxiYWNrcwotICAgICAg
ICBzZWxmLl9zZXNzaW9uX3RpY2tldF9mZXRjaGVyID0gc2Vzc2lvbl90aWNrZXRfZmV0Y2hlcgot
ICAgICAgICBzZWxmLl9zZXNzaW9uX3RpY2tldF9oYW5kbGVyID0gc2Vzc2lvbl90aWNrZXRfaGFu
ZGxlcgotCi0gICAgICAgICMgZnJhbWUgaGFuZGxlcnMKLSAgICAgICAgc2VsZi5fX2ZyYW1lX2hh
bmRsZXJzID0gewotICAgICAgICAgICAgMHgwMDogKHNlbGYuX2hhbmRsZV9wYWRkaW5nX2ZyYW1l
LCBFUE9DSFMoIklIMDEiKSksCi0gICAgICAgICAgICAweDAxOiAoc2VsZi5faGFuZGxlX3Bpbmdf
ZnJhbWUsIEVQT0NIUygiSUgwMSIpKSwKLSAgICAgICAgICAgIDB4MDI6IChzZWxmLl9oYW5kbGVf
YWNrX2ZyYW1lLCBFUE9DSFMoIklIMSIpKSwKLSAgICAgICAgICAgIDB4MDM6IChzZWxmLl9oYW5k
bGVfYWNrX2ZyYW1lLCBFUE9DSFMoIklIMSIpKSwKLSAgICAgICAgICAgIDB4MDQ6IChzZWxmLl9o
YW5kbGVfcmVzZXRfc3RyZWFtX2ZyYW1lLCBFUE9DSFMoIjAxIikpLAotICAgICAgICAgICAgMHgw
NTogKHNlbGYuX2hhbmRsZV9zdG9wX3NlbmRpbmdfZnJhbWUsIEVQT0NIUygiMDEiKSksCi0gICAg
ICAgICAgICAweDA2OiAoc2VsZi5faGFuZGxlX2NyeXB0b19mcmFtZSwgRVBPQ0hTKCJJSDEiKSks
Ci0gICAgICAgICAgICAweDA3OiAoc2VsZi5faGFuZGxlX25ld190b2tlbl9mcmFtZSwgRVBPQ0hT
KCIxIikpLAotICAgICAgICAgICAgMHgwODogKHNlbGYuX2hhbmRsZV9zdHJlYW1fZnJhbWUsIEVQ
T0NIUygiMDEiKSksCi0gICAgICAgICAgICAweDA5OiAoc2VsZi5faGFuZGxlX3N0cmVhbV9mcmFt
ZSwgRVBPQ0hTKCIwMSIpKSwKLSAgICAgICAgICAgIDB4MEE6IChzZWxmLl9oYW5kbGVfc3RyZWFt
X2ZyYW1lLCBFUE9DSFMoIjAxIikpLAotICAgICAgICAgICAgMHgwQjogKHNlbGYuX2hhbmRsZV9z
dHJlYW1fZnJhbWUsIEVQT0NIUygiMDEiKSksCi0gICAgICAgICAgICAweDBDOiAoc2VsZi5faGFu
ZGxlX3N0cmVhbV9mcmFtZSwgRVBPQ0hTKCIwMSIpKSwKLSAgICAgICAgICAgIDB4MEQ6IChzZWxm
Ll9oYW5kbGVfc3RyZWFtX2ZyYW1lLCBFUE9DSFMoIjAxIikpLAotICAgICAgICAgICAgMHgwRTog
KHNlbGYuX2hhbmRsZV9zdHJlYW1fZnJhbWUsIEVQT0NIUygiMDEiKSksCi0gICAgICAgICAgICAw
eDBGOiAoc2VsZi5faGFuZGxlX3N0cmVhbV9mcmFtZSwgRVBPQ0hTKCIwMSIpKSwKLSAgICAgICAg
ICAgIDB4MTA6IChzZWxmLl9oYW5kbGVfbWF4X2RhdGFfZnJhbWUsIEVQT0NIUygiMDEiKSksCi0g
ICAgICAgICAgICAweDExOiAoc2VsZi5faGFuZGxlX21heF9zdHJlYW1fZGF0YV9mcmFtZSwgRVBP
Q0hTKCIwMSIpKSwKLSAgICAgICAgICAgIDB4MTI6IChzZWxmLl9oYW5kbGVfbWF4X3N0cmVhbXNf
YmlkaV9mcmFtZSwgRVBPQ0hTKCIwMSIpKSwKLSAgICAgICAgICAgIDB4MTM6IChzZWxmLl9oYW5k
bGVfbWF4X3N0cmVhbXNfdW5pX2ZyYW1lLCBFUE9DSFMoIjAxIikpLAotICAgICAgICAgICAgMHgx
NDogKHNlbGYuX2hhbmRsZV9kYXRhX2Jsb2NrZWRfZnJhbWUsIEVQT0NIUygiMDEiKSksCi0gICAg
ICAgICAgICAweDE1OiAoc2VsZi5faGFuZGxlX3N0cmVhbV9kYXRhX2Jsb2NrZWRfZnJhbWUsIEVQ
T0NIUygiMDEiKSksCi0gICAgICAgICAgICAweDE2OiAoc2VsZi5faGFuZGxlX3N0cmVhbXNfYmxv
Y2tlZF9mcmFtZSwgRVBPQ0hTKCIwMSIpKSwKLSAgICAgICAgICAgIDB4MTc6IChzZWxmLl9oYW5k
bGVfc3RyZWFtc19ibG9ja2VkX2ZyYW1lLCBFUE9DSFMoIjAxIikpLAotICAgICAgICAgICAgMHgx
ODogKHNlbGYuX2hhbmRsZV9uZXdfY29ubmVjdGlvbl9pZF9mcmFtZSwgRVBPQ0hTKCIwMSIpKSwK
LSAgICAgICAgICAgIDB4MTk6IChzZWxmLl9oYW5kbGVfcmV0aXJlX2Nvbm5lY3Rpb25faWRfZnJh
bWUsIEVQT0NIUygiMDEiKSksCi0gICAgICAgICAgICAweDFBOiAoc2VsZi5faGFuZGxlX3BhdGhf
Y2hhbGxlbmdlX2ZyYW1lLCBFUE9DSFMoIjAxIikpLAotICAgICAgICAgICAgMHgxQjogKHNlbGYu
X2hhbmRsZV9wYXRoX3Jlc3BvbnNlX2ZyYW1lLCBFUE9DSFMoIjAxIikpLAotICAgICAgICAgICAg
MHgxQzogKHNlbGYuX2hhbmRsZV9jb25uZWN0aW9uX2Nsb3NlX2ZyYW1lLCBFUE9DSFMoIklIMSIp
KSwKLSAgICAgICAgICAgIDB4MUQ6IChzZWxmLl9oYW5kbGVfY29ubmVjdGlvbl9jbG9zZV9mcmFt
ZSwgRVBPQ0hTKCIxIikpLAotICAgICAgICAgICAgMHgxRTogKHNlbGYuX2hhbmRsZV9oYW5kc2hh
a2VfZG9uZV9mcmFtZSwgRVBPQ0hTKCIxIikpLAotICAgICAgICAgICAgMHgzMDogKHNlbGYuX2hh
bmRsZV9kYXRhZ3JhbV9mcmFtZSwgRVBPQ0hTKCIwMSIpKSwKLSAgICAgICAgICAgIDB4MzE6IChz
ZWxmLl9oYW5kbGVfZGF0YWdyYW1fZnJhbWUsIEVQT0NIUygiMDEiKSksCi0gICAgICAgIH0KLQot
ICAgIEBwcm9wZXJ0eQotICAgIGRlZiBjb25maWd1cmF0aW9uKHNlbGYpIC0+IFF1aWNDb25maWd1
cmF0aW9uOgotICAgICAgICByZXR1cm4gc2VsZi5fY29uZmlndXJhdGlvbgotCi0gICAgZGVmIGNo
YW5nZV9jb25uZWN0aW9uX2lkKHNlbGYpIC0+IE5vbmU6Ci0gICAgICAgICIiIgotICAgICAgICBT
d2l0Y2ggdG8gdGhlIG5leHQgYXZhaWxhYmxlIGNvbm5lY3Rpb24gSUQgYW5kIHJldGlyZQotICAg
ICAgICB0aGUgcHJldmlvdXMgb25lLgotCi0gICAgICAgIEFmdGVyIGNhbGxpbmcgdGhpcyBtZXRo
b2QgY2FsbCA6bWV0aDpgZGF0YWdyYW1zX3RvX3NlbmRgIHRvIHJldHJpZXZlIGRhdGEKLSAgICAg
ICAgd2hpY2ggbmVlZHMgdG8gYmUgc2VudC4KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIHNlbGYu
X3BlZXJfY2lkX2F2YWlsYWJsZToKLSAgICAgICAgICAgICMgcmV0aXJlIHByZXZpb3VzIENJRAot
ICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAgICAgICAgICJSZXRpcmlu
ZyBDSUQgJXMgKCVkKSIsIGR1bXBfY2lkKHNlbGYuX3BlZXJfY2lkKSwgc2VsZi5fcGVlcl9jaWRf
c2VxCi0gICAgICAgICAgICApCi0gICAgICAgICAgICBzZWxmLl9yZXRpcmVfY29ubmVjdGlvbl9p
ZHMuYXBwZW5kKHNlbGYuX3BlZXJfY2lkX3NlcSkKLQotICAgICAgICAgICAgIyBhc3NpZ24gbmV3
IENJRAotICAgICAgICAgICAgY29ubmVjdGlvbl9pZCA9IHNlbGYuX3BlZXJfY2lkX2F2YWlsYWJs
ZS5wb3AoMCkKLSAgICAgICAgICAgIHNlbGYuX3BlZXJfY2lkX3NlcSA9IGNvbm5lY3Rpb25faWQu
c2VxdWVuY2VfbnVtYmVyCi0gICAgICAgICAgICBzZWxmLl9wZWVyX2NpZCA9IGNvbm5lY3Rpb25f
aWQuY2lkCi0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAgICAg
IlN3aXRjaGluZyB0byBDSUQgJXMgKCVkKSIsIGR1bXBfY2lkKHNlbGYuX3BlZXJfY2lkKSwgc2Vs
Zi5fcGVlcl9jaWRfc2VxCi0gICAgICAgICAgICApCi0KLSAgICBkZWYgY2xvc2UoCi0gICAgICAg
IHNlbGYsCi0gICAgICAgIGVycm9yX2NvZGU6IGludCA9IFF1aWNFcnJvckNvZGUuTk9fRVJST1Is
Ci0gICAgICAgIGZyYW1lX3R5cGU6IE9wdGlvbmFsW2ludF0gPSBOb25lLAotICAgICAgICByZWFz
b25fcGhyYXNlOiBzdHIgPSAiIiwKLSAgICApIC0+IE5vbmU6Ci0gICAgICAgICIiIgotICAgICAg
ICBDbG9zZSB0aGUgY29ubmVjdGlvbi4KLQotICAgICAgICA6cGFyYW0gZXJyb3JfY29kZTogQW4g
ZXJyb3IgY29kZSBpbmRpY2F0aW5nIHdoeSB0aGUgY29ubmVjdGlvbiBpcwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYmVpbmcgY2xvc2VkLgotICAgICAgICA6cGFyYW0gcmVhc29uX3BocmFz
ZTogQSBodW1hbi1yZWFkYWJsZSBleHBsYW5hdGlvbiBvZiB3aHkgdGhlCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25uZWN0aW9uIGlzIGJlaW5nIGNsb3NlZC4KLSAgICAgICAgIiIi
Ci0gICAgICAgIGlmIHNlbGYuX3N0YXRlIG5vdCBpbiBFTkRfU1RBVEVTOgotICAgICAgICAgICAg
c2VsZi5fY2xvc2VfZXZlbnQgPSBldmVudHMuQ29ubmVjdGlvblRlcm1pbmF0ZWQoCi0gICAgICAg
ICAgICAgICAgZXJyb3JfY29kZT1lcnJvcl9jb2RlLAotICAgICAgICAgICAgICAgIGZyYW1lX3R5
cGU9ZnJhbWVfdHlwZSwKLSAgICAgICAgICAgICAgICByZWFzb25fcGhyYXNlPXJlYXNvbl9waHJh
c2UsCi0gICAgICAgICAgICApCi0gICAgICAgICAgICBzZWxmLl9jbG9zZV9wZW5kaW5nID0gVHJ1
ZQotCi0gICAgZGVmIGNvbm5lY3Qoc2VsZiwgYWRkcjogTmV0d29ya0FkZHJlc3MsIG5vdzogZmxv
YXQpIC0+IE5vbmU6Ci0gICAgICAgICIiIgotICAgICAgICBJbml0aWF0ZSB0aGUgVExTIGhhbmRz
aGFrZS4KLQotICAgICAgICBUaGlzIG1ldGhvZCBjYW4gb25seSBiZSBjYWxsZWQgZm9yIGNsaWVu
dHMgYW5kIGEgc2luZ2xlIHRpbWUuCi0KLSAgICAgICAgQWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhv
ZCBjYWxsIDptZXRoOmBkYXRhZ3JhbXNfdG9fc2VuZGAgdG8gcmV0cmlldmUgZGF0YQotICAgICAg
ICB3aGljaCBuZWVkcyB0byBiZSBzZW50LgotCi0gICAgICAgIDpwYXJhbSBhZGRyOiBUaGUgbmV0
d29yayBhZGRyZXNzIG9mIHRoZSByZW1vdGUgcGVlci4KLSAgICAgICAgOnBhcmFtIG5vdzogVGhl
IGN1cnJlbnQgdGltZS4KLSAgICAgICAgIiIiCi0gICAgICAgIGFzc2VydCAoCi0gICAgICAgICAg
ICBzZWxmLl9pc19jbGllbnQgYW5kIG5vdCBzZWxmLl9jb25uZWN0X2NhbGxlZAotICAgICAgICAp
LCAiY29ubmVjdCgpIGNhbiBvbmx5IGJlIGNhbGxlZCBmb3IgY2xpZW50cyBhbmQgYSBzaW5nbGUg
dGltZSIKLSAgICAgICAgc2VsZi5fY29ubmVjdF9jYWxsZWQgPSBUcnVlCi0KLSAgICAgICAgc2Vs
Zi5fbmV0d29ya19wYXRocyA9IFtRdWljTmV0d29ya1BhdGgoYWRkciwgaXNfdmFsaWRhdGVkPVRy
dWUpXQotICAgICAgICBzZWxmLl92ZXJzaW9uID0gc2VsZi5fY29uZmlndXJhdGlvbi5zdXBwb3J0
ZWRfdmVyc2lvbnNbMF0KLSAgICAgICAgc2VsZi5fY29ubmVjdChub3c9bm93KQotCi0gICAgZGVm
IGRhdGFncmFtc190b19zZW5kKHNlbGYsIG5vdzogZmxvYXQpIC0+IExpc3RbVHVwbGVbYnl0ZXMs
IE5ldHdvcmtBZGRyZXNzXV06Ci0gICAgICAgICIiIgotICAgICAgICBSZXR1cm4gYSBsaXN0IG9m
IGAoZGF0YSwgYWRkcilgIHR1cGxlcyBvZiBkYXRhZ3JhbXMgd2hpY2ggbmVlZCB0byBiZQotICAg
ICAgICBzZW50LCBhbmQgdGhlIG5ldHdvcmsgYWRkcmVzcyB0byB3aGljaCB0aGV5IG5lZWQgdG8g
YmUgc2VudC4KLQotICAgICAgICBBZnRlciBjYWxsaW5nIHRoaXMgbWV0aG9kIGNhbGwgOm1ldGg6
YGdldF90aW1lcmAgdG8ga25vdyB3aGVuIHRoZSBuZXh0Ci0gICAgICAgIHRpbWVyIG5lZWRzIHRv
IGJlIHNldC4KLQotICAgICAgICA6cGFyYW0gbm93OiBUaGUgY3VycmVudCB0aW1lLgotICAgICAg
ICAiIiIKLSAgICAgICAgbmV0d29ya19wYXRoID0gc2VsZi5fbmV0d29ya19wYXRoc1swXQotCi0g
ICAgICAgIGlmIHNlbGYuX3N0YXRlIGluIEVORF9TVEFURVM6Ci0gICAgICAgICAgICByZXR1cm4g
W10KLQotICAgICAgICAjIGJ1aWxkIGRhdGFncmFtcwotICAgICAgICBidWlsZGVyID0gUXVpY1Bh
Y2tldEJ1aWxkZXIoCi0gICAgICAgICAgICBob3N0X2NpZD1zZWxmLmhvc3RfY2lkLAotICAgICAg
ICAgICAgaXNfY2xpZW50PXNlbGYuX2lzX2NsaWVudCwKLSAgICAgICAgICAgIHBhY2tldF9udW1i
ZXI9c2VsZi5fcGFja2V0X251bWJlciwKLSAgICAgICAgICAgIHBlZXJfY2lkPXNlbGYuX3BlZXJf
Y2lkLAotICAgICAgICAgICAgcGVlcl90b2tlbj1zZWxmLl9wZWVyX3Rva2VuLAotICAgICAgICAg
ICAgcXVpY19sb2dnZXI9c2VsZi5fcXVpY19sb2dnZXIsCi0gICAgICAgICAgICBzcGluX2JpdD1z
ZWxmLl9zcGluX2JpdCwKLSAgICAgICAgICAgIHZlcnNpb249c2VsZi5fdmVyc2lvbiwKLSAgICAg
ICAgKQotICAgICAgICBpZiBzZWxmLl9jbG9zZV9wZW5kaW5nOgotICAgICAgICAgICAgZm9yIGVw
b2NoLCBwYWNrZXRfdHlwZSBpbiAoCi0gICAgICAgICAgICAgICAgKHRscy5FcG9jaC5PTkVfUlRU
LCBQQUNLRVRfVFlQRV9PTkVfUlRUKSwKLSAgICAgICAgICAgICAgICAodGxzLkVwb2NoLkhBTkRT
SEFLRSwgUEFDS0VUX1RZUEVfSEFORFNIQUtFKSwKLSAgICAgICAgICAgICAgICAodGxzLkVwb2No
LklOSVRJQUwsIFBBQ0tFVF9UWVBFX0lOSVRJQUwpLAotICAgICAgICAgICAgKToKLSAgICAgICAg
ICAgICAgICBjcnlwdG8gPSBzZWxmLl9jcnlwdG9zW2Vwb2NoXQotICAgICAgICAgICAgICAgIGlm
IGNyeXB0by5zZW5kLmlzX3ZhbGlkKCk6Ci0gICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuc3Rh
cnRfcGFja2V0KHBhY2tldF90eXBlLCBjcnlwdG8pCi0gICAgICAgICAgICAgICAgICAgIHNlbGYu
X3dyaXRlX2Nvbm5lY3Rpb25fY2xvc2VfZnJhbWUoCi0gICAgICAgICAgICAgICAgICAgICAgICBi
dWlsZGVyPWJ1aWxkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2RlPXNlbGYu
X2Nsb3NlX2V2ZW50LmVycm9yX2NvZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICBmcmFtZV90
eXBlPXNlbGYuX2Nsb3NlX2V2ZW50LmZyYW1lX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICByZWFzb25fcGhyYXNlPXNlbGYuX2Nsb3NlX2V2ZW50LnJlYXNvbl9waHJhc2UsCi0gICAgICAg
ICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2xvc2VfcGVuZGluZyA9
IEZhbHNlCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBzZWxmLl9jbG9z
ZV9iZWdpbihpc19pbml0aWF0b3I9VHJ1ZSwgbm93PW5vdykKLSAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgICMgY29uZ2VzdGlvbiBjb250cm9sCi0gICAgICAgICAgICBidWlsZGVyLm1heF9mbGln
aHRfYnl0ZXMgPSAoCi0gICAgICAgICAgICAgICAgc2VsZi5fbG9zcy5jb25nZXN0aW9uX3dpbmRv
dyAtIHNlbGYuX2xvc3MuYnl0ZXNfaW5fZmxpZ2h0Ci0gICAgICAgICAgICApCi0gICAgICAgICAg
ICBpZiBzZWxmLl9wcm9iZV9wZW5kaW5nIGFuZCBidWlsZGVyLm1heF9mbGlnaHRfYnl0ZXMgPCBQ
QUNLRVRfTUFYX1NJWkU6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5tYXhfZmxpZ2h0X2J5dGVz
ID0gUEFDS0VUX01BWF9TSVpFCi0KLSAgICAgICAgICAgICMgbGltaXQgZGF0YSBvbiB1bi12YWxp
ZGF0ZWQgbmV0d29yayBwYXRocwotICAgICAgICAgICAgaWYgbm90IG5ldHdvcmtfcGF0aC5pc192
YWxpZGF0ZWQ6Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5tYXhfdG90YWxfYnl0ZXMgPSAoCi0g
ICAgICAgICAgICAgICAgICAgIG5ldHdvcmtfcGF0aC5ieXRlc19yZWNlaXZlZCAqIDMgLSBuZXR3
b3JrX3BhdGguYnl0ZXNfc2VudAotICAgICAgICAgICAgICAgICkKLQotICAgICAgICAgICAgdHJ5
OgotICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9oYW5kc2hha2VfY29uZmlybWVkOgotICAg
ICAgICAgICAgICAgICAgICBmb3IgZXBvY2ggaW4gW3Rscy5FcG9jaC5JTklUSUFMLCB0bHMuRXBv
Y2guSEFORFNIQUtFXToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX2hhbmRz
aGFrZShidWlsZGVyLCBlcG9jaCwgbm93KQotICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX2Fw
cGxpY2F0aW9uKGJ1aWxkZXIsIG5ldHdvcmtfcGF0aCwgbm93KQotICAgICAgICAgICAgZXhjZXB0
IFF1aWNQYWNrZXRCdWlsZGVyU3RvcDoKLSAgICAgICAgICAgICAgICBwYXNzCi0KLSAgICAgICAg
ZGF0YWdyYW1zLCBwYWNrZXRzID0gYnVpbGRlci5mbHVzaCgpCi0KLSAgICAgICAgaWYgZGF0YWdy
YW1zOgotICAgICAgICAgICAgc2VsZi5fcGFja2V0X251bWJlciA9IGJ1aWxkZXIucGFja2V0X251
bWJlcgotCi0gICAgICAgICAgICAjIHJlZ2lzdGVyIHBhY2tldHMKLSAgICAgICAgICAgIHNlbnRf
aGFuZHNoYWtlID0gRmFsc2UKLSAgICAgICAgICAgIGZvciBwYWNrZXQgaW4gcGFja2V0czoKLSAg
ICAgICAgICAgICAgICBwYWNrZXQuc2VudF90aW1lID0gbm93Ci0gICAgICAgICAgICAgICAgc2Vs
Zi5fbG9zcy5vbl9wYWNrZXRfc2VudCgKLSAgICAgICAgICAgICAgICAgICAgcGFja2V0PXBhY2tl
dCwgc3BhY2U9c2VsZi5fc3BhY2VzW3BhY2tldC5lcG9jaF0KLSAgICAgICAgICAgICAgICApCi0g
ICAgICAgICAgICAgICAgaWYgcGFja2V0LmVwb2NoID09IHRscy5FcG9jaC5IQU5EU0hBS0U6Ci0g
ICAgICAgICAgICAgICAgICAgIHNlbnRfaGFuZHNoYWtlID0gVHJ1ZQotCi0gICAgICAgICAgICAg
ICAgIyBsb2cgcGFja2V0Ci0gICAgICAgICAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMg
bm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmxvZ19ldmVu
dCgKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5PSJ0cmFuc3BvcnQiLAotICAgICAg
ICAgICAgICAgICAgICAgICAgZXZlbnQ9InBhY2tldF9zZW50IiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGRhdGE9ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYWNrZXRfdHlwZSI6
IHNlbGYuX3F1aWNfbG9nZ2VyLnBhY2tldF90eXBlKAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwYWNrZXQucGFja2V0X3R5cGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoZWFkZXIiOiB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJwYWNrZXRfbnVtYmVyIjogc3RyKHBhY2tldC5wYWNrZXRfbnVt
YmVyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhY2tldF9zaXplIjogcGFj
a2V0LnNlbnRfYnl0ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY2lkIjog
ZHVtcF9jaWQoc2VsZi5ob3N0X2NpZCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgaXNfbG9uZ19oZWFkZXIocGFja2V0LnBhY2tldF90eXBlKQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlbHNlICIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
ZGNpZCI6IGR1bXBfY2lkKHNlbGYuX3BlZXJfY2lkKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmcmFtZXMiOiBwYWNrZXQucXVp
Y19sb2dnZXJfZnJhbWVzLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAg
ICAgICAgICAgKQotCi0gICAgICAgICAgICAjIGNoZWNrIGlmIHdlIGNhbiBkaXNjYXJkIGluaXRp
YWwga2V5cwotICAgICAgICAgICAgaWYgc2VudF9oYW5kc2hha2UgYW5kIHNlbGYuX2lzX2NsaWVu
dDoKLSAgICAgICAgICAgICAgICBzZWxmLl9kaXNjYXJkX2Vwb2NoKHRscy5FcG9jaC5JTklUSUFM
KQotCi0gICAgICAgICMgcmV0dXJuIGRhdGFncmFtcyB0byBzZW5kIGFuZCB0aGUgZGVzdGluYXRp
b24gbmV0d29yayBhZGRyZXNzCi0gICAgICAgIHJldCA9IFtdCi0gICAgICAgIGZvciBkYXRhZ3Jh
bSBpbiBkYXRhZ3JhbXM6Ci0gICAgICAgICAgICBieXRlX2xlbmd0aCA9IGxlbihkYXRhZ3JhbSkK
LSAgICAgICAgICAgIG5ldHdvcmtfcGF0aC5ieXRlc19zZW50ICs9IGJ5dGVfbGVuZ3RoCi0gICAg
ICAgICAgICByZXQuYXBwZW5kKChkYXRhZ3JhbSwgbmV0d29ya19wYXRoLmFkZHIpKQotCi0gICAg
ICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAg
ICBzZWxmLl9xdWljX2xvZ2dlci5sb2dfZXZlbnQoCi0gICAgICAgICAgICAgICAgICAgIGNhdGVn
b3J5PSJ0cmFuc3BvcnQiLAotICAgICAgICAgICAgICAgICAgICBldmVudD0iZGF0YWdyYW1zX3Nl
bnQiLAotICAgICAgICAgICAgICAgICAgICBkYXRhPXsiYnl0ZV9sZW5ndGgiOiBieXRlX2xlbmd0
aCwgImNvdW50IjogMX0sCi0gICAgICAgICAgICAgICAgKQotICAgICAgICByZXR1cm4gcmV0Ci0K
LSAgICBkZWYgZ2V0X25leHRfYXZhaWxhYmxlX3N0cmVhbV9pZChzZWxmLCBpc191bmlkaXJlY3Rp
b25hbD1GYWxzZSkgLT4gaW50OgotICAgICAgICAiIiIKLSAgICAgICAgUmV0dXJuIHRoZSBzdHJl
YW0gSUQgZm9yIHRoZSBuZXh0IHN0cmVhbSBjcmVhdGVkIGJ5IHRoaXMgZW5kcG9pbnQuCi0gICAg
ICAgICIiIgotICAgICAgICBzdHJlYW1faWQgPSAoaW50KGlzX3VuaWRpcmVjdGlvbmFsKSA8PCAx
KSB8IGludChub3Qgc2VsZi5faXNfY2xpZW50KQotICAgICAgICB3aGlsZSBzdHJlYW1faWQgaW4g
c2VsZi5fc3RyZWFtczoKLSAgICAgICAgICAgIHN0cmVhbV9pZCArPSA0Ci0gICAgICAgIHJldHVy
biBzdHJlYW1faWQKLQotICAgIGRlZiBnZXRfdGltZXIoc2VsZikgLT4gT3B0aW9uYWxbZmxvYXRd
OgotICAgICAgICAiIiIKLSAgICAgICAgUmV0dXJuIHRoZSB0aW1lIGF0IHdoaWNoIHRoZSB0aW1l
ciBzaG91bGQgZmlyZSBvciBOb25lIGlmIG5vIHRpbWVyIGlzIG5lZWRlZC4KLSAgICAgICAgIiIi
Ci0gICAgICAgIHRpbWVyX2F0ID0gc2VsZi5fY2xvc2VfYXQKLSAgICAgICAgaWYgc2VsZi5fc3Rh
dGUgbm90IGluIEVORF9TVEFURVM6Ci0gICAgICAgICAgICAjIGFjayB0aW1lcgotICAgICAgICAg
ICAgZm9yIHNwYWNlIGluIHNlbGYuX2xvc3Muc3BhY2VzOgotICAgICAgICAgICAgICAgIGlmIHNw
YWNlLmFja19hdCBpcyBub3QgTm9uZSBhbmQgc3BhY2UuYWNrX2F0IDwgdGltZXJfYXQ6Ci0gICAg
ICAgICAgICAgICAgICAgIHRpbWVyX2F0ID0gc3BhY2UuYWNrX2F0Ci0KLSAgICAgICAgICAgICMg
bG9zcyBkZXRlY3Rpb24gdGltZXIKLSAgICAgICAgICAgIHNlbGYuX2xvc3NfYXQgPSBzZWxmLl9s
b3NzLmdldF9sb3NzX2RldGVjdGlvbl90aW1lKCkKLSAgICAgICAgICAgIGlmIHNlbGYuX2xvc3Nf
YXQgaXMgbm90IE5vbmUgYW5kIHNlbGYuX2xvc3NfYXQgPCB0aW1lcl9hdDoKLSAgICAgICAgICAg
ICAgICB0aW1lcl9hdCA9IHNlbGYuX2xvc3NfYXQKLQotICAgICAgICAgICAgIyBwYWNpbmcgdGlt
ZXIKLSAgICAgICAgICAgIGlmIHNlbGYuX3BhY2luZ19hdCBpcyBub3QgTm9uZSBhbmQgc2VsZi5f
cGFjaW5nX2F0IDwgdGltZXJfYXQ6Ci0gICAgICAgICAgICAgICAgdGltZXJfYXQgPSBzZWxmLl9w
YWNpbmdfYXQKLQotICAgICAgICByZXR1cm4gdGltZXJfYXQKLQotICAgIGRlZiBoYW5kbGVfdGlt
ZXIoc2VsZiwgbm93OiBmbG9hdCkgLT4gTm9uZToKLSAgICAgICAgIiIiCi0gICAgICAgIEhhbmRs
ZSB0aGUgdGltZXIuCi0KLSAgICAgICAgQWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhvZCBjYWxsIDpt
ZXRoOmBkYXRhZ3JhbXNfdG9fc2VuZGAgdG8gcmV0cmlldmUgZGF0YQotICAgICAgICB3aGljaCBu
ZWVkcyB0byBiZSBzZW50LgotCi0gICAgICAgIDpwYXJhbSBub3c6IFRoZSBjdXJyZW50IHRpbWUu
Ci0gICAgICAgICIiIgotICAgICAgICAjIGVuZCBvZiBjbG9zaW5nIHBlcmlvZCBvciBpZGxlIHRp
bWVvdXQKLSAgICAgICAgaWYgbm93ID49IHNlbGYuX2Nsb3NlX2F0OgotICAgICAgICAgICAgaWYg
c2VsZi5fY2xvc2VfZXZlbnQgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBzZWxmLl9jbG9zZV9l
dmVudCA9IGV2ZW50cy5Db25uZWN0aW9uVGVybWluYXRlZCgKLSAgICAgICAgICAgICAgICAgICAg
ZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLklOVEVSTkFMX0VSUk9SLAotICAgICAgICAgICAgICAg
ICAgICBmcmFtZV90eXBlPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgIHJlYXNvbl9waHJhc2U9
IklkbGUgdGltZW91dCIsCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgc2VsZi5fY2xv
c2VfZW5kKCkKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgICMgbG9zcyBkZXRlY3Rpb24g
dGltZW91dAotICAgICAgICBpZiBzZWxmLl9sb3NzX2F0IGlzIG5vdCBOb25lIGFuZCBub3cgPj0g
c2VsZi5fbG9zc19hdDoKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygiTG9zcyBkZXRl
Y3Rpb24gdHJpZ2dlcmVkIikKLSAgICAgICAgICAgIHNlbGYuX2xvc3Mub25fbG9zc19kZXRlY3Rp
b25fdGltZW91dChub3c9bm93KQotCi0gICAgZGVmIG5leHRfZXZlbnQoc2VsZikgLT4gT3B0aW9u
YWxbZXZlbnRzLlF1aWNFdmVudF06Ci0gICAgICAgICIiIgotICAgICAgICBSZXRyaWV2ZSB0aGUg
bmV4dCBldmVudCBmcm9tIHRoZSBldmVudCBidWZmZXIuCi0KLSAgICAgICAgUmV0dXJucyBgTm9u
ZWAgaWYgdGhlcmUgYXJlIG5vIGJ1ZmZlcmVkIGV2ZW50cy4KLSAgICAgICAgIiIiCi0gICAgICAg
IHRyeToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9ldmVudHMucG9wbGVmdCgpCi0gICAgICAg
IGV4Y2VwdCBJbmRleEVycm9yOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgIGRlZiBy
ZWNlaXZlX2RhdGFncmFtKHNlbGYsIGRhdGE6IGJ5dGVzLCBhZGRyOiBOZXR3b3JrQWRkcmVzcywg
bm93OiBmbG9hdCkgLT4gTm9uZToKLSAgICAgICAgIiIiCi0gICAgICAgIEhhbmRsZSBhbiBpbmNv
bWluZyBkYXRhZ3JhbS4KLQotICAgICAgICBBZnRlciBjYWxsaW5nIHRoaXMgbWV0aG9kIGNhbGwg
Om1ldGg6YGRhdGFncmFtc190b19zZW5kYCB0byByZXRyaWV2ZSBkYXRhCi0gICAgICAgIHdoaWNo
IG5lZWRzIHRvIGJlIHNlbnQuCi0KLSAgICAgICAgOnBhcmFtIGRhdGE6IFRoZSBkYXRhZ3JhbSB3
aGljaCB3YXMgcmVjZWl2ZWQuCi0gICAgICAgIDpwYXJhbSBhZGRyOiBUaGUgbmV0d29yayBhZGRy
ZXNzIGZyb20gd2hpY2ggdGhlIGRhdGFncmFtIHdhcyByZWNlaXZlZC4KLSAgICAgICAgOnBhcmFt
IG5vdzogVGhlIGN1cnJlbnQgdGltZS4KLSAgICAgICAgIiIiCi0gICAgICAgICMgc3RvcCBoYW5k
bGluZyBwYWNrZXRzIHdoZW4gY2xvc2luZwotICAgICAgICBpZiBzZWxmLl9zdGF0ZSBpbiBFTkRf
U1RBVEVTOgotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dn
ZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5sb2dfZXZlbnQo
Ci0gICAgICAgICAgICAgICAgY2F0ZWdvcnk9InRyYW5zcG9ydCIsCi0gICAgICAgICAgICAgICAg
ZXZlbnQ9ImRhdGFncmFtc19yZWNlaXZlZCIsCi0gICAgICAgICAgICAgICAgZGF0YT17ImJ5dGVf
bGVuZ3RoIjogbGVuKGRhdGEpLCAiY291bnQiOiAxfSwKLSAgICAgICAgICAgICkKLQotICAgICAg
ICBidWYgPSBCdWZmZXIoZGF0YT1kYXRhKQotICAgICAgICB3aGlsZSBub3QgYnVmLmVvZigpOgot
ICAgICAgICAgICAgc3RhcnRfb2ZmID0gYnVmLnRlbGwoKQotICAgICAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgICAgIGhlYWRlciA9IHB1bGxfcXVpY19oZWFkZXIoCi0gICAgICAgICAgICAgICAg
ICAgIGJ1ZiwgaG9zdF9jaWRfbGVuZ3RoPXNlbGYuX2NvbmZpZ3VyYXRpb24uY29ubmVjdGlvbl9p
ZF9sZW5ndGgKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJv
cjoKLSAgICAgICAgICAgICAgICByZXR1cm4KLQotICAgICAgICAgICAgIyBjaGVjayBkZXN0aW5h
dGlvbiBDSUQgbWF0Y2hlcwotICAgICAgICAgICAgZGVzdGluYXRpb25fY2lkX3NlcTogT3B0aW9u
YWxbaW50XSA9IE5vbmUKLSAgICAgICAgICAgIGZvciBjb25uZWN0aW9uX2lkIGluIHNlbGYuX2hv
c3RfY2lkczoKLSAgICAgICAgICAgICAgICBpZiBoZWFkZXIuZGVzdGluYXRpb25fY2lkID09IGNv
bm5lY3Rpb25faWQuY2lkOgotICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl9jaWRfc2Vx
ID0gY29ubmVjdGlvbl9pZC5zZXF1ZW5jZV9udW1iZXIKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWsKLSAgICAgICAgICAgIGlmIHNlbGYuX2lzX2NsaWVudCBhbmQgZGVzdGluYXRpb25fY2lkX3Nl
cSBpcyBOb25lOgotICAgICAgICAgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBO
b25lOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5sb2dfZXZlbnQoCi0g
ICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeT0idHJhbnNwb3J0IiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGV2ZW50PSJwYWNrZXRfZHJvcHBlZCIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICBkYXRhPXsidHJpZ2dlciI6ICJ1bmtub3duX2Nvbm5lY3Rpb25faWQifSwKLSAgICAgICAg
ICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgICAgICAjIGNo
ZWNrIHByb3RvY29sIHZlcnNpb24KLSAgICAgICAgICAgIGlmICgKLSAgICAgICAgICAgICAgICBz
ZWxmLl9pc19jbGllbnQKLSAgICAgICAgICAgICAgICBhbmQgc2VsZi5fc3RhdGUgPT0gUXVpY0Nv
bm5lY3Rpb25TdGF0ZS5GSVJTVEZMSUdIVAotICAgICAgICAgICAgICAgIGFuZCBoZWFkZXIudmVy
c2lvbiA9PSBRdWljUHJvdG9jb2xWZXJzaW9uLk5FR09USUFUSU9OCi0gICAgICAgICAgICApOgot
ICAgICAgICAgICAgICAgICMgdmVyc2lvbiBuZWdvdGlhdGlvbgotICAgICAgICAgICAgICAgIHZl
cnNpb25zID0gW10KLSAgICAgICAgICAgICAgICB3aGlsZSBub3QgYnVmLmVvZigpOgotICAgICAg
ICAgICAgICAgICAgICB2ZXJzaW9ucy5hcHBlbmQoYnVmLnB1bGxfdWludDMyKCkpCi0gICAgICAg
ICAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAg
ICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmxvZ19ldmVudCgKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGNhdGVnb3J5PSJ0cmFuc3BvcnQiLAotICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQ9
InBhY2tldF9yZWNlaXZlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhPXsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAicGFja2V0X3R5cGUiOiAidmVyc2lvbl9uZWdvdGlhdGlv
biIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImhlYWRlciI6IHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgInNjaWQiOiBkdW1wX2NpZChoZWFkZXIuc291cmNlX2NpZCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkY2lkIjogZHVtcF9jaWQoaGVhZGVy
LmRlc3RpbmF0aW9uX2NpZCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiZnJhbWVzIjogW10sCi0gICAgICAgICAgICAgICAgICAg
ICAgICB9LAotICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgY29tbW9uID0g
c2V0KHNlbGYuX2NvbmZpZ3VyYXRpb24uc3VwcG9ydGVkX3ZlcnNpb25zKS5pbnRlcnNlY3Rpb24o
Ci0gICAgICAgICAgICAgICAgICAgIHZlcnNpb25zCi0gICAgICAgICAgICAgICAgKQotICAgICAg
ICAgICAgICAgIGlmIG5vdCBjb21tb246Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dl
ci5lcnJvcigiQ291bGQgbm90IGZpbmQgYSBjb21tb24gcHJvdG9jb2wgdmVyc2lvbiIpCi0gICAg
ICAgICAgICAgICAgICAgIHNlbGYuX2Nsb3NlX2V2ZW50ID0gZXZlbnRzLkNvbm5lY3Rpb25UZXJt
aW5hdGVkKAotICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29kZT1RdWljRXJyb3JDb2Rl
LklOVEVSTkFMX0VSUk9SLAotICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1Ob25l
LAotICAgICAgICAgICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT0iQ291bGQgbm90IGZpbmQg
YSBjb21tb24gcHJvdG9jb2wgdmVyc2lvbiIsCi0gICAgICAgICAgICAgICAgICAgICkKLSAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fY2xvc2VfZW5kKCkKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuCi0gICAgICAgICAgICAgICAgc2VsZi5fdmVyc2lvbiA9IFF1aWNQcm90b2NvbFZlcnNpb24o
bWF4KGNvbW1vbikpCi0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oIlJldHJ5aW5n
IHdpdGggJXMiLCBzZWxmLl92ZXJzaW9uKQotICAgICAgICAgICAgICAgIHNlbGYuX2Nvbm5lY3Qo
bm93PW5vdykKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIGVsaWYgKAotICAg
ICAgICAgICAgICAgIGhlYWRlci52ZXJzaW9uIGlzIG5vdCBOb25lCi0gICAgICAgICAgICAgICAg
YW5kIGhlYWRlci52ZXJzaW9uIG5vdCBpbiBzZWxmLl9jb25maWd1cmF0aW9uLnN1cHBvcnRlZF92
ZXJzaW9ucwotICAgICAgICAgICAgKToKLSAgICAgICAgICAgICAgICAjIHVuc3VwcG9ydGVkIHZl
cnNpb24KLSAgICAgICAgICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToK
LSAgICAgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIubG9nX2V2ZW50KAotICAgICAg
ICAgICAgICAgICAgICAgICAgY2F0ZWdvcnk9InRyYW5zcG9ydCIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICBldmVudD0icGFja2V0X2Ryb3BwZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAg
ZGF0YT17InRyaWdnZXIiOiAidW5zdXBwb3J0ZWRfdmVyc2lvbiJ9LAotICAgICAgICAgICAgICAg
ICAgICApCi0gICAgICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgICAgIGlmIHNlbGYuX2lz
X2NsaWVudCBhbmQgaGVhZGVyLnBhY2tldF90eXBlID09IFBBQ0tFVF9UWVBFX1JFVFJZOgotICAg
ICAgICAgICAgICAgICMgY2FsY3VsYXRlIHN0YXRlbGVzcyByZXRyeSBpbnRlZ3JpdHkgdGFnCi0g
ICAgICAgICAgICAgICAgaW50ZWdyaXR5X3RhZyA9IGdldF9yZXRyeV9pbnRlZ3JpdHlfdGFnKAot
ICAgICAgICAgICAgICAgICAgICBidWYuZGF0YV9zbGljZShzdGFydF9vZmYsIGJ1Zi50ZWxsKCkg
LSBSRVRSWV9JTlRFR1JJVFlfVEFHX1NJWkUpLAotICAgICAgICAgICAgICAgICAgICBzZWxmLl9w
ZWVyX2NpZCwKLSAgICAgICAgICAgICAgICApCi0KLSAgICAgICAgICAgICAgICBpZiAoCi0gICAg
ICAgICAgICAgICAgICAgIGhlYWRlci5kZXN0aW5hdGlvbl9jaWQgPT0gc2VsZi5ob3N0X2NpZAot
ICAgICAgICAgICAgICAgICAgICBhbmQgaGVhZGVyLmludGVncml0eV90YWcgPT0gaW50ZWdyaXR5
X3RhZwotICAgICAgICAgICAgICAgICAgICBhbmQgbm90IHNlbGYuX3N0YXRlbGVzc19yZXRyeV9j
b3VudAotICAgICAgICAgICAgICAgICk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX3F1
aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcXVp
Y19sb2dnZXIubG9nX2V2ZW50KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5
PSJ0cmFuc3BvcnQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50PSJwYWNrZXRf
cmVjZWl2ZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAicGFja2V0X3R5cGUiOiAicmV0cnkiLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiaGVhZGVyIjogewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgInNjaWQiOiBkdW1wX2NpZChoZWFkZXIuc291cmNlX2NpZCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGNpZCI6IGR1bXBfY2lkKGhlYWRlci5k
ZXN0aW5hdGlvbl9jaWQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnJhbWVzIjogW10sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICkKLQotICAgICAgICAg
ICAgICAgICAgICBzZWxmLl9vcmlnaW5hbF9jb25uZWN0aW9uX2lkID0gc2VsZi5fcGVlcl9jaWQK
LSAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGVlcl9jaWQgPSBoZWFkZXIuc291cmNlX2NpZAot
ICAgICAgICAgICAgICAgICAgICBzZWxmLl9wZWVyX3Rva2VuID0gaGVhZGVyLnRva2VuCi0gICAg
ICAgICAgICAgICAgICAgIHNlbGYuX3N0YXRlbGVzc19yZXRyeV9jb3VudCArPSAxCi0gICAgICAg
ICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCJQZXJmb3JtaW5nIHN0YXRlbGVzcyByZXRy
eSIpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2Nvbm5lY3Qobm93PW5vdykKLSAgICAgICAg
ICAgICAgICByZXR1cm4KLQotICAgICAgICAgICAgbmV0d29ya19wYXRoID0gc2VsZi5fZmluZF9u
ZXR3b3JrX3BhdGgoYWRkcikKLQotICAgICAgICAgICAgIyBzZXJ2ZXIgaW5pdGlhbGl6YXRpb24K
LSAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9pc19jbGllbnQgYW5kIHNlbGYuX3N0YXRlID09IFF1
aWNDb25uZWN0aW9uU3RhdGUuRklSU1RGTElHSFQ6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0ICgK
LSAgICAgICAgICAgICAgICAgICAgaGVhZGVyLnBhY2tldF90eXBlID09IFBBQ0tFVF9UWVBFX0lO
SVRJQUwKLSAgICAgICAgICAgICAgICApLCAiZmlyc3QgcGFja2V0IG11c3QgYmUgSU5JVElBTCIK
LSAgICAgICAgICAgICAgICBzZWxmLl9uZXR3b3JrX3BhdGhzID0gW25ldHdvcmtfcGF0aF0KLSAg
ICAgICAgICAgICAgICBzZWxmLl92ZXJzaW9uID0gUXVpY1Byb3RvY29sVmVyc2lvbihoZWFkZXIu
dmVyc2lvbikKLSAgICAgICAgICAgICAgICBzZWxmLl9pbml0aWFsaXplKGhlYWRlci5kZXN0aW5h
dGlvbl9jaWQpCi0KLSAgICAgICAgICAgICMgZGV0ZXJtaW5lIGNyeXB0byBhbmQgcGFja2V0IHNw
YWNlCi0gICAgICAgICAgICBlcG9jaCA9IGdldF9lcG9jaChoZWFkZXIucGFja2V0X3R5cGUpCi0g
ICAgICAgICAgICBjcnlwdG8gPSBzZWxmLl9jcnlwdG9zW2Vwb2NoXQotICAgICAgICAgICAgaWYg
ZXBvY2ggPT0gdGxzLkVwb2NoLlpFUk9fUlRUOgotICAgICAgICAgICAgICAgIHNwYWNlID0gc2Vs
Zi5fc3BhY2VzW3Rscy5FcG9jaC5PTkVfUlRUXQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgICAgICBzcGFjZSA9IHNlbGYuX3NwYWNlc1tlcG9jaF0KLQotICAgICAgICAgICAgIyBkZWNy
eXB0IHBhY2tldAotICAgICAgICAgICAgZW5jcnlwdGVkX29mZiA9IGJ1Zi50ZWxsKCkgLSBzdGFy
dF9vZmYKLSAgICAgICAgICAgIGVuZF9vZmYgPSBidWYudGVsbCgpICsgaGVhZGVyLnJlc3RfbGVu
Z3RoCi0gICAgICAgICAgICBidWYuc2VlayhlbmRfb2ZmKQotCi0gICAgICAgICAgICB0cnk6Ci0g
ICAgICAgICAgICAgICAgcGxhaW5faGVhZGVyLCBwbGFpbl9wYXlsb2FkLCBwYWNrZXRfbnVtYmVy
ID0gY3J5cHRvLmRlY3J5cHRfcGFja2V0KAotICAgICAgICAgICAgICAgICAgICBkYXRhW3N0YXJ0
X29mZjplbmRfb2ZmXSwgZW5jcnlwdGVkX29mZiwgc3BhY2UuZXhwZWN0ZWRfcGFja2V0X251bWJl
cgotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgIGV4Y2VwdCBLZXlVbmF2YWlsYWJsZUVy
cm9yIGFzIGV4YzoKLSAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoZXhjKQotICAg
ICAgICAgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgotICAgICAgICAg
ICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5sb2dfZXZlbnQoCi0gICAgICAgICAgICAgICAg
ICAgICAgICBjYXRlZ29yeT0idHJhbnNwb3J0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGV2
ZW50PSJwYWNrZXRfZHJvcHBlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhPXsidHJp
Z2dlciI6ICJrZXlfdW5hdmFpbGFibGUifSwKLSAgICAgICAgICAgICAgICAgICAgKQotICAgICAg
ICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBleGNlcHQgQ3J5cHRvRXJyb3IgYXMgZXhj
OgotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZyhleGMpCi0gICAgICAgICAgICAg
ICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAg
IHNlbGYuX3F1aWNfbG9nZ2VyLmxvZ19ldmVudCgKLSAgICAgICAgICAgICAgICAgICAgICAgIGNh
dGVnb3J5PSJ0cmFuc3BvcnQiLAotICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQ9InBhY2tl
dF9kcm9wcGVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9eyJ0cmlnZ2VyIjogInBh
eWxvYWRfZGVjcnlwdF9lcnJvciJ9LAotICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAg
ICAgICAgY29udGludWUKLQotICAgICAgICAgICAgIyBjaGVjayByZXNlcnZlZCBiaXRzCi0gICAg
ICAgICAgICBpZiBoZWFkZXIuaXNfbG9uZ19oZWFkZXI6Ci0gICAgICAgICAgICAgICAgcmVzZXJ2
ZWRfbWFzayA9IDB4MEMKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmVzZXJ2
ZWRfbWFzayA9IDB4MTgKLSAgICAgICAgICAgIGlmIHBsYWluX2hlYWRlclswXSAmIHJlc2VydmVk
X21hc2s6Ci0gICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgKLSAgICAgICAgICAgICAgICAgICAg
ZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLlBST1RPQ09MX1ZJT0xBVElPTiwKLSAgICAgICAgICAg
ICAgICAgICAgZnJhbWVfdHlwZT1Ob25lLAotICAgICAgICAgICAgICAgICAgICByZWFzb25fcGhy
YXNlPSJSZXNlcnZlZCBiaXRzIG11c3QgYmUgemVybyIsCi0gICAgICAgICAgICAgICAgKQotICAg
ICAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgICAgICAjIHJhaXNlIGV4cGVjdGVkIHBhY2tl
dCBudW1iZXIKLSAgICAgICAgICAgIGlmIHBhY2tldF9udW1iZXIgPiBzcGFjZS5leHBlY3RlZF9w
YWNrZXRfbnVtYmVyOgotICAgICAgICAgICAgICAgIHNwYWNlLmV4cGVjdGVkX3BhY2tldF9udW1i
ZXIgPSBwYWNrZXRfbnVtYmVyICsgMQotCi0gICAgICAgICAgICAjIGxvZyBwYWNrZXQKLSAgICAg
ICAgICAgIHF1aWNfbG9nZ2VyX2ZyYW1lczogT3B0aW9uYWxbTGlzdFtEaWN0XV0gPSBOb25lCi0g
ICAgICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAg
ICAgICBxdWljX2xvZ2dlcl9mcmFtZXMgPSBbXQotICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNf
bG9nZ2VyLmxvZ19ldmVudCgKLSAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnk9InRyYW5zcG9y
dCIsCi0gICAgICAgICAgICAgICAgICAgIGV2ZW50PSJwYWNrZXRfcmVjZWl2ZWQiLAotICAgICAg
ICAgICAgICAgICAgICBkYXRhPXsKLSAgICAgICAgICAgICAgICAgICAgICAgICJwYWNrZXRfdHlw
ZSI6IHNlbGYuX3F1aWNfbG9nZ2VyLnBhY2tldF90eXBlKAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGhlYWRlci5wYWNrZXRfdHlwZQotICAgICAgICAgICAgICAgICAgICAgICAgKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICJoZWFkZXIiOiB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgInBhY2tldF9udW1iZXIiOiBzdHIocGFja2V0X251bWJlciksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgInBhY2tldF9zaXplIjogZW5kX29mZiAtIHN0YXJ0X29mZiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiZGNpZCI6IGR1bXBfY2lkKGhlYWRlci5kZXN0aW5hdGlv
bl9jaWQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY2lkIjogZHVtcF9jaWQoaGVh
ZGVyLnNvdXJjZV9jaWQpLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICJmcmFtZXMiOiBxdWljX2xvZ2dlcl9mcmFtZXMsCi0gICAgICAgICAgICAg
ICAgICAgIH0sCi0gICAgICAgICAgICAgICAgKQotCi0gICAgICAgICAgICAjIGRpc2NhcmQgaW5p
dGlhbCBrZXlzIGFuZCBwYWNrZXQgc3BhY2UKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9pc19j
bGllbnQgYW5kIGVwb2NoID09IHRscy5FcG9jaC5IQU5EU0hBS0U6Ci0gICAgICAgICAgICAgICAg
c2VsZi5fZGlzY2FyZF9lcG9jaCh0bHMuRXBvY2guSU5JVElBTCkKLQotICAgICAgICAgICAgIyB1
cGRhdGUgc3RhdGUKLSAgICAgICAgICAgIGlmIHNlbGYuX3BlZXJfY2lkX3NlcSBpcyBOb25lOgot
ICAgICAgICAgICAgICAgIHNlbGYuX3BlZXJfY2lkID0gaGVhZGVyLnNvdXJjZV9jaWQKLSAgICAg
ICAgICAgICAgICBzZWxmLl9wZWVyX2NpZF9zZXEgPSAwCi0KLSAgICAgICAgICAgIGlmIHNlbGYu
X3N0YXRlID09IFF1aWNDb25uZWN0aW9uU3RhdGUuRklSU1RGTElHSFQ6Ci0gICAgICAgICAgICAg
ICAgc2VsZi5fc2V0X3N0YXRlKFF1aWNDb25uZWN0aW9uU3RhdGUuQ09OTkVDVEVEKQotCi0gICAg
ICAgICAgICAjIHVwZGF0ZSBzcGluIGJpdAotICAgICAgICAgICAgaWYgbm90IGhlYWRlci5pc19s
b25nX2hlYWRlciBhbmQgcGFja2V0X251bWJlciA+IHNlbGYuX3NwaW5faGlnaGVzdF9wbjoKLSAg
ICAgICAgICAgICAgICBzcGluX2JpdCA9IGdldF9zcGluX2JpdChwbGFpbl9oZWFkZXJbMF0pCi0g
ICAgICAgICAgICAgICAgaWYgc2VsZi5faXNfY2xpZW50OgotICAgICAgICAgICAgICAgICAgICBz
ZWxmLl9zcGluX2JpdCA9IG5vdCBzcGluX2JpdAotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICAgICAgICAgIHNlbGYuX3NwaW5fYml0ID0gc3Bpbl9iaXQKLSAgICAgICAgICAgICAg
ICBzZWxmLl9zcGluX2hpZ2hlc3RfcG4gPSBwYWNrZXRfbnVtYmVyCi0KLSAgICAgICAgICAgICAg
ICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAg
c2VsZi5fcXVpY19sb2dnZXIubG9nX2V2ZW50KAotICAgICAgICAgICAgICAgICAgICAgICAgY2F0
ZWdvcnk9ImNvbm5lY3Rpdml0eSIsCi0gICAgICAgICAgICAgICAgICAgICAgICBldmVudD0ic3Bp
bl9iaXRfdXBkYXRlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhPXsic3RhdGUiOiBz
ZWxmLl9zcGluX2JpdH0sCi0gICAgICAgICAgICAgICAgICAgICkKLQotICAgICAgICAgICAgIyBo
YW5kbGUgcGF5bG9hZAotICAgICAgICAgICAgY29udGV4dCA9IFF1aWNSZWNlaXZlQ29udGV4dCgK
LSAgICAgICAgICAgICAgICBlcG9jaD1lcG9jaCwKLSAgICAgICAgICAgICAgICBob3N0X2NpZD1o
ZWFkZXIuZGVzdGluYXRpb25fY2lkLAotICAgICAgICAgICAgICAgIG5ldHdvcmtfcGF0aD1uZXR3
b3JrX3BhdGgsCi0gICAgICAgICAgICAgICAgcXVpY19sb2dnZXJfZnJhbWVzPXF1aWNfbG9nZ2Vy
X2ZyYW1lcywKLSAgICAgICAgICAgICAgICB0aW1lPW5vdywKLSAgICAgICAgICAgICkKLSAgICAg
ICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBpc19hY2tfZWxpY2l0aW5nLCBpc19wcm9iaW5n
ID0gc2VsZi5fcGF5bG9hZF9yZWNlaXZlZCgKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dCwg
cGxhaW5fcGF5bG9hZAotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgIGV4Y2VwdCBRdWlj
Q29ubmVjdGlvbkVycm9yIGFzIGV4YzoKLSAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIud2Fy
bmluZyhleGMpCi0gICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgKLSAgICAgICAgICAgICAgICAg
ICAgZXJyb3JfY29kZT1leGMuZXJyb3JfY29kZSwKLSAgICAgICAgICAgICAgICAgICAgZnJhbWVf
dHlwZT1leGMuZnJhbWVfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT1l
eGMucmVhc29uX3BocmFzZSwKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICBpZiBzZWxm
Ll9zdGF0ZSBpbiBFTkRfU1RBVEVTIG9yIHNlbGYuX2Nsb3NlX3BlbmRpbmc6Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuCi0KLSAgICAgICAgICAgICMgdXBkYXRlIGlkbGUgdGltZW91dAotICAgICAg
ICAgICAgc2VsZi5fY2xvc2VfYXQgPSBub3cgKyBzZWxmLl9jb25maWd1cmF0aW9uLmlkbGVfdGlt
ZW91dAotCi0gICAgICAgICAgICAjIGhhbmRsZSBtaWdyYXRpb24KLSAgICAgICAgICAgIGlmICgK
LSAgICAgICAgICAgICAgICBub3Qgc2VsZi5faXNfY2xpZW50Ci0gICAgICAgICAgICAgICAgYW5k
IGNvbnRleHQuaG9zdF9jaWQgIT0gc2VsZi5ob3N0X2NpZAotICAgICAgICAgICAgICAgIGFuZCBl
cG9jaCA9PSB0bHMuRXBvY2guT05FX1JUVAotICAgICAgICAgICAgKToKLSAgICAgICAgICAgICAg
ICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAgICAgICAgICJQZWVyIHN3aXRjaGlu
ZyB0byBDSUQgJXMgKCVkKSIsCi0gICAgICAgICAgICAgICAgICAgIGR1bXBfY2lkKGNvbnRleHQu
aG9zdF9jaWQpLAotICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl9jaWRfc2VxLAotICAg
ICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICBzZWxmLmhvc3RfY2lkID0gY29udGV4dC5o
b3N0X2NpZAotICAgICAgICAgICAgICAgIHNlbGYuY2hhbmdlX2Nvbm5lY3Rpb25faWQoKQotCi0g
ICAgICAgICAgICAjIHVwZGF0ZSBuZXR3b3JrIHBhdGgKLSAgICAgICAgICAgIGlmIG5vdCBuZXR3
b3JrX3BhdGguaXNfdmFsaWRhdGVkIGFuZCBlcG9jaCA9PSB0bHMuRXBvY2guSEFORFNIQUtFOgot
ICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICAgICAgICAg
Ik5ldHdvcmsgcGF0aCAlcyB2YWxpZGF0ZWQgYnkgaGFuZHNoYWtlIiwgbmV0d29ya19wYXRoLmFk
ZHIKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgbmV0d29ya19wYXRoLmlzX3Zh
bGlkYXRlZCA9IFRydWUKLSAgICAgICAgICAgIG5ldHdvcmtfcGF0aC5ieXRlc19yZWNlaXZlZCAr
PSBlbmRfb2ZmIC0gc3RhcnRfb2ZmCi0gICAgICAgICAgICBpZiBuZXR3b3JrX3BhdGggbm90IGlu
IHNlbGYuX25ldHdvcmtfcGF0aHM6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbmV0d29ya19wYXRo
cy5hcHBlbmQobmV0d29ya19wYXRoKQotICAgICAgICAgICAgaWR4ID0gc2VsZi5fbmV0d29ya19w
YXRocy5pbmRleChuZXR3b3JrX3BhdGgpCi0gICAgICAgICAgICBpZiBpZHggYW5kIG5vdCBpc19w
cm9iaW5nIGFuZCBwYWNrZXRfbnVtYmVyID4gc3BhY2UubGFyZ2VzdF9yZWNlaXZlZF9wYWNrZXQ6
Ci0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCJOZXR3b3JrIHBhdGggJXMgcHJv
bW90ZWQiLCBuZXR3b3JrX3BhdGguYWRkcikKLSAgICAgICAgICAgICAgICBzZWxmLl9uZXR3b3Jr
X3BhdGhzLnBvcChpZHgpCi0gICAgICAgICAgICAgICAgc2VsZi5fbmV0d29ya19wYXRocy5pbnNl
cnQoMCwgbmV0d29ya19wYXRoKQotCi0gICAgICAgICAgICAjIHJlY29yZCBwYWNrZXQgYXMgcmVj
ZWl2ZWQKLSAgICAgICAgICAgIGlmIG5vdCBzcGFjZS5kaXNjYXJkZWQ6Ci0gICAgICAgICAgICAg
ICAgaWYgcGFja2V0X251bWJlciA+IHNwYWNlLmxhcmdlc3RfcmVjZWl2ZWRfcGFja2V0OgotICAg
ICAgICAgICAgICAgICAgICBzcGFjZS5sYXJnZXN0X3JlY2VpdmVkX3BhY2tldCA9IHBhY2tldF9u
dW1iZXIKLSAgICAgICAgICAgICAgICAgICAgc3BhY2UubGFyZ2VzdF9yZWNlaXZlZF90aW1lID0g
bm93Ci0gICAgICAgICAgICAgICAgc3BhY2UuYWNrX3F1ZXVlLmFkZChwYWNrZXRfbnVtYmVyKQot
ICAgICAgICAgICAgICAgIGlmIGlzX2Fja19lbGljaXRpbmcgYW5kIHNwYWNlLmFja19hdCBpcyBO
b25lOgotICAgICAgICAgICAgICAgICAgICBzcGFjZS5hY2tfYXQgPSBub3cgKyBzZWxmLl9hY2tf
ZGVsYXkKLQotICAgIGRlZiByZXF1ZXN0X2tleV91cGRhdGUoc2VsZikgLT4gTm9uZToKLSAgICAg
ICAgIiIiCi0gICAgICAgIFJlcXVlc3QgYW4gdXBkYXRlIG9mIHRoZSBlbmNyeXB0aW9uIGtleXMu
Ci0gICAgICAgICIiIgotICAgICAgICBhc3NlcnQgc2VsZi5faGFuZHNoYWtlX2NvbXBsZXRlLCAi
Y2Fubm90IGNoYW5nZSBrZXkgYmVmb3JlIGhhbmRzaGFrZSBjb21wbGV0ZXMiCi0gICAgICAgIHNl
bGYuX2NyeXB0b3NbdGxzLkVwb2NoLk9ORV9SVFRdLnVwZGF0ZV9rZXkoKQotCi0gICAgZGVmIHNl
bmRfcGluZyhzZWxmLCB1aWQ6IGludCkgLT4gTm9uZToKLSAgICAgICAgIiIiCi0gICAgICAgIFNl
bmQgYSBQSU5HIGZyYW1lIHRvIHRoZSBwZWVyLgotCi0gICAgICAgIDpwYXJhbSB1aWQ6IEEgdW5p
cXVlIElEIGZvciB0aGlzIFBJTkcuCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLl9waW5nX3Bl
bmRpbmcuYXBwZW5kKHVpZCkKLQotICAgIGRlZiBzZW5kX2RhdGFncmFtX2ZyYW1lKHNlbGYsIGRh
dGE6IGJ5dGVzKSAtPiBOb25lOgotICAgICAgICAiIiIKLSAgICAgICAgU2VuZCBhIERBVEFHUkFN
IGZyYW1lLgotCi0gICAgICAgIDpwYXJhbSBkYXRhOiBUaGUgZGF0YSB0byBiZSBzZW50LgotICAg
ICAgICAiIiIKLSAgICAgICAgc2VsZi5fZGF0YWdyYW1zX3BlbmRpbmcuYXBwZW5kKGRhdGEpCi0K
LSAgICBkZWYgc2VuZF9zdHJlYW1fZGF0YSgKLSAgICAgICAgc2VsZiwgc3RyZWFtX2lkOiBpbnQs
IGRhdGE6IGJ5dGVzLCBlbmRfc3RyZWFtOiBib29sID0gRmFsc2UKLSAgICApIC0+IE5vbmU6Ci0g
ICAgICAgICIiIgotICAgICAgICBTZW5kIGRhdGEgb24gdGhlIHNwZWNpZmljIHN0cmVhbS4KLQot
ICAgICAgICA6cGFyYW0gc3RyZWFtX2lkOiBUaGUgc3RyZWFtJ3MgSUQuCi0gICAgICAgIDpwYXJh
bSBkYXRhOiBUaGUgZGF0YSB0byBiZSBzZW50LgotICAgICAgICA6cGFyYW0gZW5kX3N0cmVhbTog
SWYgc2V0IHRvIGBUcnVlYCwgdGhlIEZJTiBiaXQgd2lsbCBiZSBzZXQuCi0gICAgICAgICIiIgot
ICAgICAgICBpZiBzdHJlYW1faXNfY2xpZW50X2luaXRpYXRlZChzdHJlYW1faWQpICE9IHNlbGYu
X2lzX2NsaWVudDoKLSAgICAgICAgICAgIGlmIHN0cmVhbV9pZCBub3QgaW4gc2VsZi5fc3RyZWFt
czoKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDYW5ub3Qgc2VuZCBkYXRhIG9u
IHVua25vd24gcGVlci1pbml0aWF0ZWQgc3RyZWFtIikKLSAgICAgICAgICAgIGlmIHN0cmVhbV9p
c191bmlkaXJlY3Rpb25hbChzdHJlYW1faWQpOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVl
RXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICJDYW5ub3Qgc2VuZCBkYXRhIG9uIHBlZXItaW5p
dGlhdGVkIHVuaWRpcmVjdGlvbmFsIHN0cmVhbSIKLSAgICAgICAgICAgICAgICApCi0KLSAgICAg
ICAgdHJ5OgotICAgICAgICAgICAgc3RyZWFtID0gc2VsZi5fc3RyZWFtc1tzdHJlYW1faWRdCi0g
ICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIHNlbGYuX2NyZWF0ZV9zdHJlYW0o
c3RyZWFtX2lkPXN0cmVhbV9pZCkKLSAgICAgICAgICAgIHN0cmVhbSA9IHNlbGYuX3N0cmVhbXNb
c3RyZWFtX2lkXQotICAgICAgICBzdHJlYW0ud3JpdGUoZGF0YSwgZW5kX3N0cmVhbT1lbmRfc3Ry
ZWFtKQotCi0gICAgIyBQcml2YXRlCi0KLSAgICBkZWYgX2FscG5faGFuZGxlcihzZWxmLCBhbHBu
X3Byb3RvY29sOiBzdHIpIC0+IE5vbmU6Ci0gICAgICAgICIiIgotICAgICAgICBDYWxsYmFjayB3
aGljaCBpcyBpbnZva2VkIGJ5IHRoZSBUTFMgZW5naW5lIHdoZW4gQUxQTiBuZWdvdGlhdGlvbiBj
b21wbGV0ZXMuCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLl9ldmVudHMuYXBwZW5kKGV2ZW50
cy5Qcm90b2NvbE5lZ290aWF0ZWQoYWxwbl9wcm90b2NvbD1hbHBuX3Byb3RvY29sKSkKLQotICAg
IGRlZiBfYXNzZXJ0X3N0cmVhbV9jYW5fcmVjZWl2ZShzZWxmLCBmcmFtZV90eXBlOiBpbnQsIHN0
cmVhbV9pZDogaW50KSAtPiBOb25lOgotICAgICAgICAiIiIKLSAgICAgICAgQ2hlY2sgdGhlIHNw
ZWNpZmllZCBzdHJlYW0gY2FuIHJlY2VpdmUgZGF0YSBvciByYWlzZXMgYSBRdWljQ29ubmVjdGlv
bkVycm9yLgotICAgICAgICAiIiIKLSAgICAgICAgaWYgbm90IHNlbGYuX3N0cmVhbV9jYW5fcmVj
ZWl2ZShzdHJlYW1faWQpOgotICAgICAgICAgICAgcmFpc2UgUXVpY0Nvbm5lY3Rpb25FcnJvcigK
LSAgICAgICAgICAgICAgICBlcnJvcl9jb2RlPVF1aWNFcnJvckNvZGUuU1RSRUFNX1NUQVRFX0VS
Uk9SLAotICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9ZnJhbWVfdHlwZSwKLSAgICAgICAgICAg
ICAgICByZWFzb25fcGhyYXNlPSJTdHJlYW0gaXMgc2VuZC1vbmx5IiwKLSAgICAgICAgICAgICkK
LQotICAgIGRlZiBfYXNzZXJ0X3N0cmVhbV9jYW5fc2VuZChzZWxmLCBmcmFtZV90eXBlOiBpbnQs
IHN0cmVhbV9pZDogaW50KSAtPiBOb25lOgotICAgICAgICAiIiIKLSAgICAgICAgQ2hlY2sgdGhl
IHNwZWNpZmllZCBzdHJlYW0gY2FuIHNlbmQgZGF0YSBvciByYWlzZXMgYSBRdWljQ29ubmVjdGlv
bkVycm9yLgotICAgICAgICAiIiIKLSAgICAgICAgaWYgbm90IHNlbGYuX3N0cmVhbV9jYW5fc2Vu
ZChzdHJlYW1faWQpOgotICAgICAgICAgICAgcmFpc2UgUXVpY0Nvbm5lY3Rpb25FcnJvcigKLSAg
ICAgICAgICAgICAgICBlcnJvcl9jb2RlPVF1aWNFcnJvckNvZGUuU1RSRUFNX1NUQVRFX0VSUk9S
LAotICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9ZnJhbWVfdHlwZSwKLSAgICAgICAgICAgICAg
ICByZWFzb25fcGhyYXNlPSJTdHJlYW0gaXMgcmVjZWl2ZS1vbmx5IiwKLSAgICAgICAgICAgICkK
LQotICAgIGRlZiBfY2xvc2VfYmVnaW4oc2VsZiwgaXNfaW5pdGlhdG9yOiBib29sLCBub3c6IGZs
b2F0KSAtPiBOb25lOgotICAgICAgICAiIiIKLSAgICAgICAgQmVnaW4gdGhlIGNsb3NlIHByb2Nl
ZHVyZS4KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuX2Nsb3NlX2F0ID0gbm93ICsgMyAqIHNl
bGYuX2xvc3MuZ2V0X3Byb2JlX3RpbWVvdXQoKQotICAgICAgICBpZiBpc19pbml0aWF0b3I6Ci0g
ICAgICAgICAgICBzZWxmLl9zZXRfc3RhdGUoUXVpY0Nvbm5lY3Rpb25TdGF0ZS5DTE9TSU5HKQot
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5fc2V0X3N0YXRlKFF1aWNDb25uZWN0aW9u
U3RhdGUuRFJBSU5JTkcpCi0KLSAgICBkZWYgX2Nsb3NlX2VuZChzZWxmKSAtPiBOb25lOgotICAg
ICAgICAiIiIKLSAgICAgICAgRW5kIHRoZSBjbG9zZSBwcm9jZWR1cmUuCi0gICAgICAgICIiIgot
ICAgICAgICBzZWxmLl9jbG9zZV9hdCA9IE5vbmUKLSAgICAgICAgZm9yIGVwb2NoIGluIHNlbGYu
X3NwYWNlcy5rZXlzKCk6Ci0gICAgICAgICAgICBzZWxmLl9kaXNjYXJkX2Vwb2NoKGVwb2NoKQot
ICAgICAgICBzZWxmLl9ldmVudHMuYXBwZW5kKHNlbGYuX2Nsb3NlX2V2ZW50KQotICAgICAgICBz
ZWxmLl9zZXRfc3RhdGUoUXVpY0Nvbm5lY3Rpb25TdGF0ZS5URVJNSU5BVEVEKQotCi0gICAgICAg
ICMgc2lnbmFsIGxvZyBlbmQKLSAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5v
bmU6Ci0gICAgICAgICAgICBzZWxmLl9jb25maWd1cmF0aW9uLnF1aWNfbG9nZ2VyLmVuZF90cmFj
ZShzZWxmLl9xdWljX2xvZ2dlcikKLSAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyID0gTm9u
ZQotCi0gICAgZGVmIF9jb25uZWN0KHNlbGYsIG5vdzogZmxvYXQpIC0+IE5vbmU6Ci0gICAgICAg
ICIiIgotICAgICAgICBTdGFydCB0aGUgY2xpZW50IGhhbmRzaGFrZS4KLSAgICAgICAgIiIiCi0g
ICAgICAgIGFzc2VydCBzZWxmLl9pc19jbGllbnQKLQotICAgICAgICBzZWxmLl9jbG9zZV9hdCA9
IG5vdyArIHNlbGYuX2NvbmZpZ3VyYXRpb24uaWRsZV90aW1lb3V0Ci0gICAgICAgIHNlbGYuX2lu
aXRpYWxpemUoc2VsZi5fcGVlcl9jaWQpCi0KLSAgICAgICAgc2VsZi50bHMuaGFuZGxlX21lc3Nh
Z2UoYiIiLCBzZWxmLl9jcnlwdG9fYnVmZmVycykKLSAgICAgICAgc2VsZi5fcHVzaF9jcnlwdG9f
ZGF0YSgpCi0KLSAgICBkZWYgX2NyZWF0ZV9zdHJlYW0oc2VsZiwgc3RyZWFtX2lkOiBpbnQpIC0+
IFF1aWNTdHJlYW06Ci0gICAgICAgICIiIgotICAgICAgICBDcmVhdGUgYSBRVUlDIHN0cmVhbSBp
biBvcmRlciB0byBzZW5kIGRhdGEgdG8gdGhlIHBlZXIuCi0gICAgICAgICIiIgotICAgICAgICAj
IGRldGVybWluZSBsaW1pdHMKLSAgICAgICAgaWYgc3RyZWFtX2lzX3VuaWRpcmVjdGlvbmFsKHN0
cmVhbV9pZCk6Ci0gICAgICAgICAgICBtYXhfc3RyZWFtX2RhdGFfbG9jYWwgPSAwCi0gICAgICAg
ICAgICBtYXhfc3RyZWFtX2RhdGFfcmVtb3RlID0gc2VsZi5fcmVtb3RlX21heF9zdHJlYW1fZGF0
YV91bmkKLSAgICAgICAgICAgIG1heF9zdHJlYW1zID0gc2VsZi5fcmVtb3RlX21heF9zdHJlYW1z
X3VuaQotICAgICAgICAgICAgc3RyZWFtc19ibG9ja2VkID0gc2VsZi5fc3RyZWFtc19ibG9ja2Vk
X3VuaQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbWF4X3N0cmVhbV9kYXRhX2xvY2FsID0g
c2VsZi5fbG9jYWxfbWF4X3N0cmVhbV9kYXRhX2JpZGlfbG9jYWwKLSAgICAgICAgICAgIG1heF9z
dHJlYW1fZGF0YV9yZW1vdGUgPSBzZWxmLl9yZW1vdGVfbWF4X3N0cmVhbV9kYXRhX2JpZGlfcmVt
b3RlCi0gICAgICAgICAgICBtYXhfc3RyZWFtcyA9IHNlbGYuX3JlbW90ZV9tYXhfc3RyZWFtc19i
aWRpCi0gICAgICAgICAgICBzdHJlYW1zX2Jsb2NrZWQgPSBzZWxmLl9zdHJlYW1zX2Jsb2NrZWRf
YmlkaQotCi0gICAgICAgICMgY3JlYXRlIHN0cmVhbQotICAgICAgICBzdHJlYW0gPSBzZWxmLl9z
dHJlYW1zW3N0cmVhbV9pZF0gPSBRdWljU3RyZWFtKAotICAgICAgICAgICAgc3RyZWFtX2lkPXN0
cmVhbV9pZCwKLSAgICAgICAgICAgIG1heF9zdHJlYW1fZGF0YV9sb2NhbD1tYXhfc3RyZWFtX2Rh
dGFfbG9jYWwsCi0gICAgICAgICAgICBtYXhfc3RyZWFtX2RhdGFfcmVtb3RlPW1heF9zdHJlYW1f
ZGF0YV9yZW1vdGUsCi0gICAgICAgICkKLQotICAgICAgICAjIG1hcmsgc3RyZWFtIGFzIGJsb2Nr
ZWQgaWYgbmVlZGVkCi0gICAgICAgIGlmIHN0cmVhbV9pZCAvLyA0ID49IG1heF9zdHJlYW1zOgot
ICAgICAgICAgICAgc3RyZWFtLmlzX2Jsb2NrZWQgPSBUcnVlCi0gICAgICAgICAgICBzdHJlYW1z
X2Jsb2NrZWQuYXBwZW5kKHN0cmVhbSkKLSAgICAgICAgICAgIHNlbGYuX3N0cmVhbXNfYmxvY2tl
ZF9wZW5kaW5nID0gVHJ1ZQotCi0gICAgICAgIHJldHVybiBzdHJlYW0KLQotICAgIGRlZiBfZGlz
Y2FyZF9lcG9jaChzZWxmLCBlcG9jaDogdGxzLkVwb2NoKSAtPiBOb25lOgotICAgICAgICBzZWxm
Ll9sb2dnZXIuZGVidWcoIkRpc2NhcmRpbmcgZXBvY2ggJXMiLCBlcG9jaCkKLSAgICAgICAgc2Vs
Zi5fY3J5cHRvc1tlcG9jaF0udGVhcmRvd24oKQotICAgICAgICBzZWxmLl9sb3NzLmRpc2NhcmRf
c3BhY2Uoc2VsZi5fc3BhY2VzW2Vwb2NoXSkKLSAgICAgICAgc2VsZi5fc3BhY2VzW2Vwb2NoXS5k
aXNjYXJkZWQgPSBUcnVlCi0KLSAgICBkZWYgX2ZpbmRfbmV0d29ya19wYXRoKHNlbGYsIGFkZHI6
IE5ldHdvcmtBZGRyZXNzKSAtPiBRdWljTmV0d29ya1BhdGg6Ci0gICAgICAgICMgY2hlY2sgZXhp
c3RpbmcgbmV0d29yayBwYXRocwotICAgICAgICBmb3IgaWR4LCBuZXR3b3JrX3BhdGggaW4gZW51
bWVyYXRlKHNlbGYuX25ldHdvcmtfcGF0aHMpOgotICAgICAgICAgICAgaWYgbmV0d29ya19wYXRo
LmFkZHIgPT0gYWRkcjoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV0d29ya19wYXRoCi0KLSAg
ICAgICAgIyBuZXcgbmV0d29yayBwYXRoCi0gICAgICAgIG5ldHdvcmtfcGF0aCA9IFF1aWNOZXR3
b3JrUGF0aChhZGRyKQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoIk5ldHdvcmsgcGF0aCAl
cyBkaXNjb3ZlcmVkIiwgbmV0d29ya19wYXRoLmFkZHIpCi0gICAgICAgIHJldHVybiBuZXR3b3Jr
X3BhdGgKLQotICAgIGRlZiBfZ2V0X29yX2NyZWF0ZV9zdHJlYW0oc2VsZiwgZnJhbWVfdHlwZTog
aW50LCBzdHJlYW1faWQ6IGludCkgLT4gUXVpY1N0cmVhbToKLSAgICAgICAgIiIiCi0gICAgICAg
IEdldCBvciBjcmVhdGUgYSBzdHJlYW0gaW4gcmVzcG9uc2UgdG8gYSByZWNlaXZlZCBmcmFtZS4K
LSAgICAgICAgIiIiCi0gICAgICAgIHN0cmVhbSA9IHNlbGYuX3N0cmVhbXMuZ2V0KHN0cmVhbV9p
ZCwgTm9uZSkKLSAgICAgICAgaWYgc3RyZWFtIGlzIE5vbmU6Ci0gICAgICAgICAgICAjIGNoZWNr
IGluaXRpYXRvcgotICAgICAgICAgICAgaWYgc3RyZWFtX2lzX2NsaWVudF9pbml0aWF0ZWQoc3Ry
ZWFtX2lkKSA9PSBzZWxmLl9pc19jbGllbnQ6Ci0gICAgICAgICAgICAgICAgcmFpc2UgUXVpY0Nv
bm5lY3Rpb25FcnJvcigKLSAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29kZT1RdWljRXJyb3JD
b2RlLlNUUkVBTV9TVEFURV9FUlJPUiwKLSAgICAgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1m
cmFtZV90eXBlLAotICAgICAgICAgICAgICAgICAgICByZWFzb25fcGhyYXNlPSJXcm9uZyBzdHJl
YW0gaW5pdGlhdG9yIiwKLSAgICAgICAgICAgICAgICApCi0KLSAgICAgICAgICAgICMgZGV0ZXJt
aW5lIGxpbWl0cwotICAgICAgICAgICAgaWYgc3RyZWFtX2lzX3VuaWRpcmVjdGlvbmFsKHN0cmVh
bV9pZCk6Ci0gICAgICAgICAgICAgICAgbWF4X3N0cmVhbV9kYXRhX2xvY2FsID0gc2VsZi5fbG9j
YWxfbWF4X3N0cmVhbV9kYXRhX3VuaQotICAgICAgICAgICAgICAgIG1heF9zdHJlYW1fZGF0YV9y
ZW1vdGUgPSAwCi0gICAgICAgICAgICAgICAgbWF4X3N0cmVhbXMgPSBzZWxmLl9sb2NhbF9tYXhf
c3RyZWFtc191bmkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbWF4X3N0cmVh
bV9kYXRhX2xvY2FsID0gc2VsZi5fbG9jYWxfbWF4X3N0cmVhbV9kYXRhX2JpZGlfcmVtb3RlCi0g
ICAgICAgICAgICAgICAgbWF4X3N0cmVhbV9kYXRhX3JlbW90ZSA9IHNlbGYuX3JlbW90ZV9tYXhf
c3RyZWFtX2RhdGFfYmlkaV9sb2NhbAotICAgICAgICAgICAgICAgIG1heF9zdHJlYW1zID0gc2Vs
Zi5fbG9jYWxfbWF4X3N0cmVhbXNfYmlkaQotCi0gICAgICAgICAgICAjIGNoZWNrIG1heCBzdHJl
YW1zCi0gICAgICAgICAgICBpZiBzdHJlYW1faWQgLy8gNCA+PSBtYXhfc3RyZWFtczoKLSAgICAg
ICAgICAgICAgICByYWlzZSBRdWljQ29ubmVjdGlvbkVycm9yKAotICAgICAgICAgICAgICAgICAg
ICBlcnJvcl9jb2RlPVF1aWNFcnJvckNvZGUuU1RSRUFNX0xJTUlUX0VSUk9SLAotICAgICAgICAg
ICAgICAgICAgICBmcmFtZV90eXBlPWZyYW1lX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgIHJl
YXNvbl9waHJhc2U9IlRvbyBtYW55IHN0cmVhbXMgb3BlbiIsCi0gICAgICAgICAgICAgICAgKQot
Ci0gICAgICAgICAgICAjIGNyZWF0ZSBzdHJlYW0KLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5k
ZWJ1ZygiU3RyZWFtICVkIGNyZWF0ZWQgYnkgcGVlciIgJSBzdHJlYW1faWQpCi0gICAgICAgICAg
ICBzdHJlYW0gPSBzZWxmLl9zdHJlYW1zW3N0cmVhbV9pZF0gPSBRdWljU3RyZWFtKAotICAgICAg
ICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCi0gICAgICAgICAgICAgICAgbWF4X3N0cmVh
bV9kYXRhX2xvY2FsPW1heF9zdHJlYW1fZGF0YV9sb2NhbCwKLSAgICAgICAgICAgICAgICBtYXhf
c3RyZWFtX2RhdGFfcmVtb3RlPW1heF9zdHJlYW1fZGF0YV9yZW1vdGUsCi0gICAgICAgICAgICAp
Ci0gICAgICAgIHJldHVybiBzdHJlYW0KLQotICAgIGRlZiBfaGFuZGxlX3Nlc3Npb25fdGlja2V0
KHNlbGYsIHNlc3Npb25fdGlja2V0OiB0bHMuU2Vzc2lvblRpY2tldCkgLT4gTm9uZToKLSAgICAg
ICAgaWYgKAotICAgICAgICAgICAgc2Vzc2lvbl90aWNrZXQubWF4X2Vhcmx5X2RhdGFfc2l6ZSBp
cyBub3QgTm9uZQotICAgICAgICAgICAgYW5kIHNlc3Npb25fdGlja2V0Lm1heF9lYXJseV9kYXRh
X3NpemUgIT0gTUFYX0VBUkxZX0RBVEEKLSAgICAgICAgKToKLSAgICAgICAgICAgIHJhaXNlIFF1
aWNDb25uZWN0aW9uRXJyb3IoCi0gICAgICAgICAgICAgICAgZXJyb3JfY29kZT1RdWljRXJyb3JD
b2RlLlBST1RPQ09MX1ZJT0xBVElPTiwKLSAgICAgICAgICAgICAgICBmcmFtZV90eXBlPVF1aWNG
cmFtZVR5cGUuQ1JZUFRPLAotICAgICAgICAgICAgICAgIHJlYXNvbl9waHJhc2U9IkludmFsaWQg
bWF4X2Vhcmx5X2RhdGEgdmFsdWUgJXMiCi0gICAgICAgICAgICAgICAgJSBzZXNzaW9uX3RpY2tl
dC5tYXhfZWFybHlfZGF0YV9zaXplLAotICAgICAgICAgICAgKQotICAgICAgICBzZWxmLl9zZXNz
aW9uX3RpY2tldF9oYW5kbGVyKHNlc3Npb25fdGlja2V0KQotCi0gICAgZGVmIF9pbml0aWFsaXpl
KHNlbGYsIHBlZXJfY2lkOiBieXRlcykgLT4gTm9uZToKLSAgICAgICAgIyBUTFMKLSAgICAgICAg
c2VsZi50bHMgPSB0bHMuQ29udGV4dCgKLSAgICAgICAgICAgIGFscG5fcHJvdG9jb2xzPXNlbGYu
X2NvbmZpZ3VyYXRpb24uYWxwbl9wcm90b2NvbHMsCi0gICAgICAgICAgICBjYWRhdGE9c2VsZi5f
Y29uZmlndXJhdGlvbi5jYWRhdGEsCi0gICAgICAgICAgICBjYWZpbGU9c2VsZi5fY29uZmlndXJh
dGlvbi5jYWZpbGUsCi0gICAgICAgICAgICBjYXBhdGg9c2VsZi5fY29uZmlndXJhdGlvbi5jYXBh
dGgsCi0gICAgICAgICAgICBpc19jbGllbnQ9c2VsZi5faXNfY2xpZW50LAotICAgICAgICAgICAg
bG9nZ2VyPXNlbGYuX2xvZ2dlciwKLSAgICAgICAgICAgIG1heF9lYXJseV9kYXRhPU5vbmUgaWYg
c2VsZi5faXNfY2xpZW50IGVsc2UgTUFYX0VBUkxZX0RBVEEsCi0gICAgICAgICAgICBzZXJ2ZXJf
bmFtZT1zZWxmLl9jb25maWd1cmF0aW9uLnNlcnZlcl9uYW1lLAotICAgICAgICAgICAgdmVyaWZ5
X21vZGU9c2VsZi5fY29uZmlndXJhdGlvbi52ZXJpZnlfbW9kZSwKLSAgICAgICAgKQotICAgICAg
ICBzZWxmLnRscy5jZXJ0aWZpY2F0ZSA9IHNlbGYuX2NvbmZpZ3VyYXRpb24uY2VydGlmaWNhdGUK
LSAgICAgICAgc2VsZi50bHMuY2VydGlmaWNhdGVfY2hhaW4gPSBzZWxmLl9jb25maWd1cmF0aW9u
LmNlcnRpZmljYXRlX2NoYWluCi0gICAgICAgIHNlbGYudGxzLmNlcnRpZmljYXRlX3ByaXZhdGVf
a2V5ID0gc2VsZi5fY29uZmlndXJhdGlvbi5wcml2YXRlX2tleQotICAgICAgICBzZWxmLnRscy5o
YW5kc2hha2VfZXh0ZW5zaW9ucyA9IFsKLSAgICAgICAgICAgICgKLSAgICAgICAgICAgICAgICB0
bHMuRXh0ZW5zaW9uVHlwZS5RVUlDX1RSQU5TUE9SVF9QQVJBTUVURVJTLAotICAgICAgICAgICAg
ICAgIHNlbGYuX3NlcmlhbGl6ZV90cmFuc3BvcnRfcGFyYW1ldGVycygpLAotICAgICAgICAgICAg
KQotICAgICAgICBdCi0KLSAgICAgICAgIyBUTFMgc2Vzc2lvbiByZXN1bXB0aW9uCi0gICAgICAg
IHNlc3Npb25fdGlja2V0ID0gc2VsZi5fY29uZmlndXJhdGlvbi5zZXNzaW9uX3RpY2tldAotICAg
ICAgICBpZiAoCi0gICAgICAgICAgICBzZWxmLl9pc19jbGllbnQKLSAgICAgICAgICAgIGFuZCBz
ZXNzaW9uX3RpY2tldCBpcyBub3QgTm9uZQotICAgICAgICAgICAgYW5kIHNlc3Npb25fdGlja2V0
LmlzX3ZhbGlkCi0gICAgICAgICAgICBhbmQgc2Vzc2lvbl90aWNrZXQuc2VydmVyX25hbWUgPT0g
c2VsZi5fY29uZmlndXJhdGlvbi5zZXJ2ZXJfbmFtZQotICAgICAgICApOgotICAgICAgICAgICAg
c2VsZi50bHMuc2Vzc2lvbl90aWNrZXQgPSBzZWxmLl9jb25maWd1cmF0aW9uLnNlc3Npb25fdGlj
a2V0Ci0KLSAgICAgICAgICAgICMgcGFyc2Ugc2F2ZWQgUVVJQyB0cmFuc3BvcnQgcGFyYW1ldGVy
cyAtIGZvciAwLVJUVAotICAgICAgICAgICAgaWYgc2Vzc2lvbl90aWNrZXQubWF4X2Vhcmx5X2Rh
dGFfc2l6ZSA9PSBNQVhfRUFSTFlfREFUQToKLSAgICAgICAgICAgICAgICBmb3IgZXh0X3R5cGUs
IGV4dF9kYXRhIGluIHNlc3Npb25fdGlja2V0Lm90aGVyX2V4dGVuc2lvbnM6Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIGV4dF90eXBlID09IHRscy5FeHRlbnNpb25UeXBlLlFVSUNfVFJBTlNQT1JU
X1BBUkFNRVRFUlM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYXJzZV90cmFuc3Bv
cnRfcGFyYW1ldGVycygKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRfZGF0YSwgZnJv
bV9zZXNzaW9uX3RpY2tldD1UcnVlCi0gICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAg
ICAgICAgICAgICAgICAgICBicmVhawotCi0gICAgICAgICMgVExTIGNhbGxiYWNrcwotICAgICAg
ICBzZWxmLnRscy5hbHBuX2NiID0gc2VsZi5fYWxwbl9oYW5kbGVyCi0gICAgICAgIGlmIHNlbGYu
X3Nlc3Npb25fdGlja2V0X2ZldGNoZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLnRs
cy5nZXRfc2Vzc2lvbl90aWNrZXRfY2IgPSBzZWxmLl9zZXNzaW9uX3RpY2tldF9mZXRjaGVyCi0g
ICAgICAgIGlmIHNlbGYuX3Nlc3Npb25fdGlja2V0X2hhbmRsZXIgaXMgbm90IE5vbmU6Ci0gICAg
ICAgICAgICBzZWxmLnRscy5uZXdfc2Vzc2lvbl90aWNrZXRfY2IgPSBzZWxmLl9oYW5kbGVfc2Vz
c2lvbl90aWNrZXQKLSAgICAgICAgc2VsZi50bHMudXBkYXRlX3RyYWZmaWNfa2V5X2NiID0gc2Vs
Zi5fdXBkYXRlX3RyYWZmaWNfa2V5Ci0KLSAgICAgICAgIyBwYWNrZXQgc3BhY2VzCi0gICAgICAg
IHNlbGYuX2NyeXB0b3MgPSB7Ci0gICAgICAgICAgICB0bHMuRXBvY2guSU5JVElBTDogQ3J5cHRv
UGFpcigpLAotICAgICAgICAgICAgdGxzLkVwb2NoLlpFUk9fUlRUOiBDcnlwdG9QYWlyKCksCi0g
ICAgICAgICAgICB0bHMuRXBvY2guSEFORFNIQUtFOiBDcnlwdG9QYWlyKCksCi0gICAgICAgICAg
ICB0bHMuRXBvY2guT05FX1JUVDogQ3J5cHRvUGFpcigpLAotICAgICAgICB9Ci0gICAgICAgIHNl
bGYuX2NyeXB0b19idWZmZXJzID0gewotICAgICAgICAgICAgdGxzLkVwb2NoLklOSVRJQUw6IEJ1
ZmZlcihjYXBhY2l0eT1DUllQVE9fQlVGRkVSX1NJWkUpLAotICAgICAgICAgICAgdGxzLkVwb2No
LkhBTkRTSEFLRTogQnVmZmVyKGNhcGFjaXR5PUNSWVBUT19CVUZGRVJfU0laRSksCi0gICAgICAg
ICAgICB0bHMuRXBvY2guT05FX1JUVDogQnVmZmVyKGNhcGFjaXR5PUNSWVBUT19CVUZGRVJfU0la
RSksCi0gICAgICAgIH0KLSAgICAgICAgc2VsZi5fY3J5cHRvX3N0cmVhbXMgPSB7Ci0gICAgICAg
ICAgICB0bHMuRXBvY2guSU5JVElBTDogUXVpY1N0cmVhbSgpLAotICAgICAgICAgICAgdGxzLkVw
b2NoLkhBTkRTSEFLRTogUXVpY1N0cmVhbSgpLAotICAgICAgICAgICAgdGxzLkVwb2NoLk9ORV9S
VFQ6IFF1aWNTdHJlYW0oKSwKLSAgICAgICAgfQotICAgICAgICBzZWxmLl9zcGFjZXMgPSB7Ci0g
ICAgICAgICAgICB0bHMuRXBvY2guSU5JVElBTDogUXVpY1BhY2tldFNwYWNlKCksCi0gICAgICAg
ICAgICB0bHMuRXBvY2guSEFORFNIQUtFOiBRdWljUGFja2V0U3BhY2UoKSwKLSAgICAgICAgICAg
IHRscy5FcG9jaC5PTkVfUlRUOiBRdWljUGFja2V0U3BhY2UoKSwKLSAgICAgICAgfQotCi0gICAg
ICAgIHNlbGYuX2NyeXB0b3NbdGxzLkVwb2NoLklOSVRJQUxdLnNldHVwX2luaXRpYWwoCi0gICAg
ICAgICAgICBjaWQ9cGVlcl9jaWQsIGlzX2NsaWVudD1zZWxmLl9pc19jbGllbnQsIHZlcnNpb249
c2VsZi5fdmVyc2lvbgotICAgICAgICApCi0KLSAgICAgICAgc2VsZi5fbG9zcy5zcGFjZXMgPSBs
aXN0KHNlbGYuX3NwYWNlcy52YWx1ZXMoKSkKLSAgICAgICAgc2VsZi5fcGFja2V0X251bWJlciA9
IDAKLQotICAgIGRlZiBfaGFuZGxlX2Fja19mcmFtZSgKLSAgICAgICAgc2VsZiwgY29udGV4dDog
UXVpY1JlY2VpdmVDb250ZXh0LCBmcmFtZV90eXBlOiBpbnQsIGJ1ZjogQnVmZmVyCi0gICAgKSAt
PiBOb25lOgotICAgICAgICAiIiIKLSAgICAgICAgSGFuZGxlIGFuIEFDSyBmcmFtZS4KLSAgICAg
ICAgIiIiCi0gICAgICAgIGFja19yYW5nZXNldCwgYWNrX2RlbGF5X2VuY29kZWQgPSBwdWxsX2Fj
a19mcmFtZShidWYpCi0gICAgICAgIGlmIGZyYW1lX3R5cGUgPT0gUXVpY0ZyYW1lVHlwZS5BQ0tf
RUNOOgotICAgICAgICAgICAgYnVmLnB1bGxfdWludF92YXIoKQotICAgICAgICAgICAgYnVmLnB1
bGxfdWludF92YXIoKQotICAgICAgICAgICAgYnVmLnB1bGxfdWludF92YXIoKQotICAgICAgICBh
Y2tfZGVsYXkgPSAoYWNrX2RlbGF5X2VuY29kZWQgPDwgc2VsZi5fcmVtb3RlX2Fja19kZWxheV9l
eHBvbmVudCkgLyAxMDAwMDAwCi0KLSAgICAgICAgIyBsb2cgZnJhbWUKLSAgICAgICAgaWYgc2Vs
Zi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0LnF1aWNfbG9n
Z2VyX2ZyYW1lcy5hcHBlbmQoCi0gICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIuZW5j
b2RlX2Fja19mcmFtZShhY2tfcmFuZ2VzZXQsIGFja19kZWxheSkKLSAgICAgICAgICAgICkKLQot
ICAgICAgICBzZWxmLl9sb3NzLm9uX2Fja19yZWNlaXZlZCgKLSAgICAgICAgICAgIHNwYWNlPXNl
bGYuX3NwYWNlc1tjb250ZXh0LmVwb2NoXSwKLSAgICAgICAgICAgIGFja19yYW5nZXNldD1hY2tf
cmFuZ2VzZXQsCi0gICAgICAgICAgICBhY2tfZGVsYXk9YWNrX2RlbGF5LAotICAgICAgICAgICAg
bm93PWNvbnRleHQudGltZSwKLSAgICAgICAgKQotCi0gICAgZGVmIF9oYW5kbGVfY29ubmVjdGlv
bl9jbG9zZV9mcmFtZSgKLSAgICAgICAgc2VsZiwgY29udGV4dDogUXVpY1JlY2VpdmVDb250ZXh0
LCBmcmFtZV90eXBlOiBpbnQsIGJ1ZjogQnVmZmVyCi0gICAgKSAtPiBOb25lOgotICAgICAgICAi
IiIKLSAgICAgICAgSGFuZGxlIGEgQ09OTkVDVElPTl9DTE9TRSBmcmFtZS4KLSAgICAgICAgIiIi
Ci0gICAgICAgIGVycm9yX2NvZGUgPSBidWYucHVsbF91aW50X3ZhcigpCi0gICAgICAgIGlmIGZy
YW1lX3R5cGUgPT0gUXVpY0ZyYW1lVHlwZS5UUkFOU1BPUlRfQ0xPU0U6Ci0gICAgICAgICAgICBm
cmFtZV90eXBlID0gYnVmLnB1bGxfdWludF92YXIoKQotICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgZnJhbWVfdHlwZSA9IE5vbmUKLSAgICAgICAgcmVhc29uX2xlbmd0aCA9IGJ1Zi5wdWxsX3Vp
bnRfdmFyKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmVhc29uX3BocmFzZSA9IGJ1Zi5w
dWxsX2J5dGVzKHJlYXNvbl9sZW5ndGgpLmRlY29kZSgidXRmOCIpCi0gICAgICAgIGV4Y2VwdCBV
bmljb2RlRGVjb2RlRXJyb3I6Ci0gICAgICAgICAgICByZWFzb25fcGhyYXNlID0gIiIKLQotICAg
ICAgICAjIGxvZyBmcmFtZQotICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9u
ZToKLSAgICAgICAgICAgIGNvbnRleHQucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKLSAgICAg
ICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfY29ubmVjdGlvbl9jbG9zZV9mcmFt
ZSgKLSAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29kZT1lcnJvcl9jb2RlLAotICAgICAgICAg
ICAgICAgICAgICBmcmFtZV90eXBlPWZyYW1lX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgIHJl
YXNvbl9waHJhc2U9cmVhc29uX3BocmFzZSwKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAg
ICApCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oCi0gICAgICAgICAgICAiQ29ubmVjdGlv
biBjbG9zZSBjb2RlIDB4JVgsIHJlYXNvbiAlcyIsIGVycm9yX2NvZGUsIHJlYXNvbl9waHJhc2UK
LSAgICAgICAgKQotICAgICAgICBzZWxmLl9jbG9zZV9ldmVudCA9IGV2ZW50cy5Db25uZWN0aW9u
VGVybWluYXRlZCgKLSAgICAgICAgICAgIGVycm9yX2NvZGU9ZXJyb3JfY29kZSwgZnJhbWVfdHlw
ZT1mcmFtZV90eXBlLCByZWFzb25fcGhyYXNlPXJlYXNvbl9waHJhc2UKLSAgICAgICAgKQotICAg
ICAgICBzZWxmLl9jbG9zZV9iZWdpbihpc19pbml0aWF0b3I9RmFsc2UsIG5vdz1jb250ZXh0LnRp
bWUpCi0KLSAgICBkZWYgX2hhbmRsZV9jcnlwdG9fZnJhbWUoCi0gICAgICAgIHNlbGYsIGNvbnRl
eHQ6IFF1aWNSZWNlaXZlQ29udGV4dCwgZnJhbWVfdHlwZTogaW50LCBidWY6IEJ1ZmZlcgotICAg
ICkgLT4gTm9uZToKLSAgICAgICAgIiIiCi0gICAgICAgIEhhbmRsZSBhIENSWVBUTyBmcmFtZS4K
LSAgICAgICAgIiIiCi0gICAgICAgIG9mZnNldCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKLSAgICAg
ICAgbGVuZ3RoID0gYnVmLnB1bGxfdWludF92YXIoKQotICAgICAgICBpZiBvZmZzZXQgKyBsZW5n
dGggPiBVSU5UX1ZBUl9NQVg6Ci0gICAgICAgICAgICByYWlzZSBRdWljQ29ubmVjdGlvbkVycm9y
KAotICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5GUkFNRV9FTkNPRElO
R19FUlJPUiwKLSAgICAgICAgICAgICAgICBmcmFtZV90eXBlPWZyYW1lX3R5cGUsCi0gICAgICAg
ICAgICAgICAgcmVhc29uX3BocmFzZT0ib2Zmc2V0ICsgbGVuZ3RoIGNhbm5vdCBleGNlZWQgMl42
MiAtIDEiLAotICAgICAgICAgICAgKQotICAgICAgICBmcmFtZSA9IFF1aWNTdHJlYW1GcmFtZShv
ZmZzZXQ9b2Zmc2V0LCBkYXRhPWJ1Zi5wdWxsX2J5dGVzKGxlbmd0aCkpCi0KLSAgICAgICAgIyBs
b2cgZnJhbWUKLSAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6Ci0gICAg
ICAgICAgICBjb250ZXh0LnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCi0gICAgICAgICAgICAg
ICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX2NyeXB0b19mcmFtZShmcmFtZSkKLSAgICAgICAg
ICAgICkKLQotICAgICAgICBzdHJlYW0gPSBzZWxmLl9jcnlwdG9fc3RyZWFtc1tjb250ZXh0LmVw
b2NoXQotICAgICAgICBldmVudCA9IHN0cmVhbS5hZGRfZnJhbWUoZnJhbWUpCi0gICAgICAgIGlm
IGV2ZW50IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgIyBwYXNzIGRhdGEgdG8gVExTIGxheWVy
Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi50bHMuaGFuZGxlX21lc3Nh
Z2UoZXZlbnQuZGF0YSwgc2VsZi5fY3J5cHRvX2J1ZmZlcnMpCi0gICAgICAgICAgICAgICAgc2Vs
Zi5fcHVzaF9jcnlwdG9fZGF0YSgpCi0gICAgICAgICAgICBleGNlcHQgdGxzLkFsZXJ0IGFzIGV4
YzoKLSAgICAgICAgICAgICAgICByYWlzZSBRdWljQ29ubmVjdGlvbkVycm9yKAotICAgICAgICAg
ICAgICAgICAgICBlcnJvcl9jb2RlPVF1aWNFcnJvckNvZGUuQ1JZUFRPX0VSUk9SICsgaW50KGV4
Yy5kZXNjcmlwdGlvbiksCi0gICAgICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9ZnJhbWVfdHlw
ZSwKLSAgICAgICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT1zdHIoZXhjKSwKLSAgICAgICAg
ICAgICAgICApCi0KLSAgICAgICAgICAgICMgcGFyc2UgdHJhbnNwb3J0IHBhcmFtZXRlcnMKLSAg
ICAgICAgICAgIGlmICgKLSAgICAgICAgICAgICAgICBub3Qgc2VsZi5fcGFyYW1ldGVyc19yZWNl
aXZlZAotICAgICAgICAgICAgICAgIGFuZCBzZWxmLnRscy5yZWNlaXZlZF9leHRlbnNpb25zIGlz
IG5vdCBOb25lCi0gICAgICAgICAgICApOgotICAgICAgICAgICAgICAgIGZvciBleHRfdHlwZSwg
ZXh0X2RhdGEgaW4gc2VsZi50bHMucmVjZWl2ZWRfZXh0ZW5zaW9uczoKLSAgICAgICAgICAgICAg
ICAgICAgaWYgZXh0X3R5cGUgPT0gdGxzLkV4dGVuc2lvblR5cGUuUVVJQ19UUkFOU1BPUlRfUEFS
QU1FVEVSUzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BhcnNlX3RyYW5zcG9ydF9w
YXJhbWV0ZXJzKGV4dF9kYXRhKQotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGFyYW1l
dGVyc19yZWNlaXZlZCA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAg
ICAgICAgICAgICAgYXNzZXJ0ICgKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGFyYW1ldGVy
c19yZWNlaXZlZAotICAgICAgICAgICAgICAgICksICJObyBRVUlDIHRyYW5zcG9ydCBwYXJhbWV0
ZXJzIHJlY2VpdmVkIgotCi0gICAgICAgICAgICAjIHVwZGF0ZSBjdXJyZW50IGVwb2NoCi0gICAg
ICAgICAgICBpZiBub3Qgc2VsZi5faGFuZHNoYWtlX2NvbXBsZXRlIGFuZCBzZWxmLnRscy5zdGF0
ZSBpbiBbCi0gICAgICAgICAgICAgICAgdGxzLlN0YXRlLkNMSUVOVF9QT1NUX0hBTkRTSEFLRSwK
LSAgICAgICAgICAgICAgICB0bHMuU3RhdGUuU0VSVkVSX1BPU1RfSEFORFNIQUtFLAotICAgICAg
ICAgICAgXToKLSAgICAgICAgICAgICAgICBzZWxmLl9oYW5kc2hha2VfY29tcGxldGUgPSBUcnVl
Ci0KLSAgICAgICAgICAgICAgICAjIGZvciBzZXJ2ZXJzLCB0aGUgaGFuZHNoYWtlIGlzIG5vdyBj
b25maXJtZWQKLSAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5faXNfY2xpZW50OgotICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9kaXNjYXJkX2Vwb2NoKHRscy5FcG9jaC5IQU5EU0hBS0UpCi0g
ICAgICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRzaGFrZV9jb25maXJtZWQgPSBUcnVlCi0gICAg
ICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRzaGFrZV9kb25lX3BlbmRpbmcgPSBUcnVlCi0KLSAg
ICAgICAgICAgICAgICBzZWxmLl9sb3NzLmlzX2NsaWVudF93aXRob3V0XzFydHQgPSBGYWxzZQot
ICAgICAgICAgICAgICAgIHNlbGYuX3JlcGxlbmlzaF9jb25uZWN0aW9uX2lkcygpCi0gICAgICAg
ICAgICAgICAgc2VsZi5fZXZlbnRzLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAgICAgZXZlbnRz
LkhhbmRzaGFrZUNvbXBsZXRlZCgKLSAgICAgICAgICAgICAgICAgICAgICAgIGFscG5fcHJvdG9j
b2w9c2VsZi50bHMuYWxwbl9uZWdvdGlhdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgZWFy
bHlfZGF0YV9hY2NlcHRlZD1zZWxmLnRscy5lYXJseV9kYXRhX2FjY2VwdGVkLAotICAgICAgICAg
ICAgICAgICAgICAgICAgc2Vzc2lvbl9yZXN1bWVkPXNlbGYudGxzLnNlc3Npb25fcmVzdW1lZCwK
LSAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAg
ICBzZWxmLl91bmJsb2NrX3N0cmVhbXMoaXNfdW5pZGlyZWN0aW9uYWw9RmFsc2UpCi0gICAgICAg
ICAgICAgICAgc2VsZi5fdW5ibG9ja19zdHJlYW1zKGlzX3VuaWRpcmVjdGlvbmFsPVRydWUpCi0g
ICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oCi0gICAgICAgICAgICAgICAgICAgICJB
TFBOIG5lZ290aWF0ZWQgcHJvdG9jb2wgJXMiLCBzZWxmLnRscy5hbHBuX25lZ290aWF0ZWQKLSAg
ICAgICAgICAgICAgICApCi0KLSAgICBkZWYgX2hhbmRsZV9kYXRhX2Jsb2NrZWRfZnJhbWUoCi0g
ICAgICAgIHNlbGYsIGNvbnRleHQ6IFF1aWNSZWNlaXZlQ29udGV4dCwgZnJhbWVfdHlwZTogaW50
LCBidWY6IEJ1ZmZlcgotICAgICkgLT4gTm9uZToKLSAgICAgICAgIiIiCi0gICAgICAgIEhhbmRs
ZSBhIERBVEFfQkxPQ0tFRCBmcmFtZS4KLSAgICAgICAgIiIiCi0gICAgICAgIGxpbWl0ID0gYnVm
LnB1bGxfdWludF92YXIoKQotCi0gICAgICAgICMgbG9nIGZyYW1lCi0gICAgICAgIGlmIHNlbGYu
X3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgY29udGV4dC5xdWljX2xvZ2dl
cl9mcmFtZXMuYXBwZW5kKAotICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29k
ZV9kYXRhX2Jsb2NrZWRfZnJhbWUobGltaXQ9bGltaXQpCi0gICAgICAgICAgICApCi0KLSAgICBk
ZWYgX2hhbmRsZV9kYXRhZ3JhbV9mcmFtZSgKLSAgICAgICAgc2VsZiwgY29udGV4dDogUXVpY1Jl
Y2VpdmVDb250ZXh0LCBmcmFtZV90eXBlOiBpbnQsIGJ1ZjogQnVmZmVyCi0gICAgKSAtPiBOb25l
OgotICAgICAgICAiIiIKLSAgICAgICAgSGFuZGxlIGEgREFUQUdSQU0gZnJhbWUuCi0gICAgICAg
ICIiIgotICAgICAgICBzdGFydCA9IGJ1Zi50ZWxsKCkKLSAgICAgICAgaWYgZnJhbWVfdHlwZSA9
PSBRdWljRnJhbWVUeXBlLkRBVEFHUkFNX1dJVEhfTEVOR1RIOgotICAgICAgICAgICAgbGVuZ3Ro
ID0gYnVmLnB1bGxfdWludF92YXIoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbGVuZ3Ro
ID0gYnVmLmNhcGFjaXR5IC0gc3RhcnQKLSAgICAgICAgZGF0YSA9IGJ1Zi5wdWxsX2J5dGVzKGxl
bmd0aCkKLQotICAgICAgICAjIGxvZyBmcmFtZQotICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dl
ciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQucXVpY19sb2dnZXJfZnJhbWVzLmFw
cGVuZCgKLSAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfZGF0YWdyYW1f
ZnJhbWUobGVuZ3RoPWxlbmd0aCkKLSAgICAgICAgICAgICkKLQotICAgICAgICAjIGNoZWNrIGZy
YW1lIGlzIGFsbG93ZWQKLSAgICAgICAgaWYgKAotICAgICAgICAgICAgc2VsZi5fY29uZmlndXJh
dGlvbi5tYXhfZGF0YWdyYW1fZnJhbWVfc2l6ZSBpcyBOb25lCi0gICAgICAgICAgICBvciBidWYu
dGVsbCgpIC0gc3RhcnQgPj0gc2VsZi5fY29uZmlndXJhdGlvbi5tYXhfZGF0YWdyYW1fZnJhbWVf
c2l6ZQotICAgICAgICApOgotICAgICAgICAgICAgcmFpc2UgUXVpY0Nvbm5lY3Rpb25FcnJvcigK
LSAgICAgICAgICAgICAgICBlcnJvcl9jb2RlPVF1aWNFcnJvckNvZGUuUFJPVE9DT0xfVklPTEFU
SU9OLAotICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9ZnJhbWVfdHlwZSwKLSAgICAgICAgICAg
ICAgICByZWFzb25fcGhyYXNlPSJVbmV4cGVjdGVkIERBVEFHUkFNIGZyYW1lIiwKLSAgICAgICAg
ICAgICkKLQotICAgICAgICBzZWxmLl9ldmVudHMuYXBwZW5kKGV2ZW50cy5EYXRhZ3JhbUZyYW1l
UmVjZWl2ZWQoZGF0YT1kYXRhKSkKLQotICAgIGRlZiBfaGFuZGxlX2hhbmRzaGFrZV9kb25lX2Zy
YW1lKAotICAgICAgICBzZWxmLCBjb250ZXh0OiBRdWljUmVjZWl2ZUNvbnRleHQsIGZyYW1lX3R5
cGU6IGludCwgYnVmOiBCdWZmZXIKLSAgICApIC0+IE5vbmU6Ci0gICAgICAgICIiIgotICAgICAg
ICBIYW5kbGUgYSBIQU5EU0hBS0VfRE9ORSBmcmFtZS4KLSAgICAgICAgIiIiCi0gICAgICAgICMg
bG9nIGZyYW1lCi0gICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgotICAg
ICAgICAgICAgY29udGV4dC5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAotICAgICAgICAgICAg
ICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9oYW5kc2hha2VfZG9uZV9mcmFtZSgpCi0gICAg
ICAgICAgICApCi0KLSAgICAgICAgaWYgbm90IHNlbGYuX2lzX2NsaWVudDoKLSAgICAgICAgICAg
IHJhaXNlIFF1aWNDb25uZWN0aW9uRXJyb3IoCi0gICAgICAgICAgICAgICAgZXJyb3JfY29kZT1R
dWljRXJyb3JDb2RlLlBST1RPQ09MX1ZJT0xBVElPTiwKLSAgICAgICAgICAgICAgICBmcmFtZV90
eXBlPWZyYW1lX3R5cGUsCi0gICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT0iQ2xpZW50cyBt
dXN0IG5vdCBzZW5kIEhBTkRTSEFLRV9ET05FIGZyYW1lcyIsCi0gICAgICAgICAgICApCi0KLSAg
ICAgICAgIyDCoGZvciBjbGllbnRzLCB0aGUgaGFuZHNoYWtlIGlzIG5vdyBjb25maXJtZWQKLSAg
ICAgICAgaWYgbm90IHNlbGYuX2hhbmRzaGFrZV9jb25maXJtZWQ6Ci0gICAgICAgICAgICBzZWxm
Ll9kaXNjYXJkX2Vwb2NoKHRscy5FcG9jaC5IQU5EU0hBS0UpCi0gICAgICAgICAgICBzZWxmLl9o
YW5kc2hha2VfY29uZmlybWVkID0gVHJ1ZQotCi0gICAgZGVmIF9oYW5kbGVfbWF4X2RhdGFfZnJh
bWUoCi0gICAgICAgIHNlbGYsIGNvbnRleHQ6IFF1aWNSZWNlaXZlQ29udGV4dCwgZnJhbWVfdHlw
ZTogaW50LCBidWY6IEJ1ZmZlcgotICAgICkgLT4gTm9uZToKLSAgICAgICAgIiIiCi0gICAgICAg
IEhhbmRsZSBhIE1BWF9EQVRBIGZyYW1lLgotCi0gICAgICAgIFRoaXMgYWRqdXN0cyB0aGUgdG90
YWwgYW1vdW50IG9mIHdlIGNhbiBzZW5kIHRvIHRoZSBwZWVyLgotICAgICAgICAiIiIKLSAgICAg
ICAgbWF4X2RhdGEgPSBidWYucHVsbF91aW50X3ZhcigpCi0KLSAgICAgICAgIyBsb2cgZnJhbWUK
LSAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBj
b250ZXh0LnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCi0gICAgICAgICAgICAgICAgc2VsZi5f
cXVpY19sb2dnZXIuZW5jb2RlX21heF9kYXRhX2ZyYW1lKG1heGltdW09bWF4X2RhdGEpCi0gICAg
ICAgICAgICApCi0KLSAgICAgICAgaWYgbWF4X2RhdGEgPiBzZWxmLl9yZW1vdGVfbWF4X2RhdGE6
Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoIlJlbW90ZSBtYXhfZGF0YSByYWlzZWQg
dG8gJWQiLCBtYXhfZGF0YSkKLSAgICAgICAgICAgIHNlbGYuX3JlbW90ZV9tYXhfZGF0YSA9IG1h
eF9kYXRhCi0KLSAgICBkZWYgX2hhbmRsZV9tYXhfc3RyZWFtX2RhdGFfZnJhbWUoCi0gICAgICAg
IHNlbGYsIGNvbnRleHQ6IFF1aWNSZWNlaXZlQ29udGV4dCwgZnJhbWVfdHlwZTogaW50LCBidWY6
IEJ1ZmZlcgotICAgICkgLT4gTm9uZToKLSAgICAgICAgIiIiCi0gICAgICAgIEhhbmRsZSBhIE1B
WF9TVFJFQU1fREFUQSBmcmFtZS4KLQotICAgICAgICBUaGlzIGFkanVzdHMgdGhlIGFtb3VudCBv
ZiBkYXRhIHdlIGNhbiBzZW5kIG9uIGEgc3BlY2lmaWMgc3RyZWFtLgotICAgICAgICAiIiIKLSAg
ICAgICAgc3RyZWFtX2lkID0gYnVmLnB1bGxfdWludF92YXIoKQotICAgICAgICBtYXhfc3RyZWFt
X2RhdGEgPSBidWYucHVsbF91aW50X3ZhcigpCi0KLSAgICAgICAgIyBsb2cgZnJhbWUKLSAgICAg
ICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0
LnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCi0gICAgICAgICAgICAgICAgc2VsZi5fcXVpY19s
b2dnZXIuZW5jb2RlX21heF9zdHJlYW1fZGF0YV9mcmFtZSgKLSAgICAgICAgICAgICAgICAgICAg
bWF4aW11bT1tYXhfc3RyZWFtX2RhdGEsIHN0cmVhbV9pZD1zdHJlYW1faWQKLSAgICAgICAgICAg
ICAgICApCi0gICAgICAgICAgICApCi0KLSAgICAgICAgIyBjaGVjayBzdHJlYW0gZGlyZWN0aW9u
Ci0gICAgICAgIHNlbGYuX2Fzc2VydF9zdHJlYW1fY2FuX3NlbmQoZnJhbWVfdHlwZSwgc3RyZWFt
X2lkKQotCi0gICAgICAgIHN0cmVhbSA9IHNlbGYuX2dldF9vcl9jcmVhdGVfc3RyZWFtKGZyYW1l
X3R5cGUsIHN0cmVhbV9pZCkKLSAgICAgICAgaWYgbWF4X3N0cmVhbV9kYXRhID4gc3RyZWFtLm1h
eF9zdHJlYW1fZGF0YV9yZW1vdGU6Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0g
ICAgICAgICAgICAgICAgIlN0cmVhbSAlZCByZW1vdGUgbWF4X3N0cmVhbV9kYXRhIHJhaXNlZCB0
byAlZCIsCi0gICAgICAgICAgICAgICAgc3RyZWFtX2lkLAotICAgICAgICAgICAgICAgIG1heF9z
dHJlYW1fZGF0YSwKLSAgICAgICAgICAgICkKLSAgICAgICAgICAgIHN0cmVhbS5tYXhfc3RyZWFt
X2RhdGFfcmVtb3RlID0gbWF4X3N0cmVhbV9kYXRhCi0KLSAgICBkZWYgX2hhbmRsZV9tYXhfc3Ry
ZWFtc19iaWRpX2ZyYW1lKAotICAgICAgICBzZWxmLCBjb250ZXh0OiBRdWljUmVjZWl2ZUNvbnRl
eHQsIGZyYW1lX3R5cGU6IGludCwgYnVmOiBCdWZmZXIKLSAgICApIC0+IE5vbmU6Ci0gICAgICAg
ICIiIgotICAgICAgICBIYW5kbGUgYSBNQVhfU1RSRUFNU19CSURJIGZyYW1lLgotCi0gICAgICAg
IFRoaXMgcmFpc2VzIG51bWJlciBvZiBiaWRpcmVjdGlvbmFsIHN0cmVhbXMgd2UgY2FuIGluaXRp
YXRlIHRvIHRoZSBwZWVyLgotICAgICAgICAiIiIKLSAgICAgICAgbWF4X3N0cmVhbXMgPSBidWYu
cHVsbF91aW50X3ZhcigpCi0KLSAgICAgICAgIyBsb2cgZnJhbWUKLSAgICAgICAgaWYgc2VsZi5f
cXVpY19sb2dnZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0LnF1aWNfbG9nZ2Vy
X2ZyYW1lcy5hcHBlbmQoCi0gICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2Rl
X21heF9zdHJlYW1zX2ZyYW1lKAotICAgICAgICAgICAgICAgICAgICBpc191bmlkaXJlY3Rpb25h
bD1GYWxzZSwgbWF4aW11bT1tYXhfc3RyZWFtcwotICAgICAgICAgICAgICAgICkKLSAgICAgICAg
ICAgICkKLQotICAgICAgICBpZiBtYXhfc3RyZWFtcyA+IHNlbGYuX3JlbW90ZV9tYXhfc3RyZWFt
c19iaWRpOgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCJSZW1vdGUgbWF4X3N0cmVh
bXNfYmlkaSByYWlzZWQgdG8gJWQiLCBtYXhfc3RyZWFtcykKLSAgICAgICAgICAgIHNlbGYuX3Jl
bW90ZV9tYXhfc3RyZWFtc19iaWRpID0gbWF4X3N0cmVhbXMKLSAgICAgICAgICAgIHNlbGYuX3Vu
YmxvY2tfc3RyZWFtcyhpc191bmlkaXJlY3Rpb25hbD1GYWxzZSkKLQotICAgIGRlZiBfaGFuZGxl
X21heF9zdHJlYW1zX3VuaV9mcmFtZSgKLSAgICAgICAgc2VsZiwgY29udGV4dDogUXVpY1JlY2Vp
dmVDb250ZXh0LCBmcmFtZV90eXBlOiBpbnQsIGJ1ZjogQnVmZmVyCi0gICAgKSAtPiBOb25lOgot
ICAgICAgICAiIiIKLSAgICAgICAgSGFuZGxlIGEgTUFYX1NUUkVBTVNfVU5JIGZyYW1lLgotCi0g
ICAgICAgIFRoaXMgcmFpc2VzIG51bWJlciBvZiB1bmlkaXJlY3Rpb25hbCBzdHJlYW1zIHdlIGNh
biBpbml0aWF0ZSB0byB0aGUgcGVlci4KLSAgICAgICAgIiIiCi0gICAgICAgIG1heF9zdHJlYW1z
ID0gYnVmLnB1bGxfdWludF92YXIoKQotCi0gICAgICAgICMgbG9nIGZyYW1lCi0gICAgICAgIGlm
IHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgY29udGV4dC5xdWlj
X2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAotICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2Vy
LmVuY29kZV9tYXhfc3RyZWFtc19mcmFtZSgKLSAgICAgICAgICAgICAgICAgICAgaXNfdW5pZGly
ZWN0aW9uYWw9VHJ1ZSwgbWF4aW11bT1tYXhfc3RyZWFtcwotICAgICAgICAgICAgICAgICkKLSAg
ICAgICAgICAgICkKLQotICAgICAgICBpZiBtYXhfc3RyZWFtcyA+IHNlbGYuX3JlbW90ZV9tYXhf
c3RyZWFtc191bmk6Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoIlJlbW90ZSBtYXhf
c3RyZWFtc191bmkgcmFpc2VkIHRvICVkIiwgbWF4X3N0cmVhbXMpCi0gICAgICAgICAgICBzZWxm
Ll9yZW1vdGVfbWF4X3N0cmVhbXNfdW5pID0gbWF4X3N0cmVhbXMKLSAgICAgICAgICAgIHNlbGYu
X3VuYmxvY2tfc3RyZWFtcyhpc191bmlkaXJlY3Rpb25hbD1UcnVlKQotCi0gICAgZGVmIF9oYW5k
bGVfbmV3X2Nvbm5lY3Rpb25faWRfZnJhbWUoCi0gICAgICAgIHNlbGYsIGNvbnRleHQ6IFF1aWNS
ZWNlaXZlQ29udGV4dCwgZnJhbWVfdHlwZTogaW50LCBidWY6IEJ1ZmZlcgotICAgICkgLT4gTm9u
ZToKLSAgICAgICAgIiIiCi0gICAgICAgIEhhbmRsZSBhIE5FV19DT05ORUNUSU9OX0lEIGZyYW1l
LgotICAgICAgICAiIiIKLSAgICAgICAgc2VxdWVuY2VfbnVtYmVyID0gYnVmLnB1bGxfdWludF92
YXIoKQotICAgICAgICByZXRpcmVfcHJpb3JfdG8gPSBidWYucHVsbF91aW50X3ZhcigpCi0gICAg
ICAgIGxlbmd0aCA9IGJ1Zi5wdWxsX3VpbnQ4KCkKLSAgICAgICAgY29ubmVjdGlvbl9pZCA9IGJ1
Zi5wdWxsX2J5dGVzKGxlbmd0aCkKLSAgICAgICAgc3RhdGVsZXNzX3Jlc2V0X3Rva2VuID0gYnVm
LnB1bGxfYnl0ZXMoMTYpCi0KLSAgICAgICAgIyBsb2cgZnJhbWUKLSAgICAgICAgaWYgc2VsZi5f
cXVpY19sb2dnZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0LnF1aWNfbG9nZ2Vy
X2ZyYW1lcy5hcHBlbmQoCi0gICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2Rl
X25ld19jb25uZWN0aW9uX2lkX2ZyYW1lKAotICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9u
X2lkPWNvbm5lY3Rpb25faWQsCi0gICAgICAgICAgICAgICAgICAgIHJldGlyZV9wcmlvcl90bz1y
ZXRpcmVfcHJpb3JfdG8sCi0gICAgICAgICAgICAgICAgICAgIHNlcXVlbmNlX251bWJlcj1zZXF1
ZW5jZV9udW1iZXIsCi0gICAgICAgICAgICAgICAgICAgIHN0YXRlbGVzc19yZXNldF90b2tlbj1z
dGF0ZWxlc3NfcmVzZXRfdG9rZW4sCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgKQot
Ci0gICAgICAgIHNlbGYuX3BlZXJfY2lkX2F2YWlsYWJsZS5hcHBlbmQoCi0gICAgICAgICAgICBR
dWljQ29ubmVjdGlvbklkKAotICAgICAgICAgICAgICAgIGNpZD1jb25uZWN0aW9uX2lkLAotICAg
ICAgICAgICAgICAgIHNlcXVlbmNlX251bWJlcj1zZXF1ZW5jZV9udW1iZXIsCi0gICAgICAgICAg
ICAgICAgc3RhdGVsZXNzX3Jlc2V0X3Rva2VuPXN0YXRlbGVzc19yZXNldF90b2tlbiwKLSAgICAg
ICAgICAgICkKLSAgICAgICAgKQotCi0gICAgZGVmIF9oYW5kbGVfbmV3X3Rva2VuX2ZyYW1lKAot
ICAgICAgICBzZWxmLCBjb250ZXh0OiBRdWljUmVjZWl2ZUNvbnRleHQsIGZyYW1lX3R5cGU6IGlu
dCwgYnVmOiBCdWZmZXIKLSAgICApIC0+IE5vbmU6Ci0gICAgICAgICIiIgotICAgICAgICBIYW5k
bGUgYSBORVdfVE9LRU4gZnJhbWUuCi0gICAgICAgICIiIgotICAgICAgICBsZW5ndGggPSBidWYu
cHVsbF91aW50X3ZhcigpCi0gICAgICAgIHRva2VuID0gYnVmLnB1bGxfYnl0ZXMobGVuZ3RoKQot
Ci0gICAgICAgICMgbG9nIGZyYW1lCi0gICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5v
dCBOb25lOgotICAgICAgICAgICAgY29udGV4dC5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAot
ICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9uZXdfdG9rZW5fZnJhbWUo
dG9rZW49dG9rZW4pCi0gICAgICAgICAgICApCi0KLSAgICAgICAgaWYgbm90IHNlbGYuX2lzX2Ns
aWVudDoKLSAgICAgICAgICAgIHJhaXNlIFF1aWNDb25uZWN0aW9uRXJyb3IoCi0gICAgICAgICAg
ICAgICAgZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLlBST1RPQ09MX1ZJT0xBVElPTiwKLSAgICAg
ICAgICAgICAgICBmcmFtZV90eXBlPWZyYW1lX3R5cGUsCi0gICAgICAgICAgICAgICAgcmVhc29u
X3BocmFzZT0iQ2xpZW50cyBtdXN0IG5vdCBzZW5kIE5FV19UT0tFTiBmcmFtZXMiLAotICAgICAg
ICAgICAgKQotCi0gICAgZGVmIF9oYW5kbGVfcGFkZGluZ19mcmFtZSgKLSAgICAgICAgc2VsZiwg
Y29udGV4dDogUXVpY1JlY2VpdmVDb250ZXh0LCBmcmFtZV90eXBlOiBpbnQsIGJ1ZjogQnVmZmVy
Ci0gICAgKSAtPiBOb25lOgotICAgICAgICAiIiIKLSAgICAgICAgSGFuZGxlIGEgUEFERElORyBm
cmFtZS4KLSAgICAgICAgIiIiCi0gICAgICAgICMgY29uc3VtZSBwYWRkaW5nCi0gICAgICAgIHBv
cyA9IGJ1Zi50ZWxsKCkKLSAgICAgICAgZm9yIGJ5dGUgaW4gYnVmLmRhdGFfc2xpY2UocG9zLCBi
dWYuY2FwYWNpdHkpOgotICAgICAgICAgICAgaWYgYnl0ZToKLSAgICAgICAgICAgICAgICBicmVh
awotICAgICAgICAgICAgcG9zICs9IDEKLSAgICAgICAgYnVmLnNlZWsocG9zKQotCi0gICAgICAg
ICMgbG9nIGZyYW1lCi0gICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgot
ICAgICAgICAgICAgY29udGV4dC5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKHNlbGYuX3F1aWNf
bG9nZ2VyLmVuY29kZV9wYWRkaW5nX2ZyYW1lKCkpCi0KLSAgICBkZWYgX2hhbmRsZV9wYXRoX2No
YWxsZW5nZV9mcmFtZSgKLSAgICAgICAgc2VsZiwgY29udGV4dDogUXVpY1JlY2VpdmVDb250ZXh0
LCBmcmFtZV90eXBlOiBpbnQsIGJ1ZjogQnVmZmVyCi0gICAgKSAtPiBOb25lOgotICAgICAgICAi
IiIKLSAgICAgICAgSGFuZGxlIGEgUEFUSF9DSEFMTEVOR0UgZnJhbWUuCi0gICAgICAgICIiIgot
ICAgICAgICBkYXRhID0gYnVmLnB1bGxfYnl0ZXMoOCkKLQotICAgICAgICAjIGxvZyBmcmFtZQot
ICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGNv
bnRleHQucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKLSAgICAgICAgICAgICAgICBzZWxmLl9x
dWljX2xvZ2dlci5lbmNvZGVfcGF0aF9jaGFsbGVuZ2VfZnJhbWUoZGF0YT1kYXRhKQotICAgICAg
ICAgICAgKQotCi0gICAgICAgIGNvbnRleHQubmV0d29ya19wYXRoLnJlbW90ZV9jaGFsbGVuZ2Ug
PSBkYXRhCi0KLSAgICBkZWYgX2hhbmRsZV9wYXRoX3Jlc3BvbnNlX2ZyYW1lKAotICAgICAgICBz
ZWxmLCBjb250ZXh0OiBRdWljUmVjZWl2ZUNvbnRleHQsIGZyYW1lX3R5cGU6IGludCwgYnVmOiBC
dWZmZXIKLSAgICApIC0+IE5vbmU6Ci0gICAgICAgICIiIgotICAgICAgICBIYW5kbGUgYSBQQVRI
X1JFU1BPTlNFIGZyYW1lLgotICAgICAgICAiIiIKLSAgICAgICAgZGF0YSA9IGJ1Zi5wdWxsX2J5
dGVzKDgpCi0KLSAgICAgICAgIyBsb2cgZnJhbWUKLSAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dn
ZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0LnF1aWNfbG9nZ2VyX2ZyYW1lcy5h
cHBlbmQoCi0gICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX3BhdGhfcmVz
cG9uc2VfZnJhbWUoZGF0YT1kYXRhKQotICAgICAgICAgICAgKQotCi0gICAgICAgIGlmIGRhdGEg
IT0gY29udGV4dC5uZXR3b3JrX3BhdGgubG9jYWxfY2hhbGxlbmdlOgotICAgICAgICAgICAgcmFp
c2UgUXVpY0Nvbm5lY3Rpb25FcnJvcigKLSAgICAgICAgICAgICAgICBlcnJvcl9jb2RlPVF1aWNF
cnJvckNvZGUuUFJPVE9DT0xfVklPTEFUSU9OLAotICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9
ZnJhbWVfdHlwZSwKLSAgICAgICAgICAgICAgICByZWFzb25fcGhyYXNlPSJSZXNwb25zZSBkb2Vz
IG5vdCBtYXRjaCBjaGFsbGVuZ2UiLAotICAgICAgICAgICAgKQotICAgICAgICBzZWxmLl9sb2dn
ZXIuZGVidWcoCi0gICAgICAgICAgICAiTmV0d29yayBwYXRoICVzIHZhbGlkYXRlZCBieSBjaGFs
bGVuZ2UiLCBjb250ZXh0Lm5ldHdvcmtfcGF0aC5hZGRyCi0gICAgICAgICkKLSAgICAgICAgY29u
dGV4dC5uZXR3b3JrX3BhdGguaXNfdmFsaWRhdGVkID0gVHJ1ZQotCi0gICAgZGVmIF9oYW5kbGVf
cGluZ19mcmFtZSgKLSAgICAgICAgc2VsZiwgY29udGV4dDogUXVpY1JlY2VpdmVDb250ZXh0LCBm
cmFtZV90eXBlOiBpbnQsIGJ1ZjogQnVmZmVyCi0gICAgKSAtPiBOb25lOgotICAgICAgICAiIiIK
LSAgICAgICAgSGFuZGxlIGEgUElORyBmcmFtZS4KLSAgICAgICAgIiIiCi0gICAgICAgICMgbG9n
IGZyYW1lCi0gICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgotICAgICAg
ICAgICAgY29udGV4dC5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKHNlbGYuX3F1aWNfbG9nZ2Vy
LmVuY29kZV9waW5nX2ZyYW1lKCkpCi0KLSAgICBkZWYgX2hhbmRsZV9yZXNldF9zdHJlYW1fZnJh
bWUoCi0gICAgICAgIHNlbGYsIGNvbnRleHQ6IFF1aWNSZWNlaXZlQ29udGV4dCwgZnJhbWVfdHlw
ZTogaW50LCBidWY6IEJ1ZmZlcgotICAgICkgLT4gTm9uZToKLSAgICAgICAgIiIiCi0gICAgICAg
IEhhbmRsZSBhIFJFU0VUX1NUUkVBTSBmcmFtZS4KLSAgICAgICAgIiIiCi0gICAgICAgIHN0cmVh
bV9pZCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKLSAgICAgICAgZXJyb3JfY29kZSA9IGJ1Zi5wdWxs
X3VpbnRfdmFyKCkKLSAgICAgICAgZmluYWxfc2l6ZSA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKLQot
ICAgICAgICAjIGxvZyBmcmFtZQotICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3Qg
Tm9uZToKLSAgICAgICAgICAgIGNvbnRleHQucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKLSAg
ICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfcmVzZXRfc3RyZWFtX2ZyYW1l
KAotICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2RlPWVycm9yX2NvZGUsIGZpbmFsX3NpemU9
ZmluYWxfc2l6ZSwgc3RyZWFtX2lkPXN0cmVhbV9pZAotICAgICAgICAgICAgICAgICkKLSAgICAg
ICAgICAgICkKLQotICAgICAgICAjIGNoZWNrIHN0cmVhbSBkaXJlY3Rpb24KLSAgICAgICAgc2Vs
Zi5fYXNzZXJ0X3N0cmVhbV9jYW5fcmVjZWl2ZShmcmFtZV90eXBlLCBzdHJlYW1faWQpCi0KLSAg
ICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oCi0gICAgICAgICAgICAiU3RyZWFtICVkIHJlc2V0IGJ5
IHBlZXIgKGVycm9yIGNvZGUgJWQsIGZpbmFsIHNpemUgJWQpIiwKLSAgICAgICAgICAgIHN0cmVh
bV9pZCwKLSAgICAgICAgICAgIGVycm9yX2NvZGUsCi0gICAgICAgICAgICBmaW5hbF9zaXplLAot
ICAgICAgICApCi0gICAgICAgICMgc3RyZWFtID0gc2VsZi5fZ2V0X29yX2NyZWF0ZV9zdHJlYW0o
ZnJhbWVfdHlwZSwgc3RyZWFtX2lkKQotICAgICAgICBzZWxmLl9ldmVudHMuYXBwZW5kKAotICAg
ICAgICAgICAgZXZlbnRzLlN0cmVhbVJlc2V0KGVycm9yX2NvZGU9ZXJyb3JfY29kZSwgc3RyZWFt
X2lkPXN0cmVhbV9pZCkKLSAgICAgICAgKQotCi0gICAgZGVmIF9oYW5kbGVfcmV0aXJlX2Nvbm5l
Y3Rpb25faWRfZnJhbWUoCi0gICAgICAgIHNlbGYsIGNvbnRleHQ6IFF1aWNSZWNlaXZlQ29udGV4
dCwgZnJhbWVfdHlwZTogaW50LCBidWY6IEJ1ZmZlcgotICAgICkgLT4gTm9uZToKLSAgICAgICAg
IiIiCi0gICAgICAgIEhhbmRsZSBhIFJFVElSRV9DT05ORUNUSU9OX0lEIGZyYW1lLgotICAgICAg
ICAiIiIKLSAgICAgICAgc2VxdWVuY2VfbnVtYmVyID0gYnVmLnB1bGxfdWludF92YXIoKQotCi0g
ICAgICAgICMgbG9nIGZyYW1lCi0gICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBO
b25lOgotICAgICAgICAgICAgY29udGV4dC5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAotICAg
ICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9yZXRpcmVfY29ubmVjdGlvbl9p
ZF9mcmFtZShzZXF1ZW5jZV9udW1iZXIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgIyBmaW5k
IHRoZSBjb25uZWN0aW9uIElEIGJ5IHNlcXVlbmNlIG51bWJlcgotICAgICAgICBmb3IgaW5kZXgs
IGNvbm5lY3Rpb25faWQgaW4gZW51bWVyYXRlKHNlbGYuX2hvc3RfY2lkcyk6Ci0gICAgICAgICAg
ICBpZiBjb25uZWN0aW9uX2lkLnNlcXVlbmNlX251bWJlciA9PSBzZXF1ZW5jZV9udW1iZXI6Ci0g
ICAgICAgICAgICAgICAgaWYgY29ubmVjdGlvbl9pZC5jaWQgPT0gY29udGV4dC5ob3N0X2NpZDoK
LSAgICAgICAgICAgICAgICAgICAgcmFpc2UgUXVpY0Nvbm5lY3Rpb25FcnJvcigKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5QUk9UT0NPTF9WSU9MQVRJ
T04sCi0gICAgICAgICAgICAgICAgICAgICAgICBmcmFtZV90eXBlPWZyYW1lX3R5cGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICByZWFzb25fcGhyYXNlPSJDYW5ub3QgcmV0aXJlIGN1cnJlbnQg
Y29ubmVjdGlvbiBJRCIsCi0gICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICBz
ZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAgICAgICAgICJQZWVyIHJldGlyaW5nIENJ
RCAlcyAoJWQpIiwKLSAgICAgICAgICAgICAgICAgICAgZHVtcF9jaWQoY29ubmVjdGlvbl9pZC5j
aWQpLAotICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uX2lkLnNlcXVlbmNlX251bWJlciwK
LSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgZGVsIHNlbGYuX2hvc3RfY2lkc1tp
bmRleF0KLSAgICAgICAgICAgICAgICBzZWxmLl9ldmVudHMuYXBwZW5kKAotICAgICAgICAgICAg
ICAgICAgICBldmVudHMuQ29ubmVjdGlvbklkUmV0aXJlZChjb25uZWN0aW9uX2lkPWNvbm5lY3Rp
b25faWQuY2lkKQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICBicmVhawotCi0g
ICAgICAgICMgaXNzdWUgYSBuZXcgY29ubmVjdGlvbiBJRAotICAgICAgICBzZWxmLl9yZXBsZW5p
c2hfY29ubmVjdGlvbl9pZHMoKQotCi0gICAgZGVmIF9oYW5kbGVfc3RvcF9zZW5kaW5nX2ZyYW1l
KAotICAgICAgICBzZWxmLCBjb250ZXh0OiBRdWljUmVjZWl2ZUNvbnRleHQsIGZyYW1lX3R5cGU6
IGludCwgYnVmOiBCdWZmZXIKLSAgICApIC0+IE5vbmU6Ci0gICAgICAgICIiIgotICAgICAgICBI
YW5kbGUgYSBTVE9QX1NFTkRJTkcgZnJhbWUuCi0gICAgICAgICIiIgotICAgICAgICBzdHJlYW1f
aWQgPSBidWYucHVsbF91aW50X3ZhcigpCi0gICAgICAgIGVycm9yX2NvZGUgPSBidWYucHVsbF91
aW50X3ZhcigpICAjIGFwcGxpY2F0aW9uIGVycm9yIGNvZGUKLQotICAgICAgICAjIGxvZyBmcmFt
ZQotICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAg
IGNvbnRleHQucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKLSAgICAgICAgICAgICAgICBzZWxm
Ll9xdWljX2xvZ2dlci5lbmNvZGVfc3RvcF9zZW5kaW5nX2ZyYW1lKAotICAgICAgICAgICAgICAg
ICAgICBlcnJvcl9jb2RlPWVycm9yX2NvZGUsIHN0cmVhbV9pZD1zdHJlYW1faWQKLSAgICAgICAg
ICAgICAgICApCi0gICAgICAgICAgICApCi0KLSAgICAgICAgIyBjaGVjayBzdHJlYW0gZGlyZWN0
aW9uCi0gICAgICAgIHNlbGYuX2Fzc2VydF9zdHJlYW1fY2FuX3NlbmQoZnJhbWVfdHlwZSwgc3Ry
ZWFtX2lkKQotCi0gICAgICAgIHNlbGYuX2dldF9vcl9jcmVhdGVfc3RyZWFtKGZyYW1lX3R5cGUs
IHN0cmVhbV9pZCkKLQotICAgIGRlZiBfaGFuZGxlX3N0cmVhbV9mcmFtZSgKLSAgICAgICAgc2Vs
ZiwgY29udGV4dDogUXVpY1JlY2VpdmVDb250ZXh0LCBmcmFtZV90eXBlOiBpbnQsIGJ1ZjogQnVm
ZmVyCi0gICAgKSAtPiBOb25lOgotICAgICAgICAiIiIKLSAgICAgICAgSGFuZGxlIGEgU1RSRUFN
IGZyYW1lLgotICAgICAgICAiIiIKLSAgICAgICAgc3RyZWFtX2lkID0gYnVmLnB1bGxfdWludF92
YXIoKQotICAgICAgICBpZiBmcmFtZV90eXBlICYgNDoKLSAgICAgICAgICAgIG9mZnNldCA9IGJ1
Zi5wdWxsX3VpbnRfdmFyKCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG9mZnNldCA9IDAK
LSAgICAgICAgaWYgZnJhbWVfdHlwZSAmIDI6Ci0gICAgICAgICAgICBsZW5ndGggPSBidWYucHVs
bF91aW50X3ZhcigpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBsZW5ndGggPSBidWYuY2Fw
YWNpdHkgLSBidWYudGVsbCgpCi0gICAgICAgIGlmIG9mZnNldCArIGxlbmd0aCA+IFVJTlRfVkFS
X01BWDoKLSAgICAgICAgICAgIHJhaXNlIFF1aWNDb25uZWN0aW9uRXJyb3IoCi0gICAgICAgICAg
ICAgICAgZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLkZSQU1FX0VOQ09ESU5HX0VSUk9SLAotICAg
ICAgICAgICAgICAgIGZyYW1lX3R5cGU9ZnJhbWVfdHlwZSwKLSAgICAgICAgICAgICAgICByZWFz
b25fcGhyYXNlPSJvZmZzZXQgKyBsZW5ndGggY2Fubm90IGV4Y2VlZCAyXjYyIC0gMSIsCi0gICAg
ICAgICAgICApCi0gICAgICAgIGZyYW1lID0gUXVpY1N0cmVhbUZyYW1lKAotICAgICAgICAgICAg
b2Zmc2V0PW9mZnNldCwgZGF0YT1idWYucHVsbF9ieXRlcyhsZW5ndGgpLCBmaW49Ym9vbChmcmFt
ZV90eXBlICYgMSkKLSAgICAgICAgKQotCi0gICAgICAgICMgbG9nIGZyYW1lCi0gICAgICAgIGlm
IHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgY29udGV4dC5xdWlj
X2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAotICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2Vy
LmVuY29kZV9zdHJlYW1fZnJhbWUoZnJhbWUsIHN0cmVhbV9pZD1zdHJlYW1faWQpCi0gICAgICAg
ICAgICApCi0KLSAgICAgICAgIyBjaGVjayBzdHJlYW0gZGlyZWN0aW9uCi0gICAgICAgIHNlbGYu
X2Fzc2VydF9zdHJlYW1fY2FuX3JlY2VpdmUoZnJhbWVfdHlwZSwgc3RyZWFtX2lkKQotCi0gICAg
ICAgICMgY2hlY2sgZmxvdy1jb250cm9sIGxpbWl0cwotICAgICAgICBzdHJlYW0gPSBzZWxmLl9n
ZXRfb3JfY3JlYXRlX3N0cmVhbShmcmFtZV90eXBlLCBzdHJlYW1faWQpCi0gICAgICAgIGlmIG9m
ZnNldCArIGxlbmd0aCA+IHN0cmVhbS5tYXhfc3RyZWFtX2RhdGFfbG9jYWw6Ci0gICAgICAgICAg
ICByYWlzZSBRdWljQ29ubmVjdGlvbkVycm9yKAotICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9
UXVpY0Vycm9yQ29kZS5GTE9XX0NPTlRST0xfRVJST1IsCi0gICAgICAgICAgICAgICAgZnJhbWVf
dHlwZT1mcmFtZV90eXBlLAotICAgICAgICAgICAgICAgIHJlYXNvbl9waHJhc2U9Ik92ZXIgc3Ry
ZWFtIGRhdGEgbGltaXQiLAotICAgICAgICAgICAgKQotICAgICAgICBuZXdseV9yZWNlaXZlZCA9
IG1heCgwLCBvZmZzZXQgKyBsZW5ndGggLSBzdHJlYW0uX3JlY3ZfaGlnaGVzdCkKLSAgICAgICAg
aWYgc2VsZi5fbG9jYWxfbWF4X2RhdGFfdXNlZCArIG5ld2x5X3JlY2VpdmVkID4gc2VsZi5fbG9j
YWxfbWF4X2RhdGE6Ci0gICAgICAgICAgICByYWlzZSBRdWljQ29ubmVjdGlvbkVycm9yKAotICAg
ICAgICAgICAgICAgIGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5GTE9XX0NPTlRST0xfRVJST1Is
Ci0gICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1mcmFtZV90eXBlLAotICAgICAgICAgICAgICAg
IHJlYXNvbl9waHJhc2U9Ik92ZXIgY29ubmVjdGlvbiBkYXRhIGxpbWl0IiwKLSAgICAgICAgICAg
ICkKLQotICAgICAgICBldmVudCA9IHN0cmVhbS5hZGRfZnJhbWUoZnJhbWUpCi0gICAgICAgIGlm
IGV2ZW50IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2VsZi5fZXZlbnRzLmFwcGVuZChldmVu
dCkKLSAgICAgICAgc2VsZi5fbG9jYWxfbWF4X2RhdGFfdXNlZCArPSBuZXdseV9yZWNlaXZlZAot
Ci0gICAgZGVmIF9oYW5kbGVfc3RyZWFtX2RhdGFfYmxvY2tlZF9mcmFtZSgKLSAgICAgICAgc2Vs
ZiwgY29udGV4dDogUXVpY1JlY2VpdmVDb250ZXh0LCBmcmFtZV90eXBlOiBpbnQsIGJ1ZjogQnVm
ZmVyCi0gICAgKSAtPiBOb25lOgotICAgICAgICAiIiIKLSAgICAgICAgSGFuZGxlIGEgU1RSRUFN
X0RBVEFfQkxPQ0tFRCBmcmFtZS4KLSAgICAgICAgIiIiCi0gICAgICAgIHN0cmVhbV9pZCA9IGJ1
Zi5wdWxsX3VpbnRfdmFyKCkKLSAgICAgICAgbGltaXQgPSBidWYucHVsbF91aW50X3ZhcigpCi0K
LSAgICAgICAgIyBsb2cgZnJhbWUKLSAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90
IE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0LnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCi0g
ICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX3N0cmVhbV9kYXRhX2Jsb2Nr
ZWRfZnJhbWUoCi0gICAgICAgICAgICAgICAgICAgIGxpbWl0PWxpbWl0LCBzdHJlYW1faWQ9c3Ry
ZWFtX2lkCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgKQotCi0gICAgICAgICMgY2hl
Y2sgc3RyZWFtIGRpcmVjdGlvbgotICAgICAgICBzZWxmLl9hc3NlcnRfc3RyZWFtX2Nhbl9yZWNl
aXZlKGZyYW1lX3R5cGUsIHN0cmVhbV9pZCkKLQotICAgICAgICBzZWxmLl9nZXRfb3JfY3JlYXRl
X3N0cmVhbShmcmFtZV90eXBlLCBzdHJlYW1faWQpCi0KLSAgICBkZWYgX2hhbmRsZV9zdHJlYW1z
X2Jsb2NrZWRfZnJhbWUoCi0gICAgICAgIHNlbGYsIGNvbnRleHQ6IFF1aWNSZWNlaXZlQ29udGV4
dCwgZnJhbWVfdHlwZTogaW50LCBidWY6IEJ1ZmZlcgotICAgICkgLT4gTm9uZToKLSAgICAgICAg
IiIiCi0gICAgICAgIEhhbmRsZSBhIFNUUkVBTVNfQkxPQ0tFRCBmcmFtZS4KLSAgICAgICAgIiIi
Ci0gICAgICAgIGxpbWl0ID0gYnVmLnB1bGxfdWludF92YXIoKQotCi0gICAgICAgICMgbG9nIGZy
YW1lCi0gICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgotICAgICAgICAg
ICAgY29udGV4dC5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAotICAgICAgICAgICAgICAgIHNl
bGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9zdHJlYW1zX2Jsb2NrZWRfZnJhbWUoCi0gICAgICAgICAg
ICAgICAgICAgIGlzX3VuaWRpcmVjdGlvbmFsPWZyYW1lX3R5cGUgPT0gUXVpY0ZyYW1lVHlwZS5T
VFJFQU1TX0JMT0NLRURfVU5JLAotICAgICAgICAgICAgICAgICAgICBsaW1pdD1saW1pdCwKLSAg
ICAgICAgICAgICAgICApCi0gICAgICAgICAgICApCi0KLSAgICBkZWYgX29uX2Fja19kZWxpdmVy
eSgKLSAgICAgICAgc2VsZiwgZGVsaXZlcnk6IFF1aWNEZWxpdmVyeVN0YXRlLCBzcGFjZTogUXVp
Y1BhY2tldFNwYWNlLCBoaWdoZXN0X2Fja2VkOiBpbnQKLSAgICApIC0+IE5vbmU6Ci0gICAgICAg
ICIiIgotICAgICAgICBDYWxsYmFjayB3aGVuIGFuIEFDSyBmcmFtZSBpcyBhY2tub3dsZWRnZWQg
b3IgbG9zdC4KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIGRlbGl2ZXJ5ID09IFF1aWNEZWxpdmVy
eVN0YXRlLkFDS0VEOgotICAgICAgICAgICAgc3BhY2UuYWNrX3F1ZXVlLnN1YnRyYWN0KDAsIGhp
Z2hlc3RfYWNrZWQgKyAxKQotCi0gICAgZGVmIF9vbl9oYW5kc2hha2VfZG9uZV9kZWxpdmVyeShz
ZWxmLCBkZWxpdmVyeTogUXVpY0RlbGl2ZXJ5U3RhdGUpIC0+IE5vbmU6Ci0gICAgICAgICIiIgot
ICAgICAgICBDYWxsYmFjayB3aGVuIGEgSEFORFNIQUtFX0RPTkUgZnJhbWUgaXMgYWNrbm93bGVk
Z2VkIG9yIGxvc3QuCi0gICAgICAgICIiIgotICAgICAgICBpZiBkZWxpdmVyeSAhPSBRdWljRGVs
aXZlcnlTdGF0ZS5BQ0tFRDoKLSAgICAgICAgICAgIHNlbGYuX2hhbmRzaGFrZV9kb25lX3BlbmRp
bmcgPSBUcnVlCi0KLSAgICBkZWYgX29uX21heF9kYXRhX2RlbGl2ZXJ5KHNlbGYsIGRlbGl2ZXJ5
OiBRdWljRGVsaXZlcnlTdGF0ZSkgLT4gTm9uZToKLSAgICAgICAgIiIiCi0gICAgICAgIENhbGxi
YWNrIHdoZW4gYSBNQVhfREFUQSBmcmFtZSBpcyBhY2tub3dsZWRnZWQgb3IgbG9zdC4KLSAgICAg
ICAgIiIiCi0gICAgICAgIGlmIGRlbGl2ZXJ5ICE9IFF1aWNEZWxpdmVyeVN0YXRlLkFDS0VEOgot
ICAgICAgICAgICAgc2VsZi5fbG9jYWxfbWF4X2RhdGFfc2VudCA9IDAKLQotICAgIGRlZiBfb25f
bWF4X3N0cmVhbV9kYXRhX2RlbGl2ZXJ5KAotICAgICAgICBzZWxmLCBkZWxpdmVyeTogUXVpY0Rl
bGl2ZXJ5U3RhdGUsIHN0cmVhbTogUXVpY1N0cmVhbQotICAgICkgLT4gTm9uZToKLSAgICAgICAg
IiIiCi0gICAgICAgIENhbGxiYWNrIHdoZW4gYSBNQVhfU1RSRUFNX0RBVEEgZnJhbWUgaXMgYWNr
bm93bGVkZ2VkIG9yIGxvc3QuCi0gICAgICAgICIiIgotICAgICAgICBpZiBkZWxpdmVyeSAhPSBR
dWljRGVsaXZlcnlTdGF0ZS5BQ0tFRDoKLSAgICAgICAgICAgIHN0cmVhbS5tYXhfc3RyZWFtX2Rh
dGFfbG9jYWxfc2VudCA9IDAKLQotICAgIGRlZiBfb25fbmV3X2Nvbm5lY3Rpb25faWRfZGVsaXZl
cnkoCi0gICAgICAgIHNlbGYsIGRlbGl2ZXJ5OiBRdWljRGVsaXZlcnlTdGF0ZSwgY29ubmVjdGlv
bl9pZDogUXVpY0Nvbm5lY3Rpb25JZAotICAgICkgLT4gTm9uZToKLSAgICAgICAgIiIiCi0gICAg
ICAgIENhbGxiYWNrIHdoZW4gYSBORVdfQ09OTkVDVElPTl9JRCBmcmFtZSBpcyBhY2tub3dsZWRn
ZWQgb3IgbG9zdC4KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIGRlbGl2ZXJ5ICE9IFF1aWNEZWxp
dmVyeVN0YXRlLkFDS0VEOgotICAgICAgICAgICAgY29ubmVjdGlvbl9pZC53YXNfc2VudCA9IEZh
bHNlCi0KLSAgICBkZWYgX29uX3BpbmdfZGVsaXZlcnkoCi0gICAgICAgIHNlbGYsIGRlbGl2ZXJ5
OiBRdWljRGVsaXZlcnlTdGF0ZSwgdWlkczogU2VxdWVuY2VbaW50XQotICAgICkgLT4gTm9uZToK
LSAgICAgICAgIiIiCi0gICAgICAgIENhbGxiYWNrIHdoZW4gYSBQSU5HIGZyYW1lIGlzIGFja25v
d2xlZGdlZCBvciBsb3N0LgotICAgICAgICAiIiIKLSAgICAgICAgaWYgZGVsaXZlcnkgPT0gUXVp
Y0RlbGl2ZXJ5U3RhdGUuQUNLRUQ6Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoIlJl
Y2VpdmVkIFBJTkclcyByZXNwb25zZSIsICIiIGlmIHVpZHMgZWxzZSAiIChwcm9iZSkiKQotICAg
ICAgICAgICAgZm9yIHVpZCBpbiB1aWRzOgotICAgICAgICAgICAgICAgIHNlbGYuX2V2ZW50cy5h
cHBlbmQoZXZlbnRzLlBpbmdBY2tub3dsZWRnZWQodWlkPXVpZCkpCi0gICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICBzZWxmLl9waW5nX3BlbmRpbmcuZXh0ZW5kKHVpZHMpCi0KLSAgICBkZWYgX29u
X3JldGlyZV9jb25uZWN0aW9uX2lkX2RlbGl2ZXJ5KAotICAgICAgICBzZWxmLCBkZWxpdmVyeTog
UXVpY0RlbGl2ZXJ5U3RhdGUsIHNlcXVlbmNlX251bWJlcjogaW50Ci0gICAgKSAtPiBOb25lOgot
ICAgICAgICAiIiIKLSAgICAgICAgQ2FsbGJhY2sgd2hlbiBhIFJFVElSRV9DT05ORUNUSU9OX0lE
IGZyYW1lIGlzIGFja25vd2xlZGdlZCBvciBsb3N0LgotICAgICAgICAiIiIKLSAgICAgICAgaWYg
ZGVsaXZlcnkgIT0gUXVpY0RlbGl2ZXJ5U3RhdGUuQUNLRUQ6Ci0gICAgICAgICAgICBzZWxmLl9y
ZXRpcmVfY29ubmVjdGlvbl9pZHMuYXBwZW5kKHNlcXVlbmNlX251bWJlcikKLQotICAgIGRlZiBf
cGF5bG9hZF9yZWNlaXZlZCgKLSAgICAgICAgc2VsZiwgY29udGV4dDogUXVpY1JlY2VpdmVDb250
ZXh0LCBwbGFpbjogYnl0ZXMKLSAgICApIC0+IFR1cGxlW2Jvb2wsIGJvb2xdOgotICAgICAgICAi
IiIKLSAgICAgICAgSGFuZGxlIGEgUVVJQyBwYWNrZXQgcGF5bG9hZC4KLSAgICAgICAgIiIiCi0g
ICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPXBsYWluKQotCi0gICAgICAgIGlzX2Fja19lbGljaXRp
bmcgPSBGYWxzZQotICAgICAgICBpc19wcm9iaW5nID0gTm9uZQotICAgICAgICB3aGlsZSBub3Qg
YnVmLmVvZigpOgotICAgICAgICAgICAgZnJhbWVfdHlwZSA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkK
LQotICAgICAgICAgICAgIyBjaGVjayBmcmFtZSB0eXBlIGlzIGtub3duCi0gICAgICAgICAgICB0
cnk6Ci0gICAgICAgICAgICAgICAgZnJhbWVfaGFuZGxlciwgZnJhbWVfZXBvY2hzID0gc2VsZi5f
X2ZyYW1lX2hhbmRsZXJzW2ZyYW1lX3R5cGVdCi0gICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6
Ci0gICAgICAgICAgICAgICAgcmFpc2UgUXVpY0Nvbm5lY3Rpb25FcnJvcigKLSAgICAgICAgICAg
ICAgICAgICAgZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLlBST1RPQ09MX1ZJT0xBVElPTiwKLSAg
ICAgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1mcmFtZV90eXBlLAotICAgICAgICAgICAgICAg
ICAgICByZWFzb25fcGhyYXNlPSJVbmtub3duIGZyYW1lIHR5cGUiLAotICAgICAgICAgICAgICAg
ICkKLQotICAgICAgICAgICAgIyBjaGVjayBmcmFtZSBpcyBhbGxvd2VkIGZvciB0aGUgZXBvY2gK
LSAgICAgICAgICAgIGlmIGNvbnRleHQuZXBvY2ggbm90IGluIGZyYW1lX2Vwb2NoczoKLSAgICAg
ICAgICAgICAgICByYWlzZSBRdWljQ29ubmVjdGlvbkVycm9yKAotICAgICAgICAgICAgICAgICAg
ICBlcnJvcl9jb2RlPVF1aWNFcnJvckNvZGUuUFJPVE9DT0xfVklPTEFUSU9OLAotICAgICAgICAg
ICAgICAgICAgICBmcmFtZV90eXBlPWZyYW1lX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgIHJl
YXNvbl9waHJhc2U9IlVuZXhwZWN0ZWQgZnJhbWUgdHlwZSIsCi0gICAgICAgICAgICAgICAgKQot
Ci0gICAgICAgICAgICAjIGhhbmRsZSB0aGUgZnJhbWUKLSAgICAgICAgICAgIHRyeToKLSAgICAg
ICAgICAgICAgICBmcmFtZV9oYW5kbGVyKGNvbnRleHQsIGZyYW1lX3R5cGUsIGJ1ZikKLSAgICAg
ICAgICAgIGV4Y2VwdCBCdWZmZXJSZWFkRXJyb3I6Ci0gICAgICAgICAgICAgICAgcmFpc2UgUXVp
Y0Nvbm5lY3Rpb25FcnJvcigKLSAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29kZT1RdWljRXJy
b3JDb2RlLkZSQU1FX0VOQ09ESU5HX0VSUk9SLAotICAgICAgICAgICAgICAgICAgICBmcmFtZV90
eXBlPWZyYW1lX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgIHJlYXNvbl9waHJhc2U9IkZhaWxl
ZCB0byBwYXJzZSBmcmFtZSIsCi0gICAgICAgICAgICAgICAgKQotCi0gICAgICAgICAgICAjIHVw
ZGF0ZSBBQ0sgb25seSAvIHByb2JpbmcgZmxhZ3MKLSAgICAgICAgICAgIGlmIGZyYW1lX3R5cGUg
bm90IGluIE5PTl9BQ0tfRUxJQ0lUSU5HX0ZSQU1FX1RZUEVTOgotICAgICAgICAgICAgICAgIGlz
X2Fja19lbGljaXRpbmcgPSBUcnVlCi0KLSAgICAgICAgICAgIGlmIGZyYW1lX3R5cGUgbm90IGlu
IFBST0JJTkdfRlJBTUVfVFlQRVM6Ci0gICAgICAgICAgICAgICAgaXNfcHJvYmluZyA9IEZhbHNl
Ci0gICAgICAgICAgICBlbGlmIGlzX3Byb2JpbmcgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBp
c19wcm9iaW5nID0gVHJ1ZQotCi0gICAgICAgIHJldHVybiBpc19hY2tfZWxpY2l0aW5nLCBib29s
KGlzX3Byb2JpbmcpCi0KLSAgICBkZWYgX3JlcGxlbmlzaF9jb25uZWN0aW9uX2lkcyhzZWxmKSAt
PiBOb25lOgotICAgICAgICAiIiIKLSAgICAgICAgR2VuZXJhdGUgbmV3IGNvbm5lY3Rpb24gSURz
LgotICAgICAgICAiIiIKLSAgICAgICAgd2hpbGUgbGVuKHNlbGYuX2hvc3RfY2lkcykgPCBtaW4o
OCwgc2VsZi5fcmVtb3RlX2FjdGl2ZV9jb25uZWN0aW9uX2lkX2xpbWl0KToKLSAgICAgICAgICAg
IHNlbGYuX2hvc3RfY2lkcy5hcHBlbmQoCi0gICAgICAgICAgICAgICAgUXVpY0Nvbm5lY3Rpb25J
ZCgKLSAgICAgICAgICAgICAgICAgICAgY2lkPW9zLnVyYW5kb20oc2VsZi5fY29uZmlndXJhdGlv
bi5jb25uZWN0aW9uX2lkX2xlbmd0aCksCi0gICAgICAgICAgICAgICAgICAgIHNlcXVlbmNlX251
bWJlcj1zZWxmLl9ob3N0X2NpZF9zZXEsCi0gICAgICAgICAgICAgICAgICAgIHN0YXRlbGVzc19y
ZXNldF90b2tlbj1vcy51cmFuZG9tKDE2KSwKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAg
ICApCi0gICAgICAgICAgICBzZWxmLl9ob3N0X2NpZF9zZXEgKz0gMQotCi0gICAgZGVmIF9wdXNo
X2NyeXB0b19kYXRhKHNlbGYpIC0+IE5vbmU6Ci0gICAgICAgIGZvciBlcG9jaCwgYnVmIGluIHNl
bGYuX2NyeXB0b19idWZmZXJzLml0ZW1zKCk6Ci0gICAgICAgICAgICBzZWxmLl9jcnlwdG9fc3Ry
ZWFtc1tlcG9jaF0ud3JpdGUoYnVmLmRhdGEpCi0gICAgICAgICAgICBidWYuc2VlaygwKQotCi0g
ICAgZGVmIF9zZW5kX3Byb2JlKHNlbGYpIC0+IE5vbmU6Ci0gICAgICAgIHNlbGYuX3Byb2JlX3Bl
bmRpbmcgPSBUcnVlCi0KLSAgICBkZWYgX3BhcnNlX3RyYW5zcG9ydF9wYXJhbWV0ZXJzKAotICAg
ICAgICBzZWxmLCBkYXRhOiBieXRlcywgZnJvbV9zZXNzaW9uX3RpY2tldDogYm9vbCA9IEZhbHNl
Ci0gICAgKSAtPiBOb25lOgotICAgICAgICBxdWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzID0gcHVs
bF9xdWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzKAotICAgICAgICAgICAgQnVmZmVyKGRhdGE9ZGF0
YSksIHByb3RvY29sX3ZlcnNpb249c2VsZi5fdmVyc2lvbgotICAgICAgICApCi0KLSAgICAgICAg
IyBsb2cgZXZlbnQKLSAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmUgYW5k
IG5vdCBmcm9tX3Nlc3Npb25fdGlja2V0OgotICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIu
bG9nX2V2ZW50KAotICAgICAgICAgICAgICAgIGNhdGVnb3J5PSJ0cmFuc3BvcnQiLAotICAgICAg
ICAgICAgICAgIGV2ZW50PSJwYXJhbWV0ZXJzX3NldCIsCi0gICAgICAgICAgICAgICAgZGF0YT1z
ZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfdHJhbnNwb3J0X3BhcmFtZXRlcnMoCi0gICAgICAgICAg
ICAgICAgICAgIG93bmVyPSJyZW1vdGUiLCBwYXJhbWV0ZXJzPXF1aWNfdHJhbnNwb3J0X3BhcmFt
ZXRlcnMKLSAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgKQotCi0gICAgICAgICMgdmFs
aWRhdGUgcmVtb3RlIHBhcmFtZXRlcnMKLSAgICAgICAgaWYgKAotICAgICAgICAgICAgc2VsZi5f
aXNfY2xpZW50Ci0gICAgICAgICAgICBhbmQgbm90IGZyb21fc2Vzc2lvbl90aWNrZXQKLSAgICAg
ICAgICAgIGFuZCAoCi0gICAgICAgICAgICAgICAgcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycy5v
cmlnaW5hbF9jb25uZWN0aW9uX2lkCi0gICAgICAgICAgICAgICAgIT0gc2VsZi5fb3JpZ2luYWxf
Y29ubmVjdGlvbl9pZAotICAgICAgICAgICAgKQotICAgICAgICApOgotICAgICAgICAgICAgcmFp
c2UgUXVpY0Nvbm5lY3Rpb25FcnJvcigKLSAgICAgICAgICAgICAgICBlcnJvcl9jb2RlPVF1aWNF
cnJvckNvZGUuVFJBTlNQT1JUX1BBUkFNRVRFUl9FUlJPUiwKLSAgICAgICAgICAgICAgICBmcmFt
ZV90eXBlPVF1aWNGcmFtZVR5cGUuQ1JZUFRPLAotICAgICAgICAgICAgICAgIHJlYXNvbl9waHJh
c2U9Im9yaWdpbmFsX2Nvbm5lY3Rpb25faWQgZG9lcyBub3QgbWF0Y2giLAotICAgICAgICAgICAg
KQotCi0gICAgICAgICMgc3RvcmUgcmVtb3RlIHBhcmFtZXRlcnMKLSAgICAgICAgaWYgcXVpY190
cmFuc3BvcnRfcGFyYW1ldGVycy5hY2tfZGVsYXlfZXhwb25lbnQgaXMgbm90IE5vbmU6Ci0gICAg
ICAgICAgICBzZWxmLl9yZW1vdGVfYWNrX2RlbGF5X2V4cG9uZW50ID0gc2VsZi5fcmVtb3RlX2Fj
a19kZWxheV9leHBvbmVudAotICAgICAgICBpZiBxdWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzLmFj
dGl2ZV9jb25uZWN0aW9uX2lkX2xpbWl0IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2VsZi5f
cmVtb3RlX2FjdGl2ZV9jb25uZWN0aW9uX2lkX2xpbWl0ID0gKAotICAgICAgICAgICAgICAgIHF1
aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMuYWN0aXZlX2Nvbm5lY3Rpb25faWRfbGltaXQKLSAgICAg
ICAgICAgICkKLSAgICAgICAgaWYgcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycy5pZGxlX3RpbWVv
dXQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLl9yZW1vdGVfaWRsZV90aW1lb3V0ID0g
cXVpY190cmFuc3BvcnRfcGFyYW1ldGVycy5pZGxlX3RpbWVvdXQgLyAxMDAwLjAKLSAgICAgICAg
aWYgcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycy5tYXhfYWNrX2RlbGF5IGlzIG5vdCBOb25lOgot
ICAgICAgICAgICAgc2VsZi5fbG9zcy5tYXhfYWNrX2RlbGF5ID0gcXVpY190cmFuc3BvcnRfcGFy
YW1ldGVycy5tYXhfYWNrX2RlbGF5IC8gMTAwMC4wCi0gICAgICAgIHNlbGYuX3JlbW90ZV9tYXhf
ZGF0YWdyYW1fZnJhbWVfc2l6ZSA9ICgKLSAgICAgICAgICAgIHF1aWNfdHJhbnNwb3J0X3BhcmFt
ZXRlcnMubWF4X2RhdGFncmFtX2ZyYW1lX3NpemUKLSAgICAgICAgKQotICAgICAgICBmb3IgcGFy
YW0gaW4gWwotICAgICAgICAgICAgIm1heF9kYXRhIiwKLSAgICAgICAgICAgICJtYXhfc3RyZWFt
X2RhdGFfYmlkaV9sb2NhbCIsCi0gICAgICAgICAgICAibWF4X3N0cmVhbV9kYXRhX2JpZGlfcmVt
b3RlIiwKLSAgICAgICAgICAgICJtYXhfc3RyZWFtX2RhdGFfdW5pIiwKLSAgICAgICAgICAgICJt
YXhfc3RyZWFtc19iaWRpIiwKLSAgICAgICAgICAgICJtYXhfc3RyZWFtc191bmkiLAotICAgICAg
ICBdOgotICAgICAgICAgICAgdmFsdWUgPSBnZXRhdHRyKHF1aWNfdHJhbnNwb3J0X3BhcmFtZXRl
cnMsICJpbml0aWFsXyIgKyBwYXJhbSkKLSAgICAgICAgICAgIGlmIHZhbHVlIGlzIG5vdCBOb25l
OgotICAgICAgICAgICAgICAgIHNldGF0dHIoc2VsZiwgIl9yZW1vdGVfIiArIHBhcmFtLCB2YWx1
ZSkKLQotICAgIGRlZiBfc2VyaWFsaXplX3RyYW5zcG9ydF9wYXJhbWV0ZXJzKHNlbGYpIC0+IGJ5
dGVzOgotICAgICAgICBxdWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzID0gUXVpY1RyYW5zcG9ydFBh
cmFtZXRlcnMoCi0gICAgICAgICAgICBhY2tfZGVsYXlfZXhwb25lbnQ9c2VsZi5fbG9jYWxfYWNr
X2RlbGF5X2V4cG9uZW50LAotICAgICAgICAgICAgYWN0aXZlX2Nvbm5lY3Rpb25faWRfbGltaXQ9
c2VsZi5fbG9jYWxfYWN0aXZlX2Nvbm5lY3Rpb25faWRfbGltaXQsCi0gICAgICAgICAgICBpZGxl
X3RpbWVvdXQ9aW50KHNlbGYuX2NvbmZpZ3VyYXRpb24uaWRsZV90aW1lb3V0ICogMTAwMCksCi0g
ICAgICAgICAgICBpbml0aWFsX21heF9kYXRhPXNlbGYuX2xvY2FsX21heF9kYXRhLAotICAgICAg
ICAgICAgaW5pdGlhbF9tYXhfc3RyZWFtX2RhdGFfYmlkaV9sb2NhbD1zZWxmLl9sb2NhbF9tYXhf
c3RyZWFtX2RhdGFfYmlkaV9sb2NhbCwKLSAgICAgICAgICAgIGluaXRpYWxfbWF4X3N0cmVhbV9k
YXRhX2JpZGlfcmVtb3RlPXNlbGYuX2xvY2FsX21heF9zdHJlYW1fZGF0YV9iaWRpX3JlbW90ZSwK
LSAgICAgICAgICAgIGluaXRpYWxfbWF4X3N0cmVhbV9kYXRhX3VuaT1zZWxmLl9sb2NhbF9tYXhf
c3RyZWFtX2RhdGFfdW5pLAotICAgICAgICAgICAgaW5pdGlhbF9tYXhfc3RyZWFtc19iaWRpPXNl
bGYuX2xvY2FsX21heF9zdHJlYW1zX2JpZGksCi0gICAgICAgICAgICBpbml0aWFsX21heF9zdHJl
YW1zX3VuaT1zZWxmLl9sb2NhbF9tYXhfc3RyZWFtc191bmksCi0gICAgICAgICAgICBtYXhfYWNr
X2RlbGF5PTI1LAotICAgICAgICAgICAgbWF4X2RhdGFncmFtX2ZyYW1lX3NpemU9c2VsZi5fY29u
ZmlndXJhdGlvbi5tYXhfZGF0YWdyYW1fZnJhbWVfc2l6ZSwKLSAgICAgICAgICAgIHF1YW50dW1f
cmVhZGluZXNzPWIiUSIgKiAxMjAwCi0gICAgICAgICAgICBpZiBzZWxmLl9jb25maWd1cmF0aW9u
LnF1YW50dW1fcmVhZGluZXNzX3Rlc3QKLSAgICAgICAgICAgIGVsc2UgTm9uZSwKLSAgICAgICAg
KQotICAgICAgICBpZiBub3Qgc2VsZi5faXNfY2xpZW50OgotICAgICAgICAgICAgcXVpY190cmFu
c3BvcnRfcGFyYW1ldGVycy5vcmlnaW5hbF9jb25uZWN0aW9uX2lkID0gKAotICAgICAgICAgICAg
ICAgIHNlbGYuX29yaWdpbmFsX2Nvbm5lY3Rpb25faWQKLSAgICAgICAgICAgICkKLQotICAgICAg
ICAjIGxvZyBldmVudAotICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToK
LSAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmxvZ19ldmVudCgKLSAgICAgICAgICAgICAg
ICBjYXRlZ29yeT0idHJhbnNwb3J0IiwKLSAgICAgICAgICAgICAgICBldmVudD0icGFyYW1ldGVy
c19zZXQiLAotICAgICAgICAgICAgICAgIGRhdGE9c2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX3Ry
YW5zcG9ydF9wYXJhbWV0ZXJzKAotICAgICAgICAgICAgICAgICAgICBvd25lcj0ibG9jYWwiLCBw
YXJhbWV0ZXJzPXF1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMKLSAgICAgICAgICAgICAgICApLAot
ICAgICAgICAgICAgKQotCi0gICAgICAgIGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0eT0zICogUEFDS0VU
X01BWF9TSVpFKQotICAgICAgICBwdXNoX3F1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMoCi0gICAg
ICAgICAgICBidWYsIHF1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMsIHByb3RvY29sX3ZlcnNpb249
c2VsZi5fdmVyc2lvbgotICAgICAgICApCi0gICAgICAgIHJldHVybiBidWYuZGF0YQotCi0gICAg
ZGVmIF9zZXRfc3RhdGUoc2VsZiwgc3RhdGU6IFF1aWNDb25uZWN0aW9uU3RhdGUpIC0+IE5vbmU6
Ci0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygiJXMgLT4gJXMiLCBzZWxmLl9zdGF0ZSwgc3Rh
dGUpCi0gICAgICAgIHNlbGYuX3N0YXRlID0gc3RhdGUKLQotICAgIGRlZiBfc3RyZWFtX2Nhbl9y
ZWNlaXZlKHNlbGYsIHN0cmVhbV9pZDogaW50KSAtPiBib29sOgotICAgICAgICByZXR1cm4gc3Ry
ZWFtX2lzX2NsaWVudF9pbml0aWF0ZWQoCi0gICAgICAgICAgICBzdHJlYW1faWQKLSAgICAgICAg
KSAhPSBzZWxmLl9pc19jbGllbnQgb3Igbm90IHN0cmVhbV9pc191bmlkaXJlY3Rpb25hbChzdHJl
YW1faWQpCi0KLSAgICBkZWYgX3N0cmVhbV9jYW5fc2VuZChzZWxmLCBzdHJlYW1faWQ6IGludCkg
LT4gYm9vbDoKLSAgICAgICAgcmV0dXJuIHN0cmVhbV9pc19jbGllbnRfaW5pdGlhdGVkKAotICAg
ICAgICAgICAgc3RyZWFtX2lkCi0gICAgICAgICkgPT0gc2VsZi5faXNfY2xpZW50IG9yIG5vdCBz
dHJlYW1faXNfdW5pZGlyZWN0aW9uYWwoc3RyZWFtX2lkKQotCi0gICAgZGVmIF91bmJsb2NrX3N0
cmVhbXMoc2VsZiwgaXNfdW5pZGlyZWN0aW9uYWw6IGJvb2wpIC0+IE5vbmU6Ci0gICAgICAgIGlm
IGlzX3VuaWRpcmVjdGlvbmFsOgotICAgICAgICAgICAgbWF4X3N0cmVhbV9kYXRhX3JlbW90ZSA9
IHNlbGYuX3JlbW90ZV9tYXhfc3RyZWFtX2RhdGFfdW5pCi0gICAgICAgICAgICBtYXhfc3RyZWFt
cyA9IHNlbGYuX3JlbW90ZV9tYXhfc3RyZWFtc191bmkKLSAgICAgICAgICAgIHN0cmVhbXNfYmxv
Y2tlZCA9IHNlbGYuX3N0cmVhbXNfYmxvY2tlZF91bmkKLSAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgIG1heF9zdHJlYW1fZGF0YV9yZW1vdGUgPSBzZWxmLl9yZW1vdGVfbWF4X3N0cmVhbV9kYXRh
X2JpZGlfcmVtb3RlCi0gICAgICAgICAgICBtYXhfc3RyZWFtcyA9IHNlbGYuX3JlbW90ZV9tYXhf
c3RyZWFtc19iaWRpCi0gICAgICAgICAgICBzdHJlYW1zX2Jsb2NrZWQgPSBzZWxmLl9zdHJlYW1z
X2Jsb2NrZWRfYmlkaQotCi0gICAgICAgIHdoaWxlIHN0cmVhbXNfYmxvY2tlZCBhbmQgc3RyZWFt
c19ibG9ja2VkWzBdLnN0cmVhbV9pZCAvLyA0IDwgbWF4X3N0cmVhbXM6Ci0gICAgICAgICAgICBz
dHJlYW0gPSBzdHJlYW1zX2Jsb2NrZWQucG9wKDApCi0gICAgICAgICAgICBzdHJlYW0uaXNfYmxv
Y2tlZCA9IEZhbHNlCi0gICAgICAgICAgICBzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX3JlbW90ZSA9
IG1heF9zdHJlYW1fZGF0YV9yZW1vdGUKLQotICAgICAgICBpZiBub3Qgc2VsZi5fc3RyZWFtc19i
bG9ja2VkX2JpZGkgYW5kIG5vdCBzZWxmLl9zdHJlYW1zX2Jsb2NrZWRfdW5pOgotICAgICAgICAg
ICAgc2VsZi5fc3RyZWFtc19ibG9ja2VkX3BlbmRpbmcgPSBGYWxzZQotCi0gICAgZGVmIF91cGRh
dGVfdHJhZmZpY19rZXkoCi0gICAgICAgIHNlbGYsCi0gICAgICAgIGRpcmVjdGlvbjogdGxzLkRp
cmVjdGlvbiwKLSAgICAgICAgZXBvY2g6IHRscy5FcG9jaCwKLSAgICAgICAgY2lwaGVyX3N1aXRl
OiB0bHMuQ2lwaGVyU3VpdGUsCi0gICAgICAgIHNlY3JldDogYnl0ZXMsCi0gICAgKSAtPiBOb25l
OgotICAgICAgICAiIiIKLSAgICAgICAgQ2FsbGJhY2sgd2hpY2ggaXMgaW52b2tlZCBieSB0aGUg
VExTIGVuZ2luZSB3aGVuIG5ldyB0cmFmZmljIGtleXMgYXJlCi0gICAgICAgIGF2YWlsYWJsZS4K
LSAgICAgICAgIiIiCi0gICAgICAgIHNlY3JldHNfbG9nX2ZpbGUgPSBzZWxmLl9jb25maWd1cmF0
aW9uLnNlY3JldHNfbG9nX2ZpbGUKLSAgICAgICAgaWYgc2VjcmV0c19sb2dfZmlsZSBpcyBub3Qg
Tm9uZToKLSAgICAgICAgICAgIGxhYmVsX3JvdyA9IHNlbGYuX2lzX2NsaWVudCA9PSAoZGlyZWN0
aW9uID09IHRscy5EaXJlY3Rpb24uREVDUllQVCkKLSAgICAgICAgICAgIGxhYmVsID0gU0VDUkVU
U19MQUJFTFNbbGFiZWxfcm93XVtlcG9jaC52YWx1ZV0KLSAgICAgICAgICAgIHNlY3JldHNfbG9n
X2ZpbGUud3JpdGUoCi0gICAgICAgICAgICAgICAgIiVzICVzICVzXG4iICUgKGxhYmVsLCBzZWxm
LnRscy5jbGllbnRfcmFuZG9tLmhleCgpLCBzZWNyZXQuaGV4KCkpCi0gICAgICAgICAgICApCi0g
ICAgICAgICAgICBzZWNyZXRzX2xvZ19maWxlLmZsdXNoKCkKLQotICAgICAgICBjcnlwdG8gPSBz
ZWxmLl9jcnlwdG9zW2Vwb2NoXQotICAgICAgICBpZiBkaXJlY3Rpb24gPT0gdGxzLkRpcmVjdGlv
bi5FTkNSWVBUOgotICAgICAgICAgICAgY3J5cHRvLnNlbmQuc2V0dXAoCi0gICAgICAgICAgICAg
ICAgY2lwaGVyX3N1aXRlPWNpcGhlcl9zdWl0ZSwgc2VjcmV0PXNlY3JldCwgdmVyc2lvbj1zZWxm
Ll92ZXJzaW9uCi0gICAgICAgICAgICApCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjcnlw
dG8ucmVjdi5zZXR1cCgKLSAgICAgICAgICAgICAgICBjaXBoZXJfc3VpdGU9Y2lwaGVyX3N1aXRl
LCBzZWNyZXQ9c2VjcmV0LCB2ZXJzaW9uPXNlbGYuX3ZlcnNpb24KLSAgICAgICAgICAgICkKLQot
ICAgIGRlZiBfd3JpdGVfYXBwbGljYXRpb24oCi0gICAgICAgIHNlbGYsIGJ1aWxkZXI6IFF1aWNQ
YWNrZXRCdWlsZGVyLCBuZXR3b3JrX3BhdGg6IFF1aWNOZXR3b3JrUGF0aCwgbm93OiBmbG9hdAot
ICAgICkgLT4gTm9uZToKLSAgICAgICAgY3J5cHRvX3N0cmVhbTogT3B0aW9uYWxbUXVpY1N0cmVh
bV0gPSBOb25lCi0gICAgICAgIGlmIHNlbGYuX2NyeXB0b3NbdGxzLkVwb2NoLk9ORV9SVFRdLnNl
bmQuaXNfdmFsaWQoKToKLSAgICAgICAgICAgIGNyeXB0byA9IHNlbGYuX2NyeXB0b3NbdGxzLkVw
b2NoLk9ORV9SVFRdCi0gICAgICAgICAgICBjcnlwdG9fc3RyZWFtID0gc2VsZi5fY3J5cHRvX3N0
cmVhbXNbdGxzLkVwb2NoLk9ORV9SVFRdCi0gICAgICAgICAgICBwYWNrZXRfdHlwZSA9IFBBQ0tF
VF9UWVBFX09ORV9SVFQKLSAgICAgICAgZWxpZiBzZWxmLl9jcnlwdG9zW3Rscy5FcG9jaC5aRVJP
X1JUVF0uc2VuZC5pc192YWxpZCgpOgotICAgICAgICAgICAgY3J5cHRvID0gc2VsZi5fY3J5cHRv
c1t0bHMuRXBvY2guWkVST19SVFRdCi0gICAgICAgICAgICBwYWNrZXRfdHlwZSA9IFBBQ0tFVF9U
WVBFX1pFUk9fUlRUCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAg
c3BhY2UgPSBzZWxmLl9zcGFjZXNbdGxzLkVwb2NoLk9ORV9SVFRdCi0KLSAgICAgICAgd2hpbGUg
VHJ1ZToKLSAgICAgICAgICAgICMgYXBwbHkgcGFjaW5nLCBleGNlcHQgaWYgd2UgaGF2ZSBBQ0tz
IHRvIHNlbmQKLSAgICAgICAgICAgIGlmIHNwYWNlLmFja19hdCBpcyBOb25lIG9yIHNwYWNlLmFj
a19hdCA+PSBub3c6Ci0gICAgICAgICAgICAgICAgc2VsZi5fcGFjaW5nX2F0ID0gc2VsZi5fbG9z
cy5fcGFjZXIubmV4dF9zZW5kX3RpbWUobm93PW5vdykKLSAgICAgICAgICAgICAgICBpZiBzZWxm
Ll9wYWNpbmdfYXQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAg
ICAgICAgICBidWlsZGVyLnN0YXJ0X3BhY2tldChwYWNrZXRfdHlwZSwgY3J5cHRvKQotCi0gICAg
ICAgICAgICBpZiBzZWxmLl9oYW5kc2hha2VfY29tcGxldGU6Ci0gICAgICAgICAgICAgICAgIyBB
Q0sKLSAgICAgICAgICAgICAgICBpZiBzcGFjZS5hY2tfYXQgaXMgbm90IE5vbmUgYW5kIHNwYWNl
LmFja19hdCA8PSBub3c6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX2Fja19mcmFt
ZShidWlsZGVyPWJ1aWxkZXIsIHNwYWNlPXNwYWNlLCBub3c9bm93KQotCi0gICAgICAgICAgICAg
ICAgIyBIQU5EU0hBS0VfRE9ORQotICAgICAgICAgICAgICAgIGlmIHNlbGYuX2hhbmRzaGFrZV9k
b25lX3BlbmRpbmc6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX2hhbmRzaGFrZV9k
b25lX2ZyYW1lKGJ1aWxkZXI9YnVpbGRlcikKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5faGFu
ZHNoYWtlX2RvbmVfcGVuZGluZyA9IEZhbHNlCi0KLSAgICAgICAgICAgICAgICAjIFBBVEggQ0hB
TExFTkdFCi0gICAgICAgICAgICAgICAgaWYgKAotICAgICAgICAgICAgICAgICAgICBub3QgbmV0
d29ya19wYXRoLmlzX3ZhbGlkYXRlZAotICAgICAgICAgICAgICAgICAgICBhbmQgbmV0d29ya19w
YXRoLmxvY2FsX2NoYWxsZW5nZSBpcyBOb25lCi0gICAgICAgICAgICAgICAgKToKLSAgICAgICAg
ICAgICAgICAgICAgY2hhbGxlbmdlID0gb3MudXJhbmRvbSg4KQotICAgICAgICAgICAgICAgICAg
ICBzZWxmLl93cml0ZV9wYXRoX2NoYWxsZW5nZV9mcmFtZSgKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGJ1aWxkZXI9YnVpbGRlciwgY2hhbGxlbmdlPWNoYWxsZW5nZQotICAgICAgICAgICAgICAg
ICAgICApCi0gICAgICAgICAgICAgICAgICAgIG5ldHdvcmtfcGF0aC5sb2NhbF9jaGFsbGVuZ2Ug
PSBjaGFsbGVuZ2UKLQotICAgICAgICAgICAgICAgICMgUEFUSCBSRVNQT05TRQotICAgICAgICAg
ICAgICAgIGlmIG5ldHdvcmtfcGF0aC5yZW1vdGVfY2hhbGxlbmdlIGlzIG5vdCBOb25lOgotICAg
ICAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9wYXRoX3Jlc3BvbnNlX2ZyYW1lKAotICAgICAg
ICAgICAgICAgICAgICAgICAgYnVpbGRlcj1idWlsZGVyLCBjaGFsbGVuZ2U9bmV0d29ya19wYXRo
LnJlbW90ZV9jaGFsbGVuZ2UKLSAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAg
ICAgICBuZXR3b3JrX3BhdGgucmVtb3RlX2NoYWxsZW5nZSA9IE5vbmUKLQotICAgICAgICAgICAg
ICAgICMgTkVXX0NPTk5FQ1RJT05fSUQKLSAgICAgICAgICAgICAgICBmb3IgY29ubmVjdGlvbl9p
ZCBpbiBzZWxmLl9ob3N0X2NpZHM6Ci0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBjb25uZWN0
aW9uX2lkLndhc19zZW50OgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fd3JpdGVfbmV3
X2Nvbm5lY3Rpb25faWRfZnJhbWUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRl
cj1idWlsZGVyLCBjb25uZWN0aW9uX2lkPWNvbm5lY3Rpb25faWQKLSAgICAgICAgICAgICAgICAg
ICAgICAgICkKLQotICAgICAgICAgICAgICAgICMgUkVUSVJFX0NPTk5FQ1RJT05fSUQKLSAgICAg
ICAgICAgICAgICB3aGlsZSBzZWxmLl9yZXRpcmVfY29ubmVjdGlvbl9pZHM6Ci0gICAgICAgICAg
ICAgICAgICAgIHNlcXVlbmNlX251bWJlciA9IHNlbGYuX3JldGlyZV9jb25uZWN0aW9uX2lkcy5w
b3AoMCkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fd3JpdGVfcmV0aXJlX2Nvbm5lY3Rpb25f
aWRfZnJhbWUoCi0gICAgICAgICAgICAgICAgICAgICAgICBidWlsZGVyPWJ1aWxkZXIsIHNlcXVl
bmNlX251bWJlcj1zZXF1ZW5jZV9udW1iZXIKLSAgICAgICAgICAgICAgICAgICAgKQotCi0gICAg
ICAgICAgICAgICAgIyBTVFJFQU1TX0JMT0NLRUQKLSAgICAgICAgICAgICAgICBpZiBzZWxmLl9z
dHJlYW1zX2Jsb2NrZWRfcGVuZGluZzoKLSAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5fc3Ry
ZWFtc19ibG9ja2VkX2JpZGk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9z
dHJlYW1zX2Jsb2NrZWRfZnJhbWUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRl
cj1idWlsZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lX3R5cGU9UXVpY0Zy
YW1lVHlwZS5TVFJFQU1TX0JMT0NLRURfQklESSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsaW1pdD1zZWxmLl9yZW1vdGVfbWF4X3N0cmVhbXNfYmlkaSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5fc3RyZWFtc19ibG9ja2VkX3Vu
aToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX3N0cmVhbXNfYmxvY2tlZF9m
cmFtZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZGVyPWJ1aWxkZXIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1RdWljRnJhbWVUeXBlLlNUUkVBTVNf
QkxPQ0tFRF9VTkksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGltaXQ9c2VsZi5fcmVt
b3RlX21heF9zdHJlYW1zX3VuaSwKLSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fc3RyZWFtc19ibG9ja2VkX3BlbmRpbmcgPSBGYWxzZQotCi0gICAg
ICAgICAgICAgICAgIyBNQVhfREFUQQotICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX2Nvbm5l
Y3Rpb25fbGltaXRzKGJ1aWxkZXI9YnVpbGRlciwgc3BhY2U9c3BhY2UpCi0KLSAgICAgICAgICAg
ICMgc3RyZWFtLWxldmVsIGxpbWl0cwotICAgICAgICAgICAgZm9yIHN0cmVhbSBpbiBzZWxmLl9z
dHJlYW1zLnZhbHVlcygpOgotICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX3N0cmVhbV9saW1p
dHMoYnVpbGRlcj1idWlsZGVyLCBzcGFjZT1zcGFjZSwgc3RyZWFtPXN0cmVhbSkKLQotICAgICAg
ICAgICAgIyBQSU5HICh1c2VyLXJlcXVlc3QpCi0gICAgICAgICAgICBpZiBzZWxmLl9waW5nX3Bl
bmRpbmc6Ci0gICAgICAgICAgICAgICAgc2VsZi5fd3JpdGVfcGluZ19mcmFtZShidWlsZGVyLCBz
ZWxmLl9waW5nX3BlbmRpbmcpCi0gICAgICAgICAgICAgICAgc2VsZi5fcGluZ19wZW5kaW5nLmNs
ZWFyKCkKLQotICAgICAgICAgICAgIyBQSU5HIChwcm9iZSkKLSAgICAgICAgICAgIGlmIHNlbGYu
X3Byb2JlX3BlbmRpbmc6Ci0gICAgICAgICAgICAgICAgc2VsZi5fd3JpdGVfcGluZ19mcmFtZShi
dWlsZGVyLCBjb21tZW50PSJwcm9iZSIpCi0gICAgICAgICAgICAgICAgc2VsZi5fcHJvYmVfcGVu
ZGluZyA9IEZhbHNlCi0KLSAgICAgICAgICAgICMgQ1JZUFRPCi0gICAgICAgICAgICBpZiBjcnlw
dG9fc3RyZWFtIGlzIG5vdCBOb25lIGFuZCBub3QgY3J5cHRvX3N0cmVhbS5zZW5kX2J1ZmZlcl9p
c19lbXB0eToKLSAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9jcnlwdG9fZnJhbWUoCi0gICAg
ICAgICAgICAgICAgICAgIGJ1aWxkZXI9YnVpbGRlciwgc3BhY2U9c3BhY2UsIHN0cmVhbT1jcnlw
dG9fc3RyZWFtCi0gICAgICAgICAgICAgICAgKQotCi0gICAgICAgICAgICAjIERBVEFHUkFNCi0g
ICAgICAgICAgICB3aGlsZSBzZWxmLl9kYXRhZ3JhbXNfcGVuZGluZzoKLSAgICAgICAgICAgICAg
ICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX2RhdGFncmFtX2ZyYW1lKAot
ICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRlcj1idWlsZGVyLAotICAgICAgICAgICAgICAg
ICAgICAgICAgZGF0YT1zZWxmLl9kYXRhZ3JhbXNfcGVuZGluZ1swXSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGZyYW1lX3R5cGU9UXVpY0ZyYW1lVHlwZS5EQVRBR1JBTV9XSVRIX0xFTkdUSCwK
LSAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9kYXRhZ3Jh
bXNfcGVuZGluZy5wb3BsZWZ0KCkKLSAgICAgICAgICAgICAgICBleGNlcHQgUXVpY1BhY2tldEJ1
aWxkZXJTdG9wOgotICAgICAgICAgICAgICAgICAgICBicmVhawotCi0gICAgICAgICAgICAjIFNU
UkVBTQotICAgICAgICAgICAgZm9yIHN0cmVhbSBpbiBzZWxmLl9zdHJlYW1zLnZhbHVlcygpOgot
ICAgICAgICAgICAgICAgIGlmIG5vdCBzdHJlYW0uaXNfYmxvY2tlZCBhbmQgbm90IHN0cmVhbS5z
ZW5kX2J1ZmZlcl9pc19lbXB0eToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVtb3RlX21h
eF9kYXRhX3VzZWQgKz0gc2VsZi5fd3JpdGVfc3RyZWFtX2ZyYW1lKAotICAgICAgICAgICAgICAg
ICAgICAgICAgYnVpbGRlcj1idWlsZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgc3BhY2U9
c3BhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW09c3RyZWFtLAotICAgICAgICAg
ICAgICAgICAgICAgICAgbWF4X29mZnNldD1taW4oCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RyZWFtLl9zZW5kX2hpZ2hlc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHNl
bGYuX3JlbW90ZV9tYXhfZGF0YQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gc2VsZi5f
cmVtb3RlX21heF9kYXRhX3VzZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFt
Lm1heF9zdHJlYW1fZGF0YV9yZW1vdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICApLAotICAg
ICAgICAgICAgICAgICAgICApCi0KLSAgICAgICAgICAgIGlmIGJ1aWxkZXIucGFja2V0X2lzX2Vt
cHR5OgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgICAgIHNlbGYuX2xvc3MuX3BhY2VyLnVwZGF0ZV9hZnRlcl9zZW5kKG5vdz1ub3cpCi0KLSAg
ICBkZWYgX3dyaXRlX2hhbmRzaGFrZSgKLSAgICAgICAgc2VsZiwgYnVpbGRlcjogUXVpY1BhY2tl
dEJ1aWxkZXIsIGVwb2NoOiB0bHMuRXBvY2gsIG5vdzogZmxvYXQKLSAgICApIC0+IE5vbmU6Ci0g
ICAgICAgIGNyeXB0byA9IHNlbGYuX2NyeXB0b3NbZXBvY2hdCi0gICAgICAgIGlmIG5vdCBjcnlw
dG8uc2VuZC5pc192YWxpZCgpOgotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgY3J5cHRv
X3N0cmVhbSA9IHNlbGYuX2NyeXB0b19zdHJlYW1zW2Vwb2NoXQotICAgICAgICBzcGFjZSA9IHNl
bGYuX3NwYWNlc1tlcG9jaF0KLQotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgaWYg
ZXBvY2ggPT0gdGxzLkVwb2NoLklOSVRJQUw6Ci0gICAgICAgICAgICAgICAgcGFja2V0X3R5cGUg
PSBQQUNLRVRfVFlQRV9JTklUSUFMCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAg
IHBhY2tldF90eXBlID0gUEFDS0VUX1RZUEVfSEFORFNIQUtFCi0gICAgICAgICAgICBidWlsZGVy
LnN0YXJ0X3BhY2tldChwYWNrZXRfdHlwZSwgY3J5cHRvKQotCi0gICAgICAgICAgICAjIEFDSwot
ICAgICAgICAgICAgaWYgc3BhY2UuYWNrX2F0IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAg
IHNlbGYuX3dyaXRlX2Fja19mcmFtZShidWlsZGVyPWJ1aWxkZXIsIHNwYWNlPXNwYWNlLCBub3c9
bm93KQotCi0gICAgICAgICAgICAjIENSWVBUTwotICAgICAgICAgICAgaWYgbm90IGNyeXB0b19z
dHJlYW0uc2VuZF9idWZmZXJfaXNfZW1wdHk6Ci0gICAgICAgICAgICAgICAgaWYgc2VsZi5fd3Jp
dGVfY3J5cHRvX2ZyYW1lKAotICAgICAgICAgICAgICAgICAgICBidWlsZGVyPWJ1aWxkZXIsIHNw
YWNlPXNwYWNlLCBzdHJlYW09Y3J5cHRvX3N0cmVhbQotICAgICAgICAgICAgICAgICk6Ci0gICAg
ICAgICAgICAgICAgICAgIHNlbGYuX3Byb2JlX3BlbmRpbmcgPSBGYWxzZQotCi0gICAgICAgICAg
ICAjIFBJTkcgKHByb2JlKQotICAgICAgICAgICAgaWYgKAotICAgICAgICAgICAgICAgIHNlbGYu
X3Byb2JlX3BlbmRpbmcKLSAgICAgICAgICAgICAgICBhbmQgZXBvY2ggPT0gdGxzLkVwb2NoLkhB
TkRTSEFLRQotICAgICAgICAgICAgICAgIGFuZCBub3Qgc2VsZi5faGFuZHNoYWtlX2NvbXBsZXRl
Ci0gICAgICAgICAgICApOgotICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX3BpbmdfZnJhbWUo
YnVpbGRlciwgY29tbWVudD0icHJvYmUiKQotICAgICAgICAgICAgICAgIHNlbGYuX3Byb2JlX3Bl
bmRpbmcgPSBGYWxzZQotCi0gICAgICAgICAgICBpZiBidWlsZGVyLnBhY2tldF9pc19lbXB0eToK
LSAgICAgICAgICAgICAgICBicmVhawotCi0gICAgZGVmIF93cml0ZV9hY2tfZnJhbWUoCi0gICAg
ICAgIHNlbGYsIGJ1aWxkZXI6IFF1aWNQYWNrZXRCdWlsZGVyLCBzcGFjZTogUXVpY1BhY2tldFNw
YWNlLCBub3c6IGZsb2F0Ci0gICAgKSAtPiBOb25lOgotICAgICAgICAjIGNhbGN1bGF0ZSBBQ0sg
ZGVsYXkKLSAgICAgICAgYWNrX2RlbGF5ID0gbm93IC0gc3BhY2UubGFyZ2VzdF9yZWNlaXZlZF90
aW1lCi0gICAgICAgIGFja19kZWxheV9lbmNvZGVkID0gaW50KGFja19kZWxheSAqIDEwMDAwMDAp
ID4+IHNlbGYuX2xvY2FsX2Fja19kZWxheV9leHBvbmVudAotCi0gICAgICAgIGJ1ZiA9IGJ1aWxk
ZXIuc3RhcnRfZnJhbWUoCi0gICAgICAgICAgICBRdWljRnJhbWVUeXBlLkFDSywKLSAgICAgICAg
ICAgIGNhcGFjaXR5PUFDS19GUkFNRV9DQVBBQ0lUWSwKLSAgICAgICAgICAgIGhhbmRsZXI9c2Vs
Zi5fb25fYWNrX2RlbGl2ZXJ5LAotICAgICAgICAgICAgaGFuZGxlcl9hcmdzPShzcGFjZSwgc3Bh
Y2UubGFyZ2VzdF9yZWNlaXZlZF9wYWNrZXQpLAotICAgICAgICApCi0gICAgICAgIHJhbmdlcyA9
IHB1c2hfYWNrX2ZyYW1lKGJ1Ziwgc3BhY2UuYWNrX3F1ZXVlLCBhY2tfZGVsYXlfZW5jb2RlZCkK
LSAgICAgICAgc3BhY2UuYWNrX2F0ID0gTm9uZQotCi0gICAgICAgICMgbG9nIGZyYW1lCi0gICAg
ICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgYnVpbGRl
ci5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAotICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNf
bG9nZ2VyLmVuY29kZV9hY2tfZnJhbWUoCi0gICAgICAgICAgICAgICAgICAgIHJhbmdlcz1zcGFj
ZS5hY2tfcXVldWUsIGRlbGF5PWFja19kZWxheQotICAgICAgICAgICAgICAgICkKLSAgICAgICAg
ICAgICkKLQotICAgICAgICAjIGNoZWNrIGlmIHdlIG5lZWQgdG8gdHJpZ2dlciBhbiBBQ0stb2Yt
QUNLCi0gICAgICAgIGlmIHJhbmdlcyA+IDEgYW5kIGJ1aWxkZXIucGFja2V0X251bWJlciAlIDgg
PT0gMDoKLSAgICAgICAgICAgIHNlbGYuX3dyaXRlX3BpbmdfZnJhbWUoYnVpbGRlciwgY29tbWVu
dD0iQUNLLW9mLUFDSyB0cmlnZ2VyIikKLQotICAgIGRlZiBfd3JpdGVfY29ubmVjdGlvbl9jbG9z
ZV9mcmFtZSgKLSAgICAgICAgc2VsZiwKLSAgICAgICAgYnVpbGRlcjogUXVpY1BhY2tldEJ1aWxk
ZXIsCi0gICAgICAgIGVycm9yX2NvZGU6IGludCwKLSAgICAgICAgZnJhbWVfdHlwZTogT3B0aW9u
YWxbaW50XSwKLSAgICAgICAgcmVhc29uX3BocmFzZTogc3RyLAotICAgICkgLT4gTm9uZToKLSAg
ICAgICAgcmVhc29uX2J5dGVzID0gcmVhc29uX3BocmFzZS5lbmNvZGUoInV0ZjgiKQotICAgICAg
ICByZWFzb25fbGVuZ3RoID0gbGVuKHJlYXNvbl9ieXRlcykKLQotICAgICAgICBpZiBmcmFtZV90
eXBlIGlzIE5vbmU6Ci0gICAgICAgICAgICBidWYgPSBidWlsZGVyLnN0YXJ0X2ZyYW1lKAotICAg
ICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuQVBQTElDQVRJT05fQ0xPU0UsCi0gICAgICAgICAg
ICAgICAgY2FwYWNpdHk9QVBQTElDQVRJT05fQ0xPU0VfRlJBTUVfQ0FQQUNJVFkgKyByZWFzb25f
bGVuZ3RoLAotICAgICAgICAgICAgKQotICAgICAgICAgICAgYnVmLnB1c2hfdWludF92YXIoZXJy
b3JfY29kZSkKLSAgICAgICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKHJlYXNvbl9sZW5ndGgpCi0g
ICAgICAgICAgICBidWYucHVzaF9ieXRlcyhyZWFzb25fYnl0ZXMpCi0gICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICBidWYgPSBidWlsZGVyLnN0YXJ0X2ZyYW1lKAotICAgICAgICAgICAgICAgIFF1
aWNGcmFtZVR5cGUuVFJBTlNQT1JUX0NMT1NFLAotICAgICAgICAgICAgICAgIGNhcGFjaXR5PVRS
QU5TUE9SVF9DTE9TRV9GUkFNRV9DQVBBQ0lUWSArIHJlYXNvbl9sZW5ndGgsCi0gICAgICAgICAg
ICApCi0gICAgICAgICAgICBidWYucHVzaF91aW50X3ZhcihlcnJvcl9jb2RlKQotICAgICAgICAg
ICAgYnVmLnB1c2hfdWludF92YXIoZnJhbWVfdHlwZSkKLSAgICAgICAgICAgIGJ1Zi5wdXNoX3Vp
bnRfdmFyKHJlYXNvbl9sZW5ndGgpCi0gICAgICAgICAgICBidWYucHVzaF9ieXRlcyhyZWFzb25f
Ynl0ZXMpCi0KLSAgICAgICAgIyBsb2cgZnJhbWUKLSAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dn
ZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBidWlsZGVyLnF1aWNfbG9nZ2VyX2ZyYW1lcy5h
cHBlbmQoCi0gICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX2Nvbm5lY3Rp
b25fY2xvc2VfZnJhbWUoCi0gICAgICAgICAgICAgICAgICAgIGVycm9yX2NvZGU9ZXJyb3JfY29k
ZSwKLSAgICAgICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1mcmFtZV90eXBlLAotICAgICAgICAg
ICAgICAgICAgICByZWFzb25fcGhyYXNlPXJlYXNvbl9waHJhc2UsCi0gICAgICAgICAgICAgICAg
KQotICAgICAgICAgICAgKQotCi0gICAgZGVmIF93cml0ZV9jb25uZWN0aW9uX2xpbWl0cygKLSAg
ICAgICAgc2VsZiwgYnVpbGRlcjogUXVpY1BhY2tldEJ1aWxkZXIsIHNwYWNlOiBRdWljUGFja2V0
U3BhY2UKLSAgICApIC0+IE5vbmU6Ci0gICAgICAgICIiIgotICAgICAgICBSYWlzZSBNQVhfREFU
QSBpZiBuZWVkZWQuCi0gICAgICAgICIiIgotICAgICAgICBpZiBzZWxmLl9sb2NhbF9tYXhfZGF0
YV91c2VkICogMiA+IHNlbGYuX2xvY2FsX21heF9kYXRhOgotICAgICAgICAgICAgc2VsZi5fbG9j
YWxfbWF4X2RhdGEgKj0gMgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCJMb2NhbCBt
YXhfZGF0YSByYWlzZWQgdG8gJWQiLCBzZWxmLl9sb2NhbF9tYXhfZGF0YSkKLSAgICAgICAgaWYg
c2VsZi5fbG9jYWxfbWF4X2RhdGFfc2VudCAhPSBzZWxmLl9sb2NhbF9tYXhfZGF0YToKLSAgICAg
ICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUoCi0gICAgICAgICAgICAgICAgUXVpY0Zy
YW1lVHlwZS5NQVhfREFUQSwKLSAgICAgICAgICAgICAgICBjYXBhY2l0eT1NQVhfREFUQV9GUkFN
RV9DQVBBQ0lUWSwKLSAgICAgICAgICAgICAgICBoYW5kbGVyPXNlbGYuX29uX21heF9kYXRhX2Rl
bGl2ZXJ5LAotICAgICAgICAgICAgKQotICAgICAgICAgICAgYnVmLnB1c2hfdWludF92YXIoc2Vs
Zi5fbG9jYWxfbWF4X2RhdGEpCi0gICAgICAgICAgICBzZWxmLl9sb2NhbF9tYXhfZGF0YV9zZW50
ID0gc2VsZi5fbG9jYWxfbWF4X2RhdGEKLQotICAgICAgICAgICAgIyBsb2cgZnJhbWUKLSAgICAg
ICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAg
IGJ1aWxkZXIucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAgICAg
c2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX21heF9kYXRhX2ZyYW1lKHNlbGYuX2xvY2FsX21heF9k
YXRhKQotICAgICAgICAgICAgICAgICkKLQotICAgIGRlZiBfd3JpdGVfY3J5cHRvX2ZyYW1lKAot
ICAgICAgICBzZWxmLCBidWlsZGVyOiBRdWljUGFja2V0QnVpbGRlciwgc3BhY2U6IFF1aWNQYWNr
ZXRTcGFjZSwgc3RyZWFtOiBRdWljU3RyZWFtCi0gICAgKSAtPiBib29sOgotICAgICAgICBmcmFt
ZV9vdmVyaGVhZCA9IDMgKyBzaXplX3VpbnRfdmFyKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0KQot
ICAgICAgICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUoYnVpbGRlci5yZW1haW5pbmdfZmxpZ2h0
X3NwYWNlIC0gZnJhbWVfb3ZlcmhlYWQpCi0gICAgICAgIGlmIGZyYW1lIGlzIG5vdCBOb25lOgot
ICAgICAgICAgICAgYnVmID0gYnVpbGRlci5zdGFydF9mcmFtZSgKLSAgICAgICAgICAgICAgICBR
dWljRnJhbWVUeXBlLkNSWVBUTywKLSAgICAgICAgICAgICAgICBjYXBhY2l0eT1mcmFtZV9vdmVy
aGVhZCwKLSAgICAgICAgICAgICAgICBoYW5kbGVyPXN0cmVhbS5vbl9kYXRhX2RlbGl2ZXJ5LAot
ICAgICAgICAgICAgICAgIGhhbmRsZXJfYXJncz0oZnJhbWUub2Zmc2V0LCBmcmFtZS5vZmZzZXQg
KyBsZW4oZnJhbWUuZGF0YSkpLAotICAgICAgICAgICAgKQotICAgICAgICAgICAgYnVmLnB1c2hf
dWludF92YXIoZnJhbWUub2Zmc2V0KQotICAgICAgICAgICAgYnVmLnB1c2hfdWludDE2KGxlbihm
cmFtZS5kYXRhKSB8IDB4NDAwMCkKLSAgICAgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGZyYW1lLmRh
dGEpCi0KLSAgICAgICAgICAgICMgbG9nIGZyYW1lCi0gICAgICAgICAgICBpZiBzZWxmLl9xdWlj
X2xvZ2dlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBidWlsZGVyLnF1aWNfbG9nZ2Vy
X2ZyYW1lcy5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVu
Y29kZV9jcnlwdG9fZnJhbWUoZnJhbWUpCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAg
cmV0dXJuIFRydWUKLQotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgIGRlZiBfd3JpdGVfZGF0
YWdyYW1fZnJhbWUoCi0gICAgICAgIHNlbGYsIGJ1aWxkZXI6IFF1aWNQYWNrZXRCdWlsZGVyLCBk
YXRhOiBieXRlcywgZnJhbWVfdHlwZTogUXVpY0ZyYW1lVHlwZQotICAgICkgLT4gYm9vbDoKLSAg
ICAgICAgIiIiCi0gICAgICAgIFdyaXRlIGEgREFUQUdSQU0gZnJhbWUuCi0KLSAgICAgICAgUmV0
dXJucyBUcnVlIGlmIHRoZSBmcmFtZSB3YXMgcHJvY2Vzc2VkLCBGYWxzZSBvdGhlcndpc2UuCi0g
ICAgICAgICIiIgotICAgICAgICBhc3NlcnQgZnJhbWVfdHlwZSA9PSBRdWljRnJhbWVUeXBlLkRB
VEFHUkFNX1dJVEhfTEVOR1RICi0gICAgICAgIGxlbmd0aCA9IGxlbihkYXRhKQotICAgICAgICBm
cmFtZV9zaXplID0gMSArIHNpemVfdWludF92YXIobGVuZ3RoKSArIGxlbmd0aAotCi0gICAgICAg
IGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUoZnJhbWVfdHlwZSwgY2FwYWNpdHk9ZnJhbWVfc2l6
ZSkKLSAgICAgICAgYnVmLnB1c2hfdWludF92YXIobGVuZ3RoKQotICAgICAgICBidWYucHVzaF9i
eXRlcyhkYXRhKQotCi0gICAgICAgICMgbG9nIGZyYW1lCi0gICAgICAgIGlmIHNlbGYuX3F1aWNf
bG9nZ2VyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgYnVpbGRlci5xdWljX2xvZ2dlcl9mcmFt
ZXMuYXBwZW5kKAotICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9kYXRh
Z3JhbV9mcmFtZShsZW5ndGg9bGVuZ3RoKQotICAgICAgICAgICAgKQotCi0gICAgICAgIHJldHVy
biBUcnVlCi0KLSAgICBkZWYgX3dyaXRlX2hhbmRzaGFrZV9kb25lX2ZyYW1lKHNlbGYsIGJ1aWxk
ZXI6IFF1aWNQYWNrZXRCdWlsZGVyKSAtPiBOb25lOgotICAgICAgICBidWlsZGVyLnN0YXJ0X2Zy
YW1lKAotICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5IQU5EU0hBS0VfRE9ORSwKLSAgICAgICAg
ICAgIGNhcGFjaXR5PUhBTkRTSEFLRV9ET05FX0ZSQU1FX0NBUEFDSVRZLAotICAgICAgICAgICAg
aGFuZGxlcj1zZWxmLl9vbl9oYW5kc2hha2VfZG9uZV9kZWxpdmVyeSwKLSAgICAgICAgKQotCi0g
ICAgICAgICMgbG9nIGZyYW1lCi0gICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBO
b25lOgotICAgICAgICAgICAgYnVpbGRlci5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAotICAg
ICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9oYW5kc2hha2VfZG9uZV9mcmFt
ZSgpCi0gICAgICAgICAgICApCi0KLSAgICBkZWYgX3dyaXRlX25ld19jb25uZWN0aW9uX2lkX2Zy
YW1lKAotICAgICAgICBzZWxmLCBidWlsZGVyOiBRdWljUGFja2V0QnVpbGRlciwgY29ubmVjdGlv
bl9pZDogUXVpY0Nvbm5lY3Rpb25JZAotICAgICkgLT4gTm9uZToKLSAgICAgICAgcmV0aXJlX3By
aW9yX3RvID0gMCAgIyBGSVhNRQotCi0gICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUo
Ci0gICAgICAgICAgICBRdWljRnJhbWVUeXBlLk5FV19DT05ORUNUSU9OX0lELAotICAgICAgICAg
ICAgY2FwYWNpdHk9TkVXX0NPTk5FQ1RJT05fSURfRlJBTUVfQ0FQQUNJVFksCi0gICAgICAgICAg
ICBoYW5kbGVyPXNlbGYuX29uX25ld19jb25uZWN0aW9uX2lkX2RlbGl2ZXJ5LAotICAgICAgICAg
ICAgaGFuZGxlcl9hcmdzPShjb25uZWN0aW9uX2lkLCksCi0gICAgICAgICkKLSAgICAgICAgYnVm
LnB1c2hfdWludF92YXIoY29ubmVjdGlvbl9pZC5zZXF1ZW5jZV9udW1iZXIpCi0gICAgICAgIGJ1
Zi5wdXNoX3VpbnRfdmFyKHJldGlyZV9wcmlvcl90bykKLSAgICAgICAgYnVmLnB1c2hfdWludDgo
bGVuKGNvbm5lY3Rpb25faWQuY2lkKSkKLSAgICAgICAgYnVmLnB1c2hfYnl0ZXMoY29ubmVjdGlv
bl9pZC5jaWQpCi0gICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGNvbm5lY3Rpb25faWQuc3RhdGVsZXNz
X3Jlc2V0X3Rva2VuKQotCi0gICAgICAgIGNvbm5lY3Rpb25faWQud2FzX3NlbnQgPSBUcnVlCi0g
ICAgICAgIHNlbGYuX2V2ZW50cy5hcHBlbmQoZXZlbnRzLkNvbm5lY3Rpb25JZElzc3VlZChjb25u
ZWN0aW9uX2lkPWNvbm5lY3Rpb25faWQuY2lkKSkKLQotICAgICAgICAjIGxvZyBmcmFtZQotICAg
ICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGJ1aWxk
ZXIucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKLSAgICAgICAgICAgICAgICBzZWxmLl9xdWlj
X2xvZ2dlci5lbmNvZGVfbmV3X2Nvbm5lY3Rpb25faWRfZnJhbWUoCi0gICAgICAgICAgICAgICAg
ICAgIGNvbm5lY3Rpb25faWQ9Y29ubmVjdGlvbl9pZC5jaWQsCi0gICAgICAgICAgICAgICAgICAg
IHJldGlyZV9wcmlvcl90bz1yZXRpcmVfcHJpb3JfdG8sCi0gICAgICAgICAgICAgICAgICAgIHNl
cXVlbmNlX251bWJlcj1jb25uZWN0aW9uX2lkLnNlcXVlbmNlX251bWJlciwKLSAgICAgICAgICAg
ICAgICAgICAgc3RhdGVsZXNzX3Jlc2V0X3Rva2VuPWNvbm5lY3Rpb25faWQuc3RhdGVsZXNzX3Jl
c2V0X3Rva2VuLAotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICkKLQotICAgIGRlZiBf
d3JpdGVfcGF0aF9jaGFsbGVuZ2VfZnJhbWUoCi0gICAgICAgIHNlbGYsIGJ1aWxkZXI6IFF1aWNQ
YWNrZXRCdWlsZGVyLCBjaGFsbGVuZ2U6IGJ5dGVzCi0gICAgKSAtPiBOb25lOgotICAgICAgICBi
dWYgPSBidWlsZGVyLnN0YXJ0X2ZyYW1lKAotICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5QQVRI
X0NIQUxMRU5HRSwgY2FwYWNpdHk9UEFUSF9DSEFMTEVOR0VfRlJBTUVfQ0FQQUNJVFkKLSAgICAg
ICAgKQotICAgICAgICBidWYucHVzaF9ieXRlcyhjaGFsbGVuZ2UpCi0KLSAgICAgICAgIyBsb2cg
ZnJhbWUKLSAgICAgICAgaWYgc2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6Ci0gICAgICAg
ICAgICBidWlsZGVyLnF1aWNfbG9nZ2VyX2ZyYW1lcy5hcHBlbmQoCi0gICAgICAgICAgICAgICAg
c2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX3BhdGhfY2hhbGxlbmdlX2ZyYW1lKGRhdGE9Y2hhbGxl
bmdlKQotICAgICAgICAgICAgKQotCi0gICAgZGVmIF93cml0ZV9wYXRoX3Jlc3BvbnNlX2ZyYW1l
KAotICAgICAgICBzZWxmLCBidWlsZGVyOiBRdWljUGFja2V0QnVpbGRlciwgY2hhbGxlbmdlOiBi
eXRlcwotICAgICkgLT4gTm9uZToKLSAgICAgICAgYnVmID0gYnVpbGRlci5zdGFydF9mcmFtZSgK
LSAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuUEFUSF9SRVNQT05TRSwgY2FwYWNpdHk9UEFUSF9S
RVNQT05TRV9GUkFNRV9DQVBBQ0lUWQotICAgICAgICApCi0gICAgICAgIGJ1Zi5wdXNoX2J5dGVz
KGNoYWxsZW5nZSkKLQotICAgICAgICAjIGxvZyBmcmFtZQotICAgICAgICBpZiBzZWxmLl9xdWlj
X2xvZ2dlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGJ1aWxkZXIucXVpY19sb2dnZXJfZnJh
bWVzLmFwcGVuZCgKLSAgICAgICAgICAgICAgICBzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfcGF0
aF9yZXNwb25zZV9mcmFtZShkYXRhPWNoYWxsZW5nZSkKLSAgICAgICAgICAgICkKLQotICAgIGRl
ZiBfd3JpdGVfcGluZ19mcmFtZSgKLSAgICAgICAgc2VsZiwgYnVpbGRlcjogUXVpY1BhY2tldEJ1
aWxkZXIsIHVpZHM6IExpc3RbaW50XSA9IFtdLCBjb21tZW50PSIiCi0gICAgKToKLSAgICAgICAg
YnVpbGRlci5zdGFydF9mcmFtZSgKLSAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuUElORywKLSAg
ICAgICAgICAgIGNhcGFjaXR5PVBJTkdfRlJBTUVfQ0FQQUNJVFksCi0gICAgICAgICAgICBoYW5k
bGVyPXNlbGYuX29uX3BpbmdfZGVsaXZlcnksCi0gICAgICAgICAgICBoYW5kbGVyX2FyZ3M9KHR1
cGxlKHVpZHMpLCksCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAg
ICAgICAgICAgIlNlbmRpbmcgUElORyVzIGluIHBhY2tldCAlZCIsCi0gICAgICAgICAgICAiICgl
cykiICUgY29tbWVudCBpZiBjb21tZW50IGVsc2UgIiIsCi0gICAgICAgICAgICBidWlsZGVyLnBh
Y2tldF9udW1iZXIsCi0gICAgICAgICkKLQotICAgICAgICAjIGxvZyBmcmFtZQotICAgICAgICBp
ZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGJ1aWxkZXIucXVp
Y19sb2dnZXJfZnJhbWVzLmFwcGVuZChzZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfcGluZ19mcmFt
ZSgpKQotCi0gICAgZGVmIF93cml0ZV9yZXRpcmVfY29ubmVjdGlvbl9pZF9mcmFtZSgKLSAgICAg
ICAgc2VsZiwgYnVpbGRlcjogUXVpY1BhY2tldEJ1aWxkZXIsIHNlcXVlbmNlX251bWJlcjogaW50
Ci0gICAgKSAtPiBOb25lOgotICAgICAgICBidWYgPSBidWlsZGVyLnN0YXJ0X2ZyYW1lKAotICAg
ICAgICAgICAgUXVpY0ZyYW1lVHlwZS5SRVRJUkVfQ09OTkVDVElPTl9JRCwKLSAgICAgICAgICAg
IGNhcGFjaXR5PVJFVElSRV9DT05ORUNUSU9OX0lEX0NBUEFDSVRZLAotICAgICAgICAgICAgaGFu
ZGxlcj1zZWxmLl9vbl9yZXRpcmVfY29ubmVjdGlvbl9pZF9kZWxpdmVyeSwKLSAgICAgICAgICAg
IGhhbmRsZXJfYXJncz0oc2VxdWVuY2VfbnVtYmVyLCksCi0gICAgICAgICkKLSAgICAgICAgYnVm
LnB1c2hfdWludF92YXIoc2VxdWVuY2VfbnVtYmVyKQotCi0gICAgICAgICMgbG9nIGZyYW1lCi0g
ICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgYnVp
bGRlci5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAotICAgICAgICAgICAgICAgIHNlbGYuX3F1
aWNfbG9nZ2VyLmVuY29kZV9yZXRpcmVfY29ubmVjdGlvbl9pZF9mcmFtZShzZXF1ZW5jZV9udW1i
ZXIpCi0gICAgICAgICAgICApCi0KLSAgICBkZWYgX3dyaXRlX3N0cmVhbV9mcmFtZSgKLSAgICAg
ICAgc2VsZiwKLSAgICAgICAgYnVpbGRlcjogUXVpY1BhY2tldEJ1aWxkZXIsCi0gICAgICAgIHNw
YWNlOiBRdWljUGFja2V0U3BhY2UsCi0gICAgICAgIHN0cmVhbTogUXVpY1N0cmVhbSwKLSAgICAg
ICAgbWF4X29mZnNldDogaW50LAotICAgICkgLT4gaW50OgotICAgICAgICAjIHRoZSBmcmFtZSBk
YXRhIHNpemUgaXMgY29uc3RyYWluZWQgYnkgb3VyIHBlZXIncyBNQVhfREFUQSBhbmQKLSAgICAg
ICAgIyB0aGUgc3BhY2UgYXZhaWxhYmxlIGluIHRoZSBjdXJyZW50IHBhY2tldAotICAgICAgICBm
cmFtZV9vdmVyaGVhZCA9ICgKLSAgICAgICAgICAgIDMKLSAgICAgICAgICAgICsgc2l6ZV91aW50
X3ZhcihzdHJlYW0uc3RyZWFtX2lkKQotICAgICAgICAgICAgKyAoc2l6ZV91aW50X3ZhcihzdHJl
YW0ubmV4dF9zZW5kX29mZnNldCkgaWYgc3RyZWFtLm5leHRfc2VuZF9vZmZzZXQgZWxzZSAwKQot
ICAgICAgICApCi0gICAgICAgIHByZXZpb3VzX3NlbmRfaGlnaGVzdCA9IHN0cmVhbS5fc2VuZF9o
aWdoZXN0Ci0gICAgICAgIGZyYW1lID0gc3RyZWFtLmdldF9mcmFtZSgKLSAgICAgICAgICAgIGJ1
aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSAtIGZyYW1lX292ZXJoZWFkLCBtYXhfb2Zmc2V0
Ci0gICAgICAgICkKLQotICAgICAgICBpZiBmcmFtZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAg
IGZyYW1lX3R5cGUgPSBRdWljRnJhbWVUeXBlLlNUUkVBTV9CQVNFIHwgMiAgIyBsZW5ndGgKLSAg
ICAgICAgICAgIGlmIGZyYW1lLm9mZnNldDoKLSAgICAgICAgICAgICAgICBmcmFtZV90eXBlIHw9
IDQKLSAgICAgICAgICAgIGlmIGZyYW1lLmZpbjoKLSAgICAgICAgICAgICAgICBmcmFtZV90eXBl
IHw9IDEKLSAgICAgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUoCi0gICAgICAgICAg
ICAgICAgZnJhbWVfdHlwZSwKLSAgICAgICAgICAgICAgICBjYXBhY2l0eT1mcmFtZV9vdmVyaGVh
ZCwKLSAgICAgICAgICAgICAgICBoYW5kbGVyPXN0cmVhbS5vbl9kYXRhX2RlbGl2ZXJ5LAotICAg
ICAgICAgICAgICAgIGhhbmRsZXJfYXJncz0oZnJhbWUub2Zmc2V0LCBmcmFtZS5vZmZzZXQgKyBs
ZW4oZnJhbWUuZGF0YSkpLAotICAgICAgICAgICAgKQotICAgICAgICAgICAgYnVmLnB1c2hfdWlu
dF92YXIoc3RyZWFtLnN0cmVhbV9pZCkKLSAgICAgICAgICAgIGlmIGZyYW1lLm9mZnNldDoKLSAg
ICAgICAgICAgICAgICBidWYucHVzaF91aW50X3ZhcihmcmFtZS5vZmZzZXQpCi0gICAgICAgICAg
ICBidWYucHVzaF91aW50MTYobGVuKGZyYW1lLmRhdGEpIHwgMHg0MDAwKQotICAgICAgICAgICAg
YnVmLnB1c2hfYnl0ZXMoZnJhbWUuZGF0YSkKLQotICAgICAgICAgICAgIyBsb2cgZnJhbWUKLSAg
ICAgICAgICAgIGlmIHNlbGYuX3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAg
ICAgIGJ1aWxkZXIucXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAg
ICAgc2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX3N0cmVhbV9mcmFtZSgKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGZyYW1lLCBzdHJlYW1faWQ9c3RyZWFtLnN0cmVhbV9pZAotICAgICAgICAgICAg
ICAgICAgICApCi0gICAgICAgICAgICAgICAgKQotCi0gICAgICAgICAgICByZXR1cm4gc3RyZWFt
Ll9zZW5kX2hpZ2hlc3QgLSBwcmV2aW91c19zZW5kX2hpZ2hlc3QKLSAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgIHJldHVybiAwCi0KLSAgICBkZWYgX3dyaXRlX3N0cmVhbV9saW1pdHMoCi0gICAg
ICAgIHNlbGYsIGJ1aWxkZXI6IFF1aWNQYWNrZXRCdWlsZGVyLCBzcGFjZTogUXVpY1BhY2tldFNw
YWNlLCBzdHJlYW06IFF1aWNTdHJlYW0KLSAgICApIC0+IE5vbmU6Ci0gICAgICAgICIiIgotICAg
ICAgICBSYWlzZSBNQVhfU1RSRUFNX0RBVEEgaWYgbmVlZGVkLgotCi0gICAgICAgIFRoZSBvbmx5
IGNhc2Ugd2hlcmUgYHN0cmVhbS5tYXhfc3RyZWFtX2RhdGFfbG9jYWxgIGlzIHplcm8gaXMgZm9y
Ci0gICAgICAgIGxvY2FsbHkgY3JlYXRlZCB1bmlkaXJlY3Rpb25hbCBzdHJlYW1zLiBXZSBza2lw
IHN1Y2ggc3RyZWFtcyB0byBhdm9pZAotICAgICAgICBzcHVyaW91cyBsb2dnaW5nLgotICAgICAg
ICAiIiIKLSAgICAgICAgaWYgKAotICAgICAgICAgICAgc3RyZWFtLm1heF9zdHJlYW1fZGF0YV9s
b2NhbAotICAgICAgICAgICAgYW5kIHN0cmVhbS5fcmVjdl9oaWdoZXN0ICogMiA+IHN0cmVhbS5t
YXhfc3RyZWFtX2RhdGFfbG9jYWwKLSAgICAgICAgKToKLSAgICAgICAgICAgIHN0cmVhbS5tYXhf
c3RyZWFtX2RhdGFfbG9jYWwgKj0gMgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAot
ICAgICAgICAgICAgICAgICJTdHJlYW0gJWQgbG9jYWwgbWF4X3N0cmVhbV9kYXRhIHJhaXNlZCB0
byAlZCIsCi0gICAgICAgICAgICAgICAgc3RyZWFtLnN0cmVhbV9pZCwKLSAgICAgICAgICAgICAg
ICBzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsLAotICAgICAgICAgICAgKQotICAgICAgICBp
ZiBzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsX3NlbnQgIT0gc3RyZWFtLm1heF9zdHJlYW1f
ZGF0YV9sb2NhbDoKLSAgICAgICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUoCi0gICAg
ICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5NQVhfU1RSRUFNX0RBVEEsCi0gICAgICAgICAgICAg
ICAgY2FwYWNpdHk9TUFYX1NUUkVBTV9EQVRBX0ZSQU1FX0NBUEFDSVRZLAotICAgICAgICAgICAg
ICAgIGhhbmRsZXI9c2VsZi5fb25fbWF4X3N0cmVhbV9kYXRhX2RlbGl2ZXJ5LAotICAgICAgICAg
ICAgICAgIGhhbmRsZXJfYXJncz0oc3RyZWFtLCksCi0gICAgICAgICAgICApCi0gICAgICAgICAg
ICBidWYucHVzaF91aW50X3ZhcihzdHJlYW0uc3RyZWFtX2lkKQotICAgICAgICAgICAgYnVmLnB1
c2hfdWludF92YXIoc3RyZWFtLm1heF9zdHJlYW1fZGF0YV9sb2NhbCkKLSAgICAgICAgICAgIHN0
cmVhbS5tYXhfc3RyZWFtX2RhdGFfbG9jYWxfc2VudCA9IHN0cmVhbS5tYXhfc3RyZWFtX2RhdGFf
bG9jYWwKLQotICAgICAgICAgICAgIyBsb2cgZnJhbWUKLSAgICAgICAgICAgIGlmIHNlbGYuX3F1
aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIGJ1aWxkZXIucXVpY19sb2dn
ZXJfZnJhbWVzLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fcXVpY19sb2dnZXIu
ZW5jb2RlX21heF9zdHJlYW1fZGF0YV9mcmFtZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIG1h
eGltdW09c3RyZWFtLm1heF9zdHJlYW1fZGF0YV9sb2NhbCwgc3RyZWFtX2lkPXN0cmVhbS5zdHJl
YW1faWQKLSAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgICkKLQotICAgIGRl
ZiBfd3JpdGVfc3RyZWFtc19ibG9ja2VkX2ZyYW1lKAotICAgICAgICBzZWxmLCBidWlsZGVyOiBR
dWljUGFja2V0QnVpbGRlciwgZnJhbWVfdHlwZTogUXVpY0ZyYW1lVHlwZSwgbGltaXQ6IGludAot
ICAgICkgLT4gTm9uZToKLSAgICAgICAgYnVmID0gYnVpbGRlci5zdGFydF9mcmFtZShmcmFtZV90
eXBlLCBjYXBhY2l0eT1TVFJFQU1TX0JMT0NLRURfQ0FQQUNJVFkpCi0gICAgICAgIGJ1Zi5wdXNo
X3VpbnRfdmFyKGxpbWl0KQotCi0gICAgICAgICMgbG9nIGZyYW1lCi0gICAgICAgIGlmIHNlbGYu
X3F1aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgYnVpbGRlci5xdWljX2xvZ2dl
cl9mcmFtZXMuYXBwZW5kKAotICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29k
ZV9zdHJlYW1zX2Jsb2NrZWRfZnJhbWUoCi0gICAgICAgICAgICAgICAgICAgIGlzX3VuaWRpcmVj
dGlvbmFsPWZyYW1lX3R5cGUgPT0gUXVpY0ZyYW1lVHlwZS5TVFJFQU1TX0JMT0NLRURfVU5JLAot
ICAgICAgICAgICAgICAgICAgICBsaW1pdD1saW1pdCwKLSAgICAgICAgICAgICAgICApCi0gICAg
ICAgICAgICApCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9jcnlw
dG8ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9jcnlwdG8ucHkKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhY2IzMGVlZGE4ZjFjN2M2MDZiOTA0YmE3NzI3MTNkMzU4
NzM0YjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvY3J5cHRvLnB5CisrKyAvZGV2L251bGwKQEAgLTEs
MTk2ICswLDAgQEAKLWltcG9ydCBiaW5hc2NpaQotZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlvbmFs
LCBUdXBsZQotCi1mcm9tIC4uX2NyeXB0byBpbXBvcnQgQUVBRCwgQ3J5cHRvRXJyb3IsIEhlYWRl
clByb3RlY3Rpb24KLWZyb20gLi50bHMgaW1wb3J0IENpcGhlclN1aXRlLCBjaXBoZXJfc3VpdGVf
aGFzaCwgaGtkZl9leHBhbmRfbGFiZWwsIGhrZGZfZXh0cmFjdAotZnJvbSAucGFja2V0IGltcG9y
dCBkZWNvZGVfcGFja2V0X251bWJlciwgaXNfbG9uZ19oZWFkZXIKLQotQ0lQSEVSX1NVSVRFUyA9
IHsKLSAgICBDaXBoZXJTdWl0ZS5BRVNfMTI4X0dDTV9TSEEyNTY6IChiImFlcy0xMjgtZWNiIiwg
YiJhZXMtMTI4LWdjbSIpLAotICAgIENpcGhlclN1aXRlLkFFU18yNTZfR0NNX1NIQTM4NDogKGIi
YWVzLTI1Ni1lY2IiLCBiImFlcy0yNTYtZ2NtIiksCi0gICAgQ2lwaGVyU3VpdGUuQ0hBQ0hBMjBf
UE9MWTEzMDVfU0hBMjU2OiAoYiJjaGFjaGEyMCIsIGIiY2hhY2hhMjAtcG9seTEzMDUiKSwKLX0K
LUlOSVRJQUxfQ0lQSEVSX1NVSVRFID0gQ2lwaGVyU3VpdGUuQUVTXzEyOF9HQ01fU0hBMjU2Ci1J
TklUSUFMX1NBTFQgPSBiaW5hc2NpaS51bmhleGxpZnkoImMzZWVmNzEyYzcyZWJiNWExMWE3ZDI0
MzJiYjQ2MzY1YmVmOWY1MDIiKQotU0FNUExFX1NJWkUgPSAxNgotCi0KLWNsYXNzIEtleVVuYXZh
aWxhYmxlRXJyb3IoQ3J5cHRvRXJyb3IpOgotICAgIHBhc3MKLQotCi1kZWYgZGVyaXZlX2tleV9p
dl9ocCgKLSAgICBjaXBoZXJfc3VpdGU6IENpcGhlclN1aXRlLCBzZWNyZXQ6IGJ5dGVzCi0pIC0+
IFR1cGxlW2J5dGVzLCBieXRlcywgYnl0ZXNdOgotICAgIGFsZ29yaXRobSA9IGNpcGhlcl9zdWl0
ZV9oYXNoKGNpcGhlcl9zdWl0ZSkKLSAgICBpZiBjaXBoZXJfc3VpdGUgaW4gWwotICAgICAgICBD
aXBoZXJTdWl0ZS5BRVNfMjU2X0dDTV9TSEEzODQsCi0gICAgICAgIENpcGhlclN1aXRlLkNIQUNI
QTIwX1BPTFkxMzA1X1NIQTI1NiwKLSAgICBdOgotICAgICAgICBrZXlfc2l6ZSA9IDMyCi0gICAg
ZWxzZToKLSAgICAgICAga2V5X3NpemUgPSAxNgotICAgIHJldHVybiAoCi0gICAgICAgIGhrZGZf
ZXhwYW5kX2xhYmVsKGFsZ29yaXRobSwgc2VjcmV0LCBiInF1aWMga2V5IiwgYiIiLCBrZXlfc2l6
ZSksCi0gICAgICAgIGhrZGZfZXhwYW5kX2xhYmVsKGFsZ29yaXRobSwgc2VjcmV0LCBiInF1aWMg
aXYiLCBiIiIsIDEyKSwKLSAgICAgICAgaGtkZl9leHBhbmRfbGFiZWwoYWxnb3JpdGhtLCBzZWNy
ZXQsIGIicXVpYyBocCIsIGIiIiwga2V5X3NpemUpLAotICAgICkKLQotCi1jbGFzcyBDcnlwdG9D
b250ZXh0OgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBrZXlfcGhhc2U6IGludCA9IDApIC0+IE5v
bmU6Ci0gICAgICAgIHNlbGYuYWVhZDogT3B0aW9uYWxbQUVBRF0gPSBOb25lCi0gICAgICAgIHNl
bGYuY2lwaGVyX3N1aXRlOiBPcHRpb25hbFtDaXBoZXJTdWl0ZV0gPSBOb25lCi0gICAgICAgIHNl
bGYuaHA6IE9wdGlvbmFsW0hlYWRlclByb3RlY3Rpb25dID0gTm9uZQotICAgICAgICBzZWxmLmtl
eV9waGFzZSA9IGtleV9waGFzZQotICAgICAgICBzZWxmLnNlY3JldDogT3B0aW9uYWxbYnl0ZXNd
ID0gTm9uZQotICAgICAgICBzZWxmLnZlcnNpb246IE9wdGlvbmFsW2ludF0gPSBOb25lCi0KLSAg
ICBkZWYgZGVjcnlwdF9wYWNrZXQoCi0gICAgICAgIHNlbGYsIHBhY2tldDogYnl0ZXMsIGVuY3J5
cHRlZF9vZmZzZXQ6IGludCwgZXhwZWN0ZWRfcGFja2V0X251bWJlcjogaW50Ci0gICAgKSAtPiBU
dXBsZVtieXRlcywgYnl0ZXMsIGludCwgYm9vbF06Ci0gICAgICAgIGlmIHNlbGYuYWVhZCBpcyBO
b25lOgotICAgICAgICAgICAgcmFpc2UgS2V5VW5hdmFpbGFibGVFcnJvcigiRGVjcnlwdGlvbiBr
ZXkgaXMgbm90IGF2YWlsYWJsZSIpCi0KLSAgICAgICAgIyBoZWFkZXIgcHJvdGVjdGlvbgotICAg
ICAgICBwbGFpbl9oZWFkZXIsIHBhY2tldF9udW1iZXIgPSBzZWxmLmhwLnJlbW92ZShwYWNrZXQs
IGVuY3J5cHRlZF9vZmZzZXQpCi0gICAgICAgIGZpcnN0X2J5dGUgPSBwbGFpbl9oZWFkZXJbMF0K
LQotICAgICAgICAjIHBhY2tldCBudW1iZXIKLSAgICAgICAgcG5fbGVuZ3RoID0gKGZpcnN0X2J5
dGUgJiAweDAzKSArIDEKLSAgICAgICAgcGFja2V0X251bWJlciA9IGRlY29kZV9wYWNrZXRfbnVt
YmVyKAotICAgICAgICAgICAgcGFja2V0X251bWJlciwgcG5fbGVuZ3RoICogOCwgZXhwZWN0ZWRf
cGFja2V0X251bWJlcgotICAgICAgICApCi0KLSAgICAgICAgIyBkZXRlY3Qga2V5IHBoYXNlIGNo
YW5nZQotICAgICAgICBjcnlwdG8gPSBzZWxmCi0gICAgICAgIGlmIG5vdCBpc19sb25nX2hlYWRl
cihmaXJzdF9ieXRlKToKLSAgICAgICAgICAgIGtleV9waGFzZSA9IChmaXJzdF9ieXRlICYgNCkg
Pj4gMgotICAgICAgICAgICAgaWYga2V5X3BoYXNlICE9IHNlbGYua2V5X3BoYXNlOgotICAgICAg
ICAgICAgICAgIGNyeXB0byA9IG5leHRfa2V5X3BoYXNlKHNlbGYpCi0KLSAgICAgICAgIyBwYXls
b2FkIHByb3RlY3Rpb24KLSAgICAgICAgcGF5bG9hZCA9IGNyeXB0by5hZWFkLmRlY3J5cHQoCi0g
ICAgICAgICAgICBwYWNrZXRbbGVuKHBsYWluX2hlYWRlcikgOl0sIHBsYWluX2hlYWRlciwgcGFj
a2V0X251bWJlcgotICAgICAgICApCi0KLSAgICAgICAgcmV0dXJuIHBsYWluX2hlYWRlciwgcGF5
bG9hZCwgcGFja2V0X251bWJlciwgY3J5cHRvICE9IHNlbGYKLQotICAgIGRlZiBlbmNyeXB0X3Bh
Y2tldCgKLSAgICAgICAgc2VsZiwgcGxhaW5faGVhZGVyOiBieXRlcywgcGxhaW5fcGF5bG9hZDog
Ynl0ZXMsIHBhY2tldF9udW1iZXI6IGludAotICAgICkgLT4gYnl0ZXM6Ci0gICAgICAgIGFzc2Vy
dCBzZWxmLmlzX3ZhbGlkKCksICJFbmNyeXB0aW9uIGtleSBpcyBub3QgYXZhaWxhYmxlIgotCi0g
ICAgICAgICMgcGF5bG9hZCBwcm90ZWN0aW9uCi0gICAgICAgIHByb3RlY3RlZF9wYXlsb2FkID0g
c2VsZi5hZWFkLmVuY3J5cHQoCi0gICAgICAgICAgICBwbGFpbl9wYXlsb2FkLCBwbGFpbl9oZWFk
ZXIsIHBhY2tldF9udW1iZXIKLSAgICAgICAgKQotCi0gICAgICAgICMgaGVhZGVyIHByb3RlY3Rp
b24KLSAgICAgICAgcmV0dXJuIHNlbGYuaHAuYXBwbHkocGxhaW5faGVhZGVyLCBwcm90ZWN0ZWRf
cGF5bG9hZCkKLQotICAgIGRlZiBpc192YWxpZChzZWxmKSAtPiBib29sOgotICAgICAgICByZXR1
cm4gc2VsZi5hZWFkIGlzIG5vdCBOb25lCi0KLSAgICBkZWYgc2V0dXAoc2VsZiwgY2lwaGVyX3N1
aXRlOiBDaXBoZXJTdWl0ZSwgc2VjcmV0OiBieXRlcywgdmVyc2lvbjogaW50KSAtPiBOb25lOgot
ICAgICAgICBocF9jaXBoZXJfbmFtZSwgYWVhZF9jaXBoZXJfbmFtZSA9IENJUEhFUl9TVUlURVNb
Y2lwaGVyX3N1aXRlXQotCi0gICAgICAgIGtleSwgaXYsIGhwID0gZGVyaXZlX2tleV9pdl9ocChj
aXBoZXJfc3VpdGUsIHNlY3JldCkKLSAgICAgICAgc2VsZi5hZWFkID0gQUVBRChhZWFkX2NpcGhl
cl9uYW1lLCBrZXksIGl2KQotICAgICAgICBzZWxmLmNpcGhlcl9zdWl0ZSA9IGNpcGhlcl9zdWl0
ZQotICAgICAgICBzZWxmLmhwID0gSGVhZGVyUHJvdGVjdGlvbihocF9jaXBoZXJfbmFtZSwgaHAp
Ci0gICAgICAgIHNlbGYuc2VjcmV0ID0gc2VjcmV0Ci0gICAgICAgIHNlbGYudmVyc2lvbiA9IHZl
cnNpb24KLQotICAgIGRlZiB0ZWFyZG93bihzZWxmKSAtPiBOb25lOgotICAgICAgICBzZWxmLmFl
YWQgPSBOb25lCi0gICAgICAgIHNlbGYuY2lwaGVyX3N1aXRlID0gTm9uZQotICAgICAgICBzZWxm
LmhwID0gTm9uZQotICAgICAgICBzZWxmLnNlY3JldCA9IE5vbmUKLQotCi1kZWYgYXBwbHlfa2V5
X3BoYXNlKHNlbGY6IENyeXB0b0NvbnRleHQsIGNyeXB0bzogQ3J5cHRvQ29udGV4dCkgLT4gTm9u
ZToKLSAgICBzZWxmLmFlYWQgPSBjcnlwdG8uYWVhZAotICAgIHNlbGYua2V5X3BoYXNlID0gY3J5
cHRvLmtleV9waGFzZQotICAgIHNlbGYuc2VjcmV0ID0gY3J5cHRvLnNlY3JldAotCi0KLWRlZiBu
ZXh0X2tleV9waGFzZShzZWxmOiBDcnlwdG9Db250ZXh0KSAtPiBDcnlwdG9Db250ZXh0OgotICAg
IGFsZ29yaXRobSA9IGNpcGhlcl9zdWl0ZV9oYXNoKHNlbGYuY2lwaGVyX3N1aXRlKQotCi0gICAg
Y3J5cHRvID0gQ3J5cHRvQ29udGV4dChrZXlfcGhhc2U9aW50KG5vdCBzZWxmLmtleV9waGFzZSkp
Ci0gICAgY3J5cHRvLnNldHVwKAotICAgICAgICBjaXBoZXJfc3VpdGU9c2VsZi5jaXBoZXJfc3Vp
dGUsCi0gICAgICAgIHNlY3JldD1oa2RmX2V4cGFuZF9sYWJlbCgKLSAgICAgICAgICAgIGFsZ29y
aXRobSwgc2VsZi5zZWNyZXQsIGIicXVpYyBrdSIsIGIiIiwgYWxnb3JpdGhtLmRpZ2VzdF9zaXpl
Ci0gICAgICAgICksCi0gICAgICAgIHZlcnNpb249c2VsZi52ZXJzaW9uLAotICAgICkKLSAgICBy
ZXR1cm4gY3J5cHRvCi0KLQotY2xhc3MgQ3J5cHRvUGFpcjoKLSAgICBkZWYgX19pbml0X18oc2Vs
ZikgLT4gTm9uZToKLSAgICAgICAgc2VsZi5hZWFkX3RhZ19zaXplID0gMTYKLSAgICAgICAgc2Vs
Zi5yZWN2ID0gQ3J5cHRvQ29udGV4dCgpCi0gICAgICAgIHNlbGYuc2VuZCA9IENyeXB0b0NvbnRl
eHQoKQotICAgICAgICBzZWxmLl91cGRhdGVfa2V5X3JlcXVlc3RlZCA9IEZhbHNlCi0KLSAgICBk
ZWYgZGVjcnlwdF9wYWNrZXQoCi0gICAgICAgIHNlbGYsIHBhY2tldDogYnl0ZXMsIGVuY3J5cHRl
ZF9vZmZzZXQ6IGludCwgZXhwZWN0ZWRfcGFja2V0X251bWJlcjogaW50Ci0gICAgKSAtPiBUdXBs
ZVtieXRlcywgYnl0ZXMsIGludF06Ci0gICAgICAgIHBsYWluX2hlYWRlciwgcGF5bG9hZCwgcGFj
a2V0X251bWJlciwgdXBkYXRlX2tleSA9IHNlbGYucmVjdi5kZWNyeXB0X3BhY2tldCgKLSAgICAg
ICAgICAgIHBhY2tldCwgZW5jcnlwdGVkX29mZnNldCwgZXhwZWN0ZWRfcGFja2V0X251bWJlcgot
ICAgICAgICApCi0gICAgICAgIGlmIHVwZGF0ZV9rZXk6Ci0gICAgICAgICAgICBzZWxmLl91cGRh
dGVfa2V5KCkKLSAgICAgICAgcmV0dXJuIHBsYWluX2hlYWRlciwgcGF5bG9hZCwgcGFja2V0X251
bWJlcgotCi0gICAgZGVmIGVuY3J5cHRfcGFja2V0KAotICAgICAgICBzZWxmLCBwbGFpbl9oZWFk
ZXI6IGJ5dGVzLCBwbGFpbl9wYXlsb2FkOiBieXRlcywgcGFja2V0X251bWJlcjogaW50Ci0gICAg
KSAtPiBieXRlczoKLSAgICAgICAgaWYgc2VsZi5fdXBkYXRlX2tleV9yZXF1ZXN0ZWQ6Ci0gICAg
ICAgICAgICBzZWxmLl91cGRhdGVfa2V5KCkKLSAgICAgICAgcmV0dXJuIHNlbGYuc2VuZC5lbmNy
eXB0X3BhY2tldChwbGFpbl9oZWFkZXIsIHBsYWluX3BheWxvYWQsIHBhY2tldF9udW1iZXIpCi0K
LSAgICBkZWYgc2V0dXBfaW5pdGlhbChzZWxmLCBjaWQ6IGJ5dGVzLCBpc19jbGllbnQ6IGJvb2ws
IHZlcnNpb246IGludCkgLT4gTm9uZToKLSAgICAgICAgaWYgaXNfY2xpZW50OgotICAgICAgICAg
ICAgcmVjdl9sYWJlbCwgc2VuZF9sYWJlbCA9IGIic2VydmVyIGluIiwgYiJjbGllbnQgaW4iCi0g
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZWN2X2xhYmVsLCBzZW5kX2xhYmVsID0gYiJjbGll
bnQgaW4iLCBiInNlcnZlciBpbiIKLQotICAgICAgICBhbGdvcml0aG0gPSBjaXBoZXJfc3VpdGVf
aGFzaChJTklUSUFMX0NJUEhFUl9TVUlURSkKLSAgICAgICAgaW5pdGlhbF9zZWNyZXQgPSBoa2Rm
X2V4dHJhY3QoYWxnb3JpdGhtLCBJTklUSUFMX1NBTFQsIGNpZCkKLSAgICAgICAgc2VsZi5yZWN2
LnNldHVwKAotICAgICAgICAgICAgY2lwaGVyX3N1aXRlPUlOSVRJQUxfQ0lQSEVSX1NVSVRFLAot
ICAgICAgICAgICAgc2VjcmV0PWhrZGZfZXhwYW5kX2xhYmVsKAotICAgICAgICAgICAgICAgIGFs
Z29yaXRobSwgaW5pdGlhbF9zZWNyZXQsIHJlY3ZfbGFiZWwsIGIiIiwgYWxnb3JpdGhtLmRpZ2Vz
dF9zaXplCi0gICAgICAgICAgICApLAotICAgICAgICAgICAgdmVyc2lvbj12ZXJzaW9uLAotICAg
ICAgICApCi0gICAgICAgIHNlbGYuc2VuZC5zZXR1cCgKLSAgICAgICAgICAgIGNpcGhlcl9zdWl0
ZT1JTklUSUFMX0NJUEhFUl9TVUlURSwKLSAgICAgICAgICAgIHNlY3JldD1oa2RmX2V4cGFuZF9s
YWJlbCgKLSAgICAgICAgICAgICAgICBhbGdvcml0aG0sIGluaXRpYWxfc2VjcmV0LCBzZW5kX2xh
YmVsLCBiIiIsIGFsZ29yaXRobS5kaWdlc3Rfc2l6ZQotICAgICAgICAgICAgKSwKLSAgICAgICAg
ICAgIHZlcnNpb249dmVyc2lvbiwKLSAgICAgICAgKQotCi0gICAgZGVmIHRlYXJkb3duKHNlbGYp
IC0+IE5vbmU6Ci0gICAgICAgIHNlbGYucmVjdi50ZWFyZG93bigpCi0gICAgICAgIHNlbGYuc2Vu
ZC50ZWFyZG93bigpCi0KLSAgICBkZWYgdXBkYXRlX2tleShzZWxmKSAtPiBOb25lOgotICAgICAg
ICBzZWxmLl91cGRhdGVfa2V5X3JlcXVlc3RlZCA9IFRydWUKLQotICAgIEBwcm9wZXJ0eQotICAg
IGRlZiBrZXlfcGhhc2Uoc2VsZikgLT4gaW50OgotICAgICAgICBpZiBzZWxmLl91cGRhdGVfa2V5
X3JlcXVlc3RlZDoKLSAgICAgICAgICAgIHJldHVybiBpbnQobm90IHNlbGYucmVjdi5rZXlfcGhh
c2UpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5yZWN2LmtleV9waGFz
ZQotCi0gICAgZGVmIF91cGRhdGVfa2V5KHNlbGYpIC0+IE5vbmU6Ci0gICAgICAgIGFwcGx5X2tl
eV9waGFzZShzZWxmLnJlY3YsIG5leHRfa2V5X3BoYXNlKHNlbGYucmVjdikpCi0gICAgICAgIGFw
cGx5X2tleV9waGFzZShzZWxmLnNlbmQsIG5leHRfa2V5X3BoYXNlKHNlbGYuc2VuZCkpCi0gICAg
ICAgIHNlbGYuX3VwZGF0ZV9rZXlfcmVxdWVzdGVkID0gRmFsc2UKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL2V2ZW50cy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlv
cXVpYy9xdWljL2V2ZW50cy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDQzMDY5
MzkzNmMxODgxNmFlMTE4MzI2ZDJhMjI1MTI5NTI0NWUzMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9l
dmVudHMucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMTIgKzAsMCBAQAotZnJvbSBkYXRhY2xhc3Nl
cyBpbXBvcnQgZGF0YWNsYXNzCi1mcm9tIHR5cGluZyBpbXBvcnQgT3B0aW9uYWwKLQotCi1jbGFz
cyBRdWljRXZlbnQ6Ci0gICAgIiIiCi0gICAgQmFzZSBjbGFzcyBmb3IgUVVJQyBldmVudHMuCi0g
ICAgIiIiCi0KLSAgICBwYXNzCi0KLQotQGRhdGFjbGFzcwotY2xhc3MgQ29ubmVjdGlvbklkSXNz
dWVkKFF1aWNFdmVudCk6Ci0gICAgY29ubmVjdGlvbl9pZDogYnl0ZXMKLQotCi1AZGF0YWNsYXNz
Ci1jbGFzcyBDb25uZWN0aW9uSWRSZXRpcmVkKFF1aWNFdmVudCk6Ci0gICAgY29ubmVjdGlvbl9p
ZDogYnl0ZXMKLQotCi1AZGF0YWNsYXNzCi1jbGFzcyBDb25uZWN0aW9uVGVybWluYXRlZChRdWlj
RXZlbnQpOgotICAgICIiIgotICAgIFRoZSBDb25uZWN0aW9uVGVybWluYXRlZCBldmVudCBpcyBm
aXJlZCB3aGVuIHRoZSBRVUlDIGNvbm5lY3Rpb24gaXMgdGVybWluYXRlZC4KLSAgICAiIiIKLQot
ICAgIGVycm9yX2NvZGU6IGludAotICAgICJUaGUgZXJyb3IgY29kZSB3aGljaCB3YXMgc3BlY2lm
aWVkIHdoZW4gY2xvc2luZyB0aGUgY29ubmVjdGlvbi4iCi0KLSAgICBmcmFtZV90eXBlOiBPcHRp
b25hbFtpbnRdCi0gICAgIlRoZSBmcmFtZSB0eXBlIHdoaWNoIGNhdXNlZCB0aGUgY29ubmVjdGlv
biB0byBiZSBjbG9zZWQsIG9yIGBOb25lYC4iCi0KLSAgICByZWFzb25fcGhyYXNlOiBzdHIKLSAg
ICAiVGhlIGh1bWFuLXJlYWRhYmxlIHJlYXNvbiBmb3Igd2hpY2ggdGhlIGNvbm5lY3Rpb24gd2Fz
IGNsb3NlZC4iCi0KLQotQGRhdGFjbGFzcwotY2xhc3MgRGF0YWdyYW1GcmFtZVJlY2VpdmVkKFF1
aWNFdmVudCk6Ci0gICAgIiIiCi0gICAgVGhlIERhdGFncmFtRnJhbWVSZWNlaXZlZCBldmVudCBp
cyBmaXJlZCB3aGVuIGEgREFUQUdSQU0gZnJhbWUgaXMgcmVjZWl2ZWQuCi0gICAgIiIiCi0KLSAg
ICBkYXRhOiBieXRlcwotICAgICJUaGUgZGF0YSB3aGljaCB3YXMgcmVjZWl2ZWQuIgotCi0KLUBk
YXRhY2xhc3MKLWNsYXNzIEhhbmRzaGFrZUNvbXBsZXRlZChRdWljRXZlbnQpOgotICAgICIiIgot
ICAgIFRoZSBIYW5kc2hha2VDb21wbGV0ZWQgZXZlbnQgaXMgZmlyZWQgd2hlbiB0aGUgVExTIGhh
bmRzaGFrZSBjb21wbGV0ZXMuCi0gICAgIiIiCi0KLSAgICBhbHBuX3Byb3RvY29sOiBPcHRpb25h
bFtzdHJdCi0gICAgIlRoZSBwcm90b2NvbCB3aGljaCB3YXMgbmVnb3RpYXRlZCB1c2luZyBBTFBO
LCBvciBgTm9uZWAuIgotCi0gICAgZWFybHlfZGF0YV9hY2NlcHRlZDogYm9vbAotICAgICJXaGV0
aGVyIGVhcmx5ICgwLVJUVCkgZGF0YSB3YXMgYWNjZXB0ZWQgYnkgdGhlIHJlbW90ZSBwZWVyLiIK
LQotICAgIHNlc3Npb25fcmVzdW1lZDogYm9vbAotICAgICJXaGV0aGVyIGEgVExTIHNlc3Npb24g
d2FzIHJlc3VtZWQuIgotCi0KLUBkYXRhY2xhc3MKLWNsYXNzIFBpbmdBY2tub3dsZWRnZWQoUXVp
Y0V2ZW50KToKLSAgICAiIiIKLSAgICBUaGUgUGluZ0Fja25vd2xlZGdlZCBldmVudCBpcyBmaXJl
ZCB3aGVuIGEgUElORyBmcmFtZSBpcyBhY2tub3dsZWRnZWQuCi0gICAgIiIiCi0KLSAgICB1aWQ6
IGludAotICAgICJUaGUgdW5pcXVlIElEIG9mIHRoZSBQSU5HLiIKLQotCi1AZGF0YWNsYXNzCi1j
bGFzcyBQcm90b2NvbE5lZ290aWF0ZWQoUXVpY0V2ZW50KToKLSAgICAiIiIKLSAgICBUaGUgUHJv
dG9jb2xOZWdvdGlhdGVkIGV2ZW50IGlzIGZpcmVkIHdoZW4gQUxQTiBuZWdvdGlhdGlvbiBjb21w
bGV0ZXMuCi0gICAgIiIiCi0KLSAgICBhbHBuX3Byb3RvY29sOiBPcHRpb25hbFtzdHJdCi0gICAg
IlRoZSBwcm90b2NvbCB3aGljaCB3YXMgbmVnb3RpYXRlZCB1c2luZyBBTFBOLCBvciBgTm9uZWAu
IgotCi0KLUBkYXRhY2xhc3MKLWNsYXNzIFN0cmVhbURhdGFSZWNlaXZlZChRdWljRXZlbnQpOgot
ICAgICIiIgotICAgIFRoZSBTdHJlYW1EYXRhUmVjZWl2ZWQgZXZlbnQgaXMgZmlyZWQgd2hlbmV2
ZXIgZGF0YSBpcyByZWNlaXZlZCBvbiBhCi0gICAgc3RyZWFtLgotICAgICIiIgotCi0gICAgZGF0
YTogYnl0ZXMKLSAgICAiVGhlIGRhdGEgd2hpY2ggd2FzIHJlY2VpdmVkLiIKLQotICAgIGVuZF9z
dHJlYW06IGJvb2wKLSAgICAiV2hldGhlciB0aGUgU1RSRUFNIGZyYW1lIGhhZCB0aGUgRklOIGJp
dCBzZXQuIgotCi0gICAgc3RyZWFtX2lkOiBpbnQKLSAgICAiVGhlIElEIG9mIHRoZSBzdHJlYW0g
dGhlIGRhdGEgd2FzIHJlY2VpdmVkIGZvci4iCi0KLQotQGRhdGFjbGFzcwotY2xhc3MgU3RyZWFt
UmVzZXQoUXVpY0V2ZW50KToKLSAgICAiIiIKLSAgICBUaGUgU3RyZWFtUmVzZXQgZXZlbnQgaXMg
ZmlyZWQgd2hlbiB0aGUgcmVtb3RlIHBlZXIgcmVzZXRzIGEgc3RyZWFtLgotICAgICIiIgotCi0g
ICAgZXJyb3JfY29kZTogaW50Ci0gICAgIlRoZSBlcnJvciBjb2RlIHRoYXQgdHJpZ2dlcmVkIHRo
ZSByZXNldC4iCi0KLSAgICBzdHJlYW1faWQ6IGludAotICAgICJUaGUgSUQgb2YgdGhlIHN0cmVh
bSB0aGF0IHdhcyByZXNldC4iCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMv
cXVpYy9sb2dnZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9sb2dnZXIucHkK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0OTc1YmQ1OTJlMWMwODc4MjVjZDk1YzYw
M2M2OTA2YTc0M2RiODEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvbG9nZ2VyLnB5CisrKyAvZGV2L251
bGwKQEAgLTEsMjY2ICswLDAgQEAKLWltcG9ydCBiaW5hc2NpaQotaW1wb3J0IHRpbWUKLWZyb20g
Y29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCi1mcm9tIHR5cGluZyBpbXBvcnQgQW55LCBEZXF1ZSwg
RGljdCwgTGlzdCwgT3B0aW9uYWwsIFR1cGxlCi0KLWZyb20gLnBhY2tldCBpbXBvcnQgKAotICAg
IFBBQ0tFVF9UWVBFX0hBTkRTSEFLRSwKLSAgICBQQUNLRVRfVFlQRV9JTklUSUFMLAotICAgIFBB
Q0tFVF9UWVBFX01BU0ssCi0gICAgUEFDS0VUX1RZUEVfT05FX1JUVCwKLSAgICBQQUNLRVRfVFlQ
RV9SRVRSWSwKLSAgICBQQUNLRVRfVFlQRV9aRVJPX1JUVCwKLSAgICBRdWljU3RyZWFtRnJhbWUs
Ci0gICAgUXVpY1RyYW5zcG9ydFBhcmFtZXRlcnMsCi0pCi1mcm9tIC5yYW5nZXNldCBpbXBvcnQg
UmFuZ2VTZXQKLQotUEFDS0VUX1RZUEVfTkFNRVMgPSB7Ci0gICAgUEFDS0VUX1RZUEVfSU5JVElB
TDogImluaXRpYWwiLAotICAgIFBBQ0tFVF9UWVBFX0hBTkRTSEFLRTogImhhbmRzaGFrZSIsCi0g
ICAgUEFDS0VUX1RZUEVfWkVST19SVFQ6ICIwUlRUIiwKLSAgICBQQUNLRVRfVFlQRV9PTkVfUlRU
OiAiMVJUVCIsCi0gICAgUEFDS0VUX1RZUEVfUkVUUlk6ICJyZXRyeSIsCi19Ci0KLQotZGVmIGhl
eGR1bXAoZGF0YTogYnl0ZXMpIC0+IHN0cjoKLSAgICByZXR1cm4gYmluYXNjaWkuaGV4bGlmeShk
YXRhKS5kZWNvZGUoImFzY2lpIikKLQotCi1jbGFzcyBRdWljTG9nZ2VyVHJhY2U6Ci0gICAgIiIi
Ci0gICAgQSBRVUlDIGV2ZW50IHRyYWNlLgotCi0gICAgRXZlbnRzIGFyZSBsb2dnZWQgaW4gdGhl
IGZvcm1hdCBkZWZpbmVkIGJ5IHFsb2cgZHJhZnQtMDEuCi0KLSAgICBTZWU6IGh0dHBzOi8vcXVp
Y2xvZy5naXRodWIuaW8vaW50ZXJuZXQtZHJhZnRzL2RyYWZ0LW1hcngtcWxvZy1ldmVudC1kZWZp
bml0aW9ucy1xdWljLWgzLmh0bWwKLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAq
LCBpc19jbGllbnQ6IGJvb2wsIG9kY2lkOiBieXRlcykgLT4gTm9uZToKLSAgICAgICAgc2VsZi5f
b2RjaWQgPSBvZGNpZAotICAgICAgICBzZWxmLl9ldmVudHM6IERlcXVlW1R1cGxlW2Zsb2F0LCBz
dHIsIHN0ciwgRGljdFtzdHIsIEFueV1dXSA9IGRlcXVlKCkKLSAgICAgICAgc2VsZi5fdmFudGFn
ZV9wb2ludCA9IHsKLSAgICAgICAgICAgICJuYW1lIjogImFpb3F1aWMiLAotICAgICAgICAgICAg
InR5cGUiOiAiY2xpZW50IiBpZiBpc19jbGllbnQgZWxzZSAic2VydmVyIiwKLSAgICAgICAgfQot
Ci0gICAgZGVmIGVuY29kZV9hY2tfZnJhbWUoc2VsZiwgcmFuZ2VzOiBSYW5nZVNldCwgZGVsYXk6
IGZsb2F0KSAtPiBEaWN0OgotICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgImFja19kZWxh
eSI6IHN0cihzZWxmLmVuY29kZV90aW1lKGRlbGF5KSksCi0gICAgICAgICAgICAiYWNrZWRfcmFu
Z2VzIjogW1tzdHIoeC5zdGFydCksIHN0cih4LnN0b3AgLSAxKV0gZm9yIHggaW4gcmFuZ2VzXSwK
LSAgICAgICAgICAgICJmcmFtZV90eXBlIjogImFjayIsCi0gICAgICAgIH0KLQotICAgIGRlZiBl
bmNvZGVfY29ubmVjdGlvbl9jbG9zZV9mcmFtZSgKLSAgICAgICAgc2VsZiwgZXJyb3JfY29kZTog
aW50LCBmcmFtZV90eXBlOiBPcHRpb25hbFtpbnRdLCByZWFzb25fcGhyYXNlOiBzdHIKLSAgICAp
IC0+IERpY3Q6Ci0gICAgICAgIGF0dHJzID0gewotICAgICAgICAgICAgImVycm9yX2NvZGUiOiBl
cnJvcl9jb2RlLAotICAgICAgICAgICAgImVycm9yX3NwYWNlIjogImFwcGxpY2F0aW9uIiBpZiBm
cmFtZV90eXBlIGlzIE5vbmUgZWxzZSAidHJhbnNwb3J0IiwKLSAgICAgICAgICAgICJmcmFtZV90
eXBlIjogImNvbm5lY3Rpb25fY2xvc2UiLAotICAgICAgICAgICAgInJhd19lcnJvcl9jb2RlIjog
ZXJyb3JfY29kZSwKLSAgICAgICAgICAgICJyZWFzb24iOiByZWFzb25fcGhyYXNlLAotICAgICAg
ICB9Ci0gICAgICAgIGlmIGZyYW1lX3R5cGUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBhdHRy
c1sidHJpZ2dlcl9mcmFtZV90eXBlIl0gPSBmcmFtZV90eXBlCi0KLSAgICAgICAgcmV0dXJuIGF0
dHJzCi0KLSAgICBkZWYgZW5jb2RlX2NyeXB0b19mcmFtZShzZWxmLCBmcmFtZTogUXVpY1N0cmVh
bUZyYW1lKSAtPiBEaWN0OgotICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgImZyYW1lX3R5
cGUiOiAiY3J5cHRvIiwKLSAgICAgICAgICAgICJsZW5ndGgiOiBsZW4oZnJhbWUuZGF0YSksCi0g
ICAgICAgICAgICAib2Zmc2V0Ijogc3RyKGZyYW1lLm9mZnNldCksCi0gICAgICAgIH0KLQotICAg
IGRlZiBlbmNvZGVfZGF0YV9ibG9ja2VkX2ZyYW1lKHNlbGYsIGxpbWl0OiBpbnQpIC0+IERpY3Q6
Ci0gICAgICAgIHJldHVybiB7ImZyYW1lX3R5cGUiOiAiZGF0YV9ibG9ja2VkIiwgImxpbWl0Ijog
c3RyKGxpbWl0KX0KLQotICAgIGRlZiBlbmNvZGVfZGF0YWdyYW1fZnJhbWUoc2VsZiwgbGVuZ3Ro
OiBpbnQpIC0+IERpY3Q6Ci0gICAgICAgIHJldHVybiB7ImZyYW1lX3R5cGUiOiAiZGF0YWdyYW0i
LCAibGVuZ3RoIjogbGVuZ3RofQotCi0gICAgZGVmIGVuY29kZV9oYW5kc2hha2VfZG9uZV9mcmFt
ZShzZWxmKSAtPiBEaWN0OgotICAgICAgICByZXR1cm4geyJmcmFtZV90eXBlIjogImhhbmRzaGFr
ZV9kb25lIn0KLQotICAgIGRlZiBlbmNvZGVfbWF4X2RhdGFfZnJhbWUoc2VsZiwgbWF4aW11bTog
aW50KSAtPiBEaWN0OgotICAgICAgICByZXR1cm4geyJmcmFtZV90eXBlIjogIm1heF9kYXRhIiwg
Im1heGltdW0iOiBzdHIobWF4aW11bSl9Ci0KLSAgICBkZWYgZW5jb2RlX21heF9zdHJlYW1fZGF0
YV9mcmFtZShzZWxmLCBtYXhpbXVtOiBpbnQsIHN0cmVhbV9pZDogaW50KSAtPiBEaWN0OgotICAg
ICAgICByZXR1cm4gewotICAgICAgICAgICAgImZyYW1lX3R5cGUiOiAibWF4X3N0cmVhbV9kYXRh
IiwKLSAgICAgICAgICAgICJtYXhpbXVtIjogc3RyKG1heGltdW0pLAotICAgICAgICAgICAgInN0
cmVhbV9pZCI6IHN0cihzdHJlYW1faWQpLAotICAgICAgICB9Ci0KLSAgICBkZWYgZW5jb2RlX21h
eF9zdHJlYW1zX2ZyYW1lKHNlbGYsIGlzX3VuaWRpcmVjdGlvbmFsOiBib29sLCBtYXhpbXVtOiBp
bnQpIC0+IERpY3Q6Ci0gICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAiZnJhbWVfdHlwZSI6
ICJtYXhfc3RyZWFtcyIsCi0gICAgICAgICAgICAibWF4aW11bSI6IHN0cihtYXhpbXVtKSwKLSAg
ICAgICAgICAgICJzdHJlYW1fdHlwZSI6ICJ1bmlkaXJlY3Rpb25hbCIgaWYgaXNfdW5pZGlyZWN0
aW9uYWwgZWxzZSAiYmlkaXJlY3Rpb25hbCIsCi0gICAgICAgIH0KLQotICAgIGRlZiBlbmNvZGVf
bmV3X2Nvbm5lY3Rpb25faWRfZnJhbWUoCi0gICAgICAgIHNlbGYsCi0gICAgICAgIGNvbm5lY3Rp
b25faWQ6IGJ5dGVzLAotICAgICAgICByZXRpcmVfcHJpb3JfdG86IGludCwKLSAgICAgICAgc2Vx
dWVuY2VfbnVtYmVyOiBpbnQsCi0gICAgICAgIHN0YXRlbGVzc19yZXNldF90b2tlbjogYnl0ZXMs
Ci0gICAgKSAtPiBEaWN0OgotICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgImNvbm5lY3Rp
b25faWQiOiBoZXhkdW1wKGNvbm5lY3Rpb25faWQpLAotICAgICAgICAgICAgImZyYW1lX3R5cGUi
OiAibmV3X2Nvbm5lY3Rpb25faWQiLAotICAgICAgICAgICAgImxlbmd0aCI6IGxlbihjb25uZWN0
aW9uX2lkKSwKLSAgICAgICAgICAgICJyZXNldF90b2tlbiI6IGhleGR1bXAoc3RhdGVsZXNzX3Jl
c2V0X3Rva2VuKSwKLSAgICAgICAgICAgICJyZXRpcmVfcHJpb3JfdG8iOiBzdHIocmV0aXJlX3By
aW9yX3RvKSwKLSAgICAgICAgICAgICJzZXF1ZW5jZV9udW1iZXIiOiBzdHIoc2VxdWVuY2VfbnVt
YmVyKSwKLSAgICAgICAgfQotCi0gICAgZGVmIGVuY29kZV9uZXdfdG9rZW5fZnJhbWUoc2VsZiwg
dG9rZW46IGJ5dGVzKSAtPiBEaWN0OgotICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgImZy
YW1lX3R5cGUiOiAibmV3X3Rva2VuIiwKLSAgICAgICAgICAgICJsZW5ndGgiOiBsZW4odG9rZW4p
LAotICAgICAgICAgICAgInRva2VuIjogaGV4ZHVtcCh0b2tlbiksCi0gICAgICAgIH0KLQotICAg
IGRlZiBlbmNvZGVfcGFkZGluZ19mcmFtZShzZWxmKSAtPiBEaWN0OgotICAgICAgICByZXR1cm4g
eyJmcmFtZV90eXBlIjogInBhZGRpbmcifQotCi0gICAgZGVmIGVuY29kZV9wYXRoX2NoYWxsZW5n
ZV9mcmFtZShzZWxmLCBkYXRhOiBieXRlcykgLT4gRGljdDoKLSAgICAgICAgcmV0dXJuIHsiZGF0
YSI6IGhleGR1bXAoZGF0YSksICJmcmFtZV90eXBlIjogInBhdGhfY2hhbGxlbmdlIn0KLQotICAg
IGRlZiBlbmNvZGVfcGF0aF9yZXNwb25zZV9mcmFtZShzZWxmLCBkYXRhOiBieXRlcykgLT4gRGlj
dDoKLSAgICAgICAgcmV0dXJuIHsiZGF0YSI6IGhleGR1bXAoZGF0YSksICJmcmFtZV90eXBlIjog
InBhdGhfcmVzcG9uc2UifQotCi0gICAgZGVmIGVuY29kZV9waW5nX2ZyYW1lKHNlbGYpIC0+IERp
Y3Q6Ci0gICAgICAgIHJldHVybiB7ImZyYW1lX3R5cGUiOiAicGluZyJ9Ci0KLSAgICBkZWYgZW5j
b2RlX3Jlc2V0X3N0cmVhbV9mcmFtZSgKLSAgICAgICAgc2VsZiwgZXJyb3JfY29kZTogaW50LCBm
aW5hbF9zaXplOiBpbnQsIHN0cmVhbV9pZDogaW50Ci0gICAgKSAtPiBEaWN0OgotICAgICAgICBy
ZXR1cm4gewotICAgICAgICAgICAgImVycm9yX2NvZGUiOiBlcnJvcl9jb2RlLAotICAgICAgICAg
ICAgImZpbmFsX3NpemUiOiBzdHIoZmluYWxfc2l6ZSksCi0gICAgICAgICAgICAiZnJhbWVfdHlw
ZSI6ICJyZXNldF9zdHJlYW0iLAotICAgICAgICAgICAgInN0cmVhbV9pZCI6IHN0cihzdHJlYW1f
aWQpLAotICAgICAgICB9Ci0KLSAgICBkZWYgZW5jb2RlX3JldGlyZV9jb25uZWN0aW9uX2lkX2Zy
YW1lKHNlbGYsIHNlcXVlbmNlX251bWJlcjogaW50KSAtPiBEaWN0OgotICAgICAgICByZXR1cm4g
ewotICAgICAgICAgICAgImZyYW1lX3R5cGUiOiAicmV0aXJlX2Nvbm5lY3Rpb25faWQiLAotICAg
ICAgICAgICAgInNlcXVlbmNlX251bWJlciI6IHN0cihzZXF1ZW5jZV9udW1iZXIpLAotICAgICAg
ICB9Ci0KLSAgICBkZWYgZW5jb2RlX3N0cmVhbV9kYXRhX2Jsb2NrZWRfZnJhbWUoc2VsZiwgbGlt
aXQ6IGludCwgc3RyZWFtX2lkOiBpbnQpIC0+IERpY3Q6Ci0gICAgICAgIHJldHVybiB7Ci0gICAg
ICAgICAgICAiZnJhbWVfdHlwZSI6ICJzdHJlYW1fZGF0YV9ibG9ja2VkIiwKLSAgICAgICAgICAg
ICJsaW1pdCI6IHN0cihsaW1pdCksCi0gICAgICAgICAgICAic3RyZWFtX2lkIjogc3RyKHN0cmVh
bV9pZCksCi0gICAgICAgIH0KLQotICAgIGRlZiBlbmNvZGVfc3RvcF9zZW5kaW5nX2ZyYW1lKHNl
bGYsIGVycm9yX2NvZGU6IGludCwgc3RyZWFtX2lkOiBpbnQpIC0+IERpY3Q6Ci0gICAgICAgIHJl
dHVybiB7Ci0gICAgICAgICAgICAiZnJhbWVfdHlwZSI6ICJzdG9wX3NlbmRpbmciLAotICAgICAg
ICAgICAgImVycm9yX2NvZGUiOiBlcnJvcl9jb2RlLAotICAgICAgICAgICAgInN0cmVhbV9pZCI6
IHN0cihzdHJlYW1faWQpLAotICAgICAgICB9Ci0KLSAgICBkZWYgZW5jb2RlX3N0cmVhbV9mcmFt
ZShzZWxmLCBmcmFtZTogUXVpY1N0cmVhbUZyYW1lLCBzdHJlYW1faWQ6IGludCkgLT4gRGljdDoK
LSAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICJmaW4iOiBmcmFtZS5maW4sCi0gICAgICAg
ICAgICAiZnJhbWVfdHlwZSI6ICJzdHJlYW0iLAotICAgICAgICAgICAgImxlbmd0aCI6IGxlbihm
cmFtZS5kYXRhKSwKLSAgICAgICAgICAgICJvZmZzZXQiOiBzdHIoZnJhbWUub2Zmc2V0KSwKLSAg
ICAgICAgICAgICJzdHJlYW1faWQiOiBzdHIoc3RyZWFtX2lkKSwKLSAgICAgICAgfQotCi0gICAg
ZGVmIGVuY29kZV9zdHJlYW1zX2Jsb2NrZWRfZnJhbWUoc2VsZiwgaXNfdW5pZGlyZWN0aW9uYWw6
IGJvb2wsIGxpbWl0OiBpbnQpIC0+IERpY3Q6Ci0gICAgICAgIHJldHVybiB7Ci0gICAgICAgICAg
ICAiZnJhbWVfdHlwZSI6ICJzdHJlYW1zX2Jsb2NrZWQiLAotICAgICAgICAgICAgImxpbWl0Ijog
c3RyKGxpbWl0KSwKLSAgICAgICAgICAgICJzdHJlYW1fdHlwZSI6ICJ1bmlkaXJlY3Rpb25hbCIg
aWYgaXNfdW5pZGlyZWN0aW9uYWwgZWxzZSAiYmlkaXJlY3Rpb25hbCIsCi0gICAgICAgIH0KLQot
ICAgIGRlZiBlbmNvZGVfdGltZShzZWxmLCBzZWNvbmRzOiBmbG9hdCkgLT4gaW50OgotICAgICAg
ICAiIiIKLSAgICAgICAgQ29udmVydCBhIHRpbWUgdG8gaW50ZWdlciBtaWNyb3NlY29uZHMuCi0g
ICAgICAgICIiIgotICAgICAgICByZXR1cm4gaW50KHNlY29uZHMgKiAxMDAwMDAwKQotCi0gICAg
ZGVmIGVuY29kZV90cmFuc3BvcnRfcGFyYW1ldGVycygKLSAgICAgICAgc2VsZiwgb3duZXI6IHN0
ciwgcGFyYW1ldGVyczogUXVpY1RyYW5zcG9ydFBhcmFtZXRlcnMKLSAgICApIC0+IERpY3Rbc3Ry
LCBBbnldOgotICAgICAgICBkYXRhOiBEaWN0W3N0ciwgQW55XSA9IHsib3duZXIiOiBvd25lcn0K
LSAgICAgICAgZm9yIHBhcmFtX25hbWUsIHBhcmFtX3ZhbHVlIGluIHBhcmFtZXRlcnMuX19kaWN0
X18uaXRlbXMoKToKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UocGFyYW1fdmFsdWUsIGJvb2wp
OgotICAgICAgICAgICAgICAgIGRhdGFbcGFyYW1fbmFtZV0gPSBwYXJhbV92YWx1ZQotICAgICAg
ICAgICAgZWxpZiBpc2luc3RhbmNlKHBhcmFtX3ZhbHVlLCBieXRlcyk6Ci0gICAgICAgICAgICAg
ICAgZGF0YVtwYXJhbV9uYW1lXSA9IGhleGR1bXAocGFyYW1fdmFsdWUpCi0gICAgICAgICAgICBl
bGlmIGlzaW5zdGFuY2UocGFyYW1fdmFsdWUsIGludCk6Ci0gICAgICAgICAgICAgICAgZGF0YVtw
YXJhbV9uYW1lXSA9IHBhcmFtX3ZhbHVlCi0gICAgICAgIHJldHVybiBkYXRhCi0KLSAgICBkZWYg
bG9nX2V2ZW50KHNlbGYsICosIGNhdGVnb3J5OiBzdHIsIGV2ZW50OiBzdHIsIGRhdGE6IERpY3Qp
IC0+IE5vbmU6Ci0gICAgICAgIHNlbGYuX2V2ZW50cy5hcHBlbmQoKHRpbWUudGltZSgpLCBjYXRl
Z29yeSwgZXZlbnQsIGRhdGEpKQotCi0gICAgZGVmIHBhY2tldF90eXBlKHNlbGYsIHBhY2tldF90
eXBlOiBpbnQpIC0+IHN0cjoKLSAgICAgICAgcmV0dXJuIFBBQ0tFVF9UWVBFX05BTUVTLmdldChw
YWNrZXRfdHlwZSAmIFBBQ0tFVF9UWVBFX01BU0ssICIxUlRUIikKLQotICAgIGRlZiB0b19kaWN0
KHNlbGYpIC0+IERpY3Rbc3RyLCBBbnldOgotICAgICAgICAiIiIKLSAgICAgICAgUmV0dXJuIHRo
ZSB0cmFjZSBhcyBhIGRpY3Rpb25hcnkgd2hpY2ggY2FuIGJlIHdyaXR0ZW4gYXMgSlNPTi4KLSAg
ICAgICAgIiIiCi0gICAgICAgIGlmIHNlbGYuX2V2ZW50czoKLSAgICAgICAgICAgIHJlZmVyZW5j
ZV90aW1lID0gc2VsZi5fZXZlbnRzWzBdWzBdCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBy
ZWZlcmVuY2VfdGltZSA9IDAuMAotICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgImNvbmZp
Z3VyYXRpb24iOiB7InRpbWVfdW5pdHMiOiAidXMifSwKLSAgICAgICAgICAgICJjb21tb25fZmll
bGRzIjogewotICAgICAgICAgICAgICAgICJPRENJRCI6IGhleGR1bXAoc2VsZi5fb2RjaWQpLAot
ICAgICAgICAgICAgICAgICJyZWZlcmVuY2VfdGltZSI6IHN0cihzZWxmLmVuY29kZV90aW1lKHJl
ZmVyZW5jZV90aW1lKSksCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgImV2ZW50X2ZpZWxk
cyI6IFsicmVsYXRpdmVfdGltZSIsICJjYXRlZ29yeSIsICJldmVudF90eXBlIiwgImRhdGEiXSwK
LSAgICAgICAgICAgICJldmVudHMiOiBsaXN0KAotICAgICAgICAgICAgICAgIG1hcCgKLSAgICAg
ICAgICAgICAgICAgICAgbGFtYmRhIGV2ZW50OiAoCi0gICAgICAgICAgICAgICAgICAgICAgICBz
dHIoc2VsZi5lbmNvZGVfdGltZShldmVudFswXSAtIHJlZmVyZW5jZV90aW1lKSksCi0gICAgICAg
ICAgICAgICAgICAgICAgICBldmVudFsxXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50
WzJdLAotICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRbM10sCi0gICAgICAgICAgICAgICAg
ICAgICksCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2V2ZW50cywKLSAgICAgICAgICAgICAg
ICApCi0gICAgICAgICAgICApLAotICAgICAgICAgICAgInZhbnRhZ2VfcG9pbnQiOiBzZWxmLl92
YW50YWdlX3BvaW50LAotICAgICAgICB9Ci0KLQotY2xhc3MgUXVpY0xvZ2dlcjoKLSAgICAiIiIK
LSAgICBBIFFVSUMgZXZlbnQgbG9nZ2VyLgotCi0gICAgU2VydmVzIGFzIGEgY29udGFpbmVyIGZv
ciB0cmFjZXMgaW4gdGhlIGZvcm1hdCBkZWZpbmVkIGJ5IHFsb2cgZHJhZnQtMDEuCi0KLSAgICBT
ZWU6IGh0dHBzOi8vcXVpY2xvZy5naXRodWIuaW8vaW50ZXJuZXQtZHJhZnRzL2RyYWZ0LW1hcngt
cWxvZy1tYWluLXNjaGVtYS5odG1sCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZikg
LT4gTm9uZToKLSAgICAgICAgc2VsZi5fdHJhY2VzOiBMaXN0W1F1aWNMb2dnZXJUcmFjZV0gPSBb
XQotCi0gICAgZGVmIHN0YXJ0X3RyYWNlKHNlbGYsIGlzX2NsaWVudDogYm9vbCwgb2RjaWQ6IGJ5
dGVzKSAtPiBRdWljTG9nZ2VyVHJhY2U6Ci0gICAgICAgIHRyYWNlID0gUXVpY0xvZ2dlclRyYWNl
KGlzX2NsaWVudD1pc19jbGllbnQsIG9kY2lkPW9kY2lkKQotICAgICAgICBzZWxmLl90cmFjZXMu
YXBwZW5kKHRyYWNlKQotICAgICAgICByZXR1cm4gdHJhY2UKLQotICAgIGRlZiBlbmRfdHJhY2Uo
c2VsZiwgdHJhY2U6IFF1aWNMb2dnZXJUcmFjZSkgLT4gTm9uZToKLSAgICAgICAgYXNzZXJ0IHRy
YWNlIGluIHNlbGYuX3RyYWNlcywgIlF1aWNMb2dnZXJUcmFjZSBkb2VzIG5vdCBiZWxvbmcgdG8g
UXVpY0xvZ2dlciIKLQotICAgIGRlZiB0b19kaWN0KHNlbGYpIC0+IERpY3Rbc3RyLCBBbnldOgot
ICAgICAgICAiIiIKLSAgICAgICAgUmV0dXJuIHRoZSB0cmFjZXMgYXMgYSBkaWN0aW9uYXJ5IHdo
aWNoIGNhbiBiZSB3cml0dGVuIGFzIEpTT04uCi0gICAgICAgICIiIgotICAgICAgICByZXR1cm4g
ewotICAgICAgICAgICAgInFsb2dfdmVyc2lvbiI6ICJkcmFmdC0wMSIsCi0gICAgICAgICAgICAi
dHJhY2VzIjogW3RyYWNlLnRvX2RpY3QoKSBmb3IgdHJhY2UgaW4gc2VsZi5fdHJhY2VzXSwKLSAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvcGFja2V0
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvcGFja2V0LnB5CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBiOTk0NDU5OTA4NWRlMGRkOGRjNmE5YmZlM2JjYTZhYmJhMzYw
YmNmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL3BhY2tldC5weQorKysgL2Rldi9udWxsCkBAIC0xLDUw
OCArMCwwIEBACi1pbXBvcnQgYmluYXNjaWkKLWltcG9ydCBpcGFkZHJlc3MKLWltcG9ydCBvcwot
ZnJvbSBkYXRhY2xhc3NlcyBpbXBvcnQgZGF0YWNsYXNzCi1mcm9tIGVudW0gaW1wb3J0IEludEVu
dW0KLWZyb20gdHlwaW5nIGltcG9ydCBMaXN0LCBPcHRpb25hbCwgVHVwbGUKLQotZnJvbSBjcnlw
dG9ncmFwaHkuaGF6bWF0LnByaW1pdGl2ZXMuY2lwaGVycy5hZWFkIGltcG9ydCBBRVNHQ00KLQot
ZnJvbSAuLmJ1ZmZlciBpbXBvcnQgQnVmZmVyCi1mcm9tIC4udGxzIGltcG9ydCBwdWxsX2Jsb2Nr
LCBwdXNoX2Jsb2NrCi1mcm9tIC5yYW5nZXNldCBpbXBvcnQgUmFuZ2VTZXQKLQotUEFDS0VUX0xP
TkdfSEVBREVSID0gMHg4MAotUEFDS0VUX0ZJWEVEX0JJVCA9IDB4NDAKLVBBQ0tFVF9TUElOX0JJ
VCA9IDB4MjAKLQotUEFDS0VUX1RZUEVfSU5JVElBTCA9IFBBQ0tFVF9MT05HX0hFQURFUiB8IFBB
Q0tFVF9GSVhFRF9CSVQgfCAweDAwCi1QQUNLRVRfVFlQRV9aRVJPX1JUVCA9IFBBQ0tFVF9MT05H
X0hFQURFUiB8IFBBQ0tFVF9GSVhFRF9CSVQgfCAweDEwCi1QQUNLRVRfVFlQRV9IQU5EU0hBS0Ug
PSBQQUNLRVRfTE9OR19IRUFERVIgfCBQQUNLRVRfRklYRURfQklUIHwgMHgyMAotUEFDS0VUX1RZ
UEVfUkVUUlkgPSBQQUNLRVRfTE9OR19IRUFERVIgfCBQQUNLRVRfRklYRURfQklUIHwgMHgzMAot
UEFDS0VUX1RZUEVfT05FX1JUVCA9IFBBQ0tFVF9GSVhFRF9CSVQKLVBBQ0tFVF9UWVBFX01BU0sg
PSAweEYwCi0KLUNPTk5FQ1RJT05fSURfTUFYX1NJWkUgPSAyMAotUEFDS0VUX05VTUJFUl9NQVhf
U0laRSA9IDQKLVJFVFJZX0FFQURfS0VZID0gYmluYXNjaWkudW5oZXhsaWZ5KCI0ZDMyZWNkYjJh
MjEzM2M4NDFlNDA0M2RmMjdkNDQzMCIpCi1SRVRSWV9BRUFEX05PTkNFID0gYmluYXNjaWkudW5o
ZXhsaWZ5KCI0ZDE2MTFkMDU1MTNhNTUyYzU4N2Q1NzUiKQotUkVUUllfSU5URUdSSVRZX1RBR19T
SVpFID0gMTYKLQotCi1jbGFzcyBRdWljRXJyb3JDb2RlKEludEVudW0pOgotICAgIE5PX0VSUk9S
ID0gMHgwCi0gICAgSU5URVJOQUxfRVJST1IgPSAweDEKLSAgICBTRVJWRVJfQlVTWSA9IDB4Mgot
ICAgIEZMT1dfQ09OVFJPTF9FUlJPUiA9IDB4MwotICAgIFNUUkVBTV9MSU1JVF9FUlJPUiA9IDB4
NAotICAgIFNUUkVBTV9TVEFURV9FUlJPUiA9IDB4NQotICAgIEZJTkFMX1NJWkVfRVJST1IgPSAw
eDYKLSAgICBGUkFNRV9FTkNPRElOR19FUlJPUiA9IDB4NwotICAgIFRSQU5TUE9SVF9QQVJBTUVU
RVJfRVJST1IgPSAweDgKLSAgICBDT05ORUNUSU9OX0lEX0xJTUlUX0VSUk9SID0gMHg5Ci0gICAg
UFJPVE9DT0xfVklPTEFUSU9OID0gMHhBCi0gICAgSU5WQUxJRF9UT0tFTiA9IDB4QgotICAgIENS
WVBUT19CVUZGRVJfRVhDRUVERUQgPSAweEQKLSAgICBDUllQVE9fRVJST1IgPSAweDEwMAotCi0K
LWNsYXNzIFF1aWNQcm90b2NvbFZlcnNpb24oSW50RW51bSk6Ci0gICAgTkVHT1RJQVRJT04gPSAw
Ci0gICAgRFJBRlRfMjUgPSAweEZGMDAwMDE5Ci0gICAgRFJBRlRfMjYgPSAweEZGMDAwMDFBCi0g
ICAgRFJBRlRfMjcgPSAweEZGMDAwMDFCCi0KLQotQGRhdGFjbGFzcwotY2xhc3MgUXVpY0hlYWRl
cjoKLSAgICBpc19sb25nX2hlYWRlcjogYm9vbAotICAgIHZlcnNpb246IE9wdGlvbmFsW2ludF0K
LSAgICBwYWNrZXRfdHlwZTogaW50Ci0gICAgZGVzdGluYXRpb25fY2lkOiBieXRlcwotICAgIHNv
dXJjZV9jaWQ6IGJ5dGVzCi0gICAgdG9rZW46IGJ5dGVzID0gYiIiCi0gICAgaW50ZWdyaXR5X3Rh
ZzogYnl0ZXMgPSBiIiIKLSAgICByZXN0X2xlbmd0aDogaW50ID0gMAotCi0KLWRlZiBkZWNvZGVf
cGFja2V0X251bWJlcih0cnVuY2F0ZWQ6IGludCwgbnVtX2JpdHM6IGludCwgZXhwZWN0ZWQ6IGlu
dCkgLT4gaW50OgotICAgICIiIgotICAgIFJlY292ZXIgYSBwYWNrZXQgbnVtYmVyIGZyb20gYSB0
cnVuY2F0ZWQgcGFja2V0IG51bWJlci4KLQotICAgIFNlZTogQXBwZW5kaXggQSAtIFNhbXBsZSBQ
YWNrZXQgTnVtYmVyIERlY29kaW5nIEFsZ29yaXRobQotICAgICIiIgotICAgIHdpbmRvdyA9IDEg
PDwgbnVtX2JpdHMKLSAgICBoYWxmX3dpbmRvdyA9IHdpbmRvdyAvLyAyCi0gICAgY2FuZGlkYXRl
ID0gKGV4cGVjdGVkICYgfih3aW5kb3cgLSAxKSkgfCB0cnVuY2F0ZWQKLSAgICBpZiBjYW5kaWRh
dGUgPD0gZXhwZWN0ZWQgLSBoYWxmX3dpbmRvdyBhbmQgY2FuZGlkYXRlIDwgKDEgPDwgNjIpIC0g
d2luZG93OgotICAgICAgICByZXR1cm4gY2FuZGlkYXRlICsgd2luZG93Ci0gICAgZWxpZiBjYW5k
aWRhdGUgPiBleHBlY3RlZCArIGhhbGZfd2luZG93IGFuZCBjYW5kaWRhdGUgPj0gd2luZG93Ogot
ICAgICAgICByZXR1cm4gY2FuZGlkYXRlIC0gd2luZG93Ci0gICAgZWxzZToKLSAgICAgICAgcmV0
dXJuIGNhbmRpZGF0ZQotCi0KLWRlZiBnZXRfcmV0cnlfaW50ZWdyaXR5X3RhZygKLSAgICBwYWNr
ZXRfd2l0aG91dF90YWc6IGJ5dGVzLCBvcmlnaW5hbF9kZXN0aW5hdGlvbl9jaWQ6IGJ5dGVzCi0p
IC0+IGJ5dGVzOgotICAgICIiIgotICAgIENhbGN1bGF0ZSB0aGUgaW50ZWdyaXR5IHRhZyBmb3Ig
YSBSRVRSWSBwYWNrZXQuCi0gICAgIiIiCi0gICAgIyBidWlsZCBSZXRyeSBwc2V1ZG8gcGFja2V0
Ci0gICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PTEgKyBsZW4ob3JpZ2luYWxfZGVzdGluYXRpb25f
Y2lkKSArIGxlbihwYWNrZXRfd2l0aG91dF90YWcpKQotICAgIGJ1Zi5wdXNoX3VpbnQ4KGxlbihv
cmlnaW5hbF9kZXN0aW5hdGlvbl9jaWQpKQotICAgIGJ1Zi5wdXNoX2J5dGVzKG9yaWdpbmFsX2Rl
c3RpbmF0aW9uX2NpZCkKLSAgICBidWYucHVzaF9ieXRlcyhwYWNrZXRfd2l0aG91dF90YWcpCi0g
ICAgYXNzZXJ0IGJ1Zi5lb2YoKQotCi0gICAgIyBydW4gQUVTLTEyOC1HQ00KLSAgICBhZWFkID0g
QUVTR0NNKFJFVFJZX0FFQURfS0VZKQotICAgIGludGVncml0eV90YWcgPSBhZWFkLmVuY3J5cHQo
UkVUUllfQUVBRF9OT05DRSwgYiIiLCBidWYuZGF0YSkKLSAgICBhc3NlcnQgbGVuKGludGVncml0
eV90YWcpID09IFJFVFJZX0lOVEVHUklUWV9UQUdfU0laRQotICAgIHJldHVybiBpbnRlZ3JpdHlf
dGFnCi0KLQotZGVmIGdldF9zcGluX2JpdChmaXJzdF9ieXRlOiBpbnQpIC0+IGJvb2w6Ci0gICAg
cmV0dXJuIGJvb2woZmlyc3RfYnl0ZSAmIFBBQ0tFVF9TUElOX0JJVCkKLQotCi1kZWYgaXNfbG9u
Z19oZWFkZXIoZmlyc3RfYnl0ZTogaW50KSAtPiBib29sOgotICAgIHJldHVybiBib29sKGZpcnN0
X2J5dGUgJiBQQUNLRVRfTE9OR19IRUFERVIpCi0KLQotZGVmIHB1bGxfcXVpY19oZWFkZXIoYnVm
OiBCdWZmZXIsIGhvc3RfY2lkX2xlbmd0aDogT3B0aW9uYWxbaW50XSA9IE5vbmUpIC0+IFF1aWNI
ZWFkZXI6Ci0gICAgZmlyc3RfYnl0ZSA9IGJ1Zi5wdWxsX3VpbnQ4KCkKLQotICAgIGludGVncml0
eV90YWcgPSBiIiIKLSAgICB0b2tlbiA9IGIiIgotICAgIGlmIGlzX2xvbmdfaGVhZGVyKGZpcnN0
X2J5dGUpOgotICAgICAgICAjIGxvbmcgaGVhZGVyIHBhY2tldAotICAgICAgICB2ZXJzaW9uID0g
YnVmLnB1bGxfdWludDMyKCkKLQotICAgICAgICBkZXN0aW5hdGlvbl9jaWRfbGVuZ3RoID0gYnVm
LnB1bGxfdWludDgoKQotICAgICAgICBpZiBkZXN0aW5hdGlvbl9jaWRfbGVuZ3RoID4gQ09OTkVD
VElPTl9JRF9NQVhfU0laRToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0gICAgICAg
ICAgICAgICAgIkRlc3RpbmF0aW9uIENJRCBpcyB0b28gbG9uZyAoJWQgYnl0ZXMpIiAlIGRlc3Rp
bmF0aW9uX2NpZF9sZW5ndGgKLSAgICAgICAgICAgICkKLSAgICAgICAgZGVzdGluYXRpb25fY2lk
ID0gYnVmLnB1bGxfYnl0ZXMoZGVzdGluYXRpb25fY2lkX2xlbmd0aCkKLQotICAgICAgICBzb3Vy
Y2VfY2lkX2xlbmd0aCA9IGJ1Zi5wdWxsX3VpbnQ4KCkKLSAgICAgICAgaWYgc291cmNlX2NpZF9s
ZW5ndGggPiBDT05ORUNUSU9OX0lEX01BWF9TSVpFOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVF
cnJvcigiU291cmNlIENJRCBpcyB0b28gbG9uZyAoJWQgYnl0ZXMpIiAlIHNvdXJjZV9jaWRfbGVu
Z3RoKQotICAgICAgICBzb3VyY2VfY2lkID0gYnVmLnB1bGxfYnl0ZXMoc291cmNlX2NpZF9sZW5n
dGgpCi0KLSAgICAgICAgaWYgdmVyc2lvbiA9PSBRdWljUHJvdG9jb2xWZXJzaW9uLk5FR09USUFU
SU9OOgotICAgICAgICAgICAgIyB2ZXJzaW9uIG5lZ290aWF0aW9uCi0gICAgICAgICAgICBwYWNr
ZXRfdHlwZSA9IE5vbmUKLSAgICAgICAgICAgIHJlc3RfbGVuZ3RoID0gYnVmLmNhcGFjaXR5IC0g
YnVmLnRlbGwoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgbm90IChmaXJzdF9ieXRl
ICYgUEFDS0VUX0ZJWEVEX0JJVCk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigi
UGFja2V0IGZpeGVkIGJpdCBpcyB6ZXJvIikKLQotICAgICAgICAgICAgcGFja2V0X3R5cGUgPSBm
aXJzdF9ieXRlICYgUEFDS0VUX1RZUEVfTUFTSwotICAgICAgICAgICAgaWYgcGFja2V0X3R5cGUg
PT0gUEFDS0VUX1RZUEVfSU5JVElBTDoKLSAgICAgICAgICAgICAgICB0b2tlbl9sZW5ndGggPSBi
dWYucHVsbF91aW50X3ZhcigpCi0gICAgICAgICAgICAgICAgdG9rZW4gPSBidWYucHVsbF9ieXRl
cyh0b2tlbl9sZW5ndGgpCi0gICAgICAgICAgICAgICAgcmVzdF9sZW5ndGggPSBidWYucHVsbF91
aW50X3ZhcigpCi0gICAgICAgICAgICBlbGlmIHBhY2tldF90eXBlID09IFBBQ0tFVF9UWVBFX1JF
VFJZOgotICAgICAgICAgICAgICAgIHRva2VuX2xlbmd0aCA9IGJ1Zi5jYXBhY2l0eSAtIGJ1Zi50
ZWxsKCkgLSBSRVRSWV9JTlRFR1JJVFlfVEFHX1NJWkUKLSAgICAgICAgICAgICAgICB0b2tlbiA9
IGJ1Zi5wdWxsX2J5dGVzKHRva2VuX2xlbmd0aCkKLSAgICAgICAgICAgICAgICBpbnRlZ3JpdHlf
dGFnID0gYnVmLnB1bGxfYnl0ZXMoUkVUUllfSU5URUdSSVRZX1RBR19TSVpFKQotICAgICAgICAg
ICAgICAgIHJlc3RfbGVuZ3RoID0gMAotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAg
ICByZXN0X2xlbmd0aCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKLQotICAgICAgICByZXR1cm4gUXVp
Y0hlYWRlcigKLSAgICAgICAgICAgIGlzX2xvbmdfaGVhZGVyPVRydWUsCi0gICAgICAgICAgICB2
ZXJzaW9uPXZlcnNpb24sCi0gICAgICAgICAgICBwYWNrZXRfdHlwZT1wYWNrZXRfdHlwZSwKLSAg
ICAgICAgICAgIGRlc3RpbmF0aW9uX2NpZD1kZXN0aW5hdGlvbl9jaWQsCi0gICAgICAgICAgICBz
b3VyY2VfY2lkPXNvdXJjZV9jaWQsCi0gICAgICAgICAgICB0b2tlbj10b2tlbiwKLSAgICAgICAg
ICAgIGludGVncml0eV90YWc9aW50ZWdyaXR5X3RhZywKLSAgICAgICAgICAgIHJlc3RfbGVuZ3Ro
PXJlc3RfbGVuZ3RoLAotICAgICAgICApCi0gICAgZWxzZToKLSAgICAgICAgIyBzaG9ydCBoZWFk
ZXIgcGFja2V0Ci0gICAgICAgIGlmIG5vdCAoZmlyc3RfYnl0ZSAmIFBBQ0tFVF9GSVhFRF9CSVQp
OgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiUGFja2V0IGZpeGVkIGJpdCBpcyB6ZXJv
IikKLQotICAgICAgICBwYWNrZXRfdHlwZSA9IGZpcnN0X2J5dGUgJiBQQUNLRVRfVFlQRV9NQVNL
Ci0gICAgICAgIGRlc3RpbmF0aW9uX2NpZCA9IGJ1Zi5wdWxsX2J5dGVzKGhvc3RfY2lkX2xlbmd0
aCkKLSAgICAgICAgcmV0dXJuIFF1aWNIZWFkZXIoCi0gICAgICAgICAgICBpc19sb25nX2hlYWRl
cj1GYWxzZSwKLSAgICAgICAgICAgIHZlcnNpb249Tm9uZSwKLSAgICAgICAgICAgIHBhY2tldF90
eXBlPXBhY2tldF90eXBlLAotICAgICAgICAgICAgZGVzdGluYXRpb25fY2lkPWRlc3RpbmF0aW9u
X2NpZCwKLSAgICAgICAgICAgIHNvdXJjZV9jaWQ9YiIiLAotICAgICAgICAgICAgdG9rZW49YiIi
LAotICAgICAgICAgICAgcmVzdF9sZW5ndGg9YnVmLmNhcGFjaXR5IC0gYnVmLnRlbGwoKSwKLSAg
ICAgICAgKQotCi0KLWRlZiBlbmNvZGVfcXVpY19yZXRyeSgKLSAgICB2ZXJzaW9uOiBpbnQsCi0g
ICAgc291cmNlX2NpZDogYnl0ZXMsCi0gICAgZGVzdGluYXRpb25fY2lkOiBieXRlcywKLSAgICBv
cmlnaW5hbF9kZXN0aW5hdGlvbl9jaWQ6IGJ5dGVzLAotICAgIHJldHJ5X3Rva2VuOiBieXRlcywK
LSkgLT4gYnl0ZXM6Ci0gICAgYnVmID0gQnVmZmVyKAotICAgICAgICBjYXBhY2l0eT03Ci0gICAg
ICAgICsgbGVuKGRlc3RpbmF0aW9uX2NpZCkKLSAgICAgICAgKyBsZW4oc291cmNlX2NpZCkKLSAg
ICAgICAgKyBsZW4ocmV0cnlfdG9rZW4pCi0gICAgICAgICsgUkVUUllfSU5URUdSSVRZX1RBR19T
SVpFCi0gICAgKQotICAgIGJ1Zi5wdXNoX3VpbnQ4KFBBQ0tFVF9UWVBFX1JFVFJZKQotICAgIGJ1
Zi5wdXNoX3VpbnQzMih2ZXJzaW9uKQotICAgIGJ1Zi5wdXNoX3VpbnQ4KGxlbihkZXN0aW5hdGlv
bl9jaWQpKQotICAgIGJ1Zi5wdXNoX2J5dGVzKGRlc3RpbmF0aW9uX2NpZCkKLSAgICBidWYucHVz
aF91aW50OChsZW4oc291cmNlX2NpZCkpCi0gICAgYnVmLnB1c2hfYnl0ZXMoc291cmNlX2NpZCkK
LSAgICBidWYucHVzaF9ieXRlcyhyZXRyeV90b2tlbikKLSAgICBidWYucHVzaF9ieXRlcyhnZXRf
cmV0cnlfaW50ZWdyaXR5X3RhZyhidWYuZGF0YSwgb3JpZ2luYWxfZGVzdGluYXRpb25fY2lkKSkK
LSAgICBhc3NlcnQgYnVmLmVvZigpCi0gICAgcmV0dXJuIGJ1Zi5kYXRhCi0KLQotZGVmIGVuY29k
ZV9xdWljX3ZlcnNpb25fbmVnb3RpYXRpb24oCi0gICAgc291cmNlX2NpZDogYnl0ZXMsIGRlc3Rp
bmF0aW9uX2NpZDogYnl0ZXMsIHN1cHBvcnRlZF92ZXJzaW9uczogTGlzdFtpbnRdCi0pIC0+IGJ5
dGVzOgotICAgIGJ1ZiA9IEJ1ZmZlcigKLSAgICAgICAgY2FwYWNpdHk9NwotICAgICAgICArIGxl
bihkZXN0aW5hdGlvbl9jaWQpCi0gICAgICAgICsgbGVuKHNvdXJjZV9jaWQpCi0gICAgICAgICsg
NCAqIGxlbihzdXBwb3J0ZWRfdmVyc2lvbnMpCi0gICAgKQotICAgIGJ1Zi5wdXNoX3VpbnQ4KG9z
LnVyYW5kb20oMSlbMF0gfCBQQUNLRVRfTE9OR19IRUFERVIpCi0gICAgYnVmLnB1c2hfdWludDMy
KFF1aWNQcm90b2NvbFZlcnNpb24uTkVHT1RJQVRJT04pCi0gICAgYnVmLnB1c2hfdWludDgobGVu
KGRlc3RpbmF0aW9uX2NpZCkpCi0gICAgYnVmLnB1c2hfYnl0ZXMoZGVzdGluYXRpb25fY2lkKQot
ICAgIGJ1Zi5wdXNoX3VpbnQ4KGxlbihzb3VyY2VfY2lkKSkKLSAgICBidWYucHVzaF9ieXRlcyhz
b3VyY2VfY2lkKQotICAgIGZvciB2ZXJzaW9uIGluIHN1cHBvcnRlZF92ZXJzaW9uczoKLSAgICAg
ICAgYnVmLnB1c2hfdWludDMyKHZlcnNpb24pCi0gICAgcmV0dXJuIGJ1Zi5kYXRhCi0KLQotIyBU
TFMgRVhURU5TSU9OCi0KLQotQGRhdGFjbGFzcwotY2xhc3MgUXVpY1ByZWZlcnJlZEFkZHJlc3M6
Ci0gICAgaXB2NF9hZGRyZXNzOiBPcHRpb25hbFtUdXBsZVtzdHIsIGludF1dCi0gICAgaXB2Nl9h
ZGRyZXNzOiBPcHRpb25hbFtUdXBsZVtzdHIsIGludF1dCi0gICAgY29ubmVjdGlvbl9pZDogYnl0
ZXMKLSAgICBzdGF0ZWxlc3NfcmVzZXRfdG9rZW46IGJ5dGVzCi0KLQotQGRhdGFjbGFzcwotY2xh
c3MgUXVpY1RyYW5zcG9ydFBhcmFtZXRlcnM6Ci0gICAgb3JpZ2luYWxfY29ubmVjdGlvbl9pZDog
T3B0aW9uYWxbYnl0ZXNdID0gTm9uZQotICAgIGlkbGVfdGltZW91dDogT3B0aW9uYWxbaW50XSA9
IE5vbmUKLSAgICBzdGF0ZWxlc3NfcmVzZXRfdG9rZW46IE9wdGlvbmFsW2J5dGVzXSA9IE5vbmUK
LSAgICBtYXhfcGFja2V0X3NpemU6IE9wdGlvbmFsW2ludF0gPSBOb25lCi0gICAgaW5pdGlhbF9t
YXhfZGF0YTogT3B0aW9uYWxbaW50XSA9IE5vbmUKLSAgICBpbml0aWFsX21heF9zdHJlYW1fZGF0
YV9iaWRpX2xvY2FsOiBPcHRpb25hbFtpbnRdID0gTm9uZQotICAgIGluaXRpYWxfbWF4X3N0cmVh
bV9kYXRhX2JpZGlfcmVtb3RlOiBPcHRpb25hbFtpbnRdID0gTm9uZQotICAgIGluaXRpYWxfbWF4
X3N0cmVhbV9kYXRhX3VuaTogT3B0aW9uYWxbaW50XSA9IE5vbmUKLSAgICBpbml0aWFsX21heF9z
dHJlYW1zX2JpZGk6IE9wdGlvbmFsW2ludF0gPSBOb25lCi0gICAgaW5pdGlhbF9tYXhfc3RyZWFt
c191bmk6IE9wdGlvbmFsW2ludF0gPSBOb25lCi0gICAgYWNrX2RlbGF5X2V4cG9uZW50OiBPcHRp
b25hbFtpbnRdID0gTm9uZQotICAgIG1heF9hY2tfZGVsYXk6IE9wdGlvbmFsW2ludF0gPSBOb25l
Ci0gICAgZGlzYWJsZV9hY3RpdmVfbWlncmF0aW9uOiBPcHRpb25hbFtib29sXSA9IEZhbHNlCi0g
ICAgcHJlZmVycmVkX2FkZHJlc3M6IE9wdGlvbmFsW1F1aWNQcmVmZXJyZWRBZGRyZXNzXSA9IE5v
bmUKLSAgICBhY3RpdmVfY29ubmVjdGlvbl9pZF9saW1pdDogT3B0aW9uYWxbaW50XSA9IE5vbmUK
LSAgICBtYXhfZGF0YWdyYW1fZnJhbWVfc2l6ZTogT3B0aW9uYWxbaW50XSA9IE5vbmUKLSAgICBx
dWFudHVtX3JlYWRpbmVzczogT3B0aW9uYWxbYnl0ZXNdID0gTm9uZQotCi0KLVBBUkFNUyA9IHsK
LSAgICAwOiAoIm9yaWdpbmFsX2Nvbm5lY3Rpb25faWQiLCBieXRlcyksCi0gICAgMTogKCJpZGxl
X3RpbWVvdXQiLCBpbnQpLAotICAgIDI6ICgic3RhdGVsZXNzX3Jlc2V0X3Rva2VuIiwgYnl0ZXMp
LAotICAgIDM6ICgibWF4X3BhY2tldF9zaXplIiwgaW50KSwKLSAgICA0OiAoImluaXRpYWxfbWF4
X2RhdGEiLCBpbnQpLAotICAgIDU6ICgiaW5pdGlhbF9tYXhfc3RyZWFtX2RhdGFfYmlkaV9sb2Nh
bCIsIGludCksCi0gICAgNjogKCJpbml0aWFsX21heF9zdHJlYW1fZGF0YV9iaWRpX3JlbW90ZSIs
IGludCksCi0gICAgNzogKCJpbml0aWFsX21heF9zdHJlYW1fZGF0YV91bmkiLCBpbnQpLAotICAg
IDg6ICgiaW5pdGlhbF9tYXhfc3RyZWFtc19iaWRpIiwgaW50KSwKLSAgICA5OiAoImluaXRpYWxf
bWF4X3N0cmVhbXNfdW5pIiwgaW50KSwKLSAgICAxMDogKCJhY2tfZGVsYXlfZXhwb25lbnQiLCBp
bnQpLAotICAgIDExOiAoIm1heF9hY2tfZGVsYXkiLCBpbnQpLAotICAgIDEyOiAoImRpc2FibGVf
YWN0aXZlX21pZ3JhdGlvbiIsIGJvb2wpLAotICAgIDEzOiAoInByZWZlcnJlZF9hZGRyZXNzIiwg
UXVpY1ByZWZlcnJlZEFkZHJlc3MpLAotICAgIDE0OiAoImFjdGl2ZV9jb25uZWN0aW9uX2lkX2xp
bWl0IiwgaW50KSwKLSAgICAzMjogKCJtYXhfZGF0YWdyYW1fZnJhbWVfc2l6ZSIsIGludCksCi0g
ICAgMzEyNzogKCJxdWFudHVtX3JlYWRpbmVzcyIsIGJ5dGVzKSwKLX0KLQotCi1kZWYgcHVsbF9x
dWljX3ByZWZlcnJlZF9hZGRyZXNzKGJ1ZjogQnVmZmVyKSAtPiBRdWljUHJlZmVycmVkQWRkcmVz
czoKLSAgICBpcHY0X2FkZHJlc3MgPSBOb25lCi0gICAgaXB2NF9ob3N0ID0gYnVmLnB1bGxfYnl0
ZXMoNCkKLSAgICBpcHY0X3BvcnQgPSBidWYucHVsbF91aW50MTYoKQotICAgIGlmIGlwdjRfaG9z
dCAhPSBieXRlcyg0KToKLSAgICAgICAgaXB2NF9hZGRyZXNzID0gKHN0cihpcGFkZHJlc3MuSVB2
NEFkZHJlc3MoaXB2NF9ob3N0KSksIGlwdjRfcG9ydCkKLQotICAgIGlwdjZfYWRkcmVzcyA9IE5v
bmUKLSAgICBpcHY2X2hvc3QgPSBidWYucHVsbF9ieXRlcygxNikKLSAgICBpcHY2X3BvcnQgPSBi
dWYucHVsbF91aW50MTYoKQotICAgIGlmIGlwdjZfaG9zdCAhPSBieXRlcygxNik6Ci0gICAgICAg
IGlwdjZfYWRkcmVzcyA9IChzdHIoaXBhZGRyZXNzLklQdjZBZGRyZXNzKGlwdjZfaG9zdCkpLCBp
cHY2X3BvcnQpCi0KLSAgICBjb25uZWN0aW9uX2lkX2xlbmd0aCA9IGJ1Zi5wdWxsX3VpbnQ4KCkK
LSAgICBjb25uZWN0aW9uX2lkID0gYnVmLnB1bGxfYnl0ZXMoY29ubmVjdGlvbl9pZF9sZW5ndGgp
Ci0gICAgc3RhdGVsZXNzX3Jlc2V0X3Rva2VuID0gYnVmLnB1bGxfYnl0ZXMoMTYpCi0KLSAgICBy
ZXR1cm4gUXVpY1ByZWZlcnJlZEFkZHJlc3MoCi0gICAgICAgIGlwdjRfYWRkcmVzcz1pcHY0X2Fk
ZHJlc3MsCi0gICAgICAgIGlwdjZfYWRkcmVzcz1pcHY2X2FkZHJlc3MsCi0gICAgICAgIGNvbm5l
Y3Rpb25faWQ9Y29ubmVjdGlvbl9pZCwKLSAgICAgICAgc3RhdGVsZXNzX3Jlc2V0X3Rva2VuPXN0
YXRlbGVzc19yZXNldF90b2tlbiwKLSAgICApCi0KLQotZGVmIHB1c2hfcXVpY19wcmVmZXJyZWRf
YWRkcmVzcygKLSAgICBidWY6IEJ1ZmZlciwgcHJlZmVycmVkX2FkZHJlc3M6IFF1aWNQcmVmZXJy
ZWRBZGRyZXNzCi0pIC0+IE5vbmU6Ci0gICAgaWYgcHJlZmVycmVkX2FkZHJlc3MuaXB2NF9hZGRy
ZXNzIGlzIG5vdCBOb25lOgotICAgICAgICBidWYucHVzaF9ieXRlcyhpcGFkZHJlc3MuSVB2NEFk
ZHJlc3MocHJlZmVycmVkX2FkZHJlc3MuaXB2NF9hZGRyZXNzWzBdKS5wYWNrZWQpCi0gICAgICAg
IGJ1Zi5wdXNoX3VpbnQxNihwcmVmZXJyZWRfYWRkcmVzcy5pcHY0X2FkZHJlc3NbMV0pCi0gICAg
ZWxzZToKLSAgICAgICAgYnVmLnB1c2hfYnl0ZXMoYnl0ZXMoNikpCi0KLSAgICBpZiBwcmVmZXJy
ZWRfYWRkcmVzcy5pcHY2X2FkZHJlc3MgaXMgbm90IE5vbmU6Ci0gICAgICAgIGJ1Zi5wdXNoX2J5
dGVzKGlwYWRkcmVzcy5JUHY2QWRkcmVzcyhwcmVmZXJyZWRfYWRkcmVzcy5pcHY2X2FkZHJlc3Nb
MF0pLnBhY2tlZCkKLSAgICAgICAgYnVmLnB1c2hfdWludDE2KHByZWZlcnJlZF9hZGRyZXNzLmlw
djZfYWRkcmVzc1sxXSkKLSAgICBlbHNlOgotICAgICAgICBidWYucHVzaF9ieXRlcyhieXRlcygx
OCkpCi0KLSAgICBidWYucHVzaF91aW50OChsZW4ocHJlZmVycmVkX2FkZHJlc3MuY29ubmVjdGlv
bl9pZCkpCi0gICAgYnVmLnB1c2hfYnl0ZXMocHJlZmVycmVkX2FkZHJlc3MuY29ubmVjdGlvbl9p
ZCkKLSAgICBidWYucHVzaF9ieXRlcyhwcmVmZXJyZWRfYWRkcmVzcy5zdGF0ZWxlc3NfcmVzZXRf
dG9rZW4pCi0KLQotZGVmIHB1bGxfcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycygKLSAgICBidWY6
IEJ1ZmZlciwgcHJvdG9jb2xfdmVyc2lvbjogaW50Ci0pIC0+IFF1aWNUcmFuc3BvcnRQYXJhbWV0
ZXJzOgotICAgIHBhcmFtcyA9IFF1aWNUcmFuc3BvcnRQYXJhbWV0ZXJzKCkKLQotICAgIGlmIHBy
b3RvY29sX3ZlcnNpb24gPCBRdWljUHJvdG9jb2xWZXJzaW9uLkRSQUZUXzI3OgotICAgICAgICB3
aXRoIHB1bGxfYmxvY2soYnVmLCAyKSBhcyBsZW5ndGg6Ci0gICAgICAgICAgICBlbmQgPSBidWYu
dGVsbCgpICsgbGVuZ3RoCi0gICAgICAgICAgICB3aGlsZSBidWYudGVsbCgpIDwgZW5kOgotICAg
ICAgICAgICAgICAgIHBhcmFtX2lkID0gYnVmLnB1bGxfdWludDE2KCkKLSAgICAgICAgICAgICAg
ICBwYXJhbV9sZW4gPSBidWYucHVsbF91aW50MTYoKQotICAgICAgICAgICAgICAgIHBhcmFtX3N0
YXJ0ID0gYnVmLnRlbGwoKQotICAgICAgICAgICAgICAgIGlmIHBhcmFtX2lkIGluIFBBUkFNUzoK
LSAgICAgICAgICAgICAgICAgICAgIyBwYXJzZSBrbm93biBwYXJhbWV0ZXIKLSAgICAgICAgICAg
ICAgICAgICAgcGFyYW1fbmFtZSwgcGFyYW1fdHlwZSA9IFBBUkFNU1twYXJhbV9pZF0KLSAgICAg
ICAgICAgICAgICAgICAgaWYgcGFyYW1fdHlwZSA9PSBpbnQ6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBzZXRhdHRyKHBhcmFtcywgcGFyYW1fbmFtZSwgYnVmLnB1bGxfdWludF92YXIoKSkKLSAg
ICAgICAgICAgICAgICAgICAgZWxpZiBwYXJhbV90eXBlID09IGJ5dGVzOgotICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0YXR0cihwYXJhbXMsIHBhcmFtX25hbWUsIGJ1Zi5wdWxsX2J5dGVzKHBh
cmFtX2xlbikpCi0gICAgICAgICAgICAgICAgICAgIGVsaWYgcGFyYW1fdHlwZSA9PSBRdWljUHJl
ZmVycmVkQWRkcmVzczoKLSAgICAgICAgICAgICAgICAgICAgICAgIHNldGF0dHIocGFyYW1zLCBw
YXJhbV9uYW1lLCBwdWxsX3F1aWNfcHJlZmVycmVkX2FkZHJlc3MoYnVmKSkKLSAgICAgICAgICAg
ICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNldGF0dHIocGFyYW1zLCBw
YXJhbV9uYW1lLCBUcnVlKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAg
ICAgICMgc2tpcCB1bmtub3duIHBhcmFtZXRlcgotICAgICAgICAgICAgICAgICAgICBidWYucHVs
bF9ieXRlcyhwYXJhbV9sZW4pCi0gICAgICAgICAgICAgICAgYXNzZXJ0IGJ1Zi50ZWxsKCkgPT0g
cGFyYW1fc3RhcnQgKyBwYXJhbV9sZW4KLSAgICBlbHNlOgotICAgICAgICB3aGlsZSBub3QgYnVm
LmVvZigpOgotICAgICAgICAgICAgcGFyYW1faWQgPSBidWYucHVsbF91aW50X3ZhcigpCi0gICAg
ICAgICAgICBwYXJhbV9sZW4gPSBidWYucHVsbF91aW50X3ZhcigpCi0gICAgICAgICAgICBwYXJh
bV9zdGFydCA9IGJ1Zi50ZWxsKCkKLSAgICAgICAgICAgIGlmIHBhcmFtX2lkIGluIFBBUkFNUzoK
LSAgICAgICAgICAgICAgICAjIHBhcnNlIGtub3duIHBhcmFtZXRlcgotICAgICAgICAgICAgICAg
IHBhcmFtX25hbWUsIHBhcmFtX3R5cGUgPSBQQVJBTVNbcGFyYW1faWRdCi0gICAgICAgICAgICAg
ICAgaWYgcGFyYW1fdHlwZSA9PSBpbnQ6Ci0gICAgICAgICAgICAgICAgICAgIHNldGF0dHIocGFy
YW1zLCBwYXJhbV9uYW1lLCBidWYucHVsbF91aW50X3ZhcigpKQotICAgICAgICAgICAgICAgIGVs
aWYgcGFyYW1fdHlwZSA9PSBieXRlczoKLSAgICAgICAgICAgICAgICAgICAgc2V0YXR0cihwYXJh
bXMsIHBhcmFtX25hbWUsIGJ1Zi5wdWxsX2J5dGVzKHBhcmFtX2xlbikpCi0gICAgICAgICAgICAg
ICAgZWxpZiBwYXJhbV90eXBlID09IFF1aWNQcmVmZXJyZWRBZGRyZXNzOgotICAgICAgICAgICAg
ICAgICAgICBzZXRhdHRyKHBhcmFtcywgcGFyYW1fbmFtZSwgcHVsbF9xdWljX3ByZWZlcnJlZF9h
ZGRyZXNzKGJ1ZikpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAg
c2V0YXR0cihwYXJhbXMsIHBhcmFtX25hbWUsIFRydWUpCi0gICAgICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgICAgICMgc2tpcCB1bmtub3duIHBhcmFtZXRlcgotICAgICAgICAgICAgICAgIGJ1
Zi5wdWxsX2J5dGVzKHBhcmFtX2xlbikKLSAgICAgICAgICAgIGFzc2VydCBidWYudGVsbCgpID09
IHBhcmFtX3N0YXJ0ICsgcGFyYW1fbGVuCi0KLSAgICByZXR1cm4gcGFyYW1zCi0KLQotZGVmIHB1
c2hfcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycygKLSAgICBidWY6IEJ1ZmZlciwgcGFyYW1zOiBR
dWljVHJhbnNwb3J0UGFyYW1ldGVycywgcHJvdG9jb2xfdmVyc2lvbjogaW50Ci0pIC0+IE5vbmU6
Ci0gICAgaWYgcHJvdG9jb2xfdmVyc2lvbiA8IFF1aWNQcm90b2NvbFZlcnNpb24uRFJBRlRfMjc6
Ci0gICAgICAgIHdpdGggcHVzaF9ibG9jayhidWYsIDIpOgotICAgICAgICAgICAgZm9yIHBhcmFt
X2lkLCAocGFyYW1fbmFtZSwgcGFyYW1fdHlwZSkgaW4gUEFSQU1TLml0ZW1zKCk6Ci0gICAgICAg
ICAgICAgICAgcGFyYW1fdmFsdWUgPSBnZXRhdHRyKHBhcmFtcywgcGFyYW1fbmFtZSkKLSAgICAg
ICAgICAgICAgICBpZiBwYXJhbV92YWx1ZSBpcyBub3QgTm9uZSBhbmQgcGFyYW1fdmFsdWUgaXMg
bm90IEZhbHNlOgotICAgICAgICAgICAgICAgICAgICBidWYucHVzaF91aW50MTYocGFyYW1faWQp
Ci0gICAgICAgICAgICAgICAgICAgIHdpdGggcHVzaF9ibG9jayhidWYsIDIpOgotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgcGFyYW1fdHlwZSA9PSBpbnQ6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnVmLnB1c2hfdWludF92YXIocGFyYW1fdmFsdWUpCi0gICAgICAgICAgICAgICAg
ICAgICAgICBlbGlmIHBhcmFtX3R5cGUgPT0gYnl0ZXM6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnVmLnB1c2hfYnl0ZXMocGFyYW1fdmFsdWUpCi0gICAgICAgICAgICAgICAgICAgICAg
ICBlbGlmIHBhcmFtX3R5cGUgPT0gUXVpY1ByZWZlcnJlZEFkZHJlc3M6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHVzaF9xdWljX3ByZWZlcnJlZF9hZGRyZXNzKGJ1ZiwgcGFyYW1fdmFs
dWUpCi0gICAgZWxzZToKLSAgICAgICAgZm9yIHBhcmFtX2lkLCAocGFyYW1fbmFtZSwgcGFyYW1f
dHlwZSkgaW4gUEFSQU1TLml0ZW1zKCk6Ci0gICAgICAgICAgICBwYXJhbV92YWx1ZSA9IGdldGF0
dHIocGFyYW1zLCBwYXJhbV9uYW1lKQotICAgICAgICAgICAgaWYgcGFyYW1fdmFsdWUgaXMgbm90
IE5vbmUgYW5kIHBhcmFtX3ZhbHVlIGlzIG5vdCBGYWxzZToKLSAgICAgICAgICAgICAgICBwYXJh
bV9idWYgPSBCdWZmZXIoY2FwYWNpdHk9NjU1MzYpCi0gICAgICAgICAgICAgICAgaWYgcGFyYW1f
dHlwZSA9PSBpbnQ6Ci0gICAgICAgICAgICAgICAgICAgIHBhcmFtX2J1Zi5wdXNoX3VpbnRfdmFy
KHBhcmFtX3ZhbHVlKQotICAgICAgICAgICAgICAgIGVsaWYgcGFyYW1fdHlwZSA9PSBieXRlczoK
LSAgICAgICAgICAgICAgICAgICAgcGFyYW1fYnVmLnB1c2hfYnl0ZXMocGFyYW1fdmFsdWUpCi0g
ICAgICAgICAgICAgICAgZWxpZiBwYXJhbV90eXBlID09IFF1aWNQcmVmZXJyZWRBZGRyZXNzOgot
ICAgICAgICAgICAgICAgICAgICBwdXNoX3F1aWNfcHJlZmVycmVkX2FkZHJlc3MocGFyYW1fYnVm
LCBwYXJhbV92YWx1ZSkKLSAgICAgICAgICAgICAgICBidWYucHVzaF91aW50X3ZhcihwYXJhbV9p
ZCkKLSAgICAgICAgICAgICAgICBidWYucHVzaF91aW50X3ZhcihwYXJhbV9idWYudGVsbCgpKQot
ICAgICAgICAgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKHBhcmFtX2J1Zi5kYXRhKQotCi0KLSMgRlJB
TUVTCi0KLQotY2xhc3MgUXVpY0ZyYW1lVHlwZShJbnRFbnVtKToKLSAgICBQQURESU5HID0gMHgw
MAotICAgIFBJTkcgPSAweDAxCi0gICAgQUNLID0gMHgwMgotICAgIEFDS19FQ04gPSAweDAzCi0g
ICAgUkVTRVRfU1RSRUFNID0gMHgwNAotICAgIFNUT1BfU0VORElORyA9IDB4MDUKLSAgICBDUllQ
VE8gPSAweDA2Ci0gICAgTkVXX1RPS0VOID0gMHgwNwotICAgIFNUUkVBTV9CQVNFID0gMHgwOAot
ICAgIE1BWF9EQVRBID0gMHgxMAotICAgIE1BWF9TVFJFQU1fREFUQSA9IDB4MTEKLSAgICBNQVhf
U1RSRUFNU19CSURJID0gMHgxMgotICAgIE1BWF9TVFJFQU1TX1VOSSA9IDB4MTMKLSAgICBEQVRB
X0JMT0NLRUQgPSAweDE0Ci0gICAgU1RSRUFNX0RBVEFfQkxPQ0tFRCA9IDB4MTUKLSAgICBTVFJF
QU1TX0JMT0NLRURfQklESSA9IDB4MTYKLSAgICBTVFJFQU1TX0JMT0NLRURfVU5JID0gMHgxNwot
ICAgIE5FV19DT05ORUNUSU9OX0lEID0gMHgxOAotICAgIFJFVElSRV9DT05ORUNUSU9OX0lEID0g
MHgxOQotICAgIFBBVEhfQ0hBTExFTkdFID0gMHgxQQotICAgIFBBVEhfUkVTUE9OU0UgPSAweDFC
Ci0gICAgVFJBTlNQT1JUX0NMT1NFID0gMHgxQwotICAgIEFQUExJQ0FUSU9OX0NMT1NFID0gMHgx
RAotICAgIEhBTkRTSEFLRV9ET05FID0gMHgxRQotICAgIERBVEFHUkFNID0gMHgzMAotICAgIERB
VEFHUkFNX1dJVEhfTEVOR1RIID0gMHgzMQotCi0KLU5PTl9BQ0tfRUxJQ0lUSU5HX0ZSQU1FX1RZ
UEVTID0gZnJvemVuc2V0KAotICAgIFsKLSAgICAgICAgUXVpY0ZyYW1lVHlwZS5BQ0ssCi0gICAg
ICAgIFF1aWNGcmFtZVR5cGUuQUNLX0VDTiwKLSAgICAgICAgUXVpY0ZyYW1lVHlwZS5QQURESU5H
LAotICAgICAgICBRdWljRnJhbWVUeXBlLlRSQU5TUE9SVF9DTE9TRSwKLSAgICAgICAgUXVpY0Zy
YW1lVHlwZS5BUFBMSUNBVElPTl9DTE9TRSwKLSAgICBdCi0pCi1OT05fSU5fRkxJR0hUX0ZSQU1F
X1RZUEVTID0gZnJvemVuc2V0KAotICAgIFsKLSAgICAgICAgUXVpY0ZyYW1lVHlwZS5BQ0ssCi0g
ICAgICAgIFF1aWNGcmFtZVR5cGUuQUNLX0VDTiwKLSAgICAgICAgUXVpY0ZyYW1lVHlwZS5UUkFO
U1BPUlRfQ0xPU0UsCi0gICAgICAgIFF1aWNGcmFtZVR5cGUuQVBQTElDQVRJT05fQ0xPU0UsCi0g
ICAgXQotKQotCi1QUk9CSU5HX0ZSQU1FX1RZUEVTID0gZnJvemVuc2V0KAotICAgIFsKLSAgICAg
ICAgUXVpY0ZyYW1lVHlwZS5QQVRIX0NIQUxMRU5HRSwKLSAgICAgICAgUXVpY0ZyYW1lVHlwZS5Q
QVRIX1JFU1BPTlNFLAotICAgICAgICBRdWljRnJhbWVUeXBlLlBBRERJTkcsCi0gICAgICAgIFF1
aWNGcmFtZVR5cGUuTkVXX0NPTk5FQ1RJT05fSUQsCi0gICAgXQotKQotCi0KLUBkYXRhY2xhc3MK
LWNsYXNzIFF1aWNTdHJlYW1GcmFtZToKLSAgICBkYXRhOiBieXRlcyA9IGIiIgotICAgIGZpbjog
Ym9vbCA9IEZhbHNlCi0gICAgb2Zmc2V0OiBpbnQgPSAwCi0KLQotZGVmIHB1bGxfYWNrX2ZyYW1l
KGJ1ZjogQnVmZmVyKSAtPiBUdXBsZVtSYW5nZVNldCwgaW50XToKLSAgICByYW5nZXNldCA9IFJh
bmdlU2V0KCkKLSAgICBlbmQgPSBidWYucHVsbF91aW50X3ZhcigpICAjIGxhcmdlc3QgYWNrbm93
bGVkZ2VkCi0gICAgZGVsYXkgPSBidWYucHVsbF91aW50X3ZhcigpCi0gICAgYWNrX3JhbmdlX2Nv
dW50ID0gYnVmLnB1bGxfdWludF92YXIoKQotICAgIGFja19jb3VudCA9IGJ1Zi5wdWxsX3VpbnRf
dmFyKCkgICMgZmlyc3QgYWNrIHJhbmdlCi0gICAgcmFuZ2VzZXQuYWRkKGVuZCAtIGFja19jb3Vu
dCwgZW5kICsgMSkKLSAgICBlbmQgLT0gYWNrX2NvdW50Ci0gICAgZm9yIF8gaW4gcmFuZ2UoYWNr
X3JhbmdlX2NvdW50KToKLSAgICAgICAgZW5kIC09IGJ1Zi5wdWxsX3VpbnRfdmFyKCkgKyAyCi0g
ICAgICAgIGFja19jb3VudCA9IGJ1Zi5wdWxsX3VpbnRfdmFyKCkKLSAgICAgICAgcmFuZ2VzZXQu
YWRkKGVuZCAtIGFja19jb3VudCwgZW5kICsgMSkKLSAgICAgICAgZW5kIC09IGFja19jb3VudAot
ICAgIHJldHVybiByYW5nZXNldCwgZGVsYXkKLQotCi1kZWYgcHVzaF9hY2tfZnJhbWUoYnVmOiBC
dWZmZXIsIHJhbmdlc2V0OiBSYW5nZVNldCwgZGVsYXk6IGludCkgLT4gaW50OgotICAgIHJhbmdl
cyA9IGxlbihyYW5nZXNldCkKLSAgICBpbmRleCA9IHJhbmdlcyAtIDEKLSAgICByID0gcmFuZ2Vz
ZXRbaW5kZXhdCi0gICAgYnVmLnB1c2hfdWludF92YXIoci5zdG9wIC0gMSkKLSAgICBidWYucHVz
aF91aW50X3ZhcihkZWxheSkKLSAgICBidWYucHVzaF91aW50X3ZhcihpbmRleCkKLSAgICBidWYu
cHVzaF91aW50X3ZhcihyLnN0b3AgLSAxIC0gci5zdGFydCkKLSAgICBzdGFydCA9IHIuc3RhcnQK
LSAgICB3aGlsZSBpbmRleCA+IDA6Ci0gICAgICAgIGluZGV4IC09IDEKLSAgICAgICAgciA9IHJh
bmdlc2V0W2luZGV4XQotICAgICAgICBidWYucHVzaF91aW50X3ZhcihzdGFydCAtIHIuc3RvcCAt
IDEpCi0gICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKHIuc3RvcCAtIHIuc3RhcnQgLSAxKQotICAg
ICAgICBzdGFydCA9IHIuc3RhcnQKLSAgICByZXR1cm4gcmFuZ2VzCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9wYWNrZXRfYnVpbGRlci5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy9zcmMvYWlvcXVpYy9xdWljL3BhY2tldF9idWlsZGVyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwODgzN2MyYzMzMDQ5MjA2NDQ1ZmM5ZmI4MTQ3M2FjZmNiZjRiNjViLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9z
cmMvYWlvcXVpYy9xdWljL3BhY2tldF9idWlsZGVyLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzY2
ICswLDAgQEAKLWZyb20gZGF0YWNsYXNzZXMgaW1wb3J0IGRhdGFjbGFzcywgZmllbGQKLWZyb20g
ZW51bSBpbXBvcnQgRW51bQotZnJvbSB0eXBpbmcgaW1wb3J0IEFueSwgQ2FsbGFibGUsIERpY3Qs
IExpc3QsIE9wdGlvbmFsLCBTZXF1ZW5jZSwgVHVwbGUKLQotZnJvbSAuLmJ1ZmZlciBpbXBvcnQg
QnVmZmVyLCBzaXplX3VpbnRfdmFyCi1mcm9tIC4udGxzIGltcG9ydCBFcG9jaAotZnJvbSAuY3J5
cHRvIGltcG9ydCBDcnlwdG9QYWlyCi1mcm9tIC5sb2dnZXIgaW1wb3J0IFF1aWNMb2dnZXJUcmFj
ZQotZnJvbSAucGFja2V0IGltcG9ydCAoCi0gICAgTk9OX0FDS19FTElDSVRJTkdfRlJBTUVfVFlQ
RVMsCi0gICAgTk9OX0lOX0ZMSUdIVF9GUkFNRV9UWVBFUywKLSAgICBQQUNLRVRfTlVNQkVSX01B
WF9TSVpFLAotICAgIFBBQ0tFVF9UWVBFX0hBTkRTSEFLRSwKLSAgICBQQUNLRVRfVFlQRV9JTklU
SUFMLAotICAgIFBBQ0tFVF9UWVBFX01BU0ssCi0gICAgUXVpY0ZyYW1lVHlwZSwKLSAgICBpc19s
b25nX2hlYWRlciwKLSkKLQotUEFDS0VUX01BWF9TSVpFID0gMTI4MAotUEFDS0VUX0xFTkdUSF9T
RU5EX1NJWkUgPSAyCi1QQUNLRVRfTlVNQkVSX1NFTkRfU0laRSA9IDIKLQotCi1RdWljRGVsaXZl
cnlIYW5kbGVyID0gQ2FsbGFibGVbLi4uLCBOb25lXQotCi0KLWNsYXNzIFF1aWNEZWxpdmVyeVN0
YXRlKEVudW0pOgotICAgIEFDS0VEID0gMAotICAgIExPU1QgPSAxCi0gICAgRVhQSVJFRCA9IDIK
LQotCi1AZGF0YWNsYXNzCi1jbGFzcyBRdWljU2VudFBhY2tldDoKLSAgICBlcG9jaDogRXBvY2gK
LSAgICBpbl9mbGlnaHQ6IGJvb2wKLSAgICBpc19hY2tfZWxpY2l0aW5nOiBib29sCi0gICAgaXNf
Y3J5cHRvX3BhY2tldDogYm9vbAotICAgIHBhY2tldF9udW1iZXI6IGludAotICAgIHBhY2tldF90
eXBlOiBpbnQKLSAgICBzZW50X3RpbWU6IE9wdGlvbmFsW2Zsb2F0XSA9IE5vbmUKLSAgICBzZW50
X2J5dGVzOiBpbnQgPSAwCi0KLSAgICBkZWxpdmVyeV9oYW5kbGVyczogTGlzdFtUdXBsZVtRdWlj
RGVsaXZlcnlIYW5kbGVyLCBBbnldXSA9IGZpZWxkKAotICAgICAgICBkZWZhdWx0X2ZhY3Rvcnk9
bGlzdAotICAgICkKLSAgICBxdWljX2xvZ2dlcl9mcmFtZXM6IExpc3RbRGljdF0gPSBmaWVsZChk
ZWZhdWx0X2ZhY3Rvcnk9bGlzdCkKLQotCi1jbGFzcyBRdWljUGFja2V0QnVpbGRlclN0b3AoRXhj
ZXB0aW9uKToKLSAgICBwYXNzCi0KLQotY2xhc3MgUXVpY1BhY2tldEJ1aWxkZXI6Ci0gICAgIiIi
Ci0gICAgSGVscGVyIGZvciBidWlsZGluZyBRVUlDIHBhY2tldHMuCi0gICAgIiIiCi0KLSAgICBk
ZWYgX19pbml0X18oCi0gICAgICAgIHNlbGYsCi0gICAgICAgICosCi0gICAgICAgIGhvc3RfY2lk
OiBieXRlcywKLSAgICAgICAgcGVlcl9jaWQ6IGJ5dGVzLAotICAgICAgICB2ZXJzaW9uOiBpbnQs
Ci0gICAgICAgIGlzX2NsaWVudDogYm9vbCwKLSAgICAgICAgcGFja2V0X251bWJlcjogaW50ID0g
MCwKLSAgICAgICAgcGVlcl90b2tlbjogYnl0ZXMgPSBiIiIsCi0gICAgICAgIHF1aWNfbG9nZ2Vy
OiBPcHRpb25hbFtRdWljTG9nZ2VyVHJhY2VdID0gTm9uZSwKLSAgICAgICAgc3Bpbl9iaXQ6IGJv
b2wgPSBGYWxzZSwKLSAgICApOgotICAgICAgICBzZWxmLm1heF9mbGlnaHRfYnl0ZXM6IE9wdGlv
bmFsW2ludF0gPSBOb25lCi0gICAgICAgIHNlbGYubWF4X3RvdGFsX2J5dGVzOiBPcHRpb25hbFtp
bnRdID0gTm9uZQotICAgICAgICBzZWxmLnF1aWNfbG9nZ2VyX2ZyYW1lczogT3B0aW9uYWxbTGlz
dFtEaWN0XV0gPSBOb25lCi0KLSAgICAgICAgc2VsZi5faG9zdF9jaWQgPSBob3N0X2NpZAotICAg
ICAgICBzZWxmLl9pc19jbGllbnQgPSBpc19jbGllbnQKLSAgICAgICAgc2VsZi5fcGVlcl9jaWQg
PSBwZWVyX2NpZAotICAgICAgICBzZWxmLl9wZWVyX3Rva2VuID0gcGVlcl90b2tlbgotICAgICAg
ICBzZWxmLl9xdWljX2xvZ2dlciA9IHF1aWNfbG9nZ2VyCi0gICAgICAgIHNlbGYuX3NwaW5fYml0
ID0gc3Bpbl9iaXQKLSAgICAgICAgc2VsZi5fdmVyc2lvbiA9IHZlcnNpb24KLQotICAgICAgICAj
IGFzc2VtYmxlZCBkYXRhZ3JhbXMgYW5kIHBhY2tldHMKLSAgICAgICAgc2VsZi5fZGF0YWdyYW1z
OiBMaXN0W2J5dGVzXSA9IFtdCi0gICAgICAgIHNlbGYuX2RhdGFncmFtX2ZsaWdodF9ieXRlcyA9
IDAKLSAgICAgICAgc2VsZi5fZGF0YWdyYW1faW5pdCA9IFRydWUKLSAgICAgICAgc2VsZi5fcGFj
a2V0czogTGlzdFtRdWljU2VudFBhY2tldF0gPSBbXQotICAgICAgICBzZWxmLl9mbGlnaHRfYnl0
ZXMgPSAwCi0gICAgICAgIHNlbGYuX3RvdGFsX2J5dGVzID0gMAotCi0gICAgICAgICMgY3VycmVu
dCBwYWNrZXQKLSAgICAgICAgc2VsZi5faGVhZGVyX3NpemUgPSAwCi0gICAgICAgIHNlbGYuX3Bh
Y2tldDogT3B0aW9uYWxbUXVpY1NlbnRQYWNrZXRdID0gTm9uZQotICAgICAgICBzZWxmLl9wYWNr
ZXRfY3J5cHRvOiBPcHRpb25hbFtDcnlwdG9QYWlyXSA9IE5vbmUKLSAgICAgICAgc2VsZi5fcGFj
a2V0X2xvbmdfaGVhZGVyID0gRmFsc2UKLSAgICAgICAgc2VsZi5fcGFja2V0X251bWJlciA9IHBh
Y2tldF9udW1iZXIKLSAgICAgICAgc2VsZi5fcGFja2V0X3N0YXJ0ID0gMAotICAgICAgICBzZWxm
Ll9wYWNrZXRfdHlwZSA9IDAKLQotICAgICAgICBzZWxmLl9idWZmZXIgPSBCdWZmZXIoUEFDS0VU
X01BWF9TSVpFKQotICAgICAgICBzZWxmLl9idWZmZXJfY2FwYWNpdHkgPSBQQUNLRVRfTUFYX1NJ
WkUKLSAgICAgICAgc2VsZi5fZmxpZ2h0X2NhcGFjaXR5ID0gUEFDS0VUX01BWF9TSVpFCi0KLSAg
ICBAcHJvcGVydHkKLSAgICBkZWYgcGFja2V0X2lzX2VtcHR5KHNlbGYpIC0+IGJvb2w6Ci0gICAg
ICAgICIiIgotICAgICAgICBSZXR1cm5zIGBUcnVlYCBpZiB0aGUgY3VycmVudCBwYWNrZXQgaXMg
ZW1wdHkuCi0gICAgICAgICIiIgotICAgICAgICBhc3NlcnQgc2VsZi5fcGFja2V0IGlzIG5vdCBO
b25lCi0gICAgICAgIHBhY2tldF9zaXplID0gc2VsZi5fYnVmZmVyLnRlbGwoKSAtIHNlbGYuX3Bh
Y2tldF9zdGFydAotICAgICAgICByZXR1cm4gcGFja2V0X3NpemUgPD0gc2VsZi5faGVhZGVyX3Np
emUKLQotICAgIEBwcm9wZXJ0eQotICAgIGRlZiBwYWNrZXRfbnVtYmVyKHNlbGYpIC0+IGludDoK
LSAgICAgICAgIiIiCi0gICAgICAgIFJldHVybnMgdGhlIHBhY2tldCBudW1iZXIgZm9yIHRoZSBu
ZXh0IHBhY2tldC4KLSAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9wYWNrZXRfbnVt
YmVyCi0KLSAgICBAcHJvcGVydHkKLSAgICBkZWYgcmVtYWluaW5nX2J1ZmZlcl9zcGFjZShzZWxm
KSAtPiBpbnQ6Ci0gICAgICAgICIiIgotICAgICAgICBSZXR1cm5zIHRoZSByZW1haW5pbmcgbnVt
YmVyIG9mIGJ5dGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluCi0gICAgICAgIHRoZSBjdXJyZW50IHBh
Y2tldC4KLSAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiAoCi0gICAgICAgICAgICBzZWxmLl9i
dWZmZXJfY2FwYWNpdHkKLSAgICAgICAgICAgIC0gc2VsZi5fYnVmZmVyLnRlbGwoKQotICAgICAg
ICAgICAgLSBzZWxmLl9wYWNrZXRfY3J5cHRvLmFlYWRfdGFnX3NpemUKLSAgICAgICAgKQotCi0g
ICAgQHByb3BlcnR5Ci0gICAgZGVmIHJlbWFpbmluZ19mbGlnaHRfc3BhY2Uoc2VsZikgLT4gaW50
OgotICAgICAgICAiIiIKLSAgICAgICAgUmV0dXJucyB0aGUgcmVtYWluaW5nIG51bWJlciBvZiBi
eXRlcyB3aGljaCBjYW4gYmUgdXNlZCBpbgotICAgICAgICB0aGUgY3VycmVudCBwYWNrZXQuCi0g
ICAgICAgICIiIgotICAgICAgICByZXR1cm4gKAotICAgICAgICAgICAgc2VsZi5fZmxpZ2h0X2Nh
cGFjaXR5Ci0gICAgICAgICAgICAtIHNlbGYuX2J1ZmZlci50ZWxsKCkKLSAgICAgICAgICAgIC0g
c2VsZi5fcGFja2V0X2NyeXB0by5hZWFkX3RhZ19zaXplCi0gICAgICAgICkKLQotICAgIGRlZiBm
bHVzaChzZWxmKSAtPiBUdXBsZVtMaXN0W2J5dGVzXSwgTGlzdFtRdWljU2VudFBhY2tldF1dOgot
ICAgICAgICAiIiIKLSAgICAgICAgUmV0dXJucyB0aGUgYXNzZW1ibGVkIGRhdGFncmFtcy4KLSAg
ICAgICAgIiIiCi0gICAgICAgIGlmIHNlbGYuX3BhY2tldCBpcyBub3QgTm9uZToKLSAgICAgICAg
ICAgIHNlbGYuX2VuZF9wYWNrZXQoKQotICAgICAgICBzZWxmLl9mbHVzaF9jdXJyZW50X2RhdGFn
cmFtKCkKLQotICAgICAgICBkYXRhZ3JhbXMgPSBzZWxmLl9kYXRhZ3JhbXMKLSAgICAgICAgcGFj
a2V0cyA9IHNlbGYuX3BhY2tldHMKLSAgICAgICAgc2VsZi5fZGF0YWdyYW1zID0gW10KLSAgICAg
ICAgc2VsZi5fcGFja2V0cyA9IFtdCi0gICAgICAgIHJldHVybiBkYXRhZ3JhbXMsIHBhY2tldHMK
LQotICAgIGRlZiBzdGFydF9mcmFtZSgKLSAgICAgICAgc2VsZiwKLSAgICAgICAgZnJhbWVfdHlw
ZTogaW50LAotICAgICAgICBjYXBhY2l0eTogaW50ID0gMSwKLSAgICAgICAgaGFuZGxlcjogT3B0
aW9uYWxbUXVpY0RlbGl2ZXJ5SGFuZGxlcl0gPSBOb25lLAotICAgICAgICBoYW5kbGVyX2FyZ3M6
IFNlcXVlbmNlW0FueV0gPSBbXSwKLSAgICApIC0+IEJ1ZmZlcjoKLSAgICAgICAgIiIiCi0gICAg
ICAgIFN0YXJ0cyBhIG5ldyBmcmFtZS4KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIHNlbGYucmVt
YWluaW5nX2J1ZmZlcl9zcGFjZSA8IGNhcGFjaXR5IG9yICgKLSAgICAgICAgICAgIGZyYW1lX3R5
cGUgbm90IGluIE5PTl9JTl9GTElHSFRfRlJBTUVfVFlQRVMKLSAgICAgICAgICAgIGFuZCBzZWxm
LnJlbWFpbmluZ19mbGlnaHRfc3BhY2UgPCBjYXBhY2l0eQotICAgICAgICApOgotICAgICAgICAg
ICAgcmFpc2UgUXVpY1BhY2tldEJ1aWxkZXJTdG9wCi0KLSAgICAgICAgc2VsZi5fYnVmZmVyLnB1
c2hfdWludF92YXIoZnJhbWVfdHlwZSkKLSAgICAgICAgaWYgZnJhbWVfdHlwZSBub3QgaW4gTk9O
X0FDS19FTElDSVRJTkdfRlJBTUVfVFlQRVM6Ci0gICAgICAgICAgICBzZWxmLl9wYWNrZXQuaXNf
YWNrX2VsaWNpdGluZyA9IFRydWUKLSAgICAgICAgaWYgZnJhbWVfdHlwZSBub3QgaW4gTk9OX0lO
X0ZMSUdIVF9GUkFNRV9UWVBFUzoKLSAgICAgICAgICAgIHNlbGYuX3BhY2tldC5pbl9mbGlnaHQg
PSBUcnVlCi0gICAgICAgIGlmIGZyYW1lX3R5cGUgPT0gUXVpY0ZyYW1lVHlwZS5DUllQVE86Ci0g
ICAgICAgICAgICBzZWxmLl9wYWNrZXQuaXNfY3J5cHRvX3BhY2tldCA9IFRydWUKLSAgICAgICAg
aWYgaGFuZGxlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYuX3BhY2tldC5kZWxpdmVy
eV9oYW5kbGVycy5hcHBlbmQoKGhhbmRsZXIsIGhhbmRsZXJfYXJncykpCi0gICAgICAgIHJldHVy
biBzZWxmLl9idWZmZXIKLQotICAgIGRlZiBzdGFydF9wYWNrZXQoc2VsZiwgcGFja2V0X3R5cGU6
IGludCwgY3J5cHRvOiBDcnlwdG9QYWlyKSAtPiBOb25lOgotICAgICAgICAiIiIKLSAgICAgICAg
U3RhcnRzIGEgbmV3IHBhY2tldC4KLSAgICAgICAgIiIiCi0gICAgICAgIGJ1ZiA9IHNlbGYuX2J1
ZmZlcgotCi0gICAgICAgICMgZmluaXNoIHByZXZpb3VzIGRhdGFncmFtCi0gICAgICAgIGlmIHNl
bGYuX3BhY2tldCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYuX2VuZF9wYWNrZXQoKQot
Ci0gICAgICAgICMgaWYgdGhlcmUgaXMgdG9vIGxpdHRsZSBzcGFjZSByZW1haW5pbmcsIHN0YXJ0
IGEgbmV3IGRhdGFncmFtCi0gICAgICAgICMgRklYTUU6IHRoZSBsaW1pdCBpcyBhcmJpdHJhcnkh
Ci0gICAgICAgIHBhY2tldF9zdGFydCA9IGJ1Zi50ZWxsKCkKLSAgICAgICAgaWYgc2VsZi5fYnVm
ZmVyX2NhcGFjaXR5IC0gcGFja2V0X3N0YXJ0IDwgMTI4OgotICAgICAgICAgICAgc2VsZi5fZmx1
c2hfY3VycmVudF9kYXRhZ3JhbSgpCi0gICAgICAgICAgICBwYWNrZXRfc3RhcnQgPSAwCi0KLSAg
ICAgICAgIyBpbml0aWFsaXplIGRhdGFncmFtIGlmIG5lZWRlZAotICAgICAgICBpZiBzZWxmLl9k
YXRhZ3JhbV9pbml0OgotICAgICAgICAgICAgaWYgc2VsZi5tYXhfdG90YWxfYnl0ZXMgaXMgbm90
IE5vbmU6Ci0gICAgICAgICAgICAgICAgcmVtYWluaW5nX3RvdGFsX2J5dGVzID0gc2VsZi5tYXhf
dG90YWxfYnl0ZXMgLSBzZWxmLl90b3RhbF9ieXRlcwotICAgICAgICAgICAgICAgIGlmIHJlbWFp
bmluZ190b3RhbF9ieXRlcyA8IHNlbGYuX2J1ZmZlcl9jYXBhY2l0eToKLSAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fYnVmZmVyX2NhcGFjaXR5ID0gcmVtYWluaW5nX3RvdGFsX2J5dGVzCi0KLSAg
ICAgICAgICAgIHNlbGYuX2ZsaWdodF9jYXBhY2l0eSA9IHNlbGYuX2J1ZmZlcl9jYXBhY2l0eQot
ICAgICAgICAgICAgaWYgc2VsZi5tYXhfZmxpZ2h0X2J5dGVzIGlzIG5vdCBOb25lOgotICAgICAg
ICAgICAgICAgIHJlbWFpbmluZ19mbGlnaHRfYnl0ZXMgPSBzZWxmLm1heF9mbGlnaHRfYnl0ZXMg
LSBzZWxmLl9mbGlnaHRfYnl0ZXMKLSAgICAgICAgICAgICAgICBpZiByZW1haW5pbmdfZmxpZ2h0
X2J5dGVzIDwgc2VsZi5fZmxpZ2h0X2NhcGFjaXR5OgotICAgICAgICAgICAgICAgICAgICBzZWxm
Ll9mbGlnaHRfY2FwYWNpdHkgPSByZW1haW5pbmdfZmxpZ2h0X2J5dGVzCi0gICAgICAgICAgICBz
ZWxmLl9kYXRhZ3JhbV9mbGlnaHRfYnl0ZXMgPSAwCi0gICAgICAgICAgICBzZWxmLl9kYXRhZ3Jh
bV9pbml0ID0gRmFsc2UKLQotICAgICAgICAjIGNhbGN1bGF0ZSBoZWFkZXIgc2l6ZQotICAgICAg
ICBwYWNrZXRfbG9uZ19oZWFkZXIgPSBpc19sb25nX2hlYWRlcihwYWNrZXRfdHlwZSkKLSAgICAg
ICAgaWYgcGFja2V0X2xvbmdfaGVhZGVyOgotICAgICAgICAgICAgaGVhZGVyX3NpemUgPSAxMSAr
IGxlbihzZWxmLl9wZWVyX2NpZCkgKyBsZW4oc2VsZi5faG9zdF9jaWQpCi0gICAgICAgICAgICBp
ZiAocGFja2V0X3R5cGUgJiBQQUNLRVRfVFlQRV9NQVNLKSA9PSBQQUNLRVRfVFlQRV9JTklUSUFM
OgotICAgICAgICAgICAgICAgIHRva2VuX2xlbmd0aCA9IGxlbihzZWxmLl9wZWVyX3Rva2VuKQot
ICAgICAgICAgICAgICAgIGhlYWRlcl9zaXplICs9IHNpemVfdWludF92YXIodG9rZW5fbGVuZ3Ro
KSArIHRva2VuX2xlbmd0aAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaGVhZGVyX3NpemUg
PSAzICsgbGVuKHNlbGYuX3BlZXJfY2lkKQotCi0gICAgICAgICMgY2hlY2sgd2UgaGF2ZSBlbm91
Z2ggc3BhY2UKLSAgICAgICAgaWYgcGFja2V0X3N0YXJ0ICsgaGVhZGVyX3NpemUgPj0gc2VsZi5f
YnVmZmVyX2NhcGFjaXR5OgotICAgICAgICAgICAgcmFpc2UgUXVpY1BhY2tldEJ1aWxkZXJTdG9w
Ci0KLSAgICAgICAgIyBkZXRlcm1pbmUgYWNrIGVwb2NoCi0gICAgICAgIGlmIHBhY2tldF90eXBl
ID09IFBBQ0tFVF9UWVBFX0lOSVRJQUw6Ci0gICAgICAgICAgICBlcG9jaCA9IEVwb2NoLklOSVRJ
QUwKLSAgICAgICAgZWxpZiBwYWNrZXRfdHlwZSA9PSBQQUNLRVRfVFlQRV9IQU5EU0hBS0U6Ci0g
ICAgICAgICAgICBlcG9jaCA9IEVwb2NoLkhBTkRTSEFLRQotICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgZXBvY2ggPSBFcG9jaC5PTkVfUlRUCi0KLSAgICAgICAgc2VsZi5faGVhZGVyX3NpemUg
PSBoZWFkZXJfc2l6ZQotICAgICAgICBzZWxmLl9wYWNrZXQgPSBRdWljU2VudFBhY2tldCgKLSAg
ICAgICAgICAgIGVwb2NoPWVwb2NoLAotICAgICAgICAgICAgaW5fZmxpZ2h0PUZhbHNlLAotICAg
ICAgICAgICAgaXNfYWNrX2VsaWNpdGluZz1GYWxzZSwKLSAgICAgICAgICAgIGlzX2NyeXB0b19w
YWNrZXQ9RmFsc2UsCi0gICAgICAgICAgICBwYWNrZXRfbnVtYmVyPXNlbGYuX3BhY2tldF9udW1i
ZXIsCi0gICAgICAgICAgICBwYWNrZXRfdHlwZT1wYWNrZXRfdHlwZSwKLSAgICAgICAgKQotICAg
ICAgICBzZWxmLl9wYWNrZXRfY3J5cHRvID0gY3J5cHRvCi0gICAgICAgIHNlbGYuX3BhY2tldF9s
b25nX2hlYWRlciA9IHBhY2tldF9sb25nX2hlYWRlcgotICAgICAgICBzZWxmLl9wYWNrZXRfc3Rh
cnQgPSBwYWNrZXRfc3RhcnQKLSAgICAgICAgc2VsZi5fcGFja2V0X3R5cGUgPSBwYWNrZXRfdHlw
ZQotICAgICAgICBzZWxmLnF1aWNfbG9nZ2VyX2ZyYW1lcyA9IHNlbGYuX3BhY2tldC5xdWljX2xv
Z2dlcl9mcmFtZXMKLQotICAgICAgICBidWYuc2VlayhzZWxmLl9wYWNrZXRfc3RhcnQgKyBzZWxm
Ll9oZWFkZXJfc2l6ZSkKLQotICAgIGRlZiBfZW5kX3BhY2tldChzZWxmKSAtPiBOb25lOgotICAg
ICAgICAiIiIKLSAgICAgICAgRW5kcyB0aGUgY3VycmVudCBwYWNrZXQuCi0gICAgICAgICIiIgot
ICAgICAgICBidWYgPSBzZWxmLl9idWZmZXIKLSAgICAgICAgcGFja2V0X3NpemUgPSBidWYudGVs
bCgpIC0gc2VsZi5fcGFja2V0X3N0YXJ0Ci0gICAgICAgIGlmIHBhY2tldF9zaXplID4gc2VsZi5f
aGVhZGVyX3NpemU6Ci0gICAgICAgICAgICAjIHBhZCBpbml0aWFsIGRhdGFncmFtCi0gICAgICAg
ICAgICBpZiAoCi0gICAgICAgICAgICAgICAgc2VsZi5faXNfY2xpZW50Ci0gICAgICAgICAgICAg
ICAgYW5kIHNlbGYuX3BhY2tldF90eXBlID09IFBBQ0tFVF9UWVBFX0lOSVRJQUwKLSAgICAgICAg
ICAgICAgICBhbmQgc2VsZi5fcGFja2V0LmlzX2NyeXB0b19wYWNrZXQKLSAgICAgICAgICAgICk6
Ci0gICAgICAgICAgICAgICAgaWYgc2VsZi5yZW1haW5pbmdfZmxpZ2h0X3NwYWNlOgotICAgICAg
ICAgICAgICAgICAgICBidWYucHVzaF9ieXRlcyhieXRlcyhzZWxmLnJlbWFpbmluZ19mbGlnaHRf
c3BhY2UpKQotICAgICAgICAgICAgICAgICAgICBwYWNrZXRfc2l6ZSA9IGJ1Zi50ZWxsKCkgLSBz
ZWxmLl9wYWNrZXRfc3RhcnQKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGFja2V0LmluX2Zs
aWdodCA9IFRydWUKLQotICAgICAgICAgICAgICAgICAgICAjIGxvZyBmcmFtZQotICAgICAgICAg
ICAgICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbGYuX3BhY2tldC5xdWljX2xvZ2dlcl9mcmFtZXMuYXBwZW5kKAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV9wYWRkaW5n
X2ZyYW1lKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICkKLQotICAgICAgICAgICAgIyB3cml0
ZSBoZWFkZXIKLSAgICAgICAgICAgIGlmIHNlbGYuX3BhY2tldF9sb25nX2hlYWRlcjoKLSAgICAg
ICAgICAgICAgICBsZW5ndGggPSAoCi0gICAgICAgICAgICAgICAgICAgIHBhY2tldF9zaXplCi0g
ICAgICAgICAgICAgICAgICAgIC0gc2VsZi5faGVhZGVyX3NpemUKLSAgICAgICAgICAgICAgICAg
ICAgKyBQQUNLRVRfTlVNQkVSX1NFTkRfU0laRQotICAgICAgICAgICAgICAgICAgICArIHNlbGYu
X3BhY2tldF9jcnlwdG8uYWVhZF90YWdfc2l6ZQotICAgICAgICAgICAgICAgICkKLQotICAgICAg
ICAgICAgICAgIGJ1Zi5zZWVrKHNlbGYuX3BhY2tldF9zdGFydCkKLSAgICAgICAgICAgICAgICBi
dWYucHVzaF91aW50OChzZWxmLl9wYWNrZXRfdHlwZSB8IChQQUNLRVRfTlVNQkVSX1NFTkRfU0la
RSAtIDEpKQotICAgICAgICAgICAgICAgIGJ1Zi5wdXNoX3VpbnQzMihzZWxmLl92ZXJzaW9uKQot
ICAgICAgICAgICAgICAgIGJ1Zi5wdXNoX3VpbnQ4KGxlbihzZWxmLl9wZWVyX2NpZCkpCi0gICAg
ICAgICAgICAgICAgYnVmLnB1c2hfYnl0ZXMoc2VsZi5fcGVlcl9jaWQpCi0gICAgICAgICAgICAg
ICAgYnVmLnB1c2hfdWludDgobGVuKHNlbGYuX2hvc3RfY2lkKSkKLSAgICAgICAgICAgICAgICBi
dWYucHVzaF9ieXRlcyhzZWxmLl9ob3N0X2NpZCkKLSAgICAgICAgICAgICAgICBpZiAoc2VsZi5f
cGFja2V0X3R5cGUgJiBQQUNLRVRfVFlQRV9NQVNLKSA9PSBQQUNLRVRfVFlQRV9JTklUSUFMOgot
ICAgICAgICAgICAgICAgICAgICBidWYucHVzaF91aW50X3ZhcihsZW4oc2VsZi5fcGVlcl90b2tl
bikpCi0gICAgICAgICAgICAgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKHNlbGYuX3BlZXJfdG9rZW4p
Ci0gICAgICAgICAgICAgICAgYnVmLnB1c2hfdWludDE2KGxlbmd0aCB8IDB4NDAwMCkKLSAgICAg
ICAgICAgICAgICBidWYucHVzaF91aW50MTYoc2VsZi5fcGFja2V0X251bWJlciAmIDB4RkZGRikK
LSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYnVmLnNlZWsoc2VsZi5fcGFja2V0
X3N0YXJ0KQotICAgICAgICAgICAgICAgIGJ1Zi5wdXNoX3VpbnQ4KAotICAgICAgICAgICAgICAg
ICAgICBzZWxmLl9wYWNrZXRfdHlwZQotICAgICAgICAgICAgICAgICAgICB8IChzZWxmLl9zcGlu
X2JpdCA8PCA1KQotICAgICAgICAgICAgICAgICAgICB8IChzZWxmLl9wYWNrZXRfY3J5cHRvLmtl
eV9waGFzZSA8PCAyKQotICAgICAgICAgICAgICAgICAgICB8IChQQUNLRVRfTlVNQkVSX1NFTkRf
U0laRSAtIDEpCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgIGJ1Zi5wdXNoX2J5
dGVzKHNlbGYuX3BlZXJfY2lkKQotICAgICAgICAgICAgICAgIGJ1Zi5wdXNoX3VpbnQxNihzZWxm
Ll9wYWNrZXRfbnVtYmVyICYgMHhGRkZGKQotCi0gICAgICAgICAgICAgICAgIyBjaGVjayB3aGV0
aGVyIHdlIG5lZWQgcGFkZGluZwotICAgICAgICAgICAgICAgIHBhZGRpbmdfc2l6ZSA9ICgKLSAg
ICAgICAgICAgICAgICAgICAgUEFDS0VUX05VTUJFUl9NQVhfU0laRQotICAgICAgICAgICAgICAg
ICAgICAtIFBBQ0tFVF9OVU1CRVJfU0VORF9TSVpFCi0gICAgICAgICAgICAgICAgICAgICsgc2Vs
Zi5faGVhZGVyX3NpemUKLSAgICAgICAgICAgICAgICAgICAgLSBwYWNrZXRfc2l6ZQotICAgICAg
ICAgICAgICAgICkKLSAgICAgICAgICAgICAgICBpZiBwYWRkaW5nX3NpemUgPiAwOgotICAgICAg
ICAgICAgICAgICAgICBidWYuc2VlayhzZWxmLl9wYWNrZXRfc3RhcnQgKyBwYWNrZXRfc2l6ZSkK
LSAgICAgICAgICAgICAgICAgICAgYnVmLnB1c2hfYnl0ZXMoYnl0ZXMocGFkZGluZ19zaXplKSkK
LSAgICAgICAgICAgICAgICAgICAgcGFja2V0X3NpemUgKz0gcGFkZGluZ19zaXplCi0gICAgICAg
ICAgICAgICAgICAgIHNlbGYuX3BhY2tldC5pbl9mbGlnaHQgPSBUcnVlCi0KLSAgICAgICAgICAg
ICAgICAgICAgIyBsb2cgZnJhbWUKLSAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5fcXVpY19s
b2dnZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYWNrZXQu
cXVpY19sb2dnZXJfZnJhbWVzLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZWxmLl9xdWljX2xvZ2dlci5lbmNvZGVfcGFkZGluZ19mcmFtZSgpCi0gICAgICAgICAgICAgICAg
ICAgICAgICApCi0KLSAgICAgICAgICAgICMgZW5jcnlwdCBpbiBwbGFjZQotICAgICAgICAgICAg
cGxhaW4gPSBidWYuZGF0YV9zbGljZShzZWxmLl9wYWNrZXRfc3RhcnQsIHNlbGYuX3BhY2tldF9z
dGFydCArIHBhY2tldF9zaXplKQotICAgICAgICAgICAgYnVmLnNlZWsoc2VsZi5fcGFja2V0X3N0
YXJ0KQotICAgICAgICAgICAgYnVmLnB1c2hfYnl0ZXMoCi0gICAgICAgICAgICAgICAgc2VsZi5f
cGFja2V0X2NyeXB0by5lbmNyeXB0X3BhY2tldCgKLSAgICAgICAgICAgICAgICAgICAgcGxhaW5b
MCA6IHNlbGYuX2hlYWRlcl9zaXplXSwKLSAgICAgICAgICAgICAgICAgICAgcGxhaW5bc2VsZi5f
aGVhZGVyX3NpemUgOiBwYWNrZXRfc2l6ZV0sCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3Bh
Y2tldF9udW1iZXIsCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgKQotICAgICAgICAg
ICAgc2VsZi5fcGFja2V0LnNlbnRfYnl0ZXMgPSBidWYudGVsbCgpIC0gc2VsZi5fcGFja2V0X3N0
YXJ0Ci0gICAgICAgICAgICBzZWxmLl9wYWNrZXRzLmFwcGVuZChzZWxmLl9wYWNrZXQpCi0gICAg
ICAgICAgICBpZiBzZWxmLl9wYWNrZXQuaW5fZmxpZ2h0OgotICAgICAgICAgICAgICAgIHNlbGYu
X2RhdGFncmFtX2ZsaWdodF9ieXRlcyArPSBzZWxmLl9wYWNrZXQuc2VudF9ieXRlcwotCi0gICAg
ICAgICAgICAjIHNob3J0IGhlYWRlciBwYWNrZXRzIGNhbm5vdCBiZSBjb2FsbGVzY2VkLCB3ZSBu
ZWVkIGEgbmV3IGRhdGFncmFtCi0gICAgICAgICAgICBpZiBub3Qgc2VsZi5fcGFja2V0X2xvbmdf
aGVhZGVyOgotICAgICAgICAgICAgICAgIHNlbGYuX2ZsdXNoX2N1cnJlbnRfZGF0YWdyYW0oKQot
Ci0gICAgICAgICAgICBzZWxmLl9wYWNrZXRfbnVtYmVyICs9IDEKLSAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgICMgImNhbmNlbCIgdGhlIHBhY2tldAotICAgICAgICAgICAgYnVmLnNlZWsoc2Vs
Zi5fcGFja2V0X3N0YXJ0KQotCi0gICAgICAgIHNlbGYuX3BhY2tldCA9IE5vbmUKLSAgICAgICAg
c2VsZi5xdWljX2xvZ2dlcl9mcmFtZXMgPSBOb25lCi0KLSAgICBkZWYgX2ZsdXNoX2N1cnJlbnRf
ZGF0YWdyYW0oc2VsZikgLT4gTm9uZToKLSAgICAgICAgZGF0YWdyYW1fYnl0ZXMgPSBzZWxmLl9i
dWZmZXIudGVsbCgpCi0gICAgICAgIGlmIGRhdGFncmFtX2J5dGVzOgotICAgICAgICAgICAgc2Vs
Zi5fZGF0YWdyYW1zLmFwcGVuZChzZWxmLl9idWZmZXIuZGF0YSkKLSAgICAgICAgICAgIHNlbGYu
X2ZsaWdodF9ieXRlcyArPSBzZWxmLl9kYXRhZ3JhbV9mbGlnaHRfYnl0ZXMKLSAgICAgICAgICAg
IHNlbGYuX3RvdGFsX2J5dGVzICs9IGRhdGFncmFtX2J5dGVzCi0gICAgICAgICAgICBzZWxmLl9k
YXRhZ3JhbV9pbml0ID0gVHJ1ZQotICAgICAgICAgICAgc2VsZi5fYnVmZmVyLnNlZWsoMCkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL3Jhbmdlc2V0LnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvcmFuZ2VzZXQucHkKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDg2MDg2YzljNzRmNzc1NjAzMjA4NjkwMDc2YmVlOTYzODE0NjExYjkuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L3NyYy9haW9xdWljL3F1aWMvcmFuZ2VzZXQucHkKKysrIC9kZXYvbnVsbApAQCAtMSw5OCArMCww
IEBACi1mcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgU2VxdWVuY2UKLWZyb20gdHlwaW5nIGlt
cG9ydCBBbnksIEl0ZXJhYmxlLCBMaXN0LCBPcHRpb25hbAotCi0KLWNsYXNzIFJhbmdlU2V0KFNl
cXVlbmNlKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmFuZ2VzOiBJdGVyYWJsZVtyYW5nZV0g
PSBbXSk6Ci0gICAgICAgIHNlbGYuX19yYW5nZXM6IExpc3RbcmFuZ2VdID0gW10KLSAgICAgICAg
Zm9yIHIgaW4gcmFuZ2VzOgotICAgICAgICAgICAgYXNzZXJ0IHIuc3RlcCA9PSAxCi0gICAgICAg
ICAgICBzZWxmLmFkZChyLnN0YXJ0LCByLnN0b3ApCi0KLSAgICBkZWYgYWRkKHNlbGYsIHN0YXJ0
OiBpbnQsIHN0b3A6IE9wdGlvbmFsW2ludF0gPSBOb25lKSAtPiBOb25lOgotICAgICAgICBpZiBz
dG9wIGlzIE5vbmU6Ci0gICAgICAgICAgICBzdG9wID0gc3RhcnQgKyAxCi0gICAgICAgIGFzc2Vy
dCBzdG9wID4gc3RhcnQKLQotICAgICAgICBmb3IgaSwgciBpbiBlbnVtZXJhdGUoc2VsZi5fX3Jh
bmdlcyk6Ci0gICAgICAgICAgICAjIHRoZSBhZGRlZCByYW5nZSBpcyBlbnRpcmVseSBiZWZvcmUg
Y3VycmVudCBpdGVtLCBpbnNlcnQgaGVyZQotICAgICAgICAgICAgaWYgc3RvcCA8IHIuc3RhcnQ6
Ci0gICAgICAgICAgICAgICAgc2VsZi5fX3Jhbmdlcy5pbnNlcnQoaSwgcmFuZ2Uoc3RhcnQsIHN0
b3ApKQotICAgICAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgICAgICAjIHRoZSBhZGRlZCBy
YW5nZSBpcyBlbnRpcmVseSBhZnRlciBjdXJyZW50IGl0ZW0sIGtlZXAgbG9va2luZwotICAgICAg
ICAgICAgaWYgc3RhcnQgPiByLnN0b3A6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLQotICAg
ICAgICAgICAgIyB0aGUgYWRkZWQgcmFuZ2UgdG91Y2hlcyB0aGUgY3VycmVudCBpdGVtLCBtZXJn
ZSBpdAotICAgICAgICAgICAgc3RhcnQgPSBtaW4oc3RhcnQsIHIuc3RhcnQpCi0gICAgICAgICAg
ICBzdG9wID0gbWF4KHN0b3AsIHIuc3RvcCkKLSAgICAgICAgICAgIHdoaWxlIGkgPCBsZW4oc2Vs
Zi5fX3JhbmdlcykgLSAxIGFuZCBzZWxmLl9fcmFuZ2VzW2kgKyAxXS5zdGFydCA8PSBzdG9wOgot
ICAgICAgICAgICAgICAgIHN0b3AgPSBtYXgoc2VsZi5fX3Jhbmdlc1tpICsgMV0uc3RvcCwgc3Rv
cCkKLSAgICAgICAgICAgICAgICBzZWxmLl9fcmFuZ2VzLnBvcChpICsgMSkKLSAgICAgICAgICAg
IHNlbGYuX19yYW5nZXNbaV0gPSByYW5nZShzdGFydCwgc3RvcCkKLSAgICAgICAgICAgIHJldHVy
bgotCi0gICAgICAgICMgdGhlIGFkZGVkIHJhbmdlIGlzIGVudGlyZWx5IGFmdGVyIGFsbCBleGlz
dGluZyBpdGVtcywgYXBwZW5kIGl0Ci0gICAgICAgIHNlbGYuX19yYW5nZXMuYXBwZW5kKHJhbmdl
KHN0YXJ0LCBzdG9wKSkKLQotICAgIGRlZiBib3VuZHMoc2VsZikgLT4gcmFuZ2U6Ci0gICAgICAg
IHJldHVybiByYW5nZShzZWxmLl9fcmFuZ2VzWzBdLnN0YXJ0LCBzZWxmLl9fcmFuZ2VzWy0xXS5z
dG9wKQotCi0gICAgZGVmIHNoaWZ0KHNlbGYpIC0+IHJhbmdlOgotICAgICAgICByZXR1cm4gc2Vs
Zi5fX3Jhbmdlcy5wb3AoMCkKLQotICAgIGRlZiBzdWJ0cmFjdChzZWxmLCBzdGFydDogaW50LCBz
dG9wOiBpbnQpIC0+IE5vbmU6Ci0gICAgICAgIGFzc2VydCBzdG9wID4gc3RhcnQKLQotICAgICAg
ICBpID0gMAotICAgICAgICB3aGlsZSBpIDwgbGVuKHNlbGYuX19yYW5nZXMpOgotICAgICAgICAg
ICAgciA9IHNlbGYuX19yYW5nZXNbaV0KLQotICAgICAgICAgICAgIyB0aGUgcmVtb3ZlZCByYW5n
ZSBpcyBlbnRpcmVseSBiZWZvcmUgY3VycmVudCBpdGVtLCBzdG9wIGhlcmUKLSAgICAgICAgICAg
IGlmIHN0b3AgPD0gci5zdGFydDoKLSAgICAgICAgICAgICAgICByZXR1cm4KLQotICAgICAgICAg
ICAgIyB0aGUgcmVtb3ZlZCByYW5nZSBpcyBlbnRpcmVseSBhZnRlciBjdXJyZW50IGl0ZW0sIGtl
ZXAgbG9va2luZwotICAgICAgICAgICAgaWYgc3RhcnQgPj0gci5zdG9wOgotICAgICAgICAgICAg
ICAgIGkgKz0gMQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgICMgdGhl
IHJlbW92ZWQgcmFuZ2UgY29tcGxldGVseSBjb3ZlcnMgdGhlIGN1cnJlbnQgaXRlbSwgcmVtb3Zl
IGl0Ci0gICAgICAgICAgICBpZiBzdGFydCA8PSByLnN0YXJ0IGFuZCBzdG9wID49IHIuc3RvcDoK
LSAgICAgICAgICAgICAgICBzZWxmLl9fcmFuZ2VzLnBvcChpKQotICAgICAgICAgICAgICAgIGNv
bnRpbnVlCi0KLSAgICAgICAgICAgICMgdGhlIHJlbW92ZWQgcmFuZ2UgdG91Y2hlcyB0aGUgY3Vy
cmVudCBpdGVtCi0gICAgICAgICAgICBpZiBzdGFydCA+IHIuc3RhcnQ6Ci0gICAgICAgICAgICAg
ICAgc2VsZi5fX3Jhbmdlc1tpXSA9IHJhbmdlKHIuc3RhcnQsIHN0YXJ0KQotICAgICAgICAgICAg
ICAgIGlmIHN0b3AgPCByLnN0b3A6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX19yYW5nZXMu
aW5zZXJ0KGkgKyAxLCByYW5nZShzdG9wLCByLnN0b3ApKQotICAgICAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgICAgICBzZWxmLl9fcmFuZ2VzW2ldID0gcmFuZ2Uoc3RvcCwgci5zdG9wKQotCi0g
ICAgICAgICAgICBpICs9IDEKLQotICAgIGRlZiBfX2Jvb2xfXyhzZWxmKSAtPiBib29sOgotICAg
ICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCi0KLSAgICBkZWYgX19jb250YWluc19fKHNl
bGYsIHZhbDogQW55KSAtPiBib29sOgotICAgICAgICBmb3IgciBpbiBzZWxmLl9fcmFuZ2VzOgot
ICAgICAgICAgICAgaWYgdmFsIGluIHI6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAg
ICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyOiBvYmplY3Qp
IC0+IGJvb2w6Ci0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBSYW5nZVNldCk6Ci0g
ICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKLQotICAgICAgICByZXR1cm4gc2VsZi5f
X3JhbmdlcyA9PSBvdGhlci5fX3JhbmdlcwotCi0gICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtl
eTogQW55KSAtPiByYW5nZToKLSAgICAgICAgcmV0dXJuIHNlbGYuX19yYW5nZXNba2V5XQotCi0g
ICAgZGVmIF9fbGVuX18oc2VsZikgLT4gaW50OgotICAgICAgICByZXR1cm4gbGVuKHNlbGYuX19y
YW5nZXMpCi0KLSAgICBkZWYgX19yZXByX18oc2VsZikgLT4gc3RyOgotICAgICAgICByZXR1cm4g
IlJhbmdlU2V0KHt9KSIuZm9ybWF0KHJlcHIoc2VsZi5fX3JhbmdlcykpCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9yZWNvdmVyeS5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9z
cmMvYWlvcXVpYy9xdWljL3JlY292ZXJ5LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA5YWJlYjFlY2Y1NjYxZjcxYzkzZTc3YmY3ZmE2MmE3MTYyZjM4NzBkLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVp
Yy9xdWljL3JlY292ZXJ5LnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDk3ICswLDAgQEAKLWltcG9y
dCBtYXRoCi1mcm9tIHR5cGluZyBpbXBvcnQgQ2FsbGFibGUsIERpY3QsIEl0ZXJhYmxlLCBMaXN0
LCBPcHRpb25hbAotCi1mcm9tIC5sb2dnZXIgaW1wb3J0IFF1aWNMb2dnZXJUcmFjZQotZnJvbSAu
cGFja2V0X2J1aWxkZXIgaW1wb3J0IFF1aWNEZWxpdmVyeVN0YXRlLCBRdWljU2VudFBhY2tldAot
ZnJvbSAucmFuZ2VzZXQgaW1wb3J0IFJhbmdlU2V0Ci0KLSMgbG9zcyBkZXRlY3Rpb24KLUtfUEFD
S0VUX1RIUkVTSE9MRCA9IDMKLUtfSU5JVElBTF9SVFQgPSAwLjUgICMgc2Vjb25kcwotS19HUkFO
VUxBUklUWSA9IDAuMDAxICAjIHNlY29uZHMKLUtfVElNRV9USFJFU0hPTEQgPSA5IC8gOAotS19N
SUNST19TRUNPTkQgPSAwLjAwMDAwMQotS19TRUNPTkQgPSAxLjAKLQotIyBjb25nZXN0aW9uIGNv
bnRyb2wKLUtfTUFYX0RBVEFHUkFNX1NJWkUgPSAxMjgwCi1LX0lOSVRJQUxfV0lORE9XID0gMTAg
KiBLX01BWF9EQVRBR1JBTV9TSVpFCi1LX01JTklNVU1fV0lORE9XID0gMiAqIEtfTUFYX0RBVEFH
UkFNX1NJWkUKLUtfTE9TU19SRURVQ1RJT05fRkFDVE9SID0gMC41Ci0KLQotY2xhc3MgUXVpY1Bh
Y2tldFNwYWNlOgotICAgIGRlZiBfX2luaXRfXyhzZWxmKSAtPiBOb25lOgotICAgICAgICBzZWxm
LmFja19hdDogT3B0aW9uYWxbZmxvYXRdID0gTm9uZQotICAgICAgICBzZWxmLmFja19xdWV1ZSA9
IFJhbmdlU2V0KCkKLSAgICAgICAgc2VsZi5kaXNjYXJkZWQgPSBGYWxzZQotICAgICAgICBzZWxm
LmV4cGVjdGVkX3BhY2tldF9udW1iZXIgPSAwCi0gICAgICAgIHNlbGYubGFyZ2VzdF9yZWNlaXZl
ZF9wYWNrZXQgPSAtMQotICAgICAgICBzZWxmLmxhcmdlc3RfcmVjZWl2ZWRfdGltZTogT3B0aW9u
YWxbZmxvYXRdID0gTm9uZQotCi0gICAgICAgICMgc2VudCBwYWNrZXRzIGFuZCBsb3NzCi0gICAg
ICAgIHNlbGYuYWNrX2VsaWNpdGluZ19pbl9mbGlnaHQgPSAwCi0gICAgICAgIHNlbGYubGFyZ2Vz
dF9hY2tlZF9wYWNrZXQgPSAwCi0gICAgICAgIHNlbGYubG9zc190aW1lOiBPcHRpb25hbFtmbG9h
dF0gPSBOb25lCi0gICAgICAgIHNlbGYuc2VudF9wYWNrZXRzOiBEaWN0W2ludCwgUXVpY1NlbnRQ
YWNrZXRdID0ge30KLQotCi1jbGFzcyBRdWljUGFja2V0UGFjZXI6Ci0gICAgZGVmIF9faW5pdF9f
KHNlbGYpIC0+IE5vbmU6Ci0gICAgICAgIHNlbGYuYnVja2V0X21heDogZmxvYXQgPSAwLjAKLSAg
ICAgICAgc2VsZi5idWNrZXRfdGltZTogZmxvYXQgPSAwLjAKLSAgICAgICAgc2VsZi5ldmFsdWF0
aW9uX3RpbWU6IGZsb2F0ID0gMC4wCi0gICAgICAgIHNlbGYucGFja2V0X3RpbWU6IE9wdGlvbmFs
W2Zsb2F0XSA9IE5vbmUKLQotICAgIGRlZiBuZXh0X3NlbmRfdGltZShzZWxmLCBub3c6IGZsb2F0
KSAtPiBmbG9hdDoKLSAgICAgICAgaWYgc2VsZi5wYWNrZXRfdGltZSBpcyBub3QgTm9uZToKLSAg
ICAgICAgICAgIHNlbGYudXBkYXRlX2J1Y2tldChub3c9bm93KQotICAgICAgICAgICAgaWYgc2Vs
Zi5idWNrZXRfdGltZSA8PSAwOgotICAgICAgICAgICAgICAgIHJldHVybiBub3cgKyBzZWxmLnBh
Y2tldF90aW1lCi0gICAgICAgIHJldHVybiBOb25lCi0KLSAgICBkZWYgdXBkYXRlX2FmdGVyX3Nl
bmQoc2VsZiwgbm93OiBmbG9hdCkgLT4gTm9uZToKLSAgICAgICAgaWYgc2VsZi5wYWNrZXRfdGlt
ZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYudXBkYXRlX2J1Y2tldChub3c9bm93KQot
ICAgICAgICAgICAgaWYgc2VsZi5idWNrZXRfdGltZSA8IHNlbGYucGFja2V0X3RpbWU6Ci0gICAg
ICAgICAgICAgICAgc2VsZi5idWNrZXRfdGltZSA9IDAuMAotICAgICAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgICAgICBzZWxmLmJ1Y2tldF90aW1lIC09IHNlbGYucGFja2V0X3RpbWUKLQotICAg
IGRlZiB1cGRhdGVfYnVja2V0KHNlbGYsIG5vdzogZmxvYXQpIC0+IE5vbmU6Ci0gICAgICAgIGlm
IG5vdyA+IHNlbGYuZXZhbHVhdGlvbl90aW1lOgotICAgICAgICAgICAgc2VsZi5idWNrZXRfdGlt
ZSA9IG1pbigKLSAgICAgICAgICAgICAgICBzZWxmLmJ1Y2tldF90aW1lICsgKG5vdyAtIHNlbGYu
ZXZhbHVhdGlvbl90aW1lKSwgc2VsZi5idWNrZXRfbWF4Ci0gICAgICAgICAgICApCi0gICAgICAg
ICAgICBzZWxmLmV2YWx1YXRpb25fdGltZSA9IG5vdwotCi0gICAgZGVmIHVwZGF0ZV9yYXRlKHNl
bGYsIGNvbmdlc3Rpb25fd2luZG93OiBpbnQsIHNtb290aGVkX3J0dDogZmxvYXQpIC0+IE5vbmU6
Ci0gICAgICAgIHBhY2luZ19yYXRlID0gY29uZ2VzdGlvbl93aW5kb3cgLyBtYXgoc21vb3RoZWRf
cnR0LCBLX01JQ1JPX1NFQ09ORCkKLSAgICAgICAgc2VsZi5wYWNrZXRfdGltZSA9IG1heCgKLSAg
ICAgICAgICAgIEtfTUlDUk9fU0VDT05ELCBtaW4oS19NQVhfREFUQUdSQU1fU0laRSAvIHBhY2lu
Z19yYXRlLCBLX1NFQ09ORCkKLSAgICAgICAgKQotCi0gICAgICAgIHNlbGYuYnVja2V0X21heCA9
ICgKLSAgICAgICAgICAgIG1heCgKLSAgICAgICAgICAgICAgICAyICogS19NQVhfREFUQUdSQU1f
U0laRSwKLSAgICAgICAgICAgICAgICBtaW4oY29uZ2VzdGlvbl93aW5kb3cgLy8gNCwgMTYgKiBL
X01BWF9EQVRBR1JBTV9TSVpFKSwKLSAgICAgICAgICAgICkKLSAgICAgICAgICAgIC8gcGFjaW5n
X3JhdGUKLSAgICAgICAgKQotICAgICAgICBpZiBzZWxmLmJ1Y2tldF90aW1lID4gc2VsZi5idWNr
ZXRfbWF4OgotICAgICAgICAgICAgc2VsZi5idWNrZXRfdGltZSA9IHNlbGYuYnVja2V0X21heAot
Ci0KLWNsYXNzIFF1aWNDb25nZXN0aW9uQ29udHJvbDoKLSAgICAiIiIKLSAgICBOZXcgUmVubyBj
b25nZXN0aW9uIGNvbnRyb2wuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZikgLT4g
Tm9uZToKLSAgICAgICAgc2VsZi5ieXRlc19pbl9mbGlnaHQgPSAwCi0gICAgICAgIHNlbGYuY29u
Z2VzdGlvbl93aW5kb3cgPSBLX0lOSVRJQUxfV0lORE9XCi0gICAgICAgIHNlbGYuX2Nvbmdlc3Rp
b25fcmVjb3Zlcnlfc3RhcnRfdGltZSA9IDAuMAotICAgICAgICBzZWxmLl9jb25nZXN0aW9uX3N0
YXNoID0gMAotICAgICAgICBzZWxmLl9ydHRfbW9uaXRvciA9IFF1aWNSdHRNb25pdG9yKCkKLSAg
ICAgICAgc2VsZi5zc3RocmVzaDogT3B0aW9uYWxbaW50XSA9IE5vbmUKLQotICAgIGRlZiBvbl9w
YWNrZXRfYWNrZWQoc2VsZiwgcGFja2V0OiBRdWljU2VudFBhY2tldCkgLT4gTm9uZToKLSAgICAg
ICAgc2VsZi5ieXRlc19pbl9mbGlnaHQgLT0gcGFja2V0LnNlbnRfYnl0ZXMKLQotICAgICAgICAj
IGRvbid0IGluY3JlYXNlIHdpbmRvdyBpbiBjb25nZXN0aW9uIHJlY292ZXJ5Ci0gICAgICAgIGlm
IHBhY2tldC5zZW50X3RpbWUgPD0gc2VsZi5fY29uZ2VzdGlvbl9yZWNvdmVyeV9zdGFydF90aW1l
OgotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgaWYgc2VsZi5zc3RocmVzaCBpcyBOb25l
IG9yIHNlbGYuY29uZ2VzdGlvbl93aW5kb3cgPCBzZWxmLnNzdGhyZXNoOgotICAgICAgICAgICAg
IyBzbG93IHN0YXJ0Ci0gICAgICAgICAgICBzZWxmLmNvbmdlc3Rpb25fd2luZG93ICs9IHBhY2tl
dC5zZW50X2J5dGVzCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIGNvbmdlc3Rpb24gYXZv
aWRhbmNlCi0gICAgICAgICAgICBzZWxmLl9jb25nZXN0aW9uX3N0YXNoICs9IHBhY2tldC5zZW50
X2J5dGVzCi0gICAgICAgICAgICBjb3VudCA9IHNlbGYuX2Nvbmdlc3Rpb25fc3Rhc2ggLy8gc2Vs
Zi5jb25nZXN0aW9uX3dpbmRvdwotICAgICAgICAgICAgaWYgY291bnQ6Ci0gICAgICAgICAgICAg
ICAgc2VsZi5fY29uZ2VzdGlvbl9zdGFzaCAtPSBjb3VudCAqIHNlbGYuY29uZ2VzdGlvbl93aW5k
b3cKLSAgICAgICAgICAgICAgICBzZWxmLmNvbmdlc3Rpb25fd2luZG93ICs9IGNvdW50ICogS19N
QVhfREFUQUdSQU1fU0laRQotCi0gICAgZGVmIG9uX3BhY2tldF9zZW50KHNlbGYsIHBhY2tldDog
UXVpY1NlbnRQYWNrZXQpIC0+IE5vbmU6Ci0gICAgICAgIHNlbGYuYnl0ZXNfaW5fZmxpZ2h0ICs9
IHBhY2tldC5zZW50X2J5dGVzCi0KLSAgICBkZWYgb25fcGFja2V0c19leHBpcmVkKHNlbGYsIHBh
Y2tldHM6IEl0ZXJhYmxlW1F1aWNTZW50UGFja2V0XSkgLT4gTm9uZToKLSAgICAgICAgZm9yIHBh
Y2tldCBpbiBwYWNrZXRzOgotICAgICAgICAgICAgc2VsZi5ieXRlc19pbl9mbGlnaHQgLT0gcGFj
a2V0LnNlbnRfYnl0ZXMKLQotICAgIGRlZiBvbl9wYWNrZXRzX2xvc3Qoc2VsZiwgcGFja2V0czog
SXRlcmFibGVbUXVpY1NlbnRQYWNrZXRdLCBub3c6IGZsb2F0KSAtPiBOb25lOgotICAgICAgICBs
b3N0X2xhcmdlc3RfdGltZSA9IDAuMAotICAgICAgICBmb3IgcGFja2V0IGluIHBhY2tldHM6Ci0g
ICAgICAgICAgICBzZWxmLmJ5dGVzX2luX2ZsaWdodCAtPSBwYWNrZXQuc2VudF9ieXRlcwotICAg
ICAgICAgICAgbG9zdF9sYXJnZXN0X3RpbWUgPSBwYWNrZXQuc2VudF90aW1lCi0KLSAgICAgICAg
IyBzdGFydCBhIG5ldyBjb25nZXN0aW9uIGV2ZW50IGlmIHBhY2tldCB3YXMgc2VudCBhZnRlciB0
aGUKLSAgICAgICAgIyBzdGFydCBvZiB0aGUgcHJldmlvdXMgY29uZ2VzdGlvbiByZWNvdmVyeSBw
ZXJpb2QuCi0gICAgICAgIGlmIGxvc3RfbGFyZ2VzdF90aW1lID4gc2VsZi5fY29uZ2VzdGlvbl9y
ZWNvdmVyeV9zdGFydF90aW1lOgotICAgICAgICAgICAgc2VsZi5fY29uZ2VzdGlvbl9yZWNvdmVy
eV9zdGFydF90aW1lID0gbm93Ci0gICAgICAgICAgICBzZWxmLmNvbmdlc3Rpb25fd2luZG93ID0g
bWF4KAotICAgICAgICAgICAgICAgIGludChzZWxmLmNvbmdlc3Rpb25fd2luZG93ICogS19MT1NT
X1JFRFVDVElPTl9GQUNUT1IpLCBLX01JTklNVU1fV0lORE9XCi0gICAgICAgICAgICApCi0gICAg
ICAgICAgICBzZWxmLnNzdGhyZXNoID0gc2VsZi5jb25nZXN0aW9uX3dpbmRvdwotCi0gICAgICAg
ICMgVE9ETyA6IGNvbGxhcHNlIGNvbmdlc3Rpb24gd2luZG93IGlmIHBlcnNpc3RlbnQgY29uZ2Vz
dGlvbgotCi0gICAgZGVmIG9uX3J0dF9tZWFzdXJlbWVudChzZWxmLCBsYXRlc3RfcnR0OiBmbG9h
dCwgbm93OiBmbG9hdCkgLT4gTm9uZToKLSAgICAgICAgIyBjaGVjayB3aGV0aGVyIHdlIHNob3Vs
ZCBleGl0IHNsb3cgc3RhcnQKLSAgICAgICAgaWYgc2VsZi5zc3RocmVzaCBpcyBOb25lIGFuZCBz
ZWxmLl9ydHRfbW9uaXRvci5pc19ydHRfaW5jcmVhc2luZygKLSAgICAgICAgICAgIGxhdGVzdF9y
dHQsIG5vdwotICAgICAgICApOgotICAgICAgICAgICAgc2VsZi5zc3RocmVzaCA9IHNlbGYuY29u
Z2VzdGlvbl93aW5kb3cKLQotCi1jbGFzcyBRdWljUGFja2V0UmVjb3Zlcnk6Ci0gICAgIiIiCi0g
ICAgUGFja2V0IGxvc3MgYW5kIGNvbmdlc3Rpb24gY29udHJvbGxlci4KLSAgICAiIiIKLQotICAg
IGRlZiBfX2luaXRfXygKLSAgICAgICAgc2VsZiwKLSAgICAgICAgaXNfY2xpZW50X3dpdGhvdXRf
MXJ0dDogYm9vbCwKLSAgICAgICAgc2VuZF9wcm9iZTogQ2FsbGFibGVbW10sIE5vbmVdLAotICAg
ICAgICBxdWljX2xvZ2dlcjogT3B0aW9uYWxbUXVpY0xvZ2dlclRyYWNlXSA9IE5vbmUsCi0gICAg
KSAtPiBOb25lOgotICAgICAgICBzZWxmLmlzX2NsaWVudF93aXRob3V0XzFydHQgPSBpc19jbGll
bnRfd2l0aG91dF8xcnR0Ci0gICAgICAgIHNlbGYubWF4X2Fja19kZWxheSA9IDAuMDI1Ci0gICAg
ICAgIHNlbGYuc3BhY2VzOiBMaXN0W1F1aWNQYWNrZXRTcGFjZV0gPSBbXQotCi0gICAgICAgICMg
Y2FsbGJhY2tzCi0gICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyID0gcXVpY19sb2dnZXIKLSAgICAg
ICAgc2VsZi5fc2VuZF9wcm9iZSA9IHNlbmRfcHJvYmUKLQotICAgICAgICAjIGxvc3MgZGV0ZWN0
aW9uCi0gICAgICAgIHNlbGYuX3B0b19jb3VudCA9IDAKLSAgICAgICAgc2VsZi5fcnR0X2luaXRp
YWxpemVkID0gRmFsc2UKLSAgICAgICAgc2VsZi5fcnR0X2xhdGVzdCA9IDAuMAotICAgICAgICBz
ZWxmLl9ydHRfbWluID0gbWF0aC5pbmYKLSAgICAgICAgc2VsZi5fcnR0X3Ntb290aGVkID0gMC4w
Ci0gICAgICAgIHNlbGYuX3J0dF92YXJpYW5jZSA9IDAuMAotICAgICAgICBzZWxmLl90aW1lX29m
X2xhc3Rfc2VudF9hY2tfZWxpY2l0aW5nX3BhY2tldCA9IDAuMAotCi0gICAgICAgICMgY29uZ2Vz
dGlvbiBjb250cm9sCi0gICAgICAgIHNlbGYuX2NjID0gUXVpY0Nvbmdlc3Rpb25Db250cm9sKCkK
LSAgICAgICAgc2VsZi5fcGFjZXIgPSBRdWljUGFja2V0UGFjZXIoKQotCi0gICAgQHByb3BlcnR5
Ci0gICAgZGVmIGJ5dGVzX2luX2ZsaWdodChzZWxmKSAtPiBpbnQ6Ci0gICAgICAgIHJldHVybiBz
ZWxmLl9jYy5ieXRlc19pbl9mbGlnaHQKLQotICAgIEBwcm9wZXJ0eQotICAgIGRlZiBjb25nZXN0
aW9uX3dpbmRvdyhzZWxmKSAtPiBpbnQ6Ci0gICAgICAgIHJldHVybiBzZWxmLl9jYy5jb25nZXN0
aW9uX3dpbmRvdwotCi0gICAgZGVmIGRpc2NhcmRfc3BhY2Uoc2VsZiwgc3BhY2U6IFF1aWNQYWNr
ZXRTcGFjZSkgLT4gTm9uZToKLSAgICAgICAgYXNzZXJ0IHNwYWNlIGluIHNlbGYuc3BhY2VzCi0K
LSAgICAgICAgc2VsZi5fY2Mub25fcGFja2V0c19leHBpcmVkKAotICAgICAgICAgICAgZmlsdGVy
KGxhbWJkYSB4OiB4LmluX2ZsaWdodCwgc3BhY2Uuc2VudF9wYWNrZXRzLnZhbHVlcygpKQotICAg
ICAgICApCi0gICAgICAgIHNwYWNlLnNlbnRfcGFja2V0cy5jbGVhcigpCi0KLSAgICAgICAgc3Bh
Y2UuYWNrX2F0ID0gTm9uZQotICAgICAgICBzcGFjZS5hY2tfZWxpY2l0aW5nX2luX2ZsaWdodCA9
IDAKLSAgICAgICAgc3BhY2UubG9zc190aW1lID0gTm9uZQotCi0gICAgICAgIGlmIHNlbGYuX3F1
aWNfbG9nZ2VyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2VsZi5fbG9nX21ldHJpY3NfdXBk
YXRlZCgpCi0KLSAgICBkZWYgZ2V0X2VhcmxpZXN0X2xvc3Nfc3BhY2Uoc2VsZikgLT4gT3B0aW9u
YWxbUXVpY1BhY2tldFNwYWNlXToKLSAgICAgICAgbG9zc19zcGFjZSA9IE5vbmUKLSAgICAgICAg
Zm9yIHNwYWNlIGluIHNlbGYuc3BhY2VzOgotICAgICAgICAgICAgaWYgc3BhY2UubG9zc190aW1l
IGlzIG5vdCBOb25lIGFuZCAoCi0gICAgICAgICAgICAgICAgbG9zc19zcGFjZSBpcyBOb25lIG9y
IHNwYWNlLmxvc3NfdGltZSA8IGxvc3Nfc3BhY2UubG9zc190aW1lCi0gICAgICAgICAgICApOgot
ICAgICAgICAgICAgICAgIGxvc3Nfc3BhY2UgPSBzcGFjZQotICAgICAgICByZXR1cm4gbG9zc19z
cGFjZQotCi0gICAgZGVmIGdldF9sb3NzX2RldGVjdGlvbl90aW1lKHNlbGYpIC0+IGZsb2F0Ogot
ICAgICAgICAjIGxvc3MgdGltZXIKLSAgICAgICAgbG9zc19zcGFjZSA9IHNlbGYuZ2V0X2Vhcmxp
ZXN0X2xvc3Nfc3BhY2UoKQotICAgICAgICBpZiBsb3NzX3NwYWNlIGlzIG5vdCBOb25lOgotICAg
ICAgICAgICAgcmV0dXJuIGxvc3Nfc3BhY2UubG9zc190aW1lCi0KLSAgICAgICAgIyBwYWNrZXQg
dGltZXIKLSAgICAgICAgaWYgKAotICAgICAgICAgICAgc2VsZi5pc19jbGllbnRfd2l0aG91dF8x
cnR0Ci0gICAgICAgICAgICBvciBzdW0oc3BhY2UuYWNrX2VsaWNpdGluZ19pbl9mbGlnaHQgZm9y
IHNwYWNlIGluIHNlbGYuc3BhY2VzKSA+IDAKLSAgICAgICAgKToKLSAgICAgICAgICAgIGlmIG5v
dCBzZWxmLl9ydHRfaW5pdGlhbGl6ZWQ6Ci0gICAgICAgICAgICAgICAgdGltZW91dCA9IDIgKiBL
X0lOSVRJQUxfUlRUICogKDIgKiogc2VsZi5fcHRvX2NvdW50KQotICAgICAgICAgICAgZWxzZToK
LSAgICAgICAgICAgICAgICB0aW1lb3V0ID0gc2VsZi5nZXRfcHJvYmVfdGltZW91dCgpICogKDIg
Kiogc2VsZi5fcHRvX2NvdW50KQotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3RpbWVfb2ZfbGFz
dF9zZW50X2Fja19lbGljaXRpbmdfcGFja2V0ICsgdGltZW91dAotCi0gICAgICAgIHJldHVybiBO
b25lCi0KLSAgICBkZWYgZ2V0X3Byb2JlX3RpbWVvdXQoc2VsZikgLT4gZmxvYXQ6Ci0gICAgICAg
IHJldHVybiAoCi0gICAgICAgICAgICBzZWxmLl9ydHRfc21vb3RoZWQKLSAgICAgICAgICAgICsg
bWF4KDQgKiBzZWxmLl9ydHRfdmFyaWFuY2UsIEtfR1JBTlVMQVJJVFkpCi0gICAgICAgICAgICAr
IHNlbGYubWF4X2Fja19kZWxheQotICAgICAgICApCi0KLSAgICBkZWYgb25fYWNrX3JlY2VpdmVk
KAotICAgICAgICBzZWxmLAotICAgICAgICBzcGFjZTogUXVpY1BhY2tldFNwYWNlLAotICAgICAg
ICBhY2tfcmFuZ2VzZXQ6IFJhbmdlU2V0LAotICAgICAgICBhY2tfZGVsYXk6IGZsb2F0LAotICAg
ICAgICBub3c6IGZsb2F0LAotICAgICkgLT4gTm9uZToKLSAgICAgICAgIiIiCi0gICAgICAgIFVw
ZGF0ZSBtZXRyaWNzIGFzIHRoZSByZXN1bHQgb2YgYW4gQUNLIGJlaW5nIHJlY2VpdmVkLgotICAg
ICAgICAiIiIKLSAgICAgICAgaXNfYWNrX2VsaWNpdGluZyA9IEZhbHNlCi0gICAgICAgIGxhcmdl
c3RfYWNrZWQgPSBhY2tfcmFuZ2VzZXQuYm91bmRzKCkuc3RvcCAtIDEKLSAgICAgICAgbGFyZ2Vz
dF9uZXdseV9hY2tlZCA9IE5vbmUKLSAgICAgICAgbGFyZ2VzdF9zZW50X3RpbWUgPSBOb25lCi0K
LSAgICAgICAgaWYgbGFyZ2VzdF9hY2tlZCA+IHNwYWNlLmxhcmdlc3RfYWNrZWRfcGFja2V0Ogot
ICAgICAgICAgICAgc3BhY2UubGFyZ2VzdF9hY2tlZF9wYWNrZXQgPSBsYXJnZXN0X2Fja2VkCi0K
LSAgICAgICAgZm9yIHBhY2tldF9udW1iZXIgaW4gc29ydGVkKHNwYWNlLnNlbnRfcGFja2V0cy5r
ZXlzKCkpOgotICAgICAgICAgICAgaWYgcGFja2V0X251bWJlciA+IGxhcmdlc3RfYWNrZWQ6Ci0g
ICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGlmIHBhY2tldF9udW1iZXIgaW4gYWNr
X3Jhbmdlc2V0OgotICAgICAgICAgICAgICAgICMgcmVtb3ZlIHBhY2tldCBhbmQgdXBkYXRlIGNv
dW50ZXJzCi0gICAgICAgICAgICAgICAgcGFja2V0ID0gc3BhY2Uuc2VudF9wYWNrZXRzLnBvcChw
YWNrZXRfbnVtYmVyKQotICAgICAgICAgICAgICAgIGlmIHBhY2tldC5pc19hY2tfZWxpY2l0aW5n
OgotICAgICAgICAgICAgICAgICAgICBpc19hY2tfZWxpY2l0aW5nID0gVHJ1ZQotICAgICAgICAg
ICAgICAgICAgICBzcGFjZS5hY2tfZWxpY2l0aW5nX2luX2ZsaWdodCAtPSAxCi0gICAgICAgICAg
ICAgICAgaWYgcGFja2V0LmluX2ZsaWdodDoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2Mu
b25fcGFja2V0X2Fja2VkKHBhY2tldCkKLSAgICAgICAgICAgICAgICBsYXJnZXN0X25ld2x5X2Fj
a2VkID0gcGFja2V0X251bWJlcgotICAgICAgICAgICAgICAgIGxhcmdlc3Rfc2VudF90aW1lID0g
cGFja2V0LnNlbnRfdGltZQotCi0gICAgICAgICAgICAgICAgIyB0cmlnZ2VyIGNhbGxiYWNrcwot
ICAgICAgICAgICAgICAgIGZvciBoYW5kbGVyLCBhcmdzIGluIHBhY2tldC5kZWxpdmVyeV9oYW5k
bGVyczoKLSAgICAgICAgICAgICAgICAgICAgaGFuZGxlcihRdWljRGVsaXZlcnlTdGF0ZS5BQ0tF
RCwgKmFyZ3MpCi0KLSAgICAgICAgIyBub3RoaW5nIHRvIGRvIGlmIHRoZXJlIGFyZSBubyBuZXds
eSBhY2tlZCBwYWNrZXRzCi0gICAgICAgIGlmIGxhcmdlc3RfbmV3bHlfYWNrZWQgaXMgTm9uZToK
LSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIGlmIGxhcmdlc3RfYWNrZWQgPT0gbGFyZ2Vz
dF9uZXdseV9hY2tlZCBhbmQgaXNfYWNrX2VsaWNpdGluZzoKLSAgICAgICAgICAgIGxhdGVzdF9y
dHQgPSBub3cgLSBsYXJnZXN0X3NlbnRfdGltZQotICAgICAgICAgICAgbG9nX3J0dCA9IFRydWUK
LQotICAgICAgICAgICAgIyBsaW1pdCBBQ0sgZGVsYXkgdG8gbWF4X2Fja19kZWxheQotICAgICAg
ICAgICAgYWNrX2RlbGF5ID0gbWluKGFja19kZWxheSwgc2VsZi5tYXhfYWNrX2RlbGF5KQotCi0g
ICAgICAgICAgICAjIHVwZGF0ZSBSVFQgZXN0aW1hdGUsIHdoaWNoIGNhbm5vdCBiZSA8IDEgbXMK
LSAgICAgICAgICAgIHNlbGYuX3J0dF9sYXRlc3QgPSBtYXgobGF0ZXN0X3J0dCwgMC4wMDEpCi0g
ICAgICAgICAgICBpZiBzZWxmLl9ydHRfbGF0ZXN0IDwgc2VsZi5fcnR0X21pbjoKLSAgICAgICAg
ICAgICAgICBzZWxmLl9ydHRfbWluID0gc2VsZi5fcnR0X2xhdGVzdAotICAgICAgICAgICAgaWYg
c2VsZi5fcnR0X2xhdGVzdCA+IHNlbGYuX3J0dF9taW4gKyBhY2tfZGVsYXk6Ci0gICAgICAgICAg
ICAgICAgc2VsZi5fcnR0X2xhdGVzdCAtPSBhY2tfZGVsYXkKLQotICAgICAgICAgICAgaWYgbm90
IHNlbGYuX3J0dF9pbml0aWFsaXplZDoKLSAgICAgICAgICAgICAgICBzZWxmLl9ydHRfaW5pdGlh
bGl6ZWQgPSBUcnVlCi0gICAgICAgICAgICAgICAgc2VsZi5fcnR0X3ZhcmlhbmNlID0gbGF0ZXN0
X3J0dCAvIDIKLSAgICAgICAgICAgICAgICBzZWxmLl9ydHRfc21vb3RoZWQgPSBsYXRlc3RfcnR0
Ci0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuX3J0dF92YXJpYW5jZSA9
IDMgLyA0ICogc2VsZi5fcnR0X3ZhcmlhbmNlICsgMSAvIDQgKiBhYnMoCi0gICAgICAgICAgICAg
ICAgICAgIHNlbGYuX3J0dF9taW4gLSBzZWxmLl9ydHRfbGF0ZXN0Ci0gICAgICAgICAgICAgICAg
KQotICAgICAgICAgICAgICAgIHNlbGYuX3J0dF9zbW9vdGhlZCA9ICgKLSAgICAgICAgICAgICAg
ICAgICAgNyAvIDggKiBzZWxmLl9ydHRfc21vb3RoZWQgKyAxIC8gOCAqIHNlbGYuX3J0dF9sYXRl
c3QKLSAgICAgICAgICAgICAgICApCi0KLSAgICAgICAgICAgICMgaW5mb3JtIGNvbmdlc3Rpb24g
Y29udHJvbGxlcgotICAgICAgICAgICAgc2VsZi5fY2Mub25fcnR0X21lYXN1cmVtZW50KGxhdGVz
dF9ydHQsIG5vdz1ub3cpCi0gICAgICAgICAgICBzZWxmLl9wYWNlci51cGRhdGVfcmF0ZSgKLSAg
ICAgICAgICAgICAgICBjb25nZXN0aW9uX3dpbmRvdz1zZWxmLl9jYy5jb25nZXN0aW9uX3dpbmRv
dywKLSAgICAgICAgICAgICAgICBzbW9vdGhlZF9ydHQ9c2VsZi5fcnR0X3Ntb290aGVkLAotICAg
ICAgICAgICAgKQotCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBsb2dfcnR0ID0gRmFsc2UK
LQotICAgICAgICBzZWxmLl9kZXRlY3RfbG9zcyhzcGFjZSwgbm93PW5vdykKLQotICAgICAgICBp
ZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYuX2xvZ19t
ZXRyaWNzX3VwZGF0ZWQobG9nX3J0dD1sb2dfcnR0KQotCi0gICAgICAgIHNlbGYuX3B0b19jb3Vu
dCA9IDAKLQotICAgIGRlZiBvbl9sb3NzX2RldGVjdGlvbl90aW1lb3V0KHNlbGYsIG5vdzogZmxv
YXQpIC0+IE5vbmU6Ci0gICAgICAgIGxvc3Nfc3BhY2UgPSBzZWxmLmdldF9lYXJsaWVzdF9sb3Nz
X3NwYWNlKCkKLSAgICAgICAgaWYgbG9zc19zcGFjZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAg
IHNlbGYuX2RldGVjdF9sb3NzKGxvc3Nfc3BhY2UsIG5vdz1ub3cpCi0gICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICBzZWxmLl9wdG9fY291bnQgKz0gMQotCi0gICAgICAgICAgICAjIHJlc2NoZWR1
bGUgc29tZSBkYXRhCi0gICAgICAgICAgICBmb3Igc3BhY2UgaW4gc2VsZi5zcGFjZXM6Ci0gICAg
ICAgICAgICAgICAgc2VsZi5fb25fcGFja2V0c19sb3N0KAotICAgICAgICAgICAgICAgICAgICB0
dXBsZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcigKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBsYW1iZGEgaTogaS5pc19jcnlwdG9fcGFja2V0LCBzcGFjZS5zZW50X3BhY2tl
dHMudmFsdWVzKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAg
ICAgKSwKLSAgICAgICAgICAgICAgICAgICAgc3BhY2U9c3BhY2UsCi0gICAgICAgICAgICAgICAg
ICAgIG5vdz1ub3csCi0gICAgICAgICAgICAgICAgKQotCi0gICAgICAgICAgICBzZWxmLl9zZW5k
X3Byb2JlKCkKLQotICAgIGRlZiBvbl9wYWNrZXRfc2VudChzZWxmLCBwYWNrZXQ6IFF1aWNTZW50
UGFja2V0LCBzcGFjZTogUXVpY1BhY2tldFNwYWNlKSAtPiBOb25lOgotICAgICAgICBzcGFjZS5z
ZW50X3BhY2tldHNbcGFja2V0LnBhY2tldF9udW1iZXJdID0gcGFja2V0Ci0KLSAgICAgICAgaWYg
cGFja2V0LmlzX2Fja19lbGljaXRpbmc6Ci0gICAgICAgICAgICBzcGFjZS5hY2tfZWxpY2l0aW5n
X2luX2ZsaWdodCArPSAxCi0gICAgICAgIGlmIHBhY2tldC5pbl9mbGlnaHQ6Ci0gICAgICAgICAg
ICBpZiBwYWNrZXQuaXNfYWNrX2VsaWNpdGluZzoKLSAgICAgICAgICAgICAgICBzZWxmLl90aW1l
X29mX2xhc3Rfc2VudF9hY2tfZWxpY2l0aW5nX3BhY2tldCA9IHBhY2tldC5zZW50X3RpbWUKLQot
ICAgICAgICAgICAgIyBhZGQgcGFja2V0IHRvIGJ5dGVzIGluIGZsaWdodAotICAgICAgICAgICAg
c2VsZi5fY2Mub25fcGFja2V0X3NlbnQocGFja2V0KQotCi0gICAgICAgICAgICBpZiBzZWxmLl9x
dWljX2xvZ2dlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBzZWxmLl9sb2dfbWV0cmlj
c191cGRhdGVkKCkKLQotICAgIGRlZiBfZGV0ZWN0X2xvc3Moc2VsZiwgc3BhY2U6IFF1aWNQYWNr
ZXRTcGFjZSwgbm93OiBmbG9hdCkgLT4gTm9uZToKLSAgICAgICAgIiIiCi0gICAgICAgIENoZWNr
IHdoZXRoZXIgYW55IHBhY2tldHMgc2hvdWxkIGJlIGRlY2xhcmVkIGxvc3QuCi0gICAgICAgICIi
IgotICAgICAgICBsb3NzX2RlbGF5ID0gS19USU1FX1RIUkVTSE9MRCAqICgKLSAgICAgICAgICAg
IG1heChzZWxmLl9ydHRfbGF0ZXN0LCBzZWxmLl9ydHRfc21vb3RoZWQpCi0gICAgICAgICAgICBp
ZiBzZWxmLl9ydHRfaW5pdGlhbGl6ZWQKLSAgICAgICAgICAgIGVsc2UgS19JTklUSUFMX1JUVAot
ICAgICAgICApCi0gICAgICAgIHBhY2tldF90aHJlc2hvbGQgPSBzcGFjZS5sYXJnZXN0X2Fja2Vk
X3BhY2tldCAtIEtfUEFDS0VUX1RIUkVTSE9MRAotICAgICAgICB0aW1lX3RocmVzaG9sZCA9IG5v
dyAtIGxvc3NfZGVsYXkKLQotICAgICAgICBsb3N0X3BhY2tldHMgPSBbXQotICAgICAgICBzcGFj
ZS5sb3NzX3RpbWUgPSBOb25lCi0gICAgICAgIGZvciBwYWNrZXRfbnVtYmVyLCBwYWNrZXQgaW4g
c3BhY2Uuc2VudF9wYWNrZXRzLml0ZW1zKCk6Ci0gICAgICAgICAgICBpZiBwYWNrZXRfbnVtYmVy
ID4gc3BhY2UubGFyZ2VzdF9hY2tlZF9wYWNrZXQ6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLQot
ICAgICAgICAgICAgaWYgcGFja2V0X251bWJlciA8PSBwYWNrZXRfdGhyZXNob2xkIG9yIHBhY2tl
dC5zZW50X3RpbWUgPD0gdGltZV90aHJlc2hvbGQ6Ci0gICAgICAgICAgICAgICAgbG9zdF9wYWNr
ZXRzLmFwcGVuZChwYWNrZXQpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHBh
Y2tldF9sb3NzX3RpbWUgPSBwYWNrZXQuc2VudF90aW1lICsgbG9zc19kZWxheQotICAgICAgICAg
ICAgICAgIGlmIHNwYWNlLmxvc3NfdGltZSBpcyBOb25lIG9yIHNwYWNlLmxvc3NfdGltZSA+IHBh
Y2tldF9sb3NzX3RpbWU6Ci0gICAgICAgICAgICAgICAgICAgIHNwYWNlLmxvc3NfdGltZSA9IHBh
Y2tldF9sb3NzX3RpbWUKLQotICAgICAgICBzZWxmLl9vbl9wYWNrZXRzX2xvc3QobG9zdF9wYWNr
ZXRzLCBzcGFjZT1zcGFjZSwgbm93PW5vdykKLQotICAgIGRlZiBfbG9nX21ldHJpY3NfdXBkYXRl
ZChzZWxmLCBsb2dfcnR0PUZhbHNlKSAtPiBOb25lOgotICAgICAgICBkYXRhID0gewotICAgICAg
ICAgICAgImJ5dGVzX2luX2ZsaWdodCI6IHNlbGYuX2NjLmJ5dGVzX2luX2ZsaWdodCwKLSAgICAg
ICAgICAgICJjd25kIjogc2VsZi5fY2MuY29uZ2VzdGlvbl93aW5kb3csCi0gICAgICAgIH0KLSAg
ICAgICAgaWYgc2VsZi5fY2Muc3N0aHJlc2ggaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBkYXRh
WyJzc3RocmVzaCJdID0gc2VsZi5fY2Muc3N0aHJlc2gKLQotICAgICAgICBpZiBsb2dfcnR0Ogot
ICAgICAgICAgICAgZGF0YS51cGRhdGUoCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICAibGF0ZXN0X3J0dCI6IHNlbGYuX3F1aWNfbG9nZ2VyLmVuY29kZV90aW1lKHNlbGYu
X3J0dF9sYXRlc3QpLAotICAgICAgICAgICAgICAgICAgICAibWluX3J0dCI6IHNlbGYuX3F1aWNf
bG9nZ2VyLmVuY29kZV90aW1lKHNlbGYuX3J0dF9taW4pLAotICAgICAgICAgICAgICAgICAgICAi
c21vb3RoZWRfcnR0Ijogc2VsZi5fcXVpY19sb2dnZXIuZW5jb2RlX3RpbWUoc2VsZi5fcnR0X3Nt
b290aGVkKSwKLSAgICAgICAgICAgICAgICAgICAgInJ0dF92YXJpYW5jZSI6IHNlbGYuX3F1aWNf
bG9nZ2VyLmVuY29kZV90aW1lKHNlbGYuX3J0dF92YXJpYW5jZSksCi0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgKQotCi0gICAgICAgIHNlbGYuX3F1aWNfbG9nZ2VyLmxvZ19ldmVudCgK
LSAgICAgICAgICAgIGNhdGVnb3J5PSJyZWNvdmVyeSIsIGV2ZW50PSJtZXRyaWNzX3VwZGF0ZWQi
LCBkYXRhPWRhdGEKLSAgICAgICAgKQotCi0gICAgZGVmIF9vbl9wYWNrZXRzX2xvc3QoCi0gICAg
ICAgIHNlbGYsIHBhY2tldHM6IEl0ZXJhYmxlW1F1aWNTZW50UGFja2V0XSwgc3BhY2U6IFF1aWNQ
YWNrZXRTcGFjZSwgbm93OiBmbG9hdAotICAgICkgLT4gTm9uZToKLSAgICAgICAgbG9zdF9wYWNr
ZXRzX2NjID0gW10KLSAgICAgICAgZm9yIHBhY2tldCBpbiBwYWNrZXRzOgotICAgICAgICAgICAg
ZGVsIHNwYWNlLnNlbnRfcGFja2V0c1twYWNrZXQucGFja2V0X251bWJlcl0KLQotICAgICAgICAg
ICAgaWYgcGFja2V0LmluX2ZsaWdodDoKLSAgICAgICAgICAgICAgICBsb3N0X3BhY2tldHNfY2Mu
YXBwZW5kKHBhY2tldCkKLQotICAgICAgICAgICAgaWYgcGFja2V0LmlzX2Fja19lbGljaXRpbmc6
Ci0gICAgICAgICAgICAgICAgc3BhY2UuYWNrX2VsaWNpdGluZ19pbl9mbGlnaHQgLT0gMQotCi0g
ICAgICAgICAgICBpZiBzZWxmLl9xdWljX2xvZ2dlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAg
ICAgICBzZWxmLl9xdWljX2xvZ2dlci5sb2dfZXZlbnQoCi0gICAgICAgICAgICAgICAgICAgIGNh
dGVnb3J5PSJyZWNvdmVyeSIsCi0gICAgICAgICAgICAgICAgICAgIGV2ZW50PSJwYWNrZXRfbG9z
dCIsCi0gICAgICAgICAgICAgICAgICAgIGRhdGE9ewotICAgICAgICAgICAgICAgICAgICAgICAg
InR5cGUiOiBzZWxmLl9xdWljX2xvZ2dlci5wYWNrZXRfdHlwZShwYWNrZXQucGFja2V0X3R5cGUp
LAotICAgICAgICAgICAgICAgICAgICAgICAgInBhY2tldF9udW1iZXIiOiBzdHIocGFja2V0LnBh
Y2tldF9udW1iZXIpLAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICkK
LSAgICAgICAgICAgICAgICBzZWxmLl9sb2dfbWV0cmljc191cGRhdGVkKCkKLQotICAgICAgICAg
ICAgIyB0cmlnZ2VyIGNhbGxiYWNrcwotICAgICAgICAgICAgZm9yIGhhbmRsZXIsIGFyZ3MgaW4g
cGFja2V0LmRlbGl2ZXJ5X2hhbmRsZXJzOgotICAgICAgICAgICAgICAgIGhhbmRsZXIoUXVpY0Rl
bGl2ZXJ5U3RhdGUuTE9TVCwgKmFyZ3MpCi0KLSAgICAgICAgIyBpbmZvcm0gY29uZ2VzdGlvbiBj
b250cm9sbGVyCi0gICAgICAgIGlmIGxvc3RfcGFja2V0c19jYzoKLSAgICAgICAgICAgIHNlbGYu
X2NjLm9uX3BhY2tldHNfbG9zdChsb3N0X3BhY2tldHNfY2MsIG5vdz1ub3cpCi0gICAgICAgICAg
ICBzZWxmLl9wYWNlci51cGRhdGVfcmF0ZSgKLSAgICAgICAgICAgICAgICBjb25nZXN0aW9uX3dp
bmRvdz1zZWxmLl9jYy5jb25nZXN0aW9uX3dpbmRvdywKLSAgICAgICAgICAgICAgICBzbW9vdGhl
ZF9ydHQ9c2VsZi5fcnR0X3Ntb290aGVkLAotICAgICAgICAgICAgKQotICAgICAgICAgICAgaWYg
c2VsZi5fcXVpY19sb2dnZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbG9n
X21ldHJpY3NfdXBkYXRlZCgpCi0KLQotY2xhc3MgUXVpY1J0dE1vbml0b3I6Ci0gICAgIiIiCi0g
ICAgUm91bmR0cmlwIHRpbWUgbW9uaXRvciBmb3IgSHlTdGFydC4KLSAgICAiIiIKLQotICAgIGRl
ZiBfX2luaXRfXyhzZWxmKSAtPiBOb25lOgotICAgICAgICBzZWxmLl9pbmNyZWFzZXMgPSAwCi0g
ICAgICAgIHNlbGYuX2xhc3RfdGltZSA9IE5vbmUKLSAgICAgICAgc2VsZi5fcmVhZHkgPSBGYWxz
ZQotICAgICAgICBzZWxmLl9zaXplID0gNQotCi0gICAgICAgIHNlbGYuX2ZpbHRlcmVkX21pbjog
T3B0aW9uYWxbZmxvYXRdID0gTm9uZQotCi0gICAgICAgIHNlbGYuX3NhbXBsZV9pZHggPSAwCi0g
ICAgICAgIHNlbGYuX3NhbXBsZV9tYXg6IE9wdGlvbmFsW2Zsb2F0XSA9IE5vbmUKLSAgICAgICAg
c2VsZi5fc2FtcGxlX21pbjogT3B0aW9uYWxbZmxvYXRdID0gTm9uZQotICAgICAgICBzZWxmLl9z
YW1wbGVfdGltZSA9IDAuMAotICAgICAgICBzZWxmLl9zYW1wbGVzID0gWzAuMCBmb3IgaSBpbiBy
YW5nZShzZWxmLl9zaXplKV0KLQotICAgIGRlZiBhZGRfcnR0KHNlbGYsIHJ0dDogZmxvYXQpIC0+
IE5vbmU6Ci0gICAgICAgIHNlbGYuX3NhbXBsZXNbc2VsZi5fc2FtcGxlX2lkeF0gPSBydHQKLSAg
ICAgICAgc2VsZi5fc2FtcGxlX2lkeCArPSAxCi0KLSAgICAgICAgaWYgc2VsZi5fc2FtcGxlX2lk
eCA+PSBzZWxmLl9zaXplOgotICAgICAgICAgICAgc2VsZi5fc2FtcGxlX2lkeCA9IDAKLSAgICAg
ICAgICAgIHNlbGYuX3JlYWR5ID0gVHJ1ZQotCi0gICAgICAgIGlmIHNlbGYuX3JlYWR5OgotICAg
ICAgICAgICAgc2VsZi5fc2FtcGxlX21heCA9IHNlbGYuX3NhbXBsZXNbMF0KLSAgICAgICAgICAg
IHNlbGYuX3NhbXBsZV9taW4gPSBzZWxmLl9zYW1wbGVzWzBdCi0gICAgICAgICAgICBmb3Igc2Ft
cGxlIGluIHNlbGYuX3NhbXBsZXNbMTpdOgotICAgICAgICAgICAgICAgIGlmIHNhbXBsZSA8IHNl
bGYuX3NhbXBsZV9taW46Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3NhbXBsZV9taW4gPSBz
YW1wbGUKLSAgICAgICAgICAgICAgICBlbGlmIHNhbXBsZSA+IHNlbGYuX3NhbXBsZV9tYXg6Ci0g
ICAgICAgICAgICAgICAgICAgIHNlbGYuX3NhbXBsZV9tYXggPSBzYW1wbGUKLQotICAgIGRlZiBp
c19ydHRfaW5jcmVhc2luZyhzZWxmLCBydHQ6IGZsb2F0LCBub3c6IGZsb2F0KSAtPiBib29sOgot
ICAgICAgICBpZiBub3cgPiBzZWxmLl9zYW1wbGVfdGltZSArIEtfR1JBTlVMQVJJVFk6Ci0gICAg
ICAgICAgICBzZWxmLmFkZF9ydHQocnR0KQotICAgICAgICAgICAgc2VsZi5fc2FtcGxlX3RpbWUg
PSBub3cKLQotICAgICAgICAgICAgaWYgc2VsZi5fcmVhZHk6Ci0gICAgICAgICAgICAgICAgaWYg
c2VsZi5fZmlsdGVyZWRfbWluIGlzIE5vbmUgb3Igc2VsZi5fZmlsdGVyZWRfbWluID4gc2VsZi5f
c2FtcGxlX21heDoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fZmlsdGVyZWRfbWluID0gc2Vs
Zi5fc2FtcGxlX21heAotCi0gICAgICAgICAgICAgICAgZGVsdGEgPSBzZWxmLl9zYW1wbGVfbWlu
IC0gc2VsZi5fZmlsdGVyZWRfbWluCi0gICAgICAgICAgICAgICAgaWYgZGVsdGEgKiA0ID49IHNl
bGYuX2ZpbHRlcmVkX21pbjoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5faW5jcmVhc2VzICs9
IDEKLSAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5faW5jcmVhc2VzID49IHNlbGYuX3NpemU6
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICAgICAgICAgIGVs
aWYgZGVsdGEgPiAwOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbmNyZWFzZXMgPSAwCi0g
ICAgICAgIHJldHVybiBGYWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWlj
L3F1aWMvcmV0cnkucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9yZXRyeS5weQpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQ1YzNhNWM1NWM5YTM5NTg5Mzk4Yzk3Y2Vl
OTY1YzJiMzcwNjY1Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9yZXRyeS5weQorKysgL2Rldi9udWxs
CkBAIC0xLDM5ICswLDAgQEAKLWltcG9ydCBpcGFkZHJlc3MKLQotZnJvbSBjcnlwdG9ncmFwaHku
aGF6bWF0LmJhY2tlbmRzIGltcG9ydCBkZWZhdWx0X2JhY2tlbmQKLWZyb20gY3J5cHRvZ3JhcGh5
Lmhhem1hdC5wcmltaXRpdmVzIGltcG9ydCBoYXNoZXMKLWZyb20gY3J5cHRvZ3JhcGh5Lmhhem1h
dC5wcmltaXRpdmVzLmFzeW1tZXRyaWMgaW1wb3J0IHBhZGRpbmcsIHJzYQotCi1mcm9tIC5jb25u
ZWN0aW9uIGltcG9ydCBOZXR3b3JrQWRkcmVzcwotCi0KLWRlZiBlbmNvZGVfYWRkcmVzcyhhZGRy
OiBOZXR3b3JrQWRkcmVzcykgLT4gYnl0ZXM6Ci0gICAgcmV0dXJuIGlwYWRkcmVzcy5pcF9hZGRy
ZXNzKGFkZHJbMF0pLnBhY2tlZCArIGJ5dGVzKFthZGRyWzFdID4+IDgsIGFkZHJbMV0gJiAweEZG
XSkKLQotCi1jbGFzcyBRdWljUmV0cnlUb2tlbkhhbmRsZXI6Ci0gICAgZGVmIF9faW5pdF9fKHNl
bGYpIC0+IE5vbmU6Ci0gICAgICAgIHNlbGYuX2tleSA9IHJzYS5nZW5lcmF0ZV9wcml2YXRlX2tl
eSgKLSAgICAgICAgICAgIHB1YmxpY19leHBvbmVudD02NTUzNywga2V5X3NpemU9MTAyNCwgYmFj
a2VuZD1kZWZhdWx0X2JhY2tlbmQoKQotICAgICAgICApCi0KLSAgICBkZWYgY3JlYXRlX3Rva2Vu
KHNlbGYsIGFkZHI6IE5ldHdvcmtBZGRyZXNzLCBkZXN0aW5hdGlvbl9jaWQ6IGJ5dGVzKSAtPiBi
eXRlczoKLSAgICAgICAgcmV0cnlfbWVzc2FnZSA9IGVuY29kZV9hZGRyZXNzKGFkZHIpICsgYiJ8
IiArIGRlc3RpbmF0aW9uX2NpZAotICAgICAgICByZXR1cm4gc2VsZi5fa2V5LnB1YmxpY19rZXko
KS5lbmNyeXB0KAotICAgICAgICAgICAgcmV0cnlfbWVzc2FnZSwKLSAgICAgICAgICAgIHBhZGRp
bmcuT0FFUCgKLSAgICAgICAgICAgICAgICBtZ2Y9cGFkZGluZy5NR0YxKGhhc2hlcy5TSEEyNTYo
KSksIGFsZ29yaXRobT1oYXNoZXMuU0hBMjU2KCksIGxhYmVsPU5vbmUKLSAgICAgICAgICAgICks
Ci0gICAgICAgICkKLQotICAgIGRlZiB2YWxpZGF0ZV90b2tlbihzZWxmLCBhZGRyOiBOZXR3b3Jr
QWRkcmVzcywgdG9rZW46IGJ5dGVzKSAtPiBieXRlczoKLSAgICAgICAgcmV0cnlfbWVzc2FnZSA9
IHNlbGYuX2tleS5kZWNyeXB0KAotICAgICAgICAgICAgdG9rZW4sCi0gICAgICAgICAgICBwYWRk
aW5nLk9BRVAoCi0gICAgICAgICAgICAgICAgbWdmPXBhZGRpbmcuTUdGMShoYXNoZXMuU0hBMjU2
KCkpLCBhbGdvcml0aG09aGFzaGVzLlNIQTI1NigpLCBsYWJlbD1Ob25lCi0gICAgICAgICAgICAp
LAotICAgICAgICApCi0gICAgICAgIGVuY29kZWRfYWRkciwgb3JpZ2luYWxfY29ubmVjdGlvbl9p
ZCA9IHJldHJ5X21lc3NhZ2Uuc3BsaXQoYiJ8IiwgbWF4c3BsaXQ9MSkKLSAgICAgICAgaWYgZW5j
b2RlZF9hZGRyICE9IGVuY29kZV9hZGRyZXNzKGFkZHIpOgotICAgICAgICAgICAgcmFpc2UgVmFs
dWVFcnJvcigiUmVtb3RlIGFkZHJlc3MgZG9lcyBub3QgbWF0Y2guIikKLSAgICAgICAgcmV0dXJu
IG9yaWdpbmFsX2Nvbm5lY3Rpb25faWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlv
cXVpYy9xdWljL3N0cmVhbS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL3N0cmVh
bS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTYyMzY4NmY1ZDZiY2Q2ZjkwYjRl
NTNmMzcxNGYzYmY5YjZmNjE2Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9zdHJlYW0ucHkKKysrIC9k
ZXYvbnVsbApAQCAtMSwyMTQgKzAsMCBAQAotZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlvbmFsCi0K
LWZyb20gLiBpbXBvcnQgZXZlbnRzCi1mcm9tIC5wYWNrZXQgaW1wb3J0IFF1aWNTdHJlYW1GcmFt
ZQotZnJvbSAucGFja2V0X2J1aWxkZXIgaW1wb3J0IFF1aWNEZWxpdmVyeVN0YXRlCi1mcm9tIC5y
YW5nZXNldCBpbXBvcnQgUmFuZ2VTZXQKLQotCi1jbGFzcyBRdWljU3RyZWFtOgotICAgIGRlZiBf
X2luaXRfXygKLSAgICAgICAgc2VsZiwKLSAgICAgICAgc3RyZWFtX2lkOiBPcHRpb25hbFtpbnRd
ID0gTm9uZSwKLSAgICAgICAgbWF4X3N0cmVhbV9kYXRhX2xvY2FsOiBpbnQgPSAwLAotICAgICAg
ICBtYXhfc3RyZWFtX2RhdGFfcmVtb3RlOiBpbnQgPSAwLAotICAgICkgLT4gTm9uZToKLSAgICAg
ICAgc2VsZi5pc19ibG9ja2VkID0gRmFsc2UKLSAgICAgICAgc2VsZi5tYXhfc3RyZWFtX2RhdGFf
bG9jYWwgPSBtYXhfc3RyZWFtX2RhdGFfbG9jYWwKLSAgICAgICAgc2VsZi5tYXhfc3RyZWFtX2Rh
dGFfbG9jYWxfc2VudCA9IG1heF9zdHJlYW1fZGF0YV9sb2NhbAotICAgICAgICBzZWxmLm1heF9z
dHJlYW1fZGF0YV9yZW1vdGUgPSBtYXhfc3RyZWFtX2RhdGFfcmVtb3RlCi0gICAgICAgIHNlbGYu
c2VuZF9idWZmZXJfaXNfZW1wdHkgPSBUcnVlCi0KLSAgICAgICAgc2VsZi5fcmVjdl9idWZmZXIg
PSBieXRlYXJyYXkoKQotICAgICAgICBzZWxmLl9yZWN2X2J1ZmZlcl9maW46IE9wdGlvbmFsW2lu
dF0gPSBOb25lCi0gICAgICAgIHNlbGYuX3JlY3ZfYnVmZmVyX3N0YXJ0ID0gMCAgIyB0aGUgb2Zm
c2V0IGZvciB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlcgotICAgICAgICBzZWxmLl9yZWN2X2hpZ2hl
c3QgPSAwICAjIHRoZSBoaWdoZXN0IG9mZnNldCBldmVyIHNlZW4KLSAgICAgICAgc2VsZi5fcmVj
dl9yYW5nZXMgPSBSYW5nZVNldCgpCi0KLSAgICAgICAgc2VsZi5fc2VuZF9hY2tlZCA9IFJhbmdl
U2V0KCkKLSAgICAgICAgc2VsZi5fc2VuZF9idWZmZXIgPSBieXRlYXJyYXkoKQotICAgICAgICBz
ZWxmLl9zZW5kX2J1ZmZlcl9maW46IE9wdGlvbmFsW2ludF0gPSBOb25lCi0gICAgICAgIHNlbGYu
X3NlbmRfYnVmZmVyX3N0YXJ0ID0gMCAgIyB0aGUgb2Zmc2V0IGZvciB0aGUgc3RhcnQgb2YgdGhl
IGJ1ZmZlcgotICAgICAgICBzZWxmLl9zZW5kX2J1ZmZlcl9zdG9wID0gMCAgIyB0aGUgb2Zmc2V0
IGZvciB0aGUgc3RvcCBvZiB0aGUgYnVmZmVyCi0gICAgICAgIHNlbGYuX3NlbmRfaGlnaGVzdCA9
IDAKLSAgICAgICAgc2VsZi5fc2VuZF9wZW5kaW5nID0gUmFuZ2VTZXQoKQotICAgICAgICBzZWxm
Ll9zZW5kX3BlbmRpbmdfZW9mID0gRmFsc2UKLQotICAgICAgICBzZWxmLl9fc3RyZWFtX2lkID0g
c3RyZWFtX2lkCi0KLSAgICBAcHJvcGVydHkKLSAgICBkZWYgc3RyZWFtX2lkKHNlbGYpIC0+IE9w
dGlvbmFsW2ludF06Ci0gICAgICAgIHJldHVybiBzZWxmLl9fc3RyZWFtX2lkCi0KLSAgICAjIHJl
YWRlcgotCi0gICAgZGVmIGFkZF9mcmFtZShzZWxmLCBmcmFtZTogUXVpY1N0cmVhbUZyYW1lKSAt
PiBPcHRpb25hbFtldmVudHMuU3RyZWFtRGF0YVJlY2VpdmVkXToKLSAgICAgICAgIiIiCi0gICAg
ICAgIEFkZCBhIGZyYW1lIG9mIHJlY2VpdmVkIGRhdGEuCi0gICAgICAgICIiIgotICAgICAgICBw
b3MgPSBmcmFtZS5vZmZzZXQgLSBzZWxmLl9yZWN2X2J1ZmZlcl9zdGFydAotICAgICAgICBjb3Vu
dCA9IGxlbihmcmFtZS5kYXRhKQotICAgICAgICBmcmFtZV9lbmQgPSBmcmFtZS5vZmZzZXQgKyBj
b3VudAotCi0gICAgICAgICMgd2Ugc2hvdWxkIHJlY2VpdmUgbm8gbW9yZSBkYXRhIGJleW9uZCBG
SU4hCi0gICAgICAgIGlmIHNlbGYuX3JlY3ZfYnVmZmVyX2ZpbiBpcyBub3QgTm9uZSBhbmQgZnJh
bWVfZW5kID4gc2VsZi5fcmVjdl9idWZmZXJfZmluOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0
aW9uKCJEYXRhIHJlY2VpdmVkIGJleW9uZCBGSU4iKQotICAgICAgICBpZiBmcmFtZS5maW46Ci0g
ICAgICAgICAgICBzZWxmLl9yZWN2X2J1ZmZlcl9maW4gPSBmcmFtZV9lbmQKLSAgICAgICAgaWYg
ZnJhbWVfZW5kID4gc2VsZi5fcmVjdl9oaWdoZXN0OgotICAgICAgICAgICAgc2VsZi5fcmVjdl9o
aWdoZXN0ID0gZnJhbWVfZW5kCi0KLSAgICAgICAgIyBmYXN0IHBhdGg6IG5ldyBpbi1vcmRlciBj
aHVuawotICAgICAgICBpZiBwb3MgPT0gMCBhbmQgY291bnQgYW5kIG5vdCBzZWxmLl9yZWN2X2J1
ZmZlcjoKLSAgICAgICAgICAgIHNlbGYuX3JlY3ZfYnVmZmVyX3N0YXJ0ICs9IGNvdW50Ci0gICAg
ICAgICAgICByZXR1cm4gZXZlbnRzLlN0cmVhbURhdGFSZWNlaXZlZCgKLSAgICAgICAgICAgICAg
ICBkYXRhPWZyYW1lLmRhdGEsIGVuZF9zdHJlYW09ZnJhbWUuZmluLCBzdHJlYW1faWQ9c2VsZi5f
X3N0cmVhbV9pZAotICAgICAgICAgICAgKQotCi0gICAgICAgICMgZGlzY2FyZCBkdXBsaWNhdGUg
ZGF0YQotICAgICAgICBpZiBwb3MgPCAwOgotICAgICAgICAgICAgZnJhbWUuZGF0YSA9IGZyYW1l
LmRhdGFbLXBvczpdCi0gICAgICAgICAgICBmcmFtZS5vZmZzZXQgLT0gcG9zCi0gICAgICAgICAg
ICBwb3MgPSAwCi0KLSAgICAgICAgIyBtYXJrZWQgcmVjZWl2ZWQgcmFuZ2UKLSAgICAgICAgaWYg
ZnJhbWVfZW5kID4gZnJhbWUub2Zmc2V0OgotICAgICAgICAgICAgc2VsZi5fcmVjdl9yYW5nZXMu
YWRkKGZyYW1lLm9mZnNldCwgZnJhbWVfZW5kKQotCi0gICAgICAgICMgYWRkIG5ldyBkYXRhCi0g
ICAgICAgIGdhcCA9IHBvcyAtIGxlbihzZWxmLl9yZWN2X2J1ZmZlcikKLSAgICAgICAgaWYgZ2Fw
ID4gMDoKLSAgICAgICAgICAgIHNlbGYuX3JlY3ZfYnVmZmVyICs9IGJ5dGVhcnJheShnYXApCi0g
ICAgICAgIHNlbGYuX3JlY3ZfYnVmZmVyW3BvcyA6IHBvcyArIGNvdW50XSA9IGZyYW1lLmRhdGEK
LQotICAgICAgICAjIHJldHVybiBkYXRhIGZyb20gdGhlIGZyb250IG9mIHRoZSBidWZmZXIKLSAg
ICAgICAgZGF0YSA9IHNlbGYuX3B1bGxfZGF0YSgpCi0gICAgICAgIGVuZF9zdHJlYW0gPSBzZWxm
Ll9yZWN2X2J1ZmZlcl9zdGFydCA9PSBzZWxmLl9yZWN2X2J1ZmZlcl9maW4KLSAgICAgICAgaWYg
ZGF0YSBvciBlbmRfc3RyZWFtOgotICAgICAgICAgICAgcmV0dXJuIGV2ZW50cy5TdHJlYW1EYXRh
UmVjZWl2ZWQoCi0gICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBlbmRfc3RyZWFtPWVuZF9zdHJl
YW0sIHN0cmVhbV9pZD1zZWxmLl9fc3RyZWFtX2lkCi0gICAgICAgICAgICApCi0gICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgZGVmIF9wdWxsX2RhdGEoc2VsZikg
LT4gYnl0ZXM6Ci0gICAgICAgICIiIgotICAgICAgICBSZW1vdmUgZGF0YSBmcm9tIHRoZSBmcm9u
dCBvZiB0aGUgYnVmZmVyLgotICAgICAgICAiIiIKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAg
aGFzX2RhdGFfdG9fcmVhZCA9IHNlbGYuX3JlY3ZfcmFuZ2VzWzBdLnN0YXJ0ID09IHNlbGYuX3Jl
Y3ZfYnVmZmVyX3N0YXJ0Ci0gICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgotICAgICAgICAgICAg
aGFzX2RhdGFfdG9fcmVhZCA9IEZhbHNlCi0gICAgICAgIGlmIG5vdCBoYXNfZGF0YV90b19yZWFk
OgotICAgICAgICAgICAgcmV0dXJuIGIiIgotCi0gICAgICAgIHIgPSBzZWxmLl9yZWN2X3Jhbmdl
cy5zaGlmdCgpCi0gICAgICAgIHBvcyA9IHIuc3RvcCAtIHIuc3RhcnQKLSAgICAgICAgZGF0YSA9
IGJ5dGVzKHNlbGYuX3JlY3ZfYnVmZmVyWzpwb3NdKQotICAgICAgICBkZWwgc2VsZi5fcmVjdl9i
dWZmZXJbOnBvc10KLSAgICAgICAgc2VsZi5fcmVjdl9idWZmZXJfc3RhcnQgPSByLnN0b3AKLSAg
ICAgICAgcmV0dXJuIGRhdGEKLQotICAgICMgd3JpdGVyCi0KLSAgICBAcHJvcGVydHkKLSAgICBk
ZWYgbmV4dF9zZW5kX29mZnNldChzZWxmKSAtPiBpbnQ6Ci0gICAgICAgICIiIgotICAgICAgICBU
aGUgb2Zmc2V0IGZvciB0aGUgbmV4dCBmcmFtZSB0byBzZW5kLgotCi0gICAgICAgIFRoaXMgaXMg
dXNlZCB0byBkZXRlcm1pbmUgdGhlIHNwYWNlIG5lZWRlZCBmb3IgdGhlIGZyYW1lJ3MgYG9mZnNl
dGAgZmllbGQuCi0gICAgICAgICIiIgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4g
c2VsZi5fc2VuZF9wZW5kaW5nWzBdLnN0YXJ0Ci0gICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgot
ICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NlbmRfYnVmZmVyX3N0b3AKLQotICAgIGRlZiBnZXRf
ZnJhbWUoCi0gICAgICAgIHNlbGYsIG1heF9zaXplOiBpbnQsIG1heF9vZmZzZXQ6IE9wdGlvbmFs
W2ludF0gPSBOb25lCi0gICAgKSAtPiBPcHRpb25hbFtRdWljU3RyZWFtRnJhbWVdOgotICAgICAg
ICAiIiIKLSAgICAgICAgR2V0IGEgZnJhbWUgb2YgZGF0YSB0byBzZW5kLgotICAgICAgICAiIiIK
LSAgICAgICAgIyBnZXQgdGhlIGZpcnN0IHBlbmRpbmcgZGF0YSByYW5nZQotICAgICAgICB0cnk6
Ci0gICAgICAgICAgICByID0gc2VsZi5fc2VuZF9wZW5kaW5nWzBdCi0gICAgICAgIGV4Y2VwdCBJ
bmRleEVycm9yOgotICAgICAgICAgICAgaWYgc2VsZi5fc2VuZF9wZW5kaW5nX2VvZjoKLSAgICAg
ICAgICAgICAgICAjIEZJTiBvbmx5Ci0gICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9wZW5kaW5n
X2VvZiA9IEZhbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIFF1aWNTdHJlYW1GcmFtZShmaW49
VHJ1ZSwgb2Zmc2V0PXNlbGYuX3NlbmRfYnVmZmVyX2ZpbikKLQotICAgICAgICAgICAgc2VsZi5z
ZW5kX2J1ZmZlcl9pc19lbXB0eSA9IFRydWUKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAg
ICAgICAgIyBhcHBseSBmbG93IGNvbnRyb2wKLSAgICAgICAgc3RhcnQgPSByLnN0YXJ0Ci0gICAg
ICAgIHN0b3AgPSBtaW4oci5zdG9wLCBzdGFydCArIG1heF9zaXplKQotICAgICAgICBpZiBtYXhf
b2Zmc2V0IGlzIG5vdCBOb25lIGFuZCBzdG9wID4gbWF4X29mZnNldDoKLSAgICAgICAgICAgIHN0
b3AgPSBtYXhfb2Zmc2V0Ci0gICAgICAgIGlmIHN0b3AgPD0gc3RhcnQ6Ci0gICAgICAgICAgICBy
ZXR1cm4gTm9uZQotCi0gICAgICAgICMgY3JlYXRlIGZyYW1lCi0gICAgICAgIGZyYW1lID0gUXVp
Y1N0cmVhbUZyYW1lKAotICAgICAgICAgICAgZGF0YT1ieXRlcygKLSAgICAgICAgICAgICAgICBz
ZWxmLl9zZW5kX2J1ZmZlclsKLSAgICAgICAgICAgICAgICAgICAgc3RhcnQgLSBzZWxmLl9zZW5k
X2J1ZmZlcl9zdGFydCA6IHN0b3AgLSBzZWxmLl9zZW5kX2J1ZmZlcl9zdGFydAotICAgICAgICAg
ICAgICAgIF0KLSAgICAgICAgICAgICksCi0gICAgICAgICAgICBvZmZzZXQ9c3RhcnQsCi0gICAg
ICAgICkKLSAgICAgICAgc2VsZi5fc2VuZF9wZW5kaW5nLnN1YnRyYWN0KHN0YXJ0LCBzdG9wKQot
Ci0gICAgICAgICMgdHJhY2sgdGhlIGhpZ2hlc3Qgb2Zmc2V0IGV2ZXIgc2VudAotICAgICAgICBp
ZiBzdG9wID4gc2VsZi5fc2VuZF9oaWdoZXN0OgotICAgICAgICAgICAgc2VsZi5fc2VuZF9oaWdo
ZXN0ID0gc3RvcAotCi0gICAgICAgICMgaWYgdGhlIGJ1ZmZlciBpcyBlbXB0eSBhbmQgRU9GIHdh
cyB3cml0dGVuLCBzZXQgdGhlIEZJTiBiaXQKLSAgICAgICAgaWYgc2VsZi5fc2VuZF9idWZmZXJf
ZmluID09IHN0b3A6Ci0gICAgICAgICAgICBmcmFtZS5maW4gPSBUcnVlCi0gICAgICAgICAgICBz
ZWxmLl9zZW5kX3BlbmRpbmdfZW9mID0gRmFsc2UKLQotICAgICAgICByZXR1cm4gZnJhbWUKLQot
ICAgIGRlZiBvbl9kYXRhX2RlbGl2ZXJ5KAotICAgICAgICBzZWxmLCBkZWxpdmVyeTogUXVpY0Rl
bGl2ZXJ5U3RhdGUsIHN0YXJ0OiBpbnQsIHN0b3A6IGludAotICAgICkgLT4gTm9uZToKLSAgICAg
ICAgIiIiCi0gICAgICAgIENhbGxiYWNrIHdoZW4gc2VudCBkYXRhIGlzIEFDSydkLgotICAgICAg
ICAiIiIKLSAgICAgICAgc2VsZi5zZW5kX2J1ZmZlcl9pc19lbXB0eSA9IEZhbHNlCi0gICAgICAg
IGlmIGRlbGl2ZXJ5ID09IFF1aWNEZWxpdmVyeVN0YXRlLkFDS0VEOgotICAgICAgICAgICAgaWYg
c3RvcCA+IHN0YXJ0OgotICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfYWNrZWQuYWRkKHN0YXJ0
LCBzdG9wKQotICAgICAgICAgICAgICAgIGZpcnN0X3JhbmdlID0gc2VsZi5fc2VuZF9hY2tlZFsw
XQotICAgICAgICAgICAgICAgIGlmIGZpcnN0X3JhbmdlLnN0YXJ0ID09IHNlbGYuX3NlbmRfYnVm
ZmVyX3N0YXJ0OgotICAgICAgICAgICAgICAgICAgICBzaXplID0gZmlyc3RfcmFuZ2Uuc3RvcCAt
IGZpcnN0X3JhbmdlLnN0YXJ0Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfYWNrZWQu
c2hpZnQoKQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX2J1ZmZlcl9zdGFydCArPSBz
aXplCi0gICAgICAgICAgICAgICAgICAgIGRlbCBzZWxmLl9zZW5kX2J1ZmZlcls6c2l6ZV0KLSAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIHN0b3AgPiBzdGFydDoKLSAgICAgICAgICAgICAg
ICBzZWxmLl9zZW5kX3BlbmRpbmcuYWRkKHN0YXJ0LCBzdG9wKQotICAgICAgICAgICAgaWYgc3Rv
cCA9PSBzZWxmLl9zZW5kX2J1ZmZlcl9maW46Ci0gICAgICAgICAgICAgICAgc2VsZi5zZW5kX2J1
ZmZlcl9lbXB0eSA9IEZhbHNlCi0gICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9wZW5kaW5nX2Vv
ZiA9IFRydWUKLQotICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhOiBieXRlcywgZW5kX3N0cmVhbTog
Ym9vbCA9IEZhbHNlKSAtPiBOb25lOgotICAgICAgICAiIiIKLSAgICAgICAgV3JpdGUgc29tZSBk
YXRhIGJ5dGVzIHRvIHRoZSBRVUlDIHN0cmVhbS4KLSAgICAgICAgIiIiCi0gICAgICAgIGFzc2Vy
dCBzZWxmLl9zZW5kX2J1ZmZlcl9maW4gaXMgTm9uZSwgImNhbm5vdCBjYWxsIHdyaXRlKCkgYWZ0
ZXIgRklOIgotICAgICAgICBzaXplID0gbGVuKGRhdGEpCi0KLSAgICAgICAgaWYgc2l6ZToKLSAg
ICAgICAgICAgIHNlbGYuc2VuZF9idWZmZXJfaXNfZW1wdHkgPSBGYWxzZQotICAgICAgICAgICAg
c2VsZi5fc2VuZF9wZW5kaW5nLmFkZCgKLSAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX2J1ZmZl
cl9zdG9wLCBzZWxmLl9zZW5kX2J1ZmZlcl9zdG9wICsgc2l6ZQotICAgICAgICAgICAgKQotICAg
ICAgICAgICAgc2VsZi5fc2VuZF9idWZmZXIgKz0gZGF0YQotICAgICAgICAgICAgc2VsZi5fc2Vu
ZF9idWZmZXJfc3RvcCArPSBzaXplCi0gICAgICAgIGlmIGVuZF9zdHJlYW06Ci0gICAgICAgICAg
ICBzZWxmLnNlbmRfYnVmZmVyX2lzX2VtcHR5ID0gRmFsc2UKLSAgICAgICAgICAgIHNlbGYuX3Nl
bmRfYnVmZmVyX2ZpbiA9IHNlbGYuX3NlbmRfYnVmZmVyX3N0b3AKLSAgICAgICAgICAgIHNlbGYu
X3NlbmRfcGVuZGluZ19lb2YgPSBUcnVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fp
b3F1aWMvcXVpYy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWlj
L3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OGI4YzI2ZmE0
YzYwNmUxZGFhMDA0NGYwYmZlZGRkMmRmMjJiMjY0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL3czYy1p
bXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotVGhlIHRlc3RzIGluIHRo
aXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBO
T1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0
ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20v
d2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBv
cnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJl
bW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcg
dmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3NyYy9haW9xdWljL3F1aWMvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fp
b3F1aWMvcXVpYy9jb25maWd1cmF0aW9uLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1
aWMvY29ubmVjdGlvbi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL2NyeXB0by5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL2V2ZW50cy5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVp
Yy9zcmMvYWlvcXVpYy9xdWljL2xvZ2dlci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9x
dWljL3BhY2tldC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVpYy9xdWljL3BhY2tldF9idWls
ZGVyLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvcmFuZ2VzZXQucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvcXVpYy9yZWNvdmVyeS5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMv
YWlvcXVpYy9xdWljL3JldHJ5LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3F1aWMvc3Ry
ZWFtLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvdGxzLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3NyYy9haW9xdWljL3Rscy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggOTRiMTBjYmJhNWQ5MGViMmNmZTllMmJhMzE2YTQzN2ZkNzc4NGY0Ni4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1
aWMvdGxzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTkyNiArMCwwIEBACi1pbXBvcnQgZGF0ZXRp
bWUKLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgb3MKLWltcG9ydCBzc2wKLWltcG9ydCBzdHJ1Y3QK
LWZyb20gY29udGV4dGxpYiBpbXBvcnQgY29udGV4dG1hbmFnZXIKLWZyb20gZGF0YWNsYXNzZXMg
aW1wb3J0IGRhdGFjbGFzcywgZmllbGQKLWZyb20gZW51bSBpbXBvcnQgRW51bSwgSW50RW51bQot
ZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHBhcnRpYWwKLWZyb20gdHlwaW5nIGltcG9ydCAoCi0gICAg
QW55LAotICAgIENhbGxhYmxlLAotICAgIERpY3QsCi0gICAgR2VuZXJhdG9yLAotICAgIExpc3Qs
Ci0gICAgT3B0aW9uYWwsCi0gICAgU2VxdWVuY2UsCi0gICAgVHVwbGUsCi0gICAgVHlwZVZhciwK
LSAgICBVbmlvbiwKLSkKLQotaW1wb3J0IGNlcnRpZmkKLWZyb20gY3J5cHRvZ3JhcGh5IGltcG9y
dCB4NTA5Ci1mcm9tIGNyeXB0b2dyYXBoeS5leGNlcHRpb25zIGltcG9ydCBJbnZhbGlkU2lnbmF0
dXJlCi1mcm9tIGNyeXB0b2dyYXBoeS5oYXptYXQuYmFja2VuZHMgaW1wb3J0IGRlZmF1bHRfYmFj
a2VuZAotZnJvbSBjcnlwdG9ncmFwaHkuaGF6bWF0LmJpbmRpbmdzLm9wZW5zc2wuYmluZGluZyBp
bXBvcnQgQmluZGluZwotZnJvbSBjcnlwdG9ncmFwaHkuaGF6bWF0LnByaW1pdGl2ZXMgaW1wb3J0
IGhhc2hlcywgaG1hYywgc2VyaWFsaXphdGlvbgotZnJvbSBjcnlwdG9ncmFwaHkuaGF6bWF0LnBy
aW1pdGl2ZXMuYXN5bW1ldHJpYyBpbXBvcnQgKAotICAgIGRzYSwKLSAgICBlYywKLSAgICBwYWRk
aW5nLAotICAgIHJzYSwKLSAgICB4NDQ4LAotICAgIHgyNTUxOSwKLSkKLWZyb20gY3J5cHRvZ3Jh
cGh5Lmhhem1hdC5wcmltaXRpdmVzLmtkZi5oa2RmIGltcG9ydCBIS0RGRXhwYW5kCi1mcm9tIGNy
eXB0b2dyYXBoeS5oYXptYXQucHJpbWl0aXZlcy5zZXJpYWxpemF0aW9uIGltcG9ydCBFbmNvZGlu
ZywgUHVibGljRm9ybWF0Ci0KLWZyb20gLmJ1ZmZlciBpbXBvcnQgQnVmZmVyCi0KLWJpbmRpbmcg
PSBCaW5kaW5nKCkKLWJpbmRpbmcuaW5pdF9zdGF0aWNfbG9ja3MoKQotZmZpID0gYmluZGluZy5m
ZmkKLWxpYiA9IGJpbmRpbmcubGliCi0KLVRMU19WRVJTSU9OXzFfMiA9IDB4MDMwMwotVExTX1ZF
UlNJT05fMV8zID0gMHgwMzA0Ci1UTFNfVkVSU0lPTl8xXzNfRFJBRlRfMjggPSAweDdGMUMKLVRM
U19WRVJTSU9OXzFfM19EUkFGVF8yNyA9IDB4N0YxQgotVExTX1ZFUlNJT05fMV8zX0RSQUZUXzI2
ID0gMHg3RjFBCi0KLVQgPSBUeXBlVmFyKCJUIikKLQotIyBmYWNpbGl0YXRlIG1vY2tpbmcgZm9y
IHRoZSB0ZXN0IHN1aXRlCi11dGNub3cgPSBkYXRldGltZS5kYXRldGltZS51dGNub3cKLQotCi1j
bGFzcyBBbGVydERlc2NyaXB0aW9uKEludEVudW0pOgotICAgIGNsb3NlX25vdGlmeSA9IDAKLSAg
ICB1bmV4cGVjdGVkX21lc3NhZ2UgPSAxMAotICAgIGJhZF9yZWNvcmRfbWFjID0gMjAKLSAgICBy
ZWNvcmRfb3ZlcmZsb3cgPSAyMgotICAgIGhhbmRzaGFrZV9mYWlsdXJlID0gNDAKLSAgICBiYWRf
Y2VydGlmaWNhdGUgPSA0MgotICAgIHVuc3VwcG9ydGVkX2NlcnRpZmljYXRlID0gNDMKLSAgICBj
ZXJ0aWZpY2F0ZV9yZXZva2VkID0gNDQKLSAgICBjZXJ0aWZpY2F0ZV9leHBpcmVkID0gNDUKLSAg
ICBjZXJ0aWZpY2F0ZV91bmtub3duID0gNDYKLSAgICBpbGxlZ2FsX3BhcmFtZXRlciA9IDQ3Ci0g
ICAgdW5rbm93bl9jYSA9IDQ4Ci0gICAgYWNjZXNzX2RlbmllZCA9IDQ5Ci0gICAgZGVjb2RlX2Vy
cm9yID0gNTAKLSAgICBkZWNyeXB0X2Vycm9yID0gNTEKLSAgICBwcm90b2NvbF92ZXJzaW9uID0g
NzAKLSAgICBpbnN1ZmZpY2llbnRfc2VjdXJpdHkgPSA3MQotICAgIGludGVybmFsX2Vycm9yID0g
ODAKLSAgICBpbmFwcHJvcHJpYXRlX2ZhbGxiYWNrID0gODYKLSAgICB1c2VyX2NhbmNlbGVkID0g
OTAKLSAgICBtaXNzaW5nX2V4dGVuc2lvbiA9IDEwOQotICAgIHVuc3VwcG9ydGVkX2V4dGVuc2lv
biA9IDExMAotICAgIHVucmVjb2duaXplZF9uYW1lID0gMTEyCi0gICAgYmFkX2NlcnRpZmljYXRl
X3N0YXR1c19yZXNwb25zZSA9IDExMwotICAgIHVua25vd25fcHNrX2lkZW50aXR5ID0gMTE1Ci0g
ICAgY2VydGlmaWNhdGVfcmVxdWlyZWQgPSAxMTYKLSAgICBub19hcHBsaWNhdGlvbl9wcm90b2Nv
bCA9IDEyMAotCi0KLWNsYXNzIEFsZXJ0KEV4Y2VwdGlvbik6Ci0gICAgZGVzY3JpcHRpb246IEFs
ZXJ0RGVzY3JpcHRpb24KLQotCi1jbGFzcyBBbGVydEJhZENlcnRpZmljYXRlKEFsZXJ0KToKLSAg
ICBkZXNjcmlwdGlvbiA9IEFsZXJ0RGVzY3JpcHRpb24uYmFkX2NlcnRpZmljYXRlCi0KLQotY2xh
c3MgQWxlcnRDZXJ0aWZpY2F0ZUV4cGlyZWQoQWxlcnQpOgotICAgIGRlc2NyaXB0aW9uID0gQWxl
cnREZXNjcmlwdGlvbi5jZXJ0aWZpY2F0ZV9leHBpcmVkCi0KLQotY2xhc3MgQWxlcnREZWNyeXB0
RXJyb3IoQWxlcnQpOgotICAgIGRlc2NyaXB0aW9uID0gQWxlcnREZXNjcmlwdGlvbi5kZWNyeXB0
X2Vycm9yCi0KLQotY2xhc3MgQWxlcnRIYW5kc2hha2VGYWlsdXJlKEFsZXJ0KToKLSAgICBkZXNj
cmlwdGlvbiA9IEFsZXJ0RGVzY3JpcHRpb24uaGFuZHNoYWtlX2ZhaWx1cmUKLQotCi1jbGFzcyBB
bGVydElsbGVnYWxQYXJhbWV0ZXIoQWxlcnQpOgotICAgIGRlc2NyaXB0aW9uID0gQWxlcnREZXNj
cmlwdGlvbi5pbGxlZ2FsX3BhcmFtZXRlcgotCi0KLWNsYXNzIEFsZXJ0SW50ZXJuYWxFcnJvcihB
bGVydCk6Ci0gICAgZGVzY3JpcHRpb24gPSBBbGVydERlc2NyaXB0aW9uLmludGVybmFsX2Vycm9y
Ci0KLQotY2xhc3MgQWxlcnRQcm90b2NvbFZlcnNpb24oQWxlcnQpOgotICAgIGRlc2NyaXB0aW9u
ID0gQWxlcnREZXNjcmlwdGlvbi5wcm90b2NvbF92ZXJzaW9uCi0KLQotY2xhc3MgQWxlcnRVbmV4
cGVjdGVkTWVzc2FnZShBbGVydCk6Ci0gICAgZGVzY3JpcHRpb24gPSBBbGVydERlc2NyaXB0aW9u
LnVuZXhwZWN0ZWRfbWVzc2FnZQotCi0KLWNsYXNzIERpcmVjdGlvbihFbnVtKToKLSAgICBERUNS
WVBUID0gMAotICAgIEVOQ1JZUFQgPSAxCi0KLQotY2xhc3MgRXBvY2goRW51bSk6Ci0gICAgSU5J
VElBTCA9IDAKLSAgICBaRVJPX1JUVCA9IDEKLSAgICBIQU5EU0hBS0UgPSAyCi0gICAgT05FX1JU
VCA9IDMKLQotCi1jbGFzcyBTdGF0ZShFbnVtKToKLSAgICBDTElFTlRfSEFORFNIQUtFX1NUQVJU
ID0gMAotICAgIENMSUVOVF9FWFBFQ1RfU0VSVkVSX0hFTExPID0gMQotICAgIENMSUVOVF9FWFBF
Q1RfRU5DUllQVEVEX0VYVEVOU0lPTlMgPSAyCi0gICAgQ0xJRU5UX0VYUEVDVF9DRVJUSUZJQ0FU
RV9SRVFVRVNUX09SX0NFUlRJRklDQVRFID0gMwotICAgIENMSUVOVF9FWFBFQ1RfQ0VSVElGSUNB
VEVfQ0VSVElGSUNBVEUgPSA0Ci0gICAgQ0xJRU5UX0VYUEVDVF9DRVJUSUZJQ0FURV9WRVJJRlkg
PSA1Ci0gICAgQ0xJRU5UX0VYUEVDVF9GSU5JU0hFRCA9IDYKLSAgICBDTElFTlRfUE9TVF9IQU5E
U0hBS0UgPSA3Ci0KLSAgICBTRVJWRVJfRVhQRUNUX0NMSUVOVF9IRUxMTyA9IDgKLSAgICBTRVJW
RVJfRVhQRUNUX0ZJTklTSEVEID0gOQotICAgIFNFUlZFUl9QT1NUX0hBTkRTSEFLRSA9IDEwCi0K
LQotZGVmIGhrZGZfbGFiZWwobGFiZWw6IGJ5dGVzLCBoYXNoX3ZhbHVlOiBieXRlcywgbGVuZ3Ro
OiBpbnQpIC0+IGJ5dGVzOgotICAgIGZ1bGxfbGFiZWwgPSBiInRsczEzICIgKyBsYWJlbAotICAg
IHJldHVybiAoCi0gICAgICAgIHN0cnVjdC5wYWNrKCIhSEIiLCBsZW5ndGgsIGxlbihmdWxsX2xh
YmVsKSkKLSAgICAgICAgKyBmdWxsX2xhYmVsCi0gICAgICAgICsgc3RydWN0LnBhY2soIiFCIiwg
bGVuKGhhc2hfdmFsdWUpKQotICAgICAgICArIGhhc2hfdmFsdWUKLSAgICApCi0KLQotZGVmIGhr
ZGZfZXhwYW5kX2xhYmVsKAotICAgIGFsZ29yaXRobTogaGFzaGVzLkhhc2hBbGdvcml0aG0sCi0g
ICAgc2VjcmV0OiBieXRlcywKLSAgICBsYWJlbDogYnl0ZXMsCi0gICAgaGFzaF92YWx1ZTogYnl0
ZXMsCi0gICAgbGVuZ3RoOiBpbnQsCi0pIC0+IGJ5dGVzOgotICAgIHJldHVybiBIS0RGRXhwYW5k
KAotICAgICAgICBhbGdvcml0aG09YWxnb3JpdGhtLAotICAgICAgICBsZW5ndGg9bGVuZ3RoLAot
ICAgICAgICBpbmZvPWhrZGZfbGFiZWwobGFiZWwsIGhhc2hfdmFsdWUsIGxlbmd0aCksCi0gICAg
ICAgIGJhY2tlbmQ9ZGVmYXVsdF9iYWNrZW5kKCksCi0gICAgKS5kZXJpdmUoc2VjcmV0KQotCi0K
LWRlZiBoa2RmX2V4dHJhY3QoCi0gICAgYWxnb3JpdGhtOiBoYXNoZXMuSGFzaEFsZ29yaXRobSwg
c2FsdDogYnl0ZXMsIGtleV9tYXRlcmlhbDogYnl0ZXMKLSkgLT4gYnl0ZXM6Ci0gICAgaCA9IGht
YWMuSE1BQyhzYWx0LCBhbGdvcml0aG0sIGJhY2tlbmQ9ZGVmYXVsdF9iYWNrZW5kKCkpCi0gICAg
aC51cGRhdGUoa2V5X21hdGVyaWFsKQotICAgIHJldHVybiBoLmZpbmFsaXplKCkKLQotCi1kZWYg
bG9hZF9wZW1fcHJpdmF0ZV9rZXkoCi0gICAgZGF0YTogYnl0ZXMsIHBhc3N3b3JkOiBPcHRpb25h
bFtieXRlc10KLSkgLT4gVW5pb25bZHNhLkRTQVByaXZhdGVLZXksIGVjLkVsbGlwdGljQ3VydmVQ
cml2YXRlS2V5LCByc2EuUlNBUHJpdmF0ZUtleV06Ci0gICAgIiIiCi0gICAgTG9hZCBhIFBFTS1l
bmNvZGVkIHByaXZhdGUga2V5LgotICAgICIiIgotICAgIHJldHVybiBzZXJpYWxpemF0aW9uLmxv
YWRfcGVtX3ByaXZhdGVfa2V5KAotICAgICAgICBkYXRhLCBwYXNzd29yZD1wYXNzd29yZCwgYmFj
a2VuZD1kZWZhdWx0X2JhY2tlbmQoKQotICAgICkKLQotCi1kZWYgbG9hZF9wZW1feDUwOV9jZXJ0
aWZpY2F0ZXMoZGF0YTogYnl0ZXMpIC0+IExpc3RbeDUwOS5DZXJ0aWZpY2F0ZV06Ci0gICAgIiIi
Ci0gICAgTG9hZCBhIGNoYWluIG9mIFBFTS1lbmNvZGVkIFg1MDkgY2VydGlmaWNhdGVzLgotICAg
ICIiIgotICAgIGJvdW5kYXJ5ID0gYiItLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tXG4iCi0gICAg
Y2VydGlmaWNhdGVzID0gW10KLSAgICBmb3IgY2h1bmsgaW4gZGF0YS5zcGxpdChib3VuZGFyeSk6
Ci0gICAgICAgIGlmIGNodW5rOgotICAgICAgICAgICAgY2VydGlmaWNhdGVzLmFwcGVuZCgKLSAg
ICAgICAgICAgICAgICB4NTA5LmxvYWRfcGVtX3g1MDlfY2VydGlmaWNhdGUoCi0gICAgICAgICAg
ICAgICAgICAgIGNodW5rICsgYm91bmRhcnksIGJhY2tlbmQ9ZGVmYXVsdF9iYWNrZW5kKCkKLSAg
ICAgICAgICAgICAgICApCi0gICAgICAgICAgICApCi0gICAgcmV0dXJuIGNlcnRpZmljYXRlcwot
Ci0KLWRlZiBvcGVuc3NsX2Fzc2VydChvazogYm9vbCwgZnVuYzogc3RyKSAtPiBOb25lOgotICAg
IGlmIG5vdCBvazoKLSAgICAgICAgbGliLkVSUl9jbGVhcl9lcnJvcigpCi0gICAgICAgIHJhaXNl
IEFsZXJ0SW50ZXJuYWxFcnJvcigiT3BlblNTTCBjYWxsIHRvICVzIGZhaWxlZCIgJSBmdW5jKQot
Ci0KLWRlZiBvcGVuc3NsX2RlY29kZV9zdHJpbmcoY2hhcnApIC0+IHN0cjoKLSAgICByZXR1cm4g
ZmZpLnN0cmluZyhjaGFycCkuZGVjb2RlKCJ1dGYtOCIpIGlmIGNoYXJwIGVsc2UgIiIKLQotCi1k
ZWYgb3BlbnNzbF9lbmNvZGVfcGF0aChzOiBPcHRpb25hbFtzdHJdKSAtPiBBbnk6Ci0gICAgaWYg
cyBpcyBub3QgTm9uZToKLSAgICAgICAgcmV0dXJuIG9zLmZzZW5jb2RlKHMpCi0gICAgcmV0dXJu
IGZmaS5OVUxMCi0KLQotZGVmIGNlcnRfeDUwOV9wdHIoY2VydGlmaWNhdGU6IHg1MDkuQ2VydGlm
aWNhdGUpIC0+IEFueToKLSAgICAiIiIKLSAgICBBY2Nlc3NvciBmb3IgcHJpdmF0ZSBhdHRyaWJ1
dGUuCi0gICAgIiIiCi0gICAgcmV0dXJuIGdldGF0dHIoY2VydGlmaWNhdGUsICJfeDUwOSIpCi0K
LQotZGVmIHZlcmlmeV9jZXJ0aWZpY2F0ZSgKLSAgICBjZXJ0aWZpY2F0ZTogeDUwOS5DZXJ0aWZp
Y2F0ZSwKLSAgICBjaGFpbjogTGlzdFt4NTA5LkNlcnRpZmljYXRlXSA9IFtdLAotICAgIHNlcnZl
cl9uYW1lOiBPcHRpb25hbFtzdHJdID0gTm9uZSwKLSAgICBjYWRhdGE6IE9wdGlvbmFsW2J5dGVz
XSA9IE5vbmUsCi0gICAgY2FmaWxlOiBPcHRpb25hbFtzdHJdID0gTm9uZSwKLSAgICBjYXBhdGg6
IE9wdGlvbmFsW3N0cl0gPSBOb25lLAotKSAtPiBOb25lOgotICAgICMgdmVyaWZ5IGRhdGVzCi0g
ICAgbm93ID0gdXRjbm93KCkKLSAgICBpZiBub3cgPCBjZXJ0aWZpY2F0ZS5ub3RfdmFsaWRfYmVm
b3JlOgotICAgICAgICByYWlzZSBBbGVydENlcnRpZmljYXRlRXhwaXJlZCgiQ2VydGlmaWNhdGUg
aXMgbm90IHZhbGlkIHlldCIpCi0gICAgaWYgbm93ID4gY2VydGlmaWNhdGUubm90X3ZhbGlkX2Fm
dGVyOgotICAgICAgICByYWlzZSBBbGVydENlcnRpZmljYXRlRXhwaXJlZCgiQ2VydGlmaWNhdGUg
aXMgbm8gbG9uZ2VyIHZhbGlkIikKLQotICAgICMgdmVyaWZ5IHN1YmplY3QKLSAgICBpZiBzZXJ2
ZXJfbmFtZSBpcyBub3QgTm9uZToKLSAgICAgICAgc3ViamVjdCA9IFtdCi0gICAgICAgIHN1Ympl
Y3RBbHROYW1lOiBMaXN0W1R1cGxlW3N0ciwgc3RyXV0gPSBbXQotICAgICAgICBmb3IgYXR0ciBp
biBjZXJ0aWZpY2F0ZS5zdWJqZWN0OgotICAgICAgICAgICAgaWYgYXR0ci5vaWQgPT0geDUwOS5O
YW1lT0lELkNPTU1PTl9OQU1FOgotICAgICAgICAgICAgICAgIHN1YmplY3QuYXBwZW5kKCgoImNv
bW1vbk5hbWUiLCBhdHRyLnZhbHVlKSwpKQotICAgICAgICBmb3IgZXh0IGluIGNlcnRpZmljYXRl
LmV4dGVuc2lvbnM6Ci0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV4dC52YWx1ZSwgeDUwOS5T
dWJqZWN0QWx0ZXJuYXRpdmVOYW1lKToKLSAgICAgICAgICAgICAgICBmb3IgbmFtZSBpbiBleHQu
dmFsdWU6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UobmFtZSwgeDUwOS5ETlNO
YW1lKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHN1YmplY3RBbHROYW1lLmFwcGVuZCgoIkRO
UyIsIG5hbWUudmFsdWUpKQotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNzbC5tYXRjaF9o
b3N0bmFtZSgKLSAgICAgICAgICAgICAgICB7InN1YmplY3QiOiB0dXBsZShzdWJqZWN0KSwgInN1
YmplY3RBbHROYW1lIjogdHVwbGUoc3ViamVjdEFsdE5hbWUpfSwKLSAgICAgICAgICAgICAgICBz
ZXJ2ZXJfbmFtZSwKLSAgICAgICAgICAgICkKLSAgICAgICAgZXhjZXB0IHNzbC5DZXJ0aWZpY2F0
ZUVycm9yIGFzIGV4YzoKLSAgICAgICAgICAgIHJhaXNlIEFsZXJ0QmFkQ2VydGlmaWNhdGUoIlxu
Ii5qb2luKGV4Yy5hcmdzKSkgZnJvbSBleGMKLQotICAgICMgdmVyaWZ5IGNlcnRpZmljYXRlIGNo
YWluCi0gICAgc3RvcmUgPSBsaWIuWDUwOV9TVE9SRV9uZXcoKQotICAgIG9wZW5zc2xfYXNzZXJ0
KHN0b3JlICE9IGZmaS5OVUxMLCAiWDUwOV9zdG9yZV9uZXciKQotICAgIHN0b3JlID0gZmZpLmdj
KHN0b3JlLCBsaWIuWDUwOV9TVE9SRV9mcmVlKQotCi0gICAgIyBsb2FkIGRlZmF1bHQgQ0FzCi0g
ICAgb3BlbnNzbF9hc3NlcnQoCi0gICAgICAgIGxpYi5YNTA5X1NUT1JFX3NldF9kZWZhdWx0X3Bh
dGhzKHN0b3JlKSwgIlg1MDlfU1RPUkVfc2V0X2RlZmF1bHRfcGF0aHMiCi0gICAgKQotICAgIG9w
ZW5zc2xfYXNzZXJ0KAotICAgICAgICBsaWIuWDUwOV9TVE9SRV9sb2FkX2xvY2F0aW9ucygKLSAg
ICAgICAgICAgIHN0b3JlLCBvcGVuc3NsX2VuY29kZV9wYXRoKGNlcnRpZmkud2hlcmUoKSksIG9w
ZW5zc2xfZW5jb2RlX3BhdGgoTm9uZSksCi0gICAgICAgICksCi0gICAgICAgICJYNTA5X1NUT1JF
X2xvYWRfbG9jYXRpb25zIiwKLSAgICApCi0KLSAgICAjIGxvYWQgZXh0cmEgQ0FzCi0gICAgaWYg
Y2FkYXRhIGlzIG5vdCBOb25lOgotICAgICAgICBmb3IgY2VydCBpbiBsb2FkX3BlbV94NTA5X2Nl
cnRpZmljYXRlcyhjYWRhdGEpOgotICAgICAgICAgICAgb3BlbnNzbF9hc3NlcnQoCi0gICAgICAg
ICAgICAgICAgbGliLlg1MDlfU1RPUkVfYWRkX2NlcnQoc3RvcmUsIGNlcnRfeDUwOV9wdHIoY2Vy
dCkpLAotICAgICAgICAgICAgICAgICJYNTA5X1NUT1JFX2FkZF9jZXJ0IiwKLSAgICAgICAgICAg
ICkKLQotICAgIGlmIGNhZmlsZSBpcyBub3QgTm9uZSBvciBjYXBhdGggaXMgbm90IE5vbmU6Ci0g
ICAgICAgIG9wZW5zc2xfYXNzZXJ0KAotICAgICAgICAgICAgbGliLlg1MDlfU1RPUkVfbG9hZF9s
b2NhdGlvbnMoCi0gICAgICAgICAgICAgICAgc3RvcmUsIG9wZW5zc2xfZW5jb2RlX3BhdGgoY2Fm
aWxlKSwgb3BlbnNzbF9lbmNvZGVfcGF0aChjYXBhdGgpCi0gICAgICAgICAgICApLAotICAgICAg
ICAgICAgIlg1MDlfU1RPUkVfbG9hZF9sb2NhdGlvbnMiLAotICAgICAgICApCi0KLSAgICBjaGFp
bl9zdGFjayA9IGxpYi5za19YNTA5X25ld19udWxsKCkKLSAgICBvcGVuc3NsX2Fzc2VydChjaGFp
bl9zdGFjayAhPSBmZmkuTlVMTCwgInNrX1g1MDlfbmV3X251bGwiKQotICAgIGNoYWluX3N0YWNr
ID0gZmZpLmdjKGNoYWluX3N0YWNrLCBsaWIuc2tfWDUwOV9mcmVlKQotICAgIGZvciBjZXJ0IGlu
IGNoYWluOgotICAgICAgICBvcGVuc3NsX2Fzc2VydCgKLSAgICAgICAgICAgIGxpYi5za19YNTA5
X3B1c2goY2hhaW5fc3RhY2ssIGNlcnRfeDUwOV9wdHIoY2VydCkpLCAic2tfWDUwOV9wdXNoIgot
ICAgICAgICApCi0KLSAgICBzdG9yZV9jdHggPSBsaWIuWDUwOV9TVE9SRV9DVFhfbmV3KCkKLSAg
ICBvcGVuc3NsX2Fzc2VydChzdG9yZV9jdHggIT0gZmZpLk5VTEwsICJYNTA5X1NUT1JFX0NUWF9u
ZXciKQotICAgIHN0b3JlX2N0eCA9IGZmaS5nYyhzdG9yZV9jdHgsIGxpYi5YNTA5X1NUT1JFX0NU
WF9mcmVlKQotICAgIG9wZW5zc2xfYXNzZXJ0KAotICAgICAgICBsaWIuWDUwOV9TVE9SRV9DVFhf
aW5pdCgKLSAgICAgICAgICAgIHN0b3JlX2N0eCwgc3RvcmUsIGNlcnRfeDUwOV9wdHIoY2VydGlm
aWNhdGUpLCBjaGFpbl9zdGFjawotICAgICAgICApLAotICAgICAgICAiWDUwOV9TVE9SRV9DVFhf
aW5pdCIsCi0gICAgKQotCi0gICAgcmVzID0gbGliLlg1MDlfdmVyaWZ5X2NlcnQoc3RvcmVfY3R4
KQotICAgIGlmIG5vdCByZXM6Ci0gICAgICAgIGVyciA9IGxpYi5YNTA5X1NUT1JFX0NUWF9nZXRf
ZXJyb3Ioc3RvcmVfY3R4KQotICAgICAgICBlcnJfc3RyID0gb3BlbnNzbF9kZWNvZGVfc3RyaW5n
KGxpYi5YNTA5X3ZlcmlmeV9jZXJ0X2Vycm9yX3N0cmluZyhlcnIpKQotICAgICAgICByYWlzZSBB
bGVydEJhZENlcnRpZmljYXRlKGVycl9zdHIpCi0KLQotY2xhc3MgQ2lwaGVyU3VpdGUoSW50RW51
bSk6Ci0gICAgQUVTXzEyOF9HQ01fU0hBMjU2ID0gMHgxMzAxCi0gICAgQUVTXzI1Nl9HQ01fU0hB
Mzg0ID0gMHgxMzAyCi0gICAgQ0hBQ0hBMjBfUE9MWTEzMDVfU0hBMjU2ID0gMHgxMzAzCi0gICAg
RU1QVFlfUkVORUdPVElBVElPTl9JTkZPX1NDU1YgPSAweDAwRkYKLQotCi1jbGFzcyBDb21wcmVz
c2lvbk1ldGhvZChJbnRFbnVtKToKLSAgICBOVUxMID0gMAotCi0KLWNsYXNzIEV4dGVuc2lvblR5
cGUoSW50RW51bSk6Ci0gICAgU0VSVkVSX05BTUUgPSAwCi0gICAgU1RBVFVTX1JFUVVFU1QgPSA1
Ci0gICAgU1VQUE9SVEVEX0dST1VQUyA9IDEwCi0gICAgU0lHTkFUVVJFX0FMR09SSVRITVMgPSAx
MwotICAgIEFMUE4gPSAxNgotICAgIENPTVBSRVNTX0NFUlRJRklDQVRFID0gMjcKLSAgICBQUkVf
U0hBUkVEX0tFWSA9IDQxCi0gICAgRUFSTFlfREFUQSA9IDQyCi0gICAgU1VQUE9SVEVEX1ZFUlNJ
T05TID0gNDMKLSAgICBDT09LSUUgPSA0NAotICAgIFBTS19LRVlfRVhDSEFOR0VfTU9ERVMgPSA0
NQotICAgIEtFWV9TSEFSRSA9IDUxCi0gICAgUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVSUyA9IDY1
NDQ1Ci0gICAgRU5DUllQVEVEX1NFUlZFUl9OQU1FID0gNjU0ODYKLQotCi1jbGFzcyBHcm91cChJ
bnRFbnVtKToKLSAgICBTRUNQMjU2UjEgPSAweDAwMTcKLSAgICBTRUNQMzg0UjEgPSAweDAwMTgK
LSAgICBTRUNQNTIxUjEgPSAweDAwMTkKLSAgICBYMjU1MTkgPSAweDAwMUQKLSAgICBYNDQ4ID0g
MHgwMDFFCi0gICAgR1JFQVNFID0gMHhBQUFBCi0KLQotY2xhc3MgSGFuZHNoYWtlVHlwZShJbnRF
bnVtKToKLSAgICBDTElFTlRfSEVMTE8gPSAxCi0gICAgU0VSVkVSX0hFTExPID0gMgotICAgIE5F
V19TRVNTSU9OX1RJQ0tFVCA9IDQKLSAgICBFTkRfT0ZfRUFSTFlfREFUQSA9IDUKLSAgICBFTkNS
WVBURURfRVhURU5TSU9OUyA9IDgKLSAgICBDRVJUSUZJQ0FURSA9IDExCi0gICAgQ0VSVElGSUNB
VEVfUkVRVUVTVCA9IDEzCi0gICAgQ0VSVElGSUNBVEVfVkVSSUZZID0gMTUKLSAgICBGSU5JU0hF
RCA9IDIwCi0gICAgS0VZX1VQREFURSA9IDI0Ci0gICAgQ09NUFJFU1NFRF9DRVJUSUZJQ0FURSA9
IDI1Ci0gICAgTUVTU0FHRV9IQVNIID0gMjU0Ci0KLQotY2xhc3MgUHNrS2V5RXhjaGFuZ2VNb2Rl
KEludEVudW0pOgotICAgIFBTS19LRSA9IDAKLSAgICBQU0tfREhFX0tFID0gMQotCi0KLWNsYXNz
IFNpZ25hdHVyZUFsZ29yaXRobShJbnRFbnVtKToKLSAgICBFQ0RTQV9TRUNQMjU2UjFfU0hBMjU2
ID0gMHgwNDAzCi0gICAgRUNEU0FfU0VDUDM4NFIxX1NIQTM4NCA9IDB4MDUwMwotICAgIEVDRFNB
X1NFQ1A1MjFSMV9TSEE1MTIgPSAweDA2MDMKLSAgICBFRDI1NTE5ID0gMHgwODA3Ci0gICAgRUQ0
NDggPSAweDA4MDgKLSAgICBSU0FfUEtDUzFfU0hBMjU2ID0gMHgwNDAxCi0gICAgUlNBX1BLQ1Mx
X1NIQTM4NCA9IDB4MDUwMQotICAgIFJTQV9QS0NTMV9TSEE1MTIgPSAweDA2MDEKLSAgICBSU0Ff
UFNTX1BTU19TSEEyNTYgPSAweDA4MDkKLSAgICBSU0FfUFNTX1BTU19TSEEzODQgPSAweDA4MEEK
LSAgICBSU0FfUFNTX1BTU19TSEE1MTIgPSAweDA4MEIKLSAgICBSU0FfUFNTX1JTQUVfU0hBMjU2
ID0gMHgwODA0Ci0gICAgUlNBX1BTU19SU0FFX1NIQTM4NCA9IDB4MDgwNQotICAgIFJTQV9QU1Nf
UlNBRV9TSEE1MTIgPSAweDA4MDYKLQotICAgICMgbGVnYWN5Ci0gICAgUlNBX1BLQ1MxX1NIQTEg
PSAweDAyMDEKLSAgICBTSEExX0RTQSA9IDB4MDIwMgotICAgIEVDRFNBX1NIQTEgPSAweDAyMDMK
LQotCi0jIEJMT0NLUwotCi0KLUBjb250ZXh0bWFuYWdlcgotZGVmIHB1bGxfYmxvY2soYnVmOiBC
dWZmZXIsIGNhcGFjaXR5OiBpbnQpIC0+IEdlbmVyYXRvcjoKLSAgICBsZW5ndGggPSAwCi0gICAg
Zm9yIGIgaW4gYnVmLnB1bGxfYnl0ZXMoY2FwYWNpdHkpOgotICAgICAgICBsZW5ndGggPSAobGVu
Z3RoIDw8IDgpIHwgYgotICAgIGVuZCA9IGJ1Zi50ZWxsKCkgKyBsZW5ndGgKLSAgICB5aWVsZCBs
ZW5ndGgKLSAgICBhc3NlcnQgYnVmLnRlbGwoKSA9PSBlbmQKLQotCi1AY29udGV4dG1hbmFnZXIK
LWRlZiBwdXNoX2Jsb2NrKGJ1ZjogQnVmZmVyLCBjYXBhY2l0eTogaW50KSAtPiBHZW5lcmF0b3I6
Ci0gICAgIiIiCi0gICAgQ29udGV4dCBtYW5hZ2VyIHRvIHB1c2ggYSB2YXJpYWJsZS1sZW5ndGgg
YmxvY2ssIHdpdGggYGNhcGFjaXR5YCBieXRlcwotICAgIHRvIHdyaXRlIHRoZSBsZW5ndGguCi0g
ICAgIiIiCi0gICAgc3RhcnQgPSBidWYudGVsbCgpICsgY2FwYWNpdHkKLSAgICBidWYuc2Vlayhz
dGFydCkKLSAgICB5aWVsZAotICAgIGVuZCA9IGJ1Zi50ZWxsKCkKLSAgICBsZW5ndGggPSBlbmQg
LSBzdGFydAotICAgIHdoaWxlIGNhcGFjaXR5OgotICAgICAgICBidWYuc2VlayhzdGFydCAtIGNh
cGFjaXR5KQotICAgICAgICBidWYucHVzaF91aW50OCgobGVuZ3RoID4+ICg4ICogKGNhcGFjaXR5
IC0gMSkpKSAmIDB4RkYpCi0gICAgICAgIGNhcGFjaXR5IC09IDEKLSAgICBidWYuc2VlayhlbmQp
Ci0KLQotIyBMSVNUUwotCi0KLWRlZiBwdWxsX2xpc3QoYnVmOiBCdWZmZXIsIGNhcGFjaXR5OiBp
bnQsIGZ1bmM6IENhbGxhYmxlW1tdLCBUXSkgLT4gTGlzdFtUXToKLSAgICAiIiIKLSAgICBQdWxs
IGEgbGlzdCBvZiBpdGVtcy4KLSAgICAiIiIKLSAgICBpdGVtcyA9IFtdCi0gICAgd2l0aCBwdWxs
X2Jsb2NrKGJ1ZiwgY2FwYWNpdHkpIGFzIGxlbmd0aDoKLSAgICAgICAgZW5kID0gYnVmLnRlbGwo
KSArIGxlbmd0aAotICAgICAgICB3aGlsZSBidWYudGVsbCgpIDwgZW5kOgotICAgICAgICAgICAg
aXRlbXMuYXBwZW5kKGZ1bmMoKSkKLSAgICByZXR1cm4gaXRlbXMKLQotCi1kZWYgcHVzaF9saXN0
KAotICAgIGJ1ZjogQnVmZmVyLCBjYXBhY2l0eTogaW50LCBmdW5jOiBDYWxsYWJsZVtbVF0sIE5v
bmVdLCB2YWx1ZXM6IFNlcXVlbmNlW1RdCi0pIC0+IE5vbmU6Ci0gICAgIiIiCi0gICAgUHVzaCBh
IGxpc3Qgb2YgaXRlbXMuCi0gICAgIiIiCi0gICAgd2l0aCBwdXNoX2Jsb2NrKGJ1ZiwgY2FwYWNp
dHkpOgotICAgICAgICBmb3IgdmFsdWUgaW4gdmFsdWVzOgotICAgICAgICAgICAgZnVuYyh2YWx1
ZSkKLQotCi1kZWYgcHVsbF9vcGFxdWUoYnVmOiBCdWZmZXIsIGNhcGFjaXR5OiBpbnQpIC0+IGJ5
dGVzOgotICAgICIiIgotICAgIFB1bGwgYW4gb3BhcXVlIHZhbHVlIHByZWZpeGVkIGJ5IGEgbGVu
Z3RoLgotICAgICIiIgotICAgIHdpdGggcHVsbF9ibG9jayhidWYsIGNhcGFjaXR5KSBhcyBsZW5n
dGg6Ci0gICAgICAgIHJldHVybiBidWYucHVsbF9ieXRlcyhsZW5ndGgpCi0KLQotZGVmIHB1c2hf
b3BhcXVlKGJ1ZjogQnVmZmVyLCBjYXBhY2l0eTogaW50LCB2YWx1ZTogYnl0ZXMpIC0+IE5vbmU6
Ci0gICAgIiIiCi0gICAgUHVzaCBhbiBvcGFxdWUgdmFsdWUgcHJlZml4IGJ5IGEgbGVuZ3RoLgot
ICAgICIiIgotICAgIHdpdGggcHVzaF9ibG9jayhidWYsIGNhcGFjaXR5KToKLSAgICAgICAgYnVm
LnB1c2hfYnl0ZXModmFsdWUpCi0KLQotQGNvbnRleHRtYW5hZ2VyCi1kZWYgcHVzaF9leHRlbnNp
b24oYnVmOiBCdWZmZXIsIGV4dGVuc2lvbl90eXBlOiBpbnQpIC0+IEdlbmVyYXRvcjoKLSAgICBi
dWYucHVzaF91aW50MTYoZXh0ZW5zaW9uX3R5cGUpCi0gICAgd2l0aCBwdXNoX2Jsb2NrKGJ1Ziwg
Mik6Ci0gICAgICAgIHlpZWxkCi0KLQotIyBLZXlTaGFyZUVudHJ5Ci0KLQotS2V5U2hhcmVFbnRy
eSA9IFR1cGxlW2ludCwgYnl0ZXNdCi0KLQotZGVmIHB1bGxfa2V5X3NoYXJlKGJ1ZjogQnVmZmVy
KSAtPiBLZXlTaGFyZUVudHJ5OgotICAgIGdyb3VwID0gYnVmLnB1bGxfdWludDE2KCkKLSAgICBk
YXRhID0gcHVsbF9vcGFxdWUoYnVmLCAyKQotICAgIHJldHVybiAoZ3JvdXAsIGRhdGEpCi0KLQot
ZGVmIHB1c2hfa2V5X3NoYXJlKGJ1ZjogQnVmZmVyLCB2YWx1ZTogS2V5U2hhcmVFbnRyeSkgLT4g
Tm9uZToKLSAgICBidWYucHVzaF91aW50MTYodmFsdWVbMF0pCi0gICAgcHVzaF9vcGFxdWUoYnVm
LCAyLCB2YWx1ZVsxXSkKLQotCi0jIEFMUE4KLQotCi1kZWYgcHVsbF9hbHBuX3Byb3RvY29sKGJ1
ZjogQnVmZmVyKSAtPiBzdHI6Ci0gICAgcmV0dXJuIHB1bGxfb3BhcXVlKGJ1ZiwgMSkuZGVjb2Rl
KCJhc2NpaSIpCi0KLQotZGVmIHB1c2hfYWxwbl9wcm90b2NvbChidWY6IEJ1ZmZlciwgcHJvdG9j
b2w6IHN0cikgLT4gTm9uZToKLSAgICBwdXNoX29wYXF1ZShidWYsIDEsIHByb3RvY29sLmVuY29k
ZSgiYXNjaWkiKSkKLQotCi0jIFBSRSBTSEFSRUQgS0VZCi0KLVBza0lkZW50aXR5ID0gVHVwbGVb
Ynl0ZXMsIGludF0KLQotCi1kZWYgcHVsbF9wc2tfaWRlbnRpdHkoYnVmOiBCdWZmZXIpIC0+IFBz
a0lkZW50aXR5OgotICAgIGlkZW50aXR5ID0gcHVsbF9vcGFxdWUoYnVmLCAyKQotICAgIG9iZnVz
Y2F0ZWRfdGlja2V0X2FnZSA9IGJ1Zi5wdWxsX3VpbnQzMigpCi0gICAgcmV0dXJuIChpZGVudGl0
eSwgb2JmdXNjYXRlZF90aWNrZXRfYWdlKQotCi0KLWRlZiBwdXNoX3Bza19pZGVudGl0eShidWY6
IEJ1ZmZlciwgZW50cnk6IFBza0lkZW50aXR5KSAtPiBOb25lOgotICAgIHB1c2hfb3BhcXVlKGJ1
ZiwgMiwgZW50cnlbMF0pCi0gICAgYnVmLnB1c2hfdWludDMyKGVudHJ5WzFdKQotCi0KLWRlZiBw
dWxsX3Bza19iaW5kZXIoYnVmOiBCdWZmZXIpIC0+IGJ5dGVzOgotICAgIHJldHVybiBwdWxsX29w
YXF1ZShidWYsIDEpCi0KLQotZGVmIHB1c2hfcHNrX2JpbmRlcihidWY6IEJ1ZmZlciwgYmluZGVy
OiBieXRlcykgLT4gTm9uZToKLSAgICBwdXNoX29wYXF1ZShidWYsIDEsIGJpbmRlcikKLQotCi0j
IE1FU1NBR0VTCi0KLUV4dGVuc2lvbiA9IFR1cGxlW2ludCwgYnl0ZXNdCi0KLQotQGRhdGFjbGFz
cwotY2xhc3MgT2ZmZXJlZFBza3M6Ci0gICAgaWRlbnRpdGllczogTGlzdFtQc2tJZGVudGl0eV0K
LSAgICBiaW5kZXJzOiBMaXN0W2J5dGVzXQotCi0KLUBkYXRhY2xhc3MKLWNsYXNzIENsaWVudEhl
bGxvOgotICAgIHJhbmRvbTogYnl0ZXMKLSAgICBsZWdhY3lfc2Vzc2lvbl9pZDogYnl0ZXMKLSAg
ICBjaXBoZXJfc3VpdGVzOiBMaXN0W2ludF0KLSAgICBsZWdhY3lfY29tcHJlc3Npb25fbWV0aG9k
czogTGlzdFtpbnRdCi0KLSAgICAjIGV4dGVuc2lvbnMKLSAgICBhbHBuX3Byb3RvY29sczogT3B0
aW9uYWxbTGlzdFtzdHJdXSA9IE5vbmUKLSAgICBlYXJseV9kYXRhOiBib29sID0gRmFsc2UKLSAg
ICBrZXlfc2hhcmU6IE9wdGlvbmFsW0xpc3RbS2V5U2hhcmVFbnRyeV1dID0gTm9uZQotICAgIHBy
ZV9zaGFyZWRfa2V5OiBPcHRpb25hbFtPZmZlcmVkUHNrc10gPSBOb25lCi0gICAgcHNrX2tleV9l
eGNoYW5nZV9tb2RlczogT3B0aW9uYWxbTGlzdFtpbnRdXSA9IE5vbmUKLSAgICBzZXJ2ZXJfbmFt
ZTogT3B0aW9uYWxbc3RyXSA9IE5vbmUKLSAgICBzaWduYXR1cmVfYWxnb3JpdGhtczogT3B0aW9u
YWxbTGlzdFtpbnRdXSA9IE5vbmUKLSAgICBzdXBwb3J0ZWRfZ3JvdXBzOiBPcHRpb25hbFtMaXN0
W2ludF1dID0gTm9uZQotICAgIHN1cHBvcnRlZF92ZXJzaW9uczogT3B0aW9uYWxbTGlzdFtpbnRd
XSA9IE5vbmUKLQotICAgIG90aGVyX2V4dGVuc2lvbnM6IExpc3RbRXh0ZW5zaW9uXSA9IGZpZWxk
KGRlZmF1bHRfZmFjdG9yeT1saXN0KQotCi0KLWRlZiBwdWxsX2NsaWVudF9oZWxsbyhidWY6IEJ1
ZmZlcikgLT4gQ2xpZW50SGVsbG86Ci0gICAgYXNzZXJ0IGJ1Zi5wdWxsX3VpbnQ4KCkgPT0gSGFu
ZHNoYWtlVHlwZS5DTElFTlRfSEVMTE8KLSAgICB3aXRoIHB1bGxfYmxvY2soYnVmLCAzKToKLSAg
ICAgICAgYXNzZXJ0IGJ1Zi5wdWxsX3VpbnQxNigpID09IFRMU19WRVJTSU9OXzFfMgotCi0gICAg
ICAgIGhlbGxvID0gQ2xpZW50SGVsbG8oCi0gICAgICAgICAgICByYW5kb209YnVmLnB1bGxfYnl0
ZXMoMzIpLAotICAgICAgICAgICAgbGVnYWN5X3Nlc3Npb25faWQ9cHVsbF9vcGFxdWUoYnVmLCAx
KSwKLSAgICAgICAgICAgIGNpcGhlcl9zdWl0ZXM9cHVsbF9saXN0KGJ1ZiwgMiwgYnVmLnB1bGxf
dWludDE2KSwKLSAgICAgICAgICAgIGxlZ2FjeV9jb21wcmVzc2lvbl9tZXRob2RzPXB1bGxfbGlz
dChidWYsIDEsIGJ1Zi5wdWxsX3VpbnQ4KSwKLSAgICAgICAgKQotCi0gICAgICAgICMgZXh0ZW5z
aW9ucwotICAgICAgICBhZnRlcl9wc2sgPSBGYWxzZQotCi0gICAgICAgIGRlZiBwdWxsX2V4dGVu
c2lvbigpIC0+IE5vbmU6Ci0gICAgICAgICAgICAjIHByZV9zaGFyZWRfa2V5IE1VU1QgYmUgbGFz
dAotICAgICAgICAgICAgbm9ubG9jYWwgYWZ0ZXJfcHNrCi0gICAgICAgICAgICBhc3NlcnQgbm90
IGFmdGVyX3BzawotCi0gICAgICAgICAgICBleHRlbnNpb25fdHlwZSA9IGJ1Zi5wdWxsX3VpbnQx
NigpCi0gICAgICAgICAgICBleHRlbnNpb25fbGVuZ3RoID0gYnVmLnB1bGxfdWludDE2KCkKLSAg
ICAgICAgICAgIGlmIGV4dGVuc2lvbl90eXBlID09IEV4dGVuc2lvblR5cGUuS0VZX1NIQVJFOgot
ICAgICAgICAgICAgICAgIGhlbGxvLmtleV9zaGFyZSA9IHB1bGxfbGlzdChidWYsIDIsIHBhcnRp
YWwocHVsbF9rZXlfc2hhcmUsIGJ1ZikpCi0gICAgICAgICAgICBlbGlmIGV4dGVuc2lvbl90eXBl
ID09IEV4dGVuc2lvblR5cGUuU1VQUE9SVEVEX1ZFUlNJT05TOgotICAgICAgICAgICAgICAgIGhl
bGxvLnN1cHBvcnRlZF92ZXJzaW9ucyA9IHB1bGxfbGlzdChidWYsIDEsIGJ1Zi5wdWxsX3VpbnQx
NikKLSAgICAgICAgICAgIGVsaWYgZXh0ZW5zaW9uX3R5cGUgPT0gRXh0ZW5zaW9uVHlwZS5TSUdO
QVRVUkVfQUxHT1JJVEhNUzoKLSAgICAgICAgICAgICAgICBoZWxsby5zaWduYXR1cmVfYWxnb3Jp
dGhtcyA9IHB1bGxfbGlzdChidWYsIDIsIGJ1Zi5wdWxsX3VpbnQxNikKLSAgICAgICAgICAgIGVs
aWYgZXh0ZW5zaW9uX3R5cGUgPT0gRXh0ZW5zaW9uVHlwZS5TVVBQT1JURURfR1JPVVBTOgotICAg
ICAgICAgICAgICAgIGhlbGxvLnN1cHBvcnRlZF9ncm91cHMgPSBwdWxsX2xpc3QoYnVmLCAyLCBi
dWYucHVsbF91aW50MTYpCi0gICAgICAgICAgICBlbGlmIGV4dGVuc2lvbl90eXBlID09IEV4dGVu
c2lvblR5cGUuUFNLX0tFWV9FWENIQU5HRV9NT0RFUzoKLSAgICAgICAgICAgICAgICBoZWxsby5w
c2tfa2V5X2V4Y2hhbmdlX21vZGVzID0gcHVsbF9saXN0KGJ1ZiwgMSwgYnVmLnB1bGxfdWludDgp
Ci0gICAgICAgICAgICBlbGlmIGV4dGVuc2lvbl90eXBlID09IEV4dGVuc2lvblR5cGUuU0VSVkVS
X05BTUU6Ci0gICAgICAgICAgICAgICAgd2l0aCBwdWxsX2Jsb2NrKGJ1ZiwgMik6Ci0gICAgICAg
ICAgICAgICAgICAgIGFzc2VydCBidWYucHVsbF91aW50OCgpID09IDAKLSAgICAgICAgICAgICAg
ICAgICAgaGVsbG8uc2VydmVyX25hbWUgPSBwdWxsX29wYXF1ZShidWYsIDIpLmRlY29kZSgiYXNj
aWkiKQotICAgICAgICAgICAgZWxpZiBleHRlbnNpb25fdHlwZSA9PSBFeHRlbnNpb25UeXBlLkFM
UE46Ci0gICAgICAgICAgICAgICAgaGVsbG8uYWxwbl9wcm90b2NvbHMgPSBwdWxsX2xpc3QoCi0g
ICAgICAgICAgICAgICAgICAgIGJ1ZiwgMiwgcGFydGlhbChwdWxsX2FscG5fcHJvdG9jb2wsIGJ1
ZikKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICBlbGlmIGV4dGVuc2lvbl90eXBlID09
IEV4dGVuc2lvblR5cGUuRUFSTFlfREFUQToKLSAgICAgICAgICAgICAgICBoZWxsby5lYXJseV9k
YXRhID0gVHJ1ZQotICAgICAgICAgICAgZWxpZiBleHRlbnNpb25fdHlwZSA9PSBFeHRlbnNpb25U
eXBlLlBSRV9TSEFSRURfS0VZOgotICAgICAgICAgICAgICAgIGhlbGxvLnByZV9zaGFyZWRfa2V5
ID0gT2ZmZXJlZFBza3MoCi0gICAgICAgICAgICAgICAgICAgIGlkZW50aXRpZXM9cHVsbF9saXN0
KGJ1ZiwgMiwgcGFydGlhbChwdWxsX3Bza19pZGVudGl0eSwgYnVmKSksCi0gICAgICAgICAgICAg
ICAgICAgIGJpbmRlcnM9cHVsbF9saXN0KGJ1ZiwgMiwgcGFydGlhbChwdWxsX3Bza19iaW5kZXIs
IGJ1ZikpLAotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICBhZnRlcl9wc2sgPSBU
cnVlCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGhlbGxvLm90aGVyX2V4dGVu
c2lvbnMuYXBwZW5kKAotICAgICAgICAgICAgICAgICAgICAoZXh0ZW5zaW9uX3R5cGUsIGJ1Zi5w
dWxsX2J5dGVzKGV4dGVuc2lvbl9sZW5ndGgpKQotICAgICAgICAgICAgICAgICkKLQotICAgICAg
ICBwdWxsX2xpc3QoYnVmLCAyLCBwdWxsX2V4dGVuc2lvbikKLQotICAgIHJldHVybiBoZWxsbwot
Ci0KLWRlZiBwdXNoX2NsaWVudF9oZWxsbyhidWY6IEJ1ZmZlciwgaGVsbG86IENsaWVudEhlbGxv
KSAtPiBOb25lOgotICAgIGJ1Zi5wdXNoX3VpbnQ4KEhhbmRzaGFrZVR5cGUuQ0xJRU5UX0hFTExP
KQotICAgIHdpdGggcHVzaF9ibG9jayhidWYsIDMpOgotICAgICAgICBidWYucHVzaF91aW50MTYo
VExTX1ZFUlNJT05fMV8yKQotICAgICAgICBidWYucHVzaF9ieXRlcyhoZWxsby5yYW5kb20pCi0g
ICAgICAgIHB1c2hfb3BhcXVlKGJ1ZiwgMSwgaGVsbG8ubGVnYWN5X3Nlc3Npb25faWQpCi0gICAg
ICAgIHB1c2hfbGlzdChidWYsIDIsIGJ1Zi5wdXNoX3VpbnQxNiwgaGVsbG8uY2lwaGVyX3N1aXRl
cykKLSAgICAgICAgcHVzaF9saXN0KGJ1ZiwgMSwgYnVmLnB1c2hfdWludDgsIGhlbGxvLmxlZ2Fj
eV9jb21wcmVzc2lvbl9tZXRob2RzKQotCi0gICAgICAgICMgZXh0ZW5zaW9ucwotICAgICAgICB3
aXRoIHB1c2hfYmxvY2soYnVmLCAyKToKLSAgICAgICAgICAgIHdpdGggcHVzaF9leHRlbnNpb24o
YnVmLCBFeHRlbnNpb25UeXBlLktFWV9TSEFSRSk6Ci0gICAgICAgICAgICAgICAgcHVzaF9saXN0
KGJ1ZiwgMiwgcGFydGlhbChwdXNoX2tleV9zaGFyZSwgYnVmKSwgaGVsbG8ua2V5X3NoYXJlKQot
Ci0gICAgICAgICAgICB3aXRoIHB1c2hfZXh0ZW5zaW9uKGJ1ZiwgRXh0ZW5zaW9uVHlwZS5TVVBQ
T1JURURfVkVSU0lPTlMpOgotICAgICAgICAgICAgICAgIHB1c2hfbGlzdChidWYsIDEsIGJ1Zi5w
dXNoX3VpbnQxNiwgaGVsbG8uc3VwcG9ydGVkX3ZlcnNpb25zKQotCi0gICAgICAgICAgICB3aXRo
IHB1c2hfZXh0ZW5zaW9uKGJ1ZiwgRXh0ZW5zaW9uVHlwZS5TSUdOQVRVUkVfQUxHT1JJVEhNUyk6
Ci0gICAgICAgICAgICAgICAgcHVzaF9saXN0KGJ1ZiwgMiwgYnVmLnB1c2hfdWludDE2LCBoZWxs
by5zaWduYXR1cmVfYWxnb3JpdGhtcykKLQotICAgICAgICAgICAgd2l0aCBwdXNoX2V4dGVuc2lv
bihidWYsIEV4dGVuc2lvblR5cGUuU1VQUE9SVEVEX0dST1VQUyk6Ci0gICAgICAgICAgICAgICAg
cHVzaF9saXN0KGJ1ZiwgMiwgYnVmLnB1c2hfdWludDE2LCBoZWxsby5zdXBwb3J0ZWRfZ3JvdXBz
KQotCi0gICAgICAgICAgICBpZiBoZWxsby5wc2tfa2V5X2V4Y2hhbmdlX21vZGVzIGlzIG5vdCBO
b25lOgotICAgICAgICAgICAgICAgIHdpdGggcHVzaF9leHRlbnNpb24oYnVmLCBFeHRlbnNpb25U
eXBlLlBTS19LRVlfRVhDSEFOR0VfTU9ERVMpOgotICAgICAgICAgICAgICAgICAgICBwdXNoX2xp
c3QoYnVmLCAxLCBidWYucHVzaF91aW50OCwgaGVsbG8ucHNrX2tleV9leGNoYW5nZV9tb2RlcykK
LQotICAgICAgICAgICAgaWYgaGVsbG8uc2VydmVyX25hbWUgaXMgbm90IE5vbmU6Ci0gICAgICAg
ICAgICAgICAgd2l0aCBwdXNoX2V4dGVuc2lvbihidWYsIEV4dGVuc2lvblR5cGUuU0VSVkVSX05B
TUUpOgotICAgICAgICAgICAgICAgICAgICB3aXRoIHB1c2hfYmxvY2soYnVmLCAyKToKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGJ1Zi5wdXNoX3VpbnQ4KDApCi0gICAgICAgICAgICAgICAgICAg
ICAgICBwdXNoX29wYXF1ZShidWYsIDIsIGhlbGxvLnNlcnZlcl9uYW1lLmVuY29kZSgiYXNjaWki
KSkKLQotICAgICAgICAgICAgaWYgaGVsbG8uYWxwbl9wcm90b2NvbHMgaXMgbm90IE5vbmU6Ci0g
ICAgICAgICAgICAgICAgd2l0aCBwdXNoX2V4dGVuc2lvbihidWYsIEV4dGVuc2lvblR5cGUuQUxQ
Tik6Ci0gICAgICAgICAgICAgICAgICAgIHB1c2hfbGlzdCgKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGJ1ZiwgMiwgcGFydGlhbChwdXNoX2FscG5fcHJvdG9jb2wsIGJ1ZiksIGhlbGxvLmFscG5f
cHJvdG9jb2xzCi0gICAgICAgICAgICAgICAgICAgICkKLQotICAgICAgICAgICAgZm9yIGV4dGVu
c2lvbl90eXBlLCBleHRlbnNpb25fdmFsdWUgaW4gaGVsbG8ub3RoZXJfZXh0ZW5zaW9uczoKLSAg
ICAgICAgICAgICAgICB3aXRoIHB1c2hfZXh0ZW5zaW9uKGJ1ZiwgZXh0ZW5zaW9uX3R5cGUpOgot
ICAgICAgICAgICAgICAgICAgICBidWYucHVzaF9ieXRlcyhleHRlbnNpb25fdmFsdWUpCi0KLSAg
ICAgICAgICAgIGlmIGhlbGxvLmVhcmx5X2RhdGE6Ci0gICAgICAgICAgICAgICAgd2l0aCBwdXNo
X2V4dGVuc2lvbihidWYsIEV4dGVuc2lvblR5cGUuRUFSTFlfREFUQSk6Ci0gICAgICAgICAgICAg
ICAgICAgIHBhc3MKLQotICAgICAgICAgICAgIyBwcmVfc2hhcmVkX2tleSBNVVNUIGJlIGxhc3QK
LSAgICAgICAgICAgIGlmIGhlbGxvLnByZV9zaGFyZWRfa2V5IGlzIG5vdCBOb25lOgotICAgICAg
ICAgICAgICAgIHdpdGggcHVzaF9leHRlbnNpb24oYnVmLCBFeHRlbnNpb25UeXBlLlBSRV9TSEFS
RURfS0VZKToKLSAgICAgICAgICAgICAgICAgICAgcHVzaF9saXN0KAotICAgICAgICAgICAgICAg
ICAgICAgICAgYnVmLAotICAgICAgICAgICAgICAgICAgICAgICAgMiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHBhcnRpYWwocHVzaF9wc2tfaWRlbnRpdHksIGJ1ZiksCi0gICAgICAgICAgICAg
ICAgICAgICAgICBoZWxsby5wcmVfc2hhcmVkX2tleS5pZGVudGl0aWVzLAotICAgICAgICAgICAg
ICAgICAgICApCi0gICAgICAgICAgICAgICAgICAgIHB1c2hfbGlzdCgKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGJ1ZiwKLSAgICAgICAgICAgICAgICAgICAgICAgIDIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBwYXJ0aWFsKHB1c2hfcHNrX2JpbmRlciwgYnVmKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGhlbGxvLnByZV9zaGFyZWRfa2V5LmJpbmRlcnMsCi0gICAgICAgICAgICAgICAg
ICAgICkKLQotCi1AZGF0YWNsYXNzCi1jbGFzcyBTZXJ2ZXJIZWxsbzoKLSAgICByYW5kb206IGJ5
dGVzCi0gICAgbGVnYWN5X3Nlc3Npb25faWQ6IGJ5dGVzCi0gICAgY2lwaGVyX3N1aXRlOiBpbnQK
LSAgICBjb21wcmVzc2lvbl9tZXRob2Q6IGludAotCi0gICAgIyBleHRlbnNpb25zCi0gICAga2V5
X3NoYXJlOiBPcHRpb25hbFtLZXlTaGFyZUVudHJ5XSA9IE5vbmUKLSAgICBwcmVfc2hhcmVkX2tl
eTogT3B0aW9uYWxbaW50XSA9IE5vbmUKLSAgICBzdXBwb3J0ZWRfdmVyc2lvbjogT3B0aW9uYWxb
aW50XSA9IE5vbmUKLSAgICBvdGhlcl9leHRlbnNpb25zOiBMaXN0W1R1cGxlW2ludCwgYnl0ZXNd
XSA9IGZpZWxkKGRlZmF1bHRfZmFjdG9yeT1saXN0KQotCi0KLWRlZiBwdWxsX3NlcnZlcl9oZWxs
byhidWY6IEJ1ZmZlcikgLT4gU2VydmVySGVsbG86Ci0gICAgYXNzZXJ0IGJ1Zi5wdWxsX3VpbnQ4
KCkgPT0gSGFuZHNoYWtlVHlwZS5TRVJWRVJfSEVMTE8KLSAgICB3aXRoIHB1bGxfYmxvY2soYnVm
LCAzKToKLSAgICAgICAgYXNzZXJ0IGJ1Zi5wdWxsX3VpbnQxNigpID09IFRMU19WRVJTSU9OXzFf
MgotCi0gICAgICAgIGhlbGxvID0gU2VydmVySGVsbG8oCi0gICAgICAgICAgICByYW5kb209YnVm
LnB1bGxfYnl0ZXMoMzIpLAotICAgICAgICAgICAgbGVnYWN5X3Nlc3Npb25faWQ9cHVsbF9vcGFx
dWUoYnVmLCAxKSwKLSAgICAgICAgICAgIGNpcGhlcl9zdWl0ZT1idWYucHVsbF91aW50MTYoKSwK
LSAgICAgICAgICAgIGNvbXByZXNzaW9uX21ldGhvZD1idWYucHVsbF91aW50OCgpLAotICAgICAg
ICApCi0KLSAgICAgICAgIyBleHRlbnNpb25zCi0gICAgICAgIGRlZiBwdWxsX2V4dGVuc2lvbigp
IC0+IE5vbmU6Ci0gICAgICAgICAgICBleHRlbnNpb25fdHlwZSA9IGJ1Zi5wdWxsX3VpbnQxNigp
Ci0gICAgICAgICAgICBleHRlbnNpb25fbGVuZ3RoID0gYnVmLnB1bGxfdWludDE2KCkKLSAgICAg
ICAgICAgIGlmIGV4dGVuc2lvbl90eXBlID09IEV4dGVuc2lvblR5cGUuU1VQUE9SVEVEX1ZFUlNJ
T05TOgotICAgICAgICAgICAgICAgIGhlbGxvLnN1cHBvcnRlZF92ZXJzaW9uID0gYnVmLnB1bGxf
dWludDE2KCkKLSAgICAgICAgICAgIGVsaWYgZXh0ZW5zaW9uX3R5cGUgPT0gRXh0ZW5zaW9uVHlw
ZS5LRVlfU0hBUkU6Ci0gICAgICAgICAgICAgICAgaGVsbG8ua2V5X3NoYXJlID0gcHVsbF9rZXlf
c2hhcmUoYnVmKQotICAgICAgICAgICAgZWxpZiBleHRlbnNpb25fdHlwZSA9PSBFeHRlbnNpb25U
eXBlLlBSRV9TSEFSRURfS0VZOgotICAgICAgICAgICAgICAgIGhlbGxvLnByZV9zaGFyZWRfa2V5
ID0gYnVmLnB1bGxfdWludDE2KCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAg
aGVsbG8ub3RoZXJfZXh0ZW5zaW9ucy5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgIChleHRl
bnNpb25fdHlwZSwgYnVmLnB1bGxfYnl0ZXMoZXh0ZW5zaW9uX2xlbmd0aCkpCi0gICAgICAgICAg
ICAgICAgKQotCi0gICAgICAgIHB1bGxfbGlzdChidWYsIDIsIHB1bGxfZXh0ZW5zaW9uKQotCi0g
ICAgcmV0dXJuIGhlbGxvCi0KLQotZGVmIHB1c2hfc2VydmVyX2hlbGxvKGJ1ZjogQnVmZmVyLCBo
ZWxsbzogU2VydmVySGVsbG8pIC0+IE5vbmU6Ci0gICAgYnVmLnB1c2hfdWludDgoSGFuZHNoYWtl
VHlwZS5TRVJWRVJfSEVMTE8pCi0gICAgd2l0aCBwdXNoX2Jsb2NrKGJ1ZiwgMyk6Ci0gICAgICAg
IGJ1Zi5wdXNoX3VpbnQxNihUTFNfVkVSU0lPTl8xXzIpCi0gICAgICAgIGJ1Zi5wdXNoX2J5dGVz
KGhlbGxvLnJhbmRvbSkKLQotICAgICAgICBwdXNoX29wYXF1ZShidWYsIDEsIGhlbGxvLmxlZ2Fj
eV9zZXNzaW9uX2lkKQotICAgICAgICBidWYucHVzaF91aW50MTYoaGVsbG8uY2lwaGVyX3N1aXRl
KQotICAgICAgICBidWYucHVzaF91aW50OChoZWxsby5jb21wcmVzc2lvbl9tZXRob2QpCi0KLSAg
ICAgICAgIyBleHRlbnNpb25zCi0gICAgICAgIHdpdGggcHVzaF9ibG9jayhidWYsIDIpOgotICAg
ICAgICAgICAgaWYgaGVsbG8uc3VwcG9ydGVkX3ZlcnNpb24gaXMgbm90IE5vbmU6Ci0gICAgICAg
ICAgICAgICAgd2l0aCBwdXNoX2V4dGVuc2lvbihidWYsIEV4dGVuc2lvblR5cGUuU1VQUE9SVEVE
X1ZFUlNJT05TKToKLSAgICAgICAgICAgICAgICAgICAgYnVmLnB1c2hfdWludDE2KGhlbGxvLnN1
cHBvcnRlZF92ZXJzaW9uKQotCi0gICAgICAgICAgICBpZiBoZWxsby5rZXlfc2hhcmUgaXMgbm90
IE5vbmU6Ci0gICAgICAgICAgICAgICAgd2l0aCBwdXNoX2V4dGVuc2lvbihidWYsIEV4dGVuc2lv
blR5cGUuS0VZX1NIQVJFKToKLSAgICAgICAgICAgICAgICAgICAgcHVzaF9rZXlfc2hhcmUoYnVm
LCBoZWxsby5rZXlfc2hhcmUpCi0KLSAgICAgICAgICAgIGlmIGhlbGxvLnByZV9zaGFyZWRfa2V5
IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIHdpdGggcHVzaF9leHRlbnNpb24oYnVmLCBF
eHRlbnNpb25UeXBlLlBSRV9TSEFSRURfS0VZKToKLSAgICAgICAgICAgICAgICAgICAgYnVmLnB1
c2hfdWludDE2KGhlbGxvLnByZV9zaGFyZWRfa2V5KQotCi0gICAgICAgICAgICBmb3IgZXh0ZW5z
aW9uX3R5cGUsIGV4dGVuc2lvbl92YWx1ZSBpbiBoZWxsby5vdGhlcl9leHRlbnNpb25zOgotICAg
ICAgICAgICAgICAgIHdpdGggcHVzaF9leHRlbnNpb24oYnVmLCBleHRlbnNpb25fdHlwZSk6Ci0g
ICAgICAgICAgICAgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGV4dGVuc2lvbl92YWx1ZSkKLQotCi1A
ZGF0YWNsYXNzCi1jbGFzcyBOZXdTZXNzaW9uVGlja2V0OgotICAgIHRpY2tldF9saWZldGltZTog
aW50ID0gMAotICAgIHRpY2tldF9hZ2VfYWRkOiBpbnQgPSAwCi0gICAgdGlja2V0X25vbmNlOiBi
eXRlcyA9IGIiIgotICAgIHRpY2tldDogYnl0ZXMgPSBiIiIKLQotICAgICMgZXh0ZW5zaW9ucwot
ICAgIG1heF9lYXJseV9kYXRhX3NpemU6IE9wdGlvbmFsW2ludF0gPSBOb25lCi0gICAgb3RoZXJf
ZXh0ZW5zaW9uczogTGlzdFtUdXBsZVtpbnQsIGJ5dGVzXV0gPSBmaWVsZChkZWZhdWx0X2ZhY3Rv
cnk9bGlzdCkKLQotCi1kZWYgcHVsbF9uZXdfc2Vzc2lvbl90aWNrZXQoYnVmOiBCdWZmZXIpIC0+
IE5ld1Nlc3Npb25UaWNrZXQ6Ci0gICAgbmV3X3Nlc3Npb25fdGlja2V0ID0gTmV3U2Vzc2lvblRp
Y2tldCgpCi0KLSAgICBhc3NlcnQgYnVmLnB1bGxfdWludDgoKSA9PSBIYW5kc2hha2VUeXBlLk5F
V19TRVNTSU9OX1RJQ0tFVAotICAgIHdpdGggcHVsbF9ibG9jayhidWYsIDMpOgotICAgICAgICBu
ZXdfc2Vzc2lvbl90aWNrZXQudGlja2V0X2xpZmV0aW1lID0gYnVmLnB1bGxfdWludDMyKCkKLSAg
ICAgICAgbmV3X3Nlc3Npb25fdGlja2V0LnRpY2tldF9hZ2VfYWRkID0gYnVmLnB1bGxfdWludDMy
KCkKLSAgICAgICAgbmV3X3Nlc3Npb25fdGlja2V0LnRpY2tldF9ub25jZSA9IHB1bGxfb3BhcXVl
KGJ1ZiwgMSkKLSAgICAgICAgbmV3X3Nlc3Npb25fdGlja2V0LnRpY2tldCA9IHB1bGxfb3BhcXVl
KGJ1ZiwgMikKLQotICAgICAgICBkZWYgcHVsbF9leHRlbnNpb24oKSAtPiBOb25lOgotICAgICAg
ICAgICAgZXh0ZW5zaW9uX3R5cGUgPSBidWYucHVsbF91aW50MTYoKQotICAgICAgICAgICAgZXh0
ZW5zaW9uX2xlbmd0aCA9IGJ1Zi5wdWxsX3VpbnQxNigpCi0gICAgICAgICAgICBpZiBleHRlbnNp
b25fdHlwZSA9PSBFeHRlbnNpb25UeXBlLkVBUkxZX0RBVEE6Ci0gICAgICAgICAgICAgICAgbmV3
X3Nlc3Npb25fdGlja2V0Lm1heF9lYXJseV9kYXRhX3NpemUgPSBidWYucHVsbF91aW50MzIoKQot
ICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBuZXdfc2Vzc2lvbl90aWNrZXQub3Ro
ZXJfZXh0ZW5zaW9ucy5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgIChleHRlbnNpb25fdHlw
ZSwgYnVmLnB1bGxfYnl0ZXMoZXh0ZW5zaW9uX2xlbmd0aCkpCi0gICAgICAgICAgICAgICAgKQot
Ci0gICAgICAgIHB1bGxfbGlzdChidWYsIDIsIHB1bGxfZXh0ZW5zaW9uKQotCi0gICAgcmV0dXJu
IG5ld19zZXNzaW9uX3RpY2tldAotCi0KLWRlZiBwdXNoX25ld19zZXNzaW9uX3RpY2tldChidWY6
IEJ1ZmZlciwgbmV3X3Nlc3Npb25fdGlja2V0OiBOZXdTZXNzaW9uVGlja2V0KSAtPiBOb25lOgot
ICAgIGJ1Zi5wdXNoX3VpbnQ4KEhhbmRzaGFrZVR5cGUuTkVXX1NFU1NJT05fVElDS0VUKQotICAg
IHdpdGggcHVzaF9ibG9jayhidWYsIDMpOgotICAgICAgICBidWYucHVzaF91aW50MzIobmV3X3Nl
c3Npb25fdGlja2V0LnRpY2tldF9saWZldGltZSkKLSAgICAgICAgYnVmLnB1c2hfdWludDMyKG5l
d19zZXNzaW9uX3RpY2tldC50aWNrZXRfYWdlX2FkZCkKLSAgICAgICAgcHVzaF9vcGFxdWUoYnVm
LCAxLCBuZXdfc2Vzc2lvbl90aWNrZXQudGlja2V0X25vbmNlKQotICAgICAgICBwdXNoX29wYXF1
ZShidWYsIDIsIG5ld19zZXNzaW9uX3RpY2tldC50aWNrZXQpCi0KLSAgICAgICAgd2l0aCBwdXNo
X2Jsb2NrKGJ1ZiwgMik6Ci0gICAgICAgICAgICBpZiBuZXdfc2Vzc2lvbl90aWNrZXQubWF4X2Vh
cmx5X2RhdGFfc2l6ZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICB3aXRoIHB1c2hfZXh0
ZW5zaW9uKGJ1ZiwgRXh0ZW5zaW9uVHlwZS5FQVJMWV9EQVRBKToKLSAgICAgICAgICAgICAgICAg
ICAgYnVmLnB1c2hfdWludDMyKG5ld19zZXNzaW9uX3RpY2tldC5tYXhfZWFybHlfZGF0YV9zaXpl
KQotCi0gICAgICAgICAgICBmb3IgZXh0ZW5zaW9uX3R5cGUsIGV4dGVuc2lvbl92YWx1ZSBpbiBu
ZXdfc2Vzc2lvbl90aWNrZXQub3RoZXJfZXh0ZW5zaW9uczoKLSAgICAgICAgICAgICAgICB3aXRo
IHB1c2hfZXh0ZW5zaW9uKGJ1ZiwgZXh0ZW5zaW9uX3R5cGUpOgotICAgICAgICAgICAgICAgICAg
ICBidWYucHVzaF9ieXRlcyhleHRlbnNpb25fdmFsdWUpCi0KLQotQGRhdGFjbGFzcwotY2xhc3Mg
RW5jcnlwdGVkRXh0ZW5zaW9uczoKLSAgICBhbHBuX3Byb3RvY29sOiBPcHRpb25hbFtzdHJdID0g
Tm9uZQotICAgIGVhcmx5X2RhdGE6IGJvb2wgPSBGYWxzZQotCi0gICAgb3RoZXJfZXh0ZW5zaW9u
czogTGlzdFtUdXBsZVtpbnQsIGJ5dGVzXV0gPSBmaWVsZChkZWZhdWx0X2ZhY3Rvcnk9bGlzdCkK
LQotCi1kZWYgcHVsbF9lbmNyeXB0ZWRfZXh0ZW5zaW9ucyhidWY6IEJ1ZmZlcikgLT4gRW5jcnlw
dGVkRXh0ZW5zaW9uczoKLSAgICBleHRlbnNpb25zID0gRW5jcnlwdGVkRXh0ZW5zaW9ucygpCi0K
LSAgICBhc3NlcnQgYnVmLnB1bGxfdWludDgoKSA9PSBIYW5kc2hha2VUeXBlLkVOQ1JZUFRFRF9F
WFRFTlNJT05TCi0gICAgd2l0aCBwdWxsX2Jsb2NrKGJ1ZiwgMyk6Ci0KLSAgICAgICAgZGVmIHB1
bGxfZXh0ZW5zaW9uKCkgLT4gTm9uZToKLSAgICAgICAgICAgIGV4dGVuc2lvbl90eXBlID0gYnVm
LnB1bGxfdWludDE2KCkKLSAgICAgICAgICAgIGV4dGVuc2lvbl9sZW5ndGggPSBidWYucHVsbF91
aW50MTYoKQotICAgICAgICAgICAgaWYgZXh0ZW5zaW9uX3R5cGUgPT0gRXh0ZW5zaW9uVHlwZS5B
TFBOOgotICAgICAgICAgICAgICAgIGV4dGVuc2lvbnMuYWxwbl9wcm90b2NvbCA9IHB1bGxfbGlz
dCgKLSAgICAgICAgICAgICAgICAgICAgYnVmLCAyLCBwYXJ0aWFsKHB1bGxfYWxwbl9wcm90b2Nv
bCwgYnVmKQotICAgICAgICAgICAgICAgIClbMF0KLSAgICAgICAgICAgIGVsaWYgZXh0ZW5zaW9u
X3R5cGUgPT0gRXh0ZW5zaW9uVHlwZS5FQVJMWV9EQVRBOgotICAgICAgICAgICAgICAgIGV4dGVu
c2lvbnMuZWFybHlfZGF0YSA9IFRydWUKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAg
ICAgZXh0ZW5zaW9ucy5vdGhlcl9leHRlbnNpb25zLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAg
ICAgKGV4dGVuc2lvbl90eXBlLCBidWYucHVsbF9ieXRlcyhleHRlbnNpb25fbGVuZ3RoKSkKLSAg
ICAgICAgICAgICAgICApCi0KLSAgICAgICAgcHVsbF9saXN0KGJ1ZiwgMiwgcHVsbF9leHRlbnNp
b24pCi0KLSAgICByZXR1cm4gZXh0ZW5zaW9ucwotCi0KLWRlZiBwdXNoX2VuY3J5cHRlZF9leHRl
bnNpb25zKGJ1ZjogQnVmZmVyLCBleHRlbnNpb25zOiBFbmNyeXB0ZWRFeHRlbnNpb25zKSAtPiBO
b25lOgotICAgIGJ1Zi5wdXNoX3VpbnQ4KEhhbmRzaGFrZVR5cGUuRU5DUllQVEVEX0VYVEVOU0lP
TlMpCi0gICAgd2l0aCBwdXNoX2Jsb2NrKGJ1ZiwgMyk6Ci0gICAgICAgIHdpdGggcHVzaF9ibG9j
ayhidWYsIDIpOgotICAgICAgICAgICAgaWYgZXh0ZW5zaW9ucy5hbHBuX3Byb3RvY29sIGlzIG5v
dCBOb25lOgotICAgICAgICAgICAgICAgIHdpdGggcHVzaF9leHRlbnNpb24oYnVmLCBFeHRlbnNp
b25UeXBlLkFMUE4pOgotICAgICAgICAgICAgICAgICAgICBwdXNoX2xpc3QoCi0gICAgICAgICAg
ICAgICAgICAgICAgICBidWYsCi0gICAgICAgICAgICAgICAgICAgICAgICAyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgcGFydGlhbChwdXNoX2FscG5fcHJvdG9jb2wsIGJ1ZiksCi0gICAgICAg
ICAgICAgICAgICAgICAgICBbZXh0ZW5zaW9ucy5hbHBuX3Byb3RvY29sXSwKLSAgICAgICAgICAg
ICAgICAgICAgKQotCi0gICAgICAgICAgICBpZiBleHRlbnNpb25zLmVhcmx5X2RhdGE6Ci0gICAg
ICAgICAgICAgICAgd2l0aCBwdXNoX2V4dGVuc2lvbihidWYsIEV4dGVuc2lvblR5cGUuRUFSTFlf
REFUQSk6Ci0gICAgICAgICAgICAgICAgICAgIHBhc3MKLQotICAgICAgICAgICAgZm9yIGV4dGVu
c2lvbl90eXBlLCBleHRlbnNpb25fdmFsdWUgaW4gZXh0ZW5zaW9ucy5vdGhlcl9leHRlbnNpb25z
OgotICAgICAgICAgICAgICAgIHdpdGggcHVzaF9leHRlbnNpb24oYnVmLCBleHRlbnNpb25fdHlw
ZSk6Ci0gICAgICAgICAgICAgICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGV4dGVuc2lvbl92YWx1ZSkK
LQotCi1DZXJ0aWZpY2F0ZUVudHJ5ID0gVHVwbGVbYnl0ZXMsIGJ5dGVzXQotCi0KLUBkYXRhY2xh
c3MKLWNsYXNzIENlcnRpZmljYXRlOgotICAgIHJlcXVlc3RfY29udGV4dDogYnl0ZXMgPSBiIiIK
LSAgICBjZXJ0aWZpY2F0ZXM6IExpc3RbQ2VydGlmaWNhdGVFbnRyeV0gPSBmaWVsZChkZWZhdWx0
X2ZhY3Rvcnk9bGlzdCkKLQotCi1kZWYgcHVsbF9jZXJ0aWZpY2F0ZShidWY6IEJ1ZmZlcikgLT4g
Q2VydGlmaWNhdGU6Ci0gICAgY2VydGlmaWNhdGUgPSBDZXJ0aWZpY2F0ZSgpCi0KLSAgICBhc3Nl
cnQgYnVmLnB1bGxfdWludDgoKSA9PSBIYW5kc2hha2VUeXBlLkNFUlRJRklDQVRFCi0gICAgd2l0
aCBwdWxsX2Jsb2NrKGJ1ZiwgMyk6Ci0gICAgICAgIGNlcnRpZmljYXRlLnJlcXVlc3RfY29udGV4
dCA9IHB1bGxfb3BhcXVlKGJ1ZiwgMSkKLQotICAgICAgICBkZWYgcHVsbF9jZXJ0aWZpY2F0ZV9l
bnRyeShidWY6IEJ1ZmZlcikgLT4gQ2VydGlmaWNhdGVFbnRyeToKLSAgICAgICAgICAgIGRhdGEg
PSBwdWxsX29wYXF1ZShidWYsIDMpCi0gICAgICAgICAgICBleHRlbnNpb25zID0gcHVsbF9vcGFx
dWUoYnVmLCAyKQotICAgICAgICAgICAgcmV0dXJuIChkYXRhLCBleHRlbnNpb25zKQotCi0gICAg
ICAgIGNlcnRpZmljYXRlLmNlcnRpZmljYXRlcyA9IHB1bGxfbGlzdCgKLSAgICAgICAgICAgIGJ1
ZiwgMywgcGFydGlhbChwdWxsX2NlcnRpZmljYXRlX2VudHJ5LCBidWYpCi0gICAgICAgICkKLQot
ICAgIHJldHVybiBjZXJ0aWZpY2F0ZQotCi0KLWRlZiBwdXNoX2NlcnRpZmljYXRlKGJ1ZjogQnVm
ZmVyLCBjZXJ0aWZpY2F0ZTogQ2VydGlmaWNhdGUpIC0+IE5vbmU6Ci0gICAgYnVmLnB1c2hfdWlu
dDgoSGFuZHNoYWtlVHlwZS5DRVJUSUZJQ0FURSkKLSAgICB3aXRoIHB1c2hfYmxvY2soYnVmLCAz
KToKLSAgICAgICAgcHVzaF9vcGFxdWUoYnVmLCAxLCBjZXJ0aWZpY2F0ZS5yZXF1ZXN0X2NvbnRl
eHQpCi0KLSAgICAgICAgZGVmIHB1c2hfY2VydGlmaWNhdGVfZW50cnkoYnVmOiBCdWZmZXIsIGVu
dHJ5OiBDZXJ0aWZpY2F0ZUVudHJ5KSAtPiBOb25lOgotICAgICAgICAgICAgcHVzaF9vcGFxdWUo
YnVmLCAzLCBlbnRyeVswXSkKLSAgICAgICAgICAgIHB1c2hfb3BhcXVlKGJ1ZiwgMiwgZW50cnlb
MV0pCi0KLSAgICAgICAgcHVzaF9saXN0KAotICAgICAgICAgICAgYnVmLCAzLCBwYXJ0aWFsKHB1
c2hfY2VydGlmaWNhdGVfZW50cnksIGJ1ZiksIGNlcnRpZmljYXRlLmNlcnRpZmljYXRlcwotICAg
ICAgICApCi0KLQotQGRhdGFjbGFzcwotY2xhc3MgQ2VydGlmaWNhdGVWZXJpZnk6Ci0gICAgYWxn
b3JpdGhtOiBpbnQKLSAgICBzaWduYXR1cmU6IGJ5dGVzCi0KLQotZGVmIHB1bGxfY2VydGlmaWNh
dGVfdmVyaWZ5KGJ1ZjogQnVmZmVyKSAtPiBDZXJ0aWZpY2F0ZVZlcmlmeToKLSAgICBhc3NlcnQg
YnVmLnB1bGxfdWludDgoKSA9PSBIYW5kc2hha2VUeXBlLkNFUlRJRklDQVRFX1ZFUklGWQotICAg
IHdpdGggcHVsbF9ibG9jayhidWYsIDMpOgotICAgICAgICBhbGdvcml0aG0gPSBidWYucHVsbF91
aW50MTYoKQotICAgICAgICBzaWduYXR1cmUgPSBwdWxsX29wYXF1ZShidWYsIDIpCi0KLSAgICBy
ZXR1cm4gQ2VydGlmaWNhdGVWZXJpZnkoYWxnb3JpdGhtPWFsZ29yaXRobSwgc2lnbmF0dXJlPXNp
Z25hdHVyZSkKLQotCi1kZWYgcHVzaF9jZXJ0aWZpY2F0ZV92ZXJpZnkoYnVmOiBCdWZmZXIsIHZl
cmlmeTogQ2VydGlmaWNhdGVWZXJpZnkpIC0+IE5vbmU6Ci0gICAgYnVmLnB1c2hfdWludDgoSGFu
ZHNoYWtlVHlwZS5DRVJUSUZJQ0FURV9WRVJJRlkpCi0gICAgd2l0aCBwdXNoX2Jsb2NrKGJ1Ziwg
Myk6Ci0gICAgICAgIGJ1Zi5wdXNoX3VpbnQxNih2ZXJpZnkuYWxnb3JpdGhtKQotICAgICAgICBw
dXNoX29wYXF1ZShidWYsIDIsIHZlcmlmeS5zaWduYXR1cmUpCi0KLQotQGRhdGFjbGFzcwotY2xh
c3MgRmluaXNoZWQ6Ci0gICAgdmVyaWZ5X2RhdGE6IGJ5dGVzID0gYiIiCi0KLQotZGVmIHB1bGxf
ZmluaXNoZWQoYnVmOiBCdWZmZXIpIC0+IEZpbmlzaGVkOgotICAgIGZpbmlzaGVkID0gRmluaXNo
ZWQoKQotCi0gICAgYXNzZXJ0IGJ1Zi5wdWxsX3VpbnQ4KCkgPT0gSGFuZHNoYWtlVHlwZS5GSU5J
U0hFRAotICAgIGZpbmlzaGVkLnZlcmlmeV9kYXRhID0gcHVsbF9vcGFxdWUoYnVmLCAzKQotCi0g
ICAgcmV0dXJuIGZpbmlzaGVkCi0KLQotZGVmIHB1c2hfZmluaXNoZWQoYnVmOiBCdWZmZXIsIGZp
bmlzaGVkOiBGaW5pc2hlZCkgLT4gTm9uZToKLSAgICBidWYucHVzaF91aW50OChIYW5kc2hha2VU
eXBlLkZJTklTSEVEKQotICAgIHB1c2hfb3BhcXVlKGJ1ZiwgMywgZmluaXNoZWQudmVyaWZ5X2Rh
dGEpCi0KLQotIyBDT05URVhUCi0KLQotY2xhc3MgS2V5U2NoZWR1bGU6Ci0gICAgZGVmIF9faW5p
dF9fKHNlbGYsIGNpcGhlcl9zdWl0ZTogQ2lwaGVyU3VpdGUpOgotICAgICAgICBzZWxmLmFsZ29y
aXRobSA9IGNpcGhlcl9zdWl0ZV9oYXNoKGNpcGhlcl9zdWl0ZSkKLSAgICAgICAgc2VsZi5jaXBo
ZXJfc3VpdGUgPSBjaXBoZXJfc3VpdGUKLSAgICAgICAgc2VsZi5nZW5lcmF0aW9uID0gMAotICAg
ICAgICBzZWxmLmhhc2ggPSBoYXNoZXMuSGFzaChzZWxmLmFsZ29yaXRobSwgZGVmYXVsdF9iYWNr
ZW5kKCkpCi0gICAgICAgIHNlbGYuaGFzaF9lbXB0eV92YWx1ZSA9IHNlbGYuaGFzaC5jb3B5KCku
ZmluYWxpemUoKQotICAgICAgICBzZWxmLnNlY3JldCA9IGJ5dGVzKHNlbGYuYWxnb3JpdGhtLmRp
Z2VzdF9zaXplKQotCi0gICAgZGVmIGNlcnRpZmljYXRlX3ZlcmlmeV9kYXRhKHNlbGYsIGNvbnRl
eHRfc3RyaW5nOiBieXRlcykgLT4gYnl0ZXM6Ci0gICAgICAgIHJldHVybiBiIiAiICogNjQgKyBj
b250ZXh0X3N0cmluZyArIGIiXHgwMCIgKyBzZWxmLmhhc2guY29weSgpLmZpbmFsaXplKCkKLQot
ICAgIGRlZiBmaW5pc2hlZF92ZXJpZnlfZGF0YShzZWxmLCBzZWNyZXQ6IGJ5dGVzKSAtPiBieXRl
czoKLSAgICAgICAgaG1hY19rZXkgPSBoa2RmX2V4cGFuZF9sYWJlbCgKLSAgICAgICAgICAgIGFs
Z29yaXRobT1zZWxmLmFsZ29yaXRobSwKLSAgICAgICAgICAgIHNlY3JldD1zZWNyZXQsCi0gICAg
ICAgICAgICBsYWJlbD1iImZpbmlzaGVkIiwKLSAgICAgICAgICAgIGhhc2hfdmFsdWU9YiIiLAot
ICAgICAgICAgICAgbGVuZ3RoPXNlbGYuYWxnb3JpdGhtLmRpZ2VzdF9zaXplLAotICAgICAgICAp
Ci0KLSAgICAgICAgaCA9IGhtYWMuSE1BQyhobWFjX2tleSwgYWxnb3JpdGhtPXNlbGYuYWxnb3Jp
dGhtLCBiYWNrZW5kPWRlZmF1bHRfYmFja2VuZCgpKQotICAgICAgICBoLnVwZGF0ZShzZWxmLmhh
c2guY29weSgpLmZpbmFsaXplKCkpCi0gICAgICAgIHJldHVybiBoLmZpbmFsaXplKCkKLQotICAg
IGRlZiBkZXJpdmVfc2VjcmV0KHNlbGYsIGxhYmVsOiBieXRlcykgLT4gYnl0ZXM6Ci0gICAgICAg
IHJldHVybiBoa2RmX2V4cGFuZF9sYWJlbCgKLSAgICAgICAgICAgIGFsZ29yaXRobT1zZWxmLmFs
Z29yaXRobSwKLSAgICAgICAgICAgIHNlY3JldD1zZWxmLnNlY3JldCwKLSAgICAgICAgICAgIGxh
YmVsPWxhYmVsLAotICAgICAgICAgICAgaGFzaF92YWx1ZT1zZWxmLmhhc2guY29weSgpLmZpbmFs
aXplKCksCi0gICAgICAgICAgICBsZW5ndGg9c2VsZi5hbGdvcml0aG0uZGlnZXN0X3NpemUsCi0g
ICAgICAgICkKLQotICAgIGRlZiBleHRyYWN0KHNlbGYsIGtleV9tYXRlcmlhbDogT3B0aW9uYWxb
Ynl0ZXNdID0gTm9uZSkgLT4gTm9uZToKLSAgICAgICAgaWYga2V5X21hdGVyaWFsIGlzIE5vbmU6
Ci0gICAgICAgICAgICBrZXlfbWF0ZXJpYWwgPSBieXRlcyhzZWxmLmFsZ29yaXRobS5kaWdlc3Rf
c2l6ZSkKLQotICAgICAgICBpZiBzZWxmLmdlbmVyYXRpb246Ci0gICAgICAgICAgICBzZWxmLnNl
Y3JldCA9IGhrZGZfZXhwYW5kX2xhYmVsKAotICAgICAgICAgICAgICAgIGFsZ29yaXRobT1zZWxm
LmFsZ29yaXRobSwKLSAgICAgICAgICAgICAgICBzZWNyZXQ9c2VsZi5zZWNyZXQsCi0gICAgICAg
ICAgICAgICAgbGFiZWw9YiJkZXJpdmVkIiwKLSAgICAgICAgICAgICAgICBoYXNoX3ZhbHVlPXNl
bGYuaGFzaF9lbXB0eV92YWx1ZSwKLSAgICAgICAgICAgICAgICBsZW5ndGg9c2VsZi5hbGdvcml0
aG0uZGlnZXN0X3NpemUsCi0gICAgICAgICAgICApCi0KLSAgICAgICAgc2VsZi5nZW5lcmF0aW9u
ICs9IDEKLSAgICAgICAgc2VsZi5zZWNyZXQgPSBoa2RmX2V4dHJhY3QoCi0gICAgICAgICAgICBh
bGdvcml0aG09c2VsZi5hbGdvcml0aG0sIHNhbHQ9c2VsZi5zZWNyZXQsIGtleV9tYXRlcmlhbD1r
ZXlfbWF0ZXJpYWwKLSAgICAgICAgKQotCi0gICAgZGVmIHVwZGF0ZV9oYXNoKHNlbGYsIGRhdGE6
IGJ5dGVzKSAtPiBOb25lOgotICAgICAgICBzZWxmLmhhc2gudXBkYXRlKGRhdGEpCi0KLQotY2xh
c3MgS2V5U2NoZWR1bGVQcm94eToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgY2lwaGVyX3N1aXRl
czogTGlzdFtDaXBoZXJTdWl0ZV0pOgotICAgICAgICBzZWxmLl9fc2NoZWR1bGVzID0gZGljdCht
YXAobGFtYmRhIGM6IChjLCBLZXlTY2hlZHVsZShjKSksIGNpcGhlcl9zdWl0ZXMpKQotCi0gICAg
ZGVmIGV4dHJhY3Qoc2VsZiwga2V5X21hdGVyaWFsOiBPcHRpb25hbFtieXRlc10gPSBOb25lKSAt
PiBOb25lOgotICAgICAgICBmb3IgayBpbiBzZWxmLl9fc2NoZWR1bGVzLnZhbHVlcygpOgotICAg
ICAgICAgICAgay5leHRyYWN0KGtleV9tYXRlcmlhbCkKLQotICAgIGRlZiBzZWxlY3Qoc2VsZiwg
Y2lwaGVyX3N1aXRlOiBDaXBoZXJTdWl0ZSkgLT4gS2V5U2NoZWR1bGU6Ci0gICAgICAgIHJldHVy
biBzZWxmLl9fc2NoZWR1bGVzW2NpcGhlcl9zdWl0ZV0KLQotICAgIGRlZiB1cGRhdGVfaGFzaChz
ZWxmLCBkYXRhOiBieXRlcykgLT4gTm9uZToKLSAgICAgICAgZm9yIGsgaW4gc2VsZi5fX3NjaGVk
dWxlcy52YWx1ZXMoKToKLSAgICAgICAgICAgIGsudXBkYXRlX2hhc2goZGF0YSkKLQotCi1DSVBI
RVJfU1VJVEVTID0gewotICAgIENpcGhlclN1aXRlLkFFU18xMjhfR0NNX1NIQTI1NjogaGFzaGVz
LlNIQTI1NiwKLSAgICBDaXBoZXJTdWl0ZS5BRVNfMjU2X0dDTV9TSEEzODQ6IGhhc2hlcy5TSEEz
ODQsCi0gICAgQ2lwaGVyU3VpdGUuQ0hBQ0hBMjBfUE9MWTEzMDVfU0hBMjU2OiBoYXNoZXMuU0hB
MjU2LAotfQotCi1TSUdOQVRVUkVfQUxHT1JJVEhNUzogRGljdCA9IHsKLSAgICBTaWduYXR1cmVB
bGdvcml0aG0uRUNEU0FfU0VDUDI1NlIxX1NIQTI1NjogKE5vbmUsIGhhc2hlcy5TSEEyNTYpLAot
ICAgIFNpZ25hdHVyZUFsZ29yaXRobS5FQ0RTQV9TRUNQMzg0UjFfU0hBMzg0OiAoTm9uZSwgaGFz
aGVzLlNIQTM4NCksCi0gICAgU2lnbmF0dXJlQWxnb3JpdGhtLkVDRFNBX1NFQ1A1MjFSMV9TSEE1
MTI6IChOb25lLCBoYXNoZXMuU0hBNTEyKSwKLSAgICBTaWduYXR1cmVBbGdvcml0aG0uUlNBX1BL
Q1MxX1NIQTE6IChwYWRkaW5nLlBLQ1MxdjE1LCBoYXNoZXMuU0hBMSksCi0gICAgU2lnbmF0dXJl
QWxnb3JpdGhtLlJTQV9QS0NTMV9TSEEyNTY6IChwYWRkaW5nLlBLQ1MxdjE1LCBoYXNoZXMuU0hB
MjU2KSwKLSAgICBTaWduYXR1cmVBbGdvcml0aG0uUlNBX1BLQ1MxX1NIQTM4NDogKHBhZGRpbmcu
UEtDUzF2MTUsIGhhc2hlcy5TSEEzODQpLAotICAgIFNpZ25hdHVyZUFsZ29yaXRobS5SU0FfUEtD
UzFfU0hBNTEyOiAocGFkZGluZy5QS0NTMXYxNSwgaGFzaGVzLlNIQTUxMiksCi0gICAgU2lnbmF0
dXJlQWxnb3JpdGhtLlJTQV9QU1NfUlNBRV9TSEEyNTY6IChwYWRkaW5nLlBTUywgaGFzaGVzLlNI
QTI1NiksCi0gICAgU2lnbmF0dXJlQWxnb3JpdGhtLlJTQV9QU1NfUlNBRV9TSEEzODQ6IChwYWRk
aW5nLlBTUywgaGFzaGVzLlNIQTM4NCksCi0gICAgU2lnbmF0dXJlQWxnb3JpdGhtLlJTQV9QU1Nf
UlNBRV9TSEE1MTI6IChwYWRkaW5nLlBTUywgaGFzaGVzLlNIQTUxMiksCi19Ci0KLUdST1VQX1RP
X0NVUlZFOiBEaWN0ID0gewotICAgIEdyb3VwLlNFQ1AyNTZSMTogZWMuU0VDUDI1NlIxLAotICAg
IEdyb3VwLlNFQ1AzODRSMTogZWMuU0VDUDM4NFIxLAotICAgIEdyb3VwLlNFQ1A1MjFSMTogZWMu
U0VDUDUyMVIxLAotfQotQ1VSVkVfVE9fR1JPVVAgPSBkaWN0KCh2LCBrKSBmb3IgaywgdiBpbiBH
Uk9VUF9UT19DVVJWRS5pdGVtcygpKQotCi0KLWRlZiBjaXBoZXJfc3VpdGVfaGFzaChjaXBoZXJf
c3VpdGU6IENpcGhlclN1aXRlKSAtPiBoYXNoZXMuSGFzaEFsZ29yaXRobToKLSAgICByZXR1cm4g
Q0lQSEVSX1NVSVRFU1tjaXBoZXJfc3VpdGVdKCkKLQotCi1kZWYgZGVjb2RlX3B1YmxpY19rZXko
Ci0gICAga2V5X3NoYXJlOiBLZXlTaGFyZUVudHJ5LAotKSAtPiBVbmlvbltlYy5FbGxpcHRpY0N1
cnZlUHVibGljS2V5LCB4MjU1MTkuWDI1NTE5UHVibGljS2V5LCB4NDQ4Llg0NDhQdWJsaWNLZXks
IE5vbmVdOgotICAgIGlmIGtleV9zaGFyZVswXSA9PSBHcm91cC5YMjU1MTk6Ci0gICAgICAgIHJl
dHVybiB4MjU1MTkuWDI1NTE5UHVibGljS2V5LmZyb21fcHVibGljX2J5dGVzKGtleV9zaGFyZVsx
XSkKLSAgICBlbGlmIGtleV9zaGFyZVswXSA9PSBHcm91cC5YNDQ4OgotICAgICAgICByZXR1cm4g
eDQ0OC5YNDQ4UHVibGljS2V5LmZyb21fcHVibGljX2J5dGVzKGtleV9zaGFyZVsxXSkKLSAgICBl
bGlmIGtleV9zaGFyZVswXSBpbiBHUk9VUF9UT19DVVJWRToKLSAgICAgICAgcmV0dXJuIGVjLkVs
bGlwdGljQ3VydmVQdWJsaWNLZXkuZnJvbV9lbmNvZGVkX3BvaW50KAotICAgICAgICAgICAgR1JP
VVBfVE9fQ1VSVkVba2V5X3NoYXJlWzBdXSgpLCBrZXlfc2hhcmVbMV0KLSAgICAgICAgKQotICAg
IGVsc2U6Ci0gICAgICAgIHJldHVybiBOb25lCi0KLQotZGVmIGVuY29kZV9wdWJsaWNfa2V5KAot
ICAgIHB1YmxpY19rZXk6IFVuaW9uWwotICAgICAgICBlYy5FbGxpcHRpY0N1cnZlUHVibGljS2V5
LCB4MjU1MTkuWDI1NTE5UHVibGljS2V5LCB4NDQ4Llg0NDhQdWJsaWNLZXkKLSAgICBdCi0pIC0+
IEtleVNoYXJlRW50cnk6Ci0gICAgaWYgaXNpbnN0YW5jZShwdWJsaWNfa2V5LCB4MjU1MTkuWDI1
NTE5UHVibGljS2V5KToKLSAgICAgICAgcmV0dXJuIChHcm91cC5YMjU1MTksIHB1YmxpY19rZXku
cHVibGljX2J5dGVzKEVuY29kaW5nLlJhdywgUHVibGljRm9ybWF0LlJhdykpCi0gICAgZWxpZiBp
c2luc3RhbmNlKHB1YmxpY19rZXksIHg0NDguWDQ0OFB1YmxpY0tleSk6Ci0gICAgICAgIHJldHVy
biAoR3JvdXAuWDQ0OCwgcHVibGljX2tleS5wdWJsaWNfYnl0ZXMoRW5jb2RpbmcuUmF3LCBQdWJs
aWNGb3JtYXQuUmF3KSkKLSAgICByZXR1cm4gKAotICAgICAgICBDVVJWRV9UT19HUk9VUFtwdWJs
aWNfa2V5LmN1cnZlLl9fY2xhc3NfX10sCi0gICAgICAgIHB1YmxpY19rZXkucHVibGljX2J5dGVz
KEVuY29kaW5nLlg5NjIsIFB1YmxpY0Zvcm1hdC5VbmNvbXByZXNzZWRQb2ludCksCi0gICAgKQot
Ci0KLWRlZiBuZWdvdGlhdGUoCi0gICAgc3VwcG9ydGVkOiBMaXN0W1RdLCBvZmZlcmVkOiBPcHRp
b25hbFtMaXN0W0FueV1dLCBleGM6IE9wdGlvbmFsW0FsZXJ0XSA9IE5vbmUKLSkgLT4gVDoKLSAg
ICBpZiBvZmZlcmVkIGlzIG5vdCBOb25lOgotICAgICAgICBmb3IgYyBpbiBzdXBwb3J0ZWQ6Ci0g
ICAgICAgICAgICBpZiBjIGluIG9mZmVyZWQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGMKLQot
ICAgIGlmIGV4YyBpcyBub3QgTm9uZToKLSAgICAgICAgcmFpc2UgZXhjCi0gICAgcmV0dXJuIE5v
bmUKLQotCi1kZWYgc2lnbmF0dXJlX2FsZ29yaXRobV9wYXJhbXMoCi0gICAgc2lnbmF0dXJlX2Fs
Z29yaXRobTogaW50LAotKSAtPiBVbmlvbltUdXBsZVtlYy5FQ0RTQV0sIFR1cGxlW3BhZGRpbmcu
QXN5bW1ldHJpY1BhZGRpbmcsIGhhc2hlcy5IYXNoQWxnb3JpdGhtXV06Ci0gICAgcGFkZGluZ19j
bHMsIGFsZ29yaXRobV9jbHMgPSBTSUdOQVRVUkVfQUxHT1JJVEhNU1tzaWduYXR1cmVfYWxnb3Jp
dGhtXQotICAgIGFsZ29yaXRobSA9IGFsZ29yaXRobV9jbHMoKQotICAgIGlmIHBhZGRpbmdfY2xz
IGlzIE5vbmU6Ci0gICAgICAgIHJldHVybiAoZWMuRUNEU0EoYWxnb3JpdGhtKSwpCi0gICAgZWxp
ZiBwYWRkaW5nX2NscyA9PSBwYWRkaW5nLlBTUzoKLSAgICAgICAgcGFkZGluZ19vYmogPSBwYWRk
aW5nX2NscygKLSAgICAgICAgICAgIG1nZj1wYWRkaW5nLk1HRjEoYWxnb3JpdGhtKSwgc2FsdF9s
ZW5ndGg9YWxnb3JpdGhtLmRpZ2VzdF9zaXplCi0gICAgICAgICkKLSAgICBlbHNlOgotICAgICAg
ICBwYWRkaW5nX29iaiA9IHBhZGRpbmdfY2xzKCkKLSAgICByZXR1cm4gcGFkZGluZ19vYmosIGFs
Z29yaXRobQotCi0KLUBjb250ZXh0bWFuYWdlcgotZGVmIHB1c2hfbWVzc2FnZSgKLSAgICBrZXlf
c2NoZWR1bGU6IFVuaW9uW0tleVNjaGVkdWxlLCBLZXlTY2hlZHVsZVByb3h5XSwgYnVmOiBCdWZm
ZXIKLSkgLT4gR2VuZXJhdG9yOgotICAgIGhhc2hfc3RhcnQgPSBidWYudGVsbCgpCi0gICAgeWll
bGQKLSAgICBrZXlfc2NoZWR1bGUudXBkYXRlX2hhc2goYnVmLmRhdGFfc2xpY2UoaGFzaF9zdGFy
dCwgYnVmLnRlbGwoKSkpCi0KLQotIyBjYWxsYmFjayB0eXBlcwotCi0KLUBkYXRhY2xhc3MKLWNs
YXNzIFNlc3Npb25UaWNrZXQ6Ci0gICAgIiIiCi0gICAgQSBUTFMgc2Vzc2lvbiB0aWNrZXQgZm9y
IHNlc3Npb24gcmVzdW1wdGlvbi4KLSAgICAiIiIKLQotICAgIGFnZV9hZGQ6IGludAotICAgIGNp
cGhlcl9zdWl0ZTogQ2lwaGVyU3VpdGUKLSAgICBub3RfdmFsaWRfYWZ0ZXI6IGRhdGV0aW1lLmRh
dGV0aW1lCi0gICAgbm90X3ZhbGlkX2JlZm9yZTogZGF0ZXRpbWUuZGF0ZXRpbWUKLSAgICByZXN1
bXB0aW9uX3NlY3JldDogYnl0ZXMKLSAgICBzZXJ2ZXJfbmFtZTogc3RyCi0gICAgdGlja2V0OiBi
eXRlcwotCi0gICAgbWF4X2Vhcmx5X2RhdGFfc2l6ZTogT3B0aW9uYWxbaW50XSA9IE5vbmUKLSAg
ICBvdGhlcl9leHRlbnNpb25zOiBMaXN0W1R1cGxlW2ludCwgYnl0ZXNdXSA9IGZpZWxkKGRlZmF1
bHRfZmFjdG9yeT1saXN0KQotCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIGlzX3ZhbGlkKHNlbGYp
IC0+IGJvb2w6Ci0gICAgICAgIG5vdyA9IHV0Y25vdygpCi0gICAgICAgIHJldHVybiBub3cgPj0g
c2VsZi5ub3RfdmFsaWRfYmVmb3JlIGFuZCBub3cgPD0gc2VsZi5ub3RfdmFsaWRfYWZ0ZXIKLQot
ICAgIEBwcm9wZXJ0eQotICAgIGRlZiBvYmZ1c2NhdGVkX2FnZShzZWxmKSAtPiBpbnQ6Ci0gICAg
ICAgIGFnZSA9IGludCgodXRjbm93KCkgLSBzZWxmLm5vdF92YWxpZF9iZWZvcmUpLnRvdGFsX3Nl
Y29uZHMoKSkKLSAgICAgICAgcmV0dXJuIChhZ2UgKyBzZWxmLmFnZV9hZGQpICUgKDEgPDwgMzIp
Ci0KLQotQWxwbkhhbmRsZXIgPSBDYWxsYWJsZVtbc3RyXSwgTm9uZV0KLVNlc3Npb25UaWNrZXRG
ZXRjaGVyID0gQ2FsbGFibGVbW2J5dGVzXSwgT3B0aW9uYWxbU2Vzc2lvblRpY2tldF1dCi1TZXNz
aW9uVGlja2V0SGFuZGxlciA9IENhbGxhYmxlW1tTZXNzaW9uVGlja2V0XSwgTm9uZV0KLQotCi1j
bGFzcyBDb250ZXh0OgotICAgIGRlZiBfX2luaXRfXygKLSAgICAgICAgc2VsZiwKLSAgICAgICAg
aXNfY2xpZW50OiBib29sLAotICAgICAgICBhbHBuX3Byb3RvY29sczogT3B0aW9uYWxbTGlzdFtz
dHJdXSA9IE5vbmUsCi0gICAgICAgIGNhZGF0YTogT3B0aW9uYWxbYnl0ZXNdID0gTm9uZSwKLSAg
ICAgICAgY2FmaWxlOiBPcHRpb25hbFtzdHJdID0gTm9uZSwKLSAgICAgICAgY2FwYXRoOiBPcHRp
b25hbFtzdHJdID0gTm9uZSwKLSAgICAgICAgbG9nZ2VyOiBPcHRpb25hbFtVbmlvbltsb2dnaW5n
LkxvZ2dlciwgbG9nZ2luZy5Mb2dnZXJBZGFwdGVyXV0gPSBOb25lLAotICAgICAgICBtYXhfZWFy
bHlfZGF0YTogT3B0aW9uYWxbaW50XSA9IE5vbmUsCi0gICAgICAgIHNlcnZlcl9uYW1lOiBPcHRp
b25hbFtzdHJdID0gTm9uZSwKLSAgICAgICAgdmVyaWZ5X21vZGU6IE9wdGlvbmFsW2ludF0gPSBO
b25lLAotICAgICk6Ci0gICAgICAgICMgY29uZmlndXJhdGlvbgotICAgICAgICBzZWxmLl9hbHBu
X3Byb3RvY29scyA9IGFscG5fcHJvdG9jb2xzCi0gICAgICAgIHNlbGYuX2NhZGF0YSA9IGNhZGF0
YQotICAgICAgICBzZWxmLl9jYWZpbGUgPSBjYWZpbGUKLSAgICAgICAgc2VsZi5fY2FwYXRoID0g
Y2FwYXRoCi0gICAgICAgIHNlbGYuY2VydGlmaWNhdGU6IE9wdGlvbmFsW3g1MDkuQ2VydGlmaWNh
dGVdID0gTm9uZQotICAgICAgICBzZWxmLmNlcnRpZmljYXRlX2NoYWluOiBMaXN0W3g1MDkuQ2Vy
dGlmaWNhdGVdID0gW10KLSAgICAgICAgc2VsZi5jZXJ0aWZpY2F0ZV9wcml2YXRlX2tleTogT3B0
aW9uYWxbCi0gICAgICAgICAgICBVbmlvbltkc2EuRFNBUHJpdmF0ZUtleSwgZWMuRWxsaXB0aWND
dXJ2ZVByaXZhdGVLZXksIHJzYS5SU0FQcml2YXRlS2V5XQotICAgICAgICBdID0gTm9uZQotICAg
ICAgICBzZWxmLmhhbmRzaGFrZV9leHRlbnNpb25zOiBMaXN0W0V4dGVuc2lvbl0gPSBbXQotICAg
ICAgICBzZWxmLl9tYXhfZWFybHlfZGF0YSA9IG1heF9lYXJseV9kYXRhCi0gICAgICAgIHNlbGYu
c2Vzc2lvbl90aWNrZXQ6IE9wdGlvbmFsW1Nlc3Npb25UaWNrZXRdID0gTm9uZQotICAgICAgICBz
ZWxmLl9zZXJ2ZXJfbmFtZSA9IHNlcnZlcl9uYW1lCi0gICAgICAgIGlmIHZlcmlmeV9tb2RlIGlz
IG5vdCBOb25lOgotICAgICAgICAgICAgc2VsZi5fdmVyaWZ5X21vZGUgPSB2ZXJpZnlfbW9kZQot
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5fdmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9S
RVFVSVJFRCBpZiBpc19jbGllbnQgZWxzZSBzc2wuQ0VSVF9OT05FCi0KLSAgICAgICAgIyBjYWxs
YmFja3MKLSAgICAgICAgc2VsZi5hbHBuX2NiOiBPcHRpb25hbFtBbHBuSGFuZGxlcl0gPSBOb25l
Ci0gICAgICAgIHNlbGYuZ2V0X3Nlc3Npb25fdGlja2V0X2NiOiBPcHRpb25hbFtTZXNzaW9uVGlj
a2V0RmV0Y2hlcl0gPSBOb25lCi0gICAgICAgIHNlbGYubmV3X3Nlc3Npb25fdGlja2V0X2NiOiBP
cHRpb25hbFtTZXNzaW9uVGlja2V0SGFuZGxlcl0gPSBOb25lCi0gICAgICAgIHNlbGYudXBkYXRl
X3RyYWZmaWNfa2V5X2NiOiBDYWxsYWJsZVsKLSAgICAgICAgICAgIFtEaXJlY3Rpb24sIEVwb2No
LCBDaXBoZXJTdWl0ZSwgYnl0ZXNdLCBOb25lCi0gICAgICAgIF0gPSBsYW1iZGEgZCwgZSwgYywg
czogTm9uZQotCi0gICAgICAgICMgc3VwcG9ydGVkIHBhcmFtZXRlcnMKLSAgICAgICAgc2VsZi5f
Y2lwaGVyX3N1aXRlcyA9IFsKLSAgICAgICAgICAgIENpcGhlclN1aXRlLkFFU18yNTZfR0NNX1NI
QTM4NCwKLSAgICAgICAgICAgIENpcGhlclN1aXRlLkFFU18xMjhfR0NNX1NIQTI1NiwKLSAgICAg
ICAgICAgIENpcGhlclN1aXRlLkNIQUNIQTIwX1BPTFkxMzA1X1NIQTI1NiwKLSAgICAgICAgXQot
ICAgICAgICBzZWxmLl9sZWdhY3lfY29tcHJlc3Npb25fbWV0aG9kczogTGlzdFtpbnRdID0gW0Nv
bXByZXNzaW9uTWV0aG9kLk5VTExdCi0gICAgICAgIHNlbGYuX3Bza19rZXlfZXhjaGFuZ2VfbW9k
ZXM6IExpc3RbaW50XSA9IFtQc2tLZXlFeGNoYW5nZU1vZGUuUFNLX0RIRV9LRV0KLSAgICAgICAg
c2VsZi5fc2lnbmF0dXJlX2FsZ29yaXRobXM6IExpc3RbaW50XSA9IFsKLSAgICAgICAgICAgIFNp
Z25hdHVyZUFsZ29yaXRobS5SU0FfUFNTX1JTQUVfU0hBMjU2LAotICAgICAgICAgICAgU2lnbmF0
dXJlQWxnb3JpdGhtLkVDRFNBX1NFQ1AyNTZSMV9TSEEyNTYsCi0gICAgICAgICAgICBTaWduYXR1
cmVBbGdvcml0aG0uUlNBX1BLQ1MxX1NIQTI1NiwKLSAgICAgICAgICAgIFNpZ25hdHVyZUFsZ29y
aXRobS5SU0FfUEtDUzFfU0hBMSwKLSAgICAgICAgXQotICAgICAgICBzZWxmLl9zdXBwb3J0ZWRf
Z3JvdXBzID0gW0dyb3VwLlNFQ1AyNTZSMV0KLSAgICAgICAgaWYgZGVmYXVsdF9iYWNrZW5kKCku
eDI1NTE5X3N1cHBvcnRlZCgpOgotICAgICAgICAgICAgc2VsZi5fc3VwcG9ydGVkX2dyb3Vwcy5h
cHBlbmQoR3JvdXAuWDI1NTE5KQotICAgICAgICBpZiBkZWZhdWx0X2JhY2tlbmQoKS54NDQ4X3N1
cHBvcnRlZCgpOgotICAgICAgICAgICAgc2VsZi5fc3VwcG9ydGVkX2dyb3Vwcy5hcHBlbmQoR3Jv
dXAuWDQ0OCkKLSAgICAgICAgc2VsZi5fc3VwcG9ydGVkX3ZlcnNpb25zID0gW1RMU19WRVJTSU9O
XzFfM10KLQotICAgICAgICAjIHN0YXRlCi0gICAgICAgIHNlbGYuYWxwbl9uZWdvdGlhdGVkOiBP
cHRpb25hbFtzdHJdID0gTm9uZQotICAgICAgICBzZWxmLmVhcmx5X2RhdGFfYWNjZXB0ZWQgPSBG
YWxzZQotICAgICAgICBzZWxmLmtleV9zY2hlZHVsZTogT3B0aW9uYWxbS2V5U2NoZWR1bGVdID0g
Tm9uZQotICAgICAgICBzZWxmLnJlY2VpdmVkX2V4dGVuc2lvbnM6IE9wdGlvbmFsW0xpc3RbRXh0
ZW5zaW9uXV0gPSBOb25lCi0gICAgICAgIHNlbGYuX2tleV9zY2hlZHVsZV9wc2s6IE9wdGlvbmFs
W0tleVNjaGVkdWxlXSA9IE5vbmUKLSAgICAgICAgc2VsZi5fa2V5X3NjaGVkdWxlX3Byb3h5OiBP
cHRpb25hbFtLZXlTY2hlZHVsZVByb3h5XSA9IE5vbmUKLSAgICAgICAgc2VsZi5fbmV3X3Nlc3Np
b25fdGlja2V0OiBPcHRpb25hbFtOZXdTZXNzaW9uVGlja2V0XSA9IE5vbmUKLSAgICAgICAgc2Vs
Zi5fcGVlcl9jZXJ0aWZpY2F0ZTogT3B0aW9uYWxbeDUwOS5DZXJ0aWZpY2F0ZV0gPSBOb25lCi0g
ICAgICAgIHNlbGYuX3BlZXJfY2VydGlmaWNhdGVfY2hhaW46IExpc3RbeDUwOS5DZXJ0aWZpY2F0
ZV0gPSBbXQotICAgICAgICBzZWxmLl9yZWNlaXZlX2J1ZmZlciA9IGIiIgotICAgICAgICBzZWxm
Ll9zZXNzaW9uX3Jlc3VtZWQgPSBGYWxzZQotICAgICAgICBzZWxmLl9lbmNfa2V5OiBPcHRpb25h
bFtieXRlc10gPSBOb25lCi0gICAgICAgIHNlbGYuX2RlY19rZXk6IE9wdGlvbmFsW2J5dGVzXSA9
IE5vbmUKLSAgICAgICAgc2VsZi5fX2xvZ2dlciA9IGxvZ2dlcgotCi0gICAgICAgIHNlbGYuX2Vj
X3ByaXZhdGVfa2V5OiBPcHRpb25hbFtlYy5FbGxpcHRpY0N1cnZlUHJpdmF0ZUtleV0gPSBOb25l
Ci0gICAgICAgIHNlbGYuX3gyNTUxOV9wcml2YXRlX2tleTogT3B0aW9uYWxbeDI1NTE5LlgyNTUx
OVByaXZhdGVLZXldID0gTm9uZQotICAgICAgICBzZWxmLl94NDQ4X3ByaXZhdGVfa2V5OiBPcHRp
b25hbFt4NDQ4Llg0NDhQcml2YXRlS2V5XSA9IE5vbmUKLQotICAgICAgICBpZiBpc19jbGllbnQ6
Ci0gICAgICAgICAgICBzZWxmLmNsaWVudF9yYW5kb20gPSBvcy51cmFuZG9tKDMyKQotICAgICAg
ICAgICAgc2VsZi5sZWdhY3lfc2Vzc2lvbl9pZCA9IGIiIgotICAgICAgICAgICAgc2VsZi5zdGF0
ZSA9IFN0YXRlLkNMSUVOVF9IQU5EU0hBS0VfU1RBUlQKLSAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgIHNlbGYuY2xpZW50X3JhbmRvbSA9IE5vbmUKLSAgICAgICAgICAgIHNlbGYubGVnYWN5X3Nl
c3Npb25faWQgPSBOb25lCi0gICAgICAgICAgICBzZWxmLnN0YXRlID0gU3RhdGUuU0VSVkVSX0VY
UEVDVF9DTElFTlRfSEVMTE8KLQotICAgIEBwcm9wZXJ0eQotICAgIGRlZiBzZXNzaW9uX3Jlc3Vt
ZWQoc2VsZikgLT4gYm9vbDoKLSAgICAgICAgIiIiCi0gICAgICAgIFJldHVybnMgVHJ1ZSBpZiBz
ZXNzaW9uIHJlc3VtcHRpb24gd2FzIHN1Y2Nlc3NmdWxseSB1c2VkLgotICAgICAgICAiIiIKLSAg
ICAgICAgcmV0dXJuIHNlbGYuX3Nlc3Npb25fcmVzdW1lZAotCi0gICAgZGVmIGhhbmRsZV9tZXNz
YWdlKAotICAgICAgICBzZWxmLCBpbnB1dF9kYXRhOiBieXRlcywgb3V0cHV0X2J1ZjogRGljdFtF
cG9jaCwgQnVmZmVyXQotICAgICkgLT4gTm9uZToKLSAgICAgICAgaWYgc2VsZi5zdGF0ZSA9PSBT
dGF0ZS5DTElFTlRfSEFORFNIQUtFX1NUQVJUOgotICAgICAgICAgICAgc2VsZi5fY2xpZW50X3Nl
bmRfaGVsbG8ob3V0cHV0X2J1ZltFcG9jaC5JTklUSUFMXSkKLSAgICAgICAgICAgIHJldHVybgot
Ci0gICAgICAgIHNlbGYuX3JlY2VpdmVfYnVmZmVyICs9IGlucHV0X2RhdGEKLSAgICAgICAgd2hp
bGUgbGVuKHNlbGYuX3JlY2VpdmVfYnVmZmVyKSA+PSA0OgotICAgICAgICAgICAgIyBkZXRlcm1p
bmUgbWVzc2FnZSBsZW5ndGgKLSAgICAgICAgICAgIG1lc3NhZ2VfdHlwZSA9IHNlbGYuX3JlY2Vp
dmVfYnVmZmVyWzBdCi0gICAgICAgICAgICBtZXNzYWdlX2xlbmd0aCA9IDAKLSAgICAgICAgICAg
IGZvciBiIGluIHNlbGYuX3JlY2VpdmVfYnVmZmVyWzE6NF06Ci0gICAgICAgICAgICAgICAgbWVz
c2FnZV9sZW5ndGggPSAobWVzc2FnZV9sZW5ndGggPDwgOCkgfCBiCi0gICAgICAgICAgICBtZXNz
YWdlX2xlbmd0aCArPSA0Ci0KLSAgICAgICAgICAgICMgY2hlY2sgbWVzc2FnZSBpcyBjb21wbGV0
ZQotICAgICAgICAgICAgaWYgbGVuKHNlbGYuX3JlY2VpdmVfYnVmZmVyKSA8IG1lc3NhZ2VfbGVu
Z3RoOgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBtZXNzYWdlID0gc2VsZi5f
cmVjZWl2ZV9idWZmZXJbOm1lc3NhZ2VfbGVuZ3RoXQotICAgICAgICAgICAgc2VsZi5fcmVjZWl2
ZV9idWZmZXIgPSBzZWxmLl9yZWNlaXZlX2J1ZmZlclttZXNzYWdlX2xlbmd0aDpdCi0KLSAgICAg
ICAgICAgIGlucHV0X2J1ZiA9IEJ1ZmZlcihkYXRhPW1lc3NhZ2UpCi0KLSAgICAgICAgICAgICMg
Y2xpZW50IHN0YXRlcwotCi0gICAgICAgICAgICBpZiBzZWxmLnN0YXRlID09IFN0YXRlLkNMSUVO
VF9FWFBFQ1RfU0VSVkVSX0hFTExPOgotICAgICAgICAgICAgICAgIGlmIG1lc3NhZ2VfdHlwZSA9
PSBIYW5kc2hha2VUeXBlLlNFUlZFUl9IRUxMTzoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5f
Y2xpZW50X2hhbmRsZV9oZWxsbyhpbnB1dF9idWYsIG91dHB1dF9idWZbRXBvY2guSU5JVElBTF0p
Ci0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgQWxlcnRV
bmV4cGVjdGVkTWVzc2FnZQotICAgICAgICAgICAgZWxpZiBzZWxmLnN0YXRlID09IFN0YXRlLkNM
SUVOVF9FWFBFQ1RfRU5DUllQVEVEX0VYVEVOU0lPTlM6Ci0gICAgICAgICAgICAgICAgaWYgbWVz
c2FnZV90eXBlID09IEhhbmRzaGFrZVR5cGUuRU5DUllQVEVEX0VYVEVOU0lPTlM6Ci0gICAgICAg
ICAgICAgICAgICAgIHNlbGYuX2NsaWVudF9oYW5kbGVfZW5jcnlwdGVkX2V4dGVuc2lvbnMoaW5w
dXRfYnVmKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNl
IEFsZXJ0VW5leHBlY3RlZE1lc3NhZ2UKLSAgICAgICAgICAgIGVsaWYgc2VsZi5zdGF0ZSA9PSBT
dGF0ZS5DTElFTlRfRVhQRUNUX0NFUlRJRklDQVRFX1JFUVVFU1RfT1JfQ0VSVElGSUNBVEU6Ci0g
ICAgICAgICAgICAgICAgaWYgbWVzc2FnZV90eXBlID09IEhhbmRzaGFrZVR5cGUuQ0VSVElGSUNB
VEU6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2NsaWVudF9oYW5kbGVfY2VydGlmaWNhdGUo
aW5wdXRfYnVmKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICMg
RklYTUU6IGhhbmRsZSBjZXJ0aWZpY2F0ZSByZXF1ZXN0Ci0gICAgICAgICAgICAgICAgICAgIHJh
aXNlIEFsZXJ0VW5leHBlY3RlZE1lc3NhZ2UKLSAgICAgICAgICAgIGVsaWYgc2VsZi5zdGF0ZSA9
PSBTdGF0ZS5DTElFTlRfRVhQRUNUX0NFUlRJRklDQVRFX1ZFUklGWToKLSAgICAgICAgICAgICAg
ICBpZiBtZXNzYWdlX3R5cGUgPT0gSGFuZHNoYWtlVHlwZS5DRVJUSUZJQ0FURV9WRVJJRlk6Ci0g
ICAgICAgICAgICAgICAgICAgIHNlbGYuX2NsaWVudF9oYW5kbGVfY2VydGlmaWNhdGVfdmVyaWZ5
KGlucHV0X2J1ZikKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBy
YWlzZSBBbGVydFVuZXhwZWN0ZWRNZXNzYWdlCi0gICAgICAgICAgICBlbGlmIHNlbGYuc3RhdGUg
PT0gU3RhdGUuQ0xJRU5UX0VYUEVDVF9GSU5JU0hFRDoKLSAgICAgICAgICAgICAgICBpZiBtZXNz
YWdlX3R5cGUgPT0gSGFuZHNoYWtlVHlwZS5GSU5JU0hFRDoKLSAgICAgICAgICAgICAgICAgICAg
c2VsZi5fY2xpZW50X2hhbmRsZV9maW5pc2hlZChpbnB1dF9idWYsIG91dHB1dF9idWZbRXBvY2gu
SEFORFNIQUtFXSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBy
YWlzZSBBbGVydFVuZXhwZWN0ZWRNZXNzYWdlCi0gICAgICAgICAgICBlbGlmIHNlbGYuc3RhdGUg
PT0gU3RhdGUuQ0xJRU5UX1BPU1RfSEFORFNIQUtFOgotICAgICAgICAgICAgICAgIGlmIG1lc3Nh
Z2VfdHlwZSA9PSBIYW5kc2hha2VUeXBlLk5FV19TRVNTSU9OX1RJQ0tFVDoKLSAgICAgICAgICAg
ICAgICAgICAgc2VsZi5fY2xpZW50X2hhbmRsZV9uZXdfc2Vzc2lvbl90aWNrZXQoaW5wdXRfYnVm
KQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEFsZXJ0
VW5leHBlY3RlZE1lc3NhZ2UKLQotICAgICAgICAgICAgIyBzZXJ2ZXIgc3RhdGVzCi0KLSAgICAg
ICAgICAgIGVsaWYgc2VsZi5zdGF0ZSA9PSBTdGF0ZS5TRVJWRVJfRVhQRUNUX0NMSUVOVF9IRUxM
TzoKLSAgICAgICAgICAgICAgICBpZiBtZXNzYWdlX3R5cGUgPT0gSGFuZHNoYWtlVHlwZS5DTElF
TlRfSEVMTE86Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3NlcnZlcl9oYW5kbGVfaGVsbG8o
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dF9idWYsCi0gICAgICAgICAgICAgICAgICAg
ICAgICBvdXRwdXRfYnVmW0Vwb2NoLklOSVRJQUxdLAotICAgICAgICAgICAgICAgICAgICAgICAg
b3V0cHV0X2J1ZltFcG9jaC5IQU5EU0hBS0VdLAotICAgICAgICAgICAgICAgICAgICAgICAgb3V0
cHV0X2J1ZltFcG9jaC5PTkVfUlRUXSwKLSAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAg
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEFsZXJ0VW5leHBlY3RlZE1l
c3NhZ2UKLSAgICAgICAgICAgIGVsaWYgc2VsZi5zdGF0ZSA9PSBTdGF0ZS5TRVJWRVJfRVhQRUNU
X0ZJTklTSEVEOgotICAgICAgICAgICAgICAgIGlmIG1lc3NhZ2VfdHlwZSA9PSBIYW5kc2hha2VU
eXBlLkZJTklTSEVEOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9zZXJ2ZXJfaGFuZGxlX2Zp
bmlzaGVkKGlucHV0X2J1Ziwgb3V0cHV0X2J1ZltFcG9jaC5PTkVfUlRUXSkKLSAgICAgICAgICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBBbGVydFVuZXhwZWN0ZWRNZXNz
YWdlCi0gICAgICAgICAgICBlbGlmIHNlbGYuc3RhdGUgPT0gU3RhdGUuU0VSVkVSX1BPU1RfSEFO
RFNIQUtFOgotICAgICAgICAgICAgICAgIHJhaXNlIEFsZXJ0VW5leHBlY3RlZE1lc3NhZ2UKLQot
ICAgICAgICAgICAgYXNzZXJ0IGlucHV0X2J1Zi5lb2YoKQotCi0gICAgZGVmIF9idWlsZF9zZXNz
aW9uX3RpY2tldCgKLSAgICAgICAgc2VsZiwgbmV3X3Nlc3Npb25fdGlja2V0OiBOZXdTZXNzaW9u
VGlja2V0Ci0gICAgKSAtPiBTZXNzaW9uVGlja2V0OgotICAgICAgICByZXN1bXB0aW9uX21hc3Rl
cl9zZWNyZXQgPSBzZWxmLmtleV9zY2hlZHVsZS5kZXJpdmVfc2VjcmV0KGIicmVzIG1hc3RlciIp
Ci0gICAgICAgIHJlc3VtcHRpb25fc2VjcmV0ID0gaGtkZl9leHBhbmRfbGFiZWwoCi0gICAgICAg
ICAgICBhbGdvcml0aG09c2VsZi5rZXlfc2NoZWR1bGUuYWxnb3JpdGhtLAotICAgICAgICAgICAg
c2VjcmV0PXJlc3VtcHRpb25fbWFzdGVyX3NlY3JldCwKLSAgICAgICAgICAgIGxhYmVsPWIicmVz
dW1wdGlvbiIsCi0gICAgICAgICAgICBoYXNoX3ZhbHVlPW5ld19zZXNzaW9uX3RpY2tldC50aWNr
ZXRfbm9uY2UsCi0gICAgICAgICAgICBsZW5ndGg9c2VsZi5rZXlfc2NoZWR1bGUuYWxnb3JpdGht
LmRpZ2VzdF9zaXplLAotICAgICAgICApCi0KLSAgICAgICAgdGltZXN0YW1wID0gdXRjbm93KCkK
LSAgICAgICAgcmV0dXJuIFNlc3Npb25UaWNrZXQoCi0gICAgICAgICAgICBhZ2VfYWRkPW5ld19z
ZXNzaW9uX3RpY2tldC50aWNrZXRfYWdlX2FkZCwKLSAgICAgICAgICAgIGNpcGhlcl9zdWl0ZT1z
ZWxmLmtleV9zY2hlZHVsZS5jaXBoZXJfc3VpdGUsCi0gICAgICAgICAgICBtYXhfZWFybHlfZGF0
YV9zaXplPW5ld19zZXNzaW9uX3RpY2tldC5tYXhfZWFybHlfZGF0YV9zaXplLAotICAgICAgICAg
ICAgbm90X3ZhbGlkX2FmdGVyPXRpbWVzdGFtcAotICAgICAgICAgICAgKyBkYXRldGltZS50aW1l
ZGVsdGEoc2Vjb25kcz1uZXdfc2Vzc2lvbl90aWNrZXQudGlja2V0X2xpZmV0aW1lKSwKLSAgICAg
ICAgICAgIG5vdF92YWxpZF9iZWZvcmU9dGltZXN0YW1wLAotICAgICAgICAgICAgb3RoZXJfZXh0
ZW5zaW9ucz1zZWxmLmhhbmRzaGFrZV9leHRlbnNpb25zLAotICAgICAgICAgICAgcmVzdW1wdGlv
bl9zZWNyZXQ9cmVzdW1wdGlvbl9zZWNyZXQsCi0gICAgICAgICAgICBzZXJ2ZXJfbmFtZT1zZWxm
Ll9zZXJ2ZXJfbmFtZSwKLSAgICAgICAgICAgIHRpY2tldD1uZXdfc2Vzc2lvbl90aWNrZXQudGlj
a2V0LAotICAgICAgICApCi0KLSAgICBkZWYgX2NsaWVudF9zZW5kX2hlbGxvKHNlbGYsIG91dHB1
dF9idWY6IEJ1ZmZlcikgLT4gTm9uZToKLSAgICAgICAga2V5X3NoYXJlOiBMaXN0W0tleVNoYXJl
RW50cnldID0gW10KLSAgICAgICAgc3VwcG9ydGVkX2dyb3VwczogTGlzdFtpbnRdID0gW10KLQot
ICAgICAgICBmb3IgZ3JvdXAgaW4gc2VsZi5fc3VwcG9ydGVkX2dyb3VwczoKLSAgICAgICAgICAg
IGlmIGdyb3VwID09IEdyb3VwLlNFQ1AyNTZSMToKLSAgICAgICAgICAgICAgICBzZWxmLl9lY19w
cml2YXRlX2tleSA9IGVjLmdlbmVyYXRlX3ByaXZhdGVfa2V5KAotICAgICAgICAgICAgICAgICAg
ICBHUk9VUF9UT19DVVJWRVtHcm91cC5TRUNQMjU2UjFdKCksIGRlZmF1bHRfYmFja2VuZCgpCi0g
ICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgIGtleV9zaGFyZS5hcHBlbmQoZW5jb2Rl
X3B1YmxpY19rZXkoc2VsZi5fZWNfcHJpdmF0ZV9rZXkucHVibGljX2tleSgpKSkKLSAgICAgICAg
ICAgICAgICBzdXBwb3J0ZWRfZ3JvdXBzLmFwcGVuZChHcm91cC5TRUNQMjU2UjEpCi0gICAgICAg
ICAgICBlbGlmIGdyb3VwID09IEdyb3VwLlgyNTUxOToKLSAgICAgICAgICAgICAgICBzZWxmLl94
MjU1MTlfcHJpdmF0ZV9rZXkgPSB4MjU1MTkuWDI1NTE5UHJpdmF0ZUtleS5nZW5lcmF0ZSgpCi0g
ICAgICAgICAgICAgICAga2V5X3NoYXJlLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAgICAgZW5j
b2RlX3B1YmxpY19rZXkoc2VsZi5feDI1NTE5X3ByaXZhdGVfa2V5LnB1YmxpY19rZXkoKSkKLSAg
ICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgc3VwcG9ydGVkX2dyb3Vwcy5hcHBlbmQo
R3JvdXAuWDI1NTE5KQotICAgICAgICAgICAgZWxpZiBncm91cCA9PSBHcm91cC5YNDQ4OgotICAg
ICAgICAgICAgICAgIHNlbGYuX3g0NDhfcHJpdmF0ZV9rZXkgPSB4NDQ4Llg0NDhQcml2YXRlS2V5
LmdlbmVyYXRlKCkKLSAgICAgICAgICAgICAgICBrZXlfc2hhcmUuYXBwZW5kKGVuY29kZV9wdWJs
aWNfa2V5KHNlbGYuX3g0NDhfcHJpdmF0ZV9rZXkucHVibGljX2tleSgpKSkKLSAgICAgICAgICAg
ICAgICBzdXBwb3J0ZWRfZ3JvdXBzLmFwcGVuZChHcm91cC5YNDQ4KQotICAgICAgICAgICAgZWxp
ZiBncm91cCA9PSBHcm91cC5HUkVBU0U6Ci0gICAgICAgICAgICAgICAga2V5X3NoYXJlLmFwcGVu
ZCgoR3JvdXAuR1JFQVNFLCBiIlx4MDAiKSkKLSAgICAgICAgICAgICAgICBzdXBwb3J0ZWRfZ3Jv
dXBzLmFwcGVuZChHcm91cC5HUkVBU0UpCi0KLSAgICAgICAgYXNzZXJ0IGxlbihrZXlfc2hhcmUp
LCAibm8ga2V5IHNoYXJlIGVudHJpZXMiCi0KLSAgICAgICAgaGVsbG8gPSBDbGllbnRIZWxsbygK
LSAgICAgICAgICAgIHJhbmRvbT1zZWxmLmNsaWVudF9yYW5kb20sCi0gICAgICAgICAgICBsZWdh
Y3lfc2Vzc2lvbl9pZD1zZWxmLmxlZ2FjeV9zZXNzaW9uX2lkLAotICAgICAgICAgICAgY2lwaGVy
X3N1aXRlcz1baW50KHgpIGZvciB4IGluIHNlbGYuX2NpcGhlcl9zdWl0ZXNdLAotICAgICAgICAg
ICAgbGVnYWN5X2NvbXByZXNzaW9uX21ldGhvZHM9c2VsZi5fbGVnYWN5X2NvbXByZXNzaW9uX21l
dGhvZHMsCi0gICAgICAgICAgICBhbHBuX3Byb3RvY29scz1zZWxmLl9hbHBuX3Byb3RvY29scywK
LSAgICAgICAgICAgIGtleV9zaGFyZT1rZXlfc2hhcmUsCi0gICAgICAgICAgICBwc2tfa2V5X2V4
Y2hhbmdlX21vZGVzPXNlbGYuX3Bza19rZXlfZXhjaGFuZ2VfbW9kZXMKLSAgICAgICAgICAgIGlm
IChzZWxmLnNlc3Npb25fdGlja2V0IG9yIHNlbGYubmV3X3Nlc3Npb25fdGlja2V0X2NiIGlzIG5v
dCBOb25lKQotICAgICAgICAgICAgZWxzZSBOb25lLAotICAgICAgICAgICAgc2VydmVyX25hbWU9
c2VsZi5fc2VydmVyX25hbWUsCi0gICAgICAgICAgICBzaWduYXR1cmVfYWxnb3JpdGhtcz1zZWxm
Ll9zaWduYXR1cmVfYWxnb3JpdGhtcywKLSAgICAgICAgICAgIHN1cHBvcnRlZF9ncm91cHM9c3Vw
cG9ydGVkX2dyb3VwcywKLSAgICAgICAgICAgIHN1cHBvcnRlZF92ZXJzaW9ucz1zZWxmLl9zdXBw
b3J0ZWRfdmVyc2lvbnMsCi0gICAgICAgICAgICBvdGhlcl9leHRlbnNpb25zPXNlbGYuaGFuZHNo
YWtlX2V4dGVuc2lvbnMsCi0gICAgICAgICkKLQotICAgICAgICAjIFBTSwotICAgICAgICBpZiBz
ZWxmLnNlc3Npb25fdGlja2V0IGFuZCBzZWxmLnNlc3Npb25fdGlja2V0LmlzX3ZhbGlkOgotICAg
ICAgICAgICAgc2VsZi5fa2V5X3NjaGVkdWxlX3BzayA9IEtleVNjaGVkdWxlKHNlbGYuc2Vzc2lv
bl90aWNrZXQuY2lwaGVyX3N1aXRlKQotICAgICAgICAgICAgc2VsZi5fa2V5X3NjaGVkdWxlX3Bz
ay5leHRyYWN0KHNlbGYuc2Vzc2lvbl90aWNrZXQucmVzdW1wdGlvbl9zZWNyZXQpCi0gICAgICAg
ICAgICBiaW5kZXJfa2V5ID0gc2VsZi5fa2V5X3NjaGVkdWxlX3Bzay5kZXJpdmVfc2VjcmV0KGIi
cmVzIGJpbmRlciIpCi0gICAgICAgICAgICBiaW5kZXJfbGVuZ3RoID0gc2VsZi5fa2V5X3NjaGVk
dWxlX3Bzay5hbGdvcml0aG0uZGlnZXN0X3NpemUKLQotICAgICAgICAgICAgIyB1cGRhdGUgaGVs
bG8KLSAgICAgICAgICAgIGlmIHNlbGYuc2Vzc2lvbl90aWNrZXQubWF4X2Vhcmx5X2RhdGFfc2l6
ZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBoZWxsby5lYXJseV9kYXRhID0gVHJ1ZQot
ICAgICAgICAgICAgaGVsbG8ucHJlX3NoYXJlZF9rZXkgPSBPZmZlcmVkUHNrcygKLSAgICAgICAg
ICAgICAgICBpZGVudGl0aWVzPVsKLSAgICAgICAgICAgICAgICAgICAgKHNlbGYuc2Vzc2lvbl90
aWNrZXQudGlja2V0LCBzZWxmLnNlc3Npb25fdGlja2V0Lm9iZnVzY2F0ZWRfYWdlKQotICAgICAg
ICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgYmluZGVycz1bYnl0ZXMoYmluZGVyX2xlbmd0
aCldLAotICAgICAgICAgICAgKQotCi0gICAgICAgICAgICAjIHNlcmlhbGl6ZSBoZWxsbyB3aXRo
b3V0IGJpbmRlcgotICAgICAgICAgICAgdG1wX2J1ZiA9IEJ1ZmZlcihjYXBhY2l0eT0xMDI0KQot
ICAgICAgICAgICAgcHVzaF9jbGllbnRfaGVsbG8odG1wX2J1ZiwgaGVsbG8pCi0KLSAgICAgICAg
ICAgICMgY2FsY3VsYXRlIGJpbmRlcgotICAgICAgICAgICAgaGFzaF9vZmZzZXQgPSB0bXBfYnVm
LnRlbGwoKSAtIGJpbmRlcl9sZW5ndGggLSAzCi0gICAgICAgICAgICBzZWxmLl9rZXlfc2NoZWR1
bGVfcHNrLnVwZGF0ZV9oYXNoKHRtcF9idWYuZGF0YV9zbGljZSgwLCBoYXNoX29mZnNldCkpCi0g
ICAgICAgICAgICBiaW5kZXIgPSBzZWxmLl9rZXlfc2NoZWR1bGVfcHNrLmZpbmlzaGVkX3Zlcmlm
eV9kYXRhKGJpbmRlcl9rZXkpCi0gICAgICAgICAgICBoZWxsby5wcmVfc2hhcmVkX2tleS5iaW5k
ZXJzWzBdID0gYmluZGVyCi0gICAgICAgICAgICBzZWxmLl9rZXlfc2NoZWR1bGVfcHNrLnVwZGF0
ZV9oYXNoKAotICAgICAgICAgICAgICAgIHRtcF9idWYuZGF0YV9zbGljZShoYXNoX29mZnNldCwg
aGFzaF9vZmZzZXQgKyAzKSArIGJpbmRlcgotICAgICAgICAgICAgKQotCi0gICAgICAgICAgICAj
IGNhbGN1bGF0ZSBlYXJseSBkYXRhIGtleQotICAgICAgICAgICAgaWYgaGVsbG8uZWFybHlfZGF0
YToKLSAgICAgICAgICAgICAgICBlYXJseV9rZXkgPSBzZWxmLl9rZXlfc2NoZWR1bGVfcHNrLmRl
cml2ZV9zZWNyZXQoYiJjIGUgdHJhZmZpYyIpCi0gICAgICAgICAgICAgICAgc2VsZi51cGRhdGVf
dHJhZmZpY19rZXlfY2IoCi0gICAgICAgICAgICAgICAgICAgIERpcmVjdGlvbi5FTkNSWVBULAot
ICAgICAgICAgICAgICAgICAgICBFcG9jaC5aRVJPX1JUVCwKLSAgICAgICAgICAgICAgICAgICAg
c2VsZi5fa2V5X3NjaGVkdWxlX3Bzay5jaXBoZXJfc3VpdGUsCi0gICAgICAgICAgICAgICAgICAg
IGVhcmx5X2tleSwKLSAgICAgICAgICAgICAgICApCi0KLSAgICAgICAgc2VsZi5fa2V5X3NjaGVk
dWxlX3Byb3h5ID0gS2V5U2NoZWR1bGVQcm94eShzZWxmLl9jaXBoZXJfc3VpdGVzKQotICAgICAg
ICBzZWxmLl9rZXlfc2NoZWR1bGVfcHJveHkuZXh0cmFjdChOb25lKQotCi0gICAgICAgIHdpdGgg
cHVzaF9tZXNzYWdlKHNlbGYuX2tleV9zY2hlZHVsZV9wcm94eSwgb3V0cHV0X2J1Zik6Ci0gICAg
ICAgICAgICBwdXNoX2NsaWVudF9oZWxsbyhvdXRwdXRfYnVmLCBoZWxsbykKLQotICAgICAgICBz
ZWxmLl9zZXRfc3RhdGUoU3RhdGUuQ0xJRU5UX0VYUEVDVF9TRVJWRVJfSEVMTE8pCi0KLSAgICBk
ZWYgX2NsaWVudF9oYW5kbGVfaGVsbG8oc2VsZiwgaW5wdXRfYnVmOiBCdWZmZXIsIG91dHB1dF9i
dWY6IEJ1ZmZlcikgLT4gTm9uZToKLSAgICAgICAgcGVlcl9oZWxsbyA9IHB1bGxfc2VydmVyX2hl
bGxvKGlucHV0X2J1ZikKLQotICAgICAgICBjaXBoZXJfc3VpdGUgPSBuZWdvdGlhdGUoCi0gICAg
ICAgICAgICBzZWxmLl9jaXBoZXJfc3VpdGVzLAotICAgICAgICAgICAgW3BlZXJfaGVsbG8uY2lw
aGVyX3N1aXRlXSwKLSAgICAgICAgICAgIEFsZXJ0SGFuZHNoYWtlRmFpbHVyZSgiVW5zdXBwb3J0
ZWQgY2lwaGVyIHN1aXRlIiksCi0gICAgICAgICkKLSAgICAgICAgYXNzZXJ0IHBlZXJfaGVsbG8u
Y29tcHJlc3Npb25fbWV0aG9kIGluIHNlbGYuX2xlZ2FjeV9jb21wcmVzc2lvbl9tZXRob2RzCi0g
ICAgICAgIGFzc2VydCBwZWVyX2hlbGxvLnN1cHBvcnRlZF92ZXJzaW9uIGluIHNlbGYuX3N1cHBv
cnRlZF92ZXJzaW9ucwotCi0gICAgICAgICMgc2VsZWN0IGtleSBzY2hlZHVsZQotICAgICAgICBp
ZiBwZWVyX2hlbGxvLnByZV9zaGFyZWRfa2V5IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgaWYg
KAotICAgICAgICAgICAgICAgIHNlbGYuX2tleV9zY2hlZHVsZV9wc2sgaXMgTm9uZQotICAgICAg
ICAgICAgICAgIG9yIHBlZXJfaGVsbG8ucHJlX3NoYXJlZF9rZXkgIT0gMAotICAgICAgICAgICAg
ICAgIG9yIGNpcGhlcl9zdWl0ZSAhPSBzZWxmLl9rZXlfc2NoZWR1bGVfcHNrLmNpcGhlcl9zdWl0
ZQotICAgICAgICAgICAgKToKLSAgICAgICAgICAgICAgICByYWlzZSBBbGVydElsbGVnYWxQYXJh
bWV0ZXIKLSAgICAgICAgICAgIHNlbGYua2V5X3NjaGVkdWxlID0gc2VsZi5fa2V5X3NjaGVkdWxl
X3BzawotICAgICAgICAgICAgc2VsZi5fc2Vzc2lvbl9yZXN1bWVkID0gVHJ1ZQotICAgICAgICBl
bHNlOgotICAgICAgICAgICAgc2VsZi5rZXlfc2NoZWR1bGUgPSBzZWxmLl9rZXlfc2NoZWR1bGVf
cHJveHkuc2VsZWN0KGNpcGhlcl9zdWl0ZSkKLSAgICAgICAgc2VsZi5fa2V5X3NjaGVkdWxlX3Bz
ayA9IE5vbmUKLSAgICAgICAgc2VsZi5fa2V5X3NjaGVkdWxlX3Byb3h5ID0gTm9uZQotCi0gICAg
ICAgICMgcGVyZm9ybSBrZXkgZXhjaGFuZ2UKLSAgICAgICAgcGVlcl9wdWJsaWNfa2V5ID0gZGVj
b2RlX3B1YmxpY19rZXkocGVlcl9oZWxsby5rZXlfc2hhcmUpCi0gICAgICAgIHNoYXJlZF9rZXk6
IE9wdGlvbmFsW2J5dGVzXSA9IE5vbmUKLSAgICAgICAgaWYgKAotICAgICAgICAgICAgaXNpbnN0
YW5jZShwZWVyX3B1YmxpY19rZXksIHgyNTUxOS5YMjU1MTlQdWJsaWNLZXkpCi0gICAgICAgICAg
ICBhbmQgc2VsZi5feDI1NTE5X3ByaXZhdGVfa2V5IGlzIG5vdCBOb25lCi0gICAgICAgICk6Ci0g
ICAgICAgICAgICBzaGFyZWRfa2V5ID0gc2VsZi5feDI1NTE5X3ByaXZhdGVfa2V5LmV4Y2hhbmdl
KHBlZXJfcHVibGljX2tleSkKLSAgICAgICAgZWxpZiAoCi0gICAgICAgICAgICBpc2luc3RhbmNl
KHBlZXJfcHVibGljX2tleSwgeDQ0OC5YNDQ4UHVibGljS2V5KQotICAgICAgICAgICAgYW5kIHNl
bGYuX3g0NDhfcHJpdmF0ZV9rZXkgaXMgbm90IE5vbmUKLSAgICAgICAgKToKLSAgICAgICAgICAg
IHNoYXJlZF9rZXkgPSBzZWxmLl94NDQ4X3ByaXZhdGVfa2V5LmV4Y2hhbmdlKHBlZXJfcHVibGlj
X2tleSkKLSAgICAgICAgZWxpZiAoCi0gICAgICAgICAgICBpc2luc3RhbmNlKHBlZXJfcHVibGlj
X2tleSwgZWMuRWxsaXB0aWNDdXJ2ZVB1YmxpY0tleSkKLSAgICAgICAgICAgIGFuZCBzZWxmLl9l
Y19wcml2YXRlX2tleSBpcyBub3QgTm9uZQotICAgICAgICAgICAgYW5kIHNlbGYuX2VjX3ByaXZh
dGVfa2V5LnB1YmxpY19rZXkoKS5jdXJ2ZS5fX2NsYXNzX18KLSAgICAgICAgICAgID09IHBlZXJf
cHVibGljX2tleS5jdXJ2ZS5fX2NsYXNzX18KLSAgICAgICAgKToKLSAgICAgICAgICAgIHNoYXJl
ZF9rZXkgPSBzZWxmLl9lY19wcml2YXRlX2tleS5leGNoYW5nZShlYy5FQ0RIKCksIHBlZXJfcHVi
bGljX2tleSkKLSAgICAgICAgYXNzZXJ0IHNoYXJlZF9rZXkgaXMgbm90IE5vbmUKLQotICAgICAg
ICBzZWxmLmtleV9zY2hlZHVsZS51cGRhdGVfaGFzaChpbnB1dF9idWYuZGF0YSkKLSAgICAgICAg
c2VsZi5rZXlfc2NoZWR1bGUuZXh0cmFjdChzaGFyZWRfa2V5KQotCi0gICAgICAgIHNlbGYuX3Nl
dHVwX3RyYWZmaWNfcHJvdGVjdGlvbigKLSAgICAgICAgICAgIERpcmVjdGlvbi5ERUNSWVBULCBF
cG9jaC5IQU5EU0hBS0UsIGIicyBocyB0cmFmZmljIgotICAgICAgICApCi0KLSAgICAgICAgc2Vs
Zi5fc2V0X3N0YXRlKFN0YXRlLkNMSUVOVF9FWFBFQ1RfRU5DUllQVEVEX0VYVEVOU0lPTlMpCi0K
LSAgICBkZWYgX2NsaWVudF9oYW5kbGVfZW5jcnlwdGVkX2V4dGVuc2lvbnMoc2VsZiwgaW5wdXRf
YnVmOiBCdWZmZXIpIC0+IE5vbmU6Ci0gICAgICAgIGVuY3J5cHRlZF9leHRlbnNpb25zID0gcHVs
bF9lbmNyeXB0ZWRfZXh0ZW5zaW9ucyhpbnB1dF9idWYpCi0KLSAgICAgICAgc2VsZi5hbHBuX25l
Z290aWF0ZWQgPSBlbmNyeXB0ZWRfZXh0ZW5zaW9ucy5hbHBuX3Byb3RvY29sCi0gICAgICAgIHNl
bGYuZWFybHlfZGF0YV9hY2NlcHRlZCA9IGVuY3J5cHRlZF9leHRlbnNpb25zLmVhcmx5X2RhdGEK
LSAgICAgICAgc2VsZi5yZWNlaXZlZF9leHRlbnNpb25zID0gZW5jcnlwdGVkX2V4dGVuc2lvbnMu
b3RoZXJfZXh0ZW5zaW9ucwotICAgICAgICBpZiBzZWxmLmFscG5fY2I6Ci0gICAgICAgICAgICBz
ZWxmLmFscG5fY2Ioc2VsZi5hbHBuX25lZ290aWF0ZWQpCi0KLSAgICAgICAgc2VsZi5fc2V0dXBf
dHJhZmZpY19wcm90ZWN0aW9uKAotICAgICAgICAgICAgRGlyZWN0aW9uLkVOQ1JZUFQsIEVwb2No
LkhBTkRTSEFLRSwgYiJjIGhzIHRyYWZmaWMiCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5rZXlf
c2NoZWR1bGUudXBkYXRlX2hhc2goaW5wdXRfYnVmLmRhdGEpCi0KLSAgICAgICAgIyBpZiB0aGUg
c2VydmVyIGFjY2VwdGVkIG91ciBQU0sgd2UgYXJlIGRvbmUsIG90aGVyIHdlIHdhbnQgaXRzIGNl
cnRpZmljYXRlCi0gICAgICAgIGlmIHNlbGYuX3Nlc3Npb25fcmVzdW1lZDoKLSAgICAgICAgICAg
IHNlbGYuX3NldF9zdGF0ZShTdGF0ZS5DTElFTlRfRVhQRUNUX0ZJTklTSEVEKQotICAgICAgICBl
bHNlOgotICAgICAgICAgICAgc2VsZi5fc2V0X3N0YXRlKFN0YXRlLkNMSUVOVF9FWFBFQ1RfQ0VS
VElGSUNBVEVfUkVRVUVTVF9PUl9DRVJUSUZJQ0FURSkKLQotICAgIGRlZiBfY2xpZW50X2hhbmRs
ZV9jZXJ0aWZpY2F0ZShzZWxmLCBpbnB1dF9idWY6IEJ1ZmZlcikgLT4gTm9uZToKLSAgICAgICAg
Y2VydGlmaWNhdGUgPSBwdWxsX2NlcnRpZmljYXRlKGlucHV0X2J1ZikKLQotICAgICAgICBzZWxm
Ll9wZWVyX2NlcnRpZmljYXRlID0geDUwOS5sb2FkX2Rlcl94NTA5X2NlcnRpZmljYXRlKAotICAg
ICAgICAgICAgY2VydGlmaWNhdGUuY2VydGlmaWNhdGVzWzBdWzBdLCBiYWNrZW5kPWRlZmF1bHRf
YmFja2VuZCgpCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5fcGVlcl9jZXJ0aWZpY2F0ZV9jaGFp
biA9IFsKLSAgICAgICAgICAgIHg1MDkubG9hZF9kZXJfeDUwOV9jZXJ0aWZpY2F0ZSgKLSAgICAg
ICAgICAgICAgICBjZXJ0aWZpY2F0ZS5jZXJ0aWZpY2F0ZXNbaV1bMF0sIGJhY2tlbmQ9ZGVmYXVs
dF9iYWNrZW5kKCkKLSAgICAgICAgICAgICkKLSAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDEs
IGxlbihjZXJ0aWZpY2F0ZS5jZXJ0aWZpY2F0ZXMpKQotICAgICAgICBdCi0KLSAgICAgICAgc2Vs
Zi5rZXlfc2NoZWR1bGUudXBkYXRlX2hhc2goaW5wdXRfYnVmLmRhdGEpCi0KLSAgICAgICAgc2Vs
Zi5fc2V0X3N0YXRlKFN0YXRlLkNMSUVOVF9FWFBFQ1RfQ0VSVElGSUNBVEVfVkVSSUZZKQotCi0g
ICAgZGVmIF9jbGllbnRfaGFuZGxlX2NlcnRpZmljYXRlX3ZlcmlmeShzZWxmLCBpbnB1dF9idWY6
IEJ1ZmZlcikgLT4gTm9uZToKLSAgICAgICAgdmVyaWZ5ID0gcHVsbF9jZXJ0aWZpY2F0ZV92ZXJp
ZnkoaW5wdXRfYnVmKQotCi0gICAgICAgIGFzc2VydCB2ZXJpZnkuYWxnb3JpdGhtIGluIHNlbGYu
X3NpZ25hdHVyZV9hbGdvcml0aG1zCi0KLSAgICAgICAgIyBjaGVjayBzaWduYXR1cmUKLSAgICAg
ICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fcGVlcl9jZXJ0aWZpY2F0ZS5wdWJsaWNfa2V5KCku
dmVyaWZ5KAotICAgICAgICAgICAgICAgIHZlcmlmeS5zaWduYXR1cmUsCi0gICAgICAgICAgICAg
ICAgc2VsZi5rZXlfc2NoZWR1bGUuY2VydGlmaWNhdGVfdmVyaWZ5X2RhdGEoCi0gICAgICAgICAg
ICAgICAgICAgIGIiVExTIDEuMywgc2VydmVyIENlcnRpZmljYXRlVmVyaWZ5IgotICAgICAgICAg
ICAgICAgICksCi0gICAgICAgICAgICAgICAgKnNpZ25hdHVyZV9hbGdvcml0aG1fcGFyYW1zKHZl
cmlmeS5hbGdvcml0aG0pLAotICAgICAgICAgICAgKQotICAgICAgICBleGNlcHQgSW52YWxpZFNp
Z25hdHVyZToKLSAgICAgICAgICAgIHJhaXNlIEFsZXJ0RGVjcnlwdEVycm9yCi0KLSAgICAgICAg
IyBjaGVjayBjZXJ0aWZpY2F0ZQotICAgICAgICBpZiBzZWxmLl92ZXJpZnlfbW9kZSAhPSBzc2wu
Q0VSVF9OT05FOgotICAgICAgICAgICAgdmVyaWZ5X2NlcnRpZmljYXRlKAotICAgICAgICAgICAg
ICAgIGNhZGF0YT1zZWxmLl9jYWRhdGEsCi0gICAgICAgICAgICAgICAgY2FmaWxlPXNlbGYuX2Nh
ZmlsZSwKLSAgICAgICAgICAgICAgICBjYXBhdGg9c2VsZi5fY2FwYXRoLAotICAgICAgICAgICAg
ICAgIGNlcnRpZmljYXRlPXNlbGYuX3BlZXJfY2VydGlmaWNhdGUsCi0gICAgICAgICAgICAgICAg
Y2hhaW49c2VsZi5fcGVlcl9jZXJ0aWZpY2F0ZV9jaGFpbiwKLSAgICAgICAgICAgICAgICBzZXJ2
ZXJfbmFtZT1zZWxmLl9zZXJ2ZXJfbmFtZSwKLSAgICAgICAgICAgICkKLQotICAgICAgICBzZWxm
LmtleV9zY2hlZHVsZS51cGRhdGVfaGFzaChpbnB1dF9idWYuZGF0YSkKLQotICAgICAgICBzZWxm
Ll9zZXRfc3RhdGUoU3RhdGUuQ0xJRU5UX0VYUEVDVF9GSU5JU0hFRCkKLQotICAgIGRlZiBfY2xp
ZW50X2hhbmRsZV9maW5pc2hlZChzZWxmLCBpbnB1dF9idWY6IEJ1ZmZlciwgb3V0cHV0X2J1Zjog
QnVmZmVyKSAtPiBOb25lOgotICAgICAgICBmaW5pc2hlZCA9IHB1bGxfZmluaXNoZWQoaW5wdXRf
YnVmKQotCi0gICAgICAgICMgY2hlY2sgdmVyaWZ5IGRhdGEKLSAgICAgICAgZXhwZWN0ZWRfdmVy
aWZ5X2RhdGEgPSBzZWxmLmtleV9zY2hlZHVsZS5maW5pc2hlZF92ZXJpZnlfZGF0YShzZWxmLl9k
ZWNfa2V5KQotICAgICAgICBpZiBmaW5pc2hlZC52ZXJpZnlfZGF0YSAhPSBleHBlY3RlZF92ZXJp
ZnlfZGF0YToKLSAgICAgICAgICAgIHJhaXNlIEFsZXJ0RGVjcnlwdEVycm9yCi0gICAgICAgIHNl
bGYua2V5X3NjaGVkdWxlLnVwZGF0ZV9oYXNoKGlucHV0X2J1Zi5kYXRhKQotCi0gICAgICAgICMg
cHJlcGFyZSB0cmFmZmljIGtleXMKLSAgICAgICAgYXNzZXJ0IHNlbGYua2V5X3NjaGVkdWxlLmdl
bmVyYXRpb24gPT0gMgotICAgICAgICBzZWxmLmtleV9zY2hlZHVsZS5leHRyYWN0KE5vbmUpCi0g
ICAgICAgIHNlbGYuX3NldHVwX3RyYWZmaWNfcHJvdGVjdGlvbigKLSAgICAgICAgICAgIERpcmVj
dGlvbi5ERUNSWVBULCBFcG9jaC5PTkVfUlRULCBiInMgYXAgdHJhZmZpYyIKLSAgICAgICAgKQot
ICAgICAgICBuZXh0X2VuY19rZXkgPSBzZWxmLmtleV9zY2hlZHVsZS5kZXJpdmVfc2VjcmV0KGIi
YyBhcCB0cmFmZmljIikKLQotICAgICAgICAjIHNlbmQgZmluaXNoZWQKLSAgICAgICAgd2l0aCBw
dXNoX21lc3NhZ2Uoc2VsZi5rZXlfc2NoZWR1bGUsIG91dHB1dF9idWYpOgotICAgICAgICAgICAg
cHVzaF9maW5pc2hlZCgKLSAgICAgICAgICAgICAgICBvdXRwdXRfYnVmLAotICAgICAgICAgICAg
ICAgIEZpbmlzaGVkKAotICAgICAgICAgICAgICAgICAgICB2ZXJpZnlfZGF0YT1zZWxmLmtleV9z
Y2hlZHVsZS5maW5pc2hlZF92ZXJpZnlfZGF0YShzZWxmLl9lbmNfa2V5KQotICAgICAgICAgICAg
ICAgICksCi0gICAgICAgICAgICApCi0KLSAgICAgICAgIyBjb21taXQgdHJhZmZpYyBrZXkKLSAg
ICAgICAgc2VsZi5fZW5jX2tleSA9IG5leHRfZW5jX2tleQotICAgICAgICBzZWxmLnVwZGF0ZV90
cmFmZmljX2tleV9jYigKLSAgICAgICAgICAgIERpcmVjdGlvbi5FTkNSWVBULAotICAgICAgICAg
ICAgRXBvY2guT05FX1JUVCwKLSAgICAgICAgICAgIHNlbGYua2V5X3NjaGVkdWxlLmNpcGhlcl9z
dWl0ZSwKLSAgICAgICAgICAgIHNlbGYuX2VuY19rZXksCi0gICAgICAgICkKLQotICAgICAgICBz
ZWxmLl9zZXRfc3RhdGUoU3RhdGUuQ0xJRU5UX1BPU1RfSEFORFNIQUtFKQotCi0gICAgZGVmIF9j
bGllbnRfaGFuZGxlX25ld19zZXNzaW9uX3RpY2tldChzZWxmLCBpbnB1dF9idWY6IEJ1ZmZlcikg
LT4gTm9uZToKLSAgICAgICAgbmV3X3Nlc3Npb25fdGlja2V0ID0gcHVsbF9uZXdfc2Vzc2lvbl90
aWNrZXQoaW5wdXRfYnVmKQotCi0gICAgICAgICMgbm90aWZ5IGFwcGxpY2F0aW9uCi0gICAgICAg
IGlmIHNlbGYubmV3X3Nlc3Npb25fdGlja2V0X2NiIGlzIG5vdCBOb25lOgotICAgICAgICAgICAg
dGlja2V0ID0gc2VsZi5fYnVpbGRfc2Vzc2lvbl90aWNrZXQobmV3X3Nlc3Npb25fdGlja2V0KQot
ICAgICAgICAgICAgc2VsZi5uZXdfc2Vzc2lvbl90aWNrZXRfY2IodGlja2V0KQotCi0gICAgZGVm
IF9zZXJ2ZXJfaGFuZGxlX2hlbGxvKAotICAgICAgICBzZWxmLAotICAgICAgICBpbnB1dF9idWY6
IEJ1ZmZlciwKLSAgICAgICAgaW5pdGlhbF9idWY6IEJ1ZmZlciwKLSAgICAgICAgaGFuZHNoYWtl
X2J1ZjogQnVmZmVyLAotICAgICAgICBvbmVydHRfYnVmOiBCdWZmZXIsCi0gICAgKSAtPiBOb25l
OgotICAgICAgICBwZWVyX2hlbGxvID0gcHVsbF9jbGllbnRfaGVsbG8oaW5wdXRfYnVmKQotCi0g
ICAgICAgICMgZGV0ZXJtaW5lIGFwcGxpY2FibGUgc2lnbmF0dXJlIGFsZ29yaXRobXMKLSAgICAg
ICAgc2lnbmF0dXJlX2FsZ29yaXRobXM6IExpc3RbU2lnbmF0dXJlQWxnb3JpdGhtXSA9IFtdCi0g
ICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5jZXJ0aWZpY2F0ZV9wcml2YXRlX2tleSwgcnNhLlJT
QVByaXZhdGVLZXkpOgotICAgICAgICAgICAgc2lnbmF0dXJlX2FsZ29yaXRobXMgPSBbCi0gICAg
ICAgICAgICAgICAgU2lnbmF0dXJlQWxnb3JpdGhtLlJTQV9QU1NfUlNBRV9TSEEyNTYsCi0gICAg
ICAgICAgICAgICAgU2lnbmF0dXJlQWxnb3JpdGhtLlJTQV9QS0NTMV9TSEEyNTYsCi0gICAgICAg
ICAgICAgICAgU2lnbmF0dXJlQWxnb3JpdGhtLlJTQV9QS0NTMV9TSEExLAotICAgICAgICAgICAg
XQotICAgICAgICBlbGlmIGlzaW5zdGFuY2UoCi0gICAgICAgICAgICBzZWxmLmNlcnRpZmljYXRl
X3ByaXZhdGVfa2V5LCBlYy5FbGxpcHRpY0N1cnZlUHJpdmF0ZUtleQotICAgICAgICApIGFuZCBp
c2luc3RhbmNlKHNlbGYuY2VydGlmaWNhdGVfcHJpdmF0ZV9rZXkuY3VydmUsIGVjLlNFQ1AyNTZS
MSk6Ci0gICAgICAgICAgICBzaWduYXR1cmVfYWxnb3JpdGhtcyA9IFtTaWduYXR1cmVBbGdvcml0
aG0uRUNEU0FfU0VDUDI1NlIxX1NIQTI1Nl0KLQotICAgICAgICAjIG5lZ290aWF0ZSBwYXJhbWV0
ZXJzCi0gICAgICAgIGNpcGhlcl9zdWl0ZSA9IG5lZ290aWF0ZSgKLSAgICAgICAgICAgIHNlbGYu
X2NpcGhlcl9zdWl0ZXMsCi0gICAgICAgICAgICBwZWVyX2hlbGxvLmNpcGhlcl9zdWl0ZXMsCi0g
ICAgICAgICAgICBBbGVydEhhbmRzaGFrZUZhaWx1cmUoIk5vIHN1cHBvcnRlZCBjaXBoZXIgc3Vp
dGUiKSwKLSAgICAgICAgKQotICAgICAgICBjb21wcmVzc2lvbl9tZXRob2QgPSBuZWdvdGlhdGUo
Ci0gICAgICAgICAgICBzZWxmLl9sZWdhY3lfY29tcHJlc3Npb25fbWV0aG9kcywKLSAgICAgICAg
ICAgIHBlZXJfaGVsbG8ubGVnYWN5X2NvbXByZXNzaW9uX21ldGhvZHMsCi0gICAgICAgICAgICBB
bGVydEhhbmRzaGFrZUZhaWx1cmUoIk5vIHN1cHBvcnRlZCBjb21wcmVzc2lvbiBtZXRob2QiKSwK
LSAgICAgICAgKQotICAgICAgICBwc2tfa2V5X2V4Y2hhbmdlX21vZGUgPSBuZWdvdGlhdGUoCi0g
ICAgICAgICAgICBzZWxmLl9wc2tfa2V5X2V4Y2hhbmdlX21vZGVzLCBwZWVyX2hlbGxvLnBza19r
ZXlfZXhjaGFuZ2VfbW9kZXMKLSAgICAgICAgKQotICAgICAgICBzaWduYXR1cmVfYWxnb3JpdGht
ID0gbmVnb3RpYXRlKAotICAgICAgICAgICAgc2lnbmF0dXJlX2FsZ29yaXRobXMsCi0gICAgICAg
ICAgICBwZWVyX2hlbGxvLnNpZ25hdHVyZV9hbGdvcml0aG1zLAotICAgICAgICAgICAgQWxlcnRI
YW5kc2hha2VGYWlsdXJlKCJObyBzdXBwb3J0ZWQgc2lnbmF0dXJlIGFsZ29yaXRobSIpLAotICAg
ICAgICApCi0gICAgICAgIHN1cHBvcnRlZF92ZXJzaW9uID0gbmVnb3RpYXRlKAotICAgICAgICAg
ICAgc2VsZi5fc3VwcG9ydGVkX3ZlcnNpb25zLAotICAgICAgICAgICAgcGVlcl9oZWxsby5zdXBw
b3J0ZWRfdmVyc2lvbnMsCi0gICAgICAgICAgICBBbGVydFByb3RvY29sVmVyc2lvbigiTm8gc3Vw
cG9ydGVkIHByb3RvY29sIHZlcnNpb24iKSwKLSAgICAgICAgKQotCi0gICAgICAgICMgbmVnb3Rp
YXRlIEFMUE4KLSAgICAgICAgaWYgc2VsZi5fYWxwbl9wcm90b2NvbHMgaXMgbm90IE5vbmU6Ci0g
ICAgICAgICAgICBzZWxmLmFscG5fbmVnb3RpYXRlZCA9IG5lZ290aWF0ZSgKLSAgICAgICAgICAg
ICAgICBzZWxmLl9hbHBuX3Byb3RvY29scywKLSAgICAgICAgICAgICAgICBwZWVyX2hlbGxvLmFs
cG5fcHJvdG9jb2xzLAotICAgICAgICAgICAgICAgIEFsZXJ0SGFuZHNoYWtlRmFpbHVyZSgiTm8g
Y29tbW9uIEFMUE4gcHJvdG9jb2xzIiksCi0gICAgICAgICAgICApCi0gICAgICAgIGlmIHNlbGYu
YWxwbl9jYjoKLSAgICAgICAgICAgIHNlbGYuYWxwbl9jYihzZWxmLmFscG5fbmVnb3RpYXRlZCkK
LQotICAgICAgICBzZWxmLmNsaWVudF9yYW5kb20gPSBwZWVyX2hlbGxvLnJhbmRvbQotICAgICAg
ICBzZWxmLnNlcnZlcl9yYW5kb20gPSBvcy51cmFuZG9tKDMyKQotICAgICAgICBzZWxmLmxlZ2Fj
eV9zZXNzaW9uX2lkID0gcGVlcl9oZWxsby5sZWdhY3lfc2Vzc2lvbl9pZAotICAgICAgICBzZWxm
LnJlY2VpdmVkX2V4dGVuc2lvbnMgPSBwZWVyX2hlbGxvLm90aGVyX2V4dGVuc2lvbnMKLQotICAg
ICAgICAjIHNlbGVjdCBrZXkgc2NoZWR1bGUKLSAgICAgICAgcHJlX3NoYXJlZF9rZXkgPSBOb25l
Ci0gICAgICAgIGlmICgKLSAgICAgICAgICAgIHNlbGYuZ2V0X3Nlc3Npb25fdGlja2V0X2NiIGlz
IG5vdCBOb25lCi0gICAgICAgICAgICBhbmQgcHNrX2tleV9leGNoYW5nZV9tb2RlIGlzIG5vdCBO
b25lCi0gICAgICAgICAgICBhbmQgcGVlcl9oZWxsby5wcmVfc2hhcmVkX2tleSBpcyBub3QgTm9u
ZQotICAgICAgICAgICAgYW5kIGxlbihwZWVyX2hlbGxvLnByZV9zaGFyZWRfa2V5LmlkZW50aXRp
ZXMpID09IDEKLSAgICAgICAgICAgIGFuZCBsZW4ocGVlcl9oZWxsby5wcmVfc2hhcmVkX2tleS5i
aW5kZXJzKSA9PSAxCi0gICAgICAgICk6Ci0gICAgICAgICAgICAjIGFzayBhcHBsaWNhdGlvbiB0
byBmaW5kIHNlc3Npb24gdGlja2V0Ci0gICAgICAgICAgICBpZGVudGl0eSA9IHBlZXJfaGVsbG8u
cHJlX3NoYXJlZF9rZXkuaWRlbnRpdGllc1swXQotICAgICAgICAgICAgc2Vzc2lvbl90aWNrZXQg
PSBzZWxmLmdldF9zZXNzaW9uX3RpY2tldF9jYihpZGVudGl0eVswXSkKLQotICAgICAgICAgICAg
IyB2YWxpZGF0ZSBzZXNzaW9uIHRpY2tldAotICAgICAgICAgICAgaWYgKAotICAgICAgICAgICAg
ICAgIHNlc3Npb25fdGlja2V0IGlzIG5vdCBOb25lCi0gICAgICAgICAgICAgICAgYW5kIHNlc3Np
b25fdGlja2V0LmlzX3ZhbGlkCi0gICAgICAgICAgICAgICAgYW5kIHNlc3Npb25fdGlja2V0LmNp
cGhlcl9zdWl0ZSA9PSBjaXBoZXJfc3VpdGUKLSAgICAgICAgICAgICk6Ci0gICAgICAgICAgICAg
ICAgc2VsZi5rZXlfc2NoZWR1bGUgPSBLZXlTY2hlZHVsZShjaXBoZXJfc3VpdGUpCi0gICAgICAg
ICAgICAgICAgc2VsZi5rZXlfc2NoZWR1bGUuZXh0cmFjdChzZXNzaW9uX3RpY2tldC5yZXN1bXB0
aW9uX3NlY3JldCkKLQotICAgICAgICAgICAgICAgIGJpbmRlcl9rZXkgPSBzZWxmLmtleV9zY2hl
ZHVsZS5kZXJpdmVfc2VjcmV0KGIicmVzIGJpbmRlciIpCi0gICAgICAgICAgICAgICAgYmluZGVy
X2xlbmd0aCA9IHNlbGYua2V5X3NjaGVkdWxlLmFsZ29yaXRobS5kaWdlc3Rfc2l6ZQotCi0gICAg
ICAgICAgICAgICAgaGFzaF9vZmZzZXQgPSBpbnB1dF9idWYudGVsbCgpIC0gYmluZGVyX2xlbmd0
aCAtIDMKLSAgICAgICAgICAgICAgICBiaW5kZXIgPSBpbnB1dF9idWYuZGF0YV9zbGljZSgKLSAg
ICAgICAgICAgICAgICAgICAgaGFzaF9vZmZzZXQgKyAzLCBoYXNoX29mZnNldCArIDMgKyBiaW5k
ZXJfbGVuZ3RoCi0gICAgICAgICAgICAgICAgKQotCi0gICAgICAgICAgICAgICAgc2VsZi5rZXlf
c2NoZWR1bGUudXBkYXRlX2hhc2goaW5wdXRfYnVmLmRhdGFfc2xpY2UoMCwgaGFzaF9vZmZzZXQp
KQotICAgICAgICAgICAgICAgIGV4cGVjdGVkX2JpbmRlciA9IHNlbGYua2V5X3NjaGVkdWxlLmZp
bmlzaGVkX3ZlcmlmeV9kYXRhKGJpbmRlcl9rZXkpCi0KLSAgICAgICAgICAgICAgICBpZiBiaW5k
ZXIgIT0gZXhwZWN0ZWRfYmluZGVyOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBBbGVydEhh
bmRzaGFrZUZhaWx1cmUoIlBTSyB2YWxpZGF0aW9uIGZhaWxlZCIpCi0KLSAgICAgICAgICAgICAg
ICBzZWxmLmtleV9zY2hlZHVsZS51cGRhdGVfaGFzaCgKLSAgICAgICAgICAgICAgICAgICAgaW5w
dXRfYnVmLmRhdGFfc2xpY2UoaGFzaF9vZmZzZXQsIGhhc2hfb2Zmc2V0ICsgMyArIGJpbmRlcl9s
ZW5ndGgpCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgIHNlbGYuX3Nlc3Npb25f
cmVzdW1lZCA9IFRydWUKLQotICAgICAgICAgICAgICAgICMgY2FsY3VsYXRlIGVhcmx5IGRhdGEg
a2V5Ci0gICAgICAgICAgICAgICAgaWYgcGVlcl9oZWxsby5lYXJseV9kYXRhOgotICAgICAgICAg
ICAgICAgICAgICBlYXJseV9rZXkgPSBzZWxmLmtleV9zY2hlZHVsZS5kZXJpdmVfc2VjcmV0KGIi
YyBlIHRyYWZmaWMiKQotICAgICAgICAgICAgICAgICAgICBzZWxmLmVhcmx5X2RhdGFfYWNjZXB0
ZWQgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIHNlbGYudXBkYXRlX3RyYWZmaWNfa2V5X2Ni
KAotICAgICAgICAgICAgICAgICAgICAgICAgRGlyZWN0aW9uLkRFQ1JZUFQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBFcG9jaC5aRVJPX1JUVCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYua2V5X3NjaGVkdWxlLmNpcGhlcl9zdWl0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGVh
cmx5X2tleSwKLSAgICAgICAgICAgICAgICAgICAgKQotCi0gICAgICAgICAgICAgICAgcHJlX3No
YXJlZF9rZXkgPSAwCi0KLSAgICAgICAgIyBpZiBQU0sgaXMgbm90IHVzZWQsIGluaXRpYWxpemUg
a2V5IHNjaGVkdWxlCi0gICAgICAgIGlmIHByZV9zaGFyZWRfa2V5IGlzIE5vbmU6Ci0gICAgICAg
ICAgICBzZWxmLmtleV9zY2hlZHVsZSA9IEtleVNjaGVkdWxlKGNpcGhlcl9zdWl0ZSkKLSAgICAg
ICAgICAgIHNlbGYua2V5X3NjaGVkdWxlLmV4dHJhY3QoTm9uZSkKLSAgICAgICAgICAgIHNlbGYu
a2V5X3NjaGVkdWxlLnVwZGF0ZV9oYXNoKGlucHV0X2J1Zi5kYXRhKQotCi0gICAgICAgICMgcGVy
Zm9ybSBrZXkgZXhjaGFuZ2UKLSAgICAgICAgcHVibGljX2tleTogVW5pb25bCi0gICAgICAgICAg
ICBlYy5FbGxpcHRpY0N1cnZlUHVibGljS2V5LCB4MjU1MTkuWDI1NTE5UHVibGljS2V5LCB4NDQ4
Llg0NDhQdWJsaWNLZXkKLSAgICAgICAgXQotICAgICAgICBzaGFyZWRfa2V5OiBPcHRpb25hbFti
eXRlc10gPSBOb25lCi0gICAgICAgIGZvciBrZXlfc2hhcmUgaW4gcGVlcl9oZWxsby5rZXlfc2hh
cmU6Ci0gICAgICAgICAgICBwZWVyX3B1YmxpY19rZXkgPSBkZWNvZGVfcHVibGljX2tleShrZXlf
c2hhcmUpCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKHBlZXJfcHVibGljX2tleSwgeDI1NTE5
LlgyNTUxOVB1YmxpY0tleSk6Ci0gICAgICAgICAgICAgICAgc2VsZi5feDI1NTE5X3ByaXZhdGVf
a2V5ID0geDI1NTE5LlgyNTUxOVByaXZhdGVLZXkuZ2VuZXJhdGUoKQotICAgICAgICAgICAgICAg
IHB1YmxpY19rZXkgPSBzZWxmLl94MjU1MTlfcHJpdmF0ZV9rZXkucHVibGljX2tleSgpCi0gICAg
ICAgICAgICAgICAgc2hhcmVkX2tleSA9IHNlbGYuX3gyNTUxOV9wcml2YXRlX2tleS5leGNoYW5n
ZShwZWVyX3B1YmxpY19rZXkpCi0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGVs
aWYgaXNpbnN0YW5jZShwZWVyX3B1YmxpY19rZXksIHg0NDguWDQ0OFB1YmxpY0tleSk6Ci0gICAg
ICAgICAgICAgICAgc2VsZi5feDQ0OF9wcml2YXRlX2tleSA9IHg0NDguWDQ0OFByaXZhdGVLZXku
Z2VuZXJhdGUoKQotICAgICAgICAgICAgICAgIHB1YmxpY19rZXkgPSBzZWxmLl94NDQ4X3ByaXZh
dGVfa2V5LnB1YmxpY19rZXkoKQotICAgICAgICAgICAgICAgIHNoYXJlZF9rZXkgPSBzZWxmLl94
NDQ4X3ByaXZhdGVfa2V5LmV4Y2hhbmdlKHBlZXJfcHVibGljX2tleSkKLSAgICAgICAgICAgICAg
ICBicmVhawotICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHBlZXJfcHVibGljX2tleSwgZWMu
RWxsaXB0aWNDdXJ2ZVB1YmxpY0tleSk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fZWNfcHJpdmF0
ZV9rZXkgPSBlYy5nZW5lcmF0ZV9wcml2YXRlX2tleSgKLSAgICAgICAgICAgICAgICAgICAgR1JP
VVBfVE9fQ1VSVkVba2V5X3NoYXJlWzBdXSgpLCBkZWZhdWx0X2JhY2tlbmQoKQotICAgICAgICAg
ICAgICAgICkKLSAgICAgICAgICAgICAgICBwdWJsaWNfa2V5ID0gc2VsZi5fZWNfcHJpdmF0ZV9r
ZXkucHVibGljX2tleSgpCi0gICAgICAgICAgICAgICAgc2hhcmVkX2tleSA9IHNlbGYuX2VjX3By
aXZhdGVfa2V5LmV4Y2hhbmdlKGVjLkVDREgoKSwgcGVlcl9wdWJsaWNfa2V5KQotICAgICAgICAg
ICAgICAgIGJyZWFrCi0gICAgICAgIGFzc2VydCBzaGFyZWRfa2V5IGlzIG5vdCBOb25lCi0KLSAg
ICAgICAgIyBzZW5kIGhlbGxvCi0gICAgICAgIGhlbGxvID0gU2VydmVySGVsbG8oCi0gICAgICAg
ICAgICByYW5kb209c2VsZi5zZXJ2ZXJfcmFuZG9tLAotICAgICAgICAgICAgbGVnYWN5X3Nlc3Np
b25faWQ9c2VsZi5sZWdhY3lfc2Vzc2lvbl9pZCwKLSAgICAgICAgICAgIGNpcGhlcl9zdWl0ZT1j
aXBoZXJfc3VpdGUsCi0gICAgICAgICAgICBjb21wcmVzc2lvbl9tZXRob2Q9Y29tcHJlc3Npb25f
bWV0aG9kLAotICAgICAgICAgICAga2V5X3NoYXJlPWVuY29kZV9wdWJsaWNfa2V5KHB1YmxpY19r
ZXkpLAotICAgICAgICAgICAgcHJlX3NoYXJlZF9rZXk9cHJlX3NoYXJlZF9rZXksCi0gICAgICAg
ICAgICBzdXBwb3J0ZWRfdmVyc2lvbj1zdXBwb3J0ZWRfdmVyc2lvbiwKLSAgICAgICAgKQotICAg
ICAgICB3aXRoIHB1c2hfbWVzc2FnZShzZWxmLmtleV9zY2hlZHVsZSwgaW5pdGlhbF9idWYpOgot
ICAgICAgICAgICAgcHVzaF9zZXJ2ZXJfaGVsbG8oaW5pdGlhbF9idWYsIGhlbGxvKQotICAgICAg
ICBzZWxmLmtleV9zY2hlZHVsZS5leHRyYWN0KHNoYXJlZF9rZXkpCi0KLSAgICAgICAgc2VsZi5f
c2V0dXBfdHJhZmZpY19wcm90ZWN0aW9uKAotICAgICAgICAgICAgRGlyZWN0aW9uLkVOQ1JZUFQs
IEVwb2NoLkhBTkRTSEFLRSwgYiJzIGhzIHRyYWZmaWMiCi0gICAgICAgICkKLSAgICAgICAgc2Vs
Zi5fc2V0dXBfdHJhZmZpY19wcm90ZWN0aW9uKAotICAgICAgICAgICAgRGlyZWN0aW9uLkRFQ1JZ
UFQsIEVwb2NoLkhBTkRTSEFLRSwgYiJjIGhzIHRyYWZmaWMiCi0gICAgICAgICkKLQotICAgICAg
ICAjIHNlbmQgZW5jcnlwdGVkIGV4dGVuc2lvbnMKLSAgICAgICAgd2l0aCBwdXNoX21lc3NhZ2Uo
c2VsZi5rZXlfc2NoZWR1bGUsIGhhbmRzaGFrZV9idWYpOgotICAgICAgICAgICAgcHVzaF9lbmNy
eXB0ZWRfZXh0ZW5zaW9ucygKLSAgICAgICAgICAgICAgICBoYW5kc2hha2VfYnVmLAotICAgICAg
ICAgICAgICAgIEVuY3J5cHRlZEV4dGVuc2lvbnMoCi0gICAgICAgICAgICAgICAgICAgIGFscG5f
cHJvdG9jb2w9c2VsZi5hbHBuX25lZ290aWF0ZWQsCi0gICAgICAgICAgICAgICAgICAgIGVhcmx5
X2RhdGE9c2VsZi5lYXJseV9kYXRhX2FjY2VwdGVkLAotICAgICAgICAgICAgICAgICAgICBvdGhl
cl9leHRlbnNpb25zPXNlbGYuaGFuZHNoYWtlX2V4dGVuc2lvbnMsCi0gICAgICAgICAgICAgICAg
KSwKLSAgICAgICAgICAgICkKLQotICAgICAgICBpZiBwcmVfc2hhcmVkX2tleSBpcyBOb25lOgot
ICAgICAgICAgICAgIyBzZW5kIGNlcnRpZmljYXRlCi0gICAgICAgICAgICB3aXRoIHB1c2hfbWVz
c2FnZShzZWxmLmtleV9zY2hlZHVsZSwgaGFuZHNoYWtlX2J1Zik6Ci0gICAgICAgICAgICAgICAg
cHVzaF9jZXJ0aWZpY2F0ZSgKLSAgICAgICAgICAgICAgICAgICAgaGFuZHNoYWtlX2J1ZiwKLSAg
ICAgICAgICAgICAgICAgICAgQ2VydGlmaWNhdGUoCi0gICAgICAgICAgICAgICAgICAgICAgICBy
ZXF1ZXN0X2NvbnRleHQ9YiIiLAotICAgICAgICAgICAgICAgICAgICAgICAgY2VydGlmaWNhdGVz
PVsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeC5wdWJsaWNfYnl0ZXMoRW5jb2Rpbmcu
REVSKSwgYiIiKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluIFtzZWxmLmNl
cnRpZmljYXRlXSArIHNlbGYuY2VydGlmaWNhdGVfY2hhaW4KLSAgICAgICAgICAgICAgICAgICAg
ICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICAgICAgKQotCi0gICAg
ICAgICAgICAjIHNlbmQgY2VydGlmaWNhdGUgdmVyaWZ5Ci0gICAgICAgICAgICBzaWduYXR1cmUg
PSBzZWxmLmNlcnRpZmljYXRlX3ByaXZhdGVfa2V5LnNpZ24oCi0gICAgICAgICAgICAgICAgc2Vs
Zi5rZXlfc2NoZWR1bGUuY2VydGlmaWNhdGVfdmVyaWZ5X2RhdGEoCi0gICAgICAgICAgICAgICAg
ICAgIGIiVExTIDEuMywgc2VydmVyIENlcnRpZmljYXRlVmVyaWZ5IgotICAgICAgICAgICAgICAg
ICksCi0gICAgICAgICAgICAgICAgKnNpZ25hdHVyZV9hbGdvcml0aG1fcGFyYW1zKHNpZ25hdHVy
ZV9hbGdvcml0aG0pLAotICAgICAgICAgICAgKQotICAgICAgICAgICAgd2l0aCBwdXNoX21lc3Nh
Z2Uoc2VsZi5rZXlfc2NoZWR1bGUsIGhhbmRzaGFrZV9idWYpOgotICAgICAgICAgICAgICAgIHB1
c2hfY2VydGlmaWNhdGVfdmVyaWZ5KAotICAgICAgICAgICAgICAgICAgICBoYW5kc2hha2VfYnVm
LAotICAgICAgICAgICAgICAgICAgICBDZXJ0aWZpY2F0ZVZlcmlmeSgKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGFsZ29yaXRobT1zaWduYXR1cmVfYWxnb3JpdGhtLCBzaWduYXR1cmU9c2lnbmF0
dXJlCi0gICAgICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICAgICAgKQotCi0gICAgICAg
ICMgc2VuZCBmaW5pc2hlZAotICAgICAgICB3aXRoIHB1c2hfbWVzc2FnZShzZWxmLmtleV9zY2hl
ZHVsZSwgaGFuZHNoYWtlX2J1Zik6Ci0gICAgICAgICAgICBwdXNoX2ZpbmlzaGVkKAotICAgICAg
ICAgICAgICAgIGhhbmRzaGFrZV9idWYsCi0gICAgICAgICAgICAgICAgRmluaXNoZWQoCi0gICAg
ICAgICAgICAgICAgICAgIHZlcmlmeV9kYXRhPXNlbGYua2V5X3NjaGVkdWxlLmZpbmlzaGVkX3Zl
cmlmeV9kYXRhKHNlbGYuX2VuY19rZXkpCi0gICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAg
ICkKLQotICAgICAgICAjIHByZXBhcmUgdHJhZmZpYyBrZXlzCi0gICAgICAgIGFzc2VydCBzZWxm
LmtleV9zY2hlZHVsZS5nZW5lcmF0aW9uID09IDIKLSAgICAgICAgc2VsZi5rZXlfc2NoZWR1bGUu
ZXh0cmFjdChOb25lKQotICAgICAgICBzZWxmLl9zZXR1cF90cmFmZmljX3Byb3RlY3Rpb24oCi0g
ICAgICAgICAgICBEaXJlY3Rpb24uRU5DUllQVCwgRXBvY2guT05FX1JUVCwgYiJzIGFwIHRyYWZm
aWMiCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5fbmV4dF9kZWNfa2V5ID0gc2VsZi5rZXlfc2No
ZWR1bGUuZGVyaXZlX3NlY3JldChiImMgYXAgdHJhZmZpYyIpCi0KLSAgICAgICAgIyBhbnRpY2lw
YXRlIGNsaWVudCdzIEZJTklTSEVEIGFzIHdlIGRvbid0IHVzZSBjbGllbnQgYXV0aAotICAgICAg
ICBzZWxmLl9leHBlY3RlZF92ZXJpZnlfZGF0YSA9IHNlbGYua2V5X3NjaGVkdWxlLmZpbmlzaGVk
X3ZlcmlmeV9kYXRhKAotICAgICAgICAgICAgc2VsZi5fZGVjX2tleQotICAgICAgICApCi0gICAg
ICAgIGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0eT02NCkKLSAgICAgICAgcHVzaF9maW5pc2hlZChidWYs
IEZpbmlzaGVkKHZlcmlmeV9kYXRhPXNlbGYuX2V4cGVjdGVkX3ZlcmlmeV9kYXRhKSkKLSAgICAg
ICAgc2VsZi5rZXlfc2NoZWR1bGUudXBkYXRlX2hhc2goYnVmLmRhdGEpCi0KLSAgICAgICAgIyBj
cmVhdGUgYSBuZXcgc2Vzc2lvbiB0aWNrZXQKLSAgICAgICAgaWYgc2VsZi5uZXdfc2Vzc2lvbl90
aWNrZXRfY2IgaXMgbm90IE5vbmUgYW5kIHBza19rZXlfZXhjaGFuZ2VfbW9kZSBpcyBub3QgTm9u
ZToKLSAgICAgICAgICAgIHNlbGYuX25ld19zZXNzaW9uX3RpY2tldCA9IE5ld1Nlc3Npb25UaWNr
ZXQoCi0gICAgICAgICAgICAgICAgdGlja2V0X2xpZmV0aW1lPTg2NDAwLAotICAgICAgICAgICAg
ICAgIHRpY2tldF9hZ2VfYWRkPXN0cnVjdC51bnBhY2soIkkiLCBvcy51cmFuZG9tKDQpKVswXSwK
LSAgICAgICAgICAgICAgICB0aWNrZXRfbm9uY2U9YiIiLAotICAgICAgICAgICAgICAgIHRpY2tl
dD1vcy51cmFuZG9tKDY0KSwKLSAgICAgICAgICAgICAgICBtYXhfZWFybHlfZGF0YV9zaXplPXNl
bGYuX21heF9lYXJseV9kYXRhLAotICAgICAgICAgICAgKQotCi0gICAgICAgICAgICAjIHNlbmQg
bWVzc3NhZ2UKLSAgICAgICAgICAgIHB1c2hfbmV3X3Nlc3Npb25fdGlja2V0KG9uZXJ0dF9idWYs
IHNlbGYuX25ld19zZXNzaW9uX3RpY2tldCkKLQotICAgICAgICAgICAgIyBub3RpZnkgYXBwbGlj
YXRpb24KLSAgICAgICAgICAgIHRpY2tldCA9IHNlbGYuX2J1aWxkX3Nlc3Npb25fdGlja2V0KHNl
bGYuX25ld19zZXNzaW9uX3RpY2tldCkKLSAgICAgICAgICAgIHNlbGYubmV3X3Nlc3Npb25fdGlj
a2V0X2NiKHRpY2tldCkKLQotICAgICAgICBzZWxmLl9zZXRfc3RhdGUoU3RhdGUuU0VSVkVSX0VY
UEVDVF9GSU5JU0hFRCkKLQotICAgIGRlZiBfc2VydmVyX2hhbmRsZV9maW5pc2hlZChzZWxmLCBp
bnB1dF9idWY6IEJ1ZmZlciwgb3V0cHV0X2J1ZjogQnVmZmVyKSAtPiBOb25lOgotICAgICAgICBm
aW5pc2hlZCA9IHB1bGxfZmluaXNoZWQoaW5wdXRfYnVmKQotCi0gICAgICAgICMgY2hlY2sgdmVy
aWZ5IGRhdGEKLSAgICAgICAgaWYgZmluaXNoZWQudmVyaWZ5X2RhdGEgIT0gc2VsZi5fZXhwZWN0
ZWRfdmVyaWZ5X2RhdGE6Ci0gICAgICAgICAgICByYWlzZSBBbGVydERlY3J5cHRFcnJvcgotCi0g
ICAgICAgICMgY29tbWl0IHRyYWZmaWMga2V5Ci0gICAgICAgIHNlbGYuX2RlY19rZXkgPSBzZWxm
Ll9uZXh0X2RlY19rZXkKLSAgICAgICAgc2VsZi5fbmV4dF9kZWNfa2V5ID0gTm9uZQotICAgICAg
ICBzZWxmLnVwZGF0ZV90cmFmZmljX2tleV9jYigKLSAgICAgICAgICAgIERpcmVjdGlvbi5ERUNS
WVBULAotICAgICAgICAgICAgRXBvY2guT05FX1JUVCwKLSAgICAgICAgICAgIHNlbGYua2V5X3Nj
aGVkdWxlLmNpcGhlcl9zdWl0ZSwKLSAgICAgICAgICAgIHNlbGYuX2RlY19rZXksCi0gICAgICAg
ICkKLQotICAgICAgICBzZWxmLl9zZXRfc3RhdGUoU3RhdGUuU0VSVkVSX1BPU1RfSEFORFNIQUtF
KQotCi0gICAgZGVmIF9zZXR1cF90cmFmZmljX3Byb3RlY3Rpb24oCi0gICAgICAgIHNlbGYsIGRp
cmVjdGlvbjogRGlyZWN0aW9uLCBlcG9jaDogRXBvY2gsIGxhYmVsOiBieXRlcwotICAgICkgLT4g
Tm9uZToKLSAgICAgICAga2V5ID0gc2VsZi5rZXlfc2NoZWR1bGUuZGVyaXZlX3NlY3JldChsYWJl
bCkKLQotICAgICAgICBpZiBkaXJlY3Rpb24gPT0gRGlyZWN0aW9uLkVOQ1JZUFQ6Ci0gICAgICAg
ICAgICBzZWxmLl9lbmNfa2V5ID0ga2V5Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxm
Ll9kZWNfa2V5ID0ga2V5Ci0KLSAgICAgICAgc2VsZi51cGRhdGVfdHJhZmZpY19rZXlfY2IoCi0g
ICAgICAgICAgICBkaXJlY3Rpb24sIGVwb2NoLCBzZWxmLmtleV9zY2hlZHVsZS5jaXBoZXJfc3Vp
dGUsIGtleQotICAgICAgICApCi0KLSAgICBkZWYgX3NldF9zdGF0ZShzZWxmLCBzdGF0ZTogU3Rh
dGUpIC0+IE5vbmU6Ci0gICAgICAgIGlmIHNlbGYuX19sb2dnZXI6Ci0gICAgICAgICAgICBzZWxm
Ll9fbG9nZ2VyLmRlYnVnKCJUTFMgJXMgLT4gJXMiLCBzZWxmLnN0YXRlLCBzdGF0ZSkKLSAgICAg
ICAgc2VsZi5zdGF0ZSA9IHN0YXRlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1
aWMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvdzNjLWltcG9ydC5s
b2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkNGIwY2VlNDY2MTM0MmZlZTRlYzAz
MWMwNjJmOTM1NzQ3MGM1ZTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3czYy1pbXBvcnQubG9nCisrKyAvZGV2
L251bGwKQEAgLTEsMjUgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUg
aW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRl
c3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBv
biB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3Rz
L3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdl
YktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0K
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgot
Tm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWlj
L19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL19idWZmZXIuYwotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy9zcmMvYWlvcXVpYy9fYnVmZmVyLnB5aQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zcmMvYWlvcXVp
Yy9fY3J5cHRvLmMKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvX2NyeXB0by5weWkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvc3JjL2Fpb3F1aWMvYWJvdXQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvc3JjL2Fpb3F1aWMv
YnVmZmVyLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3NyYy9haW9xdWljL3B5LnR5cGVkCi0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9x
dWljL3NyYy9haW9xdWljL3Rscy5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL19f
aW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL19faW5pdF9fLnB5CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBhNjgzNGI4Mjg1YTU2YmVmMGUxNTQzZmQ5MDFjN2U2ZjJmOGJjMjAy
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy90ZXN0cy9fX2luaXRfXy5weQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSMgVGhp
cyBmaWxlIGlzIHJlcXVpcmVkIGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZv
ciBtb2R1bGVzLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy90ZXN0cy9pbml0aWFsX2NsaWVudC5iaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvaW5p
dGlhbF9jbGllbnQuYmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZDdiNzA1NWNk
YWFjYTk1ZWZmYjkzZTUxOWVjZTVlM2VkNTNjZDVlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgps
aXRlcmFsIDEyODAKemNtVitiMV5AY1l7e1IzUDIhKUZ8SGo5b3RaVTZ2OD8jNDhpQkBuIz5YLV5s
O0toPTl1PWkla0IkRSUtRVliZ3djCnpvNm5YcC1YY1M0bT57WiRPX3EmZVBubE9yLV5tTFhJaHk1
RT1FVzJTMGMyZWdPRVlOUXJIUiRHI01TJk5TO1olXwp6WHNpZDh4QlpRVnlmMDJpcDtASTZadGI+
WnpJbyNmMVY9T3I9RHM2MldoQUJHUWFeQlpfYm5KWkF4aXtqWXhhKkwKenV9dSlCP3ReekQxdXYw
UTxUOzZRenI4e24leilnLTA+QFd7PGRBJnAmV3VrR3F3dyVgNnthPSsraWIoays5UiplCnoqTzZ8
dUshfXYycF54fk14QHxUPzJnc3BkNnJeflpJKlo2bF9wVHdTT1VMb1RyIV9hP21IRi1nSWhgQHdA
Km4lfgp6WSZrWU8ycn1Ccyl8VXI8aTIjNk0mcSRsZGcqQjlLQF9HbUMrRGk3blp3TGxAJThsKGVK
c1lNNykyMCZ1NHo3P1IKenM8JDtSdHYjTD1YfU19JDhfKyk4VH5KRFg8KFFqOWBUc2hSNzR5O2ho
UEp1VFRwbFQrKj9gdzY+c1pqc2V0c1M3CnowYnA2N0stNGtkQ2NXNnBMVUBaQkNlYHtzMENSdCRm
b1NaYEh5VGkjO3FYVGErdFJAfENSJG1PYkFZWnl4aEJxdAp6RDNvWSg1aXBhVyVNI0JZN3F2WVc1
WkArI253eC1NNypmcHkjbyo3PG0rIWNsaj5IWFA9TlF+NiZpcmRiK0xLdjcKemVnZDBFQn10UCRe
Vk07N3h+dGY1ZiRfeCozTiR3WGFlQ0lxR1VUflF7R2JeeGN3UT9lMSRqPjlXVFFjM1U9KUJ3Cnp7
SnxJXiV8PVZCT3FwbHJmd2ZWRDc4SWBtNzxlXkYmI2ZeMm0/S3RadHdheDBNUGA3QWxhcE4rVTs/
I0FKJml6Tgp6clojU0U4QUFIIyVKdXApN3RvRmZgPi1oZGU7anFYZ0xKOHZgPkl5eklIfTElcXI7
Vmo/NlhFQlptKVU1PEZTQUwKej1hbjJZJDBSQ01XUj9AYTZMWkhJRXBxUX5ycXdYV3YoOX1udjFp
PD1iIXhTfksleGtZTGBzZlBNbG58OTh5PWNqCno/dmdWQmFfMFJvR3VhLUBOcU4kb29oV3k7elJG
cl5MVlFQR1RecG80O1YmNDsjTWhDYFlROGhudzFvNk5XZio4Xgp6JVF+LVpZeGcqT2lWQldJJjdI
dDUlNl9TKXRGOVVqN08jQTJTT0plR0VmY0I3NktBTEtMZCQxaVM3eFFTOyhANVoKemRAZWJQc05X
cUtHYEQ8Zi18anFGKCVRSU57NjElcjArSn5YJTNlV21DU3xoaExSfCRjWHJ7P0M8V1R7PD8xPE5e
CnpWdkkqUF9LeGBZdmlUfHhRYEl3enArR0FlOFl4VWVWdFokYz9uZU05UTspQEtOX2VTOF9mbDRL
ckVVU3hoX31saAp6dUg/YndGViU2OXshe0lyQkItbjF6alJBdlNxJGB6MCVKbWJFPyQ1dCE8Nm9S
KSNweiNJSy1WX0dDfCZeTn1nbkkKenRuSnMmJnZ5dm1XYmMmVUdDTldwX3hCQyh5ZzNTaDl9UFFq
ZFIoS3M+e2t9P2EmfCZfMV47KEplQE0+XnV2aDNWCnpmSzR7PXBjOWdNaD5sfTxremtlUFhDSGQ7
SFkpVH4kc1NgZSRUXy1aQEp3KTF4fmkyclIkbFJgKCVhaH5WRDgqNgp6dG9qKVJ4bm0mbWgjeWYq
Ri08eDFobklBNil9bWJJbGFCWG1pVHRPKGpIKTR6Y0h0M1lFU0lIO3wxUHg7dD1vOGkKeig4cjwl
VHdsNU5TOWkmWXw5QD1HKW9NcCVsaitkUW1IJCtmZ2tFfDtHQT51XzJ5dUA8bFo2ZF5udm1HbEhv
NzwjCnp2N20kfXBRYWRnRntHKUMqKnJTbzdoVktxdzU0X1gtSGs3I2JvX2R5SFhIdnpnQ3lqMkh6
TX1Hbys/KDIqOW4xKwp6RUhwejl5YHt7ZFE8P18kRWdfU3tpZUc0MUNjP1Nee0dCblkhRGY/dVZX
VCEzSXwqQDRVST93JnQ/SEBjQ3N4NmUKcSl5Xlo1M2BhQmJVJShLVm0yZCVueT9uMmFtemIofFVD
KjlSY1ZjTk95N0wjSTxBYjYzekh8b3cKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMv
aW5pdGlhbF9zZXJ2ZXIuYmluIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL2luaXRpYWxfc2VydmVyLmJp
bgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzViYmI5YzBhZmY4OTQ3NGZkNzAyMWY2
ZTFiNDRlMDViYTFhMWM0Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKbGl0ZXJhbCAyMDIKemNt
VjsqMDUkKT97e1IzUDAwPGRlWGYjZUopT2kzdnhWcVlQcXQ8Rz1lc1dLUG58QXVTVks/Nnl3UjVl
MFU9dTwzCnpGciNFVTl1e248V0JQKE9FP2V5Tmw3JkZuTENXYWZVMHBgR0tvVk07T1dUS3NZfiMy
fTlmQ2ZyRGV0RlA5PEhJfAp6ZWM0RH5rY3pSZyRVdj1nWT1+elI5YmBPVVg/dF9oQXslQWc8Rlcm
SCghOCE2Jj9eX3Vxd2xJQXhmWjdWNj9LJnoKeilQSkpSNHZ8Rjw3aVcqdGdLcj0wdV5IU05VT09G
I3Z9S1FvZyQoJW5GRTF0WHJ+OCRJdW9FKjRRdnZHI0ZlRz5iCkVjZTc3bEpPQlV5CgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3B5Y2FjZXJ0LnBlbSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0
cy9weWNhY2VydC5wZW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczMTUwYzk2MGYz
NTgxNGRlZjJjMmJjNWZhZjdiZGZlYjhkYWIzMGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3B5Y2FjZXJ0LnBlbQorKysg
L2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLUNlcnRpZmljYXRlOgotICAgIERhdGE6Ci0gICAg
ICAgIFZlcnNpb246IDMgKDB4MikKLSAgICAgICAgU2VyaWFsIE51bWJlcjoKLSAgICAgICAgICAg
IGNiOjJkOjgwOjk5OjVhOjY5OjUyOjViCi0gICAgU2lnbmF0dXJlIEFsZ29yaXRobTogc2hhMjU2
V2l0aFJTQUVuY3J5cHRpb24KLSAgICAgICAgSXNzdWVyOiBDPVhZLCBPPVB5dGhvbiBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uIENBLCBDTj1vdXItY2Etc2VydmVyCi0gICAgICAgIFZhbGlkaXR5Ci0gICAg
ICAgICAgICBOb3QgQmVmb3JlOiBBdWcgMjkgMTQ6MjM6MTYgMjAxOCBHTVQKLSAgICAgICAgICAg
IE5vdCBBZnRlciA6IEF1ZyAyNiAxNDoyMzoxNiAyMDI4IEdNVAotICAgICAgICBTdWJqZWN0OiBD
PVhZLCBPPVB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uIENBLCBDTj1vdXItY2Etc2VydmVyCi0g
ICAgICAgIFN1YmplY3QgUHVibGljIEtleSBJbmZvOgotICAgICAgICAgICAgUHVibGljIEtleSBB
bGdvcml0aG06IHJzYUVuY3J5cHRpb24KLSAgICAgICAgICAgICAgICBQdWJsaWMtS2V5OiAoMzA3
MiBiaXQpCi0gICAgICAgICAgICAgICAgTW9kdWx1czoKLSAgICAgICAgICAgICAgICAgICAgMDA6
OTc6ZWQ6NTU6NDE6YmE6MzY6MTc6OTU6ZGI6NzE6MWM6ZDM6ZTE6NjE6Ci0gICAgICAgICAgICAg
ICAgICAgIGFjOjU4OjczOmUzOmM2Ojk2OmNmOjJiOjFmOmI4OjA4OmY1OjlkOjRiOjRiOgotICAg
ICAgICAgICAgICAgICAgICBjNzozMDpmNjpiODowYjpiMzo1Mjo3MjphMDpiYjpjOTo0ZDozYjo4
ZTpkZjoKLSAgICAgICAgICAgICAgICAgICAgMjI6OGU6MDE6NTc6ODE6Yzk6OTI6NzM6Y2M6MDA6
YzY6ZWM6NzA6YjA6M2E6Ci0gICAgICAgICAgICAgICAgICAgIDE3OjQwOmMxOmRmOmYyOjhjOjM2
OjRjOmM0OmE3OjgxOmU3OmI2OjI0OjY4OgotICAgICAgICAgICAgICAgICAgICBlMjphMDo3ZToz
NTowNzoyZjphMDo1YjpmOTo0NTo0NjpmNzoxZTpmMDo0NjoKLSAgICAgICAgICAgICAgICAgICAg
MTE6ZmU6Y2E6MWE6M2M6NTA6ZjE6MjY6YTk6NWY6OWM6MjI6OWM6Zjg6NDE6Ci0gICAgICAgICAg
ICAgICAgICAgIGUxOmRmOjRmOjEyOjk1OjE5OjJmOjVjOjkwOjAxOjE3OjZlOjdlOjNlOjdkOgot
ICAgICAgICAgICAgICAgICAgICBjZjplOTowOTphZjoyNTpmODpmODo0Mjo3NzoyZDo2ZDo1Zjoz
NjpmMjo3ODoKLSAgICAgICAgICAgICAgICAgICAgMWU6N2Q6NGE6ODc6Njg6NjM6NmM6MDY6NzE6
MWI6OGQ6ZmE6MjU6ZmU6ZDQ6Ci0gICAgICAgICAgICAgICAgICAgIGQzOmY1OmE1OjE3OmIxOmVm
OmVhOjE3OmNiOjU0OmM4OjI3Ojk5OjgwOmNiOgotICAgICAgICAgICAgICAgICAgICAzYzo0NTpm
MToyYzo1MjoxYzpkZDoxZjo1MTo0NToyMDo1MDoxZTo1ZTphYjoKLSAgICAgICAgICAgICAgICAg
ICAgNTc6NzM6MWI6NDE6Nzg6OTY6ZGU6ODQ6YTQ6N2E6ZGQ6OGY6MzA6ODU6MzY6Ci0gICAgICAg
ICAgICAgICAgICAgIDU4Ojc5Ojc2OmEwOmQyOjYxOmM4OjFiOmE5Ojk0Ojk5OjYzOmM2OmVlOmY4
OgotICAgICAgICAgICAgICAgICAgICAxNDpiZjpiNDo1Mjo1NjozMTo5NzpmYTplYjphYzo1Mzo5
ZTo5NTpjZTo0YzoKLSAgICAgICAgICAgICAgICAgICAgYzQ6NWE6NGE6Yjc6Y2E6MDM6Mjc6NWI6
MzU6NTc6Y2U6MDI6ZGM6ZWM6Y2E6Ci0gICAgICAgICAgICAgICAgICAgIDY5OmY4OjhhOjVhOjM5
OmNiOjE2OjIwOjE1OjAzOjI0OjYxOjZjOmY0OjdhOgotICAgICAgICAgICAgICAgICAgICBmYzpi
Njo0ODplNTo1OToxMDo1Yzo0OTpkMDoyMzo5ZjpmYjo3MTo1ZTozYToKLSAgICAgICAgICAgICAg
ICAgICAgZTk6Njg6OWY6MzQ6NzI6ODA6Mjc6YjY6M2Y6NGM6YjE6ZDk6ZGI6NjM6N2Y6Ci0gICAg
ICAgICAgICAgICAgICAgIDY3OjY4OjRhOjZlOjExOmY4OmU4OmMwOmY0OjVhOjE2OjM5OjUzOjBi
OjY4OgotICAgICAgICAgICAgICAgICAgICBkZTo3NzpmYTo0NTplNzpmODo5MTpjZDo3ODpjZDoy
ODo5NDo5Nzo3MTo1NDoKLSAgICAgICAgICAgICAgICAgICAgZmI6Y2Y6ZjA6Mzc6ZGU6Yzk6MjY6
YzU6ZGM6MWI6OWU6ODk6NmQ6MDk6YWM6Ci0gICAgICAgICAgICAgICAgICAgIGM4OjQ0OjcxOmNi
OjZkOmYxOjk3OjMxOmQ1OjRjOjIwOjMzOmJmOjc1OjRhOgotICAgICAgICAgICAgICAgICAgICBh
MDplMDpkYzo2OToxMTplZDoyYTpiNDo2NDoxMDoxMTozMDo4YjowZTpiMDoKLSAgICAgICAgICAg
ICAgICAgICAgYTc6MTA6ZDg6OGE6YzU6YWE6MWI6Yzg6MjY6OGE6MjU6ZTc6NjY6OWY6YTU6Ci0g
ICAgICAgICAgICAgICAgICAgIDZhOjFhOjJmOjdjOjVmOjgzOmM2Ojc4OjRmOjFmCi0gICAgICAg
ICAgICAgICAgRXhwb25lbnQ6IDY1NTM3ICgweDEwMDAxKQotICAgICAgICBYNTA5djMgZXh0ZW5z
aW9uczoKLSAgICAgICAgICAgIFg1MDl2MyBTdWJqZWN0IEtleSBJZGVudGlmaWVyOiAKLSAgICAg
ICAgICAgICAgICBERDpCRjpDQTpEQTpFNjpEMTozNDpCQTozNzo3NToyMTpDQTo2Rjo5QTowODoy
ODpGMjozNTpCNjo0OAotICAgICAgICAgICAgWDUwOXYzIEF1dGhvcml0eSBLZXkgSWRlbnRpZmll
cjogCi0gICAgICAgICAgICAgICAga2V5aWQ6REQ6QkY6Q0E6REE6RTY6RDE6MzQ6QkE6Mzc6NzU6
MjE6Q0E6NkY6OUE6MDg6Mjg6RjI6MzU6QjY6NDgKLQotICAgICAgICAgICAgWDUwOXYzIEJhc2lj
IENvbnN0cmFpbnRzOiAKLSAgICAgICAgICAgICAgICBDQTpUUlVFCi0gICAgU2lnbmF0dXJlIEFs
Z29yaXRobTogc2hhMjU2V2l0aFJTQUVuY3J5cHRpb24KLSAgICAgICAgIDMzOjZhOjU0OmQzOjZi
OmMwOmQ3OjAxOjVmOjlkOmY0OjA1OmMxOjkzOjY2OjkwOjUwOmQwOgotICAgICAgICAgYjc6MTg6
ZTk6YjA6MWU6NGE6YTA6YjY6ZGE6NzY6OTM6YWY6ODQ6ZGI6YWQ6MTU6NTQ6MzE6Ci0gICAgICAg
ICAxNToxMzplNDpkZTo3ZTo0ZTowYzpkNTowOToxYzozNDozNTpiNjplNTo0YzpkNjo2Zjo2NToK
LSAgICAgICAgIDdkOjMyOjVmOmViOmZjOmE5OjZiOjA3OmY3OjQ5OjgyOmU1OjgxOjdlOjA3Ojgw
OjlhOjYzOgotICAgICAgICAgZjg6MmM6YzM6NDA6YmM6OGY6ZDQ6MmE6ZGE6M2U6ZDE6ZWU6MDg6
Yjc6NGQ6YTc6ODQ6Y2E6Ci0gICAgICAgICBmNDozZjphMTo5ODo0NTpiZTpiMTowNTo2OTplNzpk
ZjpkNzo5OTphYjoxYjplZTo4YjozMDoKLSAgICAgICAgIGNjOmY3OmZjOmU3OmQ0OjBiOjE3OmFl
Ojk3OmJmOmU0OjdiOmZkOjBmOmE3OmI0Ojg1Ojc5OgotICAgICAgICAgZTM6NTk6ZTI6MTY6ODc6
YmY6MWY6Mjk6NDU6MmM6MjM6OTM6NzY6YmU6YzA6ODc6MWQ6ZGU6Ci0gICAgICAgICBlYzoyYjo0
Mjo2YTplNTpiYjpjODpmNDowYTo0YTowODowYTo4Yzo1YzpkODo3ZDo0ZDpkMToKLSAgICAgICAg
IGI4OmJmOmQ1OmY3OjI5OmVkOjkyOmQxOjk0OjA0OmU4OjM1OjA2OjU3OjdmOjJjOjIzOjk3Ogot
ICAgICAgICAgODc6YTU6MzU6OGQ6MjY6ZDM6MWE6NDc6ZjI6MTY6ZDc6ZDk6YzY6ZDQ6MWY6MjM6
NDM6ZDM6Ci0gICAgICAgICAyNjo5OTozOTpjYToyMDpmNDo3MToyMzo2ZjowYzo0YTo3Njo3Njpm
Nzo3NjoxZjpiMzpmZToKLSAgICAgICAgIGJmOjQ3OmIwOmZjOjJhOjU2OjgxOmUxOmQyOmRkOmVl
OjA4OmQ4OmY0OmZmOjVhOmRjOjI1OgotICAgICAgICAgNjE6OGE6OTE6MDI6Yjk6ODY6MWM6ZjI6
NTA6NzM6NzY6MjU6MzU6ZmM6YjY6MjU6MjY6MTU6Ci0gICAgICAgICBjYjplYjpjNDoyYjo2MTow
YzoxYzplNzplZToyZjoxNzo5YjplYzpmMDpkNDphMTo4NDplNzoKLSAgICAgICAgIGQyOmFmOmRl
OmU0OjFiOjI0OjE0OmE3OjAxOjg3OmUzOmFiOjI5OjU4OjQ2OmEwOmQ5OmMwOgotICAgICAgICAg
MGE6ZTA6OGQ6ZDc6NTk6ZDM6MWI6Zjg6NTQ6MjA6M2U6Nzg6YTU6YTU6Yzg6NGY6OGI6MDM6Ci0g
ICAgICAgICBjNDo5Njo5ZjplYzpmYjo0NzpjZjo3NjoyZDo4ZDo2NTozNDoyNzpiZjpmYTphZTow
MTowNToKLSAgICAgICAgIDhhOmYzOjkyOjBhOmRkOjg5OjZjOjk3OmExOmM3OmU3OjYwOjUxOmU3
OmFjOmViOjRiOjdkOgotICAgICAgICAgMmM6Yjg6NjU6Yzk6ZmU6NWQ6NmE6NDg6NTU6OGU6ZTQ6
Yzc6Zjk6NmE6NDA6ZTE6Yjg6NjQ6Ci0gICAgICAgICA0NTplOTpiNTo1OToyOTphNTo1ZjpjZjo3
ZDo1ODo3ZDo2NDo3OTplNTphNDowOTphYzoxZToKLSAgICAgICAgIDc2OjY1OjNkOjk0OmM0OjY4
Ci0tLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KLU1JSUViVENDQXRXZ0F3SUJBZ0lKQU1zdGdK
bGFhVkpiTUEwR0NTcUdTSWIzRFFFQkN3VUFNRTB4Q3pBSkJnTlYKLUJBWVRBbGhaTVNZd0pBWURW
UVFLREIxUWVYUm9iMjRnVTI5bWRIZGhjbVVnUm05MWJtUmhkR2x2YmlCRFFURVcKLU1CUUdBMVVF
QXd3TmIzVnlMV05oTFhObGNuWmxjakFlRncweE9EQTRNamt4TkRJek1UWmFGdzB5T0RBNE1qWXgK
LU5ESXpNVFphTUUweEN6QUpCZ05WQkFZVEFsaFpNU1l3SkFZRFZRUUtEQjFRZVhSb2IyNGdVMjlt
ZEhkaGNtVWcKLVJtOTFibVJoZEdsdmJpQkRRVEVXTUJRR0ExVUVBd3dOYjNWeUxXTmhMWE5sY25a
bGNqQ0NBYUl3RFFZSktvWkkKLWh2Y05BUUVCQlFBRGdnR1BBRENDQVlvQ2dnR0JBSmZ0VlVHNk5o
ZVYyM0VjMCtGaHJGaHo0OGFXenlzZnVBajEKLW5VdEx4ekQydUF1elVuS2d1OGxOTzQ3ZklvNEJW
NEhKa25QTUFNYnNjTEE2RjBEQjMvS01Oa3pFcDRIbnRpUm8KLTRxQitOUWN2b0Z2NVJVYjNIdkJH
RWY3S0dqeFE4U2FwWDV3aW5QaEI0ZDlQRXBVWkwxeVFBUmR1Zmo1OXora0oKLXJ5WDQrRUozTFcx
Zk52SjRIbjFLaDJoamJBWnhHNDM2SmY3VTAvV2xGN0h2NmhmTFZNZ25tWURMUEVYeExGSWMKLTNS
OVJSU0JRSGw2clYzTWJRWGlXM29Ta2V0MlBNSVUyV0hsMm9OSmh5QnVwbEpsanh1NzRGTCswVWxZ
eGwvcnIKLXJGT2VsYzVNeEZwS3Q4b0RKMXMxVjg0QzNPekthZmlLV2puTEZpQVZBeVJoYlBSNi9M
Wkk1VmtRWEVuUUk1LzcKLWNWNDY2V2lmTkhLQUo3WS9UTEhaMjJOL1oyaEtiaEg0Nk1EMFdoWTVV
d3RvM25mNlJlZjRrYzE0elNpVWwzRlUKLSs4L3dOOTdKSnNYY0c1NkpiUW1zeUVSeHkyM3hsekhW
VENBenYzVktvT0RjYVJIdEtyUmtFQkV3aXc2d3B4RFkKLWlzV3FHOGdtaWlYblpwK2xhaG92ZkYr
RHhuaFBId0lEQVFBQm8xQXdUakFkQmdOVkhRNEVGZ1FVM2IvSzJ1YlIKLU5MbzNkU0hLYjVvSUtQ
STF0a2d3SHdZRFZSMGpCQmd3Rm9BVTNiL0sydWJSTkxvM2RTSEtiNW9JS1BJMXRrZ3cKLURBWURW
UjBUQkFVd0F3RUIvekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBWUVBTTJwVTAydkExd0ZmbmZRRnda
Tm0KLWtGRFF0eGpwc0I1S29MYmFkcE92aE51dEZWUXhGUlBrM241T0ROVUpIRFExdHVWTTFtOWxm
VEpmNi95cGF3ZjMKLVNZTGxnWDRIZ0pwaitDekRRTHlQMUNyYVB0SHVDTGROcDRUSzlEK2htRVcr
c1FWcDU5L1htYXNiN29zd3pQZjgKLTU5UUxGNjZYditSNy9RK250SVY1NDFuaUZvZS9IeWxGTENP
VGRyN0FoeDNlN0N0Q2F1Vzd5UFFLU2dnS2pGelkKLWZVM1J1TC9WOXludGt0R1VCT2cxQmxkL0xD
T1hoNlUxalNiVEdrZnlGdGZaeHRRZkkwUFRKcGs1eWlEMGNTTnYKLURFcDJkdmQySDdQK3YwZXcv
Q3BXZ2VIUzNlNEkyUFQvV3R3bFlZcVJBcm1HSFBKUWMzWWxOZnkySlNZVnkrdkUKLUsyRU1IT2Z1
THhlYjdQRFVvWVRuMHEvZTVCc2tGS2NCaCtPcktWaEdvTm5BQ3VDTjExblRHL2hVSUQ1NHBhWEkK
LVQ0c0R4SmFmN1B0SHozWXRqV1UwSjcvNnJnRUZpdk9TQ3QySmJKZWh4K2RnVWVlczYwdDlMTGhs
eWY1ZGFraFYKLWp1VEgrV3BBNGJoa1JlbTFXU21sWDg5OVdIMWtlZVdrQ2F3ZWRtVTlsTVJvCi0t
LS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMv
cmV0cnkuYmluIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3JldHJ5LmJpbgpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMGYzYmQ0OTgxYTRhNjU5NmI1MGVjNjVlZGJkNTFiMGI0Y2EzYmVlNC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMApHSVQgYmluYXJ5IHBhdGNo
CmxpdGVyYWwgMApIY21WP2QwMDAwMQoKbGl0ZXJhbCAxMjUKemNtVi1AMER9TVV7e1IzUDI8ZyNB
KndJWH5qdUh6QkFYO1JQJnd8KXI1e3FaTTtEQSUrTF4qbWopfGZkdzZINXJHCnpHSU14WV5oVlJG
LTJtLUBSMUElYztjfTJ8SzYoKXdQKFBPYHhSUT1fREVYKnJNUz1QMnc5N2tGIWg+Y1dnKW5wKQpm
bkhldFNYJXhqYFhfKUt9O2lKZTVkNDhrO3o+bXFwTFphQ1g5fWhaPwoKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy90ZXN0cy9zaG9ydF9oZWFkZXIuYmluIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3No
b3J0X2hlYWRlci5iaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI4MzY4M2QyZDVi
NTU1ZDliMDIzMTk5OTAyZmNlZTU3ZDFiNTkzN2UuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Nob3J0X2hlYWRlci5iaW4K
KysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1d9FqntZwOGtbmaPUwTNT9H7N5kycKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvc3Ns
X2NlcnQucGVtIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3NzbF9jZXJ0LnBlbQpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMWY3MTI3YTRiMDI1YWEyMzMyMzE5M2YwNmNmMTc3M2E1NjBlMzgx
MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvdGVzdHMvc3NsX2NlcnQucGVtCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAot
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCi1NSUlGOFRDQ0JGbWdBd0lCQWdJSkFNc3RnSmxh
YVZKY01BMEdDU3FHU0liM0RRRUJDd1VBTUUweEN6QUpCZ05WCi1CQVlUQWxoWk1TWXdKQVlEVlFR
S0RCMVFlWFJvYjI0Z1UyOW1kSGRoY21VZ1JtOTFibVJoZEdsdmJpQkRRVEVXCi1NQlFHQTFVRUF3
d05iM1Z5TFdOaExYTmxjblpsY2pBZUZ3MHhPREE0TWpreE5ESXpNVFphRncweU9EQTNNRGN4Ci1O
REl6TVRaYU1GOHhDekFKQmdOVkJBWVRBbGhaTVJjd0ZRWURWUVFIREE1RFlYTjBiR1VnUVc1MGFI
SmhlREVqCi1NQ0VHQTFVRUNnd2FVSGwwYUc5dUlGTnZablIzWVhKbElFWnZkVzVrWVhScGIyNHhF
akFRQmdOVkJBTU1DV3h2Ci1ZMkZzYUc5emREQ0NBYUl3RFFZSktvWklodmNOQVFFQkJRQURnZ0dQ
QURDQ0FZb0NnZ0dCQUo4b0x6ZEI3MzlrCi1ZeFppRnVrQkZHSXB5anFZa2owSTAxNXAvc0R6MU1U
N0RsamNaTEJMeTdPcW5rTHBCNXRuTTgyNTZEd2RpaFBBCi0zemxuZkV6VGZyOUREMHFGQlcySDVj
TUNvejdYMTdrb2VSaHpHRGQzZGtqVWVCalh2UjVxUm9zRzh3TTNsUXVnCi1VN0FpelkrM0F6YWox
eU4zbVo5SzVhMjBqcjU4S3FpbnorWHh4NnNiMkpmWVlmZjJuZUpiQmFoTm01aWQwQUQyCi1waS9U
dGhacU81RFVSSllvK01kZ1pPY3krN2pFak9Kc0xXWmQzWXpxNzhpTTA3cURqYnBJb1ZwRU5aQ1RI
VFdBCi1oWDhMSXF6ME9CbWg0d2VRcG00K3BsVTdFNHI0RDgydWF1b2NXdzhpeXV6bkNUdEFCV083
bjlmV3lTbWY5UVpDCi1XWXhIQUZwQlFzNnpVVnFBRDduaEZkVHFwUTliUmlhRW5qRTRIaUFjY1BX
K01Bb1N4Rm52L3JOekV6STZiNHpVCi1Oc3BGTWZnMWFOVmFtZGp4ZHBVWjFHRzFPa2YweVBKeWtx
RVg0UFpsM0xhMUJlMnE3WVoxd3lkUjUyM1hkK2YzCi1FTzQvZytpbUVUU0tuOGd5Q2Y2UnZpYjE3
NUw0cjJXVjFDWFFIN2dGd1pZQ29kNldIWXE1VFFJREFRQUJvNElCCi13RENDQWJ3d0ZBWURWUjBS
QkEwd0M0SUpiRzlqWVd4b2IzTjBNQTRHQTFVZER3RUIvd1FFQXdJRm9EQWRCZ05WCi1IU1VFRmpB
VUJnZ3JCZ0VGQlFjREFRWUlLd1lCQlFVSEF3SXdEQVlEVlIwVEFRSC9CQUl3QURBZEJnTlZIUTRF
Ci1GZ1FVaitvZDR6TmNBQmF6aTI5cmI5Tk15N1hMZkZVd2ZRWURWUjBqQkhZd2RJQVUzYi9LMnVi
Uk5MbzNkU0hLCi1iNW9JS1BJMXRraWhVYVJQTUUweEN6QUpCZ05WQkFZVEFsaFpNU1l3SkFZRFZR
UUtEQjFRZVhSb2IyNGdVMjltCi1kSGRoY21VZ1JtOTFibVJoZEdsdmJpQkRRVEVXTUJRR0ExVUVB
d3dOYjNWeUxXTmhMWE5sY25abGNvSUpBTXN0Ci1nSmxhYVZKYk1JR0RCZ2dyQmdFRkJRY0JBUVIz
TUhVd1BBWUlLd1lCQlFVSE1BS0dNR2gwZEhBNkx5OTBaWE4wCi1ZMkV1Y0hsMGFHOXVkR1Z6ZEM1
dVpYUXZkR1Z6ZEdOaEwzQjVZMkZqWlhKMExtTmxjakExQmdnckJnRUZCUWN3Ci1BWVlwYUhSMGNE
b3ZMM1JsYzNSallTNXdlWFJvYjI1MFpYTjBMbTVsZEM5MFpYTjBZMkV2YjJOemNDOHdRd1lECi1W
UjBmQkR3d09qQTRvRGFnTklZeWFIUjBjRG92TDNSbGMzUmpZUzV3ZVhSb2IyNTBaWE4wTG01bGRD
OTBaWE4wCi1ZMkV2Y21WMmIyTmhkR2x2Ymk1amNtd3dEUVlKS29aSWh2Y05BUUVMQlFBRGdnR0JB
Q2YxakZrUTlNYm5LQUMvCi11bzE3RXdQeEhLWmZzd1pWcENLNTI3TFZScjMzRE4xRGJyUjVaV2No
RENwVjdrQ09oWitmUjdzS0trMjJaSFNZCi1vSCt1M1BFdTIwSjNHT0IxaXlZMWFNTkI3V3ZJZDNK
dmFwcGRWV2tDL1ZwVXlGZkxzR1VERnVJUEFEbVpacUNiCi1pSk1YNGxvdGVUVmZsMWQ0eEsvMW1W
NkdxOU1SclJxaURmcFNFTG4rdjUzT005bUdzcHdXK05aMUNJcmJDdVcwCi1LeFovdFBrcW44UFNk
OWZOWlI3MGJCN3JXYm53cmwra0g4eEt4TGw2cWRsck1tZzc0V1d3aExlUXhLNys5RGRQCi1JYURl
bnpxeDVjd1dCR1kvQzBIY1FqMGdQdXkzbFNzMVYvcStmN1k2dXNwUFdQNTFQZ2lKTEl5d1hTNzVp
UkFyCi0rVUZHVHp3QXR5ZlRaU1FvRnlNbU1VTHFmazZUNUh0b1ZNcWZSdlB2SyttRkRMV0VzdFUx
TklCMUsvQ1JJN2dJCi1BWTY1Q2xUVSt6UlMvdGxGOElBN3RzRnZndEVmOGpzSTlrYW1saWRoUzFn
eWVnNGRXY1ZFclY0YWVUUEIxQVV2Ci1TdFBZUWtLTk0rTmp5dFdIbDV0TnVCb0ROTHNjMGdJL1dT
UGlJNENJWThMd29tT29pdz09Ci0tLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvdGVzdHMvc3NsX2NlcnRfd2l0aF9jaGFpbi5wZW0gYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvdGVzdHMvc3NsX2NlcnRfd2l0aF9jaGFpbi5wZW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGI2MGFkNDE2ODdlMmFmZDdhMGY5NGQxNTYxYWJkZWExZTVkZDQzNjEuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3Rz
L3NzbF9jZXJ0X3dpdGhfY2hhaW4ucGVtCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAot
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCi1NSUlGOFRDQ0JGbWdBd0lCQWdJSkFNc3RnSmxh
YVZKY01BMEdDU3FHU0liM0RRRUJDd1VBTUUweEN6QUpCZ05WCi1CQVlUQWxoWk1TWXdKQVlEVlFR
S0RCMVFlWFJvYjI0Z1UyOW1kSGRoY21VZ1JtOTFibVJoZEdsdmJpQkRRVEVXCi1NQlFHQTFVRUF3
d05iM1Z5TFdOaExYTmxjblpsY2pBZUZ3MHhPREE0TWpreE5ESXpNVFphRncweU9EQTNNRGN4Ci1O
REl6TVRaYU1GOHhDekFKQmdOVkJBWVRBbGhaTVJjd0ZRWURWUVFIREE1RFlYTjBiR1VnUVc1MGFI
SmhlREVqCi1NQ0VHQTFVRUNnd2FVSGwwYUc5dUlGTnZablIzWVhKbElFWnZkVzVrWVhScGIyNHhF
akFRQmdOVkJBTU1DV3h2Ci1ZMkZzYUc5emREQ0NBYUl3RFFZSktvWklodmNOQVFFQkJRQURnZ0dQ
QURDQ0FZb0NnZ0dCQUo4b0x6ZEI3MzlrCi1ZeFppRnVrQkZHSXB5anFZa2owSTAxNXAvc0R6MU1U
N0RsamNaTEJMeTdPcW5rTHBCNXRuTTgyNTZEd2RpaFBBCi0zemxuZkV6VGZyOUREMHFGQlcySDVj
TUNvejdYMTdrb2VSaHpHRGQzZGtqVWVCalh2UjVxUm9zRzh3TTNsUXVnCi1VN0FpelkrM0F6YWox
eU4zbVo5SzVhMjBqcjU4S3FpbnorWHh4NnNiMkpmWVlmZjJuZUpiQmFoTm01aWQwQUQyCi1waS9U
dGhacU81RFVSSllvK01kZ1pPY3krN2pFak9Kc0xXWmQzWXpxNzhpTTA3cURqYnBJb1ZwRU5aQ1RI
VFdBCi1oWDhMSXF6ME9CbWg0d2VRcG00K3BsVTdFNHI0RDgydWF1b2NXdzhpeXV6bkNUdEFCV083
bjlmV3lTbWY5UVpDCi1XWXhIQUZwQlFzNnpVVnFBRDduaEZkVHFwUTliUmlhRW5qRTRIaUFjY1BX
K01Bb1N4Rm52L3JOekV6STZiNHpVCi1Oc3BGTWZnMWFOVmFtZGp4ZHBVWjFHRzFPa2YweVBKeWtx
RVg0UFpsM0xhMUJlMnE3WVoxd3lkUjUyM1hkK2YzCi1FTzQvZytpbUVUU0tuOGd5Q2Y2UnZpYjE3
NUw0cjJXVjFDWFFIN2dGd1pZQ29kNldIWXE1VFFJREFRQUJvNElCCi13RENDQWJ3d0ZBWURWUjBS
QkEwd0M0SUpiRzlqWVd4b2IzTjBNQTRHQTFVZER3RUIvd1FFQXdJRm9EQWRCZ05WCi1IU1VFRmpB
VUJnZ3JCZ0VGQlFjREFRWUlLd1lCQlFVSEF3SXdEQVlEVlIwVEFRSC9CQUl3QURBZEJnTlZIUTRF
Ci1GZ1FVaitvZDR6TmNBQmF6aTI5cmI5Tk15N1hMZkZVd2ZRWURWUjBqQkhZd2RJQVUzYi9LMnVi
Uk5MbzNkU0hLCi1iNW9JS1BJMXRraWhVYVJQTUUweEN6QUpCZ05WQkFZVEFsaFpNU1l3SkFZRFZR
UUtEQjFRZVhSb2IyNGdVMjltCi1kSGRoY21VZ1JtOTFibVJoZEdsdmJpQkRRVEVXTUJRR0ExVUVB
d3dOYjNWeUxXTmhMWE5sY25abGNvSUpBTXN0Ci1nSmxhYVZKYk1JR0RCZ2dyQmdFRkJRY0JBUVIz
TUhVd1BBWUlLd1lCQlFVSE1BS0dNR2gwZEhBNkx5OTBaWE4wCi1ZMkV1Y0hsMGFHOXVkR1Z6ZEM1
dVpYUXZkR1Z6ZEdOaEwzQjVZMkZqWlhKMExtTmxjakExQmdnckJnRUZCUWN3Ci1BWVlwYUhSMGNE
b3ZMM1JsYzNSallTNXdlWFJvYjI1MFpYTjBMbTVsZEM5MFpYTjBZMkV2YjJOemNDOHdRd1lECi1W
UjBmQkR3d09qQTRvRGFnTklZeWFIUjBjRG92TDNSbGMzUmpZUzV3ZVhSb2IyNTBaWE4wTG01bGRD
OTBaWE4wCi1ZMkV2Y21WMmIyTmhkR2x2Ymk1amNtd3dEUVlKS29aSWh2Y05BUUVMQlFBRGdnR0JB
Q2YxakZrUTlNYm5LQUMvCi11bzE3RXdQeEhLWmZzd1pWcENLNTI3TFZScjMzRE4xRGJyUjVaV2No
RENwVjdrQ09oWitmUjdzS0trMjJaSFNZCi1vSCt1M1BFdTIwSjNHT0IxaXlZMWFNTkI3V3ZJZDNK
dmFwcGRWV2tDL1ZwVXlGZkxzR1VERnVJUEFEbVpacUNiCi1pSk1YNGxvdGVUVmZsMWQ0eEsvMW1W
NkdxOU1SclJxaURmcFNFTG4rdjUzT005bUdzcHdXK05aMUNJcmJDdVcwCi1LeFovdFBrcW44UFNk
OWZOWlI3MGJCN3JXYm53cmwra0g4eEt4TGw2cWRsck1tZzc0V1d3aExlUXhLNys5RGRQCi1JYURl
bnpxeDVjd1dCR1kvQzBIY1FqMGdQdXkzbFNzMVYvcStmN1k2dXNwUFdQNTFQZ2lKTEl5d1hTNzVp
UkFyCi0rVUZHVHp3QXR5ZlRaU1FvRnlNbU1VTHFmazZUNUh0b1ZNcWZSdlB2SyttRkRMV0VzdFUx
TklCMUsvQ1JJN2dJCi1BWTY1Q2xUVSt6UlMvdGxGOElBN3RzRnZndEVmOGpzSTlrYW1saWRoUzFn
eWVnNGRXY1ZFclY0YWVUUEIxQVV2Ci1TdFBZUWtLTk0rTmp5dFdIbDV0TnVCb0ROTHNjMGdJL1dT
UGlJNENJWThMd29tT29pdz09Ci0tLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCi0tLS0tLUJFR0lO
IENFUlRJRklDQVRFLS0tLS0KLU1JSUViVENDQXRXZ0F3SUJBZ0lKQU1zdGdKbGFhVkpiTUEwR0NT
cUdTSWIzRFFFQkN3VUFNRTB4Q3pBSkJnTlYKLUJBWVRBbGhaTVNZd0pBWURWUVFLREIxUWVYUm9i
MjRnVTI5bWRIZGhjbVVnUm05MWJtUmhkR2x2YmlCRFFURVcKLU1CUUdBMVVFQXd3TmIzVnlMV05o
TFhObGNuWmxjakFlRncweE9EQTRNamt4TkRJek1UWmFGdzB5T0RBNE1qWXgKLU5ESXpNVFphTUUw
eEN6QUpCZ05WQkFZVEFsaFpNU1l3SkFZRFZRUUtEQjFRZVhSb2IyNGdVMjltZEhkaGNtVWcKLVJt
OTFibVJoZEdsdmJpQkRRVEVXTUJRR0ExVUVBd3dOYjNWeUxXTmhMWE5sY25abGNqQ0NBYUl3RFFZ
SktvWkkKLWh2Y05BUUVCQlFBRGdnR1BBRENDQVlvQ2dnR0JBSmZ0VlVHNk5oZVYyM0VjMCtGaHJG
aHo0OGFXenlzZnVBajEKLW5VdEx4ekQydUF1elVuS2d1OGxOTzQ3ZklvNEJWNEhKa25QTUFNYnNj
TEE2RjBEQjMvS01Oa3pFcDRIbnRpUm8KLTRxQitOUWN2b0Z2NVJVYjNIdkJHRWY3S0dqeFE4U2Fw
WDV3aW5QaEI0ZDlQRXBVWkwxeVFBUmR1Zmo1OXora0oKLXJ5WDQrRUozTFcxZk52SjRIbjFLaDJo
amJBWnhHNDM2SmY3VTAvV2xGN0h2NmhmTFZNZ25tWURMUEVYeExGSWMKLTNSOVJSU0JRSGw2clYz
TWJRWGlXM29Ta2V0MlBNSVUyV0hsMm9OSmh5QnVwbEpsanh1NzRGTCswVWxZeGwvcnIKLXJGT2Vs
YzVNeEZwS3Q4b0RKMXMxVjg0QzNPekthZmlLV2puTEZpQVZBeVJoYlBSNi9MWkk1VmtRWEVuUUk1
LzcKLWNWNDY2V2lmTkhLQUo3WS9UTEhaMjJOL1oyaEtiaEg0Nk1EMFdoWTVVd3RvM25mNlJlZjRr
YzE0elNpVWwzRlUKLSs4L3dOOTdKSnNYY0c1NkpiUW1zeUVSeHkyM3hsekhWVENBenYzVktvT0Rj
YVJIdEtyUmtFQkV3aXc2d3B4RFkKLWlzV3FHOGdtaWlYblpwK2xhaG92ZkYrRHhuaFBId0lEQVFB
Qm8xQXdUakFkQmdOVkhRNEVGZ1FVM2IvSzJ1YlIKLU5MbzNkU0hLYjVvSUtQSTF0a2d3SHdZRFZS
MGpCQmd3Rm9BVTNiL0sydWJSTkxvM2RTSEtiNW9JS1BJMXRrZ3cKLURBWURWUjBUQkFVd0F3RUIv
ekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBWUVBTTJwVTAydkExd0ZmbmZRRndaTm0KLWtGRFF0eGpw
c0I1S29MYmFkcE92aE51dEZWUXhGUlBrM241T0ROVUpIRFExdHVWTTFtOWxmVEpmNi95cGF3ZjMK
LVNZTGxnWDRIZ0pwaitDekRRTHlQMUNyYVB0SHVDTGROcDRUSzlEK2htRVcrc1FWcDU5L1htYXNi
N29zd3pQZjgKLTU5UUxGNjZYditSNy9RK250SVY1NDFuaUZvZS9IeWxGTENPVGRyN0FoeDNlN0N0
Q2F1Vzd5UFFLU2dnS2pGelkKLWZVM1J1TC9WOXludGt0R1VCT2cxQmxkL0xDT1hoNlUxalNiVEdr
ZnlGdGZaeHRRZkkwUFRKcGs1eWlEMGNTTnYKLURFcDJkdmQySDdQK3YwZXcvQ3BXZ2VIUzNlNEky
UFQvV3R3bFlZcVJBcm1HSFBKUWMzWWxOZnkySlNZVnkrdkUKLUsyRU1IT2Z1THhlYjdQRFVvWVRu
MHEvZTVCc2tGS2NCaCtPcktWaEdvTm5BQ3VDTjExblRHL2hVSUQ1NHBhWEkKLVQ0c0R4SmFmN1B0
SHozWXRqV1UwSjcvNnJnRUZpdk9TQ3QySmJKZWh4K2RnVWVlczYwdDlMTGhseWY1ZGFraFYKLWp1
VEgrV3BBNGJoa1JlbTFXU21sWDg5OVdIMWtlZVdrQ2F3ZWRtVTlsTVJvCi0tLS0tLUVORCBDRVJU
SUZJQ0FURS0tLS0tCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvc3NsX2tleS5wZW0g
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvdGVzdHMvc3NsX2tleS5wZW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGI4ZmRlYzEwMWM4ZDY3NGM1MjA3ZDEwMGY3NGI2YTcyNDI0Y2I1MjkuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3Rz
L3NzbF9rZXkucGVtCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLS0tLS1CRUdJTiBQ
UklWQVRFIEtFWS0tLS0tCi1NSUlHL1FJQkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFTQ0J1Y3dnZ2Jq
QWdFQUFvSUJnUUNmS0M4M1FlOS9aR01XCi1ZaGJwQVJSaUtjbzZtSkk5Q05OZWFmN0E4OVRFK3c1
WTNHU3dTOHV6cXA1QzZRZWJaelBOdWVnOEhZb1R3Tjg1Ci1aM3hNMDM2L1F3OUtoUVZ0aCtYREFx
TSsxOWU1S0hrWWN4ZzNkM1pJMUhnWTE3MGVha2FMQnZNRE41VUxvRk93Ci1JczJQdHdNMm85Y2pk
NW1mU3VXdHRJNitmQ3FvcDgvbDhjZXJHOWlYMkdIMzlwM2lXd1dvVFp1WW5kQUE5cVl2Ci0wN1lX
YWp1UTFFU1dLUGpIWUdUbk12dTR4SXppYkMxbVhkMk02dS9Jak5PNmc0MjZTS0ZhUkRXUWt4MDFn
SVYvCi1DeUtzOURnWm9lTUhrS1p1UHFaVk94T0srQS9Ocm1ycUhGc1BJc3JzNXdrN1FBVmp1NS9Y
MXNrcG4vVUdRbG1NCi1Sd0JhUVVMT3MxRmFnQSs1NFJYVTZxVVBXMFltaEo0eE9CNGdISEQxdmpB
S0VzUlo3LzZ6Y3hNeU9tK00xRGJLCi1SVEg0TldqVldwblk4WGFWR2RSaHRUcEg5TWp5Y3BLaEYr
RDJaZHkydFFYdHF1MkdkY01uVWVkdDEzZm45eER1Ci1QNFBvcGhFMGlwL0lNZ24ra2I0bTllK1Mr
SzlsbGRRbDBCKzRCY0dXQXFIZWxoMkt1VTBDQXdFQUFRS0NBWUVBCi1sS2lXSVlqbXlSamRMS1VH
UFRFUzl2V052Tm1Sam96VjBSUTBMY29TYk1NTERaa2VPMFV3eVdxT1ZIVVE4K2liCi1qSWNmRWpl
Tkp4STU3b1pvcGVIT081dkpocE5sRkgrZzdsdGlXMnFFUnFBMUs4OGxTWG05OUJ6dzZGTnFoQ1JF
Ci1LOHViNU45ZnlmSkErUDRvL3htMFdLOEVYazV5SVVWMTdwLzl6Skp4emdLZ3YyanNWVGkzUUcy
T1pHdm40T3VnCi1CeW9tTVpFR0hrQkR6ZHh6OGMvY1AxVGxrMVJGdXdTZ2V3czE3OGsyeHE3QVlT
TS9zMFltSGk3Yi9SU3ZwdFg2Ci0xdjhQOGtYTlVlNEF3VGFOeXJsdkYybHdJYWRaOGgxaEE3dENF
Mm40NGI3YTdLZmhBa3djYnIxVDU5aW9ZaDZQCi16eHN5UFQ2Nzh1RDUxZGJ0RC9EWEpDY29lZUZP
Yjh1emtSMktOY3JuUXpacENKblJxNEdwNXlieHdzeHh1enByCi1nejBnYk5saHVXdEU3RW9Tem1J
Szl0K1dUUzdJTTJDdlp5bWQ2L09BaDFGdXc2QVFoU3A2NFhScDNPZk1NQUFDCi1JZTJFUHRLajRp
c2xXR1Q4Vm9VanVSWUdtZFJoNGR1QUgxZGtpQVhPV0EzUjd5NWExL3kvaUU4S0U4QnR4b2NCCi1B
b0hCQU04YWlVUmdwdTFGczBPcXo2aXplYzdLU0xMM2w4aG1XK01LVU9may9ZYm5nNkZyVEZzTDVZ
dHpSK0FwCi13VzR3d1dubklLRWMxSkxpWjdnOGFnUkVUSzhocjVQd0ZYVW4vR1NXQzBTTXNhekxK
VG95U1FTNUxPVjB0THpLCi1rSjNqdE5VN3RubERHTmtDSFRIU29WTDJULzh0K0lrWkkvaDVaNndq
bFlQdlUySXUwblZJWHRpRythbHY0QTZNCi1Icmg5bDVvcjRtakI2ckduVlhlWW9oTGtDbTZzL1c5
N2FoVnhMTWNFZGJzQm8xcHJtMkpxR25Tb2lSL3RFRkMvCi1RSFFuYlFLQndRREV1N2tXMFlnOXNa
ODlRdFl0VlExWXBpeEZaT1JhVWVSSVJMbnBFczF3N0wxbUNiT1oyTGo5Ci1KSHhzSDA1Y1lBYzdI
SmZQd3d4djMrM2FHQUlDL2RmdTRWU3dFRnRhdEF6VXB6bGh6S1M1K0hRQ1dCNEpVTk5VCi1NUTMr
RndLMnhRWDRQaDh0K096ckZpWWNLMmcwQW41VXhXTWEySFdJQVdVT2huVE95ZEFWc29INnlQMzFj
Vm00Ci0waHhvQUJDd2ZsYU5MTkdqUlV5ZkJwTFRBY051L1l0Y0UrS1JFeTdZQUFnWFhyaFJTTzRY
cExzU1h3TG5MVDcvCi1ZT2tvQldEY1RXRUNnY0JQV25TVURaQ0lRM2VmaXRoTVpKQmNpcWQyWTJY
MTlEcHE4TzMxSEltRDRqdE9ZMFY3Ci1jVUIvd1NrZUhBR3dqZC9lQ3lBMmUweDhCMklFZHFtTWZ2
cis4NkpKeGVrQzNkSllYQ0Z2SDVXSWhzSDUzWUNhCi0zYlQxS2xXQ0xQOWliL2crNThWUUMwUi9D
YzlUNHNmTGVQTkg3RDVaa1pkMXdsYlYzMENQcitpOEt3S2F5Nk1ECi14aHZ0THgramswN0dFK0U5
d21qYkNNbzdUY2x5ckxvVkVPbHFaTUFxc2hnQXBUK3A5ZXlDUGV0d1h1REh3YTNuCi1XeGhIY2xj
WkNWN1I0clVDZ2NBa2RHU254Y3ZwSXJEUE9VTld3eHZtQVdUU3R3OVpiVE5QOE94Q05DbTljeURs
Ci1kNGJBUzFoOEQvYStVazdDNzBobnU3U2wydzdDN0V1Mnpod1JVZGhoZTMrbDRHSU5QSy9qOTlp
Nk5xR1BsR3BxCi14TWxNRUo0WVM3NjhCcWVLRnBnMGw4NVBSb0VnVHNwaERlb1JPU1VQc0VQZEJa
OUJ4SUJsWUtUa2JLRVNaREdSCi10d3pZSGxqeDFuMU5DRFlQZmxtcmIxS3BYbjRFT2NPYk5naHcy
S3FxTlVVV2ZPZUJQd0JBMUZ4ek00QnJBU3RwCi1EQklOcEdTNERjMG1qVmlWZWdFQ2djQTNoVHRt
ODJYZHhRWGo5TFFtYi9FM2xLeC83SDg3WElPZU5NbXZqWXVaCi1pUzl3S3JrRit1NDJ2eW9EeGNL
TUNueFA1MDU2d3BkU1Q0cDU2citTQndWVEhjYzNsR0JTR2NNVElmd1JYcmozCi10aE9BMm91cjJu
NG91TklzWXlUbGNzUVN6aWZ3bXBSbVZNUlB4bDlmWVZkRVdVZ0I4M0ZnSFQwRDlhdnZabkY5Ci10
OU9jY25HSlhTaEFJWklCQURoVmovSndHNEZiYVg0Mk5pakQ1UE5wVkxrMVkxN09WMEk1NzZUOVNm
YVFvQmpKCi1hSDFNL3pDNGFWYVMwRFlCL0d4cTd2OD0KLS0tLS0tRU5EIFBSSVZBVEUgS0VZLS0t
LS0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2FzeW5jaW8ucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvdGVzdHMvdGVzdF9hc3luY2lvLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA4MWZjYmYzODAzZGM4NDI4YzA3NTk2OTRjZjQ2Y2NmNDllY2Q1Zjc0Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90
ZXN0X2FzeW5jaW8ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzNzQgKzAsMCBAQAotaW1wb3J0IGFz
eW5jaW8KLWltcG9ydCBiaW5hc2NpaQotaW1wb3J0IHJhbmRvbQotaW1wb3J0IHNvY2tldAotZnJv
bSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UsIHNraXBJZgotZnJvbSB1bml0dGVzdC5tb2NrIGlt
cG9ydCBwYXRjaAotCi1mcm9tIGNyeXB0b2dyYXBoeS5oYXptYXQucHJpbWl0aXZlcyBpbXBvcnQg
c2VyaWFsaXphdGlvbgotCi1mcm9tIGFpb3F1aWMuYXN5bmNpby5jbGllbnQgaW1wb3J0IGNvbm5l
Y3QKLWZyb20gYWlvcXVpYy5hc3luY2lvLnByb3RvY29sIGltcG9ydCBRdWljQ29ubmVjdGlvblBy
b3RvY29sCi1mcm9tIGFpb3F1aWMuYXN5bmNpby5zZXJ2ZXIgaW1wb3J0IHNlcnZlCi1mcm9tIGFp
b3F1aWMucXVpYy5jb25maWd1cmF0aW9uIGltcG9ydCBRdWljQ29uZmlndXJhdGlvbgotZnJvbSBh
aW9xdWljLnF1aWMubG9nZ2VyIGltcG9ydCBRdWljTG9nZ2VyCi0KLWZyb20gLnV0aWxzIGltcG9y
dCAoCi0gICAgU0VSVkVSX0NBQ0VSVEZJTEUsCi0gICAgU0VSVkVSX0NFUlRGSUxFLAotICAgIFNF
UlZFUl9LRVlGSUxFLAotICAgIFNLSVBfVEVTVFMsCi0gICAgZ2VuZXJhdGVfZWNfY2VydGlmaWNh
dGUsCi0gICAgcnVuLAotKQotCi1yZWFsX3NlbmR0byA9IHNvY2tldC5zb2NrZXQuc2VuZHRvCi0K
LQotZGVmIHNlbmR0b193aXRoX2xvc3Moc2VsZiwgZGF0YSwgYWRkcj1Ob25lKToKLSAgICAiIiIK
LSAgICBTaW11bGF0ZSAyNSUgcGFja2V0IGxvc3MuCi0gICAgIiIiCi0gICAgaWYgcmFuZG9tLnJh
bmRvbSgpID4gMC4yNToKLSAgICAgICAgcmVhbF9zZW5kdG8oc2VsZiwgZGF0YSwgYWRkcikKLQot
Ci1jbGFzcyBTZXNzaW9uVGlja2V0U3RvcmU6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAg
ICAgICBzZWxmLnRpY2tldHMgPSB7fQotCi0gICAgZGVmIGFkZChzZWxmLCB0aWNrZXQpOgotICAg
ICAgICBzZWxmLnRpY2tldHNbdGlja2V0LnRpY2tldF0gPSB0aWNrZXQKLQotICAgIGRlZiBwb3Ao
c2VsZiwgbGFiZWwpOgotICAgICAgICByZXR1cm4gc2VsZi50aWNrZXRzLnBvcChsYWJlbCwgTm9u
ZSkKLQotCi1kZWYgaGFuZGxlX3N0cmVhbShyZWFkZXIsIHdyaXRlcik6Ci0gICAgYXN5bmMgZGVm
IHNlcnZlKCk6Ci0gICAgICAgIGRhdGEgPSBhd2FpdCByZWFkZXIucmVhZCgpCi0gICAgICAgIHdy
aXRlci53cml0ZShieXRlcyhyZXZlcnNlZChkYXRhKSkpCi0gICAgICAgIHdyaXRlci53cml0ZV9l
b2YoKQotCi0gICAgYXN5bmNpby5lbnN1cmVfZnV0dXJlKHNlcnZlKCkpCi0KLQotY2xhc3MgSGln
aExldmVsVGVzdChUZXN0Q2FzZSk6Ci0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxm
LnNlcnZlciA9IE5vbmUKLSAgICAgICAgc2VsZi5zZXJ2ZXJfaG9zdCA9ICJsb2NhbGhvc3QiCi0g
ICAgICAgIHNlbGYuc2VydmVyX3BvcnQgPSA0NDMzCi0KLSAgICBkZWYgdGVhckRvd24oc2VsZik6
Ci0gICAgICAgIGlmIHNlbGYuc2VydmVyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2VsZi5z
ZXJ2ZXIuY2xvc2UoKQotCi0gICAgYXN5bmMgZGVmIHJ1bl9jbGllbnQoCi0gICAgICAgIHNlbGYs
Ci0gICAgICAgIGhvc3Q9Tm9uZSwKLSAgICAgICAgcG9ydD1Ob25lLAotICAgICAgICBjYWRhdGE9
Tm9uZSwKLSAgICAgICAgY2FmaWxlPVNFUlZFUl9DQUNFUlRGSUxFLAotICAgICAgICBjb25maWd1
cmF0aW9uPU5vbmUsCi0gICAgICAgIHJlcXVlc3Q9YiJwaW5nIiwKLSAgICAgICAgKiprd2FyZ3MK
LSAgICApOgotICAgICAgICBpZiBob3N0IGlzIE5vbmU6Ci0gICAgICAgICAgICBob3N0ID0gc2Vs
Zi5zZXJ2ZXJfaG9zdAotICAgICAgICBpZiBwb3J0IGlzIE5vbmU6Ci0gICAgICAgICAgICBwb3J0
ID0gc2VsZi5zZXJ2ZXJfcG9ydAotICAgICAgICBpZiBjb25maWd1cmF0aW9uIGlzIE5vbmU6Ci0g
ICAgICAgICAgICBjb25maWd1cmF0aW9uID0gUXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PVRy
dWUpCi0gICAgICAgIGNvbmZpZ3VyYXRpb24ubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhZGF0YT1j
YWRhdGEsIGNhZmlsZT1jYWZpbGUpCi0gICAgICAgIGFzeW5jIHdpdGggY29ubmVjdChob3N0LCBw
b3J0LCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sICoqa3dhcmdzKSBhcyBjbGllbnQ6Ci0g
ICAgICAgICAgICAjIHdhaXRpbmcgZm9yIGNvbm5lY3RlZCB3aGVuIGNvbm5lY3RlZCByZXR1cm5z
IGltbWVkaWF0ZWx5Ci0gICAgICAgICAgICBhd2FpdCBjbGllbnQud2FpdF9jb25uZWN0ZWQoKQot
Ci0gICAgICAgICAgICByZWFkZXIsIHdyaXRlciA9IGF3YWl0IGNsaWVudC5jcmVhdGVfc3RyZWFt
KCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JpdGVyLmNhbl93cml0ZV9lb2YoKSwg
VHJ1ZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JpdGVyLmdldF9leHRyYV9pbmZv
KCJzdHJlYW1faWQiKSwgMCkKLQotICAgICAgICAgICAgd3JpdGVyLndyaXRlKHJlcXVlc3QpCi0g
ICAgICAgICAgICB3cml0ZXIud3JpdGVfZW9mKCkKLQotICAgICAgICAgICAgcmVzcG9uc2UgPSBh
d2FpdCByZWFkZXIucmVhZCgpCi0KLSAgICAgICAgIyB3YWl0aW5nIGZvciBjbG9zZWQgd2hlbiBj
bG9zZWQgcmV0dXJucyBpbW1lZGlhdGVseQotICAgICAgICBhd2FpdCBjbGllbnQud2FpdF9jbG9z
ZWQoKQotCi0gICAgICAgIHJldHVybiByZXNwb25zZQotCi0gICAgYXN5bmMgZGVmIHJ1bl9zZXJ2
ZXIoc2VsZiwgY29uZmlndXJhdGlvbj1Ob25lLCBob3N0PSI6OiIsICoqa3dhcmdzKToKLSAgICAg
ICAgaWYgY29uZmlndXJhdGlvbiBpcyBOb25lOgotICAgICAgICAgICAgY29uZmlndXJhdGlvbiA9
IFF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1GYWxzZSkKLSAgICAgICAgICAgIGNvbmZpZ3Vy
YXRpb24ubG9hZF9jZXJ0X2NoYWluKFNFUlZFUl9DRVJURklMRSwgU0VSVkVSX0tFWUZJTEUpCi0g
ICAgICAgIHNlbGYuc2VydmVyID0gYXdhaXQgc2VydmUoCi0gICAgICAgICAgICBob3N0PWhvc3Qs
Ci0gICAgICAgICAgICBwb3J0PXNlbGYuc2VydmVyX3BvcnQsCi0gICAgICAgICAgICBjb25maWd1
cmF0aW9uPWNvbmZpZ3VyYXRpb24sCi0gICAgICAgICAgICBzdHJlYW1faGFuZGxlcj1oYW5kbGVf
c3RyZWFtLAotICAgICAgICAgICAgKiprd2FyZ3MKLSAgICAgICAgKQotICAgICAgICByZXR1cm4g
c2VsZi5zZXJ2ZXIKLQotICAgIGRlZiB0ZXN0X2Nvbm5lY3RfYW5kX3NlcnZlKHNlbGYpOgotICAg
ICAgICBydW4oc2VsZi5ydW5fc2VydmVyKCkpCi0gICAgICAgIHJlc3BvbnNlID0gcnVuKHNlbGYu
cnVuX2NsaWVudCgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLCBiImduaXAi
KQotCi0gICAgZGVmIHRlc3RfY29ubmVjdF9hbmRfc2VydmVfaXB2NChzZWxmKToKLSAgICAgICAg
cnVuKHNlbGYucnVuX3NlcnZlcihob3N0PSIwLjAuMC4wIikpCi0gICAgICAgIHJlc3BvbnNlID0g
cnVuKHNlbGYucnVuX2NsaWVudChob3N0PSIxMjcuMC4wLjEiKSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChyZXNwb25zZSwgYiJnbmlwIikKLQotICAgIEBza2lwSWYoImlwdjYiIGluIFNLSVBf
VEVTVFMsICJTa2lwcGluZyBJUHY2IHRlc3RzIikKLSAgICBkZWYgdGVzdF9jb25uZWN0X2FuZF9z
ZXJ2ZV9pcHY2KHNlbGYpOgotICAgICAgICBydW4oc2VsZi5ydW5fc2VydmVyKGhvc3Q9Ijo6Iikp
Ci0gICAgICAgIHJlc3BvbnNlID0gcnVuKHNlbGYucnVuX2NsaWVudChob3N0PSI6OjEiKSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZSwgYiJnbmlwIikKLQotICAgIGRlZiB0ZXN0
X2Nvbm5lY3RfYW5kX3NlcnZlX2VjX2NlcnRpZmljYXRlKHNlbGYpOgotICAgICAgICBjZXJ0aWZp
Y2F0ZSwgcHJpdmF0ZV9rZXkgPSBnZW5lcmF0ZV9lY19jZXJ0aWZpY2F0ZShjb21tb25fbmFtZT0i
bG9jYWxob3N0IikKLQotICAgICAgICBydW4oCi0gICAgICAgICAgICBzZWxmLnJ1bl9zZXJ2ZXIo
Ci0gICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbj1RdWljQ29uZmlndXJhdGlvbigKLSAgICAg
ICAgICAgICAgICAgICAgY2VydGlmaWNhdGU9Y2VydGlmaWNhdGUsIHByaXZhdGVfa2V5PXByaXZh
dGVfa2V5LCBpc19jbGllbnQ9RmFsc2UsCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAg
KQotICAgICAgICApCi0KLSAgICAgICAgcmVzcG9uc2UgPSBydW4oCi0gICAgICAgICAgICBzZWxm
LnJ1bl9jbGllbnQoCi0gICAgICAgICAgICAgICAgY2FkYXRhPWNlcnRpZmljYXRlLnB1YmxpY19i
eXRlcyhzZXJpYWxpemF0aW9uLkVuY29kaW5nLlBFTSksCi0gICAgICAgICAgICAgICAgY2FmaWxl
PU5vbmUsCi0gICAgICAgICAgICApCi0gICAgICAgICkKLQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHJlc3BvbnNlLCBiImduaXAiKQotCi0gICAgZGVmIHRlc3RfY29ubmVjdF9hbmRfc2VydmVf
bGFyZ2Uoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBUcmFuc2ZlciBlbm91Z2ggZGF0YSB0
byByZXF1aXJlIHJhaXNpbmcgTUFYX0RBVEEgYW5kIE1BWF9TVFJFQU1fREFUQS4KLSAgICAgICAg
IiIiCi0gICAgICAgIGRhdGEgPSBiIloiICogMjA5NzE1MgotICAgICAgICBydW4oc2VsZi5ydW5f
c2VydmVyKCkpCi0gICAgICAgIHJlc3BvbnNlID0gcnVuKHNlbGYucnVuX2NsaWVudChyZXF1ZXN0
PWRhdGEpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLCBkYXRhKQotCi0gICAg
ZGVmIHRlc3RfY29ubmVjdF9hbmRfc2VydmVfd2l0aG91dF9jbGllbnRfY29uZmlndXJhdGlvbihz
ZWxmKToKLSAgICAgICAgYXN5bmMgZGVmIHJ1bl9jbGllbnRfd2l0aG91dF9jb25maWcoKToKLSAg
ICAgICAgICAgIGFzeW5jIHdpdGggY29ubmVjdChzZWxmLnNlcnZlcl9ob3N0LCBzZWxmLnNlcnZl
cl9wb3J0KSBhcyBjbGllbnQ6Ci0gICAgICAgICAgICAgICAgYXdhaXQgY2xpZW50LnBpbmcoKQot
Ci0gICAgICAgIHJ1bihzZWxmLnJ1bl9zZXJ2ZXIoKSkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2Vy
dFJhaXNlcyhDb25uZWN0aW9uRXJyb3IpOgotICAgICAgICAgICAgcnVuKHJ1bl9jbGllbnRfd2l0
aG91dF9jb25maWcoKSkKLQotICAgIGRlZiB0ZXN0X2Nvbm5lY3RfYW5kX3NlcnZlX3dyaXRlbGlu
ZXMoc2VsZik6Ci0gICAgICAgIGFzeW5jIGRlZiBydW5fY2xpZW50X3dyaXRlbGluZXMoKToKLSAg
ICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBRdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9VHJ1
ZSkKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24ubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhZmls
ZT1TRVJWRVJfQ0FDRVJURklMRSkKLSAgICAgICAgICAgIGFzeW5jIHdpdGggY29ubmVjdCgKLSAg
ICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9ob3N0LCBzZWxmLnNlcnZlcl9wb3J0LCBjb25maWd1
cmF0aW9uPWNvbmZpZ3VyYXRpb24KLSAgICAgICAgICAgICkgYXMgY2xpZW50OgotICAgICAgICAg
ICAgICAgIHJlYWRlciwgd3JpdGVyID0gYXdhaXQgY2xpZW50LmNyZWF0ZV9zdHJlYW0oKQotICAg
ICAgICAgICAgICAgIGFzc2VydCB3cml0ZXIuY2FuX3dyaXRlX2VvZigpIGlzIFRydWUKLQotICAg
ICAgICAgICAgICAgIHdyaXRlci53cml0ZWxpbmVzKFtiIjAxMjM0NTY3IiwgYiI4OTAxMjM0NSJd
KQotICAgICAgICAgICAgICAgIHdyaXRlci53cml0ZV9lb2YoKQotCi0gICAgICAgICAgICAgICAg
cmV0dXJuIGF3YWl0IHJlYWRlci5yZWFkKCkKLQotICAgICAgICBydW4oc2VsZi5ydW5fc2VydmVy
KCkpCi0gICAgICAgIHJlc3BvbnNlID0gcnVuKHJ1bl9jbGllbnRfd3JpdGVsaW5lcygpKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLCBiIjU0MzIxMDk4NzY1NDMyMTAiKQotCi0g
ICAgQHNraXBJZigibG9zcyIgaW4gU0tJUF9URVNUUywgIlNraXBwaW5nIGxvc3MgdGVzdHMiKQot
ICAgIEBwYXRjaCgic29ja2V0LnNvY2tldC5zZW5kdG8iLCBuZXdfY2FsbGFibGU9bGFtYmRhOiBz
ZW5kdG9fd2l0aF9sb3NzKQotICAgIGRlZiB0ZXN0X2Nvbm5lY3RfYW5kX3NlcnZlX3dpdGhfcGFj
a2V0X2xvc3Moc2VsZiwgbW9ja19zZW5kdG8pOgotICAgICAgICAiIiIKLSAgICAgICAgVGhpcyB0
ZXN0IGVuc3VyZXMgaGFuZHNoYWtlIHN1Y2Nlc3MgYW5kIHN0cmVhbSBkYXRhIGlzIHN1Y2Nlc3Nm
dWxseSBzZW50Ci0gICAgICAgIGFuZCByZWNlaXZlZCBpbiB0aGUgcHJlc2VuY2Ugb2YgcGFja2V0
IGxvc3MgKHJhbmRvbWl6ZWQgMjUlIGluIGVhY2ggZGlyZWN0aW9uKS4KLSAgICAgICAgIiIiCi0g
ICAgICAgIGRhdGEgPSBiIloiICogNjU1MzYKLQotICAgICAgICBzZXJ2ZXJfY29uZmlndXJhdGlv
biA9IFF1aWNDb25maWd1cmF0aW9uKAotICAgICAgICAgICAgaXNfY2xpZW50PUZhbHNlLCBxdWlj
X2xvZ2dlcj1RdWljTG9nZ2VyKCkKLSAgICAgICAgKQotICAgICAgICBzZXJ2ZXJfY29uZmlndXJh
dGlvbi5sb2FkX2NlcnRfY2hhaW4oU0VSVkVSX0NFUlRGSUxFLCBTRVJWRVJfS0VZRklMRSkKLSAg
ICAgICAgcnVuKHNlbGYucnVuX3NlcnZlcihjb25maWd1cmF0aW9uPXNlcnZlcl9jb25maWd1cmF0
aW9uKSkKLQotICAgICAgICByZXNwb25zZSA9IHJ1bigKLSAgICAgICAgICAgIHNlbGYucnVuX2Ns
aWVudCgKLSAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKAot
ICAgICAgICAgICAgICAgICAgICBpc19jbGllbnQ9VHJ1ZSwgcXVpY19sb2dnZXI9UXVpY0xvZ2dl
cigpCi0gICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICByZXF1ZXN0PWRhdGEsCi0g
ICAgICAgICAgICApCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25z
ZSwgZGF0YSkKLQotICAgIGRlZiB0ZXN0X2Nvbm5lY3RfYW5kX3NlcnZlX3dpdGhfc2Vzc2lvbl90
aWNrZXQoc2VsZik6Ci0gICAgICAgICMgc3RhcnQgc2VydmVyCi0gICAgICAgIGNsaWVudF90aWNr
ZXQgPSBOb25lCi0gICAgICAgIHN0b3JlID0gU2Vzc2lvblRpY2tldFN0b3JlKCkKLQotICAgICAg
ICBkZWYgc2F2ZV90aWNrZXQodCk6Ci0gICAgICAgICAgICBub25sb2NhbCBjbGllbnRfdGlja2V0
Ci0gICAgICAgICAgICBjbGllbnRfdGlja2V0ID0gdAotCi0gICAgICAgIHJ1bigKLSAgICAgICAg
ICAgIHNlbGYucnVuX3NlcnZlcigKLSAgICAgICAgICAgICAgICBzZXNzaW9uX3RpY2tldF9mZXRj
aGVyPXN0b3JlLnBvcCwgc2Vzc2lvbl90aWNrZXRfaGFuZGxlcj1zdG9yZS5hZGQKLSAgICAgICAg
ICAgICkKLSAgICAgICAgKQotCi0gICAgICAgICMgZmlyc3QgcmVxdWVzdAotICAgICAgICByZXNw
b25zZSA9IHJ1bihzZWxmLnJ1bl9jbGllbnQoc2Vzc2lvbl90aWNrZXRfaGFuZGxlcj1zYXZlX3Rp
Y2tldCksKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLCBiImduaXAiKQotCi0g
ICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGNsaWVudF90aWNrZXQpCi0KLSAgICAgICAgIyBz
ZWNvbmQgcmVxdWVzdAotICAgICAgICBydW4oCi0gICAgICAgICAgICBzZWxmLnJ1bl9jbGllbnQo
Ci0gICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbj1RdWljQ29uZmlndXJhdGlvbigKLSAgICAg
ICAgICAgICAgICAgICAgaXNfY2xpZW50PVRydWUsIHNlc3Npb25fdGlja2V0PWNsaWVudF90aWNr
ZXQKLSAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgKQotICAgICAgICApCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UsIGIiZ25pcCIpCi0KLSAgICBkZWYgdGVzdF9jb25u
ZWN0X2FuZF9zZXJ2ZV93aXRoX3N0YXRlbGVzc19yZXRyeShzZWxmKToKLSAgICAgICAgcnVuKHNl
bGYucnVuX3NlcnZlcigpKQotICAgICAgICByZXNwb25zZSA9IHJ1bihzZWxmLnJ1bl9jbGllbnQo
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZSwgYiJnbmlwIikKLQotICAgIGRl
ZiB0ZXN0X2Nvbm5lY3RfYW5kX3NlcnZlX3dpdGhfc3RhdGVsZXNzX3JldHJ5X2JhZF9vcmlnaW5h
bF9jb25uZWN0aW9uX2lkKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgSWYgdGhlIHNlcnZl
cidzIHRyYW5zcG9ydCBwYXJhbWV0ZXJzIGRvIG5vdCBoYXZlIHRoZSBjb3JyZWN0Ci0gICAgICAg
IG9yaWdpbmFsX2Nvbm5lY3Rpb25faWQgdGhlIGNvbm5lY3Rpb24gZmFpbC4KLSAgICAgICAgIiIi
Ci0KLSAgICAgICAgZGVmIGNyZWF0ZV9wcm90b2NvbCgqYXJncywgKiprd2FyZ3MpOgotICAgICAg
ICAgICAgcHJvdG9jb2wgPSBRdWljQ29ubmVjdGlvblByb3RvY29sKCphcmdzLCAqKmt3YXJncykK
LSAgICAgICAgICAgIHByb3RvY29sLl9xdWljLl9vcmlnaW5hbF9jb25uZWN0aW9uX2lkID0gTm9u
ZQotICAgICAgICAgICAgcmV0dXJuIHByb3RvY29sCi0KLSAgICAgICAgcnVuKHNlbGYucnVuX3Nl
cnZlcihjcmVhdGVfcHJvdG9jb2w9Y3JlYXRlX3Byb3RvY29sLCBzdGF0ZWxlc3NfcmV0cnk9VHJ1
ZSkpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQ29ubmVjdGlvbkVycm9yKToKLSAg
ICAgICAgICAgIHJ1bihzZWxmLnJ1bl9jbGllbnQoKSkKLQotICAgIEBwYXRjaCgiYWlvcXVpYy5x
dWljLnJldHJ5LlF1aWNSZXRyeVRva2VuSGFuZGxlci52YWxpZGF0ZV90b2tlbiIpCi0gICAgZGVm
IHRlc3RfY29ubmVjdF9hbmRfc2VydmVfd2l0aF9zdGF0ZWxlc3NfcmV0cnlfYmFkKHNlbGYsIG1v
Y2tfdmFsaWRhdGUpOgotICAgICAgICBtb2NrX3ZhbGlkYXRlLnNpZGVfZWZmZWN0ID0gVmFsdWVF
cnJvcigiRGVjcnlwdGlvbiBmYWlsZWQuIikKLQotICAgICAgICBydW4oc2VsZi5ydW5fc2VydmVy
KHN0YXRlbGVzc19yZXRyeT1UcnVlKSkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhD
b25uZWN0aW9uRXJyb3IpOgotICAgICAgICAgICAgcnVuKAotICAgICAgICAgICAgICAgIHNlbGYu
cnVuX2NsaWVudCgKLSAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbj1RdWljQ29uZmln
dXJhdGlvbihpc19jbGllbnQ9VHJ1ZSwgaWRsZV90aW1lb3V0PTQuMCksCi0gICAgICAgICAgICAg
ICAgKQotICAgICAgICAgICAgKQotCi0gICAgZGVmIHRlc3RfY29ubmVjdF9hbmRfc2VydmVfd2l0
aF92ZXJzaW9uX25lZ290aWF0aW9uKHNlbGYpOgotICAgICAgICBydW4oc2VsZi5ydW5fc2VydmVy
KCkpCi0KLSAgICAgICAgIyBmb3JjZSB2ZXJzaW9uIG5lZ290aWF0aW9uCi0gICAgICAgIGNvbmZp
Z3VyYXRpb24gPSBRdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9VHJ1ZSwgcXVpY19sb2dnZXI9
UXVpY0xvZ2dlcigpKQotICAgICAgICBjb25maWd1cmF0aW9uLnN1cHBvcnRlZF92ZXJzaW9ucy5p
bnNlcnQoMCwgMHgxQTJBM0E0QSkKLQotICAgICAgICByZXNwb25zZSA9IHJ1bihzZWxmLnJ1bl9j
bGllbnQoY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uKSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChyZXNwb25zZSwgYiJnbmlwIikKLQotICAgIGRlZiB0ZXN0X2Nvbm5lY3RfdGltZW91dChz
ZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhDb25uZWN0aW9uRXJyb3IpOgot
ICAgICAgICAgICAgcnVuKAotICAgICAgICAgICAgICAgIHNlbGYucnVuX2NsaWVudCgKLSAgICAg
ICAgICAgICAgICAgICAgcG9ydD00NDAwLAotICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0
aW9uPVF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlLCBpZGxlX3RpbWVvdXQ9NSksCi0g
ICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgKQotCi0gICAgZGVmIHRlc3RfY29ubmVjdF90
aW1lb3V0X25vX3dhaXRfY29ubmVjdGVkKHNlbGYpOgotICAgICAgICBhc3luYyBkZWYgcnVuX2Ns
aWVudF9ub193YWl0X2Nvbm5lY3RlZChjb25maWd1cmF0aW9uKToKLSAgICAgICAgICAgIGNvbmZp
Z3VyYXRpb24ubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhZmlsZT1TRVJWRVJfQ0FDRVJURklMRSkK
LSAgICAgICAgICAgIGFzeW5jIHdpdGggY29ubmVjdCgKLSAgICAgICAgICAgICAgICBzZWxmLnNl
cnZlcl9ob3N0LAotICAgICAgICAgICAgICAgIDQ0MDAsCi0gICAgICAgICAgICAgICAgY29uZmln
dXJhdGlvbj1jb25maWd1cmF0aW9uLAotICAgICAgICAgICAgICAgIHdhaXRfY29ubmVjdGVkPUZh
bHNlLAotICAgICAgICAgICAgKSBhcyBjbGllbnQ6Ci0gICAgICAgICAgICAgICAgYXdhaXQgY2xp
ZW50LnBpbmcoKQotCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQ29ubmVjdGlvbkVy
cm9yKToKLSAgICAgICAgICAgIHJ1bigKLSAgICAgICAgICAgICAgICBydW5fY2xpZW50X25vX3dh
aXRfY29ubmVjdGVkKAotICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25m
aWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlLCBpZGxlX3RpbWVvdXQ9NSksCi0gICAgICAgICAgICAg
ICAgKQotICAgICAgICAgICAgKQotCi0gICAgZGVmIHRlc3RfY29ubmVjdF9sb2NhbF9wb3J0KHNl
bGYpOgotICAgICAgICBydW4oc2VsZi5ydW5fc2VydmVyKCkpCi0gICAgICAgIHJlc3BvbnNlID0g
cnVuKHNlbGYucnVuX2NsaWVudChsb2NhbF9wb3J0PTM0NTYpKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHJlc3BvbnNlLCBiImduaXAiKQotCi0gICAgZGVmIHRlc3RfY2hhbmdlX2Nvbm5lY3Rp
b25faWQoc2VsZik6Ci0gICAgICAgIGFzeW5jIGRlZiBydW5fY2xpZW50X2NoYW5nZV9jb25uZWN0
aW9uX2lkKCk6Ci0gICAgICAgICAgICBjb25maWd1cmF0aW9uID0gUXVpY0NvbmZpZ3VyYXRpb24o
aXNfY2xpZW50PVRydWUpCi0gICAgICAgICAgICBjb25maWd1cmF0aW9uLmxvYWRfdmVyaWZ5X2xv
Y2F0aW9ucyhjYWZpbGU9U0VSVkVSX0NBQ0VSVEZJTEUpCi0gICAgICAgICAgICBhc3luYyB3aXRo
IGNvbm5lY3QoCi0gICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfaG9zdCwgc2VsZi5zZXJ2ZXJf
cG9ydCwgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uCi0gICAgICAgICAgICApIGFzIGNsaWVu
dDoKLSAgICAgICAgICAgICAgICBhd2FpdCBjbGllbnQucGluZygpCi0gICAgICAgICAgICAgICAg
Y2xpZW50LmNoYW5nZV9jb25uZWN0aW9uX2lkKCkKLSAgICAgICAgICAgICAgICBhd2FpdCBjbGll
bnQucGluZygpCi0KLSAgICAgICAgcnVuKHNlbGYucnVuX3NlcnZlcigpKQotICAgICAgICBydW4o
cnVuX2NsaWVudF9jaGFuZ2VfY29ubmVjdGlvbl9pZCgpKQotCi0gICAgZGVmIHRlc3Rfa2V5X3Vw
ZGF0ZShzZWxmKToKLSAgICAgICAgYXN5bmMgZGVmIHJ1bl9jbGllbnRfa2V5X3VwZGF0ZSgpOgot
ICAgICAgICAgICAgY29uZmlndXJhdGlvbiA9IFF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1U
cnVlKQotICAgICAgICAgICAgY29uZmlndXJhdGlvbi5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2Fm
aWxlPVNFUlZFUl9DQUNFUlRGSUxFKQotICAgICAgICAgICAgYXN5bmMgd2l0aCBjb25uZWN0KAot
ICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyX2hvc3QsIHNlbGYuc2VydmVyX3BvcnQsIGNvbmZp
Z3VyYXRpb249Y29uZmlndXJhdGlvbgotICAgICAgICAgICAgKSBhcyBjbGllbnQ6Ci0gICAgICAg
ICAgICAgICAgYXdhaXQgY2xpZW50LnBpbmcoKQotICAgICAgICAgICAgICAgIGNsaWVudC5yZXF1
ZXN0X2tleV91cGRhdGUoKQotICAgICAgICAgICAgICAgIGF3YWl0IGNsaWVudC5waW5nKCkKLQot
ICAgICAgICBydW4oc2VsZi5ydW5fc2VydmVyKCkpCi0gICAgICAgIHJ1bihydW5fY2xpZW50X2tl
eV91cGRhdGUoKSkKLQotICAgIGRlZiB0ZXN0X3Bpbmcoc2VsZik6Ci0gICAgICAgIGFzeW5jIGRl
ZiBydW5fY2xpZW50X3BpbmcoKToKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBRdWljQ29u
ZmlndXJhdGlvbihpc19jbGllbnQ9VHJ1ZSkKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24ubG9h
ZF92ZXJpZnlfbG9jYXRpb25zKGNhZmlsZT1TRVJWRVJfQ0FDRVJURklMRSkKLSAgICAgICAgICAg
IGFzeW5jIHdpdGggY29ubmVjdCgKLSAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9ob3N0LCBz
ZWxmLnNlcnZlcl9wb3J0LCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24KLSAgICAgICAgICAg
ICkgYXMgY2xpZW50OgotICAgICAgICAgICAgICAgIGF3YWl0IGNsaWVudC5waW5nKCkKLSAgICAg
ICAgICAgICAgICBhd2FpdCBjbGllbnQucGluZygpCi0KLSAgICAgICAgcnVuKHNlbGYucnVuX3Nl
cnZlcigpKQotICAgICAgICBydW4ocnVuX2NsaWVudF9waW5nKCkpCi0KLSAgICBkZWYgdGVzdF9w
aW5nX3BhcmFsbGVsKHNlbGYpOgotICAgICAgICBhc3luYyBkZWYgcnVuX2NsaWVudF9waW5nKCk6
Ci0gICAgICAgICAgICBjb25maWd1cmF0aW9uID0gUXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50
PVRydWUpCi0gICAgICAgICAgICBjb25maWd1cmF0aW9uLmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhj
YWZpbGU9U0VSVkVSX0NBQ0VSVEZJTEUpCi0gICAgICAgICAgICBhc3luYyB3aXRoIGNvbm5lY3Qo
Ci0gICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfaG9zdCwgc2VsZi5zZXJ2ZXJfcG9ydCwgY29u
ZmlndXJhdGlvbj1jb25maWd1cmF0aW9uCi0gICAgICAgICAgICApIGFzIGNsaWVudDoKLSAgICAg
ICAgICAgICAgICBjb3JvcyA9IFtjbGllbnQucGluZygpIGZvciB4IGluIHJhbmdlKDE2KV0KLSAg
ICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLmdhdGhlcigqY29yb3MpCi0KLSAgICAgICAgcnVu
KHNlbGYucnVuX3NlcnZlcigpKQotICAgICAgICBydW4ocnVuX2NsaWVudF9waW5nKCkpCi0KLSAg
ICBkZWYgdGVzdF9zZXJ2ZXJfcmVjZWl2ZXNfZ2FyYmFnZShzZWxmKToKLSAgICAgICAgc2VydmVy
ID0gcnVuKHNlbGYucnVuX3NlcnZlcigpKQotICAgICAgICBzZXJ2ZXIuZGF0YWdyYW1fcmVjZWl2
ZWQoYmluYXNjaWkudW5oZXhsaWZ5KCJjMDAwMDAwMDAwODAiKSwgKCIxLjIuMy40IiwgMTIzNCkp
Ci0gICAgICAgIHNlcnZlci5jbG9zZSgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMv
dGVzdF9hc3luY2lvX2NvbXBhdC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2FzeW5jaW9f
Y29tcGF0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MDZkYmY1MTEyNGNkYjYz
MmFkYTMwYjY2YzNmMmU0NDZlZmJjMmNjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2FzeW5jaW9fY29tcGF0LnB5
CisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotaW1wb3J0IGFzeW5jaW8KLWZyb20gdW5p
dHRlc3QgaW1wb3J0IFRlc3RDYXNlCi0KLWZyb20gYWlvcXVpYy5hc3luY2lvLmNvbXBhdCBpbXBv
cnQgX2FzeW5jY29udGV4dG1hbmFnZXIKLQotZnJvbSAudXRpbHMgaW1wb3J0IHJ1bgotCi0KLUBf
YXN5bmNjb250ZXh0bWFuYWdlcgotYXN5bmMgZGVmIHNvbWVfY29udGV4dCgpOgotICAgIGF3YWl0
IGFzeW5jaW8uc2xlZXAoMCkKLSAgICB5aWVsZAotICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMCkK
LQotCi1jbGFzcyBBc3luY2lvQ29tcGF0VGVzdChUZXN0Q2FzZSk6Ci0gICAgZGVmIHRlc3Rfb2so
c2VsZik6Ci0gICAgICAgIGFzeW5jIGRlZiB0ZXN0KCk6Ci0gICAgICAgICAgICBhc3luYyB3aXRo
IHNvbWVfY29udGV4dCgpOgotICAgICAgICAgICAgICAgIHBhc3MKLQotICAgICAgICBydW4odGVz
dCgpKQotCi0gICAgZGVmIHRlc3RfcmFpc2VfZXhjZXB0aW9uKHNlbGYpOgotICAgICAgICBhc3lu
YyBkZWYgdGVzdCgpOgotICAgICAgICAgICAgYXN5bmMgd2l0aCBzb21lX2NvbnRleHQoKToKLSAg
ICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoInNvbWUgcmVhc29uIikKLQotICAgICAg
ICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcik6Ci0gICAgICAgICAgICBydW4o
dGVzdCgpKQotCi0gICAgZGVmIHRlc3RfcmFpc2VfZXhjZXB0aW9uX3R5cGUoc2VsZik6Ci0gICAg
ICAgIGFzeW5jIGRlZiB0ZXN0KCk6Ci0gICAgICAgICAgICBhc3luYyB3aXRoIHNvbWVfY29udGV4
dCgpOgotICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcgotCi0gICAgICAgIHdpdGgg
c2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKLSAgICAgICAgICAgIHJ1bih0ZXN0KCkp
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9idWZmZXIucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvdGVzdHMvdGVzdF9idWZmZXIucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDUxZGJjNDRkMGRkMjZmMWVmNjg1NjgyNGQ1NWJiODgwOTkyODg3NTYuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3Rf
YnVmZmVyLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjAxICswLDAgQEAKLWZyb20gdW5pdHRlc3Qg
aW1wb3J0IFRlc3RDYXNlCi0KLWZyb20gYWlvcXVpYy5idWZmZXIgaW1wb3J0IEJ1ZmZlciwgQnVm
ZmVyUmVhZEVycm9yLCBCdWZmZXJXcml0ZUVycm9yLCBzaXplX3VpbnRfdmFyCi0KLQotY2xhc3Mg
QnVmZmVyVGVzdChUZXN0Q2FzZSk6Ci0gICAgZGVmIHRlc3RfZGF0YV9zbGljZShzZWxmKToKLSAg
ICAgICAgYnVmID0gQnVmZmVyKGRhdGE9YiJceDA4XHgwN1x4MDZceDA1XHgwNFx4MDNceDAyXHgw
MSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGFfc2xpY2UoMCwgOCksIGIiXHgw
OFx4MDdceDA2XHgwNVx4MDRceDAzXHgwMlx4MDEiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGJ1Zi5kYXRhX3NsaWNlKDEsIDMpLCBiIlx4MDdceDA2IikKLQotICAgICAgICB3aXRoIHNlbGYu
YXNzZXJ0UmFpc2VzKEJ1ZmZlclJlYWRFcnJvcik6Ci0gICAgICAgICAgICBidWYuZGF0YV9zbGlj
ZSgtMSwgMykKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJSZWFkRXJyb3Ip
OgotICAgICAgICAgICAgYnVmLmRhdGFfc2xpY2UoMCwgOSkKLSAgICAgICAgd2l0aCBzZWxmLmFz
c2VydFJhaXNlcyhCdWZmZXJSZWFkRXJyb3IpOgotICAgICAgICAgICAgYnVmLmRhdGFfc2xpY2Uo
MSwgMCkKLQotICAgIGRlZiB0ZXN0X3B1bGxfYnl0ZXMoc2VsZik6Ci0gICAgICAgIGJ1ZiA9IEJ1
ZmZlcihkYXRhPWIiXHgwOFx4MDdceDA2XHgwNVx4MDRceDAzXHgwMlx4MDEiKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGJ1Zi5wdWxsX2J5dGVzKDMpLCBiIlx4MDhceDA3XHgwNiIpCi0KLSAg
ICBkZWYgdGVzdF9wdWxsX2J5dGVzX25lZ2F0aXZlKHNlbGYpOgotICAgICAgICBidWYgPSBCdWZm
ZXIoZGF0YT1iIlx4MDhceDA3XHgwNlx4MDVceDA0XHgwM1x4MDJceDAxIikKLSAgICAgICAgd2l0
aCBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJSZWFkRXJyb3IpOgotICAgICAgICAgICAgYnVmLnB1
bGxfYnl0ZXMoLTEpCi0KLSAgICBkZWYgdGVzdF9wdWxsX2J5dGVzX3RydW5jYXRlZChzZWxmKToK
LSAgICAgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PTApCi0gICAgICAgIHdpdGggc2VsZi5hc3Nl
cnRSYWlzZXMoQnVmZmVyUmVhZEVycm9yKToKLSAgICAgICAgICAgIGJ1Zi5wdWxsX2J5dGVzKDIp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgMCkKLQotICAgIGRlZiB0ZXN0
X3B1bGxfYnl0ZXNfemVybyhzZWxmKToKLSAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9YiJceDA4
XHgwN1x4MDZceDA1XHgwNFx4MDNceDAyXHgwMSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
YnVmLnB1bGxfYnl0ZXMoMCksIGIiIikKLQotICAgIGRlZiB0ZXN0X3B1bGxfdWludDgoc2VsZik6
Ci0gICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWIiXHgwOFx4MDdceDA2XHgwNVx4MDRceDAzXHgw
Mlx4MDEiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5wdWxsX3VpbnQ4KCksIDB4MDgp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgMSkKLQotICAgIGRlZiB0ZXN0
X3B1bGxfdWludDhfdHJ1bmNhdGVkKHNlbGYpOgotICAgICAgICBidWYgPSBCdWZmZXIoY2FwYWNp
dHk9MCkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJSZWFkRXJyb3IpOgot
ICAgICAgICAgICAgYnVmLnB1bGxfdWludDgoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1
Zi50ZWxsKCksIDApCi0KLSAgICBkZWYgdGVzdF9wdWxsX3VpbnQxNihzZWxmKToKLSAgICAgICAg
YnVmID0gQnVmZmVyKGRhdGE9YiJceDA4XHgwN1x4MDZceDA1XHgwNFx4MDNceDAyXHgwMSIpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnB1bGxfdWludDE2KCksIDB4MDgwNykKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCAyKQotCi0gICAgZGVmIHRlc3RfcHVsbF91
aW50MTZfdHJ1bmNhdGVkKHNlbGYpOgotICAgICAgICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9MSkK
LSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJSZWFkRXJyb3IpOgotICAgICAg
ICAgICAgYnVmLnB1bGxfdWludDE2KCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVs
bCgpLCAwKQotCi0gICAgZGVmIHRlc3RfcHVsbF91aW50MzIoc2VsZik6Ci0gICAgICAgIGJ1ZiA9
IEJ1ZmZlcihkYXRhPWIiXHgwOFx4MDdceDA2XHgwNVx4MDRceDAzXHgwMlx4MDEiKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5wdWxsX3VpbnQzMigpLCAweDA4MDcwNjA1KQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi50ZWxsKCksIDQpCi0KLSAgICBkZWYgdGVzdF9wdWxsX3Vp
bnQzMl90cnVuY2F0ZWQoc2VsZik6Ci0gICAgICAgIGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0eT0zKQot
ICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlclJlYWRFcnJvcik6Ci0gICAgICAg
ICAgICBidWYucHVsbF91aW50MzIoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi50ZWxs
KCksIDApCi0KLSAgICBkZWYgdGVzdF9wdWxsX3VpbnQ2NChzZWxmKToKLSAgICAgICAgYnVmID0g
QnVmZmVyKGRhdGE9YiJceDA4XHgwN1x4MDZceDA1XHgwNFx4MDNceDAyXHgwMSIpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnB1bGxfdWludDY0KCksIDB4MDgwNzA2MDUwNDAzMDIwMSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCA4KQotCi0gICAgZGVmIHRlc3Rf
cHVsbF91aW50NjRfdHJ1bmNhdGVkKHNlbGYpOgotICAgICAgICBidWYgPSBCdWZmZXIoY2FwYWNp
dHk9NykKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJSZWFkRXJyb3IpOgot
ICAgICAgICAgICAgYnVmLnB1bGxfdWludDY0KCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChi
dWYudGVsbCgpLCAwKQotCi0gICAgZGVmIHRlc3RfcHVzaF9ieXRlcyhzZWxmKToKLSAgICAgICAg
YnVmID0gQnVmZmVyKGNhcGFjaXR5PTMpCi0gICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGIiXHgwOFx4
MDdceDA2IikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYuZGF0YSwgYiJceDA4XHgwN1x4
MDYiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi50ZWxsKCksIDMpCi0KLSAgICBkZWYg
dGVzdF9wdXNoX2J5dGVzX3RydW5jYXRlZChzZWxmKToKLSAgICAgICAgYnVmID0gQnVmZmVyKGNh
cGFjaXR5PTMpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyV3JpdGVFcnJv
cik6Ci0gICAgICAgICAgICBidWYucHVzaF9ieXRlcyhiIlx4MDhceDA3XHgwNlx4MDUiKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi50ZWxsKCksIDApCi0KLSAgICBkZWYgdGVzdF9wdXNo
X2J5dGVzX3plcm8oc2VsZik6Ci0gICAgICAgIGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0eT0zKQotICAg
ICAgICBidWYucHVzaF9ieXRlcyhiIiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRh
dGEsIGIiIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCAwKQotCi0gICAg
ZGVmIHRlc3RfcHVzaF91aW50OChzZWxmKToKLSAgICAgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5
PTEpCi0gICAgICAgIGJ1Zi5wdXNoX3VpbnQ4KDB4MDgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoYnVmLmRhdGEsIGIiXHgwOCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwo
KSwgMSkKLQotICAgIGRlZiB0ZXN0X3B1c2hfdWludDE2KHNlbGYpOgotICAgICAgICBidWYgPSBC
dWZmZXIoY2FwYWNpdHk9MikKLSAgICAgICAgYnVmLnB1c2hfdWludDE2KDB4MDgwNykKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChidWYuZGF0YSwgYiJceDA4XHgwNyIpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgMikKLQotICAgIGRlZiB0ZXN0X3B1c2hfdWludDMyKHNl
bGYpOgotICAgICAgICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9NCkKLSAgICAgICAgYnVmLnB1c2hf
dWludDMyKDB4MDgwNzA2MDUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGIi
XHgwOFx4MDdceDA2XHgwNSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwg
NCkKLQotICAgIGRlZiB0ZXN0X3B1c2hfdWludDY0KHNlbGYpOgotICAgICAgICBidWYgPSBCdWZm
ZXIoY2FwYWNpdHk9OCkKLSAgICAgICAgYnVmLnB1c2hfdWludDY0KDB4MDgwNzA2MDUwNDAzMDIw
MSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYuZGF0YSwgYiJceDA4XHgwN1x4MDZceDA1
XHgwNFx4MDNceDAyXHgwMSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwg
OCkKLQotICAgIGRlZiB0ZXN0X3NlZWsoc2VsZik6Ci0gICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRh
PWIiMDEyMzQ1NjciKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJ1Zi5lb2YoKSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCAwKQotCi0gICAgICAgIGJ1Zi5zZWVrKDQp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYnVmLmVvZigpKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGJ1Zi50ZWxsKCksIDQpCi0KLSAgICAgICAgYnVmLnNlZWsoOCkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKGJ1Zi5lb2YoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYudGVs
bCgpLCA4KQotCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyUmVhZEVycm9y
KToKLSAgICAgICAgICAgIGJ1Zi5zZWVrKC0xKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1
Zi50ZWxsKCksIDgpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyUmVhZEVy
cm9yKToKLSAgICAgICAgICAgIGJ1Zi5zZWVrKDkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
YnVmLnRlbGwoKSwgOCkKLQotCi1jbGFzcyBVaW50VmFyVGVzdChUZXN0Q2FzZSk6Ci0gICAgZGVm
IHJvdW5kdHJpcChzZWxmLCBkYXRhLCB2YWx1ZSk6Ci0gICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRh
PWRhdGEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnB1bGxfdWludF92YXIoKSwgdmFs
dWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgbGVuKGRhdGEpKQotCi0g
ICAgICAgIGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0eT04KQotICAgICAgICBidWYucHVzaF91aW50X3Zh
cih2YWx1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYuZGF0YSwgZGF0YSkKLQotICAg
IGRlZiB0ZXN0X3VpbnRfdmFyKHNlbGYpOgotICAgICAgICAjIDEgYnl0ZQotICAgICAgICBzZWxm
LnJvdW5kdHJpcChiIlx4MDAiLCAwKQotICAgICAgICBzZWxmLnJvdW5kdHJpcChiIlx4MDEiLCAx
KQotICAgICAgICBzZWxmLnJvdW5kdHJpcChiIlx4MjUiLCAzNykKLSAgICAgICAgc2VsZi5yb3Vu
ZHRyaXAoYiJceDNmIiwgNjMpCi0KLSAgICAgICAgIyAyIGJ5dGVzCi0gICAgICAgIHNlbGYucm91
bmR0cmlwKGIiXHg3Ylx4YmQiLCAxNTI5MykKLSAgICAgICAgc2VsZi5yb3VuZHRyaXAoYiJceDdm
XHhmZiIsIDE2MzgzKQotCi0gICAgICAgICMgNCBieXRlcwotICAgICAgICBzZWxmLnJvdW5kdHJp
cChiIlx4OWRceDdmXHgzZVx4N2QiLCA0OTQ4NzgzMzMpCi0gICAgICAgIHNlbGYucm91bmR0cmlw
KGIiXHhiZlx4ZmZceGZmXHhmZiIsIDEwNzM3NDE4MjMpCi0KLSAgICAgICAgIyA4IGJ5dGVzCi0g
ICAgICAgIHNlbGYucm91bmR0cmlwKGIiXHhjMlx4MTlceDdjXHg1ZVx4ZmZceDE0XHhlOFx4OGMi
LCAxNTEyODg4MDk5NDE5NTI2NTIpCi0gICAgICAgIHNlbGYucm91bmR0cmlwKGIiXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmYiLCA0NjExNjg2MDE4NDI3Mzg3OTAzKQotCi0gICAgZGVm
IHRlc3RfcHVsbF91aW50X3Zhcl90cnVuY2F0ZWQoc2VsZik6Ci0gICAgICAgIGJ1ZiA9IEJ1ZmZl
cihjYXBhY2l0eT0wKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlclJlYWRF
cnJvcik6Ci0gICAgICAgICAgICBidWYucHVsbF91aW50X3ZhcigpCi0KLSAgICAgICAgYnVmID0g
QnVmZmVyKGRhdGE9YiJceGZmIikKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhCdWZm
ZXJSZWFkRXJyb3IpOgotICAgICAgICAgICAgYnVmLnB1bGxfdWludF92YXIoKQotCi0gICAgZGVm
IHRlc3RfcHVzaF91aW50X3Zhcl90b29fYmlnKHNlbGYpOgotICAgICAgICBidWYgPSBCdWZmZXIo
Y2FwYWNpdHk9OCkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKSBh
cyBjbToKLSAgICAgICAgICAgIGJ1Zi5wdXNoX3VpbnRfdmFyKDQ2MTE2ODYwMTg0MjczODc5MDQp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBzdHIoY20uZXhjZXB0aW9u
KSwgIkludGVnZXIgaXMgdG9vIGJpZyBmb3IgYSB2YXJpYWJsZS1sZW5ndGggaW50ZWdlciIKLSAg
ICAgICAgKQotCi0gICAgZGVmIHRlc3Rfc2l6ZV91aW50X3ZhcihzZWxmKToKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzaXplX3VpbnRfdmFyKDYzKSwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChzaXplX3VpbnRfdmFyKDE2MzgzKSwgMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
aXplX3VpbnRfdmFyKDEwNzM3NDE4MjMpLCA0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNp
emVfdWludF92YXIoNDYxMTY4NjAxODQyNzM4NzkwMyksIDgpCi0KLSAgICAgICAgd2l0aCBzZWxm
LmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBjbToKLSAgICAgICAgICAgIHNpemVfdWludF92
YXIoNDYxMTY4NjAxODQyNzM4NzkwNCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAg
ICAgICAgIHN0cihjbS5leGNlcHRpb24pLCAiSW50ZWdlciBpcyB0b28gYmlnIGZvciBhIHZhcmlh
YmxlLWxlbmd0aCBpbnRlZ2VyIgotICAgICAgICApCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
dGVzdHMvdGVzdF9jb25uZWN0aW9uLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfY29ubmVj
dGlvbi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDI3ZTFjMDQ1NzQ5ZjZmOGZl
MWMzNTE4MDBhNDJkOWM4MmFkODY3Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9jb25uZWN0aW9uLnB5CisrKyAv
ZGV2L251bGwKQEAgLTEsMTgwMCArMCwwIEBACi1pbXBvcnQgYXN5bmNpbwotaW1wb3J0IGJpbmFz
Y2lpCi1pbXBvcnQgY29udGV4dGxpYgotaW1wb3J0IGlvCi1pbXBvcnQgdGltZQotZnJvbSB1bml0
dGVzdCBpbXBvcnQgVGVzdENhc2UKLQotZnJvbSBhaW9xdWljIGltcG9ydCB0bHMKLWZyb20gYWlv
cXVpYy5idWZmZXIgaW1wb3J0IFVJTlRfVkFSX01BWCwgQnVmZmVyLCBlbmNvZGVfdWludF92YXIK
LWZyb20gYWlvcXVpYy5xdWljIGltcG9ydCBldmVudHMKLWZyb20gYWlvcXVpYy5xdWljLmNvbmZp
Z3VyYXRpb24gaW1wb3J0IFF1aWNDb25maWd1cmF0aW9uCi1mcm9tIGFpb3F1aWMucXVpYy5jb25u
ZWN0aW9uIGltcG9ydCAoCi0gICAgUXVpY0Nvbm5lY3Rpb24sCi0gICAgUXVpY0Nvbm5lY3Rpb25F
cnJvciwKLSAgICBRdWljTmV0d29ya1BhdGgsCi0gICAgUXVpY1JlY2VpdmVDb250ZXh0LAotKQot
ZnJvbSBhaW9xdWljLnF1aWMuY3J5cHRvIGltcG9ydCBDcnlwdG9QYWlyCi1mcm9tIGFpb3F1aWMu
cXVpYy5sb2dnZXIgaW1wb3J0IFF1aWNMb2dnZXIKLWZyb20gYWlvcXVpYy5xdWljLnBhY2tldCBp
bXBvcnQgKAotICAgIFBBQ0tFVF9UWVBFX0lOSVRJQUwsCi0gICAgUXVpY0Vycm9yQ29kZSwKLSAg
ICBRdWljRnJhbWVUeXBlLAotICAgIGVuY29kZV9xdWljX3JldHJ5LAotICAgIGVuY29kZV9xdWlj
X3ZlcnNpb25fbmVnb3RpYXRpb24sCi0pCi1mcm9tIGFpb3F1aWMucXVpYy5wYWNrZXRfYnVpbGRl
ciBpbXBvcnQgUXVpY0RlbGl2ZXJ5U3RhdGUsIFF1aWNQYWNrZXRCdWlsZGVyCi1mcm9tIGFpb3F1
aWMucXVpYy5yZWNvdmVyeSBpbXBvcnQgUXVpY1BhY2tldFBhY2VyCi0KLWZyb20gLnV0aWxzIGlt
cG9ydCAoCi0gICAgU0VSVkVSX0NBQ0VSVEZJTEUsCi0gICAgU0VSVkVSX0NFUlRGSUxFLAotICAg
IFNFUlZFUl9DRVJURklMRV9XSVRIX0NIQUlOLAotICAgIFNFUlZFUl9LRVlGSUxFLAotKQotCi1D
TElFTlRfQUREUiA9ICgiMS4yLjMuNCIsIDEyMzQpCi0KLVNFUlZFUl9BRERSID0gKCIyLjMuNC41
IiwgNDQzMykKLQotCi1jbGFzcyBTZXNzaW9uVGlja2V0U3RvcmU6Ci0gICAgZGVmIF9faW5pdF9f
KHNlbGYpOgotICAgICAgICBzZWxmLnRpY2tldHMgPSB7fQotCi0gICAgZGVmIGFkZChzZWxmLCB0
aWNrZXQpOgotICAgICAgICBzZWxmLnRpY2tldHNbdGlja2V0LnRpY2tldF0gPSB0aWNrZXQKLQot
ICAgIGRlZiBwb3Aoc2VsZiwgbGFiZWwpOgotICAgICAgICByZXR1cm4gc2VsZi50aWNrZXRzLnBv
cChsYWJlbCwgTm9uZSkKLQotCi1kZWYgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQsIGVw
b2NoPXRscy5FcG9jaC5PTkVfUlRUKToKLSAgICByZXR1cm4gUXVpY1JlY2VpdmVDb250ZXh0KAot
ICAgICAgICBlcG9jaD1lcG9jaCwKLSAgICAgICAgaG9zdF9jaWQ9Y2xpZW50Lmhvc3RfY2lkLAot
ICAgICAgICBuZXR3b3JrX3BhdGg9Y2xpZW50Ll9uZXR3b3JrX3BhdGhzWzBdLAotICAgICAgICBx
dWljX2xvZ2dlcl9mcmFtZXM9W10sCi0gICAgICAgIHRpbWU9YXN5bmNpby5nZXRfZXZlbnRfbG9v
cCgpLnRpbWUoKSwKLSAgICApCi0KLQotZGVmIGNvbnN1bWVfZXZlbnRzKGNvbm5lY3Rpb24pOgot
ICAgIHdoaWxlIFRydWU6Ci0gICAgICAgIGV2ZW50ID0gY29ubmVjdGlvbi5uZXh0X2V2ZW50KCkK
LSAgICAgICAgaWYgZXZlbnQgaXMgTm9uZToKLSAgICAgICAgICAgIGJyZWFrCi0KLQotZGVmIGNy
ZWF0ZV9zdGFuZGFsb25lX2NsaWVudChzZWxmLCAqKmNsaWVudF9vcHRpb25zKToKLSAgICBjbGll
bnQgPSBRdWljQ29ubmVjdGlvbigKLSAgICAgICAgY29uZmlndXJhdGlvbj1RdWljQ29uZmlndXJh
dGlvbigKLSAgICAgICAgICAgIGlzX2NsaWVudD1UcnVlLCBxdWljX2xvZ2dlcj1RdWljTG9nZ2Vy
KCksICoqY2xpZW50X29wdGlvbnMKLSAgICAgICAgKQotICAgICkKLSAgICBjbGllbnQuX2Fja19k
ZWxheSA9IDAKLQotICAgICMga2ljay1vZmYgaGFuZHNoYWtlCi0gICAgY2xpZW50LmNvbm5lY3Qo
U0VSVkVSX0FERFIsIG5vdz10aW1lLnRpbWUoKSkKLSAgICBzZWxmLmFzc2VydEVxdWFsKGRyb3Ao
Y2xpZW50KSwgMSkKLQotICAgIHJldHVybiBjbGllbnQKLQotCi1AY29udGV4dGxpYi5jb250ZXh0
bWFuYWdlcgotZGVmIGNsaWVudF9hbmRfc2VydmVyKAotICAgIGNsaWVudF9rd2FyZ3M9e30sCi0g
ICAgY2xpZW50X29wdGlvbnM9e30sCi0gICAgY2xpZW50X3BhdGNoPWxhbWJkYSB4OiBOb25lLAot
ICAgIGhhbmRzaGFrZT1UcnVlLAotICAgIHNlcnZlcl9rd2FyZ3M9e30sCi0gICAgc2VydmVyX2Nl
cnRmaWxlPVNFUlZFUl9DRVJURklMRSwKLSAgICBzZXJ2ZXJfa2V5ZmlsZT1TRVJWRVJfS0VZRklM
RSwKLSAgICBzZXJ2ZXJfb3B0aW9ucz17fSwKLSAgICBzZXJ2ZXJfcGF0Y2g9bGFtYmRhIHg6IE5v
bmUsCi0pOgotICAgIGNsaWVudF9jb25maWd1cmF0aW9uID0gUXVpY0NvbmZpZ3VyYXRpb24oCi0g
ICAgICAgIGlzX2NsaWVudD1UcnVlLCBxdWljX2xvZ2dlcj1RdWljTG9nZ2VyKCksICoqY2xpZW50
X29wdGlvbnMKLSAgICApCi0gICAgY2xpZW50X2NvbmZpZ3VyYXRpb24ubG9hZF92ZXJpZnlfbG9j
YXRpb25zKGNhZmlsZT1TRVJWRVJfQ0FDRVJURklMRSkKLQotICAgIGNsaWVudCA9IFF1aWNDb25u
ZWN0aW9uKGNvbmZpZ3VyYXRpb249Y2xpZW50X2NvbmZpZ3VyYXRpb24sICoqY2xpZW50X2t3YXJn
cykKLSAgICBjbGllbnQuX2Fja19kZWxheSA9IDAKLSAgICBkaXNhYmxlX3BhY2tldF9wYWNpbmco
Y2xpZW50KQotICAgIGNsaWVudF9wYXRjaChjbGllbnQpCi0KLSAgICBzZXJ2ZXJfY29uZmlndXJh
dGlvbiA9IFF1aWNDb25maWd1cmF0aW9uKAotICAgICAgICBpc19jbGllbnQ9RmFsc2UsIHF1aWNf
bG9nZ2VyPVF1aWNMb2dnZXIoKSwgKipzZXJ2ZXJfb3B0aW9ucwotICAgICkKLSAgICBzZXJ2ZXJf
Y29uZmlndXJhdGlvbi5sb2FkX2NlcnRfY2hhaW4oc2VydmVyX2NlcnRmaWxlLCBzZXJ2ZXJfa2V5
ZmlsZSkKLQotICAgIHNlcnZlciA9IFF1aWNDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb249c2VydmVy
X2NvbmZpZ3VyYXRpb24sICoqc2VydmVyX2t3YXJncykKLSAgICBzZXJ2ZXIuX2Fja19kZWxheSA9
IDAKLSAgICBkaXNhYmxlX3BhY2tldF9wYWNpbmcoc2VydmVyKQotICAgIHNlcnZlcl9wYXRjaChz
ZXJ2ZXIpCi0KLSAgICAjIHBlcmZvcm0gaGFuZHNoYWtlCi0gICAgaWYgaGFuZHNoYWtlOgotICAg
ICAgICBjbGllbnQuY29ubmVjdChTRVJWRVJfQUREUiwgbm93PXRpbWUudGltZSgpKQotICAgICAg
ICBmb3IgaSBpbiByYW5nZSgzKToKLSAgICAgICAgICAgIHJvdW5kdHJpcChjbGllbnQsIHNlcnZl
cikKLQotICAgIHlpZWxkIGNsaWVudCwgc2VydmVyCi0KLSAgICAjIGNsb3NlCi0gICAgY2xpZW50
LmNsb3NlKCkKLSAgICBzZXJ2ZXIuY2xvc2UoKQotCi0KLWRlZiBkaXNhYmxlX3BhY2tldF9wYWNp
bmcoY29ubmVjdGlvbik6Ci0gICAgY2xhc3MgRHVtbXlQYWNrZXRQYWNlcihRdWljUGFja2V0UGFj
ZXIpOgotICAgICAgICBkZWYgbmV4dF9zZW5kX3RpbWUoc2VsZiwgbm93KToKLSAgICAgICAgICAg
IHJldHVybiBOb25lCi0KLSAgICBjb25uZWN0aW9uLl9sb3NzLl9wYWNlciA9IER1bW15UGFja2V0
UGFjZXIoKQotCi0KLWRlZiBzZXF1ZW5jZV9udW1iZXJzKGNvbm5lY3Rpb25faWRzKToKLSAgICBy
ZXR1cm4gbGlzdChtYXAobGFtYmRhIHg6IHguc2VxdWVuY2VfbnVtYmVyLCBjb25uZWN0aW9uX2lk
cykpCi0KLQotZGVmIGRyb3Aoc2VuZGVyKToKLSAgICAiIiIKLSAgICBEcm9wIGRhdGFncmFtcyBm
cm9tIGBzZW5kZXJgLgotICAgICIiIgotICAgIHJldHVybiBsZW4oc2VuZGVyLmRhdGFncmFtc190
b19zZW5kKG5vdz10aW1lLnRpbWUoKSkpCi0KLQotZGVmIHJvdW5kdHJpcChzZW5kZXIsIHJlY2Vp
dmVyKToKLSAgICAiIiIKLSAgICBTZW5kIGRhdGFncmFtcyBmcm9tIGBzZW5kZXJgIHRvIGByZWNl
aXZlcmAgYW5kIGJhY2suCi0gICAgIiIiCi0gICAgcmV0dXJuICh0cmFuc2ZlcihzZW5kZXIsIHJl
Y2VpdmVyKSwgdHJhbnNmZXIocmVjZWl2ZXIsIHNlbmRlcikpCi0KLQotZGVmIHRyYW5zZmVyKHNl
bmRlciwgcmVjZWl2ZXIpOgotICAgICIiIgotICAgIFNlbmQgZGF0YWdyYW1zIGZyb20gYHNlbmRl
cmAgdG8gYHJlY2VpdmVyYC4KLSAgICAiIiIKLSAgICBkYXRhZ3JhbXMgPSAwCi0gICAgZnJvbV9h
ZGRyID0gQ0xJRU5UX0FERFIgaWYgc2VuZGVyLl9pc19jbGllbnQgZWxzZSBTRVJWRVJfQUREUgot
ICAgIGZvciBkYXRhLCBhZGRyIGluIHNlbmRlci5kYXRhZ3JhbXNfdG9fc2VuZChub3c9dGltZS50
aW1lKCkpOgotICAgICAgICBkYXRhZ3JhbXMgKz0gMQotICAgICAgICByZWNlaXZlci5yZWNlaXZl
X2RhdGFncmFtKGRhdGEsIGZyb21fYWRkciwgbm93PXRpbWUudGltZSgpKQotICAgIHJldHVybiBk
YXRhZ3JhbXMKLQotCi1jbGFzcyBRdWljQ29ubmVjdGlvblRlc3QoVGVzdENhc2UpOgotICAgIGRl
ZiBjaGVja19oYW5kc2hha2Uoc2VsZiwgY2xpZW50LCBzZXJ2ZXIsIGFscG5fcHJvdG9jb2w9Tm9u
ZSk6Ci0gICAgICAgICIiIgotICAgICAgICBDaGVjayBoYW5kc2hha2UgY29tcGxldGVkLgotICAg
ICAgICAiIiIKLSAgICAgICAgZXZlbnQgPSBjbGllbnQubmV4dF9ldmVudCgpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwodHlwZShldmVudCksIGV2ZW50cy5Qcm90b2NvbE5lZ290aWF0ZWQpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuYWxwbl9wcm90b2NvbCwgYWxwbl9wcm90b2Nv
bCkKLSAgICAgICAgZXZlbnQgPSBjbGllbnQubmV4dF9ldmVudCgpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwodHlwZShldmVudCksIGV2ZW50cy5IYW5kc2hha2VDb21wbGV0ZWQpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuYWxwbl9wcm90b2NvbCwgYWxwbl9wcm90b2NvbCkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5lYXJseV9kYXRhX2FjY2VwdGVkLCBGYWxzZSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5zZXNzaW9uX3Jlc3VtZWQsIEZhbHNlKQot
ICAgICAgICBmb3IgaSBpbiByYW5nZSg3KToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
dHlwZShjbGllbnQubmV4dF9ldmVudCgpKSwgZXZlbnRzLkNvbm5lY3Rpb25JZElzc3VlZCkKLSAg
ICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY2xpZW50Lm5leHRfZXZlbnQoKSkKLQotICAgICAgICBl
dmVudCA9IHNlcnZlci5uZXh0X2V2ZW50KCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBl
KGV2ZW50KSwgZXZlbnRzLlByb3RvY29sTmVnb3RpYXRlZCkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChldmVudC5hbHBuX3Byb3RvY29sLCBhbHBuX3Byb3RvY29sKQotICAgICAgICBldmVudCA9
IHNlcnZlci5uZXh0X2V2ZW50KCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGV2ZW50
KSwgZXZlbnRzLkhhbmRzaGFrZUNvbXBsZXRlZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChl
dmVudC5hbHBuX3Byb3RvY29sLCBhbHBuX3Byb3RvY29sKQotICAgICAgICBmb3IgaSBpbiByYW5n
ZSg3KToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShzZXJ2ZXIubmV4dF9ldmVu
dCgpKSwgZXZlbnRzLkNvbm5lY3Rpb25JZElzc3VlZCkKLSAgICAgICAgc2VsZi5hc3NlcnRJc05v
bmUoc2VydmVyLm5leHRfZXZlbnQoKSkKLQotICAgIGRlZiB0ZXN0X2Nvbm5lY3Qoc2VsZik6Ci0g
ICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgotICAg
ICAgICAgICAgIyBjaGVjayBoYW5kc2hha2UgY29tcGxldGVkCi0gICAgICAgICAgICBzZWxmLmNo
ZWNrX2hhbmRzaGFrZShjbGllbnQ9Y2xpZW50LCBzZXJ2ZXI9c2VydmVyKQotCi0gICAgICAgICAg
ICAjIGNoZWNrIGVhY2ggZW5kcG9pbnQgaGFzIGF2YWlsYWJsZSBjb25uZWN0aW9uIElEcyBmb3Ig
dGhlIHBlZXIKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICAgICAg
c2VxdWVuY2VfbnVtYmVycyhjbGllbnQuX3BlZXJfY2lkX2F2YWlsYWJsZSksIFsxLCAyLCAzLCA0
LCA1LCA2LCA3XQotICAgICAgICAgICAgKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgK
LSAgICAgICAgICAgICAgICBzZXF1ZW5jZV9udW1iZXJzKHNlcnZlci5fcGVlcl9jaWRfYXZhaWxh
YmxlKSwgWzEsIDIsIDMsIDQsIDUsIDYsIDddCi0gICAgICAgICAgICApCi0KLSAgICAgICAgICAg
ICMgY2xpZW50IGNsb3NlcyB0aGUgY29ubmVjdGlvbgotICAgICAgICAgICAgY2xpZW50LmNsb3Nl
KCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNmZXIoY2xpZW50LCBzZXJ2ZXIp
LCAxKQotCi0gICAgICAgICAgICAjIGNoZWNrIGNvbm5lY3Rpb24gY2xvc2VzIG9uIHRoZSBjbGll
bnQgc2lkZQotICAgICAgICAgICAgY2xpZW50LmhhbmRsZV90aW1lcihjbGllbnQuZ2V0X3RpbWVy
KCkpCi0gICAgICAgICAgICBldmVudCA9IGNsaWVudC5uZXh0X2V2ZW50KCkKLSAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwodHlwZShldmVudCksIGV2ZW50cy5Db25uZWN0aW9uVGVybWluYXRl
ZCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuZXJyb3JfY29kZSwgUXVpY0Vy
cm9yQ29kZS5OT19FUlJPUikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuZnJh
bWVfdHlwZSwgTm9uZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQucmVhc29u
X3BocmFzZSwgIiIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShjbGllbnQubmV4dF9l
dmVudCgpKQotCi0gICAgICAgICAgICAjIGNoZWNrIGNvbm5lY3Rpb24gY2xvc2VzIG9uIHRoZSBz
ZXJ2ZXIgc2lkZQotICAgICAgICAgICAgc2VydmVyLmhhbmRsZV90aW1lcihzZXJ2ZXIuZ2V0X3Rp
bWVyKCkpCi0gICAgICAgICAgICBldmVudCA9IHNlcnZlci5uZXh0X2V2ZW50KCkKLSAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShldmVudCksIGV2ZW50cy5Db25uZWN0aW9uVGVybWlu
YXRlZCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuZXJyb3JfY29kZSwgUXVp
Y0Vycm9yQ29kZS5OT19FUlJPUikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQu
ZnJhbWVfdHlwZSwgTm9uZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQucmVh
c29uX3BocmFzZSwgIiIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZXJ2ZXIubmV4
dF9ldmVudCgpKQotCi0gICAgICAgICAgICAjIGNoZWNrIGNsaWVudCBsb2cKLSAgICAgICAgICAg
IGNsaWVudF9sb2cgPSBjbGllbnQuY29uZmlndXJhdGlvbi5xdWljX2xvZ2dlci50b19kaWN0KCkK
LSAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4oY2xpZW50X2xvZ1sidHJhY2VzIl1b
MF1bImV2ZW50cyJdKSwgMjApCi0KLSAgICAgICAgICAgICMgY2hlY2sgc2VydmVyIGxvZwotICAg
ICAgICAgICAgc2VydmVyX2xvZyA9IHNlcnZlci5jb25maWd1cmF0aW9uLnF1aWNfbG9nZ2VyLnRv
X2RpY3QoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGxlbihzZXJ2ZXJfbG9nWyJ0
cmFjZXMiXVswXVsiZXZlbnRzIl0pLCAyMCkKLQotICAgIGRlZiB0ZXN0X2Nvbm5lY3Rfd2l0aF9h
bHBuKHNlbGYpOgotICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKAotICAgICAgICAgICAg
Y2xpZW50X29wdGlvbnM9eyJhbHBuX3Byb3RvY29scyI6IFsiaDMtMjUiLCAiaHEtMjUiXX0sCi0g
ICAgICAgICAgICBzZXJ2ZXJfb3B0aW9ucz17ImFscG5fcHJvdG9jb2xzIjogWyJocS0yNSJdfSwK
LSAgICAgICAgKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgotICAgICAgICAgICAgIyBjaGVjayBoYW5k
c2hha2UgY29tcGxldGVkCi0gICAgICAgICAgICBzZWxmLmNoZWNrX2hhbmRzaGFrZShjbGllbnQ9
Y2xpZW50LCBzZXJ2ZXI9c2VydmVyLCBhbHBuX3Byb3RvY29sPSJocS0yNSIpCi0KLSAgICBkZWYg
dGVzdF9jb25uZWN0X3dpdGhfc2VjcmV0c19sb2coc2VsZik6Ci0gICAgICAgIGNsaWVudF9sb2df
ZmlsZSA9IGlvLlN0cmluZ0lPKCkKLSAgICAgICAgc2VydmVyX2xvZ19maWxlID0gaW8uU3RyaW5n
SU8oKQotICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKAotICAgICAgICAgICAgY2xpZW50
X29wdGlvbnM9eyJzZWNyZXRzX2xvZ19maWxlIjogY2xpZW50X2xvZ19maWxlfSwKLSAgICAgICAg
ICAgIHNlcnZlcl9vcHRpb25zPXsic2VjcmV0c19sb2dfZmlsZSI6IHNlcnZlcl9sb2dfZmlsZX0s
Ci0gICAgICAgICkgYXMgKGNsaWVudCwgc2VydmVyKToKLSAgICAgICAgICAgICMgY2hlY2sgaGFu
ZHNoYWtlIGNvbXBsZXRlZAotICAgICAgICAgICAgc2VsZi5jaGVja19oYW5kc2hha2UoY2xpZW50
PWNsaWVudCwgc2VydmVyPXNlcnZlcikKLQotICAgICAgICAgICAgIyBjaGVjayBzZWNyZXRzIHdl
cmUgbG9nZ2VkCi0gICAgICAgICAgICBjbGllbnRfbG9nID0gY2xpZW50X2xvZ19maWxlLmdldHZh
bHVlKCkKLSAgICAgICAgICAgIHNlcnZlcl9sb2cgPSBzZXJ2ZXJfbG9nX2ZpbGUuZ2V0dmFsdWUo
KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnRfbG9nLCBzZXJ2ZXJfbG9nKQot
ICAgICAgICAgICAgbGFiZWxzID0gW10KLSAgICAgICAgICAgIGZvciBsaW5lIGluIGNsaWVudF9s
b2cuc3BsaXRsaW5lcygpOgotICAgICAgICAgICAgICAgIGxhYmVscy5hcHBlbmQobGluZS5zcGxp
dCgpWzBdKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgICAgICBs
YWJlbHMsCi0gICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAiUVVJQ19TRVJW
RVJfSEFORFNIQUtFX1RSQUZGSUNfU0VDUkVUIiwKLSAgICAgICAgICAgICAgICAgICAgIlFVSUNf
Q0xJRU5UX0hBTkRTSEFLRV9UUkFGRklDX1NFQ1JFVCIsCi0gICAgICAgICAgICAgICAgICAgICJR
VUlDX1NFUlZFUl9UUkFGRklDX1NFQ1JFVF8wIiwKLSAgICAgICAgICAgICAgICAgICAgIlFVSUNf
Q0xJRU5UX1RSQUZGSUNfU0VDUkVUXzAiLAotICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAg
ICApCi0KLSAgICBkZWYgdGVzdF9jb25uZWN0X3dpdGhfY2VydF9jaGFpbihzZWxmKToKLSAgICAg
ICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcihzZXJ2ZXJfY2VydGZpbGU9U0VSVkVSX0NFUlRGSUxF
X1dJVEhfQ0hBSU4pIGFzICgKLSAgICAgICAgICAgIGNsaWVudCwKLSAgICAgICAgICAgIHNlcnZl
ciwKLSAgICAgICAgKToKLSAgICAgICAgICAgICMgY2hlY2sgaGFuZHNoYWtlIGNvbXBsZXRlZAot
ICAgICAgICAgICAgc2VsZi5jaGVja19oYW5kc2hha2UoY2xpZW50PWNsaWVudCwgc2VydmVyPXNl
cnZlcikKLQotICAgIGRlZiB0ZXN0X2Nvbm5lY3Rfd2l0aF9sb3NzXzEoc2VsZik6Ci0gICAgICAg
ICIiIgotICAgICAgICBDaGVjayBjb25uZWN0aW9uIGlzIGVzdGFibGlzaGVkIGV2ZW4gaW4gdGhl
IGNsaWVudCdzIElOSVRJQUwgaXMgbG9zdC4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgZGVmIGRh
dGFncmFtX3NpemVzKGl0ZW1zKToKLSAgICAgICAgICAgIHJldHVybiBbbGVuKHhbMF0pIGZvciB4
IGluIGl0ZW1zXQotCi0gICAgICAgIGNsaWVudF9jb25maWd1cmF0aW9uID0gUXVpY0NvbmZpZ3Vy
YXRpb24oaXNfY2xpZW50PVRydWUpCi0gICAgICAgIGNsaWVudF9jb25maWd1cmF0aW9uLmxvYWRf
dmVyaWZ5X2xvY2F0aW9ucyhjYWZpbGU9U0VSVkVSX0NBQ0VSVEZJTEUpCi0KLSAgICAgICAgY2xp
ZW50ID0gUXVpY0Nvbm5lY3Rpb24oY29uZmlndXJhdGlvbj1jbGllbnRfY29uZmlndXJhdGlvbikK
LSAgICAgICAgY2xpZW50Ll9hY2tfZGVsYXkgPSAwCi0KLSAgICAgICAgc2VydmVyX2NvbmZpZ3Vy
YXRpb24gPSBRdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9RmFsc2UpCi0gICAgICAgIHNlcnZl
cl9jb25maWd1cmF0aW9uLmxvYWRfY2VydF9jaGFpbihTRVJWRVJfQ0VSVEZJTEUsIFNFUlZFUl9L
RVlGSUxFKQotCi0gICAgICAgIHNlcnZlciA9IFF1aWNDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb249
c2VydmVyX2NvbmZpZ3VyYXRpb24pCi0gICAgICAgIHNlcnZlci5fYWNrX2RlbGF5ID0gMAotCi0g
ICAgICAgICMgY2xpZW50IHNlbmRzIElOSVRJQUwKLSAgICAgICAgbm93ID0gMC4wCi0gICAgICAg
IGNsaWVudC5jb25uZWN0KFNFUlZFUl9BRERSLCBub3c9bm93KQotICAgICAgICBpdGVtcyA9IGNs
aWVudC5kYXRhZ3JhbXNfdG9fc2VuZChub3c9bm93KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGRhdGFncmFtX3NpemVzKGl0ZW1zKSwgWzEyODBdKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGNsaWVudC5nZXRfdGltZXIoKSwgMS4wKQotCi0gICAgICAgICMgSU5JVElBTCBpcyBsb3N0Ci0g
ICAgICAgIG5vdyA9IDEuMAotICAgICAgICBjbGllbnQuaGFuZGxlX3RpbWVyKG5vdz1ub3cpCi0g
ICAgICAgIGl0ZW1zID0gY2xpZW50LmRhdGFncmFtc190b19zZW5kKG5vdz1ub3cpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoZGF0YWdyYW1fc2l6ZXMoaXRlbXMpLCBbMTI4MF0pCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50LmdldF90aW1lcigpLCAzLjApCi0KLSAgICAgICAgIyBz
ZXJ2ZXIgcmVjZWl2ZXMgSU5JVElBTCwgc2VuZHMgSU5JVElBTCArIEhBTkRTSEFLRQotICAgICAg
ICBub3cgPSAxLjEKLSAgICAgICAgc2VydmVyLnJlY2VpdmVfZGF0YWdyYW0oaXRlbXNbMF1bMF0s
IENMSUVOVF9BRERSLCBub3c9bm93KQotICAgICAgICBpdGVtcyA9IHNlcnZlci5kYXRhZ3JhbXNf
dG9fc2VuZChub3c9bm93KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGFncmFtX3NpemVz
KGl0ZW1zKSwgWzEyODAsIDEwMzBdKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5n
ZXRfdGltZXIoKSwgMi4xKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZXJ2ZXIuX2xv
c3Muc3BhY2VzWzBdLnNlbnRfcGFja2V0cyksIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGVuKHNlcnZlci5fbG9zcy5zcGFjZXNbMV0uc2VudF9wYWNrZXRzKSwgMikKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCh0eXBlKHNlcnZlci5uZXh0X2V2ZW50KCkpLCBldmVudHMuUHJvdG9jb2xO
ZWdvdGlhdGVkKQotICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZXJ2ZXIubmV4dF9ldmVudCgp
KQotCi0gICAgICAgICMgaGFuZHNoYWtlIGNvbnRpbnVlcyBub3JtYWxseQotICAgICAgICBub3cg
PSAxLjIKLSAgICAgICAgY2xpZW50LnJlY2VpdmVfZGF0YWdyYW0oaXRlbXNbMF1bMF0sIFNFUlZF
Ul9BRERSLCBub3c9bm93KQotICAgICAgICBjbGllbnQucmVjZWl2ZV9kYXRhZ3JhbShpdGVtc1sx
XVswXSwgU0VSVkVSX0FERFIsIG5vdz1ub3cpCi0gICAgICAgIGl0ZW1zID0gY2xpZW50LmRhdGFn
cmFtc190b19zZW5kKG5vdz1ub3cpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YWdyYW1f
c2l6ZXMoaXRlbXMpLCBbMzc2XSkKLSAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChjbGll
bnQuZ2V0X3RpbWVyKCksIDEuODI1KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoY2xp
ZW50Lm5leHRfZXZlbnQoKSksIGV2ZW50cy5Qcm90b2NvbE5lZ290aWF0ZWQpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwodHlwZShjbGllbnQubmV4dF9ldmVudCgpKSwgZXZlbnRzLkhhbmRzaGFr
ZUNvbXBsZXRlZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGNsaWVudC5uZXh0X2V2
ZW50KCkpLCBldmVudHMuQ29ubmVjdGlvbklkSXNzdWVkKQotCi0gICAgICAgIG5vdyA9IDEuMwot
ICAgICAgICBzZXJ2ZXIucmVjZWl2ZV9kYXRhZ3JhbShpdGVtc1swXVswXSwgQ0xJRU5UX0FERFIs
IG5vdz1ub3cpCi0gICAgICAgIGl0ZW1zID0gc2VydmVyLmRhdGFncmFtc190b19zZW5kKG5vdz1u
b3cpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YWdyYW1fc2l6ZXMoaXRlbXMpLCBbMjI5
XSkKLSAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChzZXJ2ZXIuZ2V0X3RpbWVyKCksIDEu
ODI1KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZXJ2ZXIuX2xvc3Muc3BhY2VzWzBd
LnNlbnRfcGFja2V0cyksIDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlcnZlci5f
bG9zcy5zcGFjZXNbMV0uc2VudF9wYWNrZXRzKSwgMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCh0eXBlKHNlcnZlci5uZXh0X2V2ZW50KCkpLCBldmVudHMuSGFuZHNoYWtlQ29tcGxldGVkKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoc2VydmVyLm5leHRfZXZlbnQoKSksIGV2ZW50
cy5Db25uZWN0aW9uSWRJc3N1ZWQpCi0KLSAgICAgICAgbm93ID0gMS40Ci0gICAgICAgIGNsaWVu
dC5yZWNlaXZlX2RhdGFncmFtKGl0ZW1zWzBdWzBdLCBTRVJWRVJfQUREUiwgbm93PW5vdykKLSAg
ICAgICAgaXRlbXMgPSBjbGllbnQuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5vdykKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFszMl0pCi0gICAgICAgIHNl
bGYuYXNzZXJ0QWxtb3N0RXF1YWwoY2xpZW50LmdldF90aW1lcigpLCA2MS40KSAgIyBpZGxlIHRp
bWVvdXQKLQotICAgIGRlZiB0ZXN0X2Nvbm5lY3Rfd2l0aF9sb3NzXzIoc2VsZik6Ci0gICAgICAg
IGRlZiBkYXRhZ3JhbV9zaXplcyhpdGVtcyk6Ci0gICAgICAgICAgICByZXR1cm4gW2xlbih4WzBd
KSBmb3IgeCBpbiBpdGVtc10KLQotICAgICAgICBjbGllbnRfY29uZmlndXJhdGlvbiA9IFF1aWND
b25maWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQotICAgICAgICBjbGllbnRfY29uZmlndXJhdGlv
bi5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FmaWxlPVNFUlZFUl9DQUNFUlRGSUxFKQotCi0gICAg
ICAgIGNsaWVudCA9IFF1aWNDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb249Y2xpZW50X2NvbmZpZ3Vy
YXRpb24pCi0gICAgICAgIGNsaWVudC5fYWNrX2RlbGF5ID0gMAotCi0gICAgICAgIHNlcnZlcl9j
b25maWd1cmF0aW9uID0gUXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PUZhbHNlKQotICAgICAg
ICBzZXJ2ZXJfY29uZmlndXJhdGlvbi5sb2FkX2NlcnRfY2hhaW4oU0VSVkVSX0NFUlRGSUxFLCBT
RVJWRVJfS0VZRklMRSkKLQotICAgICAgICBzZXJ2ZXIgPSBRdWljQ29ubmVjdGlvbihjb25maWd1
cmF0aW9uPXNlcnZlcl9jb25maWd1cmF0aW9uKQotICAgICAgICBzZXJ2ZXIuX2Fja19kZWxheSA9
IDAKLQotICAgICAgICAjIGNsaWVudCBzZW5kcyBJTklUSUFMCi0gICAgICAgIG5vdyA9IDAuMAot
ICAgICAgICBjbGllbnQuY29ubmVjdChTRVJWRVJfQUREUiwgbm93PW5vdykKLSAgICAgICAgaXRl
bXMgPSBjbGllbnQuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5vdykKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFsxMjgwXSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChjbGllbnQuZ2V0X3RpbWVyKCksIDEuMCkKLQotICAgICAgICAjIHNlcnZlciByZWNl
aXZlcyBJTklUSUFMLCBzZW5kcyBJTklUSUFMICsgSEFORFNIQUtFIGJ1dCBzZWNvbmQgZGF0YWdy
YW0gaXMgbG9zdAotICAgICAgICBub3cgPSAwLjEKLSAgICAgICAgc2VydmVyLnJlY2VpdmVfZGF0
YWdyYW0oaXRlbXNbMF1bMF0sIENMSUVOVF9BRERSLCBub3c9bm93KQotICAgICAgICBpdGVtcyA9
IHNlcnZlci5kYXRhZ3JhbXNfdG9fc2VuZChub3c9bm93KQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGRhdGFncmFtX3NpemVzKGl0ZW1zKSwgWzEyODAsIDEwMzBdKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHNlcnZlci5nZXRfdGltZXIoKSwgMS4xKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGxlbihzZXJ2ZXIuX2xvc3Muc3BhY2VzWzBdLnNlbnRfcGFja2V0cyksIDEpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlcnZlci5fbG9zcy5zcGFjZXNbMV0uc2VudF9wYWNrZXRz
KSwgMikKLQotICAgICAgICAjIGNsaWVudCBvbmx5IHJlY2VpdmVzIGZpcnN0IGRhdGFncmFtIGFu
ZCBzZW5kcyBBQ0tTCi0gICAgICAgIG5vdyA9IDAuMgotICAgICAgICBjbGllbnQucmVjZWl2ZV9k
YXRhZ3JhbShpdGVtc1swXVswXSwgU0VSVkVSX0FERFIsIG5vdz1ub3cpCi0gICAgICAgIGl0ZW1z
ID0gY2xpZW50LmRhdGFncmFtc190b19zZW5kKG5vdz1ub3cpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoZGF0YWdyYW1fc2l6ZXMoaXRlbXMpLCBbOTddKQotICAgICAgICBzZWxmLmFzc2VydEFs
bW9zdEVxdWFsKGNsaWVudC5nZXRfdGltZXIoKSwgMC42MjUpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwodHlwZShjbGllbnQubmV4dF9ldmVudCgpKSwgZXZlbnRzLlByb3RvY29sTmVnb3RpYXRl
ZCkKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY2xpZW50Lm5leHRfZXZlbnQoKSkKLQotICAg
ICAgICAjIGNsaWVudCBQVE8gLSBIQU5EU0hBS0UgUElORwotICAgICAgICBub3cgPSBjbGllbnQu
Z2V0X3RpbWVyKCkgICMgfjAuNjI1Ci0gICAgICAgIGNsaWVudC5oYW5kbGVfdGltZXIobm93PW5v
dykKLSAgICAgICAgaXRlbXMgPSBjbGllbnQuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5vdykKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFs0NF0pCi0gICAg
ICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoY2xpZW50LmdldF90aW1lcigpLCAxLjg3NSkKLQot
ICAgICAgICAjIHNlcnZlciByZWNlaXZlcyBQSU5HLCBkaXNjYXJkcyBJTklUSUFMIGFuZCBzZW5k
cyBBQ0sKLSAgICAgICAgbm93ID0gMC43MjUKLSAgICAgICAgc2VydmVyLnJlY2VpdmVfZGF0YWdy
YW0oaXRlbXNbMF1bMF0sIENMSUVOVF9BRERSLCBub3c9bm93KQotICAgICAgICBpdGVtcyA9IHNl
cnZlci5kYXRhZ3JhbXNfdG9fc2VuZChub3c9bm93KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGRhdGFncmFtX3NpemVzKGl0ZW1zKSwgWzQ4XSkKLSAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RF
cXVhbChzZXJ2ZXIuZ2V0X3RpbWVyKCksIDEuMSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChs
ZW4oc2VydmVyLl9sb3NzLnNwYWNlc1swXS5zZW50X3BhY2tldHMpLCAwKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxlbihzZXJ2ZXIuX2xvc3Muc3BhY2VzWzFdLnNlbnRfcGFja2V0cyksIDMp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShzZXJ2ZXIubmV4dF9ldmVudCgpKSwgZXZl
bnRzLlByb3RvY29sTmVnb3RpYXRlZCkKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VydmVy
Lm5leHRfZXZlbnQoKSkKLQotICAgICAgICAjIEFDS3MgYXJlIGxvc3QsIHNlcnZlciByZXRyYW5z
bWl0cyBIQU5EU0hBS0UKLSAgICAgICAgbm93ID0gc2VydmVyLmdldF90aW1lcigpCi0gICAgICAg
IHNlcnZlci5oYW5kbGVfdGltZXIobm93PW5vdykKLSAgICAgICAgaXRlbXMgPSBzZXJ2ZXIuZGF0
YWdyYW1zX3RvX3NlbmQobm93PW5vdykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhZ3Jh
bV9zaXplcyhpdGVtcyksIFsxMjgwLCA4NTRdKQotICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVx
dWFsKHNlcnZlci5nZXRfdGltZXIoKSwgMy4xKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxl
bihzZXJ2ZXIuX2xvc3Muc3BhY2VzWzBdLnNlbnRfcGFja2V0cyksIDApCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwobGVuKHNlcnZlci5fbG9zcy5zcGFjZXNbMV0uc2VudF9wYWNrZXRzKSwgMykK
LSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VydmVyLm5leHRfZXZlbnQoKSkKLQotICAgICAg
ICAjIGhhbmRzaGFrZSBjb250aW51ZXMgbm9ybWFsbHkKLSAgICAgICAgbm93ID0gMS4yCi0gICAg
ICAgIGNsaWVudC5yZWNlaXZlX2RhdGFncmFtKGl0ZW1zWzBdWzBdLCBTRVJWRVJfQUREUiwgbm93
PW5vdykKLSAgICAgICAgY2xpZW50LnJlY2VpdmVfZGF0YWdyYW0oaXRlbXNbMV1bMF0sIFNFUlZF
Ul9BRERSLCBub3c9bm93KQotICAgICAgICBpdGVtcyA9IGNsaWVudC5kYXRhZ3JhbXNfdG9fc2Vu
ZChub3c9bm93KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGFncmFtX3NpemVzKGl0ZW1z
KSwgWzMyOV0pCi0gICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoY2xpZW50LmdldF90aW1l
cigpLCAyLjQ1KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoY2xpZW50Lm5leHRfZXZl
bnQoKSksIGV2ZW50cy5IYW5kc2hha2VDb21wbGV0ZWQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwodHlwZShjbGllbnQubmV4dF9ldmVudCgpKSwgZXZlbnRzLkNvbm5lY3Rpb25JZElzc3VlZCkK
LQotICAgICAgICBub3cgPSAxLjMKLSAgICAgICAgc2VydmVyLnJlY2VpdmVfZGF0YWdyYW0oaXRl
bXNbMF1bMF0sIENMSUVOVF9BRERSLCBub3c9bm93KQotICAgICAgICBpdGVtcyA9IHNlcnZlci5k
YXRhZ3JhbXNfdG9fc2VuZChub3c9bm93KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGFn
cmFtX3NpemVzKGl0ZW1zKSwgWzIyOV0pCi0gICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwo
c2VydmVyLmdldF90aW1lcigpLCAxLjkyNSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBl
KHNlcnZlci5uZXh0X2V2ZW50KCkpLCBldmVudHMuSGFuZHNoYWtlQ29tcGxldGVkKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoc2VydmVyLm5leHRfZXZlbnQoKSksIGV2ZW50cy5Db25u
ZWN0aW9uSWRJc3N1ZWQpCi0KLSAgICAgICAgbm93ID0gMS40Ci0gICAgICAgIGNsaWVudC5yZWNl
aXZlX2RhdGFncmFtKGl0ZW1zWzBdWzBdLCBTRVJWRVJfQUREUiwgbm93PW5vdykKLSAgICAgICAg
aXRlbXMgPSBjbGllbnQuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5vdykKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFszMl0pCi0gICAgICAgIHNlbGYuYXNz
ZXJ0QWxtb3N0RXF1YWwoY2xpZW50LmdldF90aW1lcigpLCA2MS40KSAgIyBpZGxlIHRpbWVvdXQK
LQotICAgIGRlZiB0ZXN0X2Nvbm5lY3Rfd2l0aF9sb3NzXzMoc2VsZik6Ci0gICAgICAgIGRlZiBk
YXRhZ3JhbV9zaXplcyhpdGVtcyk6Ci0gICAgICAgICAgICByZXR1cm4gW2xlbih4WzBdKSBmb3Ig
eCBpbiBpdGVtc10KLQotICAgICAgICBjbGllbnRfY29uZmlndXJhdGlvbiA9IFF1aWNDb25maWd1
cmF0aW9uKGlzX2NsaWVudD1UcnVlKQotICAgICAgICBjbGllbnRfY29uZmlndXJhdGlvbi5sb2Fk
X3ZlcmlmeV9sb2NhdGlvbnMoY2FmaWxlPVNFUlZFUl9DQUNFUlRGSUxFKQotCi0gICAgICAgIGNs
aWVudCA9IFF1aWNDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb249Y2xpZW50X2NvbmZpZ3VyYXRpb24p
Ci0gICAgICAgIGNsaWVudC5fYWNrX2RlbGF5ID0gMAotCi0gICAgICAgIHNlcnZlcl9jb25maWd1
cmF0aW9uID0gUXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PUZhbHNlKQotICAgICAgICBzZXJ2
ZXJfY29uZmlndXJhdGlvbi5sb2FkX2NlcnRfY2hhaW4oU0VSVkVSX0NFUlRGSUxFLCBTRVJWRVJf
S0VZRklMRSkKLQotICAgICAgICBzZXJ2ZXIgPSBRdWljQ29ubmVjdGlvbihjb25maWd1cmF0aW9u
PXNlcnZlcl9jb25maWd1cmF0aW9uKQotICAgICAgICBzZXJ2ZXIuX2Fja19kZWxheSA9IDAKLQot
ICAgICAgICAjIGNsaWVudCBzZW5kcyBJTklUSUFMCi0gICAgICAgIG5vdyA9IDAuMAotICAgICAg
ICBjbGllbnQuY29ubmVjdChTRVJWRVJfQUREUiwgbm93PW5vdykKLSAgICAgICAgaXRlbXMgPSBj
bGllbnQuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5vdykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFsxMjgwXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChjbGllbnQuZ2V0X3RpbWVyKCksIDEuMCkKLQotICAgICAgICAjIHNlcnZlciByZWNlaXZlcyBJ
TklUSUFMLCBzZW5kcyBJTklUSUFMICsgSEFORFNIQUtFCi0gICAgICAgIG5vdyA9IDAuMQotICAg
ICAgICBzZXJ2ZXIucmVjZWl2ZV9kYXRhZ3JhbShpdGVtc1swXVswXSwgQ0xJRU5UX0FERFIsIG5v
dz1ub3cpCi0gICAgICAgIGl0ZW1zID0gc2VydmVyLmRhdGFncmFtc190b19zZW5kKG5vdz1ub3cp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YWdyYW1fc2l6ZXMoaXRlbXMpLCBbMTI4MCwg
MTAzMF0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLmdldF90aW1lcigpLCAxLjEp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlcnZlci5fbG9zcy5zcGFjZXNbMF0uc2Vu
dF9wYWNrZXRzKSwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VydmVyLl9sb3Nz
LnNwYWNlc1sxXS5zZW50X3BhY2tldHMpLCAyKQotCi0gICAgICAgICMgY2xpZW50IHJlY2VpdmVz
IElOSVRJQUwgKyBIQU5EU0hBS0UKLSAgICAgICAgbm93ID0gMC4yCi0gICAgICAgIGNsaWVudC5y
ZWNlaXZlX2RhdGFncmFtKGl0ZW1zWzBdWzBdLCBTRVJWRVJfQUREUiwgbm93PW5vdykKLSAgICAg
ICAgY2xpZW50LnJlY2VpdmVfZGF0YWdyYW0oaXRlbXNbMV1bMF0sIFNFUlZFUl9BRERSLCBub3c9
bm93KQotICAgICAgICBpdGVtcyA9IGNsaWVudC5kYXRhZ3JhbXNfdG9fc2VuZChub3c9bm93KQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGFncmFtX3NpemVzKGl0ZW1zKSwgWzM3Nl0pCi0g
ICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoY2xpZW50LmdldF90aW1lcigpLCAwLjgyNSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGNsaWVudC5uZXh0X2V2ZW50KCkpLCBldmVu
dHMuUHJvdG9jb2xOZWdvdGlhdGVkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoY2xp
ZW50Lm5leHRfZXZlbnQoKSksIGV2ZW50cy5IYW5kc2hha2VDb21wbGV0ZWQpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwodHlwZShjbGllbnQubmV4dF9ldmVudCgpKSwgZXZlbnRzLkNvbm5lY3Rp
b25JZElzc3VlZCkKLQotICAgICAgICAjIHNlcnZlciBjb21wbGV0ZXMgaGFuZHNoYWtlCi0gICAg
ICAgIG5vdyA9IDAuMwotICAgICAgICBzZXJ2ZXIucmVjZWl2ZV9kYXRhZ3JhbShpdGVtc1swXVsw
XSwgQ0xJRU5UX0FERFIsIG5vdz1ub3cpCi0gICAgICAgIGl0ZW1zID0gc2VydmVyLmRhdGFncmFt
c190b19zZW5kKG5vdz1ub3cpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YWdyYW1fc2l6
ZXMoaXRlbXMpLCBbMjI5XSkKLSAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChzZXJ2ZXIu
Z2V0X3RpbWVyKCksIDAuODI1KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZXJ2ZXIu
X2xvc3Muc3BhY2VzWzBdLnNlbnRfcGFja2V0cyksIDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwobGVuKHNlcnZlci5fbG9zcy5zcGFjZXNbMV0uc2VudF9wYWNrZXRzKSwgMCkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCh0eXBlKHNlcnZlci5uZXh0X2V2ZW50KCkpLCBldmVudHMuUHJvdG9j
b2xOZWdvdGlhdGVkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoc2VydmVyLm5leHRf
ZXZlbnQoKSksIGV2ZW50cy5IYW5kc2hha2VDb21wbGV0ZWQpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwodHlwZShzZXJ2ZXIubmV4dF9ldmVudCgpKSwgZXZlbnRzLkNvbm5lY3Rpb25JZElzc3Vl
ZCkKLQotICAgICAgICAjIHNlcnZlciBQVE8gLSAxLVJUVCBQSU5HCi0gICAgICAgIG5vdyA9IDAu
ODI1Ci0gICAgICAgIHNlcnZlci5oYW5kbGVfdGltZXIobm93PW5vdykKLSAgICAgICAgaXRlbXMg
PSBzZXJ2ZXIuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5vdykKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFsyOV0pCi0gICAgICAgIHNlbGYuYXNzZXJ0QWxt
b3N0RXF1YWwoc2VydmVyLmdldF90aW1lcigpLCAxLjg3NSkKLQotICAgICAgICAjIGNsaWVudCBy
ZWNlaXZlcyBQSU5HLCBzZW5kcyBBQ0sKLSAgICAgICAgbm93ID0gMC45Ci0gICAgICAgIGNsaWVu
dC5yZWNlaXZlX2RhdGFncmFtKGl0ZW1zWzBdWzBdLCBTRVJWRVJfQUREUiwgbm93PW5vdykKLSAg
ICAgICAgaXRlbXMgPSBjbGllbnQuZGF0YWdyYW1zX3RvX3NlbmQobm93PW5vdykKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChkYXRhZ3JhbV9zaXplcyhpdGVtcyksIFszMl0pCi0gICAgICAgIHNl
bGYuYXNzZXJ0QWxtb3N0RXF1YWwoY2xpZW50LmdldF90aW1lcigpLCAwLjgyNSkKLQotICAgICAg
ICAjIHNlcnZlciByZWNlaXZlcyBBQ0ssIHJldHJhbnNtaXRzIEhBTkRTSEFLRV9ET05FCi0gICAg
ICAgIG5vdyA9IDEuMAotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlcnZlci5faGFuZHNoYWtl
X2RvbmVfcGVuZGluZykKLSAgICAgICAgc2VydmVyLnJlY2VpdmVfZGF0YWdyYW0oaXRlbXNbMF1b
MF0sIENMSUVOVF9BRERSLCBub3c9bm93KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VydmVy
Ll9oYW5kc2hha2VfZG9uZV9wZW5kaW5nKQotICAgICAgICBpdGVtcyA9IHNlcnZlci5kYXRhZ3Jh
bXNfdG9fc2VuZChub3c9bm93KQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlcnZlci5faGFu
ZHNoYWtlX2RvbmVfcGVuZGluZykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhZ3JhbV9z
aXplcyhpdGVtcyksIFsyMjRdKQotCi0gICAgZGVmIHRlc3RfY29ubmVjdF93aXRoX3F1YW50dW1f
cmVhZGluZXNzKHNlbGYpOgotICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKGNsaWVudF9v
cHRpb25zPXsicXVhbnR1bV9yZWFkaW5lc3NfdGVzdCI6IFRydWV9LCkgYXMgKAotICAgICAgICAg
ICAgY2xpZW50LAotICAgICAgICAgICAgc2VydmVyLAotICAgICAgICApOgotICAgICAgICAgICAg
c3RyZWFtX2lkID0gY2xpZW50LmdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQoKQotICAgICAg
ICAgICAgY2xpZW50LnNlbmRfc3RyZWFtX2RhdGEoc3RyZWFtX2lkLCBiImhlbGxvIikKLQotICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3VuZHRyaXAoY2xpZW50LCBzZXJ2ZXIpLCAoMSwg
MSkpCi0KLSAgICAgICAgICAgIHJlY2VpdmVkID0gTm9uZQotICAgICAgICAgICAgd2hpbGUgVHJ1
ZToKLSAgICAgICAgICAgICAgICBldmVudCA9IHNlcnZlci5uZXh0X2V2ZW50KCkKLSAgICAgICAg
ICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBldmVudHMuU3RyZWFtRGF0YVJlY2VpdmVkKToK
LSAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZWQgPSBldmVudC5kYXRhCi0gICAgICAgICAgICAg
ICAgZWxpZiBldmVudCBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICBicmVhawotCi0gICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY2VpdmVkLCBiImhlbGxvIikKLQotICAgIGRlZiB0
ZXN0X2Nvbm5lY3Rfd2l0aF8wcnR0KHNlbGYpOgotICAgICAgICBjbGllbnRfdGlja2V0ID0gTm9u
ZQotICAgICAgICB0aWNrZXRfc3RvcmUgPSBTZXNzaW9uVGlja2V0U3RvcmUoKQotCi0gICAgICAg
IGRlZiBzYXZlX3Nlc3Npb25fdGlja2V0KHRpY2tldCk6Ci0gICAgICAgICAgICBub25sb2NhbCBj
bGllbnRfdGlja2V0Ci0gICAgICAgICAgICBjbGllbnRfdGlja2V0ID0gdGlja2V0Ci0KLSAgICAg
ICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigKLSAgICAgICAgICAgIGNsaWVudF9rd2FyZ3M9eyJz
ZXNzaW9uX3RpY2tldF9oYW5kbGVyIjogc2F2ZV9zZXNzaW9uX3RpY2tldH0sCi0gICAgICAgICAg
ICBzZXJ2ZXJfa3dhcmdzPXsic2Vzc2lvbl90aWNrZXRfaGFuZGxlciI6IHRpY2tldF9zdG9yZS5h
ZGR9LAotICAgICAgICApIGFzIChjbGllbnQsIHNlcnZlcik6Ci0gICAgICAgICAgICBwYXNzCi0K
LSAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigKLSAgICAgICAgICAgIGNsaWVudF9vcHRp
b25zPXsic2Vzc2lvbl90aWNrZXQiOiBjbGllbnRfdGlja2V0fSwKLSAgICAgICAgICAgIHNlcnZl
cl9rd2FyZ3M9eyJzZXNzaW9uX3RpY2tldF9mZXRjaGVyIjogdGlja2V0X3N0b3JlLnBvcH0sCi0g
ICAgICAgICAgICBoYW5kc2hha2U9RmFsc2UsCi0gICAgICAgICkgYXMgKGNsaWVudCwgc2VydmVy
KToKLSAgICAgICAgICAgIGNsaWVudC5jb25uZWN0KFNFUlZFUl9BRERSLCBub3c9dGltZS50aW1l
KCkpCi0gICAgICAgICAgICBzdHJlYW1faWQgPSBjbGllbnQuZ2V0X25leHRfYXZhaWxhYmxlX3N0
cmVhbV9pZCgpCi0gICAgICAgICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YShzdHJlYW1faWQs
IGIiaGVsbG8iKQotCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJvdW5kdHJpcChjbGll
bnQsIHNlcnZlciksICgyLCAxKSkKLQotICAgICAgICAgICAgZXZlbnQgPSBzZXJ2ZXIubmV4dF9l
dmVudCgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZXZlbnQpLCBldmVudHMu
UHJvdG9jb2xOZWdvdGlhdGVkKQotCi0gICAgICAgICAgICBldmVudCA9IHNlcnZlci5uZXh0X2V2
ZW50KCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShldmVudCksIGV2ZW50cy5T
dHJlYW1EYXRhUmVjZWl2ZWQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LmRh
dGEsIGIiaGVsbG8iKQotCi0gICAgZGVmIHRlc3RfY29ubmVjdF93aXRoXzBydHRfYmFkX21heF9l
YXJseV9kYXRhKHNlbGYpOgotICAgICAgICBjbGllbnRfdGlja2V0ID0gTm9uZQotICAgICAgICB0
aWNrZXRfc3RvcmUgPSBTZXNzaW9uVGlja2V0U3RvcmUoKQotCi0gICAgICAgIGRlZiBwYXRjaChz
ZXJ2ZXIpOgotICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBQYXRjaCBzZXJ2ZXIncyBUTFMg
aW5pdGlhbGl6YXRpb24gdG8gc2V0IGFuIGludmFsaWQKLSAgICAgICAgICAgIG1heF9lYXJseV9k
YXRhIHZhbHVlLgotICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICByZWFsX2luaXRpYWxpemUg
PSBzZXJ2ZXIuX2luaXRpYWxpemUKLQotICAgICAgICAgICAgZGVmIHBhdGNoZWRfaW5pdGlhbGl6
ZShwZWVyX2NpZDogYnl0ZXMpOgotICAgICAgICAgICAgICAgIHJlYWxfaW5pdGlhbGl6ZShwZWVy
X2NpZCkKLSAgICAgICAgICAgICAgICBzZXJ2ZXIudGxzLl9tYXhfZWFybHlfZGF0YSA9IDEyMzQ1
Ci0KLSAgICAgICAgICAgIHNlcnZlci5faW5pdGlhbGl6ZSA9IHBhdGNoZWRfaW5pdGlhbGl6ZQot
Ci0gICAgICAgIGRlZiBzYXZlX3Nlc3Npb25fdGlja2V0KHRpY2tldCk6Ci0gICAgICAgICAgICBu
b25sb2NhbCBjbGllbnRfdGlja2V0Ci0gICAgICAgICAgICBjbGllbnRfdGlja2V0ID0gdGlja2V0
Ci0KLSAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigKLSAgICAgICAgICAgIGNsaWVudF9r
d2FyZ3M9eyJzZXNzaW9uX3RpY2tldF9oYW5kbGVyIjogc2F2ZV9zZXNzaW9uX3RpY2tldH0sCi0g
ICAgICAgICAgICBzZXJ2ZXJfa3dhcmdzPXsic2Vzc2lvbl90aWNrZXRfaGFuZGxlciI6IHRpY2tl
dF9zdG9yZS5hZGR9LAotICAgICAgICAgICAgc2VydmVyX3BhdGNoPXBhdGNoLAotICAgICAgICAp
IGFzIChjbGllbnQsIHNlcnZlcik6Ci0gICAgICAgICAgICAjIGNoZWNrIGhhbmRzaGFrZSBmYWls
ZWQKLSAgICAgICAgICAgIGV2ZW50ID0gY2xpZW50Lm5leHRfZXZlbnQoKQotICAgICAgICAgICAg
c2VsZi5hc3NlcnRJc05vbmUoZXZlbnQpCi0KLSAgICBkZWYgdGVzdF9jaGFuZ2VfY29ubmVjdGlv
bl9pZChzZWxmKToKLSAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQs
IHNlcnZlcik6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgICAg
IHNlcXVlbmNlX251bWJlcnMoY2xpZW50Ll9wZWVyX2NpZF9hdmFpbGFibGUpLCBbMSwgMiwgMywg
NCwgNSwgNiwgN10KLSAgICAgICAgICAgICkKLQotICAgICAgICAgICAgIyB0aGUgY2xpZW50IGNo
YW5nZXMgY29ubmVjdGlvbiBJRAotICAgICAgICAgICAgY2xpZW50LmNoYW5nZV9jb25uZWN0aW9u
X2lkKCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNmZXIoY2xpZW50LCBzZXJ2
ZXIpLCAxKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgICAgICBz
ZXF1ZW5jZV9udW1iZXJzKGNsaWVudC5fcGVlcl9jaWRfYXZhaWxhYmxlKSwgWzIsIDMsIDQsIDUs
IDYsIDddCi0gICAgICAgICAgICApCi0KLSAgICAgICAgICAgICMgdGhlIHNlcnZlciBwcm92aWRl
cyBhIG5ldyBjb25uZWN0aW9uIElECi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5z
ZmVyKHNlcnZlciwgY2xpZW50KSwgMSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0g
ICAgICAgICAgICAgICAgc2VxdWVuY2VfbnVtYmVycyhjbGllbnQuX3BlZXJfY2lkX2F2YWlsYWJs
ZSksIFsyLCAzLCA0LCA1LCA2LCA3LCA4XQotICAgICAgICAgICAgKQotCi0gICAgZGVmIHRlc3Rf
Y2hhbmdlX2Nvbm5lY3Rpb25faWRfcmV0cmFuc21pdF9uZXdfY29ubmVjdGlvbl9pZChzZWxmKToK
LSAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6Ci0g
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgICAgIHNlcXVlbmNlX251
bWJlcnMoY2xpZW50Ll9wZWVyX2NpZF9hdmFpbGFibGUpLCBbMSwgMiwgMywgNCwgNSwgNiwgN10K
LSAgICAgICAgICAgICkKLQotICAgICAgICAgICAgIyB0aGUgY2xpZW50IGNoYW5nZXMgY29ubmVj
dGlvbiBJRAotICAgICAgICAgICAgY2xpZW50LmNoYW5nZV9jb25uZWN0aW9uX2lkKCkKLSAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNmZXIoY2xpZW50LCBzZXJ2ZXIpLCAxKQotICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgICAgICBzZXF1ZW5jZV9udW1i
ZXJzKGNsaWVudC5fcGVlcl9jaWRfYXZhaWxhYmxlKSwgWzIsIDMsIDQsIDUsIDYsIDddCi0gICAg
ICAgICAgICApCi0KLSAgICAgICAgICAgICMgdGhlIHNlcnZlciBwcm92aWRlcyBhIG5ldyBjb25u
ZWN0aW9uIElELCBORVdfQ09OTkVDVElPTl9JRCBpcyBsb3N0Ci0gICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGRyb3Aoc2VydmVyKSwgMSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Ci0gICAgICAgICAgICAgICAgc2VxdWVuY2VfbnVtYmVycyhjbGllbnQuX3BlZXJfY2lkX2F2YWls
YWJsZSksIFsyLCAzLCA0LCA1LCA2LCA3XQotICAgICAgICAgICAgKQotCi0gICAgICAgICAgICAj
IE5FV19DT05ORUNUSU9OX0lEIGlzIHJldHJhbnNtaXR0ZWQKLSAgICAgICAgICAgIHNlcnZlci5f
b25fbmV3X2Nvbm5lY3Rpb25faWRfZGVsaXZlcnkoCi0gICAgICAgICAgICAgICAgUXVpY0RlbGl2
ZXJ5U3RhdGUuTE9TVCwgc2VydmVyLl9ob3N0X2NpZHNbLTFdCi0gICAgICAgICAgICApCi0gICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zZmVyKHNlcnZlciwgY2xpZW50KSwgMSkKLSAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICAgICAgc2VxdWVuY2VfbnVt
YmVycyhjbGllbnQuX3BlZXJfY2lkX2F2YWlsYWJsZSksIFsyLCAzLCA0LCA1LCA2LCA3LCA4XQot
ICAgICAgICAgICAgKQotCi0gICAgZGVmIHRlc3RfY2hhbmdlX2Nvbm5lY3Rpb25faWRfcmV0cmFu
c21pdF9yZXRpcmVfY29ubmVjdGlvbl9pZChzZWxmKToKLSAgICAgICAgd2l0aCBjbGllbnRfYW5k
X3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKAotICAgICAgICAgICAgICAgIHNlcXVlbmNlX251bWJlcnMoY2xpZW50Ll9wZWVyX2NpZF9h
dmFpbGFibGUpLCBbMSwgMiwgMywgNCwgNSwgNiwgN10KLSAgICAgICAgICAgICkKLQotICAgICAg
ICAgICAgIyB0aGUgY2xpZW50IGNoYW5nZXMgY29ubmVjdGlvbiBJRCwgUkVUSVJFX0NPTk5FQ1RJ
T05fSUQgaXMgbG9zdAotICAgICAgICAgICAgY2xpZW50LmNoYW5nZV9jb25uZWN0aW9uX2lkKCkK
LSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHJvcChjbGllbnQpLCAxKQotICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgICAgICBzZXF1ZW5jZV9udW1iZXJzKGNs
aWVudC5fcGVlcl9jaWRfYXZhaWxhYmxlKSwgWzIsIDMsIDQsIDUsIDYsIDddCi0gICAgICAgICAg
ICApCi0KLSAgICAgICAgICAgICMgUkVUSVJFX0NPTk5FQ1RJT05fSUQgaXMgcmV0cmFuc21pdHRl
ZAotICAgICAgICAgICAgY2xpZW50Ll9vbl9yZXRpcmVfY29ubmVjdGlvbl9pZF9kZWxpdmVyeShR
dWljRGVsaXZlcnlTdGF0ZS5MT1NULCAwKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0
cmFuc2ZlcihjbGllbnQsIHNlcnZlciksIDEpCi0KLSAgICAgICAgICAgICMgdGhlIHNlcnZlciBw
cm92aWRlcyBhIG5ldyBjb25uZWN0aW9uIElECi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHRyYW5zZmVyKHNlcnZlciwgY2xpZW50KSwgMSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoCi0gICAgICAgICAgICAgICAgc2VxdWVuY2VfbnVtYmVycyhjbGllbnQuX3BlZXJfY2lkX2F2
YWlsYWJsZSksIFsyLCAzLCA0LCA1LCA2LCA3LCA4XQotICAgICAgICAgICAgKQotCi0gICAgZGVm
IHRlc3RfZ2V0X25leHRfYXZhaWxhYmxlX3N0cmVhbV9pZChzZWxmKToKLSAgICAgICAgd2l0aCBj
bGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6Ci0gICAgICAgICAgICAjIGNs
aWVudAotICAgICAgICAgICAgc3RyZWFtX2lkID0gY2xpZW50LmdldF9uZXh0X2F2YWlsYWJsZV9z
dHJlYW1faWQoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW1faWQsIDApCi0g
ICAgICAgICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YShzdHJlYW1faWQsIGIiaGVsbG8iKQot
Ci0gICAgICAgICAgICBzdHJlYW1faWQgPSBjbGllbnQuZ2V0X25leHRfYXZhaWxhYmxlX3N0cmVh
bV9pZCgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbV9pZCwgNCkKLSAgICAg
ICAgICAgIGNsaWVudC5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZCwgYiJoZWxsbyIpCi0KLSAg
ICAgICAgICAgIHN0cmVhbV9pZCA9IGNsaWVudC5nZXRfbmV4dF9hdmFpbGFibGVfc3RyZWFtX2lk
KGlzX3VuaWRpcmVjdGlvbmFsPVRydWUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0
cmVhbV9pZCwgMikKLSAgICAgICAgICAgIGNsaWVudC5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9p
ZCwgYiJoZWxsbyIpCi0KLSAgICAgICAgICAgIHN0cmVhbV9pZCA9IGNsaWVudC5nZXRfbmV4dF9h
dmFpbGFibGVfc3RyZWFtX2lkKGlzX3VuaWRpcmVjdGlvbmFsPVRydWUpCi0gICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHN0cmVhbV9pZCwgNikKLSAgICAgICAgICAgIGNsaWVudC5zZW5kX3N0
cmVhbV9kYXRhKHN0cmVhbV9pZCwgYiJoZWxsbyIpCi0KLSAgICAgICAgICAgICMgc2VydmVyCi0g
ICAgICAgICAgICBzdHJlYW1faWQgPSBzZXJ2ZXIuZ2V0X25leHRfYXZhaWxhYmxlX3N0cmVhbV9p
ZCgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbV9pZCwgMSkKLSAgICAgICAg
ICAgIHNlcnZlci5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZCwgYiJoZWxsbyIpCi0KLSAgICAg
ICAgICAgIHN0cmVhbV9pZCA9IHNlcnZlci5nZXRfbmV4dF9hdmFpbGFibGVfc3RyZWFtX2lkKCkK
LSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtX2lkLCA1KQotICAgICAgICAgICAg
c2VydmVyLnNlbmRfc3RyZWFtX2RhdGEoc3RyZWFtX2lkLCBiImhlbGxvIikKLQotICAgICAgICAg
ICAgc3RyZWFtX2lkID0gc2VydmVyLmdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQoaXNfdW5p
ZGlyZWN0aW9uYWw9VHJ1ZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtX2lk
LCAzKQotICAgICAgICAgICAgc2VydmVyLnNlbmRfc3RyZWFtX2RhdGEoc3RyZWFtX2lkLCBiImhl
bGxvIikKLQotICAgICAgICAgICAgc3RyZWFtX2lkID0gc2VydmVyLmdldF9uZXh0X2F2YWlsYWJs
ZV9zdHJlYW1faWQoaXNfdW5pZGlyZWN0aW9uYWw9VHJ1ZSkKLSAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc3RyZWFtX2lkLCA3KQotICAgICAgICAgICAgc2VydmVyLnNlbmRfc3RyZWFtX2Rh
dGEoc3RyZWFtX2lkLCBiImhlbGxvIikKLQotICAgIGRlZiB0ZXN0X2RhdGFncmFtX2ZyYW1lKHNl
bGYpOgotICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKAotICAgICAgICAgICAgY2xpZW50
X29wdGlvbnM9eyJtYXhfZGF0YWdyYW1fZnJhbWVfc2l6ZSI6IDY1NTM2fSwKLSAgICAgICAgICAg
IHNlcnZlcl9vcHRpb25zPXsibWF4X2RhdGFncmFtX2ZyYW1lX3NpemUiOiA2NTUzNn0sCi0gICAg
ICAgICkgYXMgKGNsaWVudCwgc2VydmVyKToKLSAgICAgICAgICAgICMgY2hlY2sgaGFuZHNoYWtl
IGNvbXBsZXRlZAotICAgICAgICAgICAgc2VsZi5jaGVja19oYW5kc2hha2UoY2xpZW50PWNsaWVu
dCwgc2VydmVyPXNlcnZlciwgYWxwbl9wcm90b2NvbD1Ob25lKQotCi0gICAgICAgICAgICAjIHNl
bmQgZGF0YWdyYW0KLSAgICAgICAgICAgIGNsaWVudC5zZW5kX2RhdGFncmFtX2ZyYW1lKGIiaGVs
bG8iKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2ZlcihjbGllbnQsIHNlcnZl
ciksIDEpCi0KLSAgICAgICAgICAgIGV2ZW50ID0gc2VydmVyLm5leHRfZXZlbnQoKQotICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGV2ZW50KSwgZXZlbnRzLkRhdGFncmFtRnJhbWVS
ZWNlaXZlZCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuZGF0YSwgYiJoZWxs
byIpCi0KLSAgICBkZWYgdGVzdF9kYXRhZ3JhbV9mcmFtZV8yKHNlbGYpOgotICAgICAgICAjIHBh
eWxvYWQgd2hpY2ggZXhhY3RseSBmaWxscyBhbiBlbnRpcmUgcGFja2V0Ci0gICAgICAgIHBheWxv
YWQgPSBiIloiICogMTI1MAotCi0gICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoCi0gICAg
ICAgICAgICBjbGllbnRfb3B0aW9ucz17Im1heF9kYXRhZ3JhbV9mcmFtZV9zaXplIjogNjU1MzZ9
LAotICAgICAgICAgICAgc2VydmVyX29wdGlvbnM9eyJtYXhfZGF0YWdyYW1fZnJhbWVfc2l6ZSI6
IDY1NTM2fSwKLSAgICAgICAgKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgotICAgICAgICAgICAgIyBj
aGVjayBoYW5kc2hha2UgY29tcGxldGVkCi0gICAgICAgICAgICBzZWxmLmNoZWNrX2hhbmRzaGFr
ZShjbGllbnQ9Y2xpZW50LCBzZXJ2ZXI9c2VydmVyLCBhbHBuX3Byb3RvY29sPU5vbmUpCi0KLSAg
ICAgICAgICAgICMgcXVldWUgMjAgZGF0YWdyYW1zCi0gICAgICAgICAgICBmb3IgaSBpbiByYW5n
ZSgyMCk6Ci0gICAgICAgICAgICAgICAgY2xpZW50LnNlbmRfZGF0YWdyYW1fZnJhbWUocGF5bG9h
ZCkKLQotICAgICAgICAgICAgIyBjbGllbnQgY2FuIG9ubHkgMTEgZGF0YWdyYW1zIGFyZSBzZW50
IGR1ZSB0byBjb25nZXN0aW9uIGNvbnRyb2wKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
dHJhbnNmZXIoY2xpZW50LCBzZXJ2ZXIpLCAxMSkKLSAgICAgICAgICAgIGZvciBpIGluIHJhbmdl
KDExKToKLSAgICAgICAgICAgICAgICBldmVudCA9IHNlcnZlci5uZXh0X2V2ZW50KCkKLSAgICAg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZXZlbnQpLCBldmVudHMuRGF0YWdyYW1G
cmFtZVJlY2VpdmVkKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQuZGF0
YSwgcGF5bG9hZCkKLQotICAgICAgICAgICAgIyBzZXJ2ZXIgc2VuZHMgQUNLCi0gICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zZmVyKHNlcnZlciwgY2xpZW50KSwgMSkKLQotICAgICAg
ICAgICAgIyBjbGllbnQgc2VuZHMgcmVtYWluaW5nIGRhdGFncmFtcwotICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCh0cmFuc2ZlcihjbGllbnQsIHNlcnZlciksIDkpCi0gICAgICAgICAgICBm
b3IgaSBpbiByYW5nZSg5KToKLSAgICAgICAgICAgICAgICBldmVudCA9IHNlcnZlci5uZXh0X2V2
ZW50KCkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZXZlbnQpLCBldmVu
dHMuRGF0YWdyYW1GcmFtZVJlY2VpdmVkKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoZXZlbnQuZGF0YSwgcGF5bG9hZCkKLQotICAgIGRlZiB0ZXN0X2RlY3J5cHRpb25fZXJyb3Io
c2VsZik6Ci0gICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2
ZXIpOgotICAgICAgICAgICAgIyBtZXNzIHdpdGggZW5jcnlwdGlvbiBrZXkKLSAgICAgICAgICAg
IHNlcnZlci5fY3J5cHRvc1t0bHMuRXBvY2guT05FX1JUVF0uc2VuZC5zZXR1cCgKLSAgICAgICAg
ICAgICAgICBjaXBoZXJfc3VpdGU9dGxzLkNpcGhlclN1aXRlLkFFU18xMjhfR0NNX1NIQTI1NiwK
LSAgICAgICAgICAgICAgICBzZWNyZXQ9Ynl0ZXMoNDgpLAotICAgICAgICAgICAgICAgIHZlcnNp
b249c2VydmVyLl92ZXJzaW9uLAotICAgICAgICAgICAgKQotCi0gICAgICAgICAgICAjIHNlcnZl
ciBzZW5kcyBjbG9zZQotICAgICAgICAgICAgc2VydmVyLmNsb3NlKGVycm9yX2NvZGU9UXVpY0Vy
cm9yQ29kZS5OT19FUlJPUikKLSAgICAgICAgICAgIGZvciBkYXRhLCBhZGRyIGluIHNlcnZlci5k
YXRhZ3JhbXNfdG9fc2VuZChub3c9dGltZS50aW1lKCkpOgotICAgICAgICAgICAgICAgIGNsaWVu
dC5yZWNlaXZlX2RhdGFncmFtKGRhdGEsIFNFUlZFUl9BRERSLCBub3c9dGltZS50aW1lKCkpCi0K
LSAgICBkZWYgdGVzdF90bHNfZXJyb3Ioc2VsZik6Ci0gICAgICAgIGRlZiBwYXRjaChjbGllbnQp
OgotICAgICAgICAgICAgcmVhbF9pbml0aWFsaXplID0gY2xpZW50Ll9pbml0aWFsaXplCi0KLSAg
ICAgICAgICAgIGRlZiBwYXRjaGVkX2luaXRpYWxpemUocGVlcl9jaWQ6IGJ5dGVzKToKLSAgICAg
ICAgICAgICAgICByZWFsX2luaXRpYWxpemUocGVlcl9jaWQpCi0gICAgICAgICAgICAgICAgY2xp
ZW50LnRscy5fc3VwcG9ydGVkX3ZlcnNpb25zID0gW3Rscy5UTFNfVkVSU0lPTl8xXzNfRFJBRlRf
MjhdCi0KLSAgICAgICAgICAgIGNsaWVudC5faW5pdGlhbGl6ZSA9IHBhdGNoZWRfaW5pdGlhbGl6
ZQotCi0gICAgICAgICMgaGFuZHNoYWtlIGZhaWxzCi0gICAgICAgIHdpdGggY2xpZW50X2FuZF9z
ZXJ2ZXIoY2xpZW50X3BhdGNoPXBhdGNoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgotICAgICAgICAg
ICAgdGltZXJfYXQgPSBzZXJ2ZXIuZ2V0X3RpbWVyKCkKLSAgICAgICAgICAgIHNlcnZlci5oYW5k
bGVfdGltZXIodGltZXJfYXQpCi0KLSAgICAgICAgICAgIGV2ZW50ID0gc2VydmVyLm5leHRfZXZl
bnQoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGV2ZW50KSwgZXZlbnRzLkNv
bm5lY3Rpb25UZXJtaW5hdGVkKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5l
cnJvcl9jb2RlLCAzMjYpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LmZyYW1l
X3R5cGUsIFF1aWNGcmFtZVR5cGUuQ1JZUFRPKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChldmVudC5yZWFzb25fcGhyYXNlLCAiTm8gc3VwcG9ydGVkIHByb3RvY29sIHZlcnNpb24iKQot
Ci0gICAgZGVmIHRlc3RfcmVjZWl2ZV9kYXRhZ3JhbV9nYXJiYWdlKHNlbGYpOgotICAgICAgICBj
bGllbnQgPSBjcmVhdGVfc3RhbmRhbG9uZV9jbGllbnQoc2VsZikKLQotICAgICAgICBkYXRhZ3Jh
bSA9IGJpbmFzY2lpLnVuaGV4bGlmeSgiYzAwMDAwMDAwMDgwIikKLSAgICAgICAgY2xpZW50LnJl
Y2VpdmVfZGF0YWdyYW0oZGF0YWdyYW0sIFNFUlZFUl9BRERSLCBub3c9dGltZS50aW1lKCkpCi0K
LSAgICBkZWYgdGVzdF9yZWNlaXZlX2RhdGFncmFtX3Jlc2VydmVkX2JpdHNfbm9uX3plcm8oc2Vs
Zik6Ci0gICAgICAgIGNsaWVudCA9IGNyZWF0ZV9zdGFuZGFsb25lX2NsaWVudChzZWxmKQotCi0g
ICAgICAgIGJ1aWxkZXIgPSBRdWljUGFja2V0QnVpbGRlcigKLSAgICAgICAgICAgIGhvc3RfY2lk
PWNsaWVudC5fcGVlcl9jaWQsCi0gICAgICAgICAgICBpc19jbGllbnQ9RmFsc2UsCi0gICAgICAg
ICAgICBwZWVyX2NpZD1jbGllbnQuaG9zdF9jaWQsCi0gICAgICAgICAgICB2ZXJzaW9uPWNsaWVu
dC5fdmVyc2lvbiwKLSAgICAgICAgKQotICAgICAgICBjcnlwdG8gPSBDcnlwdG9QYWlyKCkKLSAg
ICAgICAgY3J5cHRvLnNldHVwX2luaXRpYWwoY2xpZW50Ll9wZWVyX2NpZCwgaXNfY2xpZW50PUZh
bHNlLCB2ZXJzaW9uPWNsaWVudC5fdmVyc2lvbikKLSAgICAgICAgY3J5cHRvLmVuY3J5cHRfcGFj
a2V0X3JlYWwgPSBjcnlwdG8uZW5jcnlwdF9wYWNrZXQKLQotICAgICAgICBkZWYgZW5jcnlwdF9w
YWNrZXQocGxhaW5faGVhZGVyLCBwbGFpbl9wYXlsb2FkLCBwYWNrZXRfbnVtYmVyKToKLSAgICAg
ICAgICAgICMgbWVzcyB3aXRoIHJlc2VydmVkIGJpdHMKLSAgICAgICAgICAgIHBsYWluX2hlYWRl
ciA9IGJ5dGVzKFtwbGFpbl9oZWFkZXJbMF0gfCAweDBDXSkgKyBwbGFpbl9oZWFkZXJbMTpdCi0g
ICAgICAgICAgICByZXR1cm4gY3J5cHRvLmVuY3J5cHRfcGFja2V0X3JlYWwoCi0gICAgICAgICAg
ICAgICAgcGxhaW5faGVhZGVyLCBwbGFpbl9wYXlsb2FkLCBwYWNrZXRfbnVtYmVyCi0gICAgICAg
ICAgICApCi0KLSAgICAgICAgY3J5cHRvLmVuY3J5cHRfcGFja2V0ID0gZW5jcnlwdF9wYWNrZXQK
LQotICAgICAgICBidWlsZGVyLnN0YXJ0X3BhY2tldChQQUNLRVRfVFlQRV9JTklUSUFMLCBjcnlw
dG8pCi0gICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUoUXVpY0ZyYW1lVHlwZS5QQURE
SU5HKQotICAgICAgICBidWYucHVzaF9ieXRlcyhieXRlcyhidWlsZGVyLnJlbWFpbmluZ19mbGln
aHRfc3BhY2UpKQotCi0gICAgICAgIGZvciBkYXRhZ3JhbSBpbiBidWlsZGVyLmZsdXNoKClbMF06
Ci0gICAgICAgICAgICBjbGllbnQucmVjZWl2ZV9kYXRhZ3JhbShkYXRhZ3JhbSwgU0VSVkVSX0FE
RFIsIG5vdz10aW1lLnRpbWUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkcm9wKGNsaWVu
dCksIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBjbGllbnQuX2Ns
b3NlX2V2ZW50LAotICAgICAgICAgICAgZXZlbnRzLkNvbm5lY3Rpb25UZXJtaW5hdGVkKAotICAg
ICAgICAgICAgICAgIGVycm9yX2NvZGU9UXVpY0Vycm9yQ29kZS5QUk9UT0NPTF9WSU9MQVRJT04s
Ci0gICAgICAgICAgICAgICAgZnJhbWVfdHlwZT1Ob25lLAotICAgICAgICAgICAgICAgIHJlYXNv
bl9waHJhc2U9IlJlc2VydmVkIGJpdHMgbXVzdCBiZSB6ZXJvIiwKLSAgICAgICAgICAgICksCi0g
ICAgICAgICkKLQotICAgIGRlZiB0ZXN0X3JlY2VpdmVfZGF0YWdyYW1fd3JvbmdfdmVyc2lvbihz
ZWxmKToKLSAgICAgICAgY2xpZW50ID0gY3JlYXRlX3N0YW5kYWxvbmVfY2xpZW50KHNlbGYpCi0K
LSAgICAgICAgYnVpbGRlciA9IFF1aWNQYWNrZXRCdWlsZGVyKAotICAgICAgICAgICAgaG9zdF9j
aWQ9Y2xpZW50Ll9wZWVyX2NpZCwKLSAgICAgICAgICAgIGlzX2NsaWVudD1GYWxzZSwKLSAgICAg
ICAgICAgIHBlZXJfY2lkPWNsaWVudC5ob3N0X2NpZCwKLSAgICAgICAgICAgIHZlcnNpb249MHhG
RjAwMDAxMSwgICMgRFJBRlRfMTYKLSAgICAgICAgKQotICAgICAgICBjcnlwdG8gPSBDcnlwdG9Q
YWlyKCkKLSAgICAgICAgY3J5cHRvLnNldHVwX2luaXRpYWwoY2xpZW50Ll9wZWVyX2NpZCwgaXNf
Y2xpZW50PUZhbHNlLCB2ZXJzaW9uPWNsaWVudC5fdmVyc2lvbikKLSAgICAgICAgYnVpbGRlci5z
dGFydF9wYWNrZXQoUEFDS0VUX1RZUEVfSU5JVElBTCwgY3J5cHRvKQotICAgICAgICBidWYgPSBi
dWlsZGVyLnN0YXJ0X2ZyYW1lKFF1aWNGcmFtZVR5cGUuUEFERElORykKLSAgICAgICAgYnVmLnB1
c2hfYnl0ZXMoYnl0ZXMoYnVpbGRlci5yZW1haW5pbmdfZmxpZ2h0X3NwYWNlKSkKLQotICAgICAg
ICBmb3IgZGF0YWdyYW0gaW4gYnVpbGRlci5mbHVzaCgpWzBdOgotICAgICAgICAgICAgY2xpZW50
LnJlY2VpdmVfZGF0YWdyYW0oZGF0YWdyYW0sIFNFUlZFUl9BRERSLCBub3c9dGltZS50aW1lKCkp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHJvcChjbGllbnQpLCAwKQotCi0gICAgZGVmIHRl
c3RfcmVjZWl2ZV9kYXRhZ3JhbV9yZXRyeShzZWxmKToKLSAgICAgICAgY2xpZW50ID0gY3JlYXRl
X3N0YW5kYWxvbmVfY2xpZW50KHNlbGYpCi0KLSAgICAgICAgY2xpZW50LnJlY2VpdmVfZGF0YWdy
YW0oCi0gICAgICAgICAgICBlbmNvZGVfcXVpY19yZXRyeSgKLSAgICAgICAgICAgICAgICB2ZXJz
aW9uPWNsaWVudC5fdmVyc2lvbiwKLSAgICAgICAgICAgICAgICBzb3VyY2VfY2lkPWJpbmFzY2lp
LnVuaGV4bGlmeSgiODVhYmI1NDdiZjI4YmU5NyIpLAotICAgICAgICAgICAgICAgIGRlc3RpbmF0
aW9uX2NpZD1jbGllbnQuaG9zdF9jaWQsCi0gICAgICAgICAgICAgICAgb3JpZ2luYWxfZGVzdGlu
YXRpb25fY2lkPWNsaWVudC5fcGVlcl9jaWQsCi0gICAgICAgICAgICAgICAgcmV0cnlfdG9rZW49
Ynl0ZXMoMTYpLAotICAgICAgICAgICAgKSwKLSAgICAgICAgICAgIFNFUlZFUl9BRERSLAotICAg
ICAgICAgICAgbm93PXRpbWUudGltZSgpLAotICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoZHJvcChjbGllbnQpLCAxKQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9kYXRhZ3JhbV9y
ZXRyeV93cm9uZ19kZXN0aW5hdGlvbl9jaWQoc2VsZik6Ci0gICAgICAgIGNsaWVudCA9IGNyZWF0
ZV9zdGFuZGFsb25lX2NsaWVudChzZWxmKQotCi0gICAgICAgIGNsaWVudC5yZWNlaXZlX2RhdGFn
cmFtKAotICAgICAgICAgICAgZW5jb2RlX3F1aWNfcmV0cnkoCi0gICAgICAgICAgICAgICAgdmVy
c2lvbj1jbGllbnQuX3ZlcnNpb24sCi0gICAgICAgICAgICAgICAgc291cmNlX2NpZD1iaW5hc2Np
aS51bmhleGxpZnkoIjg1YWJiNTQ3YmYyOGJlOTciKSwKLSAgICAgICAgICAgICAgICBkZXN0aW5h
dGlvbl9jaWQ9YmluYXNjaWkudW5oZXhsaWZ5KCJjOTgzNDNmZThmNWYwZmY0IiksCi0gICAgICAg
ICAgICAgICAgb3JpZ2luYWxfZGVzdGluYXRpb25fY2lkPWNsaWVudC5fcGVlcl9jaWQsCi0gICAg
ICAgICAgICAgICAgcmV0cnlfdG9rZW49Ynl0ZXMoMTYpLAotICAgICAgICAgICAgKSwKLSAgICAg
ICAgICAgIFNFUlZFUl9BRERSLAotICAgICAgICAgICAgbm93PXRpbWUudGltZSgpLAotICAgICAg
ICApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHJvcChjbGllbnQpLCAwKQotCi0gICAgZGVm
IHRlc3RfaGFuZGxlX2Fja19mcmFtZV9lY24oc2VsZik6Ci0gICAgICAgIGNsaWVudCA9IGNyZWF0
ZV9zdGFuZGFsb25lX2NsaWVudChzZWxmKQotCi0gICAgICAgIGNsaWVudC5faGFuZGxlX2Fja19m
cmFtZSgKLSAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKLSAgICAg
ICAgICAgIFF1aWNGcmFtZVR5cGUuQUNLX0VDTiwKLSAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWIi
XHgwMFx4MDJceDAwXHgwMFx4MDBceDAwXHgwMCIpLAotICAgICAgICApCi0KLSAgICBkZWYgdGVz
dF9oYW5kbGVfY29ubmVjdGlvbl9jbG9zZV9mcmFtZShzZWxmKToKLSAgICAgICAgd2l0aCBjbGll
bnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6Ci0gICAgICAgICAgICBzZXJ2ZXIu
Y2xvc2UoCi0gICAgICAgICAgICAgICAgZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLlBST1RPQ09M
X1ZJT0xBVElPTiwKLSAgICAgICAgICAgICAgICBmcmFtZV90eXBlPVF1aWNGcmFtZVR5cGUuQUNL
LAotICAgICAgICAgICAgICAgIHJlYXNvbl9waHJhc2U9ImlsbGVnYWwgQUNLIGZyYW1lIiwKLSAg
ICAgICAgICAgICkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocm91bmR0cmlwKHNlcnZl
ciwgY2xpZW50KSwgKDEsIDApKQotCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAg
ICAgICAgICAgICAgIGNsaWVudC5fY2xvc2VfZXZlbnQsCi0gICAgICAgICAgICAgICAgZXZlbnRz
LkNvbm5lY3Rpb25UZXJtaW5hdGVkKAotICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2RlPVF1
aWNFcnJvckNvZGUuUFJPVE9DT0xfVklPTEFUSU9OLAotICAgICAgICAgICAgICAgICAgICBmcmFt
ZV90eXBlPVF1aWNGcmFtZVR5cGUuQUNLLAotICAgICAgICAgICAgICAgICAgICByZWFzb25fcGhy
YXNlPSJpbGxlZ2FsIEFDSyBmcmFtZSIsCi0gICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAg
ICkKLQotICAgIGRlZiB0ZXN0X2hhbmRsZV9jb25uZWN0aW9uX2Nsb3NlX2ZyYW1lX2FwcChzZWxm
KToKLSAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6
Ci0gICAgICAgICAgICBzZXJ2ZXIuY2xvc2UoZXJyb3JfY29kZT1RdWljRXJyb3JDb2RlLk5PX0VS
Uk9SLCByZWFzb25fcGhyYXNlPSJnb29kYnllIikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocm91bmR0cmlwKHNlcnZlciwgY2xpZW50KSwgKDEsIDApKQotCi0gICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAotICAgICAgICAgICAgICAgIGNsaWVudC5fY2xvc2VfZXZlbnQsCi0gICAg
ICAgICAgICAgICAgZXZlbnRzLkNvbm5lY3Rpb25UZXJtaW5hdGVkKAotICAgICAgICAgICAgICAg
ICAgICBlcnJvcl9jb2RlPVF1aWNFcnJvckNvZGUuTk9fRVJST1IsCi0gICAgICAgICAgICAgICAg
ICAgIGZyYW1lX3R5cGU9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgcmVhc29uX3BocmFzZT0i
Z29vZGJ5ZSIsCi0gICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICkKLQotICAgIGRlZiB0
ZXN0X2hhbmRsZV9jb25uZWN0aW9uX2Nsb3NlX2ZyYW1lX2FwcF9ub3RfdXRmOChzZWxmKToKLSAg
ICAgICAgY2xpZW50ID0gY3JlYXRlX3N0YW5kYWxvbmVfY2xpZW50KHNlbGYpCi0KLSAgICAgICAg
Y2xpZW50Ll9oYW5kbGVfY29ubmVjdGlvbl9jbG9zZV9mcmFtZSgKLSAgICAgICAgICAgIGNsaWVu
dF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKLSAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuQVBQ
TElDQVRJT05fQ0xPU0UsCi0gICAgICAgICAgICBCdWZmZXIoZGF0YT1iaW5hc2NpaS51bmhleGxp
ZnkoIjAwMDg2NzZmNmY2NDYyNzk4MjAwIikpLAotICAgICAgICApCi0KLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGNsaWVudC5fY2xvc2VfZXZlbnQsCi0gICAgICAgICAg
ICBldmVudHMuQ29ubmVjdGlvblRlcm1pbmF0ZWQoCi0gICAgICAgICAgICAgICAgZXJyb3JfY29k
ZT1RdWljRXJyb3JDb2RlLk5PX0VSUk9SLCBmcmFtZV90eXBlPU5vbmUsIHJlYXNvbl9waHJhc2U9
IiIsCi0gICAgICAgICAgICApLAotICAgICAgICApCi0KLSAgICBkZWYgdGVzdF9oYW5kbGVfY3J5
cHRvX2ZyYW1lX292ZXJfbGFyZ2VzdF9vZmZzZXQoc2VsZik6Ci0gICAgICAgIHdpdGggY2xpZW50
X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgotICAgICAgICAgICAgIyBjbGllbnQg
cmVjZWl2ZXMgb2Zmc2V0ICsgbGVuZ3RoID4gMl42MiAtIDEKLSAgICAgICAgICAgIHdpdGggc2Vs
Zi5hc3NlcnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikgYXMgY206Ci0gICAgICAgICAgICAg
ICAgY2xpZW50Ll9oYW5kbGVfY3J5cHRvX2ZyYW1lKAotICAgICAgICAgICAgICAgICAgICBjbGll
bnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCi0gICAgICAgICAgICAgICAgICAgIFF1aWNGcmFt
ZVR5cGUuQ1JZUFRPLAotICAgICAgICAgICAgICAgICAgICBCdWZmZXIoZGF0YT1lbmNvZGVfdWlu
dF92YXIoVUlOVF9WQVJfTUFYKSArIGVuY29kZV91aW50X3ZhcigxKSksCi0gICAgICAgICAgICAg
ICAgKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgICAgICBjbS5l
eGNlcHRpb24uZXJyb3JfY29kZSwgUXVpY0Vycm9yQ29kZS5GUkFNRV9FTkNPRElOR19FUlJPUgot
ICAgICAgICAgICAgKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24u
ZnJhbWVfdHlwZSwgUXVpY0ZyYW1lVHlwZS5DUllQVE8pCi0gICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKAotICAgICAgICAgICAgICAgIGNtLmV4Y2VwdGlvbi5yZWFzb25fcGhyYXNlLCAib2Zm
c2V0ICsgbGVuZ3RoIGNhbm5vdCBleGNlZWQgMl42MiAtIDEiCi0gICAgICAgICAgICApCi0KLSAg
ICBkZWYgdGVzdF9oYW5kbGVfZGF0YV9ibG9ja2VkX2ZyYW1lKHNlbGYpOgotICAgICAgICB3aXRo
IGNsaWVudF9hbmRfc2VydmVyKCkgYXMgKGNsaWVudCwgc2VydmVyKToKLSAgICAgICAgICAgICMg
Y2xpZW50IHJlY2VpdmVzIERBVEFfQkxPQ0tFRDogMTIzNDUKLSAgICAgICAgICAgIGNsaWVudC5f
aGFuZGxlX2RhdGFfYmxvY2tlZF9mcmFtZSgKLSAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2
ZV9jb250ZXh0KGNsaWVudCksCi0gICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5EQVRBX0JM
T0NLRUQsCi0gICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9ZW5jb2RlX3VpbnRfdmFyKDEyMzQ1
KSksCi0gICAgICAgICAgICApCi0KLSAgICBkZWYgdGVzdF9oYW5kbGVfZGF0YWdyYW1fZnJhbWUo
c2VsZik6Ci0gICAgICAgIGNsaWVudCA9IGNyZWF0ZV9zdGFuZGFsb25lX2NsaWVudChzZWxmLCBt
YXhfZGF0YWdyYW1fZnJhbWVfc2l6ZT02KQotCi0gICAgICAgIGNsaWVudC5faGFuZGxlX2RhdGFn
cmFtX2ZyYW1lKAotICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAot
ICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5EQVRBR1JBTSwKLSAgICAgICAgICAgIEJ1ZmZlcihk
YXRhPWIiaGVsbG8iKSwKLSAgICAgICAgKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0g
ICAgICAgICAgICBjbGllbnQubmV4dF9ldmVudCgpLCBldmVudHMuRGF0YWdyYW1GcmFtZVJlY2Vp
dmVkKGRhdGE9YiJoZWxsbyIpCi0gICAgICAgICkKLQotICAgIGRlZiB0ZXN0X2hhbmRsZV9kYXRh
Z3JhbV9mcmFtZV9ub3RfYWxsb3dlZChzZWxmKToKLSAgICAgICAgY2xpZW50ID0gY3JlYXRlX3N0
YW5kYWxvbmVfY2xpZW50KHNlbGYsIG1heF9kYXRhZ3JhbV9mcmFtZV9zaXplPU5vbmUpCi0KLSAg
ICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhRdWljQ29ubmVjdGlvbkVycm9yKSBhcyBjbToK
LSAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX2RhdGFncmFtX2ZyYW1lKAotICAgICAgICAgICAg
ICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKLSAgICAgICAgICAgICAgICBRdWlj
RnJhbWVUeXBlLkRBVEFHUkFNLAotICAgICAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWIiaGVsbG8i
KSwKLSAgICAgICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24u
ZXJyb3JfY29kZSwgUXVpY0Vycm9yQ29kZS5QUk9UT0NPTF9WSU9MQVRJT04pCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmZyYW1lX3R5cGUsIFF1aWNGcmFtZVR5cGUuREFU
QUdSQU0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLnJlYXNvbl9waHJh
c2UsICJVbmV4cGVjdGVkIERBVEFHUkFNIGZyYW1lIikKLQotICAgIGRlZiB0ZXN0X2hhbmRsZV9k
YXRhZ3JhbV9mcmFtZV90b29fbGFyZ2Uoc2VsZik6Ci0gICAgICAgIGNsaWVudCA9IGNyZWF0ZV9z
dGFuZGFsb25lX2NsaWVudChzZWxmLCBtYXhfZGF0YWdyYW1fZnJhbWVfc2l6ZT01KQotCi0gICAg
ICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikgYXMgY206Ci0g
ICAgICAgICAgICBjbGllbnQuX2hhbmRsZV9kYXRhZ3JhbV9mcmFtZSgKLSAgICAgICAgICAgICAg
ICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCi0gICAgICAgICAgICAgICAgUXVpY0Zy
YW1lVHlwZS5EQVRBR1JBTSwKLSAgICAgICAgICAgICAgICBCdWZmZXIoZGF0YT1iImhlbGxvIiks
Ci0gICAgICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVy
cm9yX2NvZGUsIFF1aWNFcnJvckNvZGUuUFJPVE9DT0xfVklPTEFUSU9OKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCBRdWljRnJhbWVUeXBlLkRBVEFH
UkFNKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5yZWFzb25fcGhyYXNl
LCAiVW5leHBlY3RlZCBEQVRBR1JBTSBmcmFtZSIpCi0KLSAgICBkZWYgdGVzdF9oYW5kbGVfZGF0
YWdyYW1fZnJhbWVfd2l0aF9sZW5ndGgoc2VsZik6Ci0gICAgICAgIGNsaWVudCA9IGNyZWF0ZV9z
dGFuZGFsb25lX2NsaWVudChzZWxmLCBtYXhfZGF0YWdyYW1fZnJhbWVfc2l6ZT03KQotCi0gICAg
ICAgIGNsaWVudC5faGFuZGxlX2RhdGFncmFtX2ZyYW1lKAotICAgICAgICAgICAgY2xpZW50X3Jl
Y2VpdmVfY29udGV4dChjbGllbnQpLAotICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5EQVRBR1JB
TV9XSVRIX0xFTkdUSCwKLSAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWIiXHgwNWhlbGxvanVuayIp
LAotICAgICAgICApCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGNs
aWVudC5uZXh0X2V2ZW50KCksIGV2ZW50cy5EYXRhZ3JhbUZyYW1lUmVjZWl2ZWQoZGF0YT1iImhl
bGxvIikKLSAgICAgICAgKQotCi0gICAgZGVmIHRlc3RfaGFuZGxlX2RhdGFncmFtX2ZyYW1lX3dp
dGhfbGVuZ3RoX25vdF9hbGxvd2VkKHNlbGYpOgotICAgICAgICBjbGllbnQgPSBjcmVhdGVfc3Rh
bmRhbG9uZV9jbGllbnQoc2VsZiwgbWF4X2RhdGFncmFtX2ZyYW1lX3NpemU9Tm9uZSkKLQotICAg
ICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNDb25uZWN0aW9uRXJyb3IpIGFzIGNtOgot
ICAgICAgICAgICAgY2xpZW50Ll9oYW5kbGVfZGF0YWdyYW1fZnJhbWUoCi0gICAgICAgICAgICAg
ICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAotICAgICAgICAgICAgICAgIFF1aWNG
cmFtZVR5cGUuREFUQUdSQU1fV0lUSF9MRU5HVEgsCi0gICAgICAgICAgICAgICAgQnVmZmVyKGRh
dGE9YiJceDA1aGVsbG9qdW5rIiksCi0gICAgICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoY20uZXhjZXB0aW9uLmVycm9yX2NvZGUsIFF1aWNFcnJvckNvZGUuUFJPVE9DT0xfVklP
TEFUSU9OKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBl
LCBRdWljRnJhbWVUeXBlLkRBVEFHUkFNX1dJVEhfTEVOR1RIKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGNtLmV4Y2VwdGlvbi5yZWFzb25fcGhyYXNlLCAiVW5leHBlY3RlZCBEQVRBR1JBTSBm
cmFtZSIpCi0KLSAgICBkZWYgdGVzdF9oYW5kbGVfZGF0YWdyYW1fZnJhbWVfd2l0aF9sZW5ndGhf
dG9vX2xhcmdlKHNlbGYpOgotICAgICAgICBjbGllbnQgPSBjcmVhdGVfc3RhbmRhbG9uZV9jbGll
bnQoc2VsZiwgbWF4X2RhdGFncmFtX2ZyYW1lX3NpemU9NikKLQotICAgICAgICB3aXRoIHNlbGYu
YXNzZXJ0UmFpc2VzKFF1aWNDb25uZWN0aW9uRXJyb3IpIGFzIGNtOgotICAgICAgICAgICAgY2xp
ZW50Ll9oYW5kbGVfZGF0YWdyYW1fZnJhbWUoCi0gICAgICAgICAgICAgICAgY2xpZW50X3JlY2Vp
dmVfY29udGV4dChjbGllbnQpLAotICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuREFUQUdS
QU1fV0lUSF9MRU5HVEgsCi0gICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9YiJceDA1aGVsbG9q
dW5rIiksCi0gICAgICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0
aW9uLmVycm9yX2NvZGUsIFF1aWNFcnJvckNvZGUuUFJPVE9DT0xfVklPTEFUSU9OKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCBRdWljRnJhbWVUeXBl
LkRBVEFHUkFNX1dJVEhfTEVOR1RIKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2Vw
dGlvbi5yZWFzb25fcGhyYXNlLCAiVW5leHBlY3RlZCBEQVRBR1JBTSBmcmFtZSIpCi0KLSAgICBk
ZWYgdGVzdF9oYW5kbGVfaGFuZHNoYWtlX2RvbmVfbm90X2FsbG93ZWQoc2VsZik6Ci0gICAgICAg
IHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgotICAgICAgICAg
ICAgIyBzZXJ2ZXIgcmVjZWl2ZXMgSEFORFNIQUtFX0RPTkUgZnJhbWUKLSAgICAgICAgICAgIHdp
dGggc2VsZi5hc3NlcnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikgYXMgY206Ci0gICAgICAg
ICAgICAgICAgc2VydmVyLl9oYW5kbGVfaGFuZHNoYWtlX2RvbmVfZnJhbWUoCi0gICAgICAgICAg
ICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoc2VydmVyKSwKLSAgICAgICAgICAgICAg
ICAgICAgUXVpY0ZyYW1lVHlwZS5IQU5EU0hBS0VfRE9ORSwKLSAgICAgICAgICAgICAgICAgICAg
QnVmZmVyKGRhdGE9YiIiKSwKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJvcl9jb2RlLCBRdWljRXJyb3JDb2RlLlBST1RPQ09M
X1ZJT0xBVElPTikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmZy
YW1lX3R5cGUsIFF1aWNGcmFtZVR5cGUuSEFORFNIQUtFX0RPTkUpCi0gICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAotICAgICAgICAgICAgICAgIGNtLmV4Y2VwdGlvbi5yZWFzb25fcGhyYXNl
LAotICAgICAgICAgICAgICAgICJDbGllbnRzIG11c3Qgbm90IHNlbmQgSEFORFNIQUtFX0RPTkUg
ZnJhbWVzIiwKLSAgICAgICAgICAgICkKLQotICAgIGRlZiB0ZXN0X2hhbmRsZV9tYXhfZGF0YV9m
cmFtZShzZWxmKToKLSAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQs
IHNlcnZlcik6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5fcmVtb3RlX21h
eF9kYXRhLCAxMDQ4NTc2KQotCi0gICAgICAgICAgICAjIGNsaWVudCByZWNlaXZlcyBNQVhfREFU
QSByYWlzaW5nIGxpbWl0Ci0gICAgICAgICAgICBjbGllbnQuX2hhbmRsZV9tYXhfZGF0YV9mcmFt
ZSgKLSAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCi0gICAg
ICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5NQVhfREFUQSwKLSAgICAgICAgICAgICAgICBCdWZm
ZXIoZGF0YT1lbmNvZGVfdWludF92YXIoMTA0ODU3NykpLAotICAgICAgICAgICAgKQotICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuX3JlbW90ZV9tYXhfZGF0YSwgMTA0ODU3NykK
LQotICAgIGRlZiB0ZXN0X2hhbmRsZV9tYXhfc3RyZWFtX2RhdGFfZnJhbWUoc2VsZik6Ci0gICAg
ICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgotICAgICAg
ICAgICAgIyBjbGllbnQgY3JlYXRlcyBiaWRpcmVjdGlvbmFsIHN0cmVhbSAwCi0gICAgICAgICAg
ICBzdHJlYW0gPSBjbGllbnQuX2NyZWF0ZV9zdHJlYW0oc3RyZWFtX2lkPTApCi0gICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5tYXhfc3RyZWFtX2RhdGFfcmVtb3RlLCAxMDQ4NTc2
KQotCi0gICAgICAgICAgICAjIGNsaWVudCByZWNlaXZlcyBNQVhfU1RSRUFNX0RBVEEgcmFpc2lu
ZyBsaW1pdAotICAgICAgICAgICAgY2xpZW50Ll9oYW5kbGVfbWF4X3N0cmVhbV9kYXRhX2ZyYW1l
KAotICAgICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKLSAgICAg
ICAgICAgICAgICBRdWljRnJhbWVUeXBlLk1BWF9TVFJFQU1fREFUQSwKLSAgICAgICAgICAgICAg
ICBCdWZmZXIoZGF0YT1iIlx4MDAiICsgZW5jb2RlX3VpbnRfdmFyKDEwNDg1NzcpKSwKLSAgICAg
ICAgICAgICkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm1heF9zdHJlYW1f
ZGF0YV9yZW1vdGUsIDEwNDg1NzcpCi0KLSAgICAgICAgICAgICMgY2xpZW50IHJlY2VpdmVzIE1B
WF9TVFJFQU1fREFUQSBsb3dlcmluZyBsaW1pdAotICAgICAgICAgICAgY2xpZW50Ll9oYW5kbGVf
bWF4X3N0cmVhbV9kYXRhX2ZyYW1lKAotICAgICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2Nv
bnRleHQoY2xpZW50KSwKLSAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLk1BWF9TVFJFQU1f
REFUQSwKLSAgICAgICAgICAgICAgICBCdWZmZXIoZGF0YT1iIlx4MDAiICsgZW5jb2RlX3VpbnRf
dmFyKDEwNDg1NzUpKSwKLSAgICAgICAgICAgICkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoc3RyZWFtLm1heF9zdHJlYW1fZGF0YV9yZW1vdGUsIDEwNDg1NzcpCi0KLSAgICBkZWYgdGVz
dF9oYW5kbGVfbWF4X3N0cmVhbV9kYXRhX2ZyYW1lX3JlY2VpdmVfb25seShzZWxmKToKLSAgICAg
ICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6Ci0gICAgICAg
ICAgICAjIHNlcnZlciBjcmVhdGVzIHVuaWRpcmVjdGlvbmFsIHN0cmVhbSAzCi0gICAgICAgICAg
ICBzZXJ2ZXIuc2VuZF9zdHJlYW1fZGF0YShzdHJlYW1faWQ9MywgZGF0YT1iImhlbGxvIikKLQot
ICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgTUFYX1NUUkVBTV9EQVRBOiAzLCAxCi0gICAg
ICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNDb25uZWN0aW9uRXJyb3IpIGFzIGNt
OgotICAgICAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX21heF9zdHJlYW1fZGF0YV9mcmFtZSgK
LSAgICAgICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAotICAg
ICAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLk1BWF9TVFJFQU1fREFUQSwKLSAgICAgICAg
ICAgICAgICAgICAgQnVmZmVyKGRhdGE9YiJceDAzXHgwMSIpLAotICAgICAgICAgICAgICAgICkK
LSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm9yX2NvZGUsIFF1
aWNFcnJvckNvZGUuU1RSRUFNX1NUQVRFX0VSUk9SKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChjbS5leGNlcHRpb24uZnJhbWVfdHlwZSwgUXVpY0ZyYW1lVHlwZS5NQVhfU1RSRUFNX0RB
VEEpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5yZWFzb25fcGhy
YXNlLCAiU3RyZWFtIGlzIHJlY2VpdmUtb25seSIpCi0KLSAgICBkZWYgdGVzdF9oYW5kbGVfbWF4
X3N0cmVhbXNfYmlkaV9mcmFtZShzZWxmKToKLSAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZl
cigpIGFzIChjbGllbnQsIHNlcnZlcik6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNs
aWVudC5fcmVtb3RlX21heF9zdHJlYW1zX2JpZGksIDEyOCkKLQotICAgICAgICAgICAgIyBjbGll
bnQgcmVjZWl2ZXMgTUFYX1NUUkVBTVNfQklESSByYWlzaW5nIGxpbWl0Ci0gICAgICAgICAgICBj
bGllbnQuX2hhbmRsZV9tYXhfc3RyZWFtc19iaWRpX2ZyYW1lKAotICAgICAgICAgICAgICAgIGNs
aWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKLSAgICAgICAgICAgICAgICBRdWljRnJhbWVU
eXBlLk1BWF9TVFJFQU1TX0JJREksCi0gICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9ZW5jb2Rl
X3VpbnRfdmFyKDEyOSkpLAotICAgICAgICAgICAgKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChjbGllbnQuX3JlbW90ZV9tYXhfc3RyZWFtc19iaWRpLCAxMjkpCi0KLSAgICAgICAgICAg
ICMgY2xpZW50IHJlY2VpdmVzIE1BWF9TVFJFQU1TX0JJREkgbG93ZXJpbmcgbGltaXQKLSAgICAg
ICAgICAgIGNsaWVudC5faGFuZGxlX21heF9zdHJlYW1zX2JpZGlfZnJhbWUoCi0gICAgICAgICAg
ICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAotICAgICAgICAgICAgICAgIFF1
aWNGcmFtZVR5cGUuTUFYX1NUUkVBTVNfQklESSwKLSAgICAgICAgICAgICAgICBCdWZmZXIoZGF0
YT1lbmNvZGVfdWludF92YXIoMTI3KSksCi0gICAgICAgICAgICApCi0gICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGNsaWVudC5fcmVtb3RlX21heF9zdHJlYW1zX2JpZGksIDEyOSkKLQotICAg
IGRlZiB0ZXN0X2hhbmRsZV9tYXhfc3RyZWFtc191bmlfZnJhbWUoc2VsZik6Ci0gICAgICAgIHdp
dGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgotICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjbGllbnQuX3JlbW90ZV9tYXhfc3RyZWFtc191bmksIDEyOCkKLQot
ICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgTUFYX1NUUkVBTVNfVU5JIHJhaXNpbmcgbGlt
aXQKLSAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX21heF9zdHJlYW1zX3VuaV9mcmFtZSgKLSAg
ICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCi0gICAgICAgICAg
ICAgICAgUXVpY0ZyYW1lVHlwZS5NQVhfU1RSRUFNU19VTkksCi0gICAgICAgICAgICAgICAgQnVm
ZmVyKGRhdGE9ZW5jb2RlX3VpbnRfdmFyKDEyOSkpLAotICAgICAgICAgICAgKQotICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuX3JlbW90ZV9tYXhfc3RyZWFtc191bmksIDEyOSkK
LQotICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgTUFYX1NUUkVBTVNfVU5JIHJhaXNpbmcg
bGltaXQKLSAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX21heF9zdHJlYW1zX3VuaV9mcmFtZSgK
LSAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCi0gICAgICAg
ICAgICAgICAgUXVpY0ZyYW1lVHlwZS5NQVhfU1RSRUFNU19VTkksCi0gICAgICAgICAgICAgICAg
QnVmZmVyKGRhdGE9ZW5jb2RlX3VpbnRfdmFyKDEyNykpLAotICAgICAgICAgICAgKQotICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuX3JlbW90ZV9tYXhfc3RyZWFtc191bmksIDEy
OSkKLQotICAgIGRlZiB0ZXN0X2hhbmRsZV9uZXdfdG9rZW5fZnJhbWUoc2VsZik6Ci0gICAgICAg
IHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgotICAgICAgICAg
ICAgIyBjbGllbnQgcmVjZWl2ZXMgTkVXX1RPS0VOCi0gICAgICAgICAgICBjbGllbnQuX2hhbmRs
ZV9uZXdfdG9rZW5fZnJhbWUoCi0gICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4
dChjbGllbnQpLAotICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuTkVXX1RPS0VOLAotICAg
ICAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWJpbmFzY2lpLnVuaGV4bGlmeSgiMDgwMTAyMDMwNDA1
MDYwNzA4IikpLAotICAgICAgICAgICAgKQotCi0gICAgZGVmIHRlc3RfaGFuZGxlX25ld190b2tl
bl9mcmFtZV9mcm9tX2NsaWVudChzZWxmKToKLSAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZl
cigpIGFzIChjbGllbnQsIHNlcnZlcik6Ci0gICAgICAgICAgICAjIHNlcnZlciByZWNlaXZlcyBO
RVdfVE9LRU4KLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUXVpY0Nvbm5lY3Rp
b25FcnJvcikgYXMgY206Ci0gICAgICAgICAgICAgICAgc2VydmVyLl9oYW5kbGVfbmV3X3Rva2Vu
X2ZyYW1lKAotICAgICAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVu
dCksCi0gICAgICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuTkVXX1RPS0VOLAotICAgICAg
ICAgICAgICAgICAgICBCdWZmZXIoZGF0YT1iaW5hc2NpaS51bmhleGxpZnkoIjA4MDEwMjAzMDQw
NTA2MDcwOCIpKSwKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGNtLmV4Y2VwdGlvbi5lcnJvcl9jb2RlLCBRdWljRXJyb3JDb2RlLlBST1RPQ09MX1ZJT0xB
VElPTikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmZyYW1lX3R5
cGUsIFF1aWNGcmFtZVR5cGUuTkVXX1RPS0VOKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgKLSAgICAgICAgICAgICAgICBjbS5leGNlcHRpb24ucmVhc29uX3BocmFzZSwgIkNsaWVudHMg
bXVzdCBub3Qgc2VuZCBORVdfVE9LRU4gZnJhbWVzIgotICAgICAgICAgICAgKQotCi0gICAgZGVm
IHRlc3RfaGFuZGxlX3BhdGhfY2hhbGxlbmdlX2ZyYW1lKHNlbGYpOgotICAgICAgICB3aXRoIGNs
aWVudF9hbmRfc2VydmVyKCkgYXMgKGNsaWVudCwgc2VydmVyKToKLSAgICAgICAgICAgICMgY2xp
ZW50IGNoYW5nZXMgYWRkcmVzcyBhbmQgc2VuZHMgc29tZSBkYXRhCi0gICAgICAgICAgICBjbGll
bnQuc2VuZF9zdHJlYW1fZGF0YSgwLCBiIjAxMjM0NTY3IikKLSAgICAgICAgICAgIGZvciBkYXRh
LCBhZGRyIGluIGNsaWVudC5kYXRhZ3JhbXNfdG9fc2VuZChub3c9dGltZS50aW1lKCkpOgotICAg
ICAgICAgICAgICAgIHNlcnZlci5yZWNlaXZlX2RhdGFncmFtKGRhdGEsICgiMS4yLjMuNCIsIDIz
NDUpLCBub3c9dGltZS50aW1lKCkpCi0KLSAgICAgICAgICAgICMgY2hlY2sgcGF0aHMKLSAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlcnZlci5fbmV0d29ya19wYXRocyksIDIpCi0g
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5fbmV0d29ya19wYXRoc1swXS5hZGRy
LCAoIjEuMi4zLjQiLCAyMzQ1KSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VydmVy
Ll9uZXR3b3JrX3BhdGhzWzBdLmlzX3ZhbGlkYXRlZCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc2VydmVyLl9uZXR3b3JrX3BhdGhzWzFdLmFkZHIsICgiMS4yLjMuNCIsIDEyMzQpKQot
ICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlcnZlci5fbmV0d29ya19wYXRoc1sxXS5pc192
YWxpZGF0ZWQpCi0KLSAgICAgICAgICAgICMgc2VydmVyIHNlbmRzIFBBVEhfQ0hBTExFTkdFIGFu
ZCByZWNlaXZlcyBQQVRIX1JFU1BPTlNFCi0gICAgICAgICAgICBmb3IgZGF0YSwgYWRkciBpbiBz
ZXJ2ZXIuZGF0YWdyYW1zX3RvX3NlbmQobm93PXRpbWUudGltZSgpKToKLSAgICAgICAgICAgICAg
ICBjbGllbnQucmVjZWl2ZV9kYXRhZ3JhbShkYXRhLCBTRVJWRVJfQUREUiwgbm93PXRpbWUudGlt
ZSgpKQotICAgICAgICAgICAgZm9yIGRhdGEsIGFkZHIgaW4gY2xpZW50LmRhdGFncmFtc190b19z
ZW5kKG5vdz10aW1lLnRpbWUoKSk6Ci0gICAgICAgICAgICAgICAgc2VydmVyLnJlY2VpdmVfZGF0
YWdyYW0oZGF0YSwgKCIxLjIuMy40IiwgMjM0NSksIG5vdz10aW1lLnRpbWUoKSkKLQotICAgICAg
ICAgICAgIyBjaGVjayBwYXRocwotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXIu
X25ldHdvcmtfcGF0aHNbMF0uYWRkciwgKCIxLjIuMy40IiwgMjM0NSkpCi0gICAgICAgICAgICBz
ZWxmLmFzc2VydFRydWUoc2VydmVyLl9uZXR3b3JrX3BhdGhzWzBdLmlzX3ZhbGlkYXRlZCkKLSAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLl9uZXR3b3JrX3BhdGhzWzFdLmFkZHIs
ICgiMS4yLjMuNCIsIDEyMzQpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlcnZlci5f
bmV0d29ya19wYXRoc1sxXS5pc192YWxpZGF0ZWQpCi0KLSAgICBkZWYgdGVzdF9oYW5kbGVfcGF0
aF9yZXNwb25zZV9mcmFtZV9iYWQoc2VsZik6Ci0gICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2
ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgotICAgICAgICAgICAgIyBzZXJ2ZXIgcmVjZWl2ZXMg
dW5zb2xsaWNpdGVkIFBBVEhfUkVTUE9OU0UKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRS
YWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikgYXMgY206Ci0gICAgICAgICAgICAgICAgc2VydmVy
Ll9oYW5kbGVfcGF0aF9yZXNwb25zZV9mcmFtZSgKLSAgICAgICAgICAgICAgICAgICAgY2xpZW50
X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAotICAgICAgICAgICAgICAgICAgICBRdWljRnJhbWVU
eXBlLlBBVEhfUkVTUE9OU0UsCi0gICAgICAgICAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWIiXHgx
MVx4MjJceDMzXHg0NFx4NTVceDY2XHg3N1x4ODgiKSwKLSAgICAgICAgICAgICAgICApCi0gICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJvcl9jb2RlLCBRdWljRXJy
b3JDb2RlLlBST1RPQ09MX1ZJT0xBVElPTikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Y20uZXhjZXB0aW9uLmZyYW1lX3R5cGUsIFF1aWNGcmFtZVR5cGUuUEFUSF9SRVNQT05TRSkKLQot
ICAgIGRlZiB0ZXN0X2hhbmRsZV9wYWRkaW5nX2ZyYW1lKHNlbGYpOgotICAgICAgICBjbGllbnQg
PSBjcmVhdGVfc3RhbmRhbG9uZV9jbGllbnQoc2VsZikKLQotICAgICAgICAjIG5vIG1vcmUgcGFk
ZGluZwotICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1iIiIpCi0gICAgICAgIGNsaWVudC5faGFu
ZGxlX3BhZGRpbmdfZnJhbWUoCi0gICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNs
aWVudCksIFF1aWNGcmFtZVR5cGUuUEFERElORywgYnVmCi0gICAgICAgICkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChidWYudGVsbCgpLCAwKQotCi0gICAgICAgICMgcGFkZGluZyB1bnRpbCBl
bmQKLSAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9Ynl0ZXMoMTApKQotICAgICAgICBjbGllbnQu
X2hhbmRsZV9wYWRkaW5nX2ZyYW1lKAotICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4
dChjbGllbnQpLCBRdWljRnJhbWVUeXBlLlBBRERJTkcsIGJ1ZgotICAgICAgICApCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoYnVmLnRlbGwoKSwgMTApCi0KLSAgICAgICAgIyBwYWRkaW5nIHRo
ZW4gc29tZXRoaW5nIGVsc2UKLSAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9Ynl0ZXMoMTApICsg
YiJceDAxIikKLSAgICAgICAgY2xpZW50Ll9oYW5kbGVfcGFkZGluZ19mcmFtZSgKLSAgICAgICAg
ICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwgUXVpY0ZyYW1lVHlwZS5QQURESU5H
LCBidWYKLSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi50ZWxsKCksIDEw
KQotCi0gICAgZGVmIHRlc3RfaGFuZGxlX3Jlc2V0X3N0cmVhbV9mcmFtZShzZWxmKToKLSAgICAg
ICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6Ci0gICAgICAg
ICAgICAjIGNsaWVudCBjcmVhdGVzIGJpZGlyZWN0aW9uYWwgc3RyZWFtIDAKLSAgICAgICAgICAg
IGNsaWVudC5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZD0wLCBkYXRhPWIiaGVsbG8iKQotICAg
ICAgICAgICAgY29uc3VtZV9ldmVudHMoY2xpZW50KQotCi0gICAgICAgICAgICAjIGNsaWVudCBy
ZWNlaXZlcyBSRVNFVF9TVFJFQU0KLSAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX3Jlc2V0X3N0
cmVhbV9mcmFtZSgKLSAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVu
dCksCi0gICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5SRVNFVF9TVFJFQU0sCi0gICAgICAg
ICAgICAgICAgQnVmZmVyKGRhdGE9YmluYXNjaWkudW5oZXhsaWZ5KCIwMDAxMDAiKSksCi0gICAg
ICAgICAgICApCi0KLSAgICAgICAgICAgIGV2ZW50ID0gY2xpZW50Lm5leHRfZXZlbnQoKQotICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGV2ZW50KSwgZXZlbnRzLlN0cmVhbVJlc2V0
KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5lcnJvcl9jb2RlLCBRdWljRXJy
b3JDb2RlLklOVEVSTkFMX0VSUk9SKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVu
dC5zdHJlYW1faWQsIDApCi0KLSAgICBkZWYgdGVzdF9oYW5kbGVfcmVzZXRfc3RyZWFtX2ZyYW1l
X3NlbmRfb25seShzZWxmKToKLSAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChj
bGllbnQsIHNlcnZlcik6Ci0gICAgICAgICAgICAjIGNsaWVudCBjcmVhdGVzIHVuaWRpcmVjdGlv
bmFsIHN0cmVhbSAyCi0gICAgICAgICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YShzdHJlYW1f
aWQ9MiwgZGF0YT1iImhlbGxvIikKLQotICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgUkVT
RVRfU1RSRUFNCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNDb25uZWN0
aW9uRXJyb3IpIGFzIGNtOgotICAgICAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX3Jlc2V0X3N0
cmVhbV9mcmFtZSgKLSAgICAgICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChj
bGllbnQpLAotICAgICAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLlJFU0VUX1NUUkVBTSwK
LSAgICAgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9YmluYXNjaWkudW5oZXhsaWZ5KCIwMjEx
MDAiKSksCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChj
bS5leGNlcHRpb24uZXJyb3JfY29kZSwgUXVpY0Vycm9yQ29kZS5TVFJFQU1fU1RBVEVfRVJST1Ip
Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCBR
dWljRnJhbWVUeXBlLlJFU0VUX1NUUkVBTSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Y20uZXhjZXB0aW9uLnJlYXNvbl9waHJhc2UsICJTdHJlYW0gaXMgc2VuZC1vbmx5IikKLQotICAg
IGRlZiB0ZXN0X2hhbmRsZV9yZXRpcmVfY29ubmVjdGlvbl9pZF9mcmFtZShzZWxmKToKLSAgICAg
ICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6Ci0gICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgICAgIHNlcXVlbmNlX251bWJlcnMo
Y2xpZW50Ll9ob3N0X2NpZHMpLCBbMCwgMSwgMiwgMywgNCwgNSwgNiwgN10KLSAgICAgICAgICAg
ICkKLQotICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgUkVUSVJFX0NPTk5FQ1RJT05fSUQK
LSAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX3JldGlyZV9jb25uZWN0aW9uX2lkX2ZyYW1lKAot
ICAgICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKLSAgICAgICAg
ICAgICAgICBRdWljRnJhbWVUeXBlLlJFVElSRV9DT05ORUNUSU9OX0lELAotICAgICAgICAgICAg
ICAgIEJ1ZmZlcihkYXRhPWIiXHgwMiIpLAotICAgICAgICAgICAgKQotICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgICAgICBzZXF1ZW5jZV9udW1iZXJzKGNsaWVudC5f
aG9zdF9jaWRzKSwgWzAsIDEsIDMsIDQsIDUsIDYsIDcsIDhdCi0gICAgICAgICAgICApCi0KLSAg
ICBkZWYgdGVzdF9oYW5kbGVfcmV0aXJlX2Nvbm5lY3Rpb25faWRfZnJhbWVfY3VycmVudF9jaWQo
c2VsZik6Ci0gICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2
ZXIpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgICAgICBzZXF1
ZW5jZV9udW1iZXJzKGNsaWVudC5faG9zdF9jaWRzKSwgWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDdd
Ci0gICAgICAgICAgICApCi0KLSAgICAgICAgICAgICMgY2xpZW50IHJlY2VpdmVzIFJFVElSRV9D
T05ORUNUSU9OX0lEIGZvciB0aGUgY3VycmVudCBDSUQKLSAgICAgICAgICAgIHdpdGggc2VsZi5h
c3NlcnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikgYXMgY206Ci0gICAgICAgICAgICAgICAg
Y2xpZW50Ll9oYW5kbGVfcmV0aXJlX2Nvbm5lY3Rpb25faWRfZnJhbWUoCi0gICAgICAgICAgICAg
ICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKLSAgICAgICAgICAgICAgICAg
ICAgUXVpY0ZyYW1lVHlwZS5SRVRJUkVfQ09OTkVDVElPTl9JRCwKLSAgICAgICAgICAgICAgICAg
ICAgQnVmZmVyKGRhdGE9YiJceDAwIiksCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJyb3JfY29kZSwgUXVpY0Vycm9yQ29kZS5Q
Uk9UT0NPTF9WSU9MQVRJT04pCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAg
ICAgICAgICAgIGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCBRdWljRnJhbWVUeXBlLlJFVElSRV9D
T05ORUNUSU9OX0lECi0gICAgICAgICAgICApCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KAotICAgICAgICAgICAgICAgIGNtLmV4Y2VwdGlvbi5yZWFzb25fcGhyYXNlLCAiQ2Fubm90IHJl
dGlyZSBjdXJyZW50IGNvbm5lY3Rpb24gSUQiCi0gICAgICAgICAgICApCi0gICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgICAgIHNlcXVlbmNlX251bWJlcnMoY2xpZW50
Ll9ob3N0X2NpZHMpLCBbMCwgMSwgMiwgMywgNCwgNSwgNiwgN10KLSAgICAgICAgICAgICkKLQot
ICAgIGRlZiB0ZXN0X2hhbmRsZV9zdG9wX3NlbmRpbmdfZnJhbWUoc2VsZik6Ci0gICAgICAgIHdp
dGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgotICAgICAgICAgICAg
IyBjbGllbnQgY3JlYXRlcyBiaWRpcmVjdGlvbmFsIHN0cmVhbSAwCi0gICAgICAgICAgICBjbGll
bnQuc2VuZF9zdHJlYW1fZGF0YShzdHJlYW1faWQ9MCwgZGF0YT1iImhlbGxvIikKLQotICAgICAg
ICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgU1RPUF9TRU5ESU5HCi0gICAgICAgICAgICBjbGllbnQu
X2hhbmRsZV9zdG9wX3NlbmRpbmdfZnJhbWUoCi0gICAgICAgICAgICAgICAgY2xpZW50X3JlY2Vp
dmVfY29udGV4dChjbGllbnQpLAotICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuU1RPUF9T
RU5ESU5HLAotICAgICAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWIiXHgwMFx4MTEiKSwKLSAgICAg
ICAgICAgICkKLQotICAgIGRlZiB0ZXN0X2hhbmRsZV9zdG9wX3NlbmRpbmdfZnJhbWVfcmVjZWl2
ZV9vbmx5KHNlbGYpOgotICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKCkgYXMgKGNsaWVu
dCwgc2VydmVyKToKLSAgICAgICAgICAgICMgc2VydmVyIGNyZWF0ZXMgdW5pZGlyZWN0aW9uYWwg
c3RyZWFtIDMKLSAgICAgICAgICAgIHNlcnZlci5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZD0z
LCBkYXRhPWIiaGVsbG8iKQotCi0gICAgICAgICAgICAjIGNsaWVudCByZWNlaXZlcyBTVE9QX1NF
TkRJTkcKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25F
cnJvcikgYXMgY206Ci0gICAgICAgICAgICAgICAgY2xpZW50Ll9oYW5kbGVfc3RvcF9zZW5kaW5n
X2ZyYW1lKAotICAgICAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVu
dCksCi0gICAgICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuU1RPUF9TRU5ESU5HLAotICAg
ICAgICAgICAgICAgICAgICBCdWZmZXIoZGF0YT1iIlx4MDNceDExIiksCi0gICAgICAgICAgICAg
ICAgKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJyb3JfY29k
ZSwgUXVpY0Vycm9yQ29kZS5TVFJFQU1fU1RBVEVfRVJST1IpCi0gICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCBRdWljRnJhbWVUeXBlLlNUT1BfU0VO
RElORykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLnJlYXNvbl9w
aHJhc2UsICJTdHJlYW0gaXMgcmVjZWl2ZS1vbmx5IikKLQotICAgIGRlZiB0ZXN0X2hhbmRsZV9z
dHJlYW1fZnJhbWVfb3Zlcl9sYXJnZXN0X29mZnNldChzZWxmKToKLSAgICAgICAgd2l0aCBjbGll
bnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6Ci0gICAgICAgICAgICAjIGNsaWVu
dCByZWNlaXZlcyBvZmZzZXQgKyBsZW5ndGggPiAyXjYyIC0gMQotICAgICAgICAgICAgZnJhbWVf
dHlwZSA9IFF1aWNGcmFtZVR5cGUuU1RSRUFNX0JBU0UgfCA2Ci0gICAgICAgICAgICBzdHJlYW1f
aWQgPSAxCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNDb25uZWN0aW9u
RXJyb3IpIGFzIGNtOgotICAgICAgICAgICAgICAgIGNsaWVudC5faGFuZGxlX3N0cmVhbV9mcmFt
ZSgKLSAgICAgICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAot
ICAgICAgICAgICAgICAgICAgICBmcmFtZV90eXBlLAotICAgICAgICAgICAgICAgICAgICBCdWZm
ZXIoCi0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWVuY29kZV91aW50X3ZhcihzdHJlYW1f
aWQpCi0gICAgICAgICAgICAgICAgICAgICAgICArIGVuY29kZV91aW50X3ZhcihVSU5UX1ZBUl9N
QVgpCi0gICAgICAgICAgICAgICAgICAgICAgICArIGVuY29kZV91aW50X3ZhcigxKQotICAgICAg
ICAgICAgICAgICAgICApLAotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoCi0gICAgICAgICAgICAgICAgY20uZXhjZXB0aW9uLmVycm9yX2NvZGUsIFF1aWNF
cnJvckNvZGUuRlJBTUVfRU5DT0RJTkdfRVJST1IKLSAgICAgICAgICAgICkKLSAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmZyYW1lX3R5cGUsIGZyYW1lX3R5cGUpCi0g
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgICAgIGNtLmV4Y2VwdGlv
bi5yZWFzb25fcGhyYXNlLCAib2Zmc2V0ICsgbGVuZ3RoIGNhbm5vdCBleGNlZWQgMl42MiAtIDEi
Ci0gICAgICAgICAgICApCi0KLSAgICBkZWYgdGVzdF9oYW5kbGVfc3RyZWFtX2ZyYW1lX292ZXJf
bWF4X2RhdGEoc2VsZik6Ci0gICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xp
ZW50LCBzZXJ2ZXIpOgotICAgICAgICAgICAgIyBhcnRpZmljaWFsbHkgcmFpc2UgcmVjZWl2ZWQg
ZGF0YSBjb3VudGVyCi0gICAgICAgICAgICBjbGllbnQuX2xvY2FsX21heF9kYXRhX3VzZWQgPSBj
bGllbnQuX2xvY2FsX21heF9kYXRhCi0KLSAgICAgICAgICAgICMgY2xpZW50IHJlY2VpdmVzIFNU
UkVBTSBmcmFtZQotICAgICAgICAgICAgZnJhbWVfdHlwZSA9IFF1aWNGcmFtZVR5cGUuU1RSRUFN
X0JBU0UgfCA0Ci0gICAgICAgICAgICBzdHJlYW1faWQgPSAxCi0gICAgICAgICAgICB3aXRoIHNl
bGYuYXNzZXJ0UmFpc2VzKFF1aWNDb25uZWN0aW9uRXJyb3IpIGFzIGNtOgotICAgICAgICAgICAg
ICAgIGNsaWVudC5faGFuZGxlX3N0cmVhbV9mcmFtZSgKLSAgICAgICAgICAgICAgICAgICAgY2xp
ZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAotICAgICAgICAgICAgICAgICAgICBmcmFtZV90
eXBlLAotICAgICAgICAgICAgICAgICAgICBCdWZmZXIoZGF0YT1lbmNvZGVfdWludF92YXIoc3Ry
ZWFtX2lkKSArIGVuY29kZV91aW50X3ZhcigxKSksCi0gICAgICAgICAgICAgICAgKQotICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJyb3JfY29kZSwgUXVpY0Vycm9y
Q29kZS5GTE9XX0NPTlRST0xfRVJST1IpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNt
LmV4Y2VwdGlvbi5mcmFtZV90eXBlLCBmcmFtZV90eXBlKQotICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChjbS5leGNlcHRpb24ucmVhc29uX3BocmFzZSwgIk92ZXIgY29ubmVjdGlvbiBkYXRh
IGxpbWl0IikKLQotICAgIGRlZiB0ZXN0X2hhbmRsZV9zdHJlYW1fZnJhbWVfb3Zlcl9tYXhfc3Ry
ZWFtX2RhdGEoc2VsZik6Ci0gICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xp
ZW50LCBzZXJ2ZXIpOgotICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgU1RSRUFNIGZyYW1l
Ci0gICAgICAgICAgICBmcmFtZV90eXBlID0gUXVpY0ZyYW1lVHlwZS5TVFJFQU1fQkFTRSB8IDQK
LSAgICAgICAgICAgIHN0cmVhbV9pZCA9IDEKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRS
YWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikgYXMgY206Ci0gICAgICAgICAgICAgICAgY2xpZW50
Ll9oYW5kbGVfc3RyZWFtX2ZyYW1lKAotICAgICAgICAgICAgICAgICAgICBjbGllbnRfcmVjZWl2
ZV9jb250ZXh0KGNsaWVudCksCi0gICAgICAgICAgICAgICAgICAgIGZyYW1lX3R5cGUsCi0gICAg
ICAgICAgICAgICAgICAgIEJ1ZmZlcigKLSAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ZW5j
b2RlX3VpbnRfdmFyKHN0cmVhbV9pZCkKLSAgICAgICAgICAgICAgICAgICAgICAgICsgZW5jb2Rl
X3VpbnRfdmFyKGNsaWVudC5fbG9jYWxfbWF4X3N0cmVhbV9kYXRhX2JpZGlfcmVtb3RlICsgMSkK
LSAgICAgICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJvcl9jb2RlLCBRdWljRXJyb3JDb2RlLkZM
T1dfQ09OVFJPTF9FUlJPUikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0
aW9uLmZyYW1lX3R5cGUsIGZyYW1lX3R5cGUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGNtLmV4Y2VwdGlvbi5yZWFzb25fcGhyYXNlLCAiT3ZlciBzdHJlYW0gZGF0YSBsaW1pdCIpCi0K
LSAgICBkZWYgdGVzdF9oYW5kbGVfc3RyZWFtX2ZyYW1lX292ZXJfbWF4X3N0cmVhbXMoc2VsZik6
Ci0gICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgot
ICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgU1RSRUFNIGZyYW1lCi0gICAgICAgICAgICB3
aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNDb25uZWN0aW9uRXJyb3IpIGFzIGNtOgotICAgICAg
ICAgICAgICAgIGNsaWVudC5faGFuZGxlX3N0cmVhbV9mcmFtZSgKLSAgICAgICAgICAgICAgICAg
ICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLAotICAgICAgICAgICAgICAgICAgICBR
dWljRnJhbWVUeXBlLlNUUkVBTV9CQVNFLAotICAgICAgICAgICAgICAgICAgICBCdWZmZXIoCi0g
ICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWVuY29kZV91aW50X3ZhcihjbGllbnQuX2xvY2Fs
X21heF9zdHJlYW1fZGF0YV91bmkgKiA0ICsgMykKLSAgICAgICAgICAgICAgICAgICAgKSwKLSAg
ICAgICAgICAgICAgICApCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlv
bi5lcnJvcl9jb2RlLCBRdWljRXJyb3JDb2RlLlNUUkVBTV9MSU1JVF9FUlJPUikKLSAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmZyYW1lX3R5cGUsIFF1aWNGcmFtZVR5
cGUuU1RSRUFNX0JBU0UpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlv
bi5yZWFzb25fcGhyYXNlLCAiVG9vIG1hbnkgc3RyZWFtcyBvcGVuIikKLQotICAgIGRlZiB0ZXN0
X2hhbmRsZV9zdHJlYW1fZnJhbWVfc2VuZF9vbmx5KHNlbGYpOgotICAgICAgICB3aXRoIGNsaWVu
dF9hbmRfc2VydmVyKCkgYXMgKGNsaWVudCwgc2VydmVyKToKLSAgICAgICAgICAgICMgY2xpZW50
IGNyZWF0ZXMgdW5pZGlyZWN0aW9uYWwgc3RyZWFtIDIKLSAgICAgICAgICAgIGNsaWVudC5zZW5k
X3N0cmVhbV9kYXRhKHN0cmVhbV9pZD0yLCBkYXRhPWIiaGVsbG8iKQotCi0gICAgICAgICAgICAj
IGNsaWVudCByZWNlaXZlcyBTVFJFQU0gZnJhbWUKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3Nl
cnRSYWlzZXMoUXVpY0Nvbm5lY3Rpb25FcnJvcikgYXMgY206Ci0gICAgICAgICAgICAgICAgY2xp
ZW50Ll9oYW5kbGVfc3RyZWFtX2ZyYW1lKAotICAgICAgICAgICAgICAgICAgICBjbGllbnRfcmVj
ZWl2ZV9jb250ZXh0KGNsaWVudCksCi0gICAgICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUu
U1RSRUFNX0JBU0UsCi0gICAgICAgICAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWIiXHgwMiIpLAot
ICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0
aW9uLmVycm9yX2NvZGUsIFF1aWNFcnJvckNvZGUuU1RSRUFNX1NUQVRFX0VSUk9SKQotICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZnJhbWVfdHlwZSwgUXVpY0ZyYW1l
VHlwZS5TVFJFQU1fQkFTRSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0
aW9uLnJlYXNvbl9waHJhc2UsICJTdHJlYW0gaXMgc2VuZC1vbmx5IikKLQotICAgIGRlZiB0ZXN0
X2hhbmRsZV9zdHJlYW1fZnJhbWVfd3JvbmdfaW5pdGlhdG9yKHNlbGYpOgotICAgICAgICB3aXRo
IGNsaWVudF9hbmRfc2VydmVyKCkgYXMgKGNsaWVudCwgc2VydmVyKToKLSAgICAgICAgICAgICMg
Y2xpZW50IHJlY2VpdmVzIFNUUkVBTSBmcmFtZQotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2Vy
dFJhaXNlcyhRdWljQ29ubmVjdGlvbkVycm9yKSBhcyBjbToKLSAgICAgICAgICAgICAgICBjbGll
bnQuX2hhbmRsZV9zdHJlYW1fZnJhbWUoCi0gICAgICAgICAgICAgICAgICAgIGNsaWVudF9yZWNl
aXZlX2NvbnRleHQoY2xpZW50KSwKLSAgICAgICAgICAgICAgICAgICAgUXVpY0ZyYW1lVHlwZS5T
VFJFQU1fQkFTRSwKLSAgICAgICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9YiJceDAwIiksCi0g
ICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRp
b24uZXJyb3JfY29kZSwgUXVpY0Vycm9yQ29kZS5TVFJFQU1fU1RBVEVfRVJST1IpCi0gICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCBRdWljRnJhbWVU
eXBlLlNUUkVBTV9CQVNFKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRp
b24ucmVhc29uX3BocmFzZSwgIldyb25nIHN0cmVhbSBpbml0aWF0b3IiKQotCi0gICAgZGVmIHRl
c3RfaGFuZGxlX3N0cmVhbV9kYXRhX2Jsb2NrZWRfZnJhbWUoc2VsZik6Ci0gICAgICAgIHdpdGgg
Y2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgotICAgICAgICAgICAgIyBj
bGllbnQgY3JlYXRlcyBiaWRpcmVjdGlvbmFsIHN0cmVhbSAwCi0gICAgICAgICAgICBjbGllbnQu
c2VuZF9zdHJlYW1fZGF0YShzdHJlYW1faWQ9MCwgZGF0YT1iImhlbGxvIikKLQotICAgICAgICAg
ICAgIyBjbGllbnQgcmVjZWl2ZXMgU1RSRUFNX0RBVEFfQkxPQ0tFRAotICAgICAgICAgICAgY2xp
ZW50Ll9oYW5kbGVfc3RyZWFtX2RhdGFfYmxvY2tlZF9mcmFtZSgKLSAgICAgICAgICAgICAgICBj
bGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCi0gICAgICAgICAgICAgICAgUXVpY0ZyYW1l
VHlwZS5TVFJFQU1fREFUQV9CTE9DS0VELAotICAgICAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWIi
XHgwMFx4MDEiKSwKLSAgICAgICAgICAgICkKLQotICAgIGRlZiB0ZXN0X2hhbmRsZV9zdHJlYW1f
ZGF0YV9ibG9ja2VkX2ZyYW1lX3NlbmRfb25seShzZWxmKToKLSAgICAgICAgd2l0aCBjbGllbnRf
YW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6Ci0gICAgICAgICAgICAjIGNsaWVudCBj
cmVhdGVzIHVuaWRpcmVjdGlvbmFsIHN0cmVhbSAyCi0gICAgICAgICAgICBjbGllbnQuc2VuZF9z
dHJlYW1fZGF0YShzdHJlYW1faWQ9MiwgZGF0YT1iImhlbGxvIikKLQotICAgICAgICAgICAgIyBj
bGllbnQgcmVjZWl2ZXMgU1RSRUFNX0RBVEFfQkxPQ0tFRAotICAgICAgICAgICAgd2l0aCBzZWxm
LmFzc2VydFJhaXNlcyhRdWljQ29ubmVjdGlvbkVycm9yKSBhcyBjbToKLSAgICAgICAgICAgICAg
ICBjbGllbnQuX2hhbmRsZV9zdHJlYW1fZGF0YV9ibG9ja2VkX2ZyYW1lKAotICAgICAgICAgICAg
ICAgICAgICBjbGllbnRfcmVjZWl2ZV9jb250ZXh0KGNsaWVudCksCi0gICAgICAgICAgICAgICAg
ICAgIFF1aWNGcmFtZVR5cGUuU1RSRUFNX0RBVEFfQkxPQ0tFRCwKLSAgICAgICAgICAgICAgICAg
ICAgQnVmZmVyKGRhdGE9YiJceDAyXHgwMSIpLAotICAgICAgICAgICAgICAgICkKLSAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm9yX2NvZGUsIFF1aWNFcnJvckNv
ZGUuU1RSRUFNX1NUQVRFX0VSUk9SKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5l
eGNlcHRpb24uZnJhbWVfdHlwZSwgUXVpY0ZyYW1lVHlwZS5TVFJFQU1fREFUQV9CTE9DS0VEKQot
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ucmVhc29uX3BocmFzZSwg
IlN0cmVhbSBpcyBzZW5kLW9ubHkiKQotCi0gICAgZGVmIHRlc3RfaGFuZGxlX3N0cmVhbXNfYmxv
Y2tlZF91bmlfZnJhbWUoc2VsZik6Ci0gICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBh
cyAoY2xpZW50LCBzZXJ2ZXIpOgotICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgU1RSRUFN
U19CTE9DS0VEX1VOSTogMAotICAgICAgICAgICAgY2xpZW50Ll9oYW5kbGVfc3RyZWFtc19ibG9j
a2VkX2ZyYW1lKAotICAgICAgICAgICAgICAgIGNsaWVudF9yZWNlaXZlX2NvbnRleHQoY2xpZW50
KSwKLSAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBlLlNUUkVBTVNfQkxPQ0tFRF9VTkksCi0g
ICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9YiJceDAwIiksCi0gICAgICAgICAgICApCi0KLSAg
ICBkZWYgdGVzdF9wYXlsb2FkX3JlY2VpdmVkX3BhZGRpbmdfb25seShzZWxmKToKLSAgICAgICAg
d2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6Ci0gICAgICAgICAg
ICAjIGNsaWVudCByZWNlaXZlcyBwYWRkaW5nIG9ubHkKLSAgICAgICAgICAgIGlzX2Fja19lbGlj
aXRpbmcsIGlzX3Byb2JpbmcgPSBjbGllbnQuX3BheWxvYWRfcmVjZWl2ZWQoCi0gICAgICAgICAg
ICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLCBiIlx4MDAiICogMTIwMAotICAg
ICAgICAgICAgKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc19hY2tfZWxpY2l0aW5n
KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX3Byb2JpbmcpCi0KLSAgICBkZWYgdGVz
dF9wYXlsb2FkX3JlY2VpdmVkX3Vua25vd25fZnJhbWUoc2VsZik6Ci0gICAgICAgIHdpdGggY2xp
ZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgotICAgICAgICAgICAgIyBjbGll
bnQgcmVjZWl2ZXMgdW5rbm93biBmcmFtZQotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJh
aXNlcyhRdWljQ29ubmVjdGlvbkVycm9yKSBhcyBjbToKLSAgICAgICAgICAgICAgICBjbGllbnQu
X3BheWxvYWRfcmVjZWl2ZWQoY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLCBiIlx4MWYi
KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJyb3JfY29kZSwg
UXVpY0Vycm9yQ29kZS5QUk9UT0NPTF9WSU9MQVRJT04pCi0gICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCAweDFGKQotICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChjbS5leGNlcHRpb24ucmVhc29uX3BocmFzZSwgIlVua25vd24gZnJhbWUgdHlw
ZSIpCi0KLSAgICBkZWYgdGVzdF9wYXlsb2FkX3JlY2VpdmVkX3VuZXhwZWN0ZWRfZnJhbWUoc2Vs
Zik6Ci0gICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIp
OgotICAgICAgICAgICAgIyBjbGllbnQgcmVjZWl2ZXMgQ1JZUFRPIGZyYW1lIGluIDAtUlRUCi0g
ICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNDb25uZWN0aW9uRXJyb3IpIGFz
IGNtOgotICAgICAgICAgICAgICAgIGNsaWVudC5fcGF5bG9hZF9yZWNlaXZlZCgKLSAgICAgICAg
ICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQsIGVwb2NoPXRscy5FcG9j
aC5aRVJPX1JUVCksIGIiXHgwNiIKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJvcl9jb2RlLCBRdWljRXJyb3JDb2RlLlBST1RP
Q09MX1ZJT0xBVElPTikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9u
LmZyYW1lX3R5cGUsIFF1aWNGcmFtZVR5cGUuQ1JZUFRPKQotICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChjbS5leGNlcHRpb24ucmVhc29uX3BocmFzZSwgIlVuZXhwZWN0ZWQgZnJhbWUgdHlw
ZSIpCi0KLSAgICBkZWYgdGVzdF9wYXlsb2FkX3JlY2VpdmVkX21hbGZvcm1lZF9mcmFtZShzZWxm
KToKLSAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6
Ci0gICAgICAgICAgICAjIGNsaWVudCByZWNlaXZlcyBtYWxmb3JtZWQgVFJBTlNQT1JUX0NMT1NF
IGZyYW1lCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNDb25uZWN0aW9u
RXJyb3IpIGFzIGNtOgotICAgICAgICAgICAgICAgIGNsaWVudC5fcGF5bG9hZF9yZWNlaXZlZCgK
LSAgICAgICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGllbnQpLCBiIlx4
MWNceDAwXHgwMSIKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKAotICAgICAgICAgICAgICAgIGNtLmV4Y2VwdGlvbi5lcnJvcl9jb2RlLCBRdWljRXJyb3JD
b2RlLkZSQU1FX0VOQ09ESU5HX0VSUk9SCi0gICAgICAgICAgICApCi0gICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5mcmFtZV90eXBlLCAweDFDKQotICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ucmVhc29uX3BocmFzZSwgIkZhaWxlZCB0byBw
YXJzZSBmcmFtZSIpCi0KLSAgICBkZWYgdGVzdF9zZW5kX21heF9kYXRhX2Jsb2NrZWRfYnlfY2Mo
c2VsZik6Ci0gICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2
ZXIpOgotICAgICAgICAgICAgIyBjaGVjayBjb25nZXN0aW9uIGNvbnRyb2wKLSAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50Ll9sb3NzLmJ5dGVzX2luX2ZsaWdodCwgMCkKLSAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50Ll9sb3NzLmNvbmdlc3Rpb25fd2luZG93LCAx
NDMwMykKLQotICAgICAgICAgICAgIyBhcnRpZmljaWFsbHkgcmFpc2UgcmVjZWl2ZWQgZGF0YSBj
b3VudGVyCi0gICAgICAgICAgICBjbGllbnQuX2xvY2FsX21heF9kYXRhX3VzZWQgPSBjbGllbnQu
X2xvY2FsX21heF9kYXRhCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5fcmVt
b3RlX21heF9kYXRhLCAxMDQ4NTc2KQotCi0gICAgICAgICAgICAjIGFydGlmaWNpYWxseSByYWlz
ZSBieXRlcyBpbiBmbGlnaHQKLSAgICAgICAgICAgIGNsaWVudC5fbG9zcy5fY2MuYnl0ZXNfaW5f
ZmxpZ2h0ID0gMTQzMDMKLQotICAgICAgICAgICAgIyBNQVhfREFUQSBpcyBub3Qgc2VudCBkdWUg
dG8gY29uZ2VzdGlvbiBjb250cm9sCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRyb3Ao
Y2xpZW50KSwgMCkKLQotICAgIGRlZiB0ZXN0X3NlbmRfbWF4X2RhdGFfcmV0cmFuc21pdChzZWxm
KToKLSAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6
Ci0gICAgICAgICAgICAjIGFydGlmaWNpYWxseSByYWlzZSByZWNlaXZlZCBkYXRhIGNvdW50ZXIK
LSAgICAgICAgICAgIGNsaWVudC5fbG9jYWxfbWF4X2RhdGFfdXNlZCA9IGNsaWVudC5fbG9jYWxf
bWF4X2RhdGEKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLl9yZW1vdGVfbWF4
X2RhdGEsIDEwNDg1NzYpCi0KLSAgICAgICAgICAgICMgTUFYX0RBVEEgaXMgc2VudCBhbmQgbG9z
dAotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkcm9wKGNsaWVudCksIDEpCi0gICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5fbG9jYWxfbWF4X2RhdGFfc2VudCwgMjA5NzE1
MikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLl9yZW1vdGVfbWF4X2RhdGEs
IDEwNDg1NzYpCi0KLSAgICAgICAgICAgICMgTUFYX0RBVEEgaXMgcmV0cmFuc21pdHRlZCBhbmQg
YWNrZWQKLSAgICAgICAgICAgIGNsaWVudC5fb25fbWF4X2RhdGFfZGVsaXZlcnkoUXVpY0RlbGl2
ZXJ5U3RhdGUuTE9TVCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50Ll9sb2Nh
bF9tYXhfZGF0YV9zZW50LCAwKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3VuZHRy
aXAoY2xpZW50LCBzZXJ2ZXIpLCAoMSwgMSkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHNlcnZlci5fcmVtb3RlX21heF9kYXRhLCAyMDk3MTUyKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9t
YXhfc3RyZWFtX2RhdGFfcmV0cmFuc21pdChzZWxmKToKLSAgICAgICAgd2l0aCBjbGllbnRfYW5k
X3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6Ci0gICAgICAgICAgICAjIGNsaWVudCBjcmVh
dGVzIGJpZGlyZWN0aW9uYWwgc3RyZWFtIDAKLSAgICAgICAgICAgIHN0cmVhbSA9IGNsaWVudC5f
Y3JlYXRlX3N0cmVhbShzdHJlYW1faWQ9MCkKLSAgICAgICAgICAgIGNsaWVudC5zZW5kX3N0cmVh
bV9kYXRhKDAsIGIiaGVsbG8iKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0u
bWF4X3N0cmVhbV9kYXRhX2xvY2FsLCAxMDQ4NTc2KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsX3NlbnQsIDEwNDg1NzYpCi0gICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHJvdW5kdHJpcChjbGllbnQsIHNlcnZlciksICgxLCAxKSkK
LQotICAgICAgICAgICAgIyBzZXJ2ZXIgc2VuZHMgZGF0YSwganVzdCBiZWZvcmUgcmFpc2luZyBN
QVhfU1RSRUFNX0RBVEEKLSAgICAgICAgICAgIHNlcnZlci5zZW5kX3N0cmVhbV9kYXRhKDAsIGIi
WiIgKiA1MjQyODgpICAjIDEwNDg1NzYgLy8gMgotICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2Uo
MTApOgotICAgICAgICAgICAgICAgIHJvdW5kdHJpcChzZXJ2ZXIsIGNsaWVudCkKLSAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm1heF9zdHJlYW1fZGF0YV9sb2NhbCwgMTA0ODU3
NikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm1heF9zdHJlYW1fZGF0YV9s
b2NhbF9zZW50LCAxMDQ4NTc2KQotCi0gICAgICAgICAgICAjIHNlcnZlciBzZW5kcyBvbmUgbW9y
ZSBieXRlCi0gICAgICAgICAgICBzZXJ2ZXIuc2VuZF9zdHJlYW1fZGF0YSgwLCBiIloiKQotICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2ZlcihzZXJ2ZXIsIGNsaWVudCksIDEpCi0K
LSAgICAgICAgICAgICMgTUFYX1NUUkVBTV9EQVRBIGlzIHNlbnQgYW5kIGxvc3QKLSAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHJvcChjbGllbnQpLCAxKQotICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsLCAyMDk3MTUyKQotICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubWF4X3N0cmVhbV9kYXRhX2xvY2FsX3NlbnQs
IDIwOTcxNTIpCi0gICAgICAgICAgICBjbGllbnQuX29uX21heF9zdHJlYW1fZGF0YV9kZWxpdmVy
eShRdWljRGVsaXZlcnlTdGF0ZS5MT1NULCBzdHJlYW0pCi0gICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHN0cmVhbS5tYXhfc3RyZWFtX2RhdGFfbG9jYWwsIDIwOTcxNTIpCi0gICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5tYXhfc3RyZWFtX2RhdGFfbG9jYWxfc2VudCwgMCkK
LQotICAgICAgICAgICAgIyBNQVhfREFUQSBpcyByZXRyYW5zbWl0dGVkIGFuZCBhY2tlZAotICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3VuZHRyaXAoY2xpZW50LCBzZXJ2ZXIpLCAoMSwg
MSkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5tYXhfc3RyZWFtX2RhdGFf
bG9jYWwsIDIwOTcxNTIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5tYXhf
c3RyZWFtX2RhdGFfbG9jYWxfc2VudCwgMjA5NzE1MikKLQotICAgIGRlZiB0ZXN0X3NlbmRfcGlu
ZyhzZWxmKToKLSAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNl
cnZlcik6Ci0gICAgICAgICAgICBjb25zdW1lX2V2ZW50cyhjbGllbnQpCi0KLSAgICAgICAgICAg
ICMgY2xpZW50IHNlbmRzIHBpbmcsIHNlcnZlciBBQ0tzIGl0Ci0gICAgICAgICAgICBjbGllbnQu
c2VuZF9waW5nKHVpZD0xMjM0NSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocm91bmR0
cmlwKGNsaWVudCwgc2VydmVyKSwgKDEsIDEpKQotCi0gICAgICAgICAgICAjIGNoZWNrIGV2ZW50
Ci0gICAgICAgICAgICBldmVudCA9IGNsaWVudC5uZXh0X2V2ZW50KCkKLSAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwodHlwZShldmVudCksIGV2ZW50cy5QaW5nQWNrbm93bGVkZ2VkKQotICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC51aWQsIDEyMzQ1KQotCi0gICAgZGVmIHRl
c3Rfc2VuZF9waW5nX3JldHJhbnNtaXQoc2VsZik6Ci0gICAgICAgIHdpdGggY2xpZW50X2FuZF9z
ZXJ2ZXIoKSBhcyAoY2xpZW50LCBzZXJ2ZXIpOgotICAgICAgICAgICAgY29uc3VtZV9ldmVudHMo
Y2xpZW50KQotCi0gICAgICAgICAgICAjIGNsaWVudCBzZW5kcyBhbm90aGVyIHBpbmcsIFBJTkcg
aXMgbG9zdAotICAgICAgICAgICAgY2xpZW50LnNlbmRfcGluZyh1aWQ9MTIzNDUpCi0gICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGRyb3AoY2xpZW50KSwgMSkKLQotICAgICAgICAgICAgIyBQ
SU5HIGlzIHJldHJhbnNtaXR0ZWQgYW5kIGFja2VkCi0gICAgICAgICAgICBjbGllbnQuX29uX3Bp
bmdfZGVsaXZlcnkoUXVpY0RlbGl2ZXJ5U3RhdGUuTE9TVCwgKDEyMzQ1LCkpCi0gICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHJvdW5kdHJpcChjbGllbnQsIHNlcnZlciksICgxLCAxKSkKLQot
ICAgICAgICAgICAgIyBjaGVjayBldmVudAotICAgICAgICAgICAgZXZlbnQgPSBjbGllbnQubmV4
dF9ldmVudCgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZXZlbnQpLCBldmVu
dHMuUGluZ0Fja25vd2xlZGdlZCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnQu
dWlkLCAxMjM0NSkKLQotICAgIGRlZiB0ZXN0X3NlbmRfc3RyZWFtX2RhdGFfb3Zlcl9tYXhfc3Ry
ZWFtc19iaWRpKHNlbGYpOgotICAgICAgICB3aXRoIGNsaWVudF9hbmRfc2VydmVyKCkgYXMgKGNs
aWVudCwgc2VydmVyKToKLSAgICAgICAgICAgICMgY3JlYXRlIHN0cmVhbXMKLSAgICAgICAgICAg
IGZvciBpIGluIHJhbmdlKDEyOCk6Ci0gICAgICAgICAgICAgICAgc3RyZWFtX2lkID0gaSAqIDQK
LSAgICAgICAgICAgICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YShzdHJlYW1faWQsIGIiIikK
LSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNsaWVudC5fc3RyZWFtc1tzdHJlYW1f
aWRdLmlzX2Jsb2NrZWQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjbGllbnQu
X3N0cmVhbXNfYmxvY2tlZF9iaWRpKSwgMCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGVuKGNsaWVudC5fc3RyZWFtc19ibG9ja2VkX3VuaSksIDApCi0gICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHJvdW5kdHJpcChjbGllbnQsIHNlcnZlciksICgwLCAwKSkKLQotICAgICAgICAg
ICAgIyBjcmVhdGUgb25lIHRvbyBtYW55IC0+IFNUUkVBTVNfQkxPQ0tFRAotICAgICAgICAgICAg
c3RyZWFtX2lkID0gMTI4ICogNAotICAgICAgICAgICAgY2xpZW50LnNlbmRfc3RyZWFtX2RhdGEo
c3RyZWFtX2lkLCBiIiIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2xpZW50Ll9zdHJl
YW1zW3N0cmVhbV9pZF0uaXNfYmxvY2tlZCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bGVuKGNsaWVudC5fc3RyZWFtc19ibG9ja2VkX2JpZGkpLCAxKQotICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChsZW4oY2xpZW50Ll9zdHJlYW1zX2Jsb2NrZWRfdW5pKSwgMCkKLSAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocm91bmR0cmlwKGNsaWVudCwgc2VydmVyKSwgKDEsIDEpKQot
Ci0gICAgICAgICAgICAjIHBlZXIgcmFpc2VzIG1heCBzdHJlYW1zCi0gICAgICAgICAgICBjbGll
bnQuX2hhbmRsZV9tYXhfc3RyZWFtc19iaWRpX2ZyYW1lKAotICAgICAgICAgICAgICAgIGNsaWVu
dF9yZWNlaXZlX2NvbnRleHQoY2xpZW50KSwKLSAgICAgICAgICAgICAgICBRdWljRnJhbWVUeXBl
Lk1BWF9TVFJFQU1TX0JJREksCi0gICAgICAgICAgICAgICAgQnVmZmVyKGRhdGE9ZW5jb2RlX3Vp
bnRfdmFyKDEyOSkpLAotICAgICAgICAgICAgKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxz
ZShjbGllbnQuX3N0cmVhbXNbc3RyZWFtX2lkXS5pc19ibG9ja2VkKQotCi0gICAgZGVmIHRlc3Rf
c2VuZF9zdHJlYW1fZGF0YV9vdmVyX21heF9zdHJlYW1zX3VuaShzZWxmKToKLSAgICAgICAgd2l0
aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZlcik6Ci0gICAgICAgICAgICAj
IGNyZWF0ZSBzdHJlYW1zCi0gICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgxMjgpOgotICAgICAg
ICAgICAgICAgIHN0cmVhbV9pZCA9IGkgKiA0ICsgMgotICAgICAgICAgICAgICAgIGNsaWVudC5z
ZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZCwgYiIiKQotICAgICAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RmFsc2UoY2xpZW50Ll9zdHJlYW1zW3N0cmVhbV9pZF0uaXNfYmxvY2tlZCkKLSAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNsaWVudC5fc3RyZWFtc19ibG9ja2VkX2JpZGkpLCAw
KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY2xpZW50Ll9zdHJlYW1zX2Jsb2Nr
ZWRfdW5pKSwgMCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocm91bmR0cmlwKGNsaWVu
dCwgc2VydmVyKSwgKDAsIDApKQotCi0gICAgICAgICAgICAjIGNyZWF0ZSBvbmUgdG9vIG1hbnkg
LT4gU1RSRUFNU19CTE9DS0VECi0gICAgICAgICAgICBzdHJlYW1faWQgPSAxMjggKiA0ICsgMgot
ICAgICAgICAgICAgY2xpZW50LnNlbmRfc3RyZWFtX2RhdGEoc3RyZWFtX2lkLCBiIiIpCi0gICAg
ICAgICAgICBzZWxmLmFzc2VydFRydWUoY2xpZW50Ll9zdHJlYW1zW3N0cmVhbV9pZF0uaXNfYmxv
Y2tlZCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNsaWVudC5fc3RyZWFtc19i
bG9ja2VkX2JpZGkpLCAwKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY2xpZW50
Ll9zdHJlYW1zX2Jsb2NrZWRfdW5pKSwgMSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cm91bmR0cmlwKGNsaWVudCwgc2VydmVyKSwgKDEsIDEpKQotCi0gICAgICAgICAgICAjIHBlZXIg
cmFpc2VzIG1heCBzdHJlYW1zCi0gICAgICAgICAgICBjbGllbnQuX2hhbmRsZV9tYXhfc3RyZWFt
c191bmlfZnJhbWUoCi0gICAgICAgICAgICAgICAgY2xpZW50X3JlY2VpdmVfY29udGV4dChjbGll
bnQpLAotICAgICAgICAgICAgICAgIFF1aWNGcmFtZVR5cGUuTUFYX1NUUkVBTVNfVU5JLAotICAg
ICAgICAgICAgICAgIEJ1ZmZlcihkYXRhPWVuY29kZV91aW50X3ZhcigxMjkpKSwKLSAgICAgICAg
ICAgICkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY2xpZW50Ll9zdHJlYW1zW3N0cmVh
bV9pZF0uaXNfYmxvY2tlZCkKLQotICAgIGRlZiB0ZXN0X3NlbmRfc3RyZWFtX2RhdGFfcGVlcl9p
bml0aWF0ZWQoc2VsZik6Ci0gICAgICAgIHdpdGggY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAoY2xp
ZW50LCBzZXJ2ZXIpOgotICAgICAgICAgICAgIyBzZXJ2ZXIgY3JlYXRlcyBiaWRpcmVjdGlvbmFs
IHN0cmVhbQotICAgICAgICAgICAgc2VydmVyLnNlbmRfc3RyZWFtX2RhdGEoMSwgYiJoZWxsbyIp
Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJvdW5kdHJpcChzZXJ2ZXIsIGNsaWVudCks
ICgxLCAxKSkKLQotICAgICAgICAgICAgIyBzZXJ2ZXIgY3JlYXRlcyB1bmlkaXJlY3Rpb25hbCBz
dHJlYW0KLSAgICAgICAgICAgIHNlcnZlci5zZW5kX3N0cmVhbV9kYXRhKDMsIGIiaGVsbG8iKQot
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3VuZHRyaXAoc2VydmVyLCBjbGllbnQpLCAo
MSwgMSkpCi0KLSAgICAgICAgICAgICMgY2xpZW50IGNyZWF0ZXMgYmlkaXJlY3Rpb25hbCBzdHJl
YW0KLSAgICAgICAgICAgIGNsaWVudC5zZW5kX3N0cmVhbV9kYXRhKDAsIGIiaGVsbG8iKQotICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3VuZHRyaXAoY2xpZW50LCBzZXJ2ZXIpLCAoMSwg
MSkpCi0KLSAgICAgICAgICAgICMgY2xpZW50IHNlbmRzIGRhdGEgb24gc2VydmVyLWluaXRpYXRl
ZCBiaWRpcmVjdGlvbmFsIHN0cmVhbQotICAgICAgICAgICAgY2xpZW50LnNlbmRfc3RyZWFtX2Rh
dGEoMSwgYiJoZWxsbyIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJvdW5kdHJpcChj
bGllbnQsIHNlcnZlciksICgxLCAxKSkKLQotICAgICAgICAgICAgIyBjbGllbnQgY3JlYXRlIHVu
aWRpcmVjdGlvbmFsIHN0cmVhbQotICAgICAgICAgICAgY2xpZW50LnNlbmRfc3RyZWFtX2RhdGEo
MiwgYiJoZWxsbyIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJvdW5kdHJpcChjbGll
bnQsIHNlcnZlciksICgxLCAxKSkKLQotICAgICAgICAgICAgIyBjbGllbnQgdHJpZXMgdG8gc2Vu
ZCBkYXRhIG9uIHNlcnZlci1pbml0aWFsIHVuaWRpcmVjdGlvbmFsIHN0cmVhbQotICAgICAgICAg
ICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBjbToKLSAgICAgICAgICAg
ICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YSgzLCBiImhlbGxvIikKLSAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICAgICAgc3RyKGNtLmV4Y2VwdGlvbiksCi0gICAg
ICAgICAgICAgICAgIkNhbm5vdCBzZW5kIGRhdGEgb24gcGVlci1pbml0aWF0ZWQgdW5pZGlyZWN0
aW9uYWwgc3RyZWFtIiwKLSAgICAgICAgICAgICkKLQotICAgICAgICAgICAgIyBjbGllbnQgdHJp
ZXMgdG8gc2VuZCBkYXRhIG9uIHVua25vd24gc2VydmVyLWluaXRpYXRlZCBiaWRpcmVjdGlvbmFs
IHN0cmVhbQotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKSBh
cyBjbToKLSAgICAgICAgICAgICAgICBjbGllbnQuc2VuZF9zdHJlYW1fZGF0YSg1LCBiImhlbGxv
IikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICAgICAgc3RyKGNt
LmV4Y2VwdGlvbiksICJDYW5ub3Qgc2VuZCBkYXRhIG9uIHVua25vd24gcGVlci1pbml0aWF0ZWQg
c3RyZWFtIgotICAgICAgICAgICAgKQotCi0gICAgZGVmIHRlc3Rfc3RyZWFtX2RpcmVjdGlvbihz
ZWxmKToKLSAgICAgICAgd2l0aCBjbGllbnRfYW5kX3NlcnZlcigpIGFzIChjbGllbnQsIHNlcnZl
cik6Ci0gICAgICAgICAgICBmb3Igb2ZmIGluIFswLCA0LCA4XToKLSAgICAgICAgICAgICAgICAj
IENsaWVudC1Jbml0aWF0ZWQsIEJpZGlyZWN0aW9uYWwKLSAgICAgICAgICAgICAgICBzZWxmLmFz
c2VydFRydWUoY2xpZW50Ll9zdHJlYW1fY2FuX3JlY2VpdmUob2ZmKSkKLSAgICAgICAgICAgICAg
ICBzZWxmLmFzc2VydFRydWUoY2xpZW50Ll9zdHJlYW1fY2FuX3NlbmQob2ZmKSkKLSAgICAgICAg
ICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VydmVyLl9zdHJlYW1fY2FuX3JlY2VpdmUob2ZmKSkK
LSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VydmVyLl9zdHJlYW1fY2FuX3NlbmQo
b2ZmKSkKLQotICAgICAgICAgICAgICAgICMgU2VydmVyLUluaXRpYXRlZCwgQmlkaXJlY3Rpb25h
bAotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjbGllbnQuX3N0cmVhbV9jYW5fcmVj
ZWl2ZShvZmYgKyAxKSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2xpZW50Ll9z
dHJlYW1fY2FuX3NlbmQob2ZmICsgMSkpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KHNlcnZlci5fc3RyZWFtX2Nhbl9yZWNlaXZlKG9mZiArIDEpKQotICAgICAgICAgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShzZXJ2ZXIuX3N0cmVhbV9jYW5fc2VuZChvZmYgKyAxKSkKLQotICAgICAg
ICAgICAgICAgICMgQ2xpZW50LUluaXRpYXRlZCwgVW5pZGlyZWN0aW9uYWwKLSAgICAgICAgICAg
ICAgICBzZWxmLmFzc2VydEZhbHNlKGNsaWVudC5fc3RyZWFtX2Nhbl9yZWNlaXZlKG9mZiArIDIp
KQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjbGllbnQuX3N0cmVhbV9jYW5fc2Vu
ZChvZmYgKyAyKSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VydmVyLl9zdHJl
YW1fY2FuX3JlY2VpdmUob2ZmICsgMikpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxz
ZShzZXJ2ZXIuX3N0cmVhbV9jYW5fc2VuZChvZmYgKyAyKSkKLQotICAgICAgICAgICAgICAgICMg
U2VydmVyLUluaXRpYXRlZCwgVW5pZGlyZWN0aW9uYWwKLSAgICAgICAgICAgICAgICBzZWxmLmFz
c2VydFRydWUoY2xpZW50Ll9zdHJlYW1fY2FuX3JlY2VpdmUob2ZmICsgMykpCi0gICAgICAgICAg
ICAgICAgc2VsZi5hc3NlcnRGYWxzZShjbGllbnQuX3N0cmVhbV9jYW5fc2VuZChvZmYgKyAzKSkK
LSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlcnZlci5fc3RyZWFtX2Nhbl9yZWNl
aXZlKG9mZiArIDMpKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXJ2ZXIuX3N0
cmVhbV9jYW5fc2VuZChvZmYgKyAzKSkKLQotICAgIGRlZiB0ZXN0X3ZlcnNpb25fbmVnb3RpYXRp
b25fZmFpbChzZWxmKToKLSAgICAgICAgY2xpZW50ID0gY3JlYXRlX3N0YW5kYWxvbmVfY2xpZW50
KHNlbGYpCi0KLSAgICAgICAgIyBubyBjb21tb24gdmVyc2lvbiwgbm8gcmV0cnkKLSAgICAgICAg
Y2xpZW50LnJlY2VpdmVfZGF0YWdyYW0oCi0gICAgICAgICAgICBlbmNvZGVfcXVpY192ZXJzaW9u
X25lZ290aWF0aW9uKAotICAgICAgICAgICAgICAgIHNvdXJjZV9jaWQ9Y2xpZW50Ll9wZWVyX2Np
ZCwKLSAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl9jaWQ9Y2xpZW50Lmhvc3RfY2lkLAotICAg
ICAgICAgICAgICAgIHN1cHBvcnRlZF92ZXJzaW9ucz1bMHhGRjAwMDAxMV0sICAjIERSQUZUXzE2
Ci0gICAgICAgICAgICApLAotICAgICAgICAgICAgU0VSVkVSX0FERFIsCi0gICAgICAgICAgICBu
b3c9dGltZS50aW1lKCksCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkcm9w
KGNsaWVudCksIDApCi0KLSAgICAgICAgZXZlbnQgPSBjbGllbnQubmV4dF9ldmVudCgpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShldmVudCksIGV2ZW50cy5Db25uZWN0aW9uVGVybWlu
YXRlZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudC5lcnJvcl9jb2RlLCBRdWljRXJy
b3JDb2RlLklOVEVSTkFMX0VSUk9SKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50LmZy
YW1lX3R5cGUsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBl
dmVudC5yZWFzb25fcGhyYXNlLCAiQ291bGQgbm90IGZpbmQgYSBjb21tb24gcHJvdG9jb2wgdmVy
c2lvbiIKLSAgICAgICAgKQotCi0gICAgZGVmIHRlc3RfdmVyc2lvbl9uZWdvdGlhdGlvbl9vayhz
ZWxmKToKLSAgICAgICAgY2xpZW50ID0gY3JlYXRlX3N0YW5kYWxvbmVfY2xpZW50KHNlbGYpCi0K
LSAgICAgICAgIyBmb3VuZCBhIGNvbW1vbiB2ZXJzaW9uLCByZXRyeQotICAgICAgICBjbGllbnQu
cmVjZWl2ZV9kYXRhZ3JhbSgKLSAgICAgICAgICAgIGVuY29kZV9xdWljX3ZlcnNpb25fbmVnb3Rp
YXRpb24oCi0gICAgICAgICAgICAgICAgc291cmNlX2NpZD1jbGllbnQuX3BlZXJfY2lkLAotICAg
ICAgICAgICAgICAgIGRlc3RpbmF0aW9uX2NpZD1jbGllbnQuaG9zdF9jaWQsCi0gICAgICAgICAg
ICAgICAgc3VwcG9ydGVkX3ZlcnNpb25zPVtjbGllbnQuX3ZlcnNpb25dLAotICAgICAgICAgICAg
KSwKLSAgICAgICAgICAgIFNFUlZFUl9BRERSLAotICAgICAgICAgICAgbm93PXRpbWUudGltZSgp
LAotICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHJvcChjbGllbnQpLCAxKQot
Ci0KLWNsYXNzIFF1aWNOZXR3b3JrUGF0aFRlc3QoVGVzdENhc2UpOgotICAgIGRlZiB0ZXN0X2Nh
bl9zZW5kKHNlbGYpOgotICAgICAgICBwYXRoID0gUXVpY05ldHdvcmtQYXRoKCgiMS4yLjMuNCIs
IDEyMzQpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHBhdGguaXNfdmFsaWRhdGVkKQotCi0g
ICAgICAgICMgaW5pdGlhbGx5LCBjYW5ub3Qgc2VuZCBhbnkgZGF0YQotICAgICAgICBzZWxmLmFz
c2VydFRydWUocGF0aC5jYW5fc2VuZCgwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShwYXRo
LmNhbl9zZW5kKDEpKQotCi0gICAgICAgICMgcmVjZWl2ZSBzb21lIGRhdGEKLSAgICAgICAgcGF0
aC5ieXRlc19yZWNlaXZlZCArPSAxCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXRoLmNhbl9z
ZW5kKDApKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocGF0aC5jYW5fc2VuZCgxKSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKHBhdGguY2FuX3NlbmQoMikpCi0gICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShwYXRoLmNhbl9zZW5kKDMpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHBhdGguY2Fu
X3NlbmQoNCkpCi0KLSAgICAgICAgIyBzZW5kIHNvbWUgZGF0YQotICAgICAgICBwYXRoLmJ5dGVz
X3NlbnQgKz0gMwotICAgICAgICBzZWxmLmFzc2VydFRydWUocGF0aC5jYW5fc2VuZCgwKSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRGYWxzZShwYXRoLmNhbl9zZW5kKDEpKQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3Rlc3RzL3Rlc3RfY3J5cHRvLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3Rf
Y3J5cHRvLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MjRlNGRjZjVlMThlNDcw
MjQ1MGQxYmViZjQ5ZGZmYzIxM2U2MmQ1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2NyeXB0by5weQorKysgL2Rl
di9udWxsCkBAIC0xLDMxOSArMCwwIEBACi1pbXBvcnQgYmluYXNjaWkKLWZyb20gdW5pdHRlc3Qg
aW1wb3J0IFRlc3RDYXNlLCBza2lwSWYKLQotZnJvbSBhaW9xdWljLmJ1ZmZlciBpbXBvcnQgQnVm
ZmVyCi1mcm9tIGFpb3F1aWMucXVpYy5jcnlwdG8gaW1wb3J0ICgKLSAgICBJTklUSUFMX0NJUEhF
Ul9TVUlURSwKLSAgICBDcnlwdG9FcnJvciwKLSAgICBDcnlwdG9QYWlyLAotICAgIGRlcml2ZV9r
ZXlfaXZfaHAsCi0pCi1mcm9tIGFpb3F1aWMucXVpYy5wYWNrZXQgaW1wb3J0IFBBQ0tFVF9GSVhF
RF9CSVQsIFF1aWNQcm90b2NvbFZlcnNpb24KLWZyb20gYWlvcXVpYy50bHMgaW1wb3J0IENpcGhl
clN1aXRlCi0KLWZyb20gLnV0aWxzIGltcG9ydCBTS0lQX1RFU1RTCi0KLVBST1RPQ09MX1ZFUlNJ
T04gPSBRdWljUHJvdG9jb2xWZXJzaW9uLkRSQUZUXzI1Ci0KLUNIQUNIQTIwX0NMSUVOVF9QQUNL
RVRfTlVNQkVSID0gMgotQ0hBQ0hBMjBfQ0xJRU5UX1BMQUlOX0hFQURFUiA9IGJpbmFzY2lpLnVu
aGV4bGlmeSgKLSAgICAiZTFmZjAwMDAxNjA4ODBiNTdjN2I3MGQ4NTI0YjA4NTBmYzJhMjhlMjQw
ZmQ3NjQwMTcwMDAyIgotKQotQ0hBQ0hBMjBfQ0xJRU5UX1BMQUlOX1BBWUxPQUQgPSBiaW5hc2Np
aS51bmhleGxpZnkoIjAyMDEwMDAwMDAiKQotQ0hBQ0hBMjBfQ0xJRU5UX0VOQ1JZUFRFRF9QQUNL
RVQgPSBiaW5hc2NpaS51bmhleGxpZnkoCi0gICAgImU4ZmYwMDAwMTYwODgwYjU3YzdiNzBkODUy
NGIwODUwZmMyYTI4ZTI0MGZkNzY0MDE3ODMxM2IwNGJlOTg0NDkiCi0gICAgImViMTA1NjdlMjVj
ZTkzMDM4MWYyYTViN2RhMmRiOGRiIgotKQotCi1MT05HX0NMSUVOVF9QQUNLRVRfTlVNQkVSID0g
MgotTE9OR19DTElFTlRfUExBSU5fSEVBREVSID0gYmluYXNjaWkudW5oZXhsaWZ5KAotICAgICJj
M2ZmMDAwMDE3MDg4Mzk0YzhmMDNlNTE1NzA4MDAwMDQ0OWUwMDAwMDAwMiIKLSkKLUxPTkdfQ0xJ
RU5UX1BMQUlOX1BBWUxPQUQgPSBiaW5hc2NpaS51bmhleGxpZnkoCi0gICAgIjA2MDA0MGM0MDEw
MDAwYzAwMzAzNjY2MDI2MWZmOTQ3Y2VhNDljY2U2Y2ZhZDY4N2Y0NTdjZjFiMTQ1MzFiYTEiCi0g
ICAgIjQxMzFhMGU4ZjMwOWExZDBiOWM0MDAwMDA2MTMwMTEzMDMxMzAyMDEwMDAwOTEwMDAwMDAw
YjAwMDkwMDAwMDYiCi0gICAgIjczNjU3Mjc2NjU3MmZmMDEwMDAxMDAwMDBhMDAxNDAwMTIwMDFk
MDAxNzAwMTgwMDE5MDEwMDAxMDEwMTAyMDEiCi0gICAgIjAzMDEwNDAwMjMwMDAwMDAzMzAwMjYw
MDI0MDAxZDAwMjA0Y2ZkZmNkMTc4Yjc4NGJmMzI4Y2FlNzkzYjEzNmYiCi0gICAgIjJhZWRjZTAw
NWZmMTgzZDdiYjE0OTUyMDcyMzY2NDcwMzcwMDJiMDAwMzAyMDMwNDAwMGQwMDIwMDAxZTA0MDMi
Ci0gICAgIjA1MDMwNjAzMDIwMzA4MDQwODA1MDgwNjA0MDEwNTAxMDYwMTAyMDEwNDAyMDUwMjA2
MDIwMjAyMDAyZDAwMDIiCi0gICAgIjAxMDEwMDFjMDAwMjQwMDEiCi0pICsgYnl0ZXMoOTYyKQot
TE9OR19DTElFTlRfRU5DUllQVEVEX1BBQ0tFVCA9IGJpbmFzY2lpLnVuaGV4bGlmeSgKLSAgICAi
YzBmZjAwMDAxNzA4ODM5NGM4ZjAzZTUxNTcwODAwMDA0NDllM2IzNDNhYTg1MzUwNjRhNDI2OGEw
ZDlkN2IxYyIKLSAgICAiOWQyNTBhZTM1NTE2MjI3NmU5YjFlMzAxMWVmNmJiYzBhYjQ4YWQ1YmNj
MjY4MWU5NTM4NTdjYTYyYmVjZDc1MiIKLSAgICAiNGRhYWM0NzNlNjhkNzQwNWZiYmE0ZTllZTYx
NmM4NzAzOGJkYmU5MDhjMDZkOTYwNWQ5YWM0OTAzMDM1OWVlYyIKLSAgICAiYjFkMDVhMTRlMTE3
ZGI4Y2VkZTJiYjA5ZDBkYmJmZWUyNzFjYjM3NGQ4ZjEwYWJlYzgyZDBmNTlhMWRlZTI5ZiIKLSAg
ICAiZTk1NjM4ZWQ4ZGQ0MWRhMDc0ODc0Njg3OTFiNzE5YzU1YzQ2OTY4ZWIzYjU0NjgwMDM3MTAy
YTI4ZTUzZGMxZCIKLSAgICAiMTI5MDNkYjBhZjU4MjE3OTRiNDFjNGE5MzM1N2ZhNTljZTY5Y2Zl
N2Y2YmRmYTYyOWVlZjc4NjE2NDQ3ZTFkNiIKLSAgICAiMTFjNGJhZjcxYmYzM2ZlYmNiMDMxMzdj
MmM3NWQyNTMxN2QzZTEzYjY4NDM3MGY2Njg0MTFjMGYwMDMwNGI1MCIKLSAgICAiMWM4ZmQ0MjJi
ZDliOWFkODFkNjQzYjIwZGE4OWNhMDUyNWQyNGQyYjE0MjA0MWNhZTBhZjIwNTA5MmU0MzAwOCIK
LSAgICAiMGNkODU1OWVhNGM1YzZlNGZhM2Y2NjA4MmI3ZDMwM2U1MmNlMDE2MmJhYTk1ODUzMmIw
YmJjMmJjNzg1NjgxZiIKLSAgICAiY2YzNzQ4NWRmZjY1OTVlMDFlNzM5YzhhYzllZmJhMzFiOTg1
ZDVmNjU2Y2MwOTI0MzJkNzgxZGI5NTIyMTcyNCIKLSAgICAiODc2NDFjNGQzYWI4ZWNlMDFlMzli
Yzg1YjE1NDM2NjE0Nzc1YTk4YmE4ZmExMmQ0NmY5YjM1ZTJhNTVlYjcyZCIKLSAgICAiN2Y4NTE4
MWEzNjY2NjMzODdkZGMyMDU1MTgwN2UwMDc2NzNiZDdlMjZiZjliMjliNWFiMTBhMWNhODdjYmI3
YSIKLSAgICAiZDk3ZTk5ZWI2Njk1OWMyYTliYzNjYmRlNDcwN2ZmNzcyMGIxMTBmYTk1MzU0Njc0
ZTM5NTgxMmU0N2EwYWU1MyIKLSAgICAiYjQ2NGRjYjJkMWYzNDVkZjM2MGRjMjI3MjcwYzc1MDY3
NmY2NzI0ZWI0NzlmMGQyZmJiNjEyNDQyOTk5MDQ1NyIKLSAgICAiYWM2YzkxNjdmNDBhYWI3Mzk5
OThmMzhiOWVjY2IyNGZkNDdjODQxMDEzMWJmNjVhNTJhZjg0MTI3NWQ1YjNkMSIKLSAgICAiODgw
YjE5N2RmMmI1ZGVhM2U2ZGU1NmViY2UzZmZiNmU5Mjc3YTgyMDgyZjhkOTY3N2E2NzY3MDg5YjY3
MWViZCIKLSAgICAiMjQ0YzIxNGYwYmRlOTVjMmJlYjAyY2QxMTcyZDU4YmRmMzlkY2U1NmZmNjhl
YjM1YWIzOWI0OWI0ZWFjN2M4MSIKLSAgICAiNWVhNjA0NTFkNmU2YWI4MjExOTExOGRmMDJhNTg2
ODQ0YTlmZmUxNjJiYTAwNmQwNjY5ZWY1NzY2OGNhYjM4YiIKLSAgICAiNjJmNzFhMjUyM2EwODQ4
NTJjZDFkMDc5YjM2NThkYzJmM2U4Nzk0OWI1NTBiYWIzZTE3N2NmYzQ5ZWQxOTBkZiIKLSAgICAi
ZjA2MzBlNDMwNzdjMzBkZThmNmFlMDgxNTM3ZjFlODNkYTUzN2RhOTgwYWZhNjY4ZTdiN2ZiMjUz
MDFjZjc0MSIKLSAgICAiNTI0YmUzYzQ5ODg0YjQyODIxZjE3NTUyZmJkMTkzMWE4MTMwMTdiNmI2
NTkwYTQxZWExOGI2YmE0OWNkNDhhNCIKLSAgICAiNDBiZDlhMzM0NmE3NjIzZmI0YmEzNGEzZWU1
NzFlM2M3MzFmMzVhN2EzY2YyNWI1NTFhNjgwZmE2ODc2MzUwNyIKLSAgICAiYjdmZGUzYWFmMDIz
YzUwYjlkMjJkYTY4NzZiYTMzN2ViNWU5ZGQ5ZWMzZGFmOTcwMjQyYjZjNWFhYjNhYTRiMiIKLSAg
ICAiOTZhZDhiOWY2ODMyZjY4NmVmNzBmYTkzOGIzMWI0ZTVkZGQ3MzY0NDQyZDNlYTcyZTczZDY2
OGZiMDkzNzc5NiIKLSAgICAiZjQ2MjkyM2E4MWE0N2UxY2VlNzQyNmZmNmQ5MjIxMjY5YjVhNjJl
YzAzZDZlYzk0ZDEyNjA2Y2I0ODU1NjBiYSIKLSAgICAiYjU3NDgxNjAwOWU5NjUwNDI0OTM4NWJi
NjFhODE5YmUwNGY2MmMyMDY2MjE0ZDgzNjBhMjAyMmJlYjMxNjI0MCIKLSAgICAiYjZjN2Q3OGJi
ZTU2YzEzMDgyZTBjYTI3MjY2MTIxMGFiZjAyMGJmM2I1NzgzZjE0MjY0MzZjZjlmZjQxODQwNSIK
LSAgICAiOTNhNWQwNjM4ZDMyZmM1MWM1YzY1ZmYyOTFhM2E3YTUyZmQ2Nzc1ZTYyM2E0NDM5Y2Mw
OGRkMjU1ODJmZWJjOSIKLSAgICAiNDRlZjkyZDhkYmQzMjljOTFkZTNlOWM5NTgyZTQxZjE3ZjNk
MTg2ZjEwNGFkM2Y5MDk5NTExNmM2ODJhMmExNCIKLSAgICAiYTNiNGIxZjU0N2MzMzVmMGJlNzEw
ZmM5ZmMwM2UwZTU4N2I4Y2RhMzFjZTY1Yjk2OTg3OGE0YWQ0MjgzZTZkNSIKLSAgICAiYjAzNzNm
NDNkYTg2ZTllMGZmZTFhZTBmZGRkMzUxNjI1NWJkNzQ1NjZmMzZhMzg3MDNkNWYzNDI0OWRlZDFm
NiIKLSAgICAiNmIzZDliNDViOWFmMmNjZmVmZTk4NGUxMzM3NmIxYjJjNjQwNGFhNDhjODAyNjEz
MjM0M2RhM2YzYTMzNjU5ZSIKLSAgICAiYzFiM2U5NTA4MDU0MGIyOGI3ZjNmY2QzNWZhNWQ4NDNi
NTc5YTg0YzA4OTEyMWE2MGQ4YzE3NTQ5MTVjMzQ0ZSIKLSAgICAiZWFmNDVhOWJmMjdkYzBjMWU3
ODQxNjE2OTEyMjA5MTMxM2ViMGU4NzU1NWFiZDcwNjYyNmU1NTdmYzM2YTA0ZiIKLSAgICAiY2Qx
OTFhNTg4MjkxMDRkNjA3NWM1NTk0ZjYyN2NhNTA2YmYxODFkYWVjOTQwZjRhNGYzYWYwMDc0ZWVl
ODlkYSIKLSAgICAiYWNkZTY3NTgzMTI2MjJkNGZhNjc1YjM5ZjcyOGUwNjJkMmJlZTY4MGQ4ZjQx
YTU5N2MyNjI2NDhiYjE4YmNmYyIKLSAgICAiMTNjOGIzZDk3YjFhNzdiMmFjM2FmNzQ1ZDYxYTM0
Y2M0NzA5ODY1YmFjODI0YTk0YmIxOTA1ODAxNWU0ZTQyZCIKLSAgICAiYzliZTZjNzgwMzU2NzMy
MTgyOWRkODU4NTMzOTYyNjkiCi0pCi0KLUxPTkdfU0VSVkVSX1BBQ0tFVF9OVU1CRVIgPSAxCi1M
T05HX1NFUlZFUl9QTEFJTl9IRUFERVIgPSBiaW5hc2NpaS51bmhleGxpZnkoCi0gICAgImMxZmYw
MDAwMTcwMDA4ZjA2N2E1NTAyYTQyNjJiNTAwNDA3NDAwMDEiCi0pCi1MT05HX1NFUlZFUl9QTEFJ
Tl9QQVlMT0FEID0gYmluYXNjaWkudW5oZXhsaWZ5KAotICAgICIwZDAwMDAwMDAwMTg0MTBhMDIw
MDAwNTYwMzAzZWVmY2U3ZjdiMzdiYTFkMTYzMmU5NjY3NzgyNWRkZjczOTg4IgotICAgICJjZmM3
OTgyNWRmNTY2ZGM1NDMwYjlhMDQ1YTEyMDAxMzAxMDAwMDJlMDAzMzAwMjQwMDFkMDAyMDlkM2M5
NDBkIgotICAgICI4OTY5MGI4NGQwOGE2MDk5M2MxNDRlY2E2ODRkMTA4MTI4N2M4MzRkNTMxMWJj
ZjMyYmI5ZGExYTAwMmIwMDAyIgotICAgICIwMzA0IgotKQotTE9OR19TRVJWRVJfRU5DUllQVEVE
X1BBQ0tFVCA9IGJpbmFzY2lpLnVuaGV4bGlmeSgKLSAgICAiYzlmZjAwMDAxNzAwMDhmMDY3YTU1
MDJhNDI2MmI1MDA0MDc0MTY4YmYyMmI3MDAyNTk2Zjk5YWU2N2FiZjY1YSIKLSAgICAiNTg1MmY1
NGY1OGMzN2M4MDg2ODJlMmU0MDQ5MmQ4YTM4OTlmYjA0ZmMwYWZlOWFhYmM4NzY3YjE4YTBhYTQ5
MyIKLSAgICAiNTM3NDI2MzczYjQ4ZDUwMjIxNGRkODU2ZDYzYjc4Y2VlMzdiYzY2NGIzZmU4NmQ0
ODdhYzdhNzdjNTMwMzhhMyIKLSAgICAiY2QzMmYwYjUwMDRkOWY1NzU0YzRmN2YyZDFmMzVjZjNm
NzExNjM1MWM5MmI5Y2Y5YmI2ZDA5MWRkZmM4YjMyZCIKLSAgICAiNDMyMzQ4YTJjNDEzIgotKQot
Ci1TSE9SVF9TRVJWRVJfUEFDS0VUX05VTUJFUiA9IDMKLVNIT1JUX1NFUlZFUl9QTEFJTl9IRUFE
RVIgPSBiaW5hc2NpaS51bmhleGxpZnkoIjQxYjAxZmQyNGE1ODZhOWNmMzAwMDMiKQotU0hPUlRf
U0VSVkVSX1BMQUlOX1BBWUxPQUQgPSBiaW5hc2NpaS51bmhleGxpZnkoCi0gICAgIjA2MDAzOTA0
MDAwMDM1MDAwMTUxODA1YTRiZWJmNTAwMDAyMGIwOThjOGRjNDE4M2U0YzE4MjU3MmUxMGFjM2Ui
Ci0gICAgIjJiODg4OTdlMDUyNGM4NDYxODQ3NTQ4YmQyZGZmYTJjMGFlNjAwMDgwMDJhMDAwNGZm
ZmZmZmZmIgotKQotU0hPUlRfU0VSVkVSX0VOQ1JZUFRFRF9QQUNLRVQgPSBiaW5hc2NpaS51bmhl
eGxpZnkoCi0gICAgIjVkYjAxZmQyNGE1ODZhOWNmMzNkZWMwOTRhYWVjNmQ2YjRiN2E1ZTE1ZjVh
M2YwNWQwNmNmMWFkMDM1NWMxOWQiCi0gICAgImNjZTA4MDdlZWNmN2JmMWM4NDRhNjZlMWVjZDFm
NzRiMmEyZDY5YmZkMjVkMjE3ODMzZWRkOTczMjQ2NTk3YmQiCi0gICAgIjUxMDdlYTE1Y2IxZTIx
MDA0NTM5NmFmYTYwMmZlMjM0MzJmNGFiMjRjZTI1MWIiCi0pCi0KLQotY2xhc3MgQ3J5cHRvVGVz
dChUZXN0Q2FzZSk6Ci0gICAgIiIiCi0gICAgVGVzdCB2ZWN0b3JzIGZyb206Ci0KLSAgICBodHRw
czovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtaWV0Zi1xdWljLXRscy0xOCNhcHBlbmRpeC1B
Ci0gICAgIiIiCi0KLSAgICBkZWYgY3JlYXRlX2NyeXB0byhzZWxmLCBpc19jbGllbnQpOgotICAg
ICAgICBwYWlyID0gQ3J5cHRvUGFpcigpCi0gICAgICAgIHBhaXIuc2V0dXBfaW5pdGlhbCgKLSAg
ICAgICAgICAgIGNpZD1iaW5hc2NpaS51bmhleGxpZnkoIjgzOTRjOGYwM2U1MTU3MDgiKSwKLSAg
ICAgICAgICAgIGlzX2NsaWVudD1pc19jbGllbnQsCi0gICAgICAgICAgICB2ZXJzaW9uPVBST1RP
Q09MX1ZFUlNJT04sCi0gICAgICAgICkKLSAgICAgICAgcmV0dXJuIHBhaXIKLQotICAgIGRlZiB0
ZXN0X2Rlcml2ZV9rZXlfaXZfaHAoc2VsZik6Ci0gICAgICAgICMgY2xpZW50Ci0gICAgICAgIHNl
Y3JldCA9IGJpbmFzY2lpLnVuaGV4bGlmeSgKLSAgICAgICAgICAgICI4YTM1MTVhMTRhZTNjMzFi
OWMyZDZkNWJjNTg1MzhjYTVjZDJiYWExMTkwODcxNDNlNjA4ODc0MjhkY2I1MmY2IgotICAgICAg
ICApCi0gICAgICAgIGtleSwgaXYsIGhwID0gZGVyaXZlX2tleV9pdl9ocChJTklUSUFMX0NJUEhF
Ul9TVUlURSwgc2VjcmV0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGtleSwgYmluYXNjaWku
dW5oZXhsaWZ5KCI5OGIwZDdlNWU3YTQwMmM2N2MzM2YzNTBmYTY1ZWE1NCIpKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGl2LCBiaW5hc2NpaS51bmhleGxpZnkoIjE5ZTk0Mzg3ODA1ZWIwYjQ2
YzAzYTc4OCIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhwLCBiaW5hc2NpaS51bmhleGxp
ZnkoIjBlZGQ5ODJhNmFjNTI3ZjJlZGRjYmI3MzQ4ZGVhNWQ3IikpCi0KLSAgICAgICAgIyBzZXJ2
ZXIKLSAgICAgICAgc2VjcmV0ID0gYmluYXNjaWkudW5oZXhsaWZ5KAotICAgICAgICAgICAgIjQ3
YjJlYWVhNmMyNjZlMzJjMDY5N2E5ZTJhODk4YmRmNWM0ZmIzZTVhYzM0ZjBlNTQ5YmYyYzU4NTgx
YTM4MTEiCi0gICAgICAgICkKLSAgICAgICAga2V5LCBpdiwgaHAgPSBkZXJpdmVfa2V5X2l2X2hw
KElOSVRJQUxfQ0lQSEVSX1NVSVRFLCBzZWNyZXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
a2V5LCBiaW5hc2NpaS51bmhleGxpZnkoIjlhOGJlOTAyYTliZGQ5MWQxNjA2NGNhMTE4MDQ1ZmI0
IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXYsIGJpbmFzY2lpLnVuaGV4bGlmeSgiMGE4
MjA4NmQzMjIwNWJhMjIyNDFkOGRjIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaHAsIGJp
bmFzY2lpLnVuaGV4bGlmeSgiOTRiOTQ1MmQyYjNjN2M3ZjZkYTdmZGQ4NTkzNTM3ZmQiKSkKLQot
ICAgIEBza2lwSWYoImNoYWNoYTIwIiBpbiBTS0lQX1RFU1RTLCAiU2tpcHBpbmcgY2hhY2hhMjAg
dGVzdHMiKQotICAgIGRlZiB0ZXN0X2RlY3J5cHRfY2hhY2hhMjAoc2VsZik6Ci0gICAgICAgIHBh
aXIgPSBDcnlwdG9QYWlyKCkKLSAgICAgICAgcGFpci5yZWN2LnNldHVwKAotICAgICAgICAgICAg
Y2lwaGVyX3N1aXRlPUNpcGhlclN1aXRlLkNIQUNIQTIwX1BPTFkxMzA1X1NIQTI1NiwKLSAgICAg
ICAgICAgIHNlY3JldD1iaW5hc2NpaS51bmhleGxpZnkoCi0gICAgICAgICAgICAgICAgImI0Mjc3
MmRmMzNjOTcxOWEzMjgyMGQzMDJhYTY2NGQwODBkN2Y1ZWE3YTcxYTMzMGY4Nzg2NGNiMjg5YWU4
YzAiCi0gICAgICAgICAgICApLAotICAgICAgICAgICAgdmVyc2lvbj1QUk9UT0NPTF9WRVJTSU9O
LAotICAgICAgICApCi0KLSAgICAgICAgcGxhaW5faGVhZGVyLCBwbGFpbl9wYXlsb2FkLCBwYWNr
ZXRfbnVtYmVyID0gcGFpci5kZWNyeXB0X3BhY2tldCgKLSAgICAgICAgICAgIENIQUNIQTIwX0NM
SUVOVF9FTkNSWVBURURfUEFDS0VULCAyNSwgMAotICAgICAgICApCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwocGxhaW5faGVhZGVyLCBDSEFDSEEyMF9DTElFTlRfUExBSU5fSEVBREVSKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHBsYWluX3BheWxvYWQsIENIQUNIQTIwX0NMSUVOVF9QTEFJ
Tl9QQVlMT0FEKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhY2tldF9udW1iZXIsIENIQUNI
QTIwX0NMSUVOVF9QQUNLRVRfTlVNQkVSKQotCi0gICAgZGVmIHRlc3RfZGVjcnlwdF9sb25nX2Ns
aWVudChzZWxmKToKLSAgICAgICAgcGFpciA9IHNlbGYuY3JlYXRlX2NyeXB0byhpc19jbGllbnQ9
RmFsc2UpCi0KLSAgICAgICAgcGxhaW5faGVhZGVyLCBwbGFpbl9wYXlsb2FkLCBwYWNrZXRfbnVt
YmVyID0gcGFpci5kZWNyeXB0X3BhY2tldCgKLSAgICAgICAgICAgIExPTkdfQ0xJRU5UX0VOQ1JZ
UFRFRF9QQUNLRVQsIDE4LCAwCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChw
bGFpbl9oZWFkZXIsIExPTkdfQ0xJRU5UX1BMQUlOX0hFQURFUikKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChwbGFpbl9wYXlsb2FkLCBMT05HX0NMSUVOVF9QTEFJTl9QQVlMT0FEKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHBhY2tldF9udW1iZXIsIExPTkdfQ0xJRU5UX1BBQ0tFVF9OVU1C
RVIpCi0KLSAgICBkZWYgdGVzdF9kZWNyeXB0X2xvbmdfc2VydmVyKHNlbGYpOgotICAgICAgICBw
YWlyID0gc2VsZi5jcmVhdGVfY3J5cHRvKGlzX2NsaWVudD1UcnVlKQotCi0gICAgICAgIHBsYWlu
X2hlYWRlciwgcGxhaW5fcGF5bG9hZCwgcGFja2V0X251bWJlciA9IHBhaXIuZGVjcnlwdF9wYWNr
ZXQoCi0gICAgICAgICAgICBMT05HX1NFUlZFUl9FTkNSWVBURURfUEFDS0VULCAxOCwgMAotICAg
ICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGxhaW5faGVhZGVyLCBMT05HX1NFUlZF
Ul9QTEFJTl9IRUFERVIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGxhaW5fcGF5bG9hZCwg
TE9OR19TRVJWRVJfUExBSU5fUEFZTE9BRCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYWNr
ZXRfbnVtYmVyLCBMT05HX1NFUlZFUl9QQUNLRVRfTlVNQkVSKQotCi0gICAgZGVmIHRlc3RfZGVj
cnlwdF9ub19rZXkoc2VsZik6Ci0gICAgICAgIHBhaXIgPSBDcnlwdG9QYWlyKCkKLSAgICAgICAg
d2l0aCBzZWxmLmFzc2VydFJhaXNlcyhDcnlwdG9FcnJvcik6Ci0gICAgICAgICAgICBwYWlyLmRl
Y3J5cHRfcGFja2V0KExPTkdfU0VSVkVSX0VOQ1JZUFRFRF9QQUNLRVQsIDE4LCAwKQotCi0gICAg
ZGVmIHRlc3RfZGVjcnlwdF9zaG9ydF9zZXJ2ZXIoc2VsZik6Ci0gICAgICAgIHBhaXIgPSBDcnlw
dG9QYWlyKCkKLSAgICAgICAgcGFpci5yZWN2LnNldHVwKAotICAgICAgICAgICAgY2lwaGVyX3N1
aXRlPUlOSVRJQUxfQ0lQSEVSX1NVSVRFLAotICAgICAgICAgICAgc2VjcmV0PWJpbmFzY2lpLnVu
aGV4bGlmeSgKLSAgICAgICAgICAgICAgICAiMzEwMjgxOTc3Y2I4YzFjMWMxMjEyZDc4NGIyZDI5
ZTVhNjQ4OWUyM2RlODQ4ZDM3MGE1YTJmOTUzN2YzYTEwMCIKLSAgICAgICAgICAgICksCi0gICAg
ICAgICAgICB2ZXJzaW9uPVBST1RPQ09MX1ZFUlNJT04sCi0gICAgICAgICkKLQotICAgICAgICBw
bGFpbl9oZWFkZXIsIHBsYWluX3BheWxvYWQsIHBhY2tldF9udW1iZXIgPSBwYWlyLmRlY3J5cHRf
cGFja2V0KAotICAgICAgICAgICAgU0hPUlRfU0VSVkVSX0VOQ1JZUFRFRF9QQUNLRVQsIDksIDAK
LSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBsYWluX2hlYWRlciwgU0hPUlRf
U0VSVkVSX1BMQUlOX0hFQURFUikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwbGFpbl9wYXls
b2FkLCBTSE9SVF9TRVJWRVJfUExBSU5fUEFZTE9BRCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChwYWNrZXRfbnVtYmVyLCBTSE9SVF9TRVJWRVJfUEFDS0VUX05VTUJFUikKLQotICAgIEBza2lw
SWYoImNoYWNoYTIwIiBpbiBTS0lQX1RFU1RTLCAiU2tpcHBpbmcgY2hhY2hhMjAgdGVzdHMiKQot
ICAgIGRlZiB0ZXN0X2VuY3J5cHRfY2hhY2hhMjAoc2VsZik6Ci0gICAgICAgIHBhaXIgPSBDcnlw
dG9QYWlyKCkKLSAgICAgICAgcGFpci5zZW5kLnNldHVwKAotICAgICAgICAgICAgY2lwaGVyX3N1
aXRlPUNpcGhlclN1aXRlLkNIQUNIQTIwX1BPTFkxMzA1X1NIQTI1NiwKLSAgICAgICAgICAgIHNl
Y3JldD1iaW5hc2NpaS51bmhleGxpZnkoCi0gICAgICAgICAgICAgICAgImI0Mjc3MmRmMzNjOTcx
OWEzMjgyMGQzMDJhYTY2NGQwODBkN2Y1ZWE3YTcxYTMzMGY4Nzg2NGNiMjg5YWU4YzAiCi0gICAg
ICAgICAgICApLAotICAgICAgICAgICAgdmVyc2lvbj1QUk9UT0NPTF9WRVJTSU9OLAotICAgICAg
ICApCi0KLSAgICAgICAgcGFja2V0ID0gcGFpci5lbmNyeXB0X3BhY2tldCgKLSAgICAgICAgICAg
IENIQUNIQTIwX0NMSUVOVF9QTEFJTl9IRUFERVIsCi0gICAgICAgICAgICBDSEFDSEEyMF9DTElF
TlRfUExBSU5fUEFZTE9BRCwKLSAgICAgICAgICAgIENIQUNIQTIwX0NMSUVOVF9QQUNLRVRfTlVN
QkVSLAotICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFja2V0LCBDSEFDSEEy
MF9DTElFTlRfRU5DUllQVEVEX1BBQ0tFVCkKLQotICAgIGRlZiB0ZXN0X2VuY3J5cHRfbG9uZ19j
bGllbnQoc2VsZik6Ci0gICAgICAgIHBhaXIgPSBzZWxmLmNyZWF0ZV9jcnlwdG8oaXNfY2xpZW50
PVRydWUpCi0KLSAgICAgICAgcGFja2V0ID0gcGFpci5lbmNyeXB0X3BhY2tldCgKLSAgICAgICAg
ICAgIExPTkdfQ0xJRU5UX1BMQUlOX0hFQURFUiwKLSAgICAgICAgICAgIExPTkdfQ0xJRU5UX1BM
QUlOX1BBWUxPQUQsCi0gICAgICAgICAgICBMT05HX0NMSUVOVF9QQUNLRVRfTlVNQkVSLAotICAg
ICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFja2V0LCBMT05HX0NMSUVOVF9FTkNS
WVBURURfUEFDS0VUKQotCi0gICAgZGVmIHRlc3RfZW5jcnlwdF9sb25nX3NlcnZlcihzZWxmKToK
LSAgICAgICAgcGFpciA9IHNlbGYuY3JlYXRlX2NyeXB0byhpc19jbGllbnQ9RmFsc2UpCi0KLSAg
ICAgICAgcGFja2V0ID0gcGFpci5lbmNyeXB0X3BhY2tldCgKLSAgICAgICAgICAgIExPTkdfU0VS
VkVSX1BMQUlOX0hFQURFUiwKLSAgICAgICAgICAgIExPTkdfU0VSVkVSX1BMQUlOX1BBWUxPQUQs
Ci0gICAgICAgICAgICBMT05HX1NFUlZFUl9QQUNLRVRfTlVNQkVSLAotICAgICAgICApCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFja2V0LCBMT05HX1NFUlZFUl9FTkNSWVBURURfUEFDS0VU
KQotCi0gICAgZGVmIHRlc3RfZW5jcnlwdF9zaG9ydF9zZXJ2ZXIoc2VsZik6Ci0gICAgICAgIHBh
aXIgPSBDcnlwdG9QYWlyKCkKLSAgICAgICAgcGFpci5zZW5kLnNldHVwKAotICAgICAgICAgICAg
Y2lwaGVyX3N1aXRlPUlOSVRJQUxfQ0lQSEVSX1NVSVRFLAotICAgICAgICAgICAgc2VjcmV0PWJp
bmFzY2lpLnVuaGV4bGlmeSgKLSAgICAgICAgICAgICAgICAiMzEwMjgxOTc3Y2I4YzFjMWMxMjEy
ZDc4NGIyZDI5ZTVhNjQ4OWUyM2RlODQ4ZDM3MGE1YTJmOTUzN2YzYTEwMCIKLSAgICAgICAgICAg
ICksCi0gICAgICAgICAgICB2ZXJzaW9uPVBST1RPQ09MX1ZFUlNJT04sCi0gICAgICAgICkKLQot
ICAgICAgICBwYWNrZXQgPSBwYWlyLmVuY3J5cHRfcGFja2V0KAotICAgICAgICAgICAgU0hPUlRf
U0VSVkVSX1BMQUlOX0hFQURFUiwKLSAgICAgICAgICAgIFNIT1JUX1NFUlZFUl9QTEFJTl9QQVlM
T0FELAotICAgICAgICAgICAgU0hPUlRfU0VSVkVSX1BBQ0tFVF9OVU1CRVIsCi0gICAgICAgICkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYWNrZXQsIFNIT1JUX1NFUlZFUl9FTkNSWVBURURf
UEFDS0VUKQotCi0gICAgZGVmIHRlc3Rfa2V5X3VwZGF0ZShzZWxmKToKLSAgICAgICAgcGFpcjEg
PSBzZWxmLmNyZWF0ZV9jcnlwdG8oaXNfY2xpZW50PVRydWUpCi0gICAgICAgIHBhaXIyID0gc2Vs
Zi5jcmVhdGVfY3J5cHRvKGlzX2NsaWVudD1GYWxzZSkKLQotICAgICAgICBkZWYgY3JlYXRlX3Bh
Y2tldChrZXlfcGhhc2UsIHBhY2tldF9udW1iZXIpOgotICAgICAgICAgICAgYnVmID0gQnVmZmVy
KGNhcGFjaXR5PTEwMCkKLSAgICAgICAgICAgIGJ1Zi5wdXNoX3VpbnQ4KFBBQ0tFVF9GSVhFRF9C
SVQgfCBrZXlfcGhhc2UgPDwgMiB8IDEpCi0gICAgICAgICAgICBidWYucHVzaF9ieXRlcyhiaW5h
c2NpaS51bmhleGxpZnkoIjgzOTRjOGYwM2U1MTU3MDgiKSkKLSAgICAgICAgICAgIGJ1Zi5wdXNo
X3VpbnQxNihwYWNrZXRfbnVtYmVyKQotICAgICAgICAgICAgcmV0dXJuIGJ1Zi5kYXRhLCBiIlx4
MDBceDAxXHgwMlx4MDMiCi0KLSAgICAgICAgZGVmIHNlbmQoc2VuZGVyLCByZWNlaXZlciwgcGFj
a2V0X251bWJlcj0wKToKLSAgICAgICAgICAgIHBsYWluX2hlYWRlciwgcGxhaW5fcGF5bG9hZCA9
IGNyZWF0ZV9wYWNrZXQoCi0gICAgICAgICAgICAgICAga2V5X3BoYXNlPXNlbmRlci5rZXlfcGhh
c2UsIHBhY2tldF9udW1iZXI9cGFja2V0X251bWJlcgotICAgICAgICAgICAgKQotICAgICAgICAg
ICAgZW5jcnlwdGVkID0gc2VuZGVyLmVuY3J5cHRfcGFja2V0KAotICAgICAgICAgICAgICAgIHBs
YWluX2hlYWRlciwgcGxhaW5fcGF5bG9hZCwgcGFja2V0X251bWJlcgotICAgICAgICAgICAgKQot
ICAgICAgICAgICAgcmVjb3ZfaGVhZGVyLCByZWNvdl9wYXlsb2FkLCByZWNvdl9wYWNrZXRfbnVt
YmVyID0gcmVjZWl2ZXIuZGVjcnlwdF9wYWNrZXQoCi0gICAgICAgICAgICAgICAgZW5jcnlwdGVk
LCBsZW4ocGxhaW5faGVhZGVyKSAtIDIsIDAKLSAgICAgICAgICAgICkKLSAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwocmVjb3ZfaGVhZGVyLCBwbGFpbl9oZWFkZXIpCi0gICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHJlY292X3BheWxvYWQsIHBsYWluX3BheWxvYWQpCi0gICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHJlY292X3BhY2tldF9udW1iZXIsIHBhY2tldF9udW1iZXIpCi0K
LSAgICAgICAgIyByb3VuZHRyaXAKLSAgICAgICAgc2VuZChwYWlyMSwgcGFpcjIsIDApCi0gICAg
ICAgIHNlbmQocGFpcjIsIHBhaXIxLCAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhaXIx
LmtleV9waGFzZSwgMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYWlyMi5rZXlfcGhhc2Us
IDApCi0KLSAgICAgICAgIyBwYWlyIDEga2V5IHVwZGF0ZQotICAgICAgICBwYWlyMS51cGRhdGVf
a2V5KCkKLQotICAgICAgICAjIHJvdW5kdHJpcAotICAgICAgICBzZW5kKHBhaXIxLCBwYWlyMiwg
MSkKLSAgICAgICAgc2VuZChwYWlyMiwgcGFpcjEsIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocGFpcjEua2V5X3BoYXNlLCAxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhaXIyLmtl
eV9waGFzZSwgMSkKLQotICAgICAgICAjIHBhaXIgMiBrZXkgdXBkYXRlCi0gICAgICAgIHBhaXIy
LnVwZGF0ZV9rZXkoKQotCi0gICAgICAgICMgcm91bmR0cmlwCi0gICAgICAgIHNlbmQocGFpcjIs
IHBhaXIxLCAyKQotICAgICAgICBzZW5kKHBhaXIxLCBwYWlyMiwgMikKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChwYWlyMS5rZXlfcGhhc2UsIDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cGFpcjIua2V5X3BoYXNlLCAwKQotCi0gICAgICAgICMgcGFpciAxIGtleSAtIHVwZGF0ZSwgYnV0
IG5vdCBuZXh0IHRvIHNlbmQKLSAgICAgICAgcGFpcjEudXBkYXRlX2tleSgpCi0KLSAgICAgICAg
IyByb3VuZHRyaXAKLSAgICAgICAgc2VuZChwYWlyMiwgcGFpcjEsIDMpCi0gICAgICAgIHNlbmQo
cGFpcjEsIHBhaXIyLCAzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhaXIxLmtleV9waGFz
ZSwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYWlyMi5rZXlfcGhhc2UsIDEpCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9oMC5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0
cy90ZXN0X2gwLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MWNjZjY1ZTExNzQ5
OGNmZGQ1YjA3YmVkZTFmMDc2M2QxY2EyMGZkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2gwLnB5CisrKyAvZGV2
L251bGwKQEAgLTEsMTQ4ICswLDAgQEAKLWZyb20gdW5pdHRlc3QgaW1wb3J0IFRlc3RDYXNlCi0K
LWZyb20gYWlvcXVpYy5oMC5jb25uZWN0aW9uIGltcG9ydCBIMF9BTFBOLCBIMENvbm5lY3Rpb24K
LWZyb20gYWlvcXVpYy5oMy5ldmVudHMgaW1wb3J0IERhdGFSZWNlaXZlZCwgSGVhZGVyc1JlY2Vp
dmVkCi0KLWZyb20gLnRlc3RfY29ubmVjdGlvbiBpbXBvcnQgY2xpZW50X2FuZF9zZXJ2ZXIsIHRy
YW5zZmVyCi0KLQotZGVmIGgwX2NsaWVudF9hbmRfc2VydmVyKCk6Ci0gICAgcmV0dXJuIGNsaWVu
dF9hbmRfc2VydmVyKAotICAgICAgICBjbGllbnRfb3B0aW9ucz17ImFscG5fcHJvdG9jb2xzIjog
SDBfQUxQTn0sCi0gICAgICAgIHNlcnZlcl9vcHRpb25zPXsiYWxwbl9wcm90b2NvbHMiOiBIMF9B
TFBOfSwKLSAgICApCi0KLQotZGVmIGgwX3RyYW5zZmVyKHF1aWNfc2VuZGVyLCBoMF9yZWNlaXZl
cik6Ci0gICAgcXVpY19yZWNlaXZlciA9IGgwX3JlY2VpdmVyLl9xdWljCi0gICAgdHJhbnNmZXIo
cXVpY19zZW5kZXIsIHF1aWNfcmVjZWl2ZXIpCi0KLSAgICAjIHByb2Nlc3MgUVVJQyBldmVudHMK
LSAgICBodHRwX2V2ZW50cyA9IFtdCi0gICAgZXZlbnQgPSBxdWljX3JlY2VpdmVyLm5leHRfZXZl
bnQoKQotICAgIHdoaWxlIGV2ZW50IGlzIG5vdCBOb25lOgotICAgICAgICBodHRwX2V2ZW50cy5l
eHRlbmQoaDBfcmVjZWl2ZXIuaGFuZGxlX2V2ZW50KGV2ZW50KSkKLSAgICAgICAgZXZlbnQgPSBx
dWljX3JlY2VpdmVyLm5leHRfZXZlbnQoKQotICAgIHJldHVybiBodHRwX2V2ZW50cwotCi0KLWNs
YXNzIEgwQ29ubmVjdGlvblRlc3QoVGVzdENhc2UpOgotICAgIGRlZiB0ZXN0X2Nvbm5lY3Qoc2Vs
Zik6Ci0gICAgICAgIHdpdGggaDBfY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAocXVpY19jbGllbnQs
IHF1aWNfc2VydmVyKToKLSAgICAgICAgICAgIGgwX2NsaWVudCA9IEgwQ29ubmVjdGlvbihxdWlj
X2NsaWVudCkKLSAgICAgICAgICAgIGgwX3NlcnZlciA9IEgwQ29ubmVjdGlvbihxdWljX3NlcnZl
cikKLQotICAgICAgICAgICAgIyBzZW5kIHJlcXVlc3QKLSAgICAgICAgICAgIHN0cmVhbV9pZCA9
IHF1aWNfY2xpZW50LmdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQoKQotICAgICAgICAgICAg
aDBfY2xpZW50LnNlbmRfaGVhZGVycygKLSAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFt
X2lkLAotICAgICAgICAgICAgICAgIGhlYWRlcnM9WwotICAgICAgICAgICAgICAgICAgICAoYiI6
bWV0aG9kIiwgYiJHRVQiKSwKLSAgICAgICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIsIGIiaHR0
cHMiKSwKLSAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0Iiks
Ci0gICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvIiksCi0gICAgICAgICAgICAgICAg
XSwKLSAgICAgICAgICAgICkKLSAgICAgICAgICAgIGgwX2NsaWVudC5zZW5kX2RhdGEoc3RyZWFt
X2lkPXN0cmVhbV9pZCwgZGF0YT1iIiIsIGVuZF9zdHJlYW09VHJ1ZSkKLQotICAgICAgICAgICAg
IyByZWNlaXZlIHJlcXVlc3QKLSAgICAgICAgICAgIGV2ZW50cyA9IGgwX3RyYW5zZmVyKHF1aWNf
Y2xpZW50LCBoMF9zZXJ2ZXIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihldmVu
dHMpLCAyKQotCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShldmVudHNb
MF0sIEhlYWRlcnNSZWNlaXZlZCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAg
ICAgICAgICAgICAgIGV2ZW50c1swXS5oZWFkZXJzLCBbKGIiOm1ldGhvZCIsIGIiR0VUIiksIChi
IjpwYXRoIiwgYiIvIildCi0gICAgICAgICAgICApCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGV2ZW50c1swXS5zdHJlYW1faWQsIHN0cmVhbV9pZCkKLSAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoZXZlbnRzWzBdLnN0cmVhbV9lbmRlZCwgRmFsc2UpCi0KLSAgICAgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKGV2ZW50c1sxXSwgRGF0YVJlY2VpdmVkKSkKLSAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnRzWzFdLmRhdGEsIGIiIikKLSAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnRzWzFdLnN0cmVhbV9pZCwgc3RyZWFtX2lkKQotICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudHNbMV0uc3RyZWFtX2VuZGVkLCBUcnVlKQotCi0g
ICAgICAgICAgICAjIHNlbmQgcmVzcG9uc2UKLSAgICAgICAgICAgIGgwX3NlcnZlci5zZW5kX2hl
YWRlcnMoCi0gICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwKLSAgICAgICAgICAg
ICAgICBoZWFkZXJzPVsKLSAgICAgICAgICAgICAgICAgICAgKGIiOnN0YXR1cyIsIGIiMjAwIiks
Ci0gICAgICAgICAgICAgICAgICAgIChiImNvbnRlbnQtdHlwZSIsIGIidGV4dC9odG1sOyBjaGFy
c2V0PXV0Zi04IiksCi0gICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICkKLSAgICAgICAg
ICAgIGgwX3NlcnZlci5zZW5kX2RhdGEoCi0gICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVh
bV9pZCwKLSAgICAgICAgICAgICAgICBkYXRhPWIiPGh0bWw+PGJvZHk+aGVsbG88L2JvZHk+PC9o
dG1sPiIsCi0gICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1UcnVlLAotICAgICAgICAgICAgKQot
Ci0gICAgICAgICAgICAjIHJlY2VpdmUgcmVzcG9uc2UKLSAgICAgICAgICAgIGV2ZW50cyA9IGgw
X3RyYW5zZmVyKHF1aWNfc2VydmVyLCBoMF9jbGllbnQpCi0gICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGxlbihldmVudHMpLCAyKQotCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNp
bnN0YW5jZShldmVudHNbMF0sIEhlYWRlcnNSZWNlaXZlZCkpCi0gICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGV2ZW50c1swXS5oZWFkZXJzLCBbXSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoZXZlbnRzWzBdLnN0cmVhbV9pZCwgc3RyZWFtX2lkKQotICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChldmVudHNbMF0uc3RyZWFtX2VuZGVkLCBGYWxzZSkKLQotICAgICAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoZXZlbnRzWzFdLCBEYXRhUmVjZWl2ZWQpKQotICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVudHNbMV0uZGF0YSwgYiI8aHRtbD48Ym9keT5o
ZWxsbzwvYm9keT48L2h0bWw+IikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnRz
WzFdLnN0cmVhbV9pZCwgc3RyZWFtX2lkKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChl
dmVudHNbMV0uc3RyZWFtX2VuZGVkLCBUcnVlKQotCi0gICAgZGVmIHRlc3RfaGVhZGVyc19vbmx5
KHNlbGYpOgotICAgICAgICB3aXRoIGgwX2NsaWVudF9hbmRfc2VydmVyKCkgYXMgKHF1aWNfY2xp
ZW50LCBxdWljX3NlcnZlcik6Ci0gICAgICAgICAgICBoMF9jbGllbnQgPSBIMENvbm5lY3Rpb24o
cXVpY19jbGllbnQpCi0gICAgICAgICAgICBoMF9zZXJ2ZXIgPSBIMENvbm5lY3Rpb24ocXVpY19z
ZXJ2ZXIpCi0KLSAgICAgICAgICAgICMgc2VuZCByZXF1ZXN0Ci0gICAgICAgICAgICBzdHJlYW1f
aWQgPSBxdWljX2NsaWVudC5nZXRfbmV4dF9hdmFpbGFibGVfc3RyZWFtX2lkKCkKLSAgICAgICAg
ICAgIGgwX2NsaWVudC5zZW5kX2hlYWRlcnMoCi0gICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0
cmVhbV9pZCwKLSAgICAgICAgICAgICAgICBoZWFkZXJzPVsKLSAgICAgICAgICAgICAgICAgICAg
KGIiOm1ldGhvZCIsIGIiSEVBRCIpLAotICAgICAgICAgICAgICAgICAgICAoYiI6c2NoZW1lIiwg
YiJodHRwcyIpLAotICAgICAgICAgICAgICAgICAgICAoYiI6YXV0aG9yaXR5IiwgYiJsb2NhbGhv
c3QiKSwKLSAgICAgICAgICAgICAgICAgICAgKGIiOnBhdGgiLCBiIi8iKSwKLSAgICAgICAgICAg
ICAgICBdLAotICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09VHJ1ZSwKLSAgICAgICAgICAgICkK
LQotICAgICAgICAgICAgIyByZWNlaXZlIHJlcXVlc3QKLSAgICAgICAgICAgIGV2ZW50cyA9IGgw
X3RyYW5zZmVyKHF1aWNfY2xpZW50LCBoMF9zZXJ2ZXIpCi0gICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGxlbihldmVudHMpLCAyKQotCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNp
bnN0YW5jZShldmVudHNbMF0sIEhlYWRlcnNSZWNlaXZlZCkpCi0gICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKAotICAgICAgICAgICAgICAgIGV2ZW50c1swXS5oZWFkZXJzLCBbKGIiOm1ldGhv
ZCIsIGIiSEVBRCIpLCAoYiI6cGF0aCIsIGIiLyIpXQotICAgICAgICAgICAgKQotICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChldmVudHNbMF0uc3RyZWFtX2lkLCBzdHJlYW1faWQpCi0gICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50c1swXS5zdHJlYW1fZW5kZWQsIEZhbHNlKQot
Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShldmVudHNbMV0sIERhdGFS
ZWNlaXZlZCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50c1sxXS5kYXRhLCBi
IiIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50c1sxXS5zdHJlYW1faWQsIHN0
cmVhbV9pZCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnRzWzFdLnN0cmVhbV9l
bmRlZCwgVHJ1ZSkKLQotICAgICAgICAgICAgIyBzZW5kIHJlc3BvbnNlCi0gICAgICAgICAgICBo
MF9zZXJ2ZXIuc2VuZF9oZWFkZXJzKAotICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1f
aWQsCi0gICAgICAgICAgICAgICAgaGVhZGVycz1bCi0gICAgICAgICAgICAgICAgICAgIChiIjpz
dGF0dXMiLCBiIjIwMCIpLAotICAgICAgICAgICAgICAgICAgICAoYiJjb250ZW50LXR5cGUiLCBi
InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIpLAotICAgICAgICAgICAgICAgIF0sCi0gICAgICAg
ICAgICAgICAgZW5kX3N0cmVhbT1UcnVlLAotICAgICAgICAgICAgKQotCi0gICAgICAgICAgICAj
IHJlY2VpdmUgcmVzcG9uc2UKLSAgICAgICAgICAgIGV2ZW50cyA9IGgwX3RyYW5zZmVyKHF1aWNf
c2VydmVyLCBoMF9jbGllbnQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihldmVu
dHMpLCAyKQotCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShldmVudHNb
MF0sIEhlYWRlcnNSZWNlaXZlZCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50
c1swXS5oZWFkZXJzLCBbXSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnRzWzBd
LnN0cmVhbV9pZCwgc3RyZWFtX2lkKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmVu
dHNbMF0uc3RyZWFtX2VuZGVkLCBGYWxzZSkKLQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KGlzaW5zdGFuY2UoZXZlbnRzWzFdLCBEYXRhUmVjZWl2ZWQpKQotICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChldmVudHNbMV0uZGF0YSwgYiIiKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChldmVudHNbMV0uc3RyZWFtX2lkLCBzdHJlYW1faWQpCi0gICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGV2ZW50c1sxXS5zdHJlYW1fZW5kZWQsIFRydWUpCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvdGVzdHMvdGVzdF9oMy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2gzLnB5
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTU1MDM5OWI0YTMwMDZmZGIwODZlMjMw
OTRmZTk4OThjNTQzMTc1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2gzLnB5CisrKyAvZGV2L251bGwKQEAgLTEs
MTI5MiArMCwwIEBACi1pbXBvcnQgYmluYXNjaWkKLWZyb20gdW5pdHRlc3QgaW1wb3J0IFRlc3RD
YXNlCi0KLWZyb20gYWlvcXVpYy5idWZmZXIgaW1wb3J0IGVuY29kZV91aW50X3ZhcgotZnJvbSBh
aW9xdWljLmgzLmNvbm5lY3Rpb24gaW1wb3J0ICgKLSAgICBIM19BTFBOLAotICAgIEVycm9yQ29k
ZSwKLSAgICBGcmFtZVR5cGUsCi0gICAgRnJhbWVVbmV4cGVjdGVkLAotICAgIEgzQ29ubmVjdGlv
biwKLSAgICBTdHJlYW1UeXBlLAotICAgIGVuY29kZV9mcmFtZSwKLSkKLWZyb20gYWlvcXVpYy5o
My5ldmVudHMgaW1wb3J0IERhdGFSZWNlaXZlZCwgSGVhZGVyc1JlY2VpdmVkLCBQdXNoUHJvbWlz
ZVJlY2VpdmVkCi1mcm9tIGFpb3F1aWMuaDMuZXhjZXB0aW9ucyBpbXBvcnQgTm9BdmFpbGFibGVQ
dXNoSURFcnJvcgotZnJvbSBhaW9xdWljLnF1aWMuY29uZmlndXJhdGlvbiBpbXBvcnQgUXVpY0Nv
bmZpZ3VyYXRpb24KLWZyb20gYWlvcXVpYy5xdWljLmV2ZW50cyBpbXBvcnQgU3RyZWFtRGF0YVJl
Y2VpdmVkCi1mcm9tIGFpb3F1aWMucXVpYy5sb2dnZXIgaW1wb3J0IFF1aWNMb2dnZXIKLQotZnJv
bSAudGVzdF9jb25uZWN0aW9uIGltcG9ydCBjbGllbnRfYW5kX3NlcnZlciwgdHJhbnNmZXIKLQot
Ci1kZWYgaDNfY2xpZW50X2FuZF9zZXJ2ZXIoKToKLSAgICByZXR1cm4gY2xpZW50X2FuZF9zZXJ2
ZXIoCi0gICAgICAgIGNsaWVudF9vcHRpb25zPXsiYWxwbl9wcm90b2NvbHMiOiBIM19BTFBOfSwK
LSAgICAgICAgc2VydmVyX29wdGlvbnM9eyJhbHBuX3Byb3RvY29scyI6IEgzX0FMUE59LAotICAg
ICkKLQotCi1kZWYgaDNfdHJhbnNmZXIocXVpY19zZW5kZXIsIGgzX3JlY2VpdmVyKToKLSAgICBx
dWljX3JlY2VpdmVyID0gaDNfcmVjZWl2ZXIuX3F1aWMKLSAgICBpZiBoYXNhdHRyKHF1aWNfc2Vu
ZGVyLCAic3RyZWFtX3F1ZXVlIik6Ci0gICAgICAgIHF1aWNfcmVjZWl2ZXIuX2V2ZW50cy5leHRl
bmQocXVpY19zZW5kZXIuc3RyZWFtX3F1ZXVlKQotICAgICAgICBxdWljX3NlbmRlci5zdHJlYW1f
cXVldWUuY2xlYXIoKQotICAgIGVsc2U6Ci0gICAgICAgIHRyYW5zZmVyKHF1aWNfc2VuZGVyLCBx
dWljX3JlY2VpdmVyKQotCi0gICAgIyBwcm9jZXNzIFFVSUMgZXZlbnRzCi0gICAgaHR0cF9ldmVu
dHMgPSBbXQotICAgIGV2ZW50ID0gcXVpY19yZWNlaXZlci5uZXh0X2V2ZW50KCkKLSAgICB3aGls
ZSBldmVudCBpcyBub3QgTm9uZToKLSAgICAgICAgaHR0cF9ldmVudHMuZXh0ZW5kKGgzX3JlY2Vp
dmVyLmhhbmRsZV9ldmVudChldmVudCkpCi0gICAgICAgIGV2ZW50ID0gcXVpY19yZWNlaXZlci5u
ZXh0X2V2ZW50KCkKLSAgICByZXR1cm4gaHR0cF9ldmVudHMKLQotCi1jbGFzcyBGYWtlUXVpY0Nv
bm5lY3Rpb246Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbmZpZ3VyYXRpb24pOgotICAgICAg
ICBzZWxmLmNsb3NlZCA9IE5vbmUKLSAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uID0gY29uZmln
dXJhdGlvbgotICAgICAgICBzZWxmLnN0cmVhbV9xdWV1ZSA9IFtdCi0gICAgICAgIHNlbGYuX2V2
ZW50cyA9IFtdCi0gICAgICAgIHNlbGYuX25leHRfc3RyZWFtX2JpZGkgPSAwIGlmIGNvbmZpZ3Vy
YXRpb24uaXNfY2xpZW50IGVsc2UgMQotICAgICAgICBzZWxmLl9uZXh0X3N0cmVhbV91bmkgPSAy
IGlmIGNvbmZpZ3VyYXRpb24uaXNfY2xpZW50IGVsc2UgMwotICAgICAgICBzZWxmLl9xdWljX2xv
Z2dlciA9IFF1aWNMb2dnZXIoKS5zdGFydF90cmFjZSgKLSAgICAgICAgICAgIGlzX2NsaWVudD1j
b25maWd1cmF0aW9uLmlzX2NsaWVudCwgb2RjaWQ9YiIiCi0gICAgICAgICkKLQotICAgIGRlZiBj
bG9zZShzZWxmLCBlcnJvcl9jb2RlLCByZWFzb25fcGhyYXNlKToKLSAgICAgICAgc2VsZi5jbG9z
ZWQgPSAoZXJyb3JfY29kZSwgcmVhc29uX3BocmFzZSkKLQotICAgIGRlZiBnZXRfbmV4dF9hdmFp
bGFibGVfc3RyZWFtX2lkKHNlbGYsIGlzX3VuaWRpcmVjdGlvbmFsPUZhbHNlKToKLSAgICAgICAg
aWYgaXNfdW5pZGlyZWN0aW9uYWw6Ci0gICAgICAgICAgICBzdHJlYW1faWQgPSBzZWxmLl9uZXh0
X3N0cmVhbV91bmkKLSAgICAgICAgICAgIHNlbGYuX25leHRfc3RyZWFtX3VuaSArPSA0Ci0gICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICBzdHJlYW1faWQgPSBzZWxmLl9uZXh0X3N0cmVhbV9iaWRp
Ci0gICAgICAgICAgICBzZWxmLl9uZXh0X3N0cmVhbV9iaWRpICs9IDQKLSAgICAgICAgcmV0dXJu
IHN0cmVhbV9pZAotCi0gICAgZGVmIG5leHRfZXZlbnQoc2VsZik6Ci0gICAgICAgIHRyeToKLSAg
ICAgICAgICAgIHJldHVybiBzZWxmLl9ldmVudHMucG9wKDApCi0gICAgICAgIGV4Y2VwdCBJbmRl
eEVycm9yOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgIGRlZiBzZW5kX3N0cmVhbV9k
YXRhKHNlbGYsIHN0cmVhbV9pZCwgZGF0YSwgZW5kX3N0cmVhbT1GYWxzZSk6Ci0gICAgICAgICMg
Y2hvcCB1cCBkYXRhIGludG8gaW5kaXZpZHVhbCBieXRlcwotICAgICAgICBmb3IgYyBpbiBkYXRh
OgotICAgICAgICAgICAgc2VsZi5zdHJlYW1fcXVldWUuYXBwZW5kKAotICAgICAgICAgICAgICAg
IFN0cmVhbURhdGFSZWNlaXZlZCgKLSAgICAgICAgICAgICAgICAgICAgZGF0YT1ieXRlcyhbY10p
LCBlbmRfc3RyZWFtPUZhbHNlLCBzdHJlYW1faWQ9c3RyZWFtX2lkCi0gICAgICAgICAgICAgICAg
KQotICAgICAgICAgICAgKQotICAgICAgICBpZiBlbmRfc3RyZWFtOgotICAgICAgICAgICAgc2Vs
Zi5zdHJlYW1fcXVldWUuYXBwZW5kKAotICAgICAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZl
ZChkYXRhPWIiIiwgZW5kX3N0cmVhbT1lbmRfc3RyZWFtLCBzdHJlYW1faWQ9c3RyZWFtX2lkKQot
ICAgICAgICAgICAgKQotCi0KLWNsYXNzIEgzQ29ubmVjdGlvblRlc3QoVGVzdENhc2UpOgotICAg
IG1heERpZmYgPSBOb25lCi0KLSAgICBkZWYgX21ha2VfcmVxdWVzdChzZWxmLCBoM19jbGllbnQs
IGgzX3NlcnZlcik6Ci0gICAgICAgIHF1aWNfY2xpZW50ID0gaDNfY2xpZW50Ll9xdWljCi0gICAg
ICAgIHF1aWNfc2VydmVyID0gaDNfc2VydmVyLl9xdWljCi0KLSAgICAgICAgIyBzZW5kIHJlcXVl
c3QKLSAgICAgICAgc3RyZWFtX2lkID0gcXVpY19jbGllbnQuZ2V0X25leHRfYXZhaWxhYmxlX3N0
cmVhbV9pZCgpCi0gICAgICAgIGgzX2NsaWVudC5zZW5kX2hlYWRlcnMoCi0gICAgICAgICAgICBz
dHJlYW1faWQ9c3RyZWFtX2lkLAotICAgICAgICAgICAgaGVhZGVycz1bCi0gICAgICAgICAgICAg
ICAgKGIiOm1ldGhvZCIsIGIiR0VUIiksCi0gICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIsIGIi
aHR0cHMiKSwKLSAgICAgICAgICAgICAgICAoYiI6YXV0aG9yaXR5IiwgYiJsb2NhbGhvc3QiKSwK
LSAgICAgICAgICAgICAgICAoYiI6cGF0aCIsIGIiLyIpLAotICAgICAgICAgICAgICAgIChiIngt
Zm9vIiwgYiJjbGllbnQiKSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICkKLSAgICAgICAgaDNf
Y2xpZW50LnNlbmRfZGF0YShzdHJlYW1faWQ9c3RyZWFtX2lkLCBkYXRhPWIiIiwgZW5kX3N0cmVh
bT1UcnVlKQotCi0gICAgICAgICMgcmVjZWl2ZSByZXF1ZXN0Ci0gICAgICAgIGV2ZW50cyA9IGgz
X3RyYW5zZmVyKHF1aWNfY2xpZW50LCBoM19zZXJ2ZXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoCi0gICAgICAgICAgICBldmVudHMsCi0gICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAg
SGVhZGVyc1JlY2VpdmVkKAotICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPVsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIChiIjptZXRob2QiLCBiIkdFVCIpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgKGIiOnNjaGVtZSIsIGIiaHR0cHMiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIChi
IjphdXRob3JpdHkiLCBiImxvY2FsaG9zdCIpLAotICAgICAgICAgICAgICAgICAgICAgICAgKGIi
OnBhdGgiLCBiIi8iKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIChiIngtZm9vIiwgYiJjbGll
bnQiKSwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgc3RyZWFt
X2lkPXN0cmVhbV9pZCwKLSAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVkPUZhbHNlLAot
ICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICAgICAgRGF0YVJlY2VpdmVkKGRhdGE9YiIi
LCBzdHJlYW1faWQ9c3RyZWFtX2lkLCBzdHJlYW1fZW5kZWQ9VHJ1ZSksCi0gICAgICAgICAgICBd
LAotICAgICAgICApCi0KLSAgICAgICAgIyBzZW5kIHJlc3BvbnNlCi0gICAgICAgIGgzX3NlcnZl
ci5zZW5kX2hlYWRlcnMoCi0gICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAotICAgICAg
ICAgICAgaGVhZGVycz1bCi0gICAgICAgICAgICAgICAgKGIiOnN0YXR1cyIsIGIiMjAwIiksCi0g
ICAgICAgICAgICAgICAgKGIiY29udGVudC10eXBlIiwgYiJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRm
LTgiKSwKLSAgICAgICAgICAgICAgICAoYiJ4LWZvbyIsIGIic2VydmVyIiksCi0gICAgICAgICAg
ICBdLAotICAgICAgICApCi0gICAgICAgIGgzX3NlcnZlci5zZW5kX2RhdGEoCi0gICAgICAgICAg
ICBzdHJlYW1faWQ9c3RyZWFtX2lkLAotICAgICAgICAgICAgZGF0YT1iIjxodG1sPjxib2R5Pmhl
bGxvPC9ib2R5PjwvaHRtbD4iLAotICAgICAgICAgICAgZW5kX3N0cmVhbT1UcnVlLAotICAgICAg
ICApCi0KLSAgICAgICAgIyByZWNlaXZlIHJlc3BvbnNlCi0gICAgICAgIGV2ZW50cyA9IGgzX3Ry
YW5zZmVyKHF1aWNfc2VydmVyLCBoM19jbGllbnQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Ci0gICAgICAgICAgICBldmVudHMsCi0gICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgSGVh
ZGVyc1JlY2VpdmVkKAotICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPVsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIChiIjpzdGF0dXMiLCBiIjIwMCIpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgKGIiY29udGVudC10eXBlIiwgYiJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIChiIngtZm9vIiwgYiJzZXJ2ZXIiKSwKLSAgICAgICAgICAgICAg
ICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwKLSAgICAg
ICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVkPUZhbHNlLAotICAgICAgICAgICAgICAgICksCi0g
ICAgICAgICAgICAgICAgRGF0YVJlY2VpdmVkKAotICAgICAgICAgICAgICAgICAgICBkYXRhPWIi
PGh0bWw+PGJvZHk+aGVsbG88L2JvZHk+PC9odG1sPiIsCi0gICAgICAgICAgICAgICAgICAgIHN0
cmVhbV9pZD1zdHJlYW1faWQsCi0gICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1UcnVl
LAotICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICBdLAotICAgICAgICApCi0KLSAgICBk
ZWYgdGVzdF9oYW5kbGVfY29udHJvbF9mcmFtZV9oZWFkZXJzKHNlbGYpOgotICAgICAgICAiIiIK
LSAgICAgICAgV2Ugc2hvdWxkIG5vdCByZWNlaXZlIEhFQURFUlMgb24gdGhlIGNvbnRyb2wgc3Ry
ZWFtLgotICAgICAgICAiIiIKLSAgICAgICAgcXVpY19zZXJ2ZXIgPSBGYWtlUXVpY0Nvbm5lY3Rp
b24oCi0gICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVu
dD1GYWxzZSkKLSAgICAgICAgKQotICAgICAgICBoM19zZXJ2ZXIgPSBIM0Nvbm5lY3Rpb24ocXVp
Y19zZXJ2ZXIpCi0KLSAgICAgICAgaDNfc2VydmVyLmhhbmRsZV9ldmVudCgKLSAgICAgICAgICAg
IFN0cmVhbURhdGFSZWNlaXZlZCgKLSAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MiwKLSAgICAg
ICAgICAgICAgICBkYXRhPWVuY29kZV91aW50X3ZhcihTdHJlYW1UeXBlLkNPTlRST0wpCi0gICAg
ICAgICAgICAgICAgKyBlbmNvZGVfZnJhbWUoRnJhbWVUeXBlLkhFQURFUlMsIGIiIiksCi0gICAg
ICAgICAgICAgICAgZW5kX3N0cmVhbT1GYWxzZSwKLSAgICAgICAgICAgICkKLSAgICAgICAgKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgcXVpY19zZXJ2ZXIuY2xvc2Vk
LAotICAgICAgICAgICAgKEVycm9yQ29kZS5IVFRQX0ZSQU1FX1VORVhQRUNURUQsICJJbnZhbGlk
IGZyYW1lIHR5cGUgb24gY29udHJvbCBzdHJlYW0iKSwKLSAgICAgICAgKQotCi0gICAgZGVmIHRl
c3RfaGFuZGxlX2NvbnRyb2xfZnJhbWVfbWF4X3B1c2hfaWRfZnJvbV9zZXJ2ZXIoc2VsZik6Ci0g
ICAgICAgICIiIgotICAgICAgICBBIGNsaWVudCBzaG91bGQgbm90IHJlY2VpdmUgTUFYX1BVU0hf
SUQgb24gdGhlIGNvbnRyb2wgc3RyZWFtLgotICAgICAgICAiIiIKLSAgICAgICAgcXVpY19jbGll
bnQgPSBGYWtlUXVpY0Nvbm5lY3Rpb24oCi0gICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWND
b25maWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQotICAgICAgICApCi0gICAgICAgIGgzX2NsaWVu
dCA9IEgzQ29ubmVjdGlvbihxdWljX2NsaWVudCkKLQotICAgICAgICBoM19jbGllbnQuaGFuZGxl
X2V2ZW50KAotICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKAotICAgICAgICAgICAgICAg
IHN0cmVhbV9pZD0zLAotICAgICAgICAgICAgICAgIGRhdGE9ZW5jb2RlX3VpbnRfdmFyKFN0cmVh
bVR5cGUuQ09OVFJPTCkKLSAgICAgICAgICAgICAgICArIGVuY29kZV9mcmFtZShGcmFtZVR5cGUu
TUFYX1BVU0hfSUQsIGIiIiksCi0gICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1GYWxzZSwKLSAg
ICAgICAgICAgICkKLSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAg
ICAgICAgcXVpY19jbGllbnQuY2xvc2VkLAotICAgICAgICAgICAgKEVycm9yQ29kZS5IVFRQX0ZS
QU1FX1VORVhQRUNURUQsICJTZXJ2ZXJzIG11c3Qgbm90IHNlbmQgTUFYX1BVU0hfSUQiKSwKLSAg
ICAgICAgKQotCi0gICAgZGVmIHRlc3RfaGFuZGxlX2NvbnRyb2xfc3RyZWFtX2R1cGxpY2F0ZShz
ZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFdlIG11c3Qgb25seSByZWNlaXZlIGEgc2luZ2xl
IGNvbnRyb2wgc3RyZWFtLgotICAgICAgICAiIiIKLSAgICAgICAgcXVpY19zZXJ2ZXIgPSBGYWtl
UXVpY0Nvbm5lY3Rpb24oCi0gICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0
aW9uKGlzX2NsaWVudD1GYWxzZSkKLSAgICAgICAgKQotICAgICAgICBoM19zZXJ2ZXIgPSBIM0Nv
bm5lY3Rpb24ocXVpY19zZXJ2ZXIpCi0KLSAgICAgICAgIyByZWNlaXZlIGEgZmlyc3QgY29udHJv
bCBzdHJlYW0KLSAgICAgICAgaDNfc2VydmVyLmhhbmRsZV9ldmVudCgKLSAgICAgICAgICAgIFN0
cmVhbURhdGFSZWNlaXZlZCgKLSAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MiwgZGF0YT1lbmNv
ZGVfdWludF92YXIoU3RyZWFtVHlwZS5DT05UUk9MKSwgZW5kX3N0cmVhbT1GYWxzZQotICAgICAg
ICAgICAgKQotICAgICAgICApCi0KLSAgICAgICAgIyByZWNlaXZlIGEgc2Vjb25kIGNvbnRyb2wg
c3RyZWFtCi0gICAgICAgIGgzX3NlcnZlci5oYW5kbGVfZXZlbnQoCi0gICAgICAgICAgICBTdHJl
YW1EYXRhUmVjZWl2ZWQoCi0gICAgICAgICAgICAgICAgc3RyZWFtX2lkPTYsIGRhdGE9ZW5jb2Rl
X3VpbnRfdmFyKFN0cmVhbVR5cGUuQ09OVFJPTCksIGVuZF9zdHJlYW09RmFsc2UKLSAgICAgICAg
ICAgICkKLSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAg
cXVpY19zZXJ2ZXIuY2xvc2VkLAotICAgICAgICAgICAgKAotICAgICAgICAgICAgICAgIEVycm9y
Q29kZS5IVFRQX1NUUkVBTV9DUkVBVElPTl9FUlJPUiwKLSAgICAgICAgICAgICAgICAiT25seSBv
bmUgY29udHJvbCBzdHJlYW0gaXMgYWxsb3dlZCIsCi0gICAgICAgICAgICApLAotICAgICAgICAp
Ci0KLSAgICBkZWYgdGVzdF9oYW5kbGVfcHVzaF9mcmFtZV93cm9uZ19mcmFtZV90eXBlKHNlbGYp
OgotICAgICAgICAiIiIKLSAgICAgICAgV2Ugc2hvdWxkIG5vdCByZWNlaXZlZCBTRVRUSU5HUyBv
biBhIHB1c2ggc3RyZWFtLgotICAgICAgICAiIiIKLSAgICAgICAgcXVpY19jbGllbnQgPSBGYWtl
UXVpY0Nvbm5lY3Rpb24oCi0gICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0
aW9uKGlzX2NsaWVudD1UcnVlKQotICAgICAgICApCi0gICAgICAgIGgzX2NsaWVudCA9IEgzQ29u
bmVjdGlvbihxdWljX2NsaWVudCkKLQotICAgICAgICBoM19jbGllbnQuaGFuZGxlX2V2ZW50KAot
ICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKAotICAgICAgICAgICAgICAgIHN0cmVhbV9p
ZD0xNSwKLSAgICAgICAgICAgICAgICBkYXRhPWVuY29kZV91aW50X3ZhcihTdHJlYW1UeXBlLlBV
U0gpCi0gICAgICAgICAgICAgICAgKyBlbmNvZGVfdWludF92YXIoMCkgICMgcHVzaCBJRAotICAg
ICAgICAgICAgICAgICsgZW5jb2RlX2ZyYW1lKEZyYW1lVHlwZS5TRVRUSU5HUywgYiIiKSwKLSAg
ICAgICAgICAgICAgICBlbmRfc3RyZWFtPUZhbHNlLAotICAgICAgICAgICAgKQotICAgICAgICAp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBxdWljX2NsaWVudC5jbG9z
ZWQsCi0gICAgICAgICAgICAoRXJyb3JDb2RlLkhUVFBfRlJBTUVfVU5FWFBFQ1RFRCwgIkludmFs
aWQgZnJhbWUgdHlwZSBvbiBwdXNoIHN0cmVhbSIpLAotICAgICAgICApCi0KLSAgICBkZWYgdGVz
dF9oYW5kbGVfcXBhY2tfZGVjb2Rlcl9kdXBsaWNhdGUoc2VsZik6Ci0gICAgICAgICIiIgotICAg
ICAgICBXZSBtdXN0IG9ubHkgcmVjZWl2ZSBhIHNpbmdsZSBRUEFDSyBkZWNvZGVyIHN0cmVhbS4K
LSAgICAgICAgIiIiCi0gICAgICAgIHF1aWNfY2xpZW50ID0gRmFrZVF1aWNDb25uZWN0aW9uKAot
ICAgICAgICAgICAgY29uZmlndXJhdGlvbj1RdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9VHJ1
ZSkKLSAgICAgICAgKQotICAgICAgICBoM19jbGllbnQgPSBIM0Nvbm5lY3Rpb24ocXVpY19jbGll
bnQpCi0KLSAgICAgICAgIyByZWNlaXZlIGEgZmlyc3QgZGVjb2RlciBzdHJlYW0KLSAgICAgICAg
aDNfY2xpZW50LmhhbmRsZV9ldmVudCgKLSAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZCgK
LSAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MTEsCi0gICAgICAgICAgICAgICAgZGF0YT1lbmNv
ZGVfdWludF92YXIoU3RyZWFtVHlwZS5RUEFDS19ERUNPREVSKSwKLSAgICAgICAgICAgICAgICBl
bmRfc3RyZWFtPUZhbHNlLAotICAgICAgICAgICAgKQotICAgICAgICApCi0KLSAgICAgICAgIyBy
ZWNlaXZlIGEgc2Vjb25kIGRlY29kZXIgc3RyZWFtCi0gICAgICAgIGgzX2NsaWVudC5oYW5kbGVf
ZXZlbnQoCi0gICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoCi0gICAgICAgICAgICAgICAg
c3RyZWFtX2lkPTE1LAotICAgICAgICAgICAgICAgIGRhdGE9ZW5jb2RlX3VpbnRfdmFyKFN0cmVh
bVR5cGUuUVBBQ0tfREVDT0RFUiksCi0gICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1GYWxzZSwK
LSAgICAgICAgICAgICkKLSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAg
ICAgICAgICAgcXVpY19jbGllbnQuY2xvc2VkLAotICAgICAgICAgICAgKAotICAgICAgICAgICAg
ICAgIEVycm9yQ29kZS5IVFRQX1NUUkVBTV9DUkVBVElPTl9FUlJPUiwKLSAgICAgICAgICAgICAg
ICAiT25seSBvbmUgUVBBQ0sgZGVjb2RlciBzdHJlYW0gaXMgYWxsb3dlZCIsCi0gICAgICAgICAg
ICApLAotICAgICAgICApCi0KLSAgICBkZWYgdGVzdF9oYW5kbGVfcXBhY2tfZGVjb2Rlcl9zdHJl
YW1fZXJyb3Ioc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBSZWNlaXZpbmcgZ2FyYmFnZSBv
biB0aGUgUVBBQ0sgZGVjb2RlciBzdHJlYW0gdHJpZ2dlcnMgYW4gZXhjZXB0aW9uLgotICAgICAg
ICAiIiIKLSAgICAgICAgcXVpY19jbGllbnQgPSBGYWtlUXVpY0Nvbm5lY3Rpb24oCi0gICAgICAg
ICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQotICAg
ICAgICApCi0gICAgICAgIGgzX2NsaWVudCA9IEgzQ29ubmVjdGlvbihxdWljX2NsaWVudCkKLQot
ICAgICAgICBoM19jbGllbnQuaGFuZGxlX2V2ZW50KAotICAgICAgICAgICAgU3RyZWFtRGF0YVJl
Y2VpdmVkKAotICAgICAgICAgICAgICAgIHN0cmVhbV9pZD0xMSwKLSAgICAgICAgICAgICAgICBk
YXRhPWVuY29kZV91aW50X3ZhcihTdHJlYW1UeXBlLlFQQUNLX0RFQ09ERVIpICsgYiJceDAwIiwK
LSAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPUZhbHNlLAotICAgICAgICAgICAgKQotICAgICAg
ICApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBxdWljX2NsaWVudC5j
bG9zZWQsIChFcnJvckNvZGUuSFRUUF9RUEFDS19ERUNPREVSX1NUUkVBTV9FUlJPUiwgIiIpCi0g
ICAgICAgICkKLQotICAgIGRlZiB0ZXN0X2hhbmRsZV9xcGFja19lbmNvZGVyX2R1cGxpY2F0ZShz
ZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFdlIG11c3Qgb25seSByZWNlaXZlIGEgc2luZ2xl
IFFQQUNLIGVuY29kZXIgc3RyZWFtLgotICAgICAgICAiIiIKLSAgICAgICAgcXVpY19jbGllbnQg
PSBGYWtlUXVpY0Nvbm5lY3Rpb24oCi0gICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25m
aWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQotICAgICAgICApCi0gICAgICAgIGgzX2NsaWVudCA9
IEgzQ29ubmVjdGlvbihxdWljX2NsaWVudCkKLQotICAgICAgICAjIHJlY2VpdmUgYSBmaXJzdCBl
bmNvZGVyIHN0cmVhbQotICAgICAgICBoM19jbGllbnQuaGFuZGxlX2V2ZW50KAotICAgICAgICAg
ICAgU3RyZWFtRGF0YVJlY2VpdmVkKAotICAgICAgICAgICAgICAgIHN0cmVhbV9pZD0xMSwKLSAg
ICAgICAgICAgICAgICBkYXRhPWVuY29kZV91aW50X3ZhcihTdHJlYW1UeXBlLlFQQUNLX0VOQ09E
RVIpLAotICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2UsCi0gICAgICAgICAgICApCi0g
ICAgICAgICkKLQotICAgICAgICAjIHJlY2VpdmUgYSBzZWNvbmQgZW5jb2RlciBzdHJlYW0KLSAg
ICAgICAgaDNfY2xpZW50LmhhbmRsZV9ldmVudCgKLSAgICAgICAgICAgIFN0cmVhbURhdGFSZWNl
aXZlZCgKLSAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MTUsCi0gICAgICAgICAgICAgICAgZGF0
YT1lbmNvZGVfdWludF92YXIoU3RyZWFtVHlwZS5RUEFDS19FTkNPREVSKSwKLSAgICAgICAgICAg
ICAgICBlbmRfc3RyZWFtPUZhbHNlLAotICAgICAgICAgICAgKQotICAgICAgICApCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBxdWljX2NsaWVudC5jbG9zZWQsCi0gICAg
ICAgICAgICAoCi0gICAgICAgICAgICAgICAgRXJyb3JDb2RlLkhUVFBfU1RSRUFNX0NSRUFUSU9O
X0VSUk9SLAotICAgICAgICAgICAgICAgICJPbmx5IG9uZSBRUEFDSyBlbmNvZGVyIHN0cmVhbSBp
cyBhbGxvd2VkIiwKLSAgICAgICAgICAgICksCi0gICAgICAgICkKLQotICAgIGRlZiB0ZXN0X2hh
bmRsZV9xcGFja19lbmNvZGVyX3N0cmVhbV9lcnJvcihzZWxmKToKLSAgICAgICAgIiIiCi0gICAg
ICAgIFJlY2VpdmluZyBnYXJiYWdlIG9uIHRoZSBRUEFDSyBlbmNvZGVyIHN0cmVhbSB0cmlnZ2Vy
cyBhbiBleGNlcHRpb24uCi0gICAgICAgICIiIgotICAgICAgICBxdWljX2NsaWVudCA9IEZha2VR
dWljQ29ubmVjdGlvbigKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249UXVpY0NvbmZpZ3VyYXRp
b24oaXNfY2xpZW50PVRydWUpCi0gICAgICAgICkKLSAgICAgICAgaDNfY2xpZW50ID0gSDNDb25u
ZWN0aW9uKHF1aWNfY2xpZW50KQotCi0gICAgICAgIGgzX2NsaWVudC5oYW5kbGVfZXZlbnQoCi0g
ICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoCi0gICAgICAgICAgICAgICAgc3RyZWFtX2lk
PTcsCi0gICAgICAgICAgICAgICAgZGF0YT1lbmNvZGVfdWludF92YXIoU3RyZWFtVHlwZS5RUEFD
S19FTkNPREVSKSArIGIiXHgwMCIsCi0gICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1GYWxzZSwK
LSAgICAgICAgICAgICkKLSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAg
ICAgICAgICAgcXVpY19jbGllbnQuY2xvc2VkLCAoRXJyb3JDb2RlLkhUVFBfUVBBQ0tfRU5DT0RF
Ul9TVFJFQU1fRVJST1IsICIiKQotICAgICAgICApCi0KLSAgICBkZWYgdGVzdF9oYW5kbGVfcmVx
dWVzdF9mcmFtZV9iYWRfaGVhZGVycyhzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFdlIHNo
b3VsZCBub3QgcmVjZWl2ZSBIRUFERVJTIHdoaWNoIGNhbm5vdCBiZSBkZWNvZGVkLgotICAgICAg
ICAiIiIKLSAgICAgICAgcXVpY19zZXJ2ZXIgPSBGYWtlUXVpY0Nvbm5lY3Rpb24oCi0gICAgICAg
ICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1GYWxzZSkKLSAg
ICAgICAgKQotICAgICAgICBoM19zZXJ2ZXIgPSBIM0Nvbm5lY3Rpb24ocXVpY19zZXJ2ZXIpCi0K
LSAgICAgICAgaDNfc2VydmVyLmhhbmRsZV9ldmVudCgKLSAgICAgICAgICAgIFN0cmVhbURhdGFS
ZWNlaXZlZCgKLSAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwgZGF0YT1lbmNvZGVfZnJhbWUo
RnJhbWVUeXBlLkhFQURFUlMsIGIiIiksIGVuZF9zdHJlYW09RmFsc2UKLSAgICAgICAgICAgICkK
LSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgcXVpY19z
ZXJ2ZXIuY2xvc2VkLCAoRXJyb3JDb2RlLkhUVFBfUVBBQ0tfREVDT01QUkVTU0lPTl9GQUlMRUQs
ICIiKQotICAgICAgICApCi0KLSAgICBkZWYgdGVzdF9oYW5kbGVfcmVxdWVzdF9mcmFtZV9kYXRh
X2JlZm9yZV9oZWFkZXJzKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgV2Ugc2hvdWxkIG5v
dCByZWNlaXZlIERBVEEgYmVmb3JlIHJlY2VpdmluZyBoZWFkZXJzLgotICAgICAgICAiIiIKLSAg
ICAgICAgcXVpY19zZXJ2ZXIgPSBGYWtlUXVpY0Nvbm5lY3Rpb24oCi0gICAgICAgICAgICBjb25m
aWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVudD1GYWxzZSkKLSAgICAgICAgKQot
ICAgICAgICBoM19zZXJ2ZXIgPSBIM0Nvbm5lY3Rpb24ocXVpY19zZXJ2ZXIpCi0KLSAgICAgICAg
aDNfc2VydmVyLmhhbmRsZV9ldmVudCgKLSAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZCgK
LSAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwgZGF0YT1lbmNvZGVfZnJhbWUoRnJhbWVUeXBl
LkRBVEEsIGIiIiksIGVuZF9zdHJlYW09RmFsc2UKLSAgICAgICAgICAgICkKLSAgICAgICAgKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgcXVpY19zZXJ2ZXIuY2xvc2Vk
LAotICAgICAgICAgICAgKAotICAgICAgICAgICAgICAgIEVycm9yQ29kZS5IVFRQX0ZSQU1FX1VO
RVhQRUNURUQsCi0gICAgICAgICAgICAgICAgIkRBVEEgZnJhbWUgaXMgbm90IGFsbG93ZWQgaW4g
dGhpcyBzdGF0ZSIsCi0gICAgICAgICAgICApLAotICAgICAgICApCi0KLSAgICBkZWYgdGVzdF9o
YW5kbGVfcmVxdWVzdF9mcmFtZV9oZWFkZXJzX2FmdGVyX3RyYWlsZXJzKHNlbGYpOgotICAgICAg
ICAiIiIKLSAgICAgICAgV2Ugc2hvdWxkIG5vdCByZWNlaXZlIEhFQURFUlMgYWZ0ZXIgcmVjZWl2
aW5nIHRyYWlsZXJzLgotICAgICAgICAiIiIKLSAgICAgICAgcXVpY19jbGllbnQgPSBGYWtlUXVp
Y0Nvbm5lY3Rpb24oCi0gICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9u
KGlzX2NsaWVudD1UcnVlKQotICAgICAgICApCi0gICAgICAgIHF1aWNfc2VydmVyID0gRmFrZVF1
aWNDb25uZWN0aW9uKAotICAgICAgICAgICAgY29uZmlndXJhdGlvbj1RdWljQ29uZmlndXJhdGlv
bihpc19jbGllbnQ9RmFsc2UpCi0gICAgICAgICkKLQotICAgICAgICBoM19jbGllbnQgPSBIM0Nv
bm5lY3Rpb24ocXVpY19jbGllbnQpCi0gICAgICAgIGgzX3NlcnZlciA9IEgzQ29ubmVjdGlvbihx
dWljX3NlcnZlcikKLQotICAgICAgICBzdHJlYW1faWQgPSBxdWljX2NsaWVudC5nZXRfbmV4dF9h
dmFpbGFibGVfc3RyZWFtX2lkKCkKLSAgICAgICAgaDNfY2xpZW50LnNlbmRfaGVhZGVycygKLSAg
ICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCi0gICAgICAgICAgICBoZWFkZXJzPVsKLSAg
ICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwgYiJHRVQiKSwKLSAgICAgICAgICAgICAgICAoYiI6
c2NoZW1lIiwgYiJodHRwcyIpLAotICAgICAgICAgICAgICAgIChiIjphdXRob3JpdHkiLCBiImxv
Y2FsaG9zdCIpLAotICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvIiksCi0gICAgICAgICAg
ICBdLAotICAgICAgICApCi0gICAgICAgIGgzX2NsaWVudC5zZW5kX2hlYWRlcnMoCi0gICAgICAg
ICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLCBoZWFkZXJzPVsoYiJ4LXNvbWUtdHJhaWxlciIsIGIi
Zm9vIildLCBlbmRfc3RyZWFtPVRydWUKLSAgICAgICAgKQotICAgICAgICBoM190cmFuc2Zlcihx
dWljX2NsaWVudCwgaDNfc2VydmVyKQotCi0gICAgICAgIGgzX3NlcnZlci5oYW5kbGVfZXZlbnQo
Ci0gICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoCi0gICAgICAgICAgICAgICAgc3RyZWFt
X2lkPTAsIGRhdGE9ZW5jb2RlX2ZyYW1lKEZyYW1lVHlwZS5IRUFERVJTLCBiIiIpLCBlbmRfc3Ry
ZWFtPUZhbHNlCi0gICAgICAgICAgICApCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgKLSAgICAgICAgICAgIHF1aWNfc2VydmVyLmNsb3NlZCwKLSAgICAgICAgICAgICgKLSAg
ICAgICAgICAgICAgICBFcnJvckNvZGUuSFRUUF9GUkFNRV9VTkVYUEVDVEVELAotICAgICAgICAg
ICAgICAgICJIRUFERVJTIGZyYW1lIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgc3RhdGUiLAotICAg
ICAgICAgICAgKSwKLSAgICAgICAgKQotCi0gICAgZGVmIHRlc3RfaGFuZGxlX3JlcXVlc3RfZnJh
bWVfcHVzaF9wcm9taXNlX2Zyb21fY2xpZW50KHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAg
QSBzZXJ2ZXIgc2hvdWxkIG5vdCByZWNlaXZlIFBVU0hfUFJPTUlTRSBvbiBhIHJlcXVlc3Qgc3Ry
ZWFtLgotICAgICAgICAiIiIKLSAgICAgICAgcXVpY19zZXJ2ZXIgPSBGYWtlUXVpY0Nvbm5lY3Rp
b24oCi0gICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWNDb25maWd1cmF0aW9uKGlzX2NsaWVu
dD1GYWxzZSkKLSAgICAgICAgKQotICAgICAgICBoM19zZXJ2ZXIgPSBIM0Nvbm5lY3Rpb24ocXVp
Y19zZXJ2ZXIpCi0KLSAgICAgICAgaDNfc2VydmVyLmhhbmRsZV9ldmVudCgKLSAgICAgICAgICAg
IFN0cmVhbURhdGFSZWNlaXZlZCgKLSAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwKLSAgICAg
ICAgICAgICAgICBkYXRhPWVuY29kZV9mcmFtZShGcmFtZVR5cGUuUFVTSF9QUk9NSVNFLCBiIiIp
LAotICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2UsCi0gICAgICAgICAgICApCi0gICAg
ICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIHF1aWNfc2VydmVy
LmNsb3NlZCwKLSAgICAgICAgICAgIChFcnJvckNvZGUuSFRUUF9GUkFNRV9VTkVYUEVDVEVELCAi
Q2xpZW50cyBtdXN0IG5vdCBzZW5kIFBVU0hfUFJPTUlTRSIpLAotICAgICAgICApCi0KLSAgICBk
ZWYgdGVzdF9oYW5kbGVfcmVxdWVzdF9mcmFtZV93cm9uZ19mcmFtZV90eXBlKHNlbGYpOgotICAg
ICAgICBxdWljX3NlcnZlciA9IEZha2VRdWljQ29ubmVjdGlvbigKLSAgICAgICAgICAgIGNvbmZp
Z3VyYXRpb249UXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PUZhbHNlKQotICAgICAgICApCi0g
ICAgICAgIGgzX3NlcnZlciA9IEgzQ29ubmVjdGlvbihxdWljX3NlcnZlcikKLQotICAgICAgICBo
M19zZXJ2ZXIuaGFuZGxlX2V2ZW50KAotICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKAot
ICAgICAgICAgICAgICAgIHN0cmVhbV9pZD0wLAotICAgICAgICAgICAgICAgIGRhdGE9ZW5jb2Rl
X2ZyYW1lKEZyYW1lVHlwZS5TRVRUSU5HUywgYiIiKSwKLSAgICAgICAgICAgICAgICBlbmRfc3Ry
ZWFtPUZhbHNlLAotICAgICAgICAgICAgKQotICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCi0gICAgICAgICAgICBxdWljX3NlcnZlci5jbG9zZWQsCi0gICAgICAgICAgICAoRXJy
b3JDb2RlLkhUVFBfRlJBTUVfVU5FWFBFQ1RFRCwgIkludmFsaWQgZnJhbWUgdHlwZSBvbiByZXF1
ZXN0IHN0cmVhbSIpLAotICAgICAgICApCi0KLSAgICBkZWYgdGVzdF9yZXF1ZXN0KHNlbGYpOgot
ICAgICAgICB3aXRoIGgzX2NsaWVudF9hbmRfc2VydmVyKCkgYXMgKHF1aWNfY2xpZW50LCBxdWlj
X3NlcnZlcik6Ci0gICAgICAgICAgICBoM19jbGllbnQgPSBIM0Nvbm5lY3Rpb24ocXVpY19jbGll
bnQpCi0gICAgICAgICAgICBoM19zZXJ2ZXIgPSBIM0Nvbm5lY3Rpb24ocXVpY19zZXJ2ZXIpCi0K
LSAgICAgICAgICAgICMgbWFrZSBmaXJzdCByZXF1ZXN0Ci0gICAgICAgICAgICBzZWxmLl9tYWtl
X3JlcXVlc3QoaDNfY2xpZW50LCBoM19zZXJ2ZXIpCi0KLSAgICAgICAgICAgICMgbWFrZSBzZWNv
bmQgcmVxdWVzdAotICAgICAgICAgICAgc2VsZi5fbWFrZV9yZXF1ZXN0KGgzX2NsaWVudCwgaDNf
c2VydmVyKQotCi0gICAgICAgICAgICAjIG1ha2UgdGhpcmQgcmVxdWVzdCAtPiBkeW5hbWljIHRh
YmxlCi0gICAgICAgICAgICBzZWxmLl9tYWtlX3JlcXVlc3QoaDNfY2xpZW50LCBoM19zZXJ2ZXIp
Ci0KLSAgICBkZWYgdGVzdF9yZXF1ZXN0X2hlYWRlcnNfb25seShzZWxmKToKLSAgICAgICAgd2l0
aCBoM19jbGllbnRfYW5kX3NlcnZlcigpIGFzIChxdWljX2NsaWVudCwgcXVpY19zZXJ2ZXIpOgot
ICAgICAgICAgICAgaDNfY2xpZW50ID0gSDNDb25uZWN0aW9uKHF1aWNfY2xpZW50KQotICAgICAg
ICAgICAgaDNfc2VydmVyID0gSDNDb25uZWN0aW9uKHF1aWNfc2VydmVyKQotCi0gICAgICAgICAg
ICAjIHNlbmQgcmVxdWVzdAotICAgICAgICAgICAgc3RyZWFtX2lkID0gcXVpY19jbGllbnQuZ2V0
X25leHRfYXZhaWxhYmxlX3N0cmVhbV9pZCgpCi0gICAgICAgICAgICBoM19jbGllbnQuc2VuZF9o
ZWFkZXJzKAotICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCi0gICAgICAgICAg
ICAgICAgaGVhZGVycz1bCi0gICAgICAgICAgICAgICAgICAgIChiIjptZXRob2QiLCBiIkhFQUQi
KSwKLSAgICAgICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIsIGIiaHR0cHMiKSwKLSAgICAgICAg
ICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0IiksCi0gICAgICAgICAgICAg
ICAgICAgIChiIjpwYXRoIiwgYiIvIiksCi0gICAgICAgICAgICAgICAgICAgIChiIngtZm9vIiwg
YiJjbGllbnQiKSwKLSAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIGVuZF9zdHJl
YW09VHJ1ZSwKLSAgICAgICAgICAgICkKLQotICAgICAgICAgICAgIyByZWNlaXZlIHJlcXVlc3QK
LSAgICAgICAgICAgIGV2ZW50cyA9IGgzX3RyYW5zZmVyKHF1aWNfY2xpZW50LCBoM19zZXJ2ZXIp
Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgICAgIGV2ZW50cywK
LSAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgIEhlYWRlcnNSZWNlaXZlZCgK
LSAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChiIjptZXRob2QiLCBiIkhFQUQiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChi
IjphdXRob3JpdHkiLCBiImxvY2FsaG9zdCIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChiIjpwYXRoIiwgYiIvIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIieC1mb28i
LCBiImNsaWVudCIpLAotICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCi0gICAgICAgICAgICAgICAgICAgICAgICBz
dHJlYW1fZW5kZWQ9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAg
IF0sCi0gICAgICAgICAgICApCi0KLSAgICAgICAgICAgICMgc2VuZCByZXNwb25zZQotICAgICAg
ICAgICAgaDNfc2VydmVyLnNlbmRfaGVhZGVycygKLSAgICAgICAgICAgICAgICBzdHJlYW1faWQ9
c3RyZWFtX2lkLAotICAgICAgICAgICAgICAgIGhlYWRlcnM9WwotICAgICAgICAgICAgICAgICAg
ICAoYiI6c3RhdHVzIiwgYiIyMDAiKSwKLSAgICAgICAgICAgICAgICAgICAgKGIiY29udGVudC10
eXBlIiwgYiJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiKSwKLSAgICAgICAgICAgICAgICAgICAg
KGIieC1mb28iLCBiInNlcnZlciIpLAotICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAg
ICAgZW5kX3N0cmVhbT1UcnVlLAotICAgICAgICAgICAgKQotCi0gICAgICAgICAgICAjIHJlY2Vp
dmUgcmVzcG9uc2UKLSAgICAgICAgICAgIGV2ZW50cyA9IGgzX3RyYW5zZmVyKHF1aWNfc2VydmVy
LCBoM19jbGllbnQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAg
ICAgIGV2ZW50cywKLSAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgIEhlYWRl
cnNSZWNlaXZlZCgKLSAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChiIjpzdGF0dXMiLCBiIjIwMCIpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChiImNvbnRlbnQtdHlwZSIsIGIidGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04
IiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIieC1mb28iLCBiInNlcnZlciIpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVh
bV9pZD1zdHJlYW1faWQsCi0gICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9VHJ1
ZSwKLSAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAg
ICApCi0KLSAgICBkZWYgdGVzdF9yZXF1ZXN0X2ZyYWdtZW50ZWRfZnJhbWUoc2VsZik6Ci0gICAg
ICAgIHF1aWNfY2xpZW50ID0gRmFrZVF1aWNDb25uZWN0aW9uKAotICAgICAgICAgICAgY29uZmln
dXJhdGlvbj1RdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9VHJ1ZSkKLSAgICAgICAgKQotICAg
ICAgICBxdWljX3NlcnZlciA9IEZha2VRdWljQ29ubmVjdGlvbigKLSAgICAgICAgICAgIGNvbmZp
Z3VyYXRpb249UXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PUZhbHNlKQotICAgICAgICApCi0K
LSAgICAgICAgaDNfY2xpZW50ID0gSDNDb25uZWN0aW9uKHF1aWNfY2xpZW50KQotICAgICAgICBo
M19zZXJ2ZXIgPSBIM0Nvbm5lY3Rpb24ocXVpY19zZXJ2ZXIpCi0KLSAgICAgICAgIyBzZW5kIHJl
cXVlc3QKLSAgICAgICAgc3RyZWFtX2lkID0gcXVpY19jbGllbnQuZ2V0X25leHRfYXZhaWxhYmxl
X3N0cmVhbV9pZCgpCi0gICAgICAgIGgzX2NsaWVudC5zZW5kX2hlYWRlcnMoCi0gICAgICAgICAg
ICBzdHJlYW1faWQ9c3RyZWFtX2lkLAotICAgICAgICAgICAgaGVhZGVycz1bCi0gICAgICAgICAg
ICAgICAgKGIiOm1ldGhvZCIsIGIiR0VUIiksCi0gICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIs
IGIiaHR0cHMiKSwKLSAgICAgICAgICAgICAgICAoYiI6YXV0aG9yaXR5IiwgYiJsb2NhbGhvc3Qi
KSwKLSAgICAgICAgICAgICAgICAoYiI6cGF0aCIsIGIiLyIpLAotICAgICAgICAgICAgICAgIChi
IngtZm9vIiwgYiJjbGllbnQiKSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICkKLSAgICAgICAg
aDNfY2xpZW50LnNlbmRfZGF0YShzdHJlYW1faWQ9c3RyZWFtX2lkLCBkYXRhPWIiaGVsbG8iLCBl
bmRfc3RyZWFtPVRydWUpCi0KLSAgICAgICAgIyByZWNlaXZlIHJlcXVlc3QKLSAgICAgICAgZXZl
bnRzID0gaDNfdHJhbnNmZXIocXVpY19jbGllbnQsIGgzX3NlcnZlcikKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGV2ZW50cywKLSAgICAgICAgICAgIFsKLSAgICAgICAg
ICAgICAgICBIZWFkZXJzUmVjZWl2ZWQoCi0gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9Wwot
ICAgICAgICAgICAgICAgICAgICAgICAgKGIiOm1ldGhvZCIsIGIiR0VUIiksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0IiksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAoYiI6cGF0aCIsIGIiLyIpLAotICAgICAgICAgICAgICAgICAgICAgICAgKGIieC1mb28i
LCBiImNsaWVudCIpLAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAg
ICBzdHJlYW1faWQ9c3RyZWFtX2lkLAotICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9
RmFsc2UsCi0gICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQo
ZGF0YT1iImgiLCBzdHJlYW1faWQ9MCwgc3RyZWFtX2VuZGVkPUZhbHNlKSwKLSAgICAgICAgICAg
ICAgICBEYXRhUmVjZWl2ZWQoZGF0YT1iImUiLCBzdHJlYW1faWQ9MCwgc3RyZWFtX2VuZGVkPUZh
bHNlKSwKLSAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoZGF0YT1iImwiLCBzdHJlYW1faWQ9
MCwgc3RyZWFtX2VuZGVkPUZhbHNlKSwKLSAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoZGF0
YT1iImwiLCBzdHJlYW1faWQ9MCwgc3RyZWFtX2VuZGVkPUZhbHNlKSwKLSAgICAgICAgICAgICAg
ICBEYXRhUmVjZWl2ZWQoZGF0YT1iIm8iLCBzdHJlYW1faWQ9MCwgc3RyZWFtX2VuZGVkPUZhbHNl
KSwKLSAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoZGF0YT1iIiIsIHN0cmVhbV9pZD0wLCBz
dHJlYW1fZW5kZWQ9VHJ1ZSksCi0gICAgICAgICAgICBdLAotICAgICAgICApCi0KLSAgICAgICAg
IyBzZW5kIHB1c2ggcHJvbWlzZQotICAgICAgICBwdXNoX3N0cmVhbV9pZCA9IGgzX3NlcnZlci5z
ZW5kX3B1c2hfcHJvbWlzZSgKLSAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCi0gICAg
ICAgICAgICBoZWFkZXJzPVsKLSAgICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwgYiJHRVQiKSwK
LSAgICAgICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAotICAgICAgICAgICAgICAg
IChiIjphdXRob3JpdHkiLCBiImxvY2FsaG9zdCIpLAotICAgICAgICAgICAgICAgIChiIjpwYXRo
IiwgYiIvYXBwLnR4dCIpLAotICAgICAgICAgICAgXSwKLSAgICAgICAgKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHB1c2hfc3RyZWFtX2lkLCAxNSkKLQotICAgICAgICAjIHNlbmQgcmVzcG9u
c2UKLSAgICAgICAgaDNfc2VydmVyLnNlbmRfaGVhZGVycygKLSAgICAgICAgICAgIHN0cmVhbV9p
ZD1zdHJlYW1faWQsCi0gICAgICAgICAgICBoZWFkZXJzPVsKLSAgICAgICAgICAgICAgICAoYiI6
c3RhdHVzIiwgYiIyMDAiKSwKLSAgICAgICAgICAgICAgICAoYiJjb250ZW50LXR5cGUiLCBiInRl
eHQvaHRtbDsgY2hhcnNldD11dGYtOCIpLAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgIGVu
ZF9zdHJlYW09RmFsc2UsCi0gICAgICAgICkKLSAgICAgICAgaDNfc2VydmVyLnNlbmRfZGF0YShz
dHJlYW1faWQ9c3RyZWFtX2lkLCBkYXRhPWIiaHRtbCIsIGVuZF9zdHJlYW09VHJ1ZSkKLQotICAg
ICAgICAjIMKgZnVsZmlsbCBwdXNoIHByb21pc2UKLSAgICAgICAgaDNfc2VydmVyLnNlbmRfaGVh
ZGVycygKLSAgICAgICAgICAgIHN0cmVhbV9pZD1wdXNoX3N0cmVhbV9pZCwKLSAgICAgICAgICAg
IGhlYWRlcnM9WyhiIjpzdGF0dXMiLCBiIjIwMCIpLCAoYiJjb250ZW50LXR5cGUiLCBiInRleHQv
cGxhaW4iKV0sCi0gICAgICAgICAgICBlbmRfc3RyZWFtPUZhbHNlLAotICAgICAgICApCi0gICAg
ICAgIGgzX3NlcnZlci5zZW5kX2RhdGEoc3RyZWFtX2lkPXB1c2hfc3RyZWFtX2lkLCBkYXRhPWIi
dGV4dCIsIGVuZF9zdHJlYW09VHJ1ZSkKLQotICAgICAgICAjIHJlY2VpdmUgcHVzaCBwcm9taXNl
IC8gcmVwb25zZQotICAgICAgICBldmVudHMgPSBoM190cmFuc2ZlcihxdWljX3NlcnZlciwgaDNf
Y2xpZW50KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgZXZlbnRzLAot
ICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgIFB1c2hQcm9taXNlUmVjZWl2ZWQoCi0gICAg
ICAgICAgICAgICAgICAgIGhlYWRlcnM9WwotICAgICAgICAgICAgICAgICAgICAgICAgKGIiOm1l
dGhvZCIsIGIiR0VUIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJo
dHRwcyIpLAotICAgICAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxo
b3N0IiksCi0gICAgICAgICAgICAgICAgICAgICAgICAoYiI6cGF0aCIsIGIiL2FwcC50eHQiKSwK
LSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgcHVzaF9pZD0wLAot
ICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAotICAgICAgICAgICAgICAg
ICksCi0gICAgICAgICAgICAgICAgSGVhZGVyc1JlY2VpdmVkKAotICAgICAgICAgICAgICAgICAg
ICBoZWFkZXJzPVsKLSAgICAgICAgICAgICAgICAgICAgICAgIChiIjpzdGF0dXMiLCBiIjIwMCIp
LAotICAgICAgICAgICAgICAgICAgICAgICAgKGIiY29udGVudC10eXBlIiwgYiJ0ZXh0L2h0bWw7
IGNoYXJzZXQ9dXRmLTgiKSwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAg
ICAgICAgc3RyZWFtX2lkPTAsCi0gICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1GYWxz
ZSwKLSAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgICAgIERhdGFSZWNlaXZlZChkYXRh
PWIiaCIsIHN0cmVhbV9pZD0wLCBzdHJlYW1fZW5kZWQ9RmFsc2UpLAotICAgICAgICAgICAgICAg
IERhdGFSZWNlaXZlZChkYXRhPWIidCIsIHN0cmVhbV9pZD0wLCBzdHJlYW1fZW5kZWQ9RmFsc2Up
LAotICAgICAgICAgICAgICAgIERhdGFSZWNlaXZlZChkYXRhPWIibSIsIHN0cmVhbV9pZD0wLCBz
dHJlYW1fZW5kZWQ9RmFsc2UpLAotICAgICAgICAgICAgICAgIERhdGFSZWNlaXZlZChkYXRhPWIi
bCIsIHN0cmVhbV9pZD0wLCBzdHJlYW1fZW5kZWQ9RmFsc2UpLAotICAgICAgICAgICAgICAgIERh
dGFSZWNlaXZlZChkYXRhPWIiIiwgc3RyZWFtX2lkPTAsIHN0cmVhbV9lbmRlZD1UcnVlKSwKLSAg
ICAgICAgICAgICAgICBIZWFkZXJzUmVjZWl2ZWQoCi0gICAgICAgICAgICAgICAgICAgIGhlYWRl
cnM9WyhiIjpzdGF0dXMiLCBiIjIwMCIpLCAoYiJjb250ZW50LXR5cGUiLCBiInRleHQvcGxhaW4i
KV0sCi0gICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD0xNSwKLSAgICAgICAgICAgICAgICAg
ICAgc3RyZWFtX2VuZGVkPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICBwdXNoX2lkPTAsCi0g
ICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoZGF0YT1iInQi
LCBzdHJlYW1faWQ9MTUsIHN0cmVhbV9lbmRlZD1GYWxzZSwgcHVzaF9pZD0wKSwKLSAgICAgICAg
ICAgICAgICBEYXRhUmVjZWl2ZWQoZGF0YT1iImUiLCBzdHJlYW1faWQ9MTUsIHN0cmVhbV9lbmRl
ZD1GYWxzZSwgcHVzaF9pZD0wKSwKLSAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoZGF0YT1i
IngiLCBzdHJlYW1faWQ9MTUsIHN0cmVhbV9lbmRlZD1GYWxzZSwgcHVzaF9pZD0wKSwKLSAgICAg
ICAgICAgICAgICBEYXRhUmVjZWl2ZWQoZGF0YT1iInQiLCBzdHJlYW1faWQ9MTUsIHN0cmVhbV9l
bmRlZD1GYWxzZSwgcHVzaF9pZD0wKSwKLSAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoZGF0
YT1iIiIsIHN0cmVhbV9pZD0xNSwgc3RyZWFtX2VuZGVkPVRydWUsIHB1c2hfaWQ9MCksCi0gICAg
ICAgICAgICBdLAotICAgICAgICApCi0KLSAgICBkZWYgdGVzdF9yZXF1ZXN0X3dpdGhfc2VydmVy
X3B1c2goc2VsZik6Ci0gICAgICAgIHdpdGggaDNfY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAocXVp
Y19jbGllbnQsIHF1aWNfc2VydmVyKToKLSAgICAgICAgICAgIGgzX2NsaWVudCA9IEgzQ29ubmVj
dGlvbihxdWljX2NsaWVudCkKLSAgICAgICAgICAgIGgzX3NlcnZlciA9IEgzQ29ubmVjdGlvbihx
dWljX3NlcnZlcikKLQotICAgICAgICAgICAgIyBzZW5kIHJlcXVlc3QKLSAgICAgICAgICAgIHN0
cmVhbV9pZCA9IHF1aWNfY2xpZW50LmdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQoKQotICAg
ICAgICAgICAgaDNfY2xpZW50LnNlbmRfaGVhZGVycygKLSAgICAgICAgICAgICAgICBzdHJlYW1f
aWQ9c3RyZWFtX2lkLAotICAgICAgICAgICAgICAgIGhlYWRlcnM9WwotICAgICAgICAgICAgICAg
ICAgICAoYiI6bWV0aG9kIiwgYiJHRVQiKSwKLSAgICAgICAgICAgICAgICAgICAgKGIiOnNjaGVt
ZSIsIGIiaHR0cHMiKSwKLSAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9j
YWxob3N0IiksCi0gICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvIiksCi0gICAgICAg
ICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPVRydWUsCi0gICAgICAgICAg
ICApCi0KLSAgICAgICAgICAgICMgcmVjZWl2ZSByZXF1ZXN0Ci0gICAgICAgICAgICBldmVudHMg
PSBoM190cmFuc2ZlcihxdWljX2NsaWVudCwgaDNfc2VydmVyKQotICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgKLSAgICAgICAgICAgICAgICBldmVudHMsCi0gICAgICAgICAgICAgICAgWwot
ICAgICAgICAgICAgICAgICAgICBIZWFkZXJzUmVjZWl2ZWQoCi0gICAgICAgICAgICAgICAgICAg
ICAgICBoZWFkZXJzPVsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwg
YiJHRVQiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRw
cyIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiIjphdXRob3JpdHkiLCBiImxvY2Fs
aG9zdCIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvIiksCi0g
ICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFt
X2lkPXN0cmVhbV9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1UcnVl
LAotICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAg
ICkKLQotICAgICAgICAgICAgIyBzZW5kIHB1c2ggcHJvbWlzZXMKLSAgICAgICAgICAgIHB1c2hf
c3RyZWFtX2lkX2NzcyA9IGgzX3NlcnZlci5zZW5kX3B1c2hfcHJvbWlzZSgKLSAgICAgICAgICAg
ICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAotICAgICAgICAgICAgICAgIGhlYWRlcnM9WwotICAg
ICAgICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwgYiJHRVQiKSwKLSAgICAgICAgICAgICAgICAg
ICAgKGIiOnNjaGVtZSIsIGIiaHR0cHMiKSwKLSAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhv
cml0eSIsIGIibG9jYWxob3N0IiksCi0gICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIv
YXBwLmNzcyIpLAotICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICApCi0gICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHB1c2hfc3RyZWFtX2lkX2NzcywgMTUpCi0KLSAgICAgICAgICAg
IHB1c2hfc3RyZWFtX2lkX2pzID0gaDNfc2VydmVyLnNlbmRfcHVzaF9wcm9taXNlKAotICAgICAg
ICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCi0gICAgICAgICAgICAgICAgaGVhZGVycz1b
Ci0gICAgICAgICAgICAgICAgICAgIChiIjptZXRob2QiLCBiIkdFVCIpLAotICAgICAgICAgICAg
ICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAotICAgICAgICAgICAgICAgICAgICAoYiI6
YXV0aG9yaXR5IiwgYiJsb2NhbGhvc3QiKSwKLSAgICAgICAgICAgICAgICAgICAgKGIiOnBhdGgi
LCBiIi9hcHAuanMiKSwKLSAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgKQotICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdXNoX3N0cmVhbV9pZF9qcywgMTkpCi0KLSAgICAgICAg
ICAgICMgc2VuZCByZXNwb25zZQotICAgICAgICAgICAgaDNfc2VydmVyLnNlbmRfaGVhZGVycygK
LSAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAotICAgICAgICAgICAgICAgIGhl
YWRlcnM9WwotICAgICAgICAgICAgICAgICAgICAoYiI6c3RhdHVzIiwgYiIyMDAiKSwKLSAgICAg
ICAgICAgICAgICAgICAgKGIiY29udGVudC10eXBlIiwgYiJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRm
LTgiKSwKLSAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09RmFs
c2UsCi0gICAgICAgICAgICApCi0gICAgICAgICAgICBoM19zZXJ2ZXIuc2VuZF9kYXRhKAotICAg
ICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCi0gICAgICAgICAgICAgICAgZGF0YT1i
IjxodG1sPjxib2R5PmhlbGxvPC9ib2R5PjwvaHRtbD4iLAotICAgICAgICAgICAgICAgIGVuZF9z
dHJlYW09VHJ1ZSwKLSAgICAgICAgICAgICkKLQotICAgICAgICAgICAgIyDCoGZ1bGZpbGwgcHVz
aCBwcm9taXNlcwotICAgICAgICAgICAgaDNfc2VydmVyLnNlbmRfaGVhZGVycygKLSAgICAgICAg
ICAgICAgICBzdHJlYW1faWQ9cHVzaF9zdHJlYW1faWRfY3NzLAotICAgICAgICAgICAgICAgIGhl
YWRlcnM9WyhiIjpzdGF0dXMiLCBiIjIwMCIpLCAoYiJjb250ZW50LXR5cGUiLCBiInRleHQvY3Nz
IildLAotICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2UsCi0gICAgICAgICAgICApCi0g
ICAgICAgICAgICBoM19zZXJ2ZXIuc2VuZF9kYXRhKAotICAgICAgICAgICAgICAgIHN0cmVhbV9p
ZD1wdXNoX3N0cmVhbV9pZF9jc3MsCi0gICAgICAgICAgICAgICAgZGF0YT1iImJvZHkgeyBjb2xv
cjogcGluayB9IiwKLSAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPVRydWUsCi0gICAgICAgICAg
ICApCi0KLSAgICAgICAgICAgIGgzX3NlcnZlci5zZW5kX2hlYWRlcnMoCi0gICAgICAgICAgICAg
ICAgc3RyZWFtX2lkPXB1c2hfc3RyZWFtX2lkX2pzLAotICAgICAgICAgICAgICAgIGhlYWRlcnM9
WwotICAgICAgICAgICAgICAgICAgICAoYiI6c3RhdHVzIiwgYiIyMDAiKSwKLSAgICAgICAgICAg
ICAgICAgICAgKGIiY29udGVudC10eXBlIiwgYiJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiksCi0g
ICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPUZhbHNlLAotICAg
ICAgICAgICAgKQotICAgICAgICAgICAgaDNfc2VydmVyLnNlbmRfZGF0YSgKLSAgICAgICAgICAg
ICAgICBzdHJlYW1faWQ9cHVzaF9zdHJlYW1faWRfanMsIGRhdGE9YiJhbGVydCgnaG93ZGVlJyk7
IiwgZW5kX3N0cmVhbT1UcnVlCi0gICAgICAgICAgICApCi0KLSAgICAgICAgICAgICMgcmVjZWl2
ZSBwdXNoIHByb21pc2VzLCByZXNwb25zZSBhbmQgcHVzaCByZXNwb25zZXMKLQotICAgICAgICAg
ICAgZXZlbnRzID0gaDNfdHJhbnNmZXIocXVpY19zZXJ2ZXIsIGgzX2NsaWVudCkKLSAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICAgICAgZXZlbnRzLAotICAgICAgICAg
ICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgUHVzaFByb21pc2VSZWNlaXZlZCgKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChiIjptZXRob2QiLCBiIkdFVCIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiIjpz
Y2hlbWUiLCBiImh0dHBzIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhv
cml0eSIsIGIibG9jYWxob3N0IiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIiOnBh
dGgiLCBiIi9hcHAuY3NzIiksCi0gICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAg
ICAgICAgICAgICAgICAgcHVzaF9pZD0wLAotICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFt
X2lkPXN0cmVhbV9pZCwKLSAgICAgICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICAg
ICAgUHVzaFByb21pc2VSZWNlaXZlZCgKLSAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9
WwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiIjptZXRob2QiLCBiIkdFVCIpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChiIjpzY2hlbWUiLCBiImh0dHBzIiksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0IiksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKGIiOnBhdGgiLCBiIi9hcHAuanMiKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoX2lkPTEsCi0g
ICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLAotICAgICAgICAgICAg
ICAgICAgICApLAotICAgICAgICAgICAgICAgICAgICBIZWFkZXJzUmVjZWl2ZWQoCi0gICAgICAg
ICAgICAgICAgICAgICAgICBoZWFkZXJzPVsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
YiI6c3RhdHVzIiwgYiIyMDAiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiJjb250
ZW50LXR5cGUiLCBiInRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9RmFsc2UsCi0gICAgICAgICAg
ICAgICAgICAgICksCi0gICAgICAgICAgICAgICAgICAgIERhdGFSZWNlaXZlZCgKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGRhdGE9YiI8aHRtbD48Ym9keT5oZWxsbzwvYm9keT48L2h0bWw+IiwK
LSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgKSwK
LSAgICAgICAgICAgICAgICAgICAgSGVhZGVyc1JlY2VpdmVkKAotICAgICAgICAgICAgICAgICAg
ICAgICAgaGVhZGVycz1bKGIiOnN0YXR1cyIsIGIiMjAwIiksIChiImNvbnRlbnQtdHlwZSIsIGIi
dGV4dC9jc3MiKV0sCi0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoX2lkPTAsCi0gICAgICAg
ICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9cHVzaF9zdHJlYW1faWRfY3NzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVkPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAp
LAotICAgICAgICAgICAgICAgICAgICBEYXRhUmVjZWl2ZWQoCi0gICAgICAgICAgICAgICAgICAg
ICAgICBkYXRhPWIiYm9keSB7IGNvbG9yOiBwaW5rIH0iLAotICAgICAgICAgICAgICAgICAgICAg
ICAgcHVzaF9pZD0wLAotICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXB1c2hfc3Ry
ZWFtX2lkX2NzcywKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1UcnVlLAot
ICAgICAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgICAgICAgICBIZWFkZXJzUmVjZWl2
ZWQoCi0gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPVsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoYiI6c3RhdHVzIiwgYiIyMDAiKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoYiJjb250ZW50LXR5cGUiLCBiImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoX2lkPTEs
Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9cHVzaF9zdHJlYW1faWRfanMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9RmFsc2UsCi0gICAgICAgICAgICAg
ICAgICAgICksCi0gICAgICAgICAgICAgICAgICAgIERhdGFSZWNlaXZlZCgKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGRhdGE9YiJhbGVydCgnaG93ZGVlJyk7IiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHB1c2hfaWQ9MSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1wdXNo
X3N0cmVhbV9pZF9qcywKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1UcnVl
LAotICAgICAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAg
ICApCi0KLSAgICBkZWYgdGVzdF9yZXF1ZXN0X3dpdGhfc2VydmVyX3B1c2hfbWF4X3B1c2hfaWQo
c2VsZik6Ci0gICAgICAgIHdpdGggaDNfY2xpZW50X2FuZF9zZXJ2ZXIoKSBhcyAocXVpY19jbGll
bnQsIHF1aWNfc2VydmVyKToKLSAgICAgICAgICAgIGgzX2NsaWVudCA9IEgzQ29ubmVjdGlvbihx
dWljX2NsaWVudCkKLSAgICAgICAgICAgIGgzX3NlcnZlciA9IEgzQ29ubmVjdGlvbihxdWljX3Nl
cnZlcikKLQotICAgICAgICAgICAgIyBzZW5kIHJlcXVlc3QKLSAgICAgICAgICAgIHN0cmVhbV9p
ZCA9IHF1aWNfY2xpZW50LmdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQoKQotICAgICAgICAg
ICAgaDNfY2xpZW50LnNlbmRfaGVhZGVycygKLSAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3Ry
ZWFtX2lkLAotICAgICAgICAgICAgICAgIGhlYWRlcnM9WwotICAgICAgICAgICAgICAgICAgICAo
YiI6bWV0aG9kIiwgYiJHRVQiKSwKLSAgICAgICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIsIGIi
aHR0cHMiKSwKLSAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0
IiksCi0gICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvIiksCi0gICAgICAgICAgICAg
ICAgXSwKLSAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPVRydWUsCi0gICAgICAgICAgICApCi0K
LSAgICAgICAgICAgICMgcmVjZWl2ZSByZXF1ZXN0Ci0gICAgICAgICAgICBldmVudHMgPSBoM190
cmFuc2ZlcihxdWljX2NsaWVudCwgaDNfc2VydmVyKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgKLSAgICAgICAgICAgICAgICBldmVudHMsCi0gICAgICAgICAgICAgICAgWwotICAgICAg
ICAgICAgICAgICAgICBIZWFkZXJzUmVjZWl2ZWQoCi0gICAgICAgICAgICAgICAgICAgICAgICBo
ZWFkZXJzPVsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwgYiJHRVQi
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiIjphdXRob3JpdHkiLCBiImxvY2FsaG9zdCIp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvIiksCi0gICAgICAg
ICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0
cmVhbV9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1UcnVlLAotICAg
ICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICkKLQot
ICAgICAgICAgICAgIyBzZW5kIHB1c2ggcHJvbWlzZXMKLSAgICAgICAgICAgIGZvciBpIGluIHJh
bmdlKDAsIDgpOgotICAgICAgICAgICAgICAgIGgzX3NlcnZlci5zZW5kX3B1c2hfcHJvbWlzZSgK
LSAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwKLSAgICAgICAgICAgICAg
ICAgICAgaGVhZGVycz1bCi0gICAgICAgICAgICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwgYiJH
RVQiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIChiIjpzY2hlbWUiLCBiImh0dHBzIiksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAoYiI6YXV0aG9yaXR5IiwgYiJsb2NhbGhvc3QiKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgIi97fS5jc3MiLmZvcm1hdChpKS5lbmNv
ZGUoImFzY2lpIikpLAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICkK
LQotICAgICAgICAgICAgIyBzZW5kIG9uZSB0b28gbWFueQotICAgICAgICAgICAgd2l0aCBzZWxm
LmFzc2VydFJhaXNlcyhOb0F2YWlsYWJsZVB1c2hJREVycm9yKToKLSAgICAgICAgICAgICAgICBo
M19zZXJ2ZXIuc2VuZF9wdXNoX3Byb21pc2UoCi0gICAgICAgICAgICAgICAgICAgIHN0cmVhbV9p
ZD1zdHJlYW1faWQsCi0gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WwotICAgICAgICAgICAg
ICAgICAgICAgICAgKGIiOm1ldGhvZCIsIGIiR0VUIiksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAotICAgICAgICAgICAgICAgICAgICAgICAgKGIiOmF1
dGhvcml0eSIsIGIibG9jYWxob3N0IiksCi0gICAgICAgICAgICAgICAgICAgICAgICAoYiI6cGF0
aCIsIGIiLzguY3NzIiksCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAg
KQotCi0gICAgZGVmIHRlc3Rfc2VuZF9kYXRhX2FmdGVyX3RyYWlsZXJzKHNlbGYpOgotICAgICAg
ICAiIiIKLSAgICAgICAgV2Ugc2hvdWxkIG5vdCBzZW5kIERBVEEgYWZ0ZXIgdHJhaWxlcnMuCi0g
ICAgICAgICIiIgotICAgICAgICBxdWljX2NsaWVudCA9IEZha2VRdWljQ29ubmVjdGlvbigKLSAg
ICAgICAgICAgIGNvbmZpZ3VyYXRpb249UXVpY0NvbmZpZ3VyYXRpb24oaXNfY2xpZW50PVRydWUp
Ci0gICAgICAgICkKLSAgICAgICAgaDNfY2xpZW50ID0gSDNDb25uZWN0aW9uKHF1aWNfY2xpZW50
KQotCi0gICAgICAgIHN0cmVhbV9pZCA9IHF1aWNfY2xpZW50LmdldF9uZXh0X2F2YWlsYWJsZV9z
dHJlYW1faWQoKQotICAgICAgICBoM19jbGllbnQuc2VuZF9oZWFkZXJzKAotICAgICAgICAgICAg
c3RyZWFtX2lkPXN0cmVhbV9pZCwKLSAgICAgICAgICAgIGhlYWRlcnM9WwotICAgICAgICAgICAg
ICAgIChiIjptZXRob2QiLCBiIkdFVCIpLAotICAgICAgICAgICAgICAgIChiIjpzY2hlbWUiLCBi
Imh0dHBzIiksCi0gICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0Iiks
Ci0gICAgICAgICAgICAgICAgKGIiOnBhdGgiLCBiIi8iKSwKLSAgICAgICAgICAgIF0sCi0gICAg
ICAgICkKLSAgICAgICAgaDNfY2xpZW50LnNlbmRfaGVhZGVycygKLSAgICAgICAgICAgIHN0cmVh
bV9pZD1zdHJlYW1faWQsIGhlYWRlcnM9WyhiIngtc29tZS10cmFpbGVyIiwgYiJmb28iKV0sIGVu
ZF9zdHJlYW09RmFsc2UKLSAgICAgICAgKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2Vz
KEZyYW1lVW5leHBlY3RlZCk6Ci0gICAgICAgICAgICBoM19jbGllbnQuc2VuZF9kYXRhKHN0cmVh
bV9pZD1zdHJlYW1faWQsIGRhdGE9YiJoZWxsbyIsIGVuZF9zdHJlYW09RmFsc2UpCi0KLSAgICBk
ZWYgdGVzdF9zZW5kX2RhdGFfYmVmb3JlX2hlYWRlcnMoc2VsZik6Ci0gICAgICAgICIiIgotICAg
ICAgICBXZSBzaG91bGQgbm90IHNlbmQgREFUQSBiZWZvcmUgaGVhZGVycy4KLSAgICAgICAgIiIi
Ci0gICAgICAgIHF1aWNfY2xpZW50ID0gRmFrZVF1aWNDb25uZWN0aW9uKAotICAgICAgICAgICAg
Y29uZmlndXJhdGlvbj1RdWljQ29uZmlndXJhdGlvbihpc19jbGllbnQ9VHJ1ZSkKLSAgICAgICAg
KQotICAgICAgICBoM19jbGllbnQgPSBIM0Nvbm5lY3Rpb24ocXVpY19jbGllbnQpCi0KLSAgICAg
ICAgc3RyZWFtX2lkID0gcXVpY19jbGllbnQuZ2V0X25leHRfYXZhaWxhYmxlX3N0cmVhbV9pZCgp
Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRnJhbWVVbmV4cGVjdGVkKToKLSAgICAg
ICAgICAgIGgzX2NsaWVudC5zZW5kX2RhdGEoc3RyZWFtX2lkPXN0cmVhbV9pZCwgZGF0YT1iImhl
bGxvIiwgZW5kX3N0cmVhbT1GYWxzZSkKLQotICAgIGRlZiB0ZXN0X3NlbmRfaGVhZGVyc19hZnRl
cl90cmFpbGVycyhzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFdlIHNob3VsZCBub3Qgc2Vu
ZCBIRUFERVJTIGFmdGVyIHRyYWlsZXJzLgotICAgICAgICAiIiIKLSAgICAgICAgcXVpY19jbGll
bnQgPSBGYWtlUXVpY0Nvbm5lY3Rpb24oCi0gICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWND
b25maWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQotICAgICAgICApCi0gICAgICAgIGgzX2NsaWVu
dCA9IEgzQ29ubmVjdGlvbihxdWljX2NsaWVudCkKLQotICAgICAgICBzdHJlYW1faWQgPSBxdWlj
X2NsaWVudC5nZXRfbmV4dF9hdmFpbGFibGVfc3RyZWFtX2lkKCkKLSAgICAgICAgaDNfY2xpZW50
LnNlbmRfaGVhZGVycygKLSAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCi0gICAgICAg
ICAgICBoZWFkZXJzPVsKLSAgICAgICAgICAgICAgICAoYiI6bWV0aG9kIiwgYiJHRVQiKSwKLSAg
ICAgICAgICAgICAgICAoYiI6c2NoZW1lIiwgYiJodHRwcyIpLAotICAgICAgICAgICAgICAgIChi
IjphdXRob3JpdHkiLCBiImxvY2FsaG9zdCIpLAotICAgICAgICAgICAgICAgIChiIjpwYXRoIiwg
YiIvIiksCi0gICAgICAgICAgICBdLAotICAgICAgICApCi0gICAgICAgIGgzX2NsaWVudC5zZW5k
X2hlYWRlcnMoCi0gICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFtX2lkLCBoZWFkZXJzPVsoYiJ4
LXNvbWUtdHJhaWxlciIsIGIiZm9vIildLCBlbmRfc3RyZWFtPUZhbHNlCi0gICAgICAgICkKLSAg
ICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhGcmFtZVVuZXhwZWN0ZWQpOgotICAgICAgICAg
ICAgaDNfY2xpZW50LnNlbmRfaGVhZGVycygKLSAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3Ry
ZWFtX2lkLAotICAgICAgICAgICAgICAgIGhlYWRlcnM9WyhiIngtb3RoZXItdHJhaWxlciIsIGIi
Zm9vIildLAotICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2UsCi0gICAgICAgICAgICAp
Ci0KLSAgICBkZWYgdGVzdF9ibG9ja2VkX3N0cmVhbShzZWxmKToKLSAgICAgICAgcXVpY19jbGll
bnQgPSBGYWtlUXVpY0Nvbm5lY3Rpb24oCi0gICAgICAgICAgICBjb25maWd1cmF0aW9uPVF1aWND
b25maWd1cmF0aW9uKGlzX2NsaWVudD1UcnVlKQotICAgICAgICApCi0gICAgICAgIGgzX2NsaWVu
dCA9IEgzQ29ubmVjdGlvbihxdWljX2NsaWVudCkKLQotICAgICAgICBoM19jbGllbnQuaGFuZGxl
X2V2ZW50KAotICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKAotICAgICAgICAgICAgICAg
IHN0cmVhbV9pZD0zLAotICAgICAgICAgICAgICAgIGRhdGE9YmluYXNjaWkudW5oZXhsaWZ5KAot
ICAgICAgICAgICAgICAgICAgICAiMDAwNDE3MDE1MDAwMDY4MDAyMDAwMDA3NDA2NDA5MTA0MGJj
YzAwMDAwMDBmYWNlYjAwYyIKLSAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgICAgIGVu
ZF9zdHJlYW09RmFsc2UsCi0gICAgICAgICAgICApCi0gICAgICAgICkKLSAgICAgICAgaDNfY2xp
ZW50LmhhbmRsZV9ldmVudCgKLSAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZChzdHJlYW1f
aWQ9NywgZGF0YT1iIlx4MDIiLCBlbmRfc3RyZWFtPUZhbHNlKQotICAgICAgICApCi0gICAgICAg
IGgzX2NsaWVudC5oYW5kbGVfZXZlbnQoCi0gICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQo
c3RyZWFtX2lkPTExLCBkYXRhPWIiXHgwMyIsIGVuZF9zdHJlYW09RmFsc2UpCi0gICAgICAgICkK
LSAgICAgICAgaDNfY2xpZW50LmhhbmRsZV9ldmVudCgKLSAgICAgICAgICAgIFN0cmVhbURhdGFS
ZWNlaXZlZCgKLSAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwgZGF0YT1iaW5hc2NpaS51bmhl
eGxpZnkoIjAxMDQwMjgwZDkxMCIpLCBlbmRfc3RyZWFtPUZhbHNlCi0gICAgICAgICAgICApCi0g
ICAgICAgICkKLSAgICAgICAgaDNfY2xpZW50LmhhbmRsZV9ldmVudCgKLSAgICAgICAgICAgIFN0
cmVhbURhdGFSZWNlaXZlZCgKLSAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwKLSAgICAgICAg
ICAgICAgICBkYXRhPWJpbmFzY2lpLnVuaGV4bGlmeSgKLSAgICAgICAgICAgICAgICAgICAgIjAw
NDA4ZDc5NmY3NTIwNzI2NTYxNjM2ODY1NjQyMDZkNzY2NjczNzQyZTZlNjU3NDJjMjA3MjY1NjE2
MzY4MjAiCi0gICAgICAgICAgICAgICAgICAgICI3NDY4NjUyMDJmNjU2MzY4NmYyMDY1NmU2NDcw
NmY2OTZlNzQyMDY2NmY3MjIwNjE2ZTIwNjU2MzY4NmYyMDcyIgotICAgICAgICAgICAgICAgICAg
ICAiNjU3MzcwNmY2ZTczNjUyMDcxNzU2NTcyNzkyMDJmM2M2ZTc1NmQ2MjY1NzIzZTIwNjU2ZTY0
NzA2ZjY5NmU3NCIKLSAgICAgICAgICAgICAgICAgICAgIjczMjA2NjZmNzIyMDYxMjA3NjYxNzI2
OTYxNjI2YzY1MjA3MzY5N2E2NTIwNzI2NTczNzA2ZjZlNzM2NTIwNzciCi0gICAgICAgICAgICAg
ICAgICAgICI2OTc0NjgyMDcyNjE2ZTY0NmY2ZDIwNjI3OTc0NjU3MyIKLSAgICAgICAgICAgICAg
ICApLAotICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09VHJ1ZSwKLSAgICAgICAgICAgICkKLSAg
ICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgaDNfY2xpZW50
LmhhbmRsZV9ldmVudCgKLSAgICAgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoCi0gICAg
ICAgICAgICAgICAgICAgIHN0cmVhbV9pZD03LAotICAgICAgICAgICAgICAgICAgICBkYXRhPWJp
bmFzY2lpLnVuaGV4bGlmeSgKLSAgICAgICAgICAgICAgICAgICAgICAgICIzZmUxMDFjNjk2ZDA3
YWJlOTQxMDk0Y2I2ZDBhMDgwMTdkNDAzOTcxOTY2ZTMyY2E5OGI0NmYiCi0gICAgICAgICAgICAg
ICAgICAgICksCi0gICAgICAgICAgICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2UsCi0gICAgICAg
ICAgICAgICAgKQotICAgICAgICAgICAgKSwKLSAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAg
ICBIZWFkZXJzUmVjZWl2ZWQoCi0gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WwotICAgICAg
ICAgICAgICAgICAgICAgICAgKGIiOnN0YXR1cyIsIGIiMjAwIiksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAoYiJkYXRlIiwgYiJNb24sIDIyIEp1bCAyMDE5IDA2OjMzOjMzIEdNVCIpLAotICAg
ICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwKLSAg
ICAgICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVkPUZhbHNlLAotICAgICAgICAgICAgICAgICks
Ci0gICAgICAgICAgICAgICAgRGF0YVJlY2VpdmVkKAotICAgICAgICAgICAgICAgICAgICBkYXRh
PSgKLSAgICAgICAgICAgICAgICAgICAgICAgIGIieW91IHJlYWNoZWQgbXZmc3QubmV0LCByZWFj
aCB0aGUgL2VjaG8gZW5kcG9pbnQgZm9yIGFuICIKLSAgICAgICAgICAgICAgICAgICAgICAgIGIi
ZWNobyByZXNwb25zZSBxdWVyeSAvPG51bWJlcj4gZW5kcG9pbnRzIGZvciBhIHZhcmlhYmxlICIK
LSAgICAgICAgICAgICAgICAgICAgICAgIGIic2l6ZSByZXNwb25zZSB3aXRoIHJhbmRvbSBieXRl
cyIKLSAgICAgICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lk
PTAsCi0gICAgICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1UcnVlLAotICAgICAgICAgICAg
ICAgICksCi0gICAgICAgICAgICBdLAotICAgICAgICApCi0KLSAgICBkZWYgdGVzdF9ibG9ja2Vk
X3N0cmVhbV90cmFpbGVyKHNlbGYpOgotICAgICAgICBxdWljX2NsaWVudCA9IEZha2VRdWljQ29u
bmVjdGlvbigKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249UXVpY0NvbmZpZ3VyYXRpb24oaXNf
Y2xpZW50PVRydWUpCi0gICAgICAgICkKLSAgICAgICAgaDNfY2xpZW50ID0gSDNDb25uZWN0aW9u
KHF1aWNfY2xpZW50KQotCi0gICAgICAgIGgzX2NsaWVudC5oYW5kbGVfZXZlbnQoCi0gICAgICAg
ICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoCi0gICAgICAgICAgICAgICAgc3RyZWFtX2lkPTMsCi0g
ICAgICAgICAgICAgICAgZGF0YT1iaW5hc2NpaS51bmhleGxpZnkoCi0gICAgICAgICAgICAgICAg
ICAgICIwMDA0MTcwMTUwMDAwNjgwMDIwMDAwMDc0MDY0MDkxMDQwYmNjMDAwMDAwMGZhY2ViMDBj
IgotICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1GYWxzZSwK
LSAgICAgICAgICAgICkKLSAgICAgICAgKQotICAgICAgICBoM19jbGllbnQuaGFuZGxlX2V2ZW50
KAotICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKHN0cmVhbV9pZD03LCBkYXRhPWIiXHgw
MiIsIGVuZF9zdHJlYW09RmFsc2UpCi0gICAgICAgICkKLSAgICAgICAgaDNfY2xpZW50LmhhbmRs
ZV9ldmVudCgKLSAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZChzdHJlYW1faWQ9MTEsIGRh
dGE9YiJceDAzIiwgZW5kX3N0cmVhbT1GYWxzZSkKLSAgICAgICAgKQotCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBoM19jbGllbnQuaGFuZGxlX2V2ZW50KAotICAgICAg
ICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZCgKLSAgICAgICAgICAgICAgICAgICAgc3RyZWFt
X2lkPTAsCi0gICAgICAgICAgICAgICAgICAgIGRhdGE9YmluYXNjaWkudW5oZXhsaWZ5KAotICAg
ICAgICAgICAgICAgICAgICAgICAgIjAxMWIwMDAwZDk1Njk2ZDA3YWJlOTQxMDk0Y2I2ZDBhMDgw
MTdkNDAzOTcxOTY2ZTMyY2E5OGI0NmYiCi0gICAgICAgICAgICAgICAgICAgICksCi0gICAgICAg
ICAgICAgICAgICAgIGVuZF9zdHJlYW09RmFsc2UsCi0gICAgICAgICAgICAgICAgKQotICAgICAg
ICAgICAgKSwKLSAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICBIZWFkZXJzUmVjZWl2ZWQo
Ci0gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WwotICAgICAgICAgICAgICAgICAgICAgICAg
KGIiOnN0YXR1cyIsIGIiMjAwIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAoYiJkYXRlIiwg
YiJNb24sIDIyIEp1bCAyMDE5IDA2OjMzOjMzIEdNVCIpLAotICAgICAgICAgICAgICAgICAgICBd
LAotICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwKLSAgICAgICAgICAgICAgICAgICAg
c3RyZWFtX2VuZGVkPUZhbHNlLAotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgIF0sCi0g
ICAgICAgICkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgaDNfY2xp
ZW50LmhhbmRsZV9ldmVudCgKLSAgICAgICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoCi0g
ICAgICAgICAgICAgICAgICAgIHN0cmVhbV9pZD0wLAotICAgICAgICAgICAgICAgICAgICBkYXRh
PWJpbmFzY2lpLnVuaGV4bGlmeSgKLSAgICAgICAgICAgICAgICAgICAgICAgICIwMDQwOGQ3OTZm
NzUyMDcyNjU2MTYzNjg2NTY0MjA2ZDc2NjY3Mzc0MmU2ZTY1NzQyYzIwNzI2NTYxNjM2ODIwIgot
ICAgICAgICAgICAgICAgICAgICAgICAgIjc0Njg2NTIwMmY2NTYzNjg2ZjIwNjU2ZTY0NzA2ZjY5
NmU3NDIwNjY2ZjcyMjA2MTZlMjA2NTYzNjg2ZjIwNzIiCi0gICAgICAgICAgICAgICAgICAgICAg
ICAiNjU3MzcwNmY2ZTczNjUyMDcxNzU2NTcyNzkyMDJmM2M2ZTc1NmQ2MjY1NzIzZTIwNjU2ZTY0
NzA2ZjY5NmU3NCIKLSAgICAgICAgICAgICAgICAgICAgICAgICI3MzIwNjY2ZjcyMjA2MTIwNzY2
MTcyNjk2MTYyNmM2NTIwNzM2OTdhNjUyMDcyNjU3MzcwNmY2ZTczNjUyMDc3IgotICAgICAgICAg
ICAgICAgICAgICAgICAgIjY5NzQ2ODIwNzI2MTZlNjQ2ZjZkMjA2Mjc5NzQ2NTczIgotICAgICAg
ICAgICAgICAgICAgICApLAotICAgICAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPUZhbHNlLAot
ICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICksCi0gICAgICAgICAgICBbCi0gICAgICAg
ICAgICAgICAgRGF0YVJlY2VpdmVkKAotICAgICAgICAgICAgICAgICAgICBkYXRhPSgKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGIieW91IHJlYWNoZWQgbXZmc3QubmV0LCByZWFjaCB0aGUgL2Vj
aG8gZW5kcG9pbnQgZm9yIGFuICIKLSAgICAgICAgICAgICAgICAgICAgICAgIGIiZWNobyByZXNw
b25zZSBxdWVyeSAvPG51bWJlcj4gZW5kcG9pbnRzIGZvciBhIHZhcmlhYmxlICIKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGIic2l6ZSByZXNwb25zZSB3aXRoIHJhbmRvbSBieXRlcyIKLSAgICAg
ICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkPTAsCi0gICAg
ICAgICAgICAgICAgICAgIHN0cmVhbV9lbmRlZD1GYWxzZSwKLSAgICAgICAgICAgICAgICApCi0g
ICAgICAgICAgICBdLAotICAgICAgICApCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAg
ICAgICAgICAgIGgzX2NsaWVudC5oYW5kbGVfZXZlbnQoCi0gICAgICAgICAgICAgICAgU3RyZWFt
RGF0YVJlY2VpdmVkKAotICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9MCwgZGF0YT1iaW5h
c2NpaS51bmhleGxpZnkoIjAxMDMwMjgwMTAiKSwgZW5kX3N0cmVhbT1UcnVlCi0gICAgICAgICAg
ICAgICAgKQotICAgICAgICAgICAgKSwKLSAgICAgICAgICAgIFtdLAotICAgICAgICApCi0KLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGgzX2NsaWVudC5oYW5kbGVfZXZl
bnQoCi0gICAgICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKAotICAgICAgICAgICAgICAg
ICAgICBzdHJlYW1faWQ9NywKLSAgICAgICAgICAgICAgICAgICAgZGF0YT1iaW5hc2NpaS51bmhl
eGxpZnkoIjZhZjJiMjBmNDk1NjRkODMzNTA1YjM4Mjk0ZTciKSwKLSAgICAgICAgICAgICAgICAg
ICAgZW5kX3N0cmVhbT1GYWxzZSwKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICApLAot
ICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgIEhlYWRlcnNSZWNlaXZlZCgKLSAgICAgICAg
ICAgICAgICAgICAgaGVhZGVycz1bKGIieC1zb21lLXRyYWlsZXIiLCBiImZvbyIpXSwKLSAgICAg
ICAgICAgICAgICAgICAgc3RyZWFtX2lkPTAsCi0gICAgICAgICAgICAgICAgICAgIHN0cmVhbV9l
bmRlZD1UcnVlLAotICAgICAgICAgICAgICAgICAgICBwdXNoX2lkPU5vbmUsCi0gICAgICAgICAg
ICAgICAgKQotICAgICAgICAgICAgXSwKLSAgICAgICAgKQotCi0gICAgZGVmIHRlc3RfdW5pX3N0
cmVhbV9ncmVhc2Uoc2VsZik6Ci0gICAgICAgIHdpdGggaDNfY2xpZW50X2FuZF9zZXJ2ZXIoKSBh
cyAocXVpY19jbGllbnQsIHF1aWNfc2VydmVyKToKLSAgICAgICAgICAgIGgzX3NlcnZlciA9IEgz
Q29ubmVjdGlvbihxdWljX3NlcnZlcikKLQotICAgICAgICAgICAgcXVpY19jbGllbnQuc2VuZF9z
dHJlYW1fZGF0YSgKLSAgICAgICAgICAgICAgICAxNCwgYiJceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZUdSRUFTRSBpcyB0aGUgd29yZCIKLSAgICAgICAgICAgICkKLSAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoaDNfdHJhbnNmZXIocXVpY19jbGllbnQsIGgzX3NlcnZlciksIFtd
KQotCi0gICAgZGVmIHRlc3RfcmVxdWVzdF93aXRoX3RyYWlsZXJzKHNlbGYpOgotICAgICAgICB3
aXRoIGgzX2NsaWVudF9hbmRfc2VydmVyKCkgYXMgKHF1aWNfY2xpZW50LCBxdWljX3NlcnZlcik6
Ci0gICAgICAgICAgICBoM19jbGllbnQgPSBIM0Nvbm5lY3Rpb24ocXVpY19jbGllbnQpCi0gICAg
ICAgICAgICBoM19zZXJ2ZXIgPSBIM0Nvbm5lY3Rpb24ocXVpY19zZXJ2ZXIpCi0KLSAgICAgICAg
ICAgICMgc2VuZCByZXF1ZXN0IHdpdGggdHJhaWxlcnMKLSAgICAgICAgICAgIHN0cmVhbV9pZCA9
IHF1aWNfY2xpZW50LmdldF9uZXh0X2F2YWlsYWJsZV9zdHJlYW1faWQoKQotICAgICAgICAgICAg
aDNfY2xpZW50LnNlbmRfaGVhZGVycygKLSAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFt
X2lkLAotICAgICAgICAgICAgICAgIGhlYWRlcnM9WwotICAgICAgICAgICAgICAgICAgICAoYiI6
bWV0aG9kIiwgYiJHRVQiKSwKLSAgICAgICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIsIGIiaHR0
cHMiKSwKLSAgICAgICAgICAgICAgICAgICAgKGIiOmF1dGhvcml0eSIsIGIibG9jYWxob3N0Iiks
Ci0gICAgICAgICAgICAgICAgICAgIChiIjpwYXRoIiwgYiIvIiksCi0gICAgICAgICAgICAgICAg
XSwKLSAgICAgICAgICAgICAgICBlbmRfc3RyZWFtPUZhbHNlLAotICAgICAgICAgICAgKQotICAg
ICAgICAgICAgaDNfY2xpZW50LnNlbmRfaGVhZGVycygKLSAgICAgICAgICAgICAgICBzdHJlYW1f
aWQ9c3RyZWFtX2lkLAotICAgICAgICAgICAgICAgIGhlYWRlcnM9WyhiIngtc29tZS10cmFpbGVy
IiwgYiJmb28iKV0sCi0gICAgICAgICAgICAgICAgZW5kX3N0cmVhbT1UcnVlLAotICAgICAgICAg
ICAgKQotCi0gICAgICAgICAgICAjIHJlY2VpdmUgcmVxdWVzdAotICAgICAgICAgICAgZXZlbnRz
ID0gaDNfdHJhbnNmZXIocXVpY19jbGllbnQsIGgzX3NlcnZlcikKLSAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICAgICAgZXZlbnRzLAotICAgICAgICAgICAgICAgIFsK
LSAgICAgICAgICAgICAgICAgICAgSGVhZGVyc1JlY2VpdmVkKAotICAgICAgICAgICAgICAgICAg
ICAgICAgaGVhZGVycz1bCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIiOm1ldGhvZCIs
IGIiR0VUIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIiOnNjaGVtZSIsIGIiaHR0
cHMiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6YXV0aG9yaXR5IiwgYiJsb2Nh
bGhvc3QiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6cGF0aCIsIGIiLyIpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVh
bV9pZD1zdHJlYW1faWQsCi0gICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9RmFs
c2UsCi0gICAgICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICAgICAgICAgIEhlYWRlcnNS
ZWNlaXZlZCgKLSAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WyhiIngtc29tZS10cmFp
bGVyIiwgYiJmb28iKV0sCi0gICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFt
X2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVkPVRydWUsCi0gICAgICAg
ICAgICAgICAgICAgICksCi0gICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICkKLQotICAg
ICAgICAgICAgIyBzZW5kIHJlc3BvbnNlCi0gICAgICAgICAgICBoM19zZXJ2ZXIuc2VuZF9oZWFk
ZXJzKAotICAgICAgICAgICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCi0gICAgICAgICAgICAg
ICAgaGVhZGVycz1bCi0gICAgICAgICAgICAgICAgICAgIChiIjpzdGF0dXMiLCBiIjIwMCIpLAot
ICAgICAgICAgICAgICAgICAgICAoYiJjb250ZW50LXR5cGUiLCBiInRleHQvaHRtbDsgY2hhcnNl
dD11dGYtOCIpLAotICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgZW5kX3N0cmVh
bT1GYWxzZSwKLSAgICAgICAgICAgICkKLSAgICAgICAgICAgIGgzX3NlcnZlci5zZW5kX2RhdGEo
Ci0gICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwKLSAgICAgICAgICAgICAgICBk
YXRhPWIiPGh0bWw+PGJvZHk+aGVsbG88L2JvZHk+PC9odG1sPiIsCi0gICAgICAgICAgICAgICAg
ZW5kX3N0cmVhbT1GYWxzZSwKLSAgICAgICAgICAgICkKLSAgICAgICAgICAgIGgzX3NlcnZlci5z
ZW5kX2hlYWRlcnMoCi0gICAgICAgICAgICAgICAgc3RyZWFtX2lkPXN0cmVhbV9pZCwKLSAgICAg
ICAgICAgICAgICBoZWFkZXJzPVsoYiJ4LXNvbWUtdHJhaWxlciIsIGIiYmFyIildLAotICAgICAg
ICAgICAgICAgIGVuZF9zdHJlYW09VHJ1ZSwKLSAgICAgICAgICAgICkKLQotICAgICAgICAgICAg
IyByZWNlaXZlIHJlc3BvbnNlCi0gICAgICAgICAgICBldmVudHMgPSBoM190cmFuc2ZlcihxdWlj
X3NlcnZlciwgaDNfY2xpZW50KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAg
ICAgICAgICAgICBldmVudHMsCi0gICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAg
ICBIZWFkZXJzUmVjZWl2ZWQoCi0gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPVsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoYiI6c3RhdHVzIiwgYiIyMDAiKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoYiJjb250ZW50LXR5cGUiLCBiInRleHQvaHRtbDsgY2hhcnNl
dD11dGYtOCIpLAotICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cmVhbV9pZD1zdHJlYW1faWQsCi0gICAgICAgICAgICAgICAgICAgICAgICBzdHJl
YW1fZW5kZWQ9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICAgICAg
ICAgIERhdGFSZWNlaXZlZCgKLSAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9YiI8aHRtbD48
Ym9keT5oZWxsbzwvYm9keT48L2h0bWw+IiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVh
bV9pZD1zdHJlYW1faWQsCi0gICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fZW5kZWQ9RmFs
c2UsCi0gICAgICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICAgICAgICAgIEhlYWRlcnNS
ZWNlaXZlZCgKLSAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9WyhiIngtc29tZS10cmFp
bGVyIiwgYiJiYXIiKV0sCi0gICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1faWQ9c3RyZWFt
X2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2VuZGVkPVRydWUsCi0gICAgICAg
ICAgICAgICAgICAgICksCi0gICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICkKLQotICAg
IGRlZiB0ZXN0X3VuaV9zdHJlYW1fdHlwZShzZWxmKToKLSAgICAgICAgd2l0aCBoM19jbGllbnRf
YW5kX3NlcnZlcigpIGFzIChxdWljX2NsaWVudCwgcXVpY19zZXJ2ZXIpOgotICAgICAgICAgICAg
aDNfc2VydmVyID0gSDNDb25uZWN0aW9uKHF1aWNfc2VydmVyKQotCi0gICAgICAgICAgICAjIHVu
a25vd24gc3RyZWFtIHR5cGUgOQotICAgICAgICAgICAgc3RyZWFtX2lkID0gcXVpY19jbGllbnQu
Z2V0X25leHRfYXZhaWxhYmxlX3N0cmVhbV9pZChpc191bmlkaXJlY3Rpb25hbD1UcnVlKQotICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW1faWQsIDIpCi0gICAgICAgICAgICBxdWlj
X2NsaWVudC5zZW5kX3N0cmVhbV9kYXRhKHN0cmVhbV9pZCwgYiJceDA5IikKLSAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoaDNfdHJhbnNmZXIocXVpY19jbGllbnQsIGgzX3NlcnZlciksIFtd
KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGgzX3NlcnZlci5fc3RyZWFtLmtl
eXMoKSksIFsyXSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaDNfc2VydmVyLl9zdHJl
YW1bMl0uYnVmZmVyLCBiIiIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgzX3NlcnZl
ci5fc3RyZWFtWzJdLnN0cmVhbV90eXBlLCA5KQotCi0gICAgICAgICAgICAjIHVua25vd24gc3Ry
ZWFtIHR5cGUgNjQsIG9uZSBieXRlIGF0IGEgdGltZQotICAgICAgICAgICAgc3RyZWFtX2lkID0g
cXVpY19jbGllbnQuZ2V0X25leHRfYXZhaWxhYmxlX3N0cmVhbV9pZChpc191bmlkaXJlY3Rpb25h
bD1UcnVlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW1faWQsIDYpCi0KLSAg
ICAgICAgICAgIHF1aWNfY2xpZW50LnNlbmRfc3RyZWFtX2RhdGEoc3RyZWFtX2lkLCBiIlx4NDAi
KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoM190cmFuc2ZlcihxdWljX2NsaWVudCwg
aDNfc2VydmVyKSwgW10pCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaDNfc2Vy
dmVyLl9zdHJlYW0ua2V5cygpKSwgWzIsIDZdKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChoM19zZXJ2ZXIuX3N0cmVhbVsyXS5idWZmZXIsIGIiIikKLSAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoaDNfc2VydmVyLl9zdHJlYW1bMl0uc3RyZWFtX3R5cGUsIDkpCi0gICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGgzX3NlcnZlci5fc3RyZWFtWzZdLmJ1ZmZlciwgYiJceDQwIikK
LSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaDNfc2VydmVyLl9zdHJlYW1bNl0uc3RyZWFt
X3R5cGUsIE5vbmUpCi0KLSAgICAgICAgICAgIHF1aWNfY2xpZW50LnNlbmRfc3RyZWFtX2RhdGEo
c3RyZWFtX2lkLCBiIlx4NDAiKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoM190cmFu
c2ZlcihxdWljX2NsaWVudCwgaDNfc2VydmVyKSwgW10pCi0gICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGxpc3QoaDNfc2VydmVyLl9zdHJlYW0ua2V5cygpKSwgWzIsIDZdKQotICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChoM19zZXJ2ZXIuX3N0cmVhbVsyXS5idWZmZXIsIGIiIikKLSAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaDNfc2VydmVyLl9zdHJlYW1bMl0uc3RyZWFtX3R5
cGUsIDkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgzX3NlcnZlci5fc3RyZWFtWzZd
LmJ1ZmZlciwgYiIiKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoM19zZXJ2ZXIuX3N0
cmVhbVs2XS5zdHJlYW1fdHlwZSwgNjQpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMv
dGVzdF9sb2dnZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9sb2dnZXIucHkKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiN2M1MjA5MzhlMmNmMjRhZWI3NmI5MTlkOTY3YWZi
YzZjNmVlZTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfbG9nZ2VyLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzcg
KzAsMCBAQAotZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UKLQotZnJvbSBhaW9xdWljLnF1
aWMubG9nZ2VyIGltcG9ydCBRdWljTG9nZ2VyCi0KLQotY2xhc3MgUXVpY0xvZ2dlclRlc3QoVGVz
dENhc2UpOgotICAgIGRlZiB0ZXN0X2VtcHR5KHNlbGYpOgotICAgICAgICBsb2dnZXIgPSBRdWlj
TG9nZ2VyKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2dnZXIudG9fZGljdCgpLCB7InFs
b2dfdmVyc2lvbiI6ICJkcmFmdC0wMSIsICJ0cmFjZXMiOiBbXX0pCi0KLSAgICBkZWYgdGVzdF9l
bXB0eV90cmFjZShzZWxmKToKLSAgICAgICAgbG9nZ2VyID0gUXVpY0xvZ2dlcigpCi0gICAgICAg
IHRyYWNlID0gbG9nZ2VyLnN0YXJ0X3RyYWNlKGlzX2NsaWVudD1UcnVlLCBvZGNpZD1ieXRlcyg4
KSkKLSAgICAgICAgbG9nZ2VyLmVuZF90cmFjZSh0cmFjZSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgKLSAgICAgICAgICAgIGxvZ2dlci50b19kaWN0KCksCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgInFsb2dfdmVyc2lvbiI6ICJkcmFmdC0wMSIsCi0gICAgICAgICAgICAgICAg
InRyYWNlcyI6IFsKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAg
ICAgImNvbW1vbl9maWVsZHMiOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9EQ0lE
IjogIjAwMDAwMDAwMDAwMDAwMDAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWZl
cmVuY2VfdGltZSI6ICIwIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAiY29uZmlndXJhdGlvbiI6IHsidGltZV91bml0cyI6ICJ1cyJ9LAotICAg
ICAgICAgICAgICAgICAgICAgICAgImV2ZW50X2ZpZWxkcyI6IFsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAicmVsYXRpdmVfdGltZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImNhdGVnb3J5IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXZlbnRfdHlwZSIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImRhdGEiLAotICAgICAgICAgICAgICAgICAgICAg
ICAgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJldmVudHMiOiBbXSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICJ2YW50YWdlX3BvaW50IjogeyJuYW1lIjogImFpb3F1aWMiLCAidHlwZSI6
ICJjbGllbnQifSwKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIF0sCi0g
ICAgICAgICAgICB9LAotICAgICAgICApCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMv
dGVzdF9wYWNrZXQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9wYWNrZXQucHkKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2OWI3YWE5YTYxOTc2N2E3ZjVjMDM1Zjc3MzBmZjM3
MWQ3ZDVmNzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfcGFja2V0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsNTEz
ICswLDAgQEAKLWltcG9ydCBiaW5hc2NpaQotZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UK
LQotZnJvbSBhaW9xdWljLmJ1ZmZlciBpbXBvcnQgQnVmZmVyLCBCdWZmZXJSZWFkRXJyb3IKLWZy
b20gYWlvcXVpYy5xdWljIGltcG9ydCBwYWNrZXQKLWZyb20gYWlvcXVpYy5xdWljLnBhY2tldCBp
bXBvcnQgKAotICAgIFBBQ0tFVF9UWVBFX0lOSVRJQUwsCi0gICAgUEFDS0VUX1RZUEVfUkVUUlks
Ci0gICAgUXVpY1ByZWZlcnJlZEFkZHJlc3MsCi0gICAgUXVpY1Byb3RvY29sVmVyc2lvbiwKLSAg
ICBRdWljVHJhbnNwb3J0UGFyYW1ldGVycywKLSAgICBkZWNvZGVfcGFja2V0X251bWJlciwKLSAg
ICBlbmNvZGVfcXVpY192ZXJzaW9uX25lZ290aWF0aW9uLAotICAgIGdldF9yZXRyeV9pbnRlZ3Jp
dHlfdGFnLAotICAgIHB1bGxfcXVpY19oZWFkZXIsCi0gICAgcHVsbF9xdWljX3ByZWZlcnJlZF9h
ZGRyZXNzLAotICAgIHB1bGxfcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycywKLSAgICBwdXNoX3F1
aWNfcHJlZmVycmVkX2FkZHJlc3MsCi0gICAgcHVzaF9xdWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJz
LAotKQotCi1mcm9tIC51dGlscyBpbXBvcnQgbG9hZAotCi0KLWNsYXNzIFBhY2tldFRlc3QoVGVz
dENhc2UpOgotICAgIGRlZiB0ZXN0X2RlY29kZV9wYWNrZXRfbnVtYmVyKHNlbGYpOgotICAgICAg
ICAjIGV4cGVjdGVkID0gMAotICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCAyNTYpOgotICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvZGVfcGFja2V0X251bWJlcihpLCA4LCBleHBlY3Rl
ZD0wKSwgaSkKLQotICAgICAgICAjIGV4cGVjdGVkID0gMTI4Ci0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoZGVjb2RlX3BhY2tldF9udW1iZXIoMCwgOCwgZXhwZWN0ZWQ9MTI4KSwgMjU2KQotICAg
ICAgICBmb3IgaSBpbiByYW5nZSgxLCAyNTYpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChkZWNvZGVfcGFja2V0X251bWJlcihpLCA4LCBleHBlY3RlZD0xMjgpLCBpKQotCi0gICAgICAg
ICMgZXhwZWN0ZWQgPSAxMjkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvZGVfcGFja2V0
X251bWJlcigwLCA4LCBleHBlY3RlZD0xMjkpLCAyNTYpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoZGVjb2RlX3BhY2tldF9udW1iZXIoMSwgOCwgZXhwZWN0ZWQ9MTI5KSwgMjU3KQotICAgICAg
ICBmb3IgaSBpbiByYW5nZSgyLCAyNTYpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChk
ZWNvZGVfcGFja2V0X251bWJlcihpLCA4LCBleHBlY3RlZD0xMjkpLCBpKQotCi0gICAgICAgICMg
ZXhwZWN0ZWQgPSAyNTYKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgMTI4KToKLSAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlX3BhY2tldF9udW1iZXIoaSwgOCwgZXhwZWN0ZWQ9
MjU2KSwgMjU2ICsgaSkKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTI5LCAyNTYpOgotICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvZGVfcGFja2V0X251bWJlcihpLCA4LCBleHBlY3Rl
ZD0yNTYpLCBpKQotCi0gICAgZGVmIHRlc3RfcHVsbF9lbXB0eShzZWxmKToKLSAgICAgICAgYnVm
ID0gQnVmZmVyKGRhdGE9YiIiKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZl
clJlYWRFcnJvcik6Ci0gICAgICAgICAgICBwdWxsX3F1aWNfaGVhZGVyKGJ1ZiwgaG9zdF9jaWRf
bGVuZ3RoPTgpCi0KLSAgICBkZWYgdGVzdF9wdWxsX2luaXRpYWxfY2xpZW50KHNlbGYpOgotICAg
ICAgICBidWYgPSBCdWZmZXIoZGF0YT1sb2FkKCJpbml0aWFsX2NsaWVudC5iaW4iKSkKLSAgICAg
ICAgaGVhZGVyID0gcHVsbF9xdWljX2hlYWRlcihidWYsIGhvc3RfY2lkX2xlbmd0aD04KQotICAg
ICAgICBzZWxmLmFzc2VydFRydWUoaGVhZGVyLmlzX2xvbmdfaGVhZGVyKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGhlYWRlci52ZXJzaW9uLCBRdWljUHJvdG9jb2xWZXJzaW9uLkRSQUZUXzI1
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlci5wYWNrZXRfdHlwZSwgUEFDS0VUX1RZ
UEVfSU5JVElBTCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXIuZGVzdGluYXRpb25f
Y2lkLCBiaW5hc2NpaS51bmhleGxpZnkoIjg1OGIzOTM2OGI4ZTNjNmUiKSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChoZWFkZXIuc291cmNlX2NpZCwgYiIiKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGhlYWRlci50b2tlbiwgYiIiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRl
ci5pbnRlZ3JpdHlfdGFnLCBiIiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLnJl
c3RfbGVuZ3RoLCAxMjYyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi50ZWxsKCksIDE4
KQotCi0gICAgZGVmIHRlc3RfcHVsbF9pbml0aWFsX3NlcnZlcihzZWxmKToKLSAgICAgICAgYnVm
ID0gQnVmZmVyKGRhdGE9bG9hZCgiaW5pdGlhbF9zZXJ2ZXIuYmluIikpCi0gICAgICAgIGhlYWRl
ciA9IHB1bGxfcXVpY19oZWFkZXIoYnVmLCBob3N0X2NpZF9sZW5ndGg9OCkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKGhlYWRlci5pc19sb25nX2hlYWRlcikKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChoZWFkZXIudmVyc2lvbiwgUXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXIucGFja2V0X3R5cGUsIFBBQ0tFVF9UWVBFX0lOSVRJ
QUwpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLmRlc3RpbmF0aW9uX2NpZCwgYiIi
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlci5zb3VyY2VfY2lkLCBiaW5hc2NpaS51
bmhleGxpZnkoIjE5NWM2ODM0NGUyOGQ0NzkiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCho
ZWFkZXIudG9rZW4sIGIiIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXIuaW50ZWdy
aXR5X3RhZywgYiIiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlci5yZXN0X2xlbmd0
aCwgMTg0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi50ZWxsKCksIDE4KQotCi0gICAg
ZGVmIHRlc3RfcHVsbF9yZXRyeShzZWxmKToKLSAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9bG9h
ZCgicmV0cnkuYmluIikpCi0gICAgICAgIGhlYWRlciA9IHB1bGxfcXVpY19oZWFkZXIoYnVmLCBo
b3N0X2NpZF9sZW5ndGg9OCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhlYWRlci5pc19sb25n
X2hlYWRlcikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXIudmVyc2lvbiwgUXVpY1By
b3RvY29sVmVyc2lvbi5EUkFGVF8yNSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXIu
cGFja2V0X3R5cGUsIFBBQ0tFVF9UWVBFX1JFVFJZKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGhlYWRlci5kZXN0aW5hdGlvbl9jaWQsIGJpbmFzY2lpLnVuaGV4bGlmeSgiZTlkMTQ2ZDhkMTRj
YjI4ZSIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgaGVhZGVyLnNv
dXJjZV9jaWQsCi0gICAgICAgICAgICBiaW5hc2NpaS51bmhleGxpZnkoIjBiMGEyMDVhNjQ4ZmNm
ODJkODVmMTI4YjY3YmJlMDgwNTNlNiIpLAotICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCi0gICAgICAgICAgICBoZWFkZXIudG9rZW4sCi0gICAgICAgICAgICBiaW5hc2NpaS51
bmhleGxpZnkoCi0gICAgICAgICAgICAgICAgIjQ0Mzk3YTM1ZDY5ODM5M2MxMzRiMDhhOTMyNzM3
ODU5ZjQ0NmQzYWFkZDAwZWQ4MTU0MGM4ZDhkZTE3MiIKLSAgICAgICAgICAgICAgICAiOTA2ZDNl
N2ExMTFiNTAzZjk3MjliODkyOGU3NTI4ZjlhODZhNDU4MWY5ZWJiNGNiM2I1M2MyODM2NjFlIgot
ICAgICAgICAgICAgICAgICI4NTMwNzQxYTk5MTkyZWU1NjkxNGM1NjI2OTk4ZWMwZiIKLSAgICAg
ICAgICAgICksCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAg
ICAgIGhlYWRlci5pbnRlZ3JpdHlfdGFnLCBiaW5hc2NpaS51bmhleGxpZnkoImUxYTNjODBjNzk3
ZWE0MDFjMDhmYzljMzQyYTJkOTBkIikKLSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGhlYWRlci5yZXN0X2xlbmd0aCwgMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYu
dGVsbCgpLCAxMjUpCi0KLSAgICAgICAgIyBjaGVjayBpbnRlZ3JpdHkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGdldF9yZXRyeV9pbnRlZ3JpdHlfdGFnKAotICAgICAg
ICAgICAgICAgIGJ1Zi5kYXRhX3NsaWNlKDAsIDEwOSksIGJpbmFzY2lpLnVuaGV4bGlmeSgiZmJi
ZDIxOWI3MzYzYjY0YiIpLAotICAgICAgICAgICAgKSwKLSAgICAgICAgICAgIGhlYWRlci5pbnRl
Z3JpdHlfdGFnLAotICAgICAgICApCi0KLSAgICBkZWYgdGVzdF9wdWxsX3ZlcnNpb25fbmVnb3Rp
YXRpb24oc2VsZik6Ci0gICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWxvYWQoInZlcnNpb25fbmVn
b3RpYXRpb24uYmluIikpCi0gICAgICAgIGhlYWRlciA9IHB1bGxfcXVpY19oZWFkZXIoYnVmLCBo
b3N0X2NpZF9sZW5ndGg9OCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhlYWRlci5pc19sb25n
X2hlYWRlcikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXIudmVyc2lvbiwgUXVpY1By
b3RvY29sVmVyc2lvbi5ORUdPVElBVElPTikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFk
ZXIucGFja2V0X3R5cGUsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLmRl
c3RpbmF0aW9uX2NpZCwgYmluYXNjaWkudW5oZXhsaWZ5KCI5YWFjNWE0OWJhODdhODQ5IikpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLnNvdXJjZV9jaWQsIGJpbmFzY2lpLnVuaGV4
bGlmeSgiZjkyZjQzMzZmYTk1MWJhMSIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRl
ci50b2tlbiwgYiIiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlci5pbnRlZ3JpdHlf
dGFnLCBiIiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLnJlc3RfbGVuZ3RoLCA4
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi50ZWxsKCksIDIzKQotCi0gICAgZGVmIHRl
c3RfcHVsbF9sb25nX2hlYWRlcl9kY2lkX3Rvb19sb25nKHNlbGYpOgotICAgICAgICBidWYgPSBC
dWZmZXIoCi0gICAgICAgICAgICBkYXRhPWJpbmFzY2lpLnVuaGV4bGlmeSgKLSAgICAgICAgICAg
ICAgICAiYzZmZjAwMDAxNjE1MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDQiCi0gICAgICAgICAgICAgICAgIjAxYzUxNGY5OWVjNGJiZjFmN2EzMGY5YjBjOTRm
ZWY3MTdmMWMxZDA3ZmVjMjRjOTlhODY0ZGE3ZWRlIgotICAgICAgICAgICAgKQotICAgICAgICAp
Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgY206Ci0gICAg
ICAgICAgICBwdWxsX3F1aWNfaGVhZGVyKGJ1ZiwgaG9zdF9jaWRfbGVuZ3RoPTgpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksICJEZXN0aW5hdGlvbiBDSUQgaXMg
dG9vIGxvbmcgKDIxIGJ5dGVzKSIpCi0KLSAgICBkZWYgdGVzdF9wdWxsX2xvbmdfaGVhZGVyX3Nj
aWRfdG9vX2xvbmcoc2VsZik6Ci0gICAgICAgIGJ1ZiA9IEJ1ZmZlcigKLSAgICAgICAgICAgIGRh
dGE9YmluYXNjaWkudW5oZXhsaWZ5KAotICAgICAgICAgICAgICAgICJjMmZmMDAwMDE2MDAxNTAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNCIKLSAgICAgICAgICAg
ICAgICAiMDFjZmNlZTk5ZWM0YmJmMWY3YTMwZjliMGM5NDE3YjhjMjYzY2RkOGNjOTcyYTQ0Mzlk
NjhhNDYzMjAiCi0gICAgICAgICAgICApCi0gICAgICAgICkKLSAgICAgICAgd2l0aCBzZWxmLmFz
c2VydFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBjbToKLSAgICAgICAgICAgIHB1bGxfcXVpY19oZWFk
ZXIoYnVmLCBob3N0X2NpZF9sZW5ndGg9OCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIo
Y20uZXhjZXB0aW9uKSwgIlNvdXJjZSBDSUQgaXMgdG9vIGxvbmcgKDIxIGJ5dGVzKSIpCi0KLSAg
ICBkZWYgdGVzdF9wdWxsX2xvbmdfaGVhZGVyX25vX2ZpeGVkX2JpdChzZWxmKToKLSAgICAgICAg
YnVmID0gQnVmZmVyKGRhdGE9YiJceDgwXHhmZlx4MDBceDAwXHgxMVx4MDBceDAwIikKLSAgICAg
ICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBjbToKLSAgICAgICAgICAg
IHB1bGxfcXVpY19oZWFkZXIoYnVmLCBob3N0X2NpZF9sZW5ndGg9OCkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwgIlBhY2tldCBmaXhlZCBiaXQgaXMgemVybyIp
Ci0KLSAgICBkZWYgdGVzdF9wdWxsX2xvbmdfaGVhZGVyX3Rvb19zaG9ydChzZWxmKToKLSAgICAg
ICAgYnVmID0gQnVmZmVyKGRhdGE9YiJceGMwXHgwMCIpCi0gICAgICAgIHdpdGggc2VsZi5hc3Nl
cnRSYWlzZXMoQnVmZmVyUmVhZEVycm9yKToKLSAgICAgICAgICAgIHB1bGxfcXVpY19oZWFkZXIo
YnVmLCBob3N0X2NpZF9sZW5ndGg9OCkKLQotICAgIGRlZiB0ZXN0X3B1bGxfc2hvcnRfaGVhZGVy
KHNlbGYpOgotICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1sb2FkKCJzaG9ydF9oZWFkZXIuYmlu
IikpCi0gICAgICAgIGhlYWRlciA9IHB1bGxfcXVpY19oZWFkZXIoYnVmLCBob3N0X2NpZF9sZW5n
dGg9OCkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoZWFkZXIuaXNfbG9uZ19oZWFkZXIpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLnZlcnNpb24sIE5vbmUpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoaGVhZGVyLnBhY2tldF90eXBlLCAweDUwKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGhlYWRlci5kZXN0aW5hdGlvbl9jaWQsIGJpbmFzY2lpLnVuaGV4bGlmeSgiZjQ1
YWE3YjU5YzBlMWFkNiIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlci5zb3VyY2Vf
Y2lkLCBiIiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLnRva2VuLCBiIiIpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyLmludGVncml0eV90YWcsIGIiIikKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXIucmVzdF9sZW5ndGgsIDEyKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGJ1Zi50ZWxsKCksIDkpCi0KLSAgICBkZWYgdGVzdF9wdWxsX3Nob3J0X2hl
YWRlcl9ub19maXhlZF9iaXQoc2VsZik6Ci0gICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWIiXHgw
MCIpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgY206Ci0g
ICAgICAgICAgICBwdWxsX3F1aWNfaGVhZGVyKGJ1ZiwgaG9zdF9jaWRfbGVuZ3RoPTgpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksICJQYWNrZXQgZml4ZWQgYml0
IGlzIHplcm8iKQotCi0gICAgZGVmIHRlc3RfZW5jb2RlX3F1aWNfdmVyc2lvbl9uZWdvdGlhdGlv
bihzZWxmKToKLSAgICAgICAgZGF0YSA9IGVuY29kZV9xdWljX3ZlcnNpb25fbmVnb3RpYXRpb24o
Ci0gICAgICAgICAgICBkZXN0aW5hdGlvbl9jaWQ9YmluYXNjaWkudW5oZXhsaWZ5KCI5YWFjNWE0
OWJhODdhODQ5IiksCi0gICAgICAgICAgICBzb3VyY2VfY2lkPWJpbmFzY2lpLnVuaGV4bGlmeSgi
ZjkyZjQzMzZmYTk1MWJhMSIpLAotICAgICAgICAgICAgc3VwcG9ydGVkX3ZlcnNpb25zPVsweDQ1
NDc0NzE2LCBRdWljUHJvdG9jb2xWZXJzaW9uLkRSQUZUXzI1XSwKLSAgICAgICAgKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGRhdGFbMTpdLCBsb2FkKCJ2ZXJzaW9uX25lZ290aWF0aW9uLmJp
biIpWzE6XSkKLQotCi1jbGFzcyBQYXJhbXNUZXN0KFRlc3RDYXNlKToKLSAgICBtYXhEaWZmID0g
Tm9uZQotCi0gICAgZGVmIHRlc3RfcGFyYW1zKHNlbGYpOgotICAgICAgICBkYXRhID0gYmluYXNj
aWkudW5oZXhsaWZ5KAotICAgICAgICAgICAgIjAxMDI2NzEwMDIxMGNjMmZkNmU3ZDk3YTUzYWI1
YmU4NWIyOGQ3NWM4MDA4MDMwMjQ3ZTQwNDA0ODAwNWZmZiIKLSAgICAgICAgICAgICJhMDUwNDgw
MDBmZmZmMDYwNDgwMDBmZmZmMDgwMTA2MGEwMTAzMGIwMTE5IgotICAgICAgICApCi0KLSAgICAg
ICAgIyBwYXJzZQotICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1kYXRhKQotICAgICAgICBwYXJh
bXMgPSBwdWxsX3F1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMoCi0gICAgICAgICAgICBidWYsIHBy
b3RvY29sX3ZlcnNpb249UXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNwotICAgICAgICApCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBwYXJhbXMsCi0gICAgICAgICAg
ICBRdWljVHJhbnNwb3J0UGFyYW1ldGVycygKLSAgICAgICAgICAgICAgICBpZGxlX3RpbWVvdXQ9
MTAwMDAsCi0gICAgICAgICAgICAgICAgc3RhdGVsZXNzX3Jlc2V0X3Rva2VuPWIiXHhjYy9ceGQ2
XHhlN1x4ZDl6U1x4YWJbXHhlOFsoXHhkN1xcXHg4MFx4MDgiLAotICAgICAgICAgICAgICAgIG1h
eF9wYWNrZXRfc2l6ZT0yMDIwLAotICAgICAgICAgICAgICAgIGluaXRpYWxfbWF4X2RhdGE9Mzkz
MjEwLAotICAgICAgICAgICAgICAgIGluaXRpYWxfbWF4X3N0cmVhbV9kYXRhX2JpZGlfbG9jYWw9
NjU1MzUsCi0gICAgICAgICAgICAgICAgaW5pdGlhbF9tYXhfc3RyZWFtX2RhdGFfYmlkaV9yZW1v
dGU9NjU1MzUsCi0gICAgICAgICAgICAgICAgaW5pdGlhbF9tYXhfc3RyZWFtX2RhdGFfdW5pPU5v
bmUsCi0gICAgICAgICAgICAgICAgaW5pdGlhbF9tYXhfc3RyZWFtc19iaWRpPTYsCi0gICAgICAg
ICAgICAgICAgaW5pdGlhbF9tYXhfc3RyZWFtc191bmk9Tm9uZSwKLSAgICAgICAgICAgICAgICBh
Y2tfZGVsYXlfZXhwb25lbnQ9MywKLSAgICAgICAgICAgICAgICBtYXhfYWNrX2RlbGF5PTI1LAot
ICAgICAgICAgICAgKSwKLSAgICAgICAgKQotCi0gICAgICAgICMgc2VyaWFsaXplCi0gICAgICAg
IGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0eT1sZW4oZGF0YSkpCi0gICAgICAgIHB1c2hfcXVpY190cmFu
c3BvcnRfcGFyYW1ldGVycygKLSAgICAgICAgICAgIGJ1ZiwgcGFyYW1zLCBwcm90b2NvbF92ZXJz
aW9uPVF1aWNQcm90b2NvbFZlcnNpb24uRFJBRlRfMjcKLSAgICAgICAgKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxlbihidWYuZGF0YSksIGxlbihkYXRhKSkKLQotICAgIGRlZiB0ZXN0X3Bh
cmFtc19sZWdhY3koc2VsZik6Ci0gICAgICAgIGRhdGEgPSBiaW5hc2NpaS51bmhleGxpZnkoCi0g
ICAgICAgICAgICAiMDA0NzAwMDIwMDEwY2MyZmQ2ZTdkOTdhNTNhYjViZTg1YjI4ZDc1YzgwMDgw
MDA4MDAwMTA2MDAwMTAwMDI2IgotICAgICAgICAgICAgIjcxMDAwMDYwMDA0ODAwMGZmZmYwMDA1
MDAwNDgwMDBmZmZmMDAwNDAwMDQ4MDA1ZmZmYTAwMGEwMDAxMDMwMCIKLSAgICAgICAgICAgICIw
YjAwMDExOTAwMDMwMDAyNDdlNCIKLSAgICAgICAgKQotCi0gICAgICAgICMgcGFyc2UKLSAgICAg
ICAgYnVmID0gQnVmZmVyKGRhdGE9ZGF0YSkKLSAgICAgICAgcGFyYW1zID0gcHVsbF9xdWljX3Ry
YW5zcG9ydF9wYXJhbWV0ZXJzKAotICAgICAgICAgICAgYnVmLCBwcm90b2NvbF92ZXJzaW9uPVF1
aWNQcm90b2NvbFZlcnNpb24uRFJBRlRfMjUKLSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKAotICAgICAgICAgICAgcGFyYW1zLAotICAgICAgICAgICAgUXVpY1RyYW5zcG9ydFBh
cmFtZXRlcnMoCi0gICAgICAgICAgICAgICAgaWRsZV90aW1lb3V0PTEwMDAwLAotICAgICAgICAg
ICAgICAgIHN0YXRlbGVzc19yZXNldF90b2tlbj1iIlx4Y2MvXHhkNlx4ZTdceGQ5elNceGFiW1x4
ZThbKFx4ZDdcXFx4ODBceDA4IiwKLSAgICAgICAgICAgICAgICBtYXhfcGFja2V0X3NpemU9MjAy
MCwKLSAgICAgICAgICAgICAgICBpbml0aWFsX21heF9kYXRhPTM5MzIxMCwKLSAgICAgICAgICAg
ICAgICBpbml0aWFsX21heF9zdHJlYW1fZGF0YV9iaWRpX2xvY2FsPTY1NTM1LAotICAgICAgICAg
ICAgICAgIGluaXRpYWxfbWF4X3N0cmVhbV9kYXRhX2JpZGlfcmVtb3RlPTY1NTM1LAotICAgICAg
ICAgICAgICAgIGluaXRpYWxfbWF4X3N0cmVhbV9kYXRhX3VuaT1Ob25lLAotICAgICAgICAgICAg
ICAgIGluaXRpYWxfbWF4X3N0cmVhbXNfYmlkaT02LAotICAgICAgICAgICAgICAgIGluaXRpYWxf
bWF4X3N0cmVhbXNfdW5pPU5vbmUsCi0gICAgICAgICAgICAgICAgYWNrX2RlbGF5X2V4cG9uZW50
PTMsCi0gICAgICAgICAgICAgICAgbWF4X2Fja19kZWxheT0yNSwKLSAgICAgICAgICAgICksCi0g
ICAgICAgICkKLQotICAgICAgICAjIHNlcmlhbGl6ZQotICAgICAgICBidWYgPSBCdWZmZXIoY2Fw
YWNpdHk9bGVuKGRhdGEpKQotICAgICAgICBwdXNoX3F1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMo
Ci0gICAgICAgICAgICBidWYsIHBhcmFtcywgcHJvdG9jb2xfdmVyc2lvbj1RdWljUHJvdG9jb2xW
ZXJzaW9uLkRSQUZUXzI1Ci0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4o
YnVmLmRhdGEpLCBsZW4oZGF0YSkpCi0KLSAgICBkZWYgdGVzdF9wYXJhbXNfZGlzYWJsZV9hY3Rp
dmVfbWlncmF0aW9uKHNlbGYpOgotICAgICAgICBkYXRhID0gYmluYXNjaWkudW5oZXhsaWZ5KCIw
YzAwIikKLQotICAgICAgICAjIHBhcnNlCi0gICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWRhdGEp
Ci0gICAgICAgIHBhcmFtcyA9IHB1bGxfcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycygKLSAgICAg
ICAgICAgIGJ1ZiwgcHJvdG9jb2xfdmVyc2lvbj1RdWljUHJvdG9jb2xWZXJzaW9uLkRSQUZUXzI3
Ci0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJhbXMsIFF1aWNUcmFuc3Bv
cnRQYXJhbWV0ZXJzKGRpc2FibGVfYWN0aXZlX21pZ3JhdGlvbj1UcnVlKSkKLQotICAgICAgICAj
IHNlcmlhbGl6ZQotICAgICAgICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9bGVuKGRhdGEpKQotICAg
ICAgICBwdXNoX3F1aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMoCi0gICAgICAgICAgICBidWYsIHBh
cmFtcywgcHJvdG9jb2xfdmVyc2lvbj1RdWljUHJvdG9jb2xWZXJzaW9uLkRSQUZUXzI3Ci0gICAg
ICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYuZGF0YSwgZGF0YSkKLQotICAgIGRl
ZiB0ZXN0X3BhcmFtc19kaXNhYmxlX2FjdGl2ZV9taWdyYXRpb25fbGVnYWN5KHNlbGYpOgotICAg
ICAgICBkYXRhID0gYmluYXNjaWkudW5oZXhsaWZ5KCIwMDA0MDAwYzAwMDAiKQotCi0gICAgICAg
ICMgcGFyc2UKLSAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9ZGF0YSkKLSAgICAgICAgcGFyYW1z
ID0gcHVsbF9xdWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzKAotICAgICAgICAgICAgYnVmLCBwcm90
b2NvbF92ZXJzaW9uPVF1aWNQcm90b2NvbFZlcnNpb24uRFJBRlRfMjUKLSAgICAgICAgKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcmFtcywgUXVpY1RyYW5zcG9ydFBhcmFtZXRlcnMoZGlz
YWJsZV9hY3RpdmVfbWlncmF0aW9uPVRydWUpKQotCi0gICAgICAgICMgc2VyaWFsaXplCi0gICAg
ICAgIGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0eT1sZW4oZGF0YSkpCi0gICAgICAgIHB1c2hfcXVpY190
cmFuc3BvcnRfcGFyYW1ldGVycygKLSAgICAgICAgICAgIGJ1ZiwgcGFyYW1zLCBwcm90b2NvbF92
ZXJzaW9uPVF1aWNQcm90b2NvbFZlcnNpb24uRFJBRlRfMjUKLSAgICAgICAgKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGJ1Zi5kYXRhLCBkYXRhKQotCi0gICAgZGVmIHRlc3RfcGFyYW1zX3By
ZWZlcnJlZF9hZGRyZXNzKHNlbGYpOgotICAgICAgICBkYXRhID0gYmluYXNjaWkudW5oZXhsaWZ5
KAotICAgICAgICAgICAgIjBkM2I4YmEyN2I4NjExNTMyNDAwODkwMjAwMDAwMDAwZjAzYzkxZmZm
ZTY5YTQ1NDExNTMxMjYyYzQ1MThkNiIKLSAgICAgICAgICAgICIzMDEzZjBjMjg3ZWQzNTczZWZh
OTA5NTYwMzc0NmIyZTAyZDQ1NDgwYmE2NjQzZTVjNmU3ZDQ4ZWNiNCIKLSAgICAgICAgKQotCi0g
ICAgICAgICMgcGFyc2UKLSAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9ZGF0YSkKLSAgICAgICAg
cGFyYW1zID0gcHVsbF9xdWljX3RyYW5zcG9ydF9wYXJhbWV0ZXJzKAotICAgICAgICAgICAgYnVm
LCBwcm90b2NvbF92ZXJzaW9uPVF1aWNQcm90b2NvbFZlcnNpb24uRFJBRlRfMjcKLSAgICAgICAg
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgcGFyYW1zLAotICAgICAg
ICAgICAgUXVpY1RyYW5zcG9ydFBhcmFtZXRlcnMoCi0gICAgICAgICAgICAgICAgcHJlZmVycmVk
X2FkZHJlc3M9UXVpY1ByZWZlcnJlZEFkZHJlc3MoCi0gICAgICAgICAgICAgICAgICAgIGlwdjRf
YWRkcmVzcz0oIjEzOS4xNjIuMTIzLjEzNCIsIDQ0MzUpLAotICAgICAgICAgICAgICAgICAgICBp
cHY2X2FkZHJlc3M9KCIyNDAwOjg5MDI6OmYwM2M6OTFmZjpmZTY5OmE0NTQiLCA0NDM1KSwKLSAg
ICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbl9pZD1iImJceGM0UVx4OGRjXHgwMT9ceDBjKH5c
eGQzVz5ceGZhXHg5MFx4OTVgNyIsCi0gICAgICAgICAgICAgICAgICAgIHN0YXRlbGVzc19yZXNl
dF90b2tlbj1iIkZceGIyXHhlMC1FSFx4MGJceGE2ZD5cXG59SFx4ZWNceGI0IiwKLSAgICAgICAg
ICAgICAgICApLAotICAgICAgICAgICAgKSwKLSAgICAgICAgKQotCi0gICAgICAgICMgc2VyaWFs
aXplCi0gICAgICAgIGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0eT0xMDAwKQotICAgICAgICBwdXNoX3F1
aWNfdHJhbnNwb3J0X3BhcmFtZXRlcnMoCi0gICAgICAgICAgICBidWYsIHBhcmFtcywgcHJvdG9j
b2xfdmVyc2lvbj1RdWljUHJvdG9jb2xWZXJzaW9uLkRSQUZUXzI3Ci0gICAgICAgICkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChidWYuZGF0YSwgZGF0YSkKLQotICAgIGRlZiB0ZXN0X3BhcmFt
c19wcmVmZXJyZWRfYWRkcmVzc19sZWdhY3koc2VsZik6Ci0gICAgICAgIGRhdGEgPSBiaW5hc2Np
aS51bmhleGxpZnkoCi0gICAgICAgICAgICAiMDAzZjAwMGQwMDNiOGJhMjdiODYxMTUzMjQwMDg5
MDIwMDAwMDAwMGYwM2M5MWZmZmU2OWE0NTQxMTUzMTI2IgotICAgICAgICAgICAgIjJjNDUxOGQ2
MzAxM2YwYzI4N2VkMzU3M2VmYTkwOTU2MDM3NDZiMmUwMmQ0NTQ4MGJhNjY0M2U1YzZlN2Q0OCIK
LSAgICAgICAgICAgICJlY2I0IgotICAgICAgICApCi0KLSAgICAgICAgIyBwYXJzZQotICAgICAg
ICBidWYgPSBCdWZmZXIoZGF0YT1kYXRhKQotICAgICAgICBwYXJhbXMgPSBwdWxsX3F1aWNfdHJh
bnNwb3J0X3BhcmFtZXRlcnMoCi0gICAgICAgICAgICBidWYsIHByb3RvY29sX3ZlcnNpb249UXVp
Y1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNQotICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCi0gICAgICAgICAgICBwYXJhbXMsCi0gICAgICAgICAgICBRdWljVHJhbnNwb3J0UGFy
YW1ldGVycygKLSAgICAgICAgICAgICAgICBwcmVmZXJyZWRfYWRkcmVzcz1RdWljUHJlZmVycmVk
QWRkcmVzcygKLSAgICAgICAgICAgICAgICAgICAgaXB2NF9hZGRyZXNzPSgiMTM5LjE2Mi4xMjMu
MTM0IiwgNDQzNSksCi0gICAgICAgICAgICAgICAgICAgIGlwdjZfYWRkcmVzcz0oIjI0MDA6ODkw
Mjo6ZjAzYzo5MWZmOmZlNjk6YTQ1NCIsIDQ0MzUpLAotICAgICAgICAgICAgICAgICAgICBjb25u
ZWN0aW9uX2lkPWIiYlx4YzRRXHg4ZGNceDAxP1x4MGMoflx4ZDNXPlx4ZmFceDkwXHg5NWA3IiwK
LSAgICAgICAgICAgICAgICAgICAgc3RhdGVsZXNzX3Jlc2V0X3Rva2VuPWIiRlx4YjJceGUwLUVI
XHgwYlx4YTZkPlxcbn1IXHhlY1x4YjQiLAotICAgICAgICAgICAgICAgICksCi0gICAgICAgICAg
ICApLAotICAgICAgICApCi0KLSAgICAgICAgIyBzZXJpYWxpemUKLSAgICAgICAgYnVmID0gQnVm
ZmVyKGNhcGFjaXR5PWxlbihkYXRhKSkKLSAgICAgICAgcHVzaF9xdWljX3RyYW5zcG9ydF9wYXJh
bWV0ZXJzKAotICAgICAgICAgICAgYnVmLCBwYXJhbXMsIHByb3RvY29sX3ZlcnNpb249UXVpY1By
b3RvY29sVmVyc2lvbi5EUkFGVF8yNQotICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoYnVmLmRhdGEsIGRhdGEpCi0KLSAgICBkZWYgdGVzdF9wYXJhbXNfdW5rbm93bihzZWxmKToK
LSAgICAgICAgZGF0YSA9IGJpbmFzY2lpLnVuaGV4bGlmeSgiODAwMGZmMDAwMTAwIikKLQotICAg
ICAgICAjIHBhcnNlCi0gICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWRhdGEpCi0gICAgICAgIHBh
cmFtcyA9IHB1bGxfcXVpY190cmFuc3BvcnRfcGFyYW1ldGVycygKLSAgICAgICAgICAgIGJ1Ziwg
cHJvdG9jb2xfdmVyc2lvbj1RdWljUHJvdG9jb2xWZXJzaW9uLkRSQUZUXzI3Ci0gICAgICAgICkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJhbXMsIFF1aWNUcmFuc3BvcnRQYXJhbWV0ZXJz
KCkpCi0KLSAgICBkZWYgdGVzdF9wYXJhbXNfdW5rbm93bl9sZWdhY3koc2VsZik6Ci0gICAgICAg
ICMgZmIubXZmc3QubmV0IHNlbmRzIGEgcHJvcHJpZXRhcnkgcGFyYW1ldGVyIDY1MjgwCi0gICAg
ICAgIGRhdGEgPSBiaW5hc2NpaS51bmhleGxpZnkoCi0gICAgICAgICAgICAiMDA2NDAwMDUwMDA0
ODAwMTA0MDAwMDA2MDAwNDgwMDEwNDAwMDAwNzAwMDQ4MDAxMDQwMDAwMDQwMDA0ODAxIgotICAg
ICAgICAgICAgIjAwMDAwMDAwODAwMDhjMDAwMDAwMGZmZmZmZmZmMDAwOTAwMDhjMDAwMDAwMGZm
ZmZmZmZmMDAwMTAwMDQ4MCIKLSAgICAgICAgICAgICIwMGVhNjAwMDBhMDAwMTAzMDAwMzAwMDI1
MDAwMDAwMjAwMTA2MTYxNjE2MTYyNjI2MjYyNjM2MzYzNjM2NDYiCi0gICAgICAgICAgICAiNDY0
NjRmZjAwMDAwMTAwIgotICAgICAgICApCi0KLSAgICAgICAgIyBwYXJzZQotICAgICAgICBidWYg
PSBCdWZmZXIoZGF0YT1kYXRhKQotICAgICAgICBwYXJhbXMgPSBwdWxsX3F1aWNfdHJhbnNwb3J0
X3BhcmFtZXRlcnMoCi0gICAgICAgICAgICBidWYsIHByb3RvY29sX3ZlcnNpb249UXVpY1Byb3Rv
Y29sVmVyc2lvbi5EUkFGVF8yNQotICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Ci0gICAgICAgICAgICBwYXJhbXMsCi0gICAgICAgICAgICBRdWljVHJhbnNwb3J0UGFyYW1ldGVy
cygKLSAgICAgICAgICAgICAgICBpZGxlX3RpbWVvdXQ9NjAwMDAsCi0gICAgICAgICAgICAgICAg
c3RhdGVsZXNzX3Jlc2V0X3Rva2VuPWIiYWFhYWJiYmJjY2NjZGRkZCIsCi0gICAgICAgICAgICAg
ICAgbWF4X3BhY2tldF9zaXplPTQwOTYsCi0gICAgICAgICAgICAgICAgaW5pdGlhbF9tYXhfZGF0
YT0xMDQ4NTc2LAotICAgICAgICAgICAgICAgIGluaXRpYWxfbWF4X3N0cmVhbV9kYXRhX2JpZGlf
bG9jYWw9NjY1NjAsCi0gICAgICAgICAgICAgICAgaW5pdGlhbF9tYXhfc3RyZWFtX2RhdGFfYmlk
aV9yZW1vdGU9NjY1NjAsCi0gICAgICAgICAgICAgICAgaW5pdGlhbF9tYXhfc3RyZWFtX2RhdGFf
dW5pPTY2NTYwLAotICAgICAgICAgICAgICAgIGluaXRpYWxfbWF4X3N0cmVhbXNfYmlkaT00Mjk0
OTY3Mjk1LAotICAgICAgICAgICAgICAgIGluaXRpYWxfbWF4X3N0cmVhbXNfdW5pPTQyOTQ5Njcy
OTUsCi0gICAgICAgICAgICAgICAgYWNrX2RlbGF5X2V4cG9uZW50PTMsCi0gICAgICAgICAgICAp
LAotICAgICAgICApCi0KLSAgICBkZWYgdGVzdF9wcmVmZXJyZWRfYWRkcmVzc19pcHY0X29ubHko
c2VsZik6Ci0gICAgICAgIGRhdGEgPSBiaW5hc2NpaS51bmhleGxpZnkoCi0gICAgICAgICAgICAi
OGJhMjdiODYxMTUzMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTI2MmM0NTE4
ZDYzMDEzIgotICAgICAgICAgICAgImYwYzI4N2VkMzU3M2VmYTkwOTU2MDM3NDZiMmUwMmQ0NTQ4
MGJhNjY0M2U1YzZlN2Q0OGVjYjQiCi0gICAgICAgICkKLQotICAgICAgICAjIHBhcnNlCi0gICAg
ICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWRhdGEpCi0gICAgICAgIHByZWZlcnJlZF9hZGRyZXNzID0g
cHVsbF9xdWljX3ByZWZlcnJlZF9hZGRyZXNzKGJ1ZikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgKLSAgICAgICAgICAgIHByZWZlcnJlZF9hZGRyZXNzLAotICAgICAgICAgICAgUXVpY1ByZWZl
cnJlZEFkZHJlc3MoCi0gICAgICAgICAgICAgICAgaXB2NF9hZGRyZXNzPSgiMTM5LjE2Mi4xMjMu
MTM0IiwgNDQzNSksCi0gICAgICAgICAgICAgICAgaXB2Nl9hZGRyZXNzPU5vbmUsCi0gICAgICAg
ICAgICAgICAgY29ubmVjdGlvbl9pZD1iImJceGM0UVx4OGRjXHgwMT9ceDBjKH5ceGQzVz5ceGZh
XHg5MFx4OTVgNyIsCi0gICAgICAgICAgICAgICAgc3RhdGVsZXNzX3Jlc2V0X3Rva2VuPWIiRlx4
YjJceGUwLUVIXHgwYlx4YTZkPlxcbn1IXHhlY1x4YjQiLAotICAgICAgICAgICAgKSwKLSAgICAg
ICAgKQotCi0gICAgICAgICMgc2VyaWFsaXplCi0gICAgICAgIGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0
eT1sZW4oZGF0YSkpCi0gICAgICAgIHB1c2hfcXVpY19wcmVmZXJyZWRfYWRkcmVzcyhidWYsIHBy
ZWZlcnJlZF9hZGRyZXNzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5kYXRhLCBkYXRh
KQotCi0gICAgZGVmIHRlc3RfcHJlZmVycmVkX2FkZHJlc3NfaXB2Nl9vbmx5KHNlbGYpOgotICAg
ICAgICBkYXRhID0gYmluYXNjaWkudW5oZXhsaWZ5KAotICAgICAgICAgICAgIjAwMDAwMDAwMDAw
MDI0MDA4OTAyMDAwMDAwMDBmMDNjOTFmZmZlNjlhNDU0MTE1MzEyNjJjNDUxOGQ2MzAxMyIKLSAg
ICAgICAgICAgICJmMGMyODdlZDM1NzNlZmE5MDk1NjAzNzQ2YjJlMDJkNDU0ODBiYTY2NDNlNWM2
ZTdkNDhlY2I0IgotICAgICAgICApCi0KLSAgICAgICAgIyBwYXJzZQotICAgICAgICBidWYgPSBC
dWZmZXIoZGF0YT1kYXRhKQotICAgICAgICBwcmVmZXJyZWRfYWRkcmVzcyA9IHB1bGxfcXVpY19w
cmVmZXJyZWRfYWRkcmVzcyhidWYpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAg
ICAgICBwcmVmZXJyZWRfYWRkcmVzcywKLSAgICAgICAgICAgIFF1aWNQcmVmZXJyZWRBZGRyZXNz
KAotICAgICAgICAgICAgICAgIGlwdjRfYWRkcmVzcz1Ob25lLAotICAgICAgICAgICAgICAgIGlw
djZfYWRkcmVzcz0oIjI0MDA6ODkwMjo6ZjAzYzo5MWZmOmZlNjk6YTQ1NCIsIDQ0MzUpLAotICAg
ICAgICAgICAgICAgIGNvbm5lY3Rpb25faWQ9YiJiXHhjNFFceDhkY1x4MDE/XHgwYyh+XHhkM1c+
XHhmYVx4OTBceDk1YDciLAotICAgICAgICAgICAgICAgIHN0YXRlbGVzc19yZXNldF90b2tlbj1i
IkZceGIyXHhlMC1FSFx4MGJceGE2ZD5cXG59SFx4ZWNceGI0IiwKLSAgICAgICAgICAgICksCi0g
ICAgICAgICkKLQotICAgICAgICAjIHNlcmlhbGl6ZQotICAgICAgICBidWYgPSBCdWZmZXIoY2Fw
YWNpdHk9bGVuKGRhdGEpKQotICAgICAgICBwdXNoX3F1aWNfcHJlZmVycmVkX2FkZHJlc3MoYnVm
LCBwcmVmZXJyZWRfYWRkcmVzcykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYuZGF0YSwg
ZGF0YSkKLQotCi1jbGFzcyBGcmFtZVRlc3QoVGVzdENhc2UpOgotICAgIGRlZiB0ZXN0X2Fja19m
cmFtZShzZWxmKToKLSAgICAgICAgZGF0YSA9IGIiXHgwMFx4MDJceDAwXHgwMCIKLQotICAgICAg
ICAjIHBhcnNlCi0gICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWRhdGEpCi0gICAgICAgIHJhbmdl
c2V0LCBkZWxheSA9IHBhY2tldC5wdWxsX2Fja19mcmFtZShidWYpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAxKV0pCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoZGVsYXksIDIpCi0KLSAgICAgICAgIyBzZXJpYWxpemUKLSAgICAgICAgYnVmID0g
QnVmZmVyKGNhcGFjaXR5PWxlbihkYXRhKSkKLSAgICAgICAgcGFja2V0LnB1c2hfYWNrX2ZyYW1l
KGJ1ZiwgcmFuZ2VzZXQsIGRlbGF5KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5kYXRh
LCBkYXRhKQotCi0gICAgZGVmIHRlc3RfYWNrX2ZyYW1lX3dpdGhfb25lX3JhbmdlKHNlbGYpOgot
ICAgICAgICBkYXRhID0gYiJceDAyXHgwMlx4MDFceDAwXHgwMFx4MDAiCi0KLSAgICAgICAgIyBw
YXJzZQotICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1kYXRhKQotICAgICAgICByYW5nZXNldCwg
ZGVsYXkgPSBwYWNrZXQucHVsbF9hY2tfZnJhbWUoYnVmKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgMSksIHJhbmdlKDIsIDMpXSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChkZWxheSwgMikKLQotICAgICAgICAjIHNlcmlhbGl6ZQotICAgICAg
ICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9bGVuKGRhdGEpKQotICAgICAgICBwYWNrZXQucHVzaF9h
Y2tfZnJhbWUoYnVmLCByYW5nZXNldCwgZGVsYXkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
YnVmLmRhdGEsIGRhdGEpCi0KLSAgICBkZWYgdGVzdF9hY2tfZnJhbWVfd2l0aF9vbmVfcmFuZ2Vf
MihzZWxmKToKLSAgICAgICAgZGF0YSA9IGIiXHgwNVx4MDJceDAxXHgwMFx4MDBceDAzIgotCi0g
ICAgICAgICMgcGFyc2UKLSAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9ZGF0YSkKLSAgICAgICAg
cmFuZ2VzZXQsIGRlbGF5ID0gcGFja2V0LnB1bGxfYWNrX2ZyYW1lKGJ1ZikKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDAsIDQpLCByYW5nZSg1LCA2KV0p
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVsYXksIDIpCi0KLSAgICAgICAgIyBzZXJpYWxp
emUKLSAgICAgICAgYnVmID0gQnVmZmVyKGNhcGFjaXR5PWxlbihkYXRhKSkKLSAgICAgICAgcGFj
a2V0LnB1c2hfYWNrX2ZyYW1lKGJ1ZiwgcmFuZ2VzZXQsIGRlbGF5KQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGJ1Zi5kYXRhLCBkYXRhKQotCi0gICAgZGVmIHRlc3RfYWNrX2ZyYW1lX3dpdGhf
b25lX3JhbmdlXzMoc2VsZik6Ci0gICAgICAgIGRhdGEgPSBiIlx4MDVceDAyXHgwMVx4MDBceDAx
XHgwMiIKLQotICAgICAgICAjIHBhcnNlCi0gICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWRhdGEp
Ci0gICAgICAgIHJhbmdlc2V0LCBkZWxheSA9IHBhY2tldC5wdWxsX2Fja19mcmFtZShidWYpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAzKSwgcmFu
Z2UoNSwgNildKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlbGF5LCAyKQotCi0gICAgICAg
ICMgc2VyaWFsaXplCi0gICAgICAgIGJ1ZiA9IEJ1ZmZlcihjYXBhY2l0eT1sZW4oZGF0YSkpCi0g
ICAgICAgIHBhY2tldC5wdXNoX2Fja19mcmFtZShidWYsIHJhbmdlc2V0LCBkZWxheSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChidWYuZGF0YSwgZGF0YSkKLQotICAgIGRlZiB0ZXN0X2Fja19m
cmFtZV93aXRoX3R3b19yYW5nZXMoc2VsZik6Ci0gICAgICAgIGRhdGEgPSBiIlx4MDRceDAyXHgw
Mlx4MDBceDAwXHgwMFx4MDBceDAwIgotCi0gICAgICAgICMgcGFyc2UKLSAgICAgICAgYnVmID0g
QnVmZmVyKGRhdGE9ZGF0YSkKLSAgICAgICAgcmFuZ2VzZXQsIGRlbGF5ID0gcGFja2V0LnB1bGxf
YWNrX2ZyYW1lKGJ1ZikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwg
W3JhbmdlKDAsIDEpLCByYW5nZSgyLCAzKSwgcmFuZ2UoNCwgNSldKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGRlbGF5LCAyKQotCi0gICAgICAgICMgc2VyaWFsaXplCi0gICAgICAgIGJ1ZiA9
IEJ1ZmZlcihjYXBhY2l0eT1sZW4oZGF0YSkpCi0gICAgICAgIHBhY2tldC5wdXNoX2Fja19mcmFt
ZShidWYsIHJhbmdlc2V0LCBkZWxheSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYuZGF0
YSwgZGF0YSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X3BhY2tldF9idWls
ZGVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfcGFja2V0X2J1aWxkZXIucHkKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzZTIzMTFkOTkxMjBmMWU3YjRhNDIwYmE1ZDFjNGVj
NmY3Y2FkODkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfcGFja2V0X2J1aWxkZXIucHkKKysrIC9kZXYvbnVsbApA
QCAtMSw1NjkgKzAsMCBAQAotZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UKLQotZnJvbSBh
aW9xdWljLnF1aWMuY3J5cHRvIGltcG9ydCBDcnlwdG9QYWlyCi1mcm9tIGFpb3F1aWMucXVpYy5w
YWNrZXQgaW1wb3J0ICgKLSAgICBQQUNLRVRfVFlQRV9IQU5EU0hBS0UsCi0gICAgUEFDS0VUX1RZ
UEVfSU5JVElBTCwKLSAgICBQQUNLRVRfVFlQRV9PTkVfUlRULAotICAgIFF1aWNGcmFtZVR5cGUs
Ci0gICAgUXVpY1Byb3RvY29sVmVyc2lvbiwKLSkKLWZyb20gYWlvcXVpYy5xdWljLnBhY2tldF9i
dWlsZGVyIGltcG9ydCAoCi0gICAgUXVpY1BhY2tldEJ1aWxkZXIsCi0gICAgUXVpY1BhY2tldEJ1
aWxkZXJTdG9wLAotICAgIFF1aWNTZW50UGFja2V0LAotKQotZnJvbSBhaW9xdWljLnRscyBpbXBv
cnQgRXBvY2gKLQotCi1kZWYgY3JlYXRlX2J1aWxkZXIoaXNfY2xpZW50PUZhbHNlKToKLSAgICBy
ZXR1cm4gUXVpY1BhY2tldEJ1aWxkZXIoCi0gICAgICAgIGhvc3RfY2lkPWJ5dGVzKDgpLAotICAg
ICAgICBpc19jbGllbnQ9aXNfY2xpZW50LAotICAgICAgICBwYWNrZXRfbnVtYmVyPTAsCi0gICAg
ICAgIHBlZXJfY2lkPWJ5dGVzKDgpLAotICAgICAgICBwZWVyX3Rva2VuPWIiIiwKLSAgICAgICAg
c3Bpbl9iaXQ9RmFsc2UsCi0gICAgICAgIHZlcnNpb249UXVpY1Byb3RvY29sVmVyc2lvbi5EUkFG
VF8yNSwKLSAgICApCi0KLQotZGVmIGNyZWF0ZV9jcnlwdG8oKToKLSAgICBjcnlwdG8gPSBDcnlw
dG9QYWlyKCkKLSAgICBjcnlwdG8uc2V0dXBfaW5pdGlhbChieXRlcyg4KSwgaXNfY2xpZW50PVRy
dWUsIHZlcnNpb249UXVpY1Byb3RvY29sVmVyc2lvbi5EUkFGVF8yNSkKLSAgICByZXR1cm4gY3J5
cHRvCi0KLQotY2xhc3MgUXVpY1BhY2tldEJ1aWxkZXJUZXN0KFRlc3RDYXNlKToKLSAgICBkZWYg
dGVzdF9sb25nX2hlYWRlcl9lbXB0eShzZWxmKToKLSAgICAgICAgYnVpbGRlciA9IGNyZWF0ZV9i
dWlsZGVyKCkKLSAgICAgICAgY3J5cHRvID0gY3JlYXRlX2NyeXB0bygpCi0KLSAgICAgICAgYnVp
bGRlci5zdGFydF9wYWNrZXQoUEFDS0VUX1RZUEVfSU5JVElBTCwgY3J5cHRvKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSwgMTIzNikKLSAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ1aWxkZXIucGFja2V0X2lzX2VtcHR5KQotCi0gICAgICAg
ICMgY2hlY2sgZGF0YWdyYW1zCi0gICAgICAgIGRhdGFncmFtcywgcGFja2V0cyA9IGJ1aWxkZXIu
Zmx1c2goKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXMpLCAwKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHBhY2tldHMsIFtdKQotCi0gICAgICAgICMgY2hlY2sgYnVp
bGRlcgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucGFja2V0X251bWJlciwgMCkK
LQotICAgIGRlZiB0ZXN0X2xvbmdfaGVhZGVyX3BhZGRpbmcoc2VsZik6Ci0gICAgICAgIGJ1aWxk
ZXIgPSBjcmVhdGVfYnVpbGRlcihpc19jbGllbnQ9VHJ1ZSkKLSAgICAgICAgY3J5cHRvID0gY3Jl
YXRlX2NyeXB0bygpCi0KLSAgICAgICAgIyBJTklUSUFMLCBmdWxseSBwYWRkZWQKLSAgICAgICAg
YnVpbGRlci5zdGFydF9wYWNrZXQoUEFDS0VUX1RZUEVfSU5JVElBTCwgY3J5cHRvKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSwgMTIzNikK
LSAgICAgICAgYnVmID0gYnVpbGRlci5zdGFydF9mcmFtZShRdWljRnJhbWVUeXBlLkNSWVBUTykK
LSAgICAgICAgYnVmLnB1c2hfYnl0ZXMoYnl0ZXMoMTAwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRG
YWxzZShidWlsZGVyLnBhY2tldF9pc19lbXB0eSkKLQotICAgICAgICAjIElOSVRJQUwsIGVtcHR5
Ci0gICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX0lOSVRJQUwsIGNyeXB0
bykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ1aWxkZXIucGFja2V0X2lzX2VtcHR5KQotCi0g
ICAgICAgICMgY2hlY2sgZGF0YWdyYW1zCi0gICAgICAgIGRhdGFncmFtcywgcGFja2V0cyA9IGJ1
aWxkZXIuZmx1c2goKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXMpLCAx
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXNbMF0pLCAxMjgwKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgcGFja2V0cywKLSAgICAgICAgICAg
IFsKLSAgICAgICAgICAgICAgICBRdWljU2VudFBhY2tldCgKLSAgICAgICAgICAgICAgICAgICAg
ZXBvY2g9RXBvY2guSU5JVElBTCwKLSAgICAgICAgICAgICAgICAgICAgaW5fZmxpZ2h0PVRydWUs
Ci0gICAgICAgICAgICAgICAgICAgIGlzX2Fja19lbGljaXRpbmc9VHJ1ZSwKLSAgICAgICAgICAg
ICAgICAgICAgaXNfY3J5cHRvX3BhY2tldD1UcnVlLAotICAgICAgICAgICAgICAgICAgICBwYWNr
ZXRfbnVtYmVyPTAsCi0gICAgICAgICAgICAgICAgICAgIHBhY2tldF90eXBlPVBBQ0tFVF9UWVBF
X0lOSVRJQUwsCi0gICAgICAgICAgICAgICAgICAgIHNlbnRfYnl0ZXM9MTI4MCwKLSAgICAgICAg
ICAgICAgICApCi0gICAgICAgICAgICBdLAotICAgICAgICApCi0KLSAgICAgICAgIyBjaGVjayBi
dWlsZGVyCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRlci5wYWNrZXRfbnVtYmVyLCAx
KQotCi0gICAgZGVmIHRlc3RfbG9uZ19oZWFkZXJfaW5pdGlhbF9jbGllbnRfMihzZWxmKToKLSAg
ICAgICAgYnVpbGRlciA9IGNyZWF0ZV9idWlsZGVyKGlzX2NsaWVudD1UcnVlKQotICAgICAgICBj
cnlwdG8gPSBjcmVhdGVfY3J5cHRvKCkKLQotICAgICAgICAjIElOSVRJQUwsIGZ1bGwgbGVuZ3Ro
Ci0gICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX0lOSVRJQUwsIGNyeXB0
bykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnJlbWFpbmluZ19mbGlnaHRfc3Bh
Y2UsIDEyMzYpCi0gICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUoUXVpY0ZyYW1lVHlw
ZS5DUllQVE8pCi0gICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGJ5dGVzKGJ1aWxkZXIucmVtYWluaW5n
X2ZsaWdodF9zcGFjZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYnVpbGRlci5wYWNrZXRf
aXNfZW1wdHkpCi0KLSAgICAgICAgIyBJTklUSUFMCi0gICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFj
a2V0KFBBQ0tFVF9UWVBFX0lOSVRJQUwsIGNyeXB0bykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChidWlsZGVyLnJlbWFpbmluZ19mbGlnaHRfc3BhY2UsIDEyMzYpCi0gICAgICAgIGJ1ZiA9IGJ1
aWxkZXIuc3RhcnRfZnJhbWUoUXVpY0ZyYW1lVHlwZS5DUllQVE8pCi0gICAgICAgIGJ1Zi5wdXNo
X2J5dGVzKGJ5dGVzKDEwMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYnVpbGRlci5wYWNr
ZXRfaXNfZW1wdHkpCi0KLSAgICAgICAgIyBJTklUSUFMLCBlbXB0eQotICAgICAgICBidWlsZGVy
LnN0YXJ0X3BhY2tldChQQUNLRVRfVFlQRV9JTklUSUFMLCBjcnlwdG8pCi0gICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZShidWlsZGVyLnBhY2tldF9pc19lbXB0eSkKLQotICAgICAgICAjIGNoZWNrIGRh
dGFncmFtcwotICAgICAgICBkYXRhZ3JhbXMsIHBhY2tldHMgPSBidWlsZGVyLmZsdXNoKCkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YWdyYW1zKSwgMikKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChsZW4oZGF0YWdyYW1zWzBdKSwgMTI4MCkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChsZW4oZGF0YWdyYW1zWzFdKSwgMTI4MCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgK
LSAgICAgICAgICAgIHBhY2tldHMsCi0gICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgUXVp
Y1NlbnRQYWNrZXQoCi0gICAgICAgICAgICAgICAgICAgIGVwb2NoPUVwb2NoLklOSVRJQUwsCi0g
ICAgICAgICAgICAgICAgICAgIGluX2ZsaWdodD1UcnVlLAotICAgICAgICAgICAgICAgICAgICBp
c19hY2tfZWxpY2l0aW5nPVRydWUsCi0gICAgICAgICAgICAgICAgICAgIGlzX2NyeXB0b19wYWNr
ZXQ9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgcGFja2V0X251bWJlcj0wLAotICAgICAgICAg
ICAgICAgICAgICBwYWNrZXRfdHlwZT1QQUNLRVRfVFlQRV9JTklUSUFMLAotICAgICAgICAgICAg
ICAgICAgICBzZW50X2J5dGVzPTEyODAsCi0gICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAg
ICAgICBRdWljU2VudFBhY2tldCgKLSAgICAgICAgICAgICAgICAgICAgZXBvY2g9RXBvY2guSU5J
VElBTCwKLSAgICAgICAgICAgICAgICAgICAgaW5fZmxpZ2h0PVRydWUsCi0gICAgICAgICAgICAg
ICAgICAgIGlzX2Fja19lbGljaXRpbmc9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgaXNfY3J5
cHRvX3BhY2tldD1UcnVlLAotICAgICAgICAgICAgICAgICAgICBwYWNrZXRfbnVtYmVyPTEsCi0g
ICAgICAgICAgICAgICAgICAgIHBhY2tldF90eXBlPVBBQ0tFVF9UWVBFX0lOSVRJQUwsCi0gICAg
ICAgICAgICAgICAgICAgIHNlbnRfYnl0ZXM9MTI4MCwKLSAgICAgICAgICAgICAgICApLAotICAg
ICAgICAgICAgXSwKLSAgICAgICAgKQotCi0gICAgICAgICMgY2hlY2sgYnVpbGRlcgotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucGFja2V0X251bWJlciwgMikKLQotICAgIGRlZiB0
ZXN0X2xvbmdfaGVhZGVyX2luaXRpYWxfc2VydmVyKHNlbGYpOgotICAgICAgICBidWlsZGVyID0g
Y3JlYXRlX2J1aWxkZXIoKQotICAgICAgICBjcnlwdG8gPSBjcmVhdGVfY3J5cHRvKCkKLQotICAg
ICAgICAjIElOSVRJQUwKLSAgICAgICAgYnVpbGRlci5zdGFydF9wYWNrZXQoUEFDS0VUX1RZUEVf
SU5JVElBTCwgY3J5cHRvKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucmVtYWlu
aW5nX2ZsaWdodF9zcGFjZSwgMTIzNikKLSAgICAgICAgYnVmID0gYnVpbGRlci5zdGFydF9mcmFt
ZShRdWljRnJhbWVUeXBlLkNSWVBUTykKLSAgICAgICAgYnVmLnB1c2hfYnl0ZXMoYnl0ZXMoMTAw
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShidWlsZGVyLnBhY2tldF9pc19lbXB0eSkKLQot
ICAgICAgICAjIElOSVRJQUwsIGVtcHR5Ci0gICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBB
Q0tFVF9UWVBFX0lOSVRJQUwsIGNyeXB0bykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ1aWxk
ZXIucGFja2V0X2lzX2VtcHR5KQotCi0gICAgICAgICMgY2hlY2sgZGF0YWdyYW1zCi0gICAgICAg
IGRhdGFncmFtcywgcGFja2V0cyA9IGJ1aWxkZXIuZmx1c2goKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGxlbihkYXRhZ3JhbXMpLCAxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihk
YXRhZ3JhbXNbMF0pLCAxNDUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAg
ICBwYWNrZXRzLAotICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgIFF1aWNTZW50UGFja2V0
KAotICAgICAgICAgICAgICAgICAgICBlcG9jaD1FcG9jaC5JTklUSUFMLAotICAgICAgICAgICAg
ICAgICAgICBpbl9mbGlnaHQ9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgaXNfYWNrX2VsaWNp
dGluZz1UcnVlLAotICAgICAgICAgICAgICAgICAgICBpc19jcnlwdG9fcGFja2V0PVRydWUsCi0g
ICAgICAgICAgICAgICAgICAgIHBhY2tldF9udW1iZXI9MCwKLSAgICAgICAgICAgICAgICAgICAg
cGFja2V0X3R5cGU9UEFDS0VUX1RZUEVfSU5JVElBTCwKLSAgICAgICAgICAgICAgICAgICAgc2Vu
dF9ieXRlcz0xNDUsCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgXSwKLSAgICAgICAg
KQotCi0gICAgICAgICMgY2hlY2sgYnVpbGRlcgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1
aWxkZXIucGFja2V0X251bWJlciwgMSkKLQotICAgIGRlZiB0ZXN0X2xvbmdfaGVhZGVyX3RoZW5f
c2hvcnRfaGVhZGVyKHNlbGYpOgotICAgICAgICBidWlsZGVyID0gY3JlYXRlX2J1aWxkZXIoKQot
ICAgICAgICBjcnlwdG8gPSBjcmVhdGVfY3J5cHRvKCkKLQotICAgICAgICAjIElOSVRJQUwsIGZ1
bGwgbGVuZ3RoCi0gICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX0lOSVRJ
QUwsIGNyeXB0bykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnJlbWFpbmluZ19m
bGlnaHRfc3BhY2UsIDEyMzYpCi0gICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUoUXVp
Y0ZyYW1lVHlwZS5DUllQVE8pCi0gICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGJ5dGVzKGJ1aWxkZXIu
cmVtYWluaW5nX2ZsaWdodF9zcGFjZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYnVpbGRl
ci5wYWNrZXRfaXNfZW1wdHkpCi0KLSAgICAgICAgIyBJTklUSUFMLCBlbXB0eQotICAgICAgICBi
dWlsZGVyLnN0YXJ0X3BhY2tldChQQUNLRVRfVFlQRV9JTklUSUFMLCBjcnlwdG8pCi0gICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShidWlsZGVyLnBhY2tldF9pc19lbXB0eSkKLQotICAgICAgICAjIE9O
RV9SVFQsIGZ1bGwgbGVuZ3RoCi0gICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9U
WVBFX09ORV9SVFQsIGNyeXB0bykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnJl
bWFpbmluZ19mbGlnaHRfc3BhY2UsIDEyNTMpCi0gICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRf
ZnJhbWUoUXVpY0ZyYW1lVHlwZS5TVFJFQU1fQkFTRSkKLSAgICAgICAgYnVmLnB1c2hfYnl0ZXMo
Ynl0ZXMoYnVpbGRlci5yZW1haW5pbmdfZmxpZ2h0X3NwYWNlKSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRGYWxzZShidWlsZGVyLnBhY2tldF9pc19lbXB0eSkKLQotICAgICAgICAjIE9ORV9SVFQsIGVt
cHR5Ci0gICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX09ORV9SVFQsIGNy
eXB0bykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ1aWxkZXIucGFja2V0X2lzX2VtcHR5KQot
Ci0gICAgICAgICMgY2hlY2sgZGF0YWdyYW1zCi0gICAgICAgIGRhdGFncmFtcywgcGFja2V0cyA9
IGJ1aWxkZXIuZmx1c2goKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXMp
LCAyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXNbMF0pLCAxMjgwKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXNbMV0pLCAxMjgwKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgcGFja2V0cywKLSAgICAgICAgICAgIFsK
LSAgICAgICAgICAgICAgICBRdWljU2VudFBhY2tldCgKLSAgICAgICAgICAgICAgICAgICAgZXBv
Y2g9RXBvY2guSU5JVElBTCwKLSAgICAgICAgICAgICAgICAgICAgaW5fZmxpZ2h0PVRydWUsCi0g
ICAgICAgICAgICAgICAgICAgIGlzX2Fja19lbGljaXRpbmc9VHJ1ZSwKLSAgICAgICAgICAgICAg
ICAgICAgaXNfY3J5cHRvX3BhY2tldD1UcnVlLAotICAgICAgICAgICAgICAgICAgICBwYWNrZXRf
bnVtYmVyPTAsCi0gICAgICAgICAgICAgICAgICAgIHBhY2tldF90eXBlPVBBQ0tFVF9UWVBFX0lO
SVRJQUwsCi0gICAgICAgICAgICAgICAgICAgIHNlbnRfYnl0ZXM9MTI4MCwKLSAgICAgICAgICAg
ICAgICApLAotICAgICAgICAgICAgICAgIFF1aWNTZW50UGFja2V0KAotICAgICAgICAgICAgICAg
ICAgICBlcG9jaD1FcG9jaC5PTkVfUlRULAotICAgICAgICAgICAgICAgICAgICBpbl9mbGlnaHQ9
VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgaXNfYWNrX2VsaWNpdGluZz1UcnVlLAotICAgICAg
ICAgICAgICAgICAgICBpc19jcnlwdG9fcGFja2V0PUZhbHNlLAotICAgICAgICAgICAgICAgICAg
ICBwYWNrZXRfbnVtYmVyPTEsCi0gICAgICAgICAgICAgICAgICAgIHBhY2tldF90eXBlPVBBQ0tF
VF9UWVBFX09ORV9SVFQsCi0gICAgICAgICAgICAgICAgICAgIHNlbnRfYnl0ZXM9MTI4MCwKLSAg
ICAgICAgICAgICAgICApLAotICAgICAgICAgICAgXSwKLSAgICAgICAgKQotCi0gICAgICAgICMg
Y2hlY2sgYnVpbGRlcgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucGFja2V0X251
bWJlciwgMikKLQotICAgIGRlZiB0ZXN0X2xvbmdfaGVhZGVyX3RoZW5fbG9uZ19oZWFkZXIoc2Vs
Zik6Ci0gICAgICAgIGJ1aWxkZXIgPSBjcmVhdGVfYnVpbGRlcigpCi0gICAgICAgIGNyeXB0byA9
IGNyZWF0ZV9jcnlwdG8oKQotCi0gICAgICAgICMgSU5JVElBTAotICAgICAgICBidWlsZGVyLnN0
YXJ0X3BhY2tldChQQUNLRVRfVFlQRV9JTklUSUFMLCBjcnlwdG8pCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoYnVpbGRlci5yZW1haW5pbmdfZmxpZ2h0X3NwYWNlLCAxMjM2KQotICAgICAgICBi
dWYgPSBidWlsZGVyLnN0YXJ0X2ZyYW1lKFF1aWNGcmFtZVR5cGUuQ1JZUFRPKQotICAgICAgICBi
dWYucHVzaF9ieXRlcyhieXRlcygxOTkpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJ1aWxk
ZXIucGFja2V0X2lzX2VtcHR5KQotCi0gICAgICAgICMgSEFORFNIQUtFCi0gICAgICAgIGJ1aWxk
ZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX0hBTkRTSEFLRSwgY3J5cHRvKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSwgOTkzKQotICAg
ICAgICBidWYgPSBidWlsZGVyLnN0YXJ0X2ZyYW1lKFF1aWNGcmFtZVR5cGUuQ1JZUFRPKQotICAg
ICAgICBidWYucHVzaF9ieXRlcyhieXRlcygyOTkpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNl
KGJ1aWxkZXIucGFja2V0X2lzX2VtcHR5KQotCi0gICAgICAgICMgT05FX1JUVAotICAgICAgICBi
dWlsZGVyLnN0YXJ0X3BhY2tldChQQUNLRVRfVFlQRV9PTkVfUlRULCBjcnlwdG8pCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRlci5yZW1haW5pbmdfZmxpZ2h0X3NwYWNlLCA2NjYpCi0g
ICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3RhcnRfZnJhbWUoUXVpY0ZyYW1lVHlwZS5DUllQVE8pCi0g
ICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGJ5dGVzKDI5OSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2UoYnVpbGRlci5wYWNrZXRfaXNfZW1wdHkpCi0KLSAgICAgICAgIyBjaGVjayBkYXRhZ3JhbXMK
LSAgICAgICAgZGF0YWdyYW1zLCBwYWNrZXRzID0gYnVpbGRlci5mbHVzaCgpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwobGVuKGRhdGFncmFtcyksIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwobGVuKGRhdGFncmFtc1swXSksIDkxNCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAg
ICAgICAgICAgIHBhY2tldHMsCi0gICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgUXVpY1Nl
bnRQYWNrZXQoCi0gICAgICAgICAgICAgICAgICAgIGVwb2NoPUVwb2NoLklOSVRJQUwsCi0gICAg
ICAgICAgICAgICAgICAgIGluX2ZsaWdodD1UcnVlLAotICAgICAgICAgICAgICAgICAgICBpc19h
Y2tfZWxpY2l0aW5nPVRydWUsCi0gICAgICAgICAgICAgICAgICAgIGlzX2NyeXB0b19wYWNrZXQ9
VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgcGFja2V0X251bWJlcj0wLAotICAgICAgICAgICAg
ICAgICAgICBwYWNrZXRfdHlwZT1QQUNLRVRfVFlQRV9JTklUSUFMLAotICAgICAgICAgICAgICAg
ICAgICBzZW50X2J5dGVzPTI0NCwKLSAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgICAg
IFF1aWNTZW50UGFja2V0KAotICAgICAgICAgICAgICAgICAgICBlcG9jaD1FcG9jaC5IQU5EU0hB
S0UsCi0gICAgICAgICAgICAgICAgICAgIGluX2ZsaWdodD1UcnVlLAotICAgICAgICAgICAgICAg
ICAgICBpc19hY2tfZWxpY2l0aW5nPVRydWUsCi0gICAgICAgICAgICAgICAgICAgIGlzX2NyeXB0
b19wYWNrZXQ9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgcGFja2V0X251bWJlcj0xLAotICAg
ICAgICAgICAgICAgICAgICBwYWNrZXRfdHlwZT1QQUNLRVRfVFlQRV9IQU5EU0hBS0UsCi0gICAg
ICAgICAgICAgICAgICAgIHNlbnRfYnl0ZXM9MzQzLAotICAgICAgICAgICAgICAgICksCi0gICAg
ICAgICAgICAgICAgUXVpY1NlbnRQYWNrZXQoCi0gICAgICAgICAgICAgICAgICAgIGVwb2NoPUVw
b2NoLk9ORV9SVFQsCi0gICAgICAgICAgICAgICAgICAgIGluX2ZsaWdodD1UcnVlLAotICAgICAg
ICAgICAgICAgICAgICBpc19hY2tfZWxpY2l0aW5nPVRydWUsCi0gICAgICAgICAgICAgICAgICAg
IGlzX2NyeXB0b19wYWNrZXQ9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgcGFja2V0X251bWJl
cj0yLAotICAgICAgICAgICAgICAgICAgICBwYWNrZXRfdHlwZT1QQUNLRVRfVFlQRV9PTkVfUlRU
LAotICAgICAgICAgICAgICAgICAgICBzZW50X2J5dGVzPTMyNywKLSAgICAgICAgICAgICAgICAp
LAotICAgICAgICAgICAgXSwKLSAgICAgICAgKQotCi0gICAgICAgICMgY2hlY2sgYnVpbGRlcgot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucGFja2V0X251bWJlciwgMykKLQotICAg
IGRlZiB0ZXN0X3Nob3J0X2hlYWRlcl9lbXB0eShzZWxmKToKLSAgICAgICAgYnVpbGRlciA9IGNy
ZWF0ZV9idWlsZGVyKCkKLSAgICAgICAgY3J5cHRvID0gY3JlYXRlX2NyeXB0bygpCi0KLSAgICAg
ICAgYnVpbGRlci5zdGFydF9wYWNrZXQoUEFDS0VUX1RZUEVfT05FX1JUVCwgY3J5cHRvKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSwgMTI1
MykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ1aWxkZXIucGFja2V0X2lzX2VtcHR5KQotCi0g
ICAgICAgICMgY2hlY2sgZGF0YWdyYW1zCi0gICAgICAgIGRhdGFncmFtcywgcGFja2V0cyA9IGJ1
aWxkZXIuZmx1c2goKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGFncmFtcywgW10pCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFja2V0cywgW10pCi0KLSAgICAgICAgIyBjaGVjayBi
dWlsZGVyCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRlci5wYWNrZXRfbnVtYmVyLCAw
KQotCi0gICAgZGVmIHRlc3Rfc2hvcnRfaGVhZGVyX3BhZGRpbmcoc2VsZik6Ci0gICAgICAgIGJ1
aWxkZXIgPSBjcmVhdGVfYnVpbGRlcigpCi0gICAgICAgIGNyeXB0byA9IGNyZWF0ZV9jcnlwdG8o
KQotCi0gICAgICAgICMgT05FX1JUVCwgZnVsbCBsZW5ndGgKLSAgICAgICAgYnVpbGRlci5zdGFy
dF9wYWNrZXQoUEFDS0VUX1RZUEVfT05FX1JUVCwgY3J5cHRvKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSwgMTI1MykKLSAgICAgICAgYnVm
ID0gYnVpbGRlci5zdGFydF9mcmFtZShRdWljRnJhbWVUeXBlLkNSWVBUTykKLSAgICAgICAgYnVm
LnB1c2hfYnl0ZXMoYnl0ZXMoYnVpbGRlci5yZW1haW5pbmdfZmxpZ2h0X3NwYWNlKSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRGYWxzZShidWlsZGVyLnBhY2tldF9pc19lbXB0eSkKLQotICAgICAgICAj
IGNoZWNrIGRhdGFncmFtcwotICAgICAgICBkYXRhZ3JhbXMsIHBhY2tldHMgPSBidWlsZGVyLmZs
dXNoKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YWdyYW1zKSwgMSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YWdyYW1zWzBdKSwgMTI4MCkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIHBhY2tldHMsCi0gICAgICAgICAgICBbCi0gICAg
ICAgICAgICAgICAgUXVpY1NlbnRQYWNrZXQoCi0gICAgICAgICAgICAgICAgICAgIGVwb2NoPUVw
b2NoLk9ORV9SVFQsCi0gICAgICAgICAgICAgICAgICAgIGluX2ZsaWdodD1UcnVlLAotICAgICAg
ICAgICAgICAgICAgICBpc19hY2tfZWxpY2l0aW5nPVRydWUsCi0gICAgICAgICAgICAgICAgICAg
IGlzX2NyeXB0b19wYWNrZXQ9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgcGFja2V0X251bWJl
cj0wLAotICAgICAgICAgICAgICAgICAgICBwYWNrZXRfdHlwZT1QQUNLRVRfVFlQRV9PTkVfUlRU
LAotICAgICAgICAgICAgICAgICAgICBzZW50X2J5dGVzPTEyODAsCi0gICAgICAgICAgICAgICAg
KQotICAgICAgICAgICAgXSwKLSAgICAgICAgKQotCi0gICAgICAgICMgY2hlY2sgYnVpbGRlcgot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucGFja2V0X251bWJlciwgMSkKLQotICAg
IGRlZiB0ZXN0X3Nob3J0X2hlYWRlcl9tYXhfZmxpZ2h0X2J5dGVzKHNlbGYpOgotICAgICAgICAi
IiIKLSAgICAgICAgbWF4X2ZsaWdodF9ieXRlcyBsaW1pdHMgc2VudCBkYXRhLgotICAgICAgICAi
IiIKLSAgICAgICAgYnVpbGRlciA9IGNyZWF0ZV9idWlsZGVyKCkKLSAgICAgICAgYnVpbGRlci5t
YXhfZmxpZ2h0X2J5dGVzID0gMTAwMAotCi0gICAgICAgIGNyeXB0byA9IGNyZWF0ZV9jcnlwdG8o
KQotCi0gICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX09ORV9SVFQsIGNy
eXB0bykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnJlbWFpbmluZ19mbGlnaHRf
c3BhY2UsIDk3MykKLSAgICAgICAgYnVmID0gYnVpbGRlci5zdGFydF9mcmFtZShRdWljRnJhbWVU
eXBlLkNSWVBUTykKLSAgICAgICAgYnVmLnB1c2hfYnl0ZXMoYnl0ZXMoYnVpbGRlci5yZW1haW5p
bmdfZmxpZ2h0X3NwYWNlKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShidWlsZGVyLnBhY2tl
dF9pc19lbXB0eSkKLQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNQYWNrZXRC
dWlsZGVyU3RvcCk6Ci0gICAgICAgICAgICBidWlsZGVyLnN0YXJ0X3BhY2tldChQQUNLRVRfVFlQ
RV9PTkVfUlRULCBjcnlwdG8pCi0gICAgICAgICAgICBidWlsZGVyLnN0YXJ0X2ZyYW1lKFF1aWNG
cmFtZVR5cGUuQ1JZUFRPKQotCi0gICAgICAgICMgY2hlY2sgZGF0YWdyYW1zCi0gICAgICAgIGRh
dGFncmFtcywgcGFja2V0cyA9IGJ1aWxkZXIuZmx1c2goKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGxlbihkYXRhZ3JhbXMpLCAxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRh
Z3JhbXNbMF0pLCAxMDAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAg
cGFja2V0cywKLSAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICBRdWljU2VudFBhY2tldCgK
LSAgICAgICAgICAgICAgICAgICAgZXBvY2g9RXBvY2guT05FX1JUVCwKLSAgICAgICAgICAgICAg
ICAgICAgaW5fZmxpZ2h0PVRydWUsCi0gICAgICAgICAgICAgICAgICAgIGlzX2Fja19lbGljaXRp
bmc9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgaXNfY3J5cHRvX3BhY2tldD1UcnVlLAotICAg
ICAgICAgICAgICAgICAgICBwYWNrZXRfbnVtYmVyPTAsCi0gICAgICAgICAgICAgICAgICAgIHBh
Y2tldF90eXBlPVBBQ0tFVF9UWVBFX09ORV9SVFQsCi0gICAgICAgICAgICAgICAgICAgIHNlbnRf
Ynl0ZXM9MTAwMCwKLSAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgXSwKLSAgICAgICAg
KQotCi0gICAgICAgICMgY2hlY2sgYnVpbGRlcgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1
aWxkZXIucGFja2V0X251bWJlciwgMSkKLQotICAgIGRlZiB0ZXN0X3Nob3J0X2hlYWRlcl9tYXhf
ZmxpZ2h0X2J5dGVzX3plcm8oc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBtYXhfZmxpZ2h0
X2J5dGVzID0gMCBvbmx5IGFsbG93cyBBQ0tzIGFuZCBDT05ORUNUSU9OX0NMT1NFLgotCi0gICAg
ICAgIENoZWNrIENSWVBUTyBpcyBub3QgYWxsb3dlZC4KLSAgICAgICAgIiIiCi0gICAgICAgIGJ1
aWxkZXIgPSBjcmVhdGVfYnVpbGRlcigpCi0gICAgICAgIGJ1aWxkZXIubWF4X2ZsaWdodF9ieXRl
cyA9IDAKLQotICAgICAgICBjcnlwdG8gPSBjcmVhdGVfY3J5cHRvKCkKLQotICAgICAgICB3aXRo
IHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNQYWNrZXRCdWlsZGVyU3RvcCk6Ci0gICAgICAgICAgICBi
dWlsZGVyLnN0YXJ0X3BhY2tldChQQUNLRVRfVFlQRV9PTkVfUlRULCBjcnlwdG8pCi0gICAgICAg
ICAgICBidWlsZGVyLnN0YXJ0X2ZyYW1lKFF1aWNGcmFtZVR5cGUuQ1JZUFRPKQotCi0gICAgICAg
ICMgY2hlY2sgZGF0YWdyYW1zCi0gICAgICAgIGRhdGFncmFtcywgcGFja2V0cyA9IGJ1aWxkZXIu
Zmx1c2goKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhZ3JhbXMpLCAwKQotCi0g
ICAgICAgICMgY2hlY2sgYnVpbGRlcgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIu
cGFja2V0X251bWJlciwgMCkKLQotICAgIGRlZiB0ZXN0X3Nob3J0X2hlYWRlcl9tYXhfZmxpZ2h0
X2J5dGVzX3plcm9fYWNrKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgbWF4X2ZsaWdodF9i
eXRlcyA9IDAgb25seSBhbGxvd3MgQUNLcyBhbmQgQ09OTkVDVElPTl9DTE9TRS4KLQotICAgICAg
ICBDaGVjayBBQ0sgaXMgYWxsb3dlZC4KLSAgICAgICAgIiIiCi0gICAgICAgIGJ1aWxkZXIgPSBj
cmVhdGVfYnVpbGRlcigpCi0gICAgICAgIGJ1aWxkZXIubWF4X2ZsaWdodF9ieXRlcyA9IDAKLQot
ICAgICAgICBjcnlwdG8gPSBjcmVhdGVfY3J5cHRvKCkKLQotICAgICAgICBidWlsZGVyLnN0YXJ0
X3BhY2tldChQQUNLRVRfVFlQRV9PTkVfUlRULCBjcnlwdG8pCi0gICAgICAgIGJ1ZiA9IGJ1aWxk
ZXIuc3RhcnRfZnJhbWUoUXVpY0ZyYW1lVHlwZS5BQ0spCi0gICAgICAgIGJ1Zi5wdXNoX2J5dGVz
KGJ5dGVzKDY0KSkKLQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFF1aWNQYWNrZXRC
dWlsZGVyU3RvcCk6Ci0gICAgICAgICAgICBidWlsZGVyLnN0YXJ0X3BhY2tldChQQUNLRVRfVFlQ
RV9PTkVfUlRULCBjcnlwdG8pCi0gICAgICAgICAgICBidWlsZGVyLnN0YXJ0X2ZyYW1lKFF1aWNG
cmFtZVR5cGUuQ1JZUFRPKQotCi0gICAgICAgICMgY2hlY2sgZGF0YWdyYW1zCi0gICAgICAgIGRh
dGFncmFtcywgcGFja2V0cyA9IGJ1aWxkZXIuZmx1c2goKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGxlbihkYXRhZ3JhbXMpLCAxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRh
Z3JhbXNbMF0pLCA5MikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIHBh
Y2tldHMsCi0gICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgUXVpY1NlbnRQYWNrZXQoCi0g
ICAgICAgICAgICAgICAgICAgIGVwb2NoPUVwb2NoLk9ORV9SVFQsCi0gICAgICAgICAgICAgICAg
ICAgIGluX2ZsaWdodD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgaXNfYWNrX2VsaWNpdGlu
Zz1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgaXNfY3J5cHRvX3BhY2tldD1GYWxzZSwKLSAg
ICAgICAgICAgICAgICAgICAgcGFja2V0X251bWJlcj0wLAotICAgICAgICAgICAgICAgICAgICBw
YWNrZXRfdHlwZT1QQUNLRVRfVFlQRV9PTkVfUlRULAotICAgICAgICAgICAgICAgICAgICBzZW50
X2J5dGVzPTkyLAotICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICBdLAotICAgICAgICAp
Ci0KLSAgICAgICAgIyBjaGVjayBidWlsZGVyCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVp
bGRlci5wYWNrZXRfbnVtYmVyLCAxKQotCi0gICAgZGVmIHRlc3Rfc2hvcnRfaGVhZGVyX21heF90
b3RhbF9ieXRlc18xKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgbWF4X3RvdGFsX2J5dGVz
IGRvZXNuJ3QgYWxsb3cgYW55IHBhY2tldHMuCi0gICAgICAgICIiIgotICAgICAgICBidWlsZGVy
ID0gY3JlYXRlX2J1aWxkZXIoKQotICAgICAgICBidWlsZGVyLm1heF90b3RhbF9ieXRlcyA9IDEx
Ci0KLSAgICAgICAgY3J5cHRvID0gY3JlYXRlX2NyeXB0bygpCi0KLSAgICAgICAgd2l0aCBzZWxm
LmFzc2VydFJhaXNlcyhRdWljUGFja2V0QnVpbGRlclN0b3ApOgotICAgICAgICAgICAgYnVpbGRl
ci5zdGFydF9wYWNrZXQoUEFDS0VUX1RZUEVfT05FX1JUVCwgY3J5cHRvKQotCi0gICAgICAgICMg
Y2hlY2sgZGF0YWdyYW1zCi0gICAgICAgIGRhdGFncmFtcywgcGFja2V0cyA9IGJ1aWxkZXIuZmx1
c2goKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGFncmFtcywgW10pCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwocGFja2V0cywgW10pCi0KLSAgICAgICAgIyBjaGVjayBidWlsZGVyCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVpbGRlci5wYWNrZXRfbnVtYmVyLCAwKQotCi0gICAg
ZGVmIHRlc3Rfc2hvcnRfaGVhZGVyX21heF90b3RhbF9ieXRlc18yKHNlbGYpOgotICAgICAgICAi
IiIKLSAgICAgICAgbWF4X3RvdGFsX2J5dGVzIGFsbG93cyBhIHNob3J0IHBhY2tldC4KLSAgICAg
ICAgIiIiCi0gICAgICAgIGJ1aWxkZXIgPSBjcmVhdGVfYnVpbGRlcigpCi0gICAgICAgIGJ1aWxk
ZXIubWF4X3RvdGFsX2J5dGVzID0gODAwCi0KLSAgICAgICAgY3J5cHRvID0gY3JlYXRlX2NyeXB0
bygpCi0KLSAgICAgICAgYnVpbGRlci5zdGFydF9wYWNrZXQoUEFDS0VUX1RZUEVfT05FX1JUVCwg
Y3J5cHRvKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdo
dF9zcGFjZSwgNzczKQotICAgICAgICBidWYgPSBidWlsZGVyLnN0YXJ0X2ZyYW1lKFF1aWNGcmFt
ZVR5cGUuQ1JZUFRPKQotICAgICAgICBidWYucHVzaF9ieXRlcyhieXRlcyhidWlsZGVyLnJlbWFp
bmluZ19mbGlnaHRfc3BhY2UpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJ1aWxkZXIucGFj
a2V0X2lzX2VtcHR5KQotCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUXVpY1BhY2tl
dEJ1aWxkZXJTdG9wKToKLSAgICAgICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9U
WVBFX09ORV9SVFQsIGNyeXB0bykKLQotICAgICAgICAjIGNoZWNrIGRhdGFncmFtcwotICAgICAg
ICBkYXRhZ3JhbXMsIHBhY2tldHMgPSBidWlsZGVyLmZsdXNoKCkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChsZW4oZGF0YWdyYW1zKSwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4o
ZGF0YWdyYW1zWzBdKSwgODAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAg
ICAgcGFja2V0cywKLSAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICBRdWljU2VudFBhY2tl
dCgKLSAgICAgICAgICAgICAgICAgICAgZXBvY2g9RXBvY2guT05FX1JUVCwKLSAgICAgICAgICAg
ICAgICAgICAgaW5fZmxpZ2h0PVRydWUsCi0gICAgICAgICAgICAgICAgICAgIGlzX2Fja19lbGlj
aXRpbmc9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgaXNfY3J5cHRvX3BhY2tldD1UcnVlLAot
ICAgICAgICAgICAgICAgICAgICBwYWNrZXRfbnVtYmVyPTAsCi0gICAgICAgICAgICAgICAgICAg
IHBhY2tldF90eXBlPVBBQ0tFVF9UWVBFX09ORV9SVFQsCi0gICAgICAgICAgICAgICAgICAgIHNl
bnRfYnl0ZXM9ODAwLAotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgIF0sCi0gICAgICAg
ICkKLQotICAgICAgICAjIGNoZWNrIGJ1aWxkZXIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChi
dWlsZGVyLnBhY2tldF9udW1iZXIsIDEpCi0KLSAgICBkZWYgdGVzdF9zaG9ydF9oZWFkZXJfbWF4
X3RvdGFsX2J5dGVzXzMoc2VsZik6Ci0gICAgICAgIGJ1aWxkZXIgPSBjcmVhdGVfYnVpbGRlcigp
Ci0gICAgICAgIGJ1aWxkZXIubWF4X3RvdGFsX2J5dGVzID0gMjAwMAotCi0gICAgICAgIGNyeXB0
byA9IGNyZWF0ZV9jcnlwdG8oKQotCi0gICAgICAgIGJ1aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tF
VF9UWVBFX09ORV9SVFQsIGNyeXB0bykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVy
LnJlbWFpbmluZ19mbGlnaHRfc3BhY2UsIDEyNTMpCi0gICAgICAgIGJ1ZiA9IGJ1aWxkZXIuc3Rh
cnRfZnJhbWUoUXVpY0ZyYW1lVHlwZS5DUllQVE8pCi0gICAgICAgIGJ1Zi5wdXNoX2J5dGVzKGJ5
dGVzKGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RmFsc2UoYnVpbGRlci5wYWNrZXRfaXNfZW1wdHkpCi0KLSAgICAgICAgYnVpbGRlci5zdGFydF9w
YWNrZXQoUEFDS0VUX1RZUEVfT05FX1JUVCwgY3J5cHRvKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGJ1aWxkZXIucmVtYWluaW5nX2ZsaWdodF9zcGFjZSwgNjkzKQotICAgICAgICBidWYgPSBi
dWlsZGVyLnN0YXJ0X2ZyYW1lKFF1aWNGcmFtZVR5cGUuQ1JZUFRPKQotICAgICAgICBidWYucHVz
aF9ieXRlcyhieXRlcyhidWlsZGVyLnJlbWFpbmluZ19mbGlnaHRfc3BhY2UpKQotICAgICAgICBz
ZWxmLmFzc2VydEZhbHNlKGJ1aWxkZXIucGFja2V0X2lzX2VtcHR5KQotCi0gICAgICAgIHdpdGgg
c2VsZi5hc3NlcnRSYWlzZXMoUXVpY1BhY2tldEJ1aWxkZXJTdG9wKToKLSAgICAgICAgICAgIGJ1
aWxkZXIuc3RhcnRfcGFja2V0KFBBQ0tFVF9UWVBFX09ORV9SVFQsIGNyeXB0bykKLQotICAgICAg
ICAjIGNoZWNrIGRhdGFncmFtcwotICAgICAgICBkYXRhZ3JhbXMsIHBhY2tldHMgPSBidWlsZGVy
LmZsdXNoKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YWdyYW1zKSwgMikKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YWdyYW1zWzBdKSwgMTI4MCkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YWdyYW1zWzFdKSwgNzIwKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKAotICAgICAgICAgICAgcGFja2V0cywKLSAgICAgICAgICAgIFsKLSAgICAgICAg
ICAgICAgICBRdWljU2VudFBhY2tldCgKLSAgICAgICAgICAgICAgICAgICAgZXBvY2g9RXBvY2gu
T05FX1JUVCwKLSAgICAgICAgICAgICAgICAgICAgaW5fZmxpZ2h0PVRydWUsCi0gICAgICAgICAg
ICAgICAgICAgIGlzX2Fja19lbGljaXRpbmc9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgaXNf
Y3J5cHRvX3BhY2tldD1UcnVlLAotICAgICAgICAgICAgICAgICAgICBwYWNrZXRfbnVtYmVyPTAs
Ci0gICAgICAgICAgICAgICAgICAgIHBhY2tldF90eXBlPVBBQ0tFVF9UWVBFX09ORV9SVFQsCi0g
ICAgICAgICAgICAgICAgICAgIHNlbnRfYnl0ZXM9MTI4MCwKLSAgICAgICAgICAgICAgICApLAot
ICAgICAgICAgICAgICAgIFF1aWNTZW50UGFja2V0KAotICAgICAgICAgICAgICAgICAgICBlcG9j
aD1FcG9jaC5PTkVfUlRULAotICAgICAgICAgICAgICAgICAgICBpbl9mbGlnaHQ9VHJ1ZSwKLSAg
ICAgICAgICAgICAgICAgICAgaXNfYWNrX2VsaWNpdGluZz1UcnVlLAotICAgICAgICAgICAgICAg
ICAgICBpc19jcnlwdG9fcGFja2V0PVRydWUsCi0gICAgICAgICAgICAgICAgICAgIHBhY2tldF9u
dW1iZXI9MSwKLSAgICAgICAgICAgICAgICAgICAgcGFja2V0X3R5cGU9UEFDS0VUX1RZUEVfT05F
X1JUVCwKLSAgICAgICAgICAgICAgICAgICAgc2VudF9ieXRlcz03MjAsCi0gICAgICAgICAgICAg
ICAgKSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICkKLQotICAgICAgICAjIGNoZWNrIGJ1aWxk
ZXIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLnBhY2tldF9udW1iZXIsIDIpCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9yYW5nZXNldC5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy90ZXN0cy90ZXN0X3Jhbmdlc2V0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA1YjQwOGM4YWM2YzUyMzZkMTM2MzQ4YWQyNGFiZjlmYTZkODU5MzhlLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0
X3Jhbmdlc2V0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjM3ICswLDAgQEAKLWZyb20gdW5pdHRl
c3QgaW1wb3J0IFRlc3RDYXNlCi0KLWZyb20gYWlvcXVpYy5xdWljLnJhbmdlc2V0IGltcG9ydCBS
YW5nZVNldAotCi0KLWNsYXNzIFJhbmdlU2V0VGVzdChUZXN0Q2FzZSk6Ci0gICAgZGVmIHRlc3Rf
YWRkX3NpbmdsZV9kdXBsaWNhdGUoc2VsZik6Ci0gICAgICAgIHJhbmdlc2V0ID0gUmFuZ2VTZXQo
KQotCi0gICAgICAgIHJhbmdlc2V0LmFkZCgwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxp
c3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgMSldKQotCi0gICAgICAgIHJhbmdlc2V0LmFkZCgwKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgMSldKQot
Ci0gICAgZGVmIHRlc3RfYWRkX3NpbmdsZV9vcmRlcmVkKHNlbGYpOgotICAgICAgICByYW5nZXNl
dCA9IFJhbmdlU2V0KCkKLQotICAgICAgICByYW5nZXNldC5hZGQoMCkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDAsIDEpXSkKLQotICAgICAgICByYW5n
ZXNldC5hZGQoMSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3Jh
bmdlKDAsIDIpXSkKLQotICAgICAgICByYW5nZXNldC5hZGQoMikKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDAsIDMpXSkKLQotICAgIGRlZiB0ZXN0X2Fk
ZF9zaW5nbGVfbWVyZ2Uoc2VsZik6Ci0gICAgICAgIHJhbmdlc2V0ID0gUmFuZ2VTZXQoKQotCi0g
ICAgICAgIHJhbmdlc2V0LmFkZCgwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFu
Z2VzZXQpLCBbcmFuZ2UoMCwgMSldKQotCi0gICAgICAgIHJhbmdlc2V0LmFkZCgyKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgMSksIHJhbmdlKDIs
IDMpXSkKLQotICAgICAgICByYW5nZXNldC5hZGQoMSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDAsIDMpXSkKLQotICAgIGRlZiB0ZXN0X2FkZF9zaW5n
bGVfcmV2ZXJzZShzZWxmKToKLSAgICAgICAgcmFuZ2VzZXQgPSBSYW5nZVNldCgpCi0KLSAgICAg
ICAgcmFuZ2VzZXQuYWRkKDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNl
dCksIFtyYW5nZSgyLCAzKV0pCi0KLSAgICAgICAgcmFuZ2VzZXQuYWRkKDEpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgxLCAzKV0pCi0KLSAgICAgICAg
cmFuZ2VzZXQuYWRkKDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCks
IFtyYW5nZSgwLCAzKV0pCi0KLSAgICBkZWYgdGVzdF9hZGRfcmFuZ2Vfb3JkZXJlZChzZWxmKToK
LSAgICAgICAgcmFuZ2VzZXQgPSBSYW5nZVNldCgpCi0KLSAgICAgICAgcmFuZ2VzZXQuYWRkKDAs
IDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAy
KV0pCi0KLSAgICAgICAgcmFuZ2VzZXQuYWRkKDIsIDQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCA0KV0pCi0KLSAgICAgICAgcmFuZ2VzZXQuYWRk
KDQsIDYpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgw
LCA2KV0pCi0KLSAgICBkZWYgdGVzdF9hZGRfcmFuZ2VfbWVyZ2Uoc2VsZik6Ci0gICAgICAgIHJh
bmdlc2V0ID0gUmFuZ2VTZXQoKQotCi0gICAgICAgIHJhbmdlc2V0LmFkZCgwLCAyKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgMildKQotCi0gICAg
ICAgIHJhbmdlc2V0LmFkZCgzLCA1KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFu
Z2VzZXQpLCBbcmFuZ2UoMCwgMiksIHJhbmdlKDMsIDUpXSkKLQotICAgICAgICByYW5nZXNldC5h
ZGQoMiwgMykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3Jhbmdl
KDAsIDUpXSkKLQotICAgIGRlZiB0ZXN0X2FkZF9yYW5nZV9vdmVybGFwKHNlbGYpOgotICAgICAg
ICByYW5nZXNldCA9IFJhbmdlU2V0KCkKLQotICAgICAgICByYW5nZXNldC5hZGQoMCwgMikKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDAsIDIpXSkKLQot
ICAgICAgICByYW5nZXNldC5hZGQoMywgNSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0
KHJhbmdlc2V0KSwgW3JhbmdlKDAsIDIpLCByYW5nZSgzLCA1KV0pCi0KLSAgICAgICAgcmFuZ2Vz
ZXQuYWRkKDEsIDUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFty
YW5nZSgwLCA1KV0pCi0KLSAgICBkZWYgdGVzdF9hZGRfcmFuZ2Vfb3ZlcmxhcF8yKHNlbGYpOgot
ICAgICAgICByYW5nZXNldCA9IFJhbmdlU2V0KCkKLQotICAgICAgICByYW5nZXNldC5hZGQoMiwg
NCkKLSAgICAgICAgcmFuZ2VzZXQuYWRkKDYsIDgpCi0gICAgICAgIHJhbmdlc2V0LmFkZCgxMCwg
MTIpCi0gICAgICAgIHJhbmdlc2V0LmFkZCgxNiwgMTgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoCi0gICAgICAgICAgICBsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDIsIDQpLCByYW5nZSg2LCA4
KSwgcmFuZ2UoMTAsIDEyKSwgcmFuZ2UoMTYsIDE4KV0KLSAgICAgICAgKQotCi0gICAgICAgIHJh
bmdlc2V0LmFkZCgxLCAxNSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0
KSwgW3JhbmdlKDEsIDE1KSwgcmFuZ2UoMTYsIDE4KV0pCi0KLSAgICBkZWYgdGVzdF9hZGRfcmFu
Z2VfcmV2ZXJzZShzZWxmKToKLSAgICAgICAgcmFuZ2VzZXQgPSBSYW5nZVNldCgpCi0KLSAgICAg
ICAgcmFuZ2VzZXQuYWRkKDYsIDgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5n
ZXNldCksIFtyYW5nZSg2LCA4KV0pCi0KLSAgICAgICAgcmFuZ2VzZXQuYWRkKDMsIDUpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgzLCA1KSwgcmFuZ2Uo
NiwgOCldKQotCi0gICAgICAgIHJhbmdlc2V0LmFkZCgwLCAyKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgMiksIHJhbmdlKDMsIDUpLCByYW5nZSg2
LCA4KV0pCi0KLSAgICBkZWYgdGVzdF9hZGRfcmFuZ2VfdW5vcmRlcmVkX2NvbnRpZ3VvdXMoc2Vs
Zik6Ci0gICAgICAgIHJhbmdlc2V0ID0gUmFuZ2VTZXQoKQotCi0gICAgICAgIHJhbmdlc2V0LmFk
ZCgwLCAyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2Uo
MCwgMildKQotCi0gICAgICAgIHJhbmdlc2V0LmFkZCg0LCA2KQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgMiksIHJhbmdlKDQsIDYpXSkKLQotICAg
ICAgICByYW5nZXNldC5hZGQoMiwgNCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJh
bmdlc2V0KSwgW3JhbmdlKDAsIDYpXSkKLQotICAgIGRlZiB0ZXN0X2FkZF9yYW5nZV91bm9yZGVy
ZWRfc3BhcnNlKHNlbGYpOgotICAgICAgICByYW5nZXNldCA9IFJhbmdlU2V0KCkKLQotICAgICAg
ICByYW5nZXNldC5hZGQoMCwgMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdl
c2V0KSwgW3JhbmdlKDAsIDIpXSkKLQotICAgICAgICByYW5nZXNldC5hZGQoNiwgOCkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDAsIDIpLCByYW5nZSg2
LCA4KV0pCi0KLSAgICAgICAgcmFuZ2VzZXQuYWRkKDMsIDUpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgwLCAyKSwgcmFuZ2UoMywgNSksIHJhbmdlKDYs
IDgpXSkKLQotICAgIGRlZiB0ZXN0X3N1YnRyYWN0KHNlbGYpOgotICAgICAgICByYW5nZXNldCA9
IFJhbmdlU2V0KCkKLSAgICAgICAgcmFuZ2VzZXQuYWRkKDAsIDEwKQotICAgICAgICByYW5nZXNl
dC5hZGQoMjAsIDMwKQotCi0gICAgICAgIHJhbmdlc2V0LnN1YnRyYWN0KDAsIDMpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSgzLCAxMCksIHJhbmdlKDIw
LCAzMCldKQotCi0gICAgZGVmIHRlc3Rfc3VidHJhY3Rfbm9fY2hhbmdlKHNlbGYpOgotICAgICAg
ICByYW5nZXNldCA9IFJhbmdlU2V0KCkKLSAgICAgICAgcmFuZ2VzZXQuYWRkKDUsIDEwKQotICAg
ICAgICByYW5nZXNldC5hZGQoMTUsIDIwKQotICAgICAgICByYW5nZXNldC5hZGQoMjUsIDMwKQot
Ci0gICAgICAgIHJhbmdlc2V0LnN1YnRyYWN0KDAsIDUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwobGlzdChyYW5nZXNldCksIFtyYW5nZSg1LCAxMCksIHJhbmdlKDE1LCAyMCksIHJhbmdlKDI1
LCAzMCldKQotCi0gICAgICAgIHJhbmdlc2V0LnN1YnRyYWN0KDEwLCAxNSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3JhbmdlKDUsIDEwKSwgcmFuZ2UoMTUsIDIw
KSwgcmFuZ2UoMjUsIDMwKV0pCi0KLSAgICBkZWYgdGVzdF9zdWJ0cmFjdF9vdmVybGFwKHNlbGYp
OgotICAgICAgICByYW5nZXNldCA9IFJhbmdlU2V0KCkKLSAgICAgICAgcmFuZ2VzZXQuYWRkKDEs
IDQpCi0gICAgICAgIHJhbmdlc2V0LmFkZCg2LCA4KQotICAgICAgICByYW5nZXNldC5hZGQoMTAs
IDIwKQotICAgICAgICByYW5nZXNldC5hZGQoMzAsIDQwKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKAotICAgICAgICAgICAgbGlzdChyYW5nZXNldCksIFtyYW5nZSgxLCA0KSwgcmFuZ2UoNiwg
OCksIHJhbmdlKDEwLCAyMCksIHJhbmdlKDMwLCA0MCldCi0gICAgICAgICkKLQotICAgICAgICBy
YW5nZXNldC5zdWJ0cmFjdCgwLCAyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAg
ICAgICAgbGlzdChyYW5nZXNldCksIFtyYW5nZSgyLCA0KSwgcmFuZ2UoNiwgOCksIHJhbmdlKDEw
LCAyMCksIHJhbmdlKDMwLCA0MCldCi0gICAgICAgICkKLQotICAgICAgICByYW5nZXNldC5zdWJ0
cmFjdCgzLCAxMSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJhbmdlc2V0KSwgW3Jh
bmdlKDIsIDMpLCByYW5nZSgxMSwgMjApLCByYW5nZSgzMCwgNDApXSkKLQotICAgIGRlZiB0ZXN0
X3N1YnRyYWN0X3NwbGl0KHNlbGYpOgotICAgICAgICByYW5nZXNldCA9IFJhbmdlU2V0KCkKLSAg
ICAgICAgcmFuZ2VzZXQuYWRkKDAsIDEwKQotICAgICAgICByYW5nZXNldC5zdWJ0cmFjdCgyLCA1
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmFuZ2VzZXQpLCBbcmFuZ2UoMCwgMiks
IHJhbmdlKDUsIDEwKV0pCi0KLSAgICBkZWYgdGVzdF9ib29sKHNlbGYpOgotICAgICAgICB3aXRo
IHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IpOgotICAgICAgICAgICAgYm9v
bChSYW5nZVNldCgpKQotCi0gICAgZGVmIHRlc3RfY29udGFpbnMoc2VsZik6Ci0gICAgICAgIHJh
bmdlc2V0ID0gUmFuZ2VTZXQoKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKDAgaW4gcmFuZ2Vz
ZXQpCi0KLSAgICAgICAgcmFuZ2VzZXQgPSBSYW5nZVNldChbcmFuZ2UoMCwgMSldKQotICAgICAg
ICBzZWxmLmFzc2VydFRydWUoMCBpbiByYW5nZXNldCkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxz
ZSgxIGluIHJhbmdlc2V0KQotCi0gICAgICAgIHJhbmdlc2V0ID0gUmFuZ2VTZXQoW3JhbmdlKDAs
IDEpLCByYW5nZSgzLCA2KV0pCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgwIGluIHJhbmdlc2V0
KQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKDEgaW4gcmFuZ2VzZXQpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RmFsc2UoMiBpbiByYW5nZXNldCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKDMgaW4g
cmFuZ2VzZXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSg0IGluIHJhbmdlc2V0KQotICAgICAg
ICBzZWxmLmFzc2VydFRydWUoNSBpbiByYW5nZXNldCkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxz
ZSg2IGluIHJhbmdlc2V0KQotCi0gICAgZGVmIHRlc3RfZXEoc2VsZik6Ci0gICAgICAgIHIwID0g
UmFuZ2VTZXQoW3JhbmdlKDAsIDEpXSkKLSAgICAgICAgcjEgPSBSYW5nZVNldChbcmFuZ2UoMSwg
MiksIHJhbmdlKDMsIDQpXSkKLSAgICAgICAgcjIgPSBSYW5nZVNldChbcmFuZ2UoMywgNCksIHJh
bmdlKDEsIDIpXSkKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUocjAgPT0gcjApCi0gICAgICAg
IHNlbGYuYXNzZXJ0RmFsc2UocjAgPT0gcjEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocjAg
PT0gMCkKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUocjEgPT0gcjEpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RmFsc2UocjEgPT0gcjApCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyMSA9PSByMikK
LSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyMSA9PSAwKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShyMiA9PSByMikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIyID09IHIxKQotICAgICAg
ICBzZWxmLmFzc2VydEZhbHNlKHIyID09IHIwKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHIy
ID09IDApCi0KLSAgICBkZWYgdGVzdF9sZW4oc2VsZik6Ci0gICAgICAgIHJhbmdlc2V0ID0gUmFu
Z2VTZXQoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyYW5nZXNldCksIDApCi0KLSAg
ICAgICAgcmFuZ2VzZXQgPSBSYW5nZVNldChbcmFuZ2UoMCwgMSldKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGxlbihyYW5nZXNldCksIDEpCi0KLSAgICBkZWYgdGVzdF9wb3Aoc2VsZik6Ci0g
ICAgICAgIHJhbmdlc2V0ID0gUmFuZ2VTZXQoW3JhbmdlKDEsIDIpLCByYW5nZSgzLCA0KV0pCi0g
ICAgICAgIHIgPSByYW5nZXNldC5zaGlmdCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwociwg
cmFuZ2UoMSwgMikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyYW5nZXNldCksIFty
YW5nZSgzLCA0KV0pCi0KLSAgICBkZWYgdGVzdF9yZXByKHNlbGYpOgotICAgICAgICByYW5nZXNl
dCA9IFJhbmdlU2V0KFtyYW5nZSgxLCAyKSwgcmFuZ2UoMywgNCldKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHJlcHIocmFuZ2VzZXQpLCAiUmFuZ2VTZXQoW3JhbmdlKDEsIDIpLCByYW5nZSgz
LCA0KV0pIikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X3JlY292ZXJ5LnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfcmVjb3ZlcnkucHkKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGMzMTNmOGZjOGE0YzQwZmI2NDMxMTQ0YjhjMGZiYmRiN2E4MGJhNTEuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L3Rlc3RzL3Rlc3RfcmVjb3ZlcnkucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyMjcgKzAsMCBAQAot
aW1wb3J0IG1hdGgKLWZyb20gdW5pdHRlc3QgaW1wb3J0IFRlc3RDYXNlCi0KLWZyb20gYWlvcXVp
YyBpbXBvcnQgdGxzCi1mcm9tIGFpb3F1aWMucXVpYy5wYWNrZXQgaW1wb3J0IFBBQ0tFVF9UWVBF
X0lOSVRJQUwsIFBBQ0tFVF9UWVBFX09ORV9SVFQKLWZyb20gYWlvcXVpYy5xdWljLnBhY2tldF9i
dWlsZGVyIGltcG9ydCBRdWljU2VudFBhY2tldAotZnJvbSBhaW9xdWljLnF1aWMucmFuZ2VzZXQg
aW1wb3J0IFJhbmdlU2V0Ci1mcm9tIGFpb3F1aWMucXVpYy5yZWNvdmVyeSBpbXBvcnQgKAotICAg
IFF1aWNQYWNrZXRQYWNlciwKLSAgICBRdWljUGFja2V0UmVjb3ZlcnksCi0gICAgUXVpY1BhY2tl
dFNwYWNlLAotICAgIFF1aWNSdHRNb25pdG9yLAotKQotCi0KLWRlZiBzZW5kX3Byb2JlKCk6Ci0g
ICAgcGFzcwotCi0KLWNsYXNzIFF1aWNQYWNrZXRQYWNlclRlc3QoVGVzdENhc2UpOgotICAgIGRl
ZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5wYWNlciA9IFF1aWNQYWNrZXRQYWNlcigpCi0K
LSAgICBkZWYgdGVzdF9ub19tZWFzdXJlbWVudChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRJ
c05vbmUoc2VsZi5wYWNlci5uZXh0X3NlbmRfdGltZShub3c9MC4wKSkKLSAgICAgICAgc2VsZi5w
YWNlci51cGRhdGVfYWZ0ZXJfc2VuZChub3c9MC4wKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNO
b25lKHNlbGYucGFjZXIubmV4dF9zZW5kX3RpbWUobm93PTAuMCkpCi0gICAgICAgIHNlbGYucGFj
ZXIudXBkYXRlX2FmdGVyX3NlbmQobm93PTAuMCkKLQotICAgIGRlZiB0ZXN0X3dpdGhfbWVhc3Vy
ZW1lbnQoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYucGFjZXIubmV4dF9z
ZW5kX3RpbWUobm93PTAuMCkpCi0gICAgICAgIHNlbGYucGFjZXIudXBkYXRlX2FmdGVyX3NlbmQo
bm93PTAuMCkKLQotICAgICAgICBzZWxmLnBhY2VyLnVwZGF0ZV9yYXRlKGNvbmdlc3Rpb25fd2lu
ZG93PTEyODAwMDAsIHNtb290aGVkX3J0dD0wLjA1KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHNlbGYucGFjZXIuYnVja2V0X21heCwgMC4wMDA4KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHNlbGYucGFjZXIuYnVja2V0X3RpbWUsIDAuMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
ZWxmLnBhY2VyLnBhY2tldF90aW1lLCAwLjAwMDA1KQotCi0gICAgICAgICMgMTYgcGFja2V0cwot
ICAgICAgICBmb3IgaSBpbiByYW5nZSgxNik6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydElzTm9u
ZShzZWxmLnBhY2VyLm5leHRfc2VuZF90aW1lKG5vdz0xLjApKQotICAgICAgICAgICAgc2VsZi5w
YWNlci51cGRhdGVfYWZ0ZXJfc2VuZChub3c9MS4wKQotICAgICAgICBzZWxmLmFzc2VydEFsbW9z
dEVxdWFsKHNlbGYucGFjZXIubmV4dF9zZW5kX3RpbWUobm93PTEuMCksIDEuMDAwMDUpCi0KLSAg
ICAgICAgIyAyIHBhY2tldHMKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMik6Ci0gICAgICAgICAg
ICBzZWxmLmFzc2VydElzTm9uZShzZWxmLnBhY2VyLm5leHRfc2VuZF90aW1lKG5vdz0xLjAwMDA1
KSkKLSAgICAgICAgICAgIHNlbGYucGFjZXIudXBkYXRlX2FmdGVyX3NlbmQobm93PTEuMDAwMDUp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoc2VsZi5wYWNlci5uZXh0X3NlbmRfdGlt
ZShub3c9MS4wMDAwNSksIDEuMDAwMSkKLQotICAgICAgICAjIDEgcGFja2V0Ci0gICAgICAgIHNl
bGYuYXNzZXJ0SXNOb25lKHNlbGYucGFjZXIubmV4dF9zZW5kX3RpbWUobm93PTEuMDAwMSkpCi0g
ICAgICAgIHNlbGYucGFjZXIudXBkYXRlX2FmdGVyX3NlbmQobm93PTEuMDAwMSkKLSAgICAgICAg
c2VsZi5hc3NlcnRBbG1vc3RFcXVhbChzZWxmLnBhY2VyLm5leHRfc2VuZF90aW1lKG5vdz0xLjAw
MDEpLCAxLjAwMDE1KQotCi0gICAgICAgICMgMiBwYWNrZXRzCi0gICAgICAgIGZvciBpIGluIHJh
bmdlKDIpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5wYWNlci5uZXh0X3Nl
bmRfdGltZShub3c9MS4wMDAxNSkpCi0gICAgICAgICAgICBzZWxmLnBhY2VyLnVwZGF0ZV9hZnRl
cl9zZW5kKG5vdz0xLjAwMDE1KQotICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKHNlbGYu
cGFjZXIubmV4dF9zZW5kX3RpbWUobm93PTEuMDAwMTUpLCAxLjAwMDIpCi0KLQotY2xhc3MgUXVp
Y1BhY2tldFJlY292ZXJ5VGVzdChUZXN0Q2FzZSk6Ci0gICAgZGVmIHNldFVwKHNlbGYpOgotICAg
ICAgICBzZWxmLklOSVRJQUxfU1BBQ0UgPSBRdWljUGFja2V0U3BhY2UoKQotICAgICAgICBzZWxm
LkhBTkRTSEFLRV9TUEFDRSA9IFF1aWNQYWNrZXRTcGFjZSgpCi0gICAgICAgIHNlbGYuT05FX1JU
VF9TUEFDRSA9IFF1aWNQYWNrZXRTcGFjZSgpCi0KLSAgICAgICAgc2VsZi5yZWNvdmVyeSA9IFF1
aWNQYWNrZXRSZWNvdmVyeSgKLSAgICAgICAgICAgIGlzX2NsaWVudF93aXRob3V0XzFydHQ9RmFs
c2UsIHNlbmRfcHJvYmU9c2VuZF9wcm9iZQotICAgICAgICApCi0gICAgICAgIHNlbGYucmVjb3Zl
cnkuc3BhY2VzID0gWwotICAgICAgICAgICAgc2VsZi5JTklUSUFMX1NQQUNFLAotICAgICAgICAg
ICAgc2VsZi5IQU5EU0hBS0VfU1BBQ0UsCi0gICAgICAgICAgICBzZWxmLk9ORV9SVFRfU1BBQ0Us
Ci0gICAgICAgIF0KLQotICAgIGRlZiB0ZXN0X2Rpc2NhcmRfc3BhY2Uoc2VsZik6Ci0gICAgICAg
IHNlbGYucmVjb3ZlcnkuZGlzY2FyZF9zcGFjZShzZWxmLklOSVRJQUxfU1BBQ0UpCi0KLSAgICBk
ZWYgdGVzdF9vbl9hY2tfcmVjZWl2ZWRfYWNrX2VsaWNpdGluZyhzZWxmKToKLSAgICAgICAgcGFj
a2V0ID0gUXVpY1NlbnRQYWNrZXQoCi0gICAgICAgICAgICBlcG9jaD10bHMuRXBvY2guT05FX1JU
VCwKLSAgICAgICAgICAgIGluX2ZsaWdodD1UcnVlLAotICAgICAgICAgICAgaXNfYWNrX2VsaWNp
dGluZz1UcnVlLAotICAgICAgICAgICAgaXNfY3J5cHRvX3BhY2tldD1GYWxzZSwKLSAgICAgICAg
ICAgIHBhY2tldF9udW1iZXI9MCwKLSAgICAgICAgICAgIHBhY2tldF90eXBlPVBBQ0tFVF9UWVBF
X09ORV9SVFQsCi0gICAgICAgICAgICBzZW50X2J5dGVzPTEyODAsCi0gICAgICAgICAgICBzZW50
X3RpbWU9MC4wLAotICAgICAgICApCi0gICAgICAgIHNwYWNlID0gc2VsZi5PTkVfUlRUX1NQQUNF
Ci0KLSAgICAgICAgIyDCoHBhY2tldCBzZW50Ci0gICAgICAgIHNlbGYucmVjb3Zlcnkub25fcGFj
a2V0X3NlbnQocGFja2V0LCBzcGFjZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnJl
Y292ZXJ5LmJ5dGVzX2luX2ZsaWdodCwgMTI4MCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
cGFjZS5hY2tfZWxpY2l0aW5nX2luX2ZsaWdodCwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChsZW4oc3BhY2Uuc2VudF9wYWNrZXRzKSwgMSkKLQotICAgICAgICAjIHBhY2tldCBhY2snZAot
ICAgICAgICBzZWxmLnJlY292ZXJ5Lm9uX2Fja19yZWNlaXZlZCgKLSAgICAgICAgICAgIHNwYWNl
LCBhY2tfcmFuZ2VzZXQ9UmFuZ2VTZXQoW3JhbmdlKDAsIDEpXSksIGFja19kZWxheT0wLjAsIG5v
dz0xMC4wCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnJlY292ZXJ5
LmJ5dGVzX2luX2ZsaWdodCwgMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcGFjZS5hY2tf
ZWxpY2l0aW5nX2luX2ZsaWdodCwgMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc3Bh
Y2Uuc2VudF9wYWNrZXRzKSwgMCkKLQotICAgICAgICAjIGNoZWNrIFJUVAotICAgICAgICBzZWxm
LmFzc2VydFRydWUoc2VsZi5yZWNvdmVyeS5fcnR0X2luaXRpYWxpemVkKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHNlbGYucmVjb3ZlcnkuX3J0dF9sYXRlc3QsIDEwLjApCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc2VsZi5yZWNvdmVyeS5fcnR0X21pbiwgMTAuMCkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzZWxmLnJlY292ZXJ5Ll9ydHRfc21vb3RoZWQsIDEwLjApCi0KLSAgICBk
ZWYgdGVzdF9vbl9hY2tfcmVjZWl2ZWRfbm9uX2Fja19lbGljaXRpbmcoc2VsZik6Ci0gICAgICAg
IHBhY2tldCA9IFF1aWNTZW50UGFja2V0KAotICAgICAgICAgICAgZXBvY2g9dGxzLkVwb2NoLk9O
RV9SVFQsCi0gICAgICAgICAgICBpbl9mbGlnaHQ9VHJ1ZSwKLSAgICAgICAgICAgIGlzX2Fja19l
bGljaXRpbmc9RmFsc2UsCi0gICAgICAgICAgICBpc19jcnlwdG9fcGFja2V0PUZhbHNlLAotICAg
ICAgICAgICAgcGFja2V0X251bWJlcj0wLAotICAgICAgICAgICAgcGFja2V0X3R5cGU9UEFDS0VU
X1RZUEVfT05FX1JUVCwKLSAgICAgICAgICAgIHNlbnRfYnl0ZXM9MTI4MCwKLSAgICAgICAgICAg
IHNlbnRfdGltZT0xMjMuNDUsCi0gICAgICAgICkKLSAgICAgICAgc3BhY2UgPSBzZWxmLk9ORV9S
VFRfU1BBQ0UKLQotICAgICAgICAjIMKgcGFja2V0IHNlbnQKLSAgICAgICAgc2VsZi5yZWNvdmVy
eS5vbl9wYWNrZXRfc2VudChwYWNrZXQsIHNwYWNlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHNlbGYucmVjb3ZlcnkuYnl0ZXNfaW5fZmxpZ2h0LCAxMjgwKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHNwYWNlLmFja19lbGljaXRpbmdfaW5fZmxpZ2h0LCAwKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGxlbihzcGFjZS5zZW50X3BhY2tldHMpLCAxKQotCi0gICAgICAgICMgcGFja2V0
IGFjaydkCi0gICAgICAgIHNlbGYucmVjb3Zlcnkub25fYWNrX3JlY2VpdmVkKAotICAgICAgICAg
ICAgc3BhY2UsIGFja19yYW5nZXNldD1SYW5nZVNldChbcmFuZ2UoMCwgMSldKSwgYWNrX2RlbGF5
PTAuMCwgbm93PTEwLjAKLSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYu
cmVjb3ZlcnkuYnl0ZXNfaW5fZmxpZ2h0LCAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNw
YWNlLmFja19lbGljaXRpbmdfaW5fZmxpZ2h0LCAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGxlbihzcGFjZS5zZW50X3BhY2tldHMpLCAwKQotCi0gICAgICAgICMgY2hlY2sgUlRUCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5yZWNvdmVyeS5fcnR0X2luaXRpYWxpemVkKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYucmVjb3ZlcnkuX3J0dF9sYXRlc3QsIDAuMCkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnJlY292ZXJ5Ll9ydHRfbWluLCBtYXRoLmluZikK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnJlY292ZXJ5Ll9ydHRfc21vb3RoZWQsIDAu
MCkKLQotICAgIGRlZiB0ZXN0X29uX3BhY2tldF9sb3N0X2NyeXB0byhzZWxmKToKLSAgICAgICAg
cGFja2V0ID0gUXVpY1NlbnRQYWNrZXQoCi0gICAgICAgICAgICBlcG9jaD10bHMuRXBvY2guSU5J
VElBTCwKLSAgICAgICAgICAgIGluX2ZsaWdodD1UcnVlLAotICAgICAgICAgICAgaXNfYWNrX2Vs
aWNpdGluZz1UcnVlLAotICAgICAgICAgICAgaXNfY3J5cHRvX3BhY2tldD1UcnVlLAotICAgICAg
ICAgICAgcGFja2V0X251bWJlcj0wLAotICAgICAgICAgICAgcGFja2V0X3R5cGU9UEFDS0VUX1RZ
UEVfSU5JVElBTCwKLSAgICAgICAgICAgIHNlbnRfYnl0ZXM9MTI4MCwKLSAgICAgICAgICAgIHNl
bnRfdGltZT0wLjAsCi0gICAgICAgICkKLSAgICAgICAgc3BhY2UgPSBzZWxmLklOSVRJQUxfU1BB
Q0UKLQotICAgICAgICBzZWxmLnJlY292ZXJ5Lm9uX3BhY2tldF9zZW50KHBhY2tldCwgc3BhY2Up
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5yZWNvdmVyeS5ieXRlc19pbl9mbGlnaHQs
IDEyODApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BhY2UuYWNrX2VsaWNpdGluZ19pbl9m
bGlnaHQsIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNwYWNlLnNlbnRfcGFja2V0
cyksIDEpCi0KLSAgICAgICAgc2VsZi5yZWNvdmVyeS5fZGV0ZWN0X2xvc3Moc3BhY2UsIG5vdz0x
LjApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5yZWNvdmVyeS5ieXRlc19pbl9mbGln
aHQsIDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BhY2UuYWNrX2VsaWNpdGluZ19pbl9m
bGlnaHQsIDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNwYWNlLnNlbnRfcGFja2V0
cyksIDApCi0KLQotY2xhc3MgUXVpY1J0dE1vbml0b3JUZXN0KFRlc3RDYXNlKToKLSAgICBkZWYg
dGVzdF9tb25pdG9yKHNlbGYpOgotICAgICAgICBtb25pdG9yID0gUXVpY1J0dE1vbml0b3IoKQot
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9uaXRvci5pc19ydHRfaW5jcmVhc2luZyhydHQ9
MTAsIG5vdz0xMDAwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb25pdG9yLl9zYW1wbGVz
LCBbMTAsIDAuMCwgMC4wLCAwLjAsIDAuMF0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9u
aXRvci5fcmVhZHkpCi0KLSAgICAgICAgIyBub3QgdGFrZW4gaW50byBhY2NvdW50Ci0gICAgICAg
IHNlbGYuYXNzZXJ0RmFsc2UobW9uaXRvci5pc19ydHRfaW5jcmVhc2luZyhydHQ9MTEsIG5vdz0x
MDAwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb25pdG9yLl9zYW1wbGVzLCBbMTAsIDAu
MCwgMC4wLCAwLjAsIDAuMF0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9uaXRvci5fcmVh
ZHkpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb25pdG9yLmlzX3J0dF9pbmNyZWFzaW5n
KHJ0dD0xMSwgbm93PTEwMDEpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vbml0b3IuX3Nh
bXBsZXMsIFsxMCwgMTEsIDAuMCwgMC4wLCAwLjBdKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNl
KG1vbml0b3IuX3JlYWR5KQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9uaXRvci5pc19y
dHRfaW5jcmVhc2luZyhydHQ9MTIsIG5vdz0xMDAyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChtb25pdG9yLl9zYW1wbGVzLCBbMTAsIDExLCAxMiwgMC4wLCAwLjBdKQotICAgICAgICBzZWxm
LmFzc2VydEZhbHNlKG1vbml0b3IuX3JlYWR5KQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uo
bW9uaXRvci5pc19ydHRfaW5jcmVhc2luZyhydHQ9MTMsIG5vdz0xMDAzKSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChtb25pdG9yLl9zYW1wbGVzLCBbMTAsIDExLCAxMiwgMTMsIDAuMF0pCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9uaXRvci5fcmVhZHkpCi0KLSAgICAgICAgIyB3ZSBu
b3cgaGF2ZSBlbm91Z2ggc2FtcGxlcwotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vbml0b3Iu
aXNfcnR0X2luY3JlYXNpbmcocnR0PTE0LCBub3c9MTAwNCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwobW9uaXRvci5fc2FtcGxlcywgWzEwLCAxMSwgMTIsIDEzLCAxNF0pCi0gICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShtb25pdG9yLl9yZWFkeSkKLQotICAgICAgICBzZWxmLmFzc2VydEZhbHNl
KG1vbml0b3IuaXNfcnR0X2luY3JlYXNpbmcocnR0PTIwLCBub3c9MTAwNSkpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwobW9uaXRvci5faW5jcmVhc2VzLCAwKQotCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RmFsc2UobW9uaXRvci5pc19ydHRfaW5jcmVhc2luZyhydHQ9MzAsIG5vdz0xMDA2KSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb25pdG9yLl9pbmNyZWFzZXMsIDApCi0KLSAgICAgICAg
c2VsZi5hc3NlcnRGYWxzZShtb25pdG9yLmlzX3J0dF9pbmNyZWFzaW5nKHJ0dD00MCwgbm93PTEw
MDcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vbml0b3IuX2luY3JlYXNlcywgMCkKLQot
ICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vbml0b3IuaXNfcnR0X2luY3JlYXNpbmcocnR0PTUw
LCBub3c9MTAwOCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9uaXRvci5faW5jcmVhc2Vz
LCAwKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9uaXRvci5pc19ydHRfaW5jcmVhc2lu
ZyhydHQ9NjAsIG5vdz0xMDA5KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb25pdG9yLl9p
bmNyZWFzZXMsIDEpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb25pdG9yLmlzX3J0dF9p
bmNyZWFzaW5nKHJ0dD03MCwgbm93PTEwMTApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1v
bml0b3IuX2luY3JlYXNlcywgMikKLQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vbml0b3Iu
aXNfcnR0X2luY3JlYXNpbmcocnR0PTgwLCBub3c9MTAxMSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwobW9uaXRvci5faW5jcmVhc2VzLCAzKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uo
bW9uaXRvci5pc19ydHRfaW5jcmVhc2luZyhydHQ9OTAsIG5vdz0xMDEyKSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChtb25pdG9yLl9pbmNyZWFzZXMsIDQpCi0KLSAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKG1vbml0b3IuaXNfcnR0X2luY3JlYXNpbmcocnR0PTEwMCwgbm93PTEwMTMpKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKG1vbml0b3IuX2luY3JlYXNlcywgNSkKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X3JldHJ5LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rl
c3RfcmV0cnkucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3NmYwMjNiZjkzZGE0
YzY5ZWI5YWFkM2UxOTY4YmZhZmYzN2EzNGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfcmV0cnkucHkKKysrIC9k
ZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1mcm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2FzZQot
Ci1mcm9tIGFpb3F1aWMucXVpYy5yZXRyeSBpbXBvcnQgUXVpY1JldHJ5VG9rZW5IYW5kbGVyCi0K
LQotY2xhc3MgUXVpY1JldHJ5VG9rZW5IYW5kbGVyVGVzdChUZXN0Q2FzZSk6Ci0gICAgZGVmIHRl
c3RfcmV0cnlfdG9rZW4oc2VsZik6Ci0gICAgICAgIGFkZHIgPSAoIjEyNy4wLjAuMSIsIDEyMzQp
Ci0gICAgICAgIGNpZCA9IGIiXHgwOFx4MDdceDA2XDA1XHgwNFx4MDNceDAyXHgwMSIKLQotICAg
ICAgICBoYW5kbGVyID0gUXVpY1JldHJ5VG9rZW5IYW5kbGVyKCkKLQotICAgICAgICAjIGNyZWF0
ZSB0b2tlbgotICAgICAgICB0b2tlbiA9IGhhbmRsZXIuY3JlYXRlX3Rva2VuKGFkZHIsIGNpZCkK
LSAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUodG9rZW4pCi0KLSAgICAgICAgIyB2YWxpZGF0
ZSB0b2tlbiAtIG9rCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFuZGxlci52YWxpZGF0ZV90
b2tlbihhZGRyLCB0b2tlbiksIGNpZCkKLQotICAgICAgICAjIHZhbGlkYXRlIHRva2VuIC0gZW1w
dHkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBjbToKLSAg
ICAgICAgICAgIGhhbmRsZXIudmFsaWRhdGVfdG9rZW4oYWRkciwgYiIiKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAotICAgICAgICAgICAgc3RyKGNtLmV4Y2VwdGlvbiksICJDaXBoZXJ0ZXh0
IGxlbmd0aCBtdXN0IGJlIGVxdWFsIHRvIGtleSBzaXplLiIKLSAgICAgICAgKQotCi0gICAgICAg
ICMgdmFsaWRhdGUgdG9rZW4gLSB3cm9uZyBhZGRyZXNzCi0gICAgICAgIHdpdGggc2VsZi5hc3Nl
cnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgY206Ci0gICAgICAgICAgICBoYW5kbGVyLnZhbGlkYXRl
X3Rva2VuKCgiMS4yLjMuNCIsIDEyMzQ1KSwgdG9rZW4pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoc3RyKGNtLmV4Y2VwdGlvbiksICJSZW1vdGUgYWRkcmVzcyBkb2VzIG5vdCBtYXRjaC4iKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3Rfc3RyZWFtLnB5IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9x
dWljL3Rlc3RzL3Rlc3Rfc3RyZWFtLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAz
NTM3YWUyZWQxMmI2ZjZjMDQyZDA5OTA0ZWNmYjRmMGMyZGY1N2VmLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X3N0
cmVhbS5weQorKysgL2Rldi9udWxsCkBAIC0xLDQ0NiArMCwwIEBACi1mcm9tIHVuaXR0ZXN0IGlt
cG9ydCBUZXN0Q2FzZQotCi1mcm9tIGFpb3F1aWMucXVpYy5ldmVudHMgaW1wb3J0IFN0cmVhbURh
dGFSZWNlaXZlZAotZnJvbSBhaW9xdWljLnF1aWMucGFja2V0IGltcG9ydCBRdWljU3RyZWFtRnJh
bWUKLWZyb20gYWlvcXVpYy5xdWljLnBhY2tldF9idWlsZGVyIGltcG9ydCBRdWljRGVsaXZlcnlT
dGF0ZQotZnJvbSBhaW9xdWljLnF1aWMuc3RyZWFtIGltcG9ydCBRdWljU3RyZWFtCi0KLQotY2xh
c3MgUXVpY1N0cmVhbVRlc3QoVGVzdENhc2UpOgotICAgIGRlZiB0ZXN0X3JlY3ZfZW1wdHkoc2Vs
Zik6Ci0gICAgICAgIHN0cmVhbSA9IFF1aWNTdHJlYW0oc3RyZWFtX2lkPTApCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoYnl0ZXMoc3RyZWFtLl9yZWN2X2J1ZmZlciksIGIiIikKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fcmVjdl9yYW5nZXMpLCBbXSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChzdHJlYW0uX3JlY3ZfYnVmZmVyX3N0YXJ0LCAwKQotCi0gICAgICAg
ICMgZW1wdHkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0uYWRkX2ZyYW1lKFF1aWNT
dHJlYW1GcmFtZShvZmZzZXQ9MCwgZGF0YT1iIiIpKSwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChieXRlcyhzdHJlYW0uX3JlY3ZfYnVmZmVyKSwgYiIiKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9yZWN2X3JhbmdlcyksIFtdKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHN0cmVhbS5fcmVjdl9idWZmZXJfc3RhcnQsIDApCi0KLSAgICBkZWYgdGVzdF9y
ZWN2X29yZGVyZWQoc2VsZik6Ci0gICAgICAgIHN0cmVhbSA9IFF1aWNTdHJlYW0oc3RyZWFtX2lk
PTApCi0KLSAgICAgICAgIyBhZGQgZGF0YSBhdCBzdGFydAotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKAotICAgICAgICAgICAgc3RyZWFtLmFkZF9mcmFtZShRdWljU3RyZWFtRnJhbWUob2Zmc2V0
PTAsIGRhdGE9YiIwMTIzNDU2NyIpKSwKLSAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZChk
YXRhPWIiMDEyMzQ1NjciLCBlbmRfc3RyZWFtPUZhbHNlLCBzdHJlYW1faWQ9MCksCi0gICAgICAg
ICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcyhzdHJlYW0uX3JlY3ZfYnVmZmVyKSwg
YiIiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9yZWN2X3Jhbmdlcyks
IFtdKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5fcmVjdl9idWZmZXJfc3RhcnQs
IDgpCi0KLSAgICAgICAgIyBhZGQgbW9yZSBkYXRhCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Ci0gICAgICAgICAgICBzdHJlYW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShvZmZzZXQ9OCwg
ZGF0YT1iIjg5MDEyMzQ1IikpLAotICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKGRhdGE9
YiI4OTAxMjM0NSIsIGVuZF9zdHJlYW09RmFsc2UsIHN0cmVhbV9pZD0wKSwKLSAgICAgICAgKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKHN0cmVhbS5fcmVjdl9idWZmZXIpLCBiIiIp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3JlY3ZfcmFuZ2VzKSwgW10p
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLl9yZWN2X2J1ZmZlcl9zdGFydCwgMTYp
Ci0KLSAgICAgICAgIyBhZGQgZGF0YSBhbmQgZmluCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Ci0gICAgICAgICAgICBzdHJlYW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShvZmZzZXQ9MTYs
IGRhdGE9YiI2Nzg5MDEyMyIsIGZpbj1UcnVlKSksCi0gICAgICAgICAgICBTdHJlYW1EYXRhUmVj
ZWl2ZWQoZGF0YT1iIjY3ODkwMTIzIiwgZW5kX3N0cmVhbT1UcnVlLCBzdHJlYW1faWQ9MCksCi0g
ICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcyhzdHJlYW0uX3JlY3ZfYnVm
ZmVyKSwgYiIiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9yZWN2X3Jh
bmdlcyksIFtdKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5fcmVjdl9idWZmZXJf
c3RhcnQsIDI0KQotCi0gICAgZGVmIHRlc3RfcmVjdl91bm9yZGVyZWQoc2VsZik6Ci0gICAgICAg
IHN0cmVhbSA9IFF1aWNTdHJlYW0oc3RyZWFtX2lkPTApCi0KLSAgICAgICAgIyBhZGQgZGF0YSBh
dCBvZmZzZXQgOAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgc3RyZWFt
LmFkZF9mcmFtZShRdWljU3RyZWFtRnJhbWUob2Zmc2V0PTgsIGRhdGE9YiI4OTAxMjM0NSIpKSwg
Tm9uZQotICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBi
eXRlcyhzdHJlYW0uX3JlY3ZfYnVmZmVyKSwgYiJceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw
XHgwMDg5MDEyMzQ1IgotICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChz
dHJlYW0uX3JlY3ZfcmFuZ2VzKSwgW3JhbmdlKDgsIDE2KV0pCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc3RyZWFtLl9yZWN2X2J1ZmZlcl9zdGFydCwgMCkKLQotICAgICAgICAjIGFkZCBkYXRh
IGF0IG9mZnNldCAwCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBzdHJl
YW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShvZmZzZXQ9MCwgZGF0YT1iIjAxMjM0NTY3Iikp
LAotICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKGRhdGE9YiIwMTIzNDU2Nzg5MDEyMzQ1
IiwgZW5kX3N0cmVhbT1GYWxzZSwgc3RyZWFtX2lkPTApLAotICAgICAgICApCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoYnl0ZXMoc3RyZWFtLl9yZWN2X2J1ZmZlciksIGIiIikKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fcmVjdl9yYW5nZXMpLCBbXSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChzdHJlYW0uX3JlY3ZfYnVmZmVyX3N0YXJ0LCAxNikKLQotICAgIGRl
ZiB0ZXN0X3JlY3Zfb2Zmc2V0X29ubHkoc2VsZik6Ci0gICAgICAgIHN0cmVhbSA9IFF1aWNTdHJl
YW0oc3RyZWFtX2lkPTApCi0KLSAgICAgICAgIyBhZGQgZGF0YSBhdCBvZmZzZXQgMAotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5hZGRfZnJhbWUoUXVpY1N0cmVhbUZyYW1lKG9mZnNl
dD0wLCBkYXRhPWIiIikpLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKHN0
cmVhbS5fcmVjdl9idWZmZXIpLCBiIiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChz
dHJlYW0uX3JlY3ZfcmFuZ2VzKSwgW10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFt
Ll9yZWN2X2J1ZmZlcl9zdGFydCwgMCkKLQotICAgICAgICAjIGFkZCBkYXRhIGF0IG9mZnNldCA4
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLmFkZF9mcmFtZShRdWljU3RyZWFtRnJh
bWUob2Zmc2V0PTgsIGRhdGE9YiIiKSksIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Ci0gICAgICAgICAgICBieXRlcyhzdHJlYW0uX3JlY3ZfYnVmZmVyKSwgYiJceDAwXHgwMFx4MDBc
eDAwXHgwMFx4MDBceDAwXHgwMCIKLSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGxpc3Qoc3RyZWFtLl9yZWN2X3JhbmdlcyksIFtdKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHN0cmVhbS5fcmVjdl9idWZmZXJfc3RhcnQsIDApCi0KLSAgICBkZWYgdGVzdF9yZWN2X2FscmVh
ZHlfZnVsbHlfY29uc3VtZWQoc2VsZik6Ci0gICAgICAgIHN0cmVhbSA9IFF1aWNTdHJlYW0oc3Ry
ZWFtX2lkPTApCi0KLSAgICAgICAgIyBhZGQgZGF0YSBhdCBvZmZzZXQgMAotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAotICAgICAgICAgICAgc3RyZWFtLmFkZF9mcmFtZShRdWljU3RyZWFtRnJh
bWUob2Zmc2V0PTAsIGRhdGE9YiIwMTIzNDU2NyIpKSwKLSAgICAgICAgICAgIFN0cmVhbURhdGFS
ZWNlaXZlZChkYXRhPWIiMDEyMzQ1NjciLCBlbmRfc3RyZWFtPUZhbHNlLCBzdHJlYW1faWQ9MCks
Ci0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcyhzdHJlYW0uX3JlY3Zf
YnVmZmVyKSwgYiIiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9yZWN2
X3JhbmdlcyksIFtdKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5fcmVjdl9idWZm
ZXJfc3RhcnQsIDgpCi0KLSAgICAgICAgIyBhZGQgZGF0YSBhZ2FpbiBhdCBvZmZzZXQgMAotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgc3RyZWFtLmFkZF9mcmFtZShRdWlj
U3RyZWFtRnJhbWUob2Zmc2V0PTAsIGRhdGE9YiIwMTIzNDU2NyIpKSwgTm9uZQotICAgICAgICAp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoc3RyZWFtLl9yZWN2X2J1ZmZlciksIGIi
IikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fcmVjdl9yYW5nZXMpLCBb
XSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0uX3JlY3ZfYnVmZmVyX3N0YXJ0LCA4
KQotCi0gICAgZGVmIHRlc3RfcmVjdl9hbHJlYWR5X3BhcnRpYWxseV9jb25zdW1lZChzZWxmKToK
LSAgICAgICAgc3RyZWFtID0gUXVpY1N0cmVhbShzdHJlYW1faWQ9MCkKLQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAotICAgICAgICAgICAgc3RyZWFtLmFkZF9mcmFtZShRdWljU3RyZWFtRnJh
bWUob2Zmc2V0PTAsIGRhdGE9YiIwMTIzNDU2NyIpKSwKLSAgICAgICAgICAgIFN0cmVhbURhdGFS
ZWNlaXZlZChkYXRhPWIiMDEyMzQ1NjciLCBlbmRfc3RyZWFtPUZhbHNlLCBzdHJlYW1faWQ9MCks
Ci0gICAgICAgICkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgc3Ry
ZWFtLmFkZF9mcmFtZShRdWljU3RyZWFtRnJhbWUob2Zmc2V0PTAsIGRhdGE9YiIwMTIzNDU2Nzg5
MDEyMzQ1IikpLAotICAgICAgICAgICAgU3RyZWFtRGF0YVJlY2VpdmVkKGRhdGE9YiI4OTAxMjM0
NSIsIGVuZF9zdHJlYW09RmFsc2UsIHN0cmVhbV9pZD0wKSwKLSAgICAgICAgKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGJ5dGVzKHN0cmVhbS5fcmVjdl9idWZmZXIpLCBiIiIpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3JlY3ZfcmFuZ2VzKSwgW10pCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLl9yZWN2X2J1ZmZlcl9zdGFydCwgMTYpCi0KLSAgICBk
ZWYgdGVzdF9yZWN2X2ZpbihzZWxmKToKLSAgICAgICAgc3RyZWFtID0gUXVpY1N0cmVhbShzdHJl
YW1faWQ9MCkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgc3RyZWFt
LmFkZF9mcmFtZShRdWljU3RyZWFtRnJhbWUob2Zmc2V0PTAsIGRhdGE9YiIwMTIzNDU2NyIpKSwK
LSAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZChkYXRhPWIiMDEyMzQ1NjciLCBlbmRfc3Ry
ZWFtPUZhbHNlLCBzdHJlYW1faWQ9MCksCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgKLSAgICAgICAgICAgIHN0cmVhbS5hZGRfZnJhbWUoUXVpY1N0cmVhbUZyYW1lKG9mZnNl
dD04LCBkYXRhPWIiODkwMTIzNDUiLCBmaW49VHJ1ZSkpLAotICAgICAgICAgICAgU3RyZWFtRGF0
YVJlY2VpdmVkKGRhdGE9YiI4OTAxMjM0NSIsIGVuZF9zdHJlYW09VHJ1ZSwgc3RyZWFtX2lkPTAp
LAotICAgICAgICApCi0KLSAgICBkZWYgdGVzdF9yZWN2X2Zpbl9vdXRfb2Zfb3JkZXIoc2VsZik6
Ci0gICAgICAgIHN0cmVhbSA9IFF1aWNTdHJlYW0oc3RyZWFtX2lkPTApCi0KLSAgICAgICAgIyBh
ZGQgZGF0YSBhdCBvZmZzZXQgOCB3aXRoIEZJTgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAot
ICAgICAgICAgICAgc3RyZWFtLmFkZF9mcmFtZShRdWljU3RyZWFtRnJhbWUob2Zmc2V0PTgsIGRh
dGE9YiI4OTAxMjM0NSIsIGZpbj1UcnVlKSksCi0gICAgICAgICAgICBOb25lLAotICAgICAgICAp
Ci0KLSAgICAgICAgIyBhZGQgZGF0YSBhdCBvZmZzZXQgMAotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKAotICAgICAgICAgICAgc3RyZWFtLmFkZF9mcmFtZShRdWljU3RyZWFtRnJhbWUob2Zmc2V0
PTAsIGRhdGE9YiIwMTIzNDU2NyIpKSwKLSAgICAgICAgICAgIFN0cmVhbURhdGFSZWNlaXZlZChk
YXRhPWIiMDEyMzQ1Njc4OTAxMjM0NSIsIGVuZF9zdHJlYW09VHJ1ZSwgc3RyZWFtX2lkPTApLAot
ICAgICAgICApCi0KLSAgICBkZWYgdGVzdF9yZWN2X2Zpbl90aGVuX2RhdGEoc2VsZik6Ci0gICAg
ICAgIHN0cmVhbSA9IFF1aWNTdHJlYW0oc3RyZWFtX2lkPTApCi0gICAgICAgIHN0cmVhbS5hZGRf
ZnJhbWUoUXVpY1N0cmVhbUZyYW1lKG9mZnNldD0wLCBkYXRhPWIiIiwgZmluPVRydWUpKQotICAg
ICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEV4Y2VwdGlvbikgYXMgY206Ci0gICAgICAgICAg
ICBzdHJlYW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1GcmFtZShvZmZzZXQ9MCwgZGF0YT1iIjAxMjM0
NTY3IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksICJEYXRh
IHJlY2VpdmVkIGJleW9uZCBGSU4iKQotCi0gICAgZGVmIHRlc3RfcmVjdl9maW5fdHdpY2Uoc2Vs
Zik6Ci0gICAgICAgIHN0cmVhbSA9IFF1aWNTdHJlYW0oc3RyZWFtX2lkPTApCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBzdHJlYW0uYWRkX2ZyYW1lKFF1aWNTdHJlYW1G
cmFtZShvZmZzZXQ9MCwgZGF0YT1iIjAxMjM0NTY3IikpLAotICAgICAgICAgICAgU3RyZWFtRGF0
YVJlY2VpdmVkKGRhdGE9YiIwMTIzNDU2NyIsIGVuZF9zdHJlYW09RmFsc2UsIHN0cmVhbV9pZD0w
KSwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgc3Ry
ZWFtLmFkZF9mcmFtZShRdWljU3RyZWFtRnJhbWUob2Zmc2V0PTgsIGRhdGE9YiI4OTAxMjM0NSIs
IGZpbj1UcnVlKSksCi0gICAgICAgICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoZGF0YT1iIjg5MDEy
MzQ1IiwgZW5kX3N0cmVhbT1UcnVlLCBzdHJlYW1faWQ9MCksCi0gICAgICAgICkKLQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgc3RyZWFtLmFkZF9mcmFtZShRdWljU3Ry
ZWFtRnJhbWUob2Zmc2V0PTgsIGRhdGE9YiI4OTAxMjM0NSIsIGZpbj1UcnVlKSksCi0gICAgICAg
ICAgICBTdHJlYW1EYXRhUmVjZWl2ZWQoZGF0YT1iIiIsIGVuZF9zdHJlYW09VHJ1ZSwgc3RyZWFt
X2lkPTApLAotICAgICAgICApCi0KLSAgICBkZWYgdGVzdF9yZWN2X2Zpbl93aXRob3V0X2RhdGEo
c2VsZik6Ci0gICAgICAgIHN0cmVhbSA9IFF1aWNTdHJlYW0oc3RyZWFtX2lkPTApCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBzdHJlYW0uYWRkX2ZyYW1lKFF1aWNTdHJl
YW1GcmFtZShvZmZzZXQ9MCwgZGF0YT1iIiIsIGZpbj1UcnVlKSksCi0gICAgICAgICAgICBTdHJl
YW1EYXRhUmVjZWl2ZWQoZGF0YT1iIiIsIGVuZF9zdHJlYW09VHJ1ZSwgc3RyZWFtX2lkPTApLAot
ICAgICAgICApCi0KLSAgICBkZWYgdGVzdF9zZW5kX2RhdGEoc2VsZik6Ci0gICAgICAgIHN0cmVh
bSA9IFF1aWNTdHJlYW0oKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0X3Nl
bmRfb2Zmc2V0LCAwKQotCi0gICAgICAgICMgbm90aGluZyB0byBzZW5kIHlldAotICAgICAgICBm
cmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUoOCkKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZnJh
bWUpCi0KLSAgICAgICAgIyB3cml0ZSBkYXRhCi0gICAgICAgIHN0cmVhbS53cml0ZShiIjAxMjM0
NTY3ODkwMTIzNDUiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9zZW5k
X3BlbmRpbmcpLCBbcmFuZ2UoMCwgMTYpXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJl
YW0ubmV4dF9zZW5kX29mZnNldCwgMCkKLQotICAgICAgICAjIHNlbmQgYSBjaHVuawotICAgICAg
ICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUoOCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChm
cmFtZS5kYXRhLCBiIjAxMjM0NTY3IikKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmcmFtZS5m
aW4pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnJhbWUub2Zmc2V0LCAwKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9zZW5kX3BlbmRpbmcpLCBbcmFuZ2UoOCwgMTYp
XSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5kX29mZnNldCwgOCkK
LQotICAgICAgICAjIHNlbmQgYW5vdGhlciBjaHVuawotICAgICAgICBmcmFtZSA9IHN0cmVhbS5n
ZXRfZnJhbWUoOCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmcmFtZS5kYXRhLCBiIjg5MDEy
MzQ1IikKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmcmFtZS5maW4pCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZnJhbWUub2Zmc2V0LCA4KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxp
c3Qoc3RyZWFtLl9zZW5kX3BlbmRpbmcpLCBbXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
dHJlYW0ubmV4dF9zZW5kX29mZnNldCwgMTYpCi0KLSAgICAgICAgIyBub3RoaW5nIG1vcmUgdG8g
c2VuZAotICAgICAgICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUoOCkKLSAgICAgICAgc2VsZi5h
c3NlcnRJc05vbmUoZnJhbWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0u
X3NlbmRfcGVuZGluZyksIFtdKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0
X3NlbmRfb2Zmc2V0LCAxNikKLQotICAgICAgICAjIGZpcnN0IGNodW5rIGdldHMgYWNrbm93bGVk
Z2VkCi0gICAgICAgIHN0cmVhbS5vbl9kYXRhX2RlbGl2ZXJ5KFF1aWNEZWxpdmVyeVN0YXRlLkFD
S0VELCAwLCA4KQotCi0gICAgICAgICMgc2Vjb25kIGNodW5rIGdldHMgYWNrbm93bGVkZ2VkCi0g
ICAgICAgIHN0cmVhbS5vbl9kYXRhX2RlbGl2ZXJ5KFF1aWNEZWxpdmVyeVN0YXRlLkFDS0VELCA4
LCAxNikKLQotICAgIGRlZiB0ZXN0X3NlbmRfZGF0YV9hbmRfZmluKHNlbGYpOgotICAgICAgICBz
dHJlYW0gPSBRdWljU3RyZWFtKCkKLQotICAgICAgICAjIG5vdGhpbmcgdG8gc2VuZCB5ZXQKLSAg
ICAgICAgZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1lKDgpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNO
b25lKGZyYW1lKQotCi0gICAgICAgICMgd3JpdGUgZGF0YSBhbmQgRU9GCi0gICAgICAgIHN0cmVh
bS53cml0ZShiIjAxMjM0NTY3ODkwMTIzNDUiLCBlbmRfc3RyZWFtPVRydWUpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3NlbmRfcGVuZGluZyksIFtyYW5nZSgwLCAxNild
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCAwKQot
Ci0gICAgICAgICMgc2VuZCBhIGNodW5rCi0gICAgICAgIGZyYW1lID0gc3RyZWFtLmdldF9mcmFt
ZSg4KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZyYW1lLmRhdGEsIGIiMDEyMzQ1NjciKQot
ICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGZyYW1lLmZpbikKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChmcmFtZS5vZmZzZXQsIDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm5l
eHRfc2VuZF9vZmZzZXQsIDgpCi0KLSAgICAgICAgIyBzZW5kIGFub3RoZXIgY2h1bmsKLSAgICAg
ICAgZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1lKDgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZnJhbWUuZGF0YSwgYiI4OTAxMjM0NSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmcmFtZS5m
aW4pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnJhbWUub2Zmc2V0LCA4KQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCAxNikKLQotICAgICAgICAj
IG5vdGhpbmcgbW9yZSB0byBzZW5kCi0gICAgICAgIGZyYW1lID0gc3RyZWFtLmdldF9mcmFtZSg4
KQotICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmcmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChzdHJlYW0ubmV4dF9zZW5kX29mZnNldCwgMTYpCi0KLSAgICBkZWYgdGVzdF9zZW5kX2Rh
dGFfbG9zdChzZWxmKToKLSAgICAgICAgc3RyZWFtID0gUXVpY1N0cmVhbSgpCi0KLSAgICAgICAg
IyBub3RoaW5nIHRvIHNlbmQgeWV0Ci0gICAgICAgIGZyYW1lID0gc3RyZWFtLmdldF9mcmFtZSg4
KQotICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmcmFtZSkKLQotICAgICAgICAjIHdyaXRlIGRh
dGEgYW5kIEVPRgotICAgICAgICBzdHJlYW0ud3JpdGUoYiIwMTIzNDU2Nzg5MDEyMzQ1IiwgZW5k
X3N0cmVhbT1UcnVlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9zZW5k
X3BlbmRpbmcpLCBbcmFuZ2UoMCwgMTYpXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJl
YW0ubmV4dF9zZW5kX29mZnNldCwgMCkKLQotICAgICAgICAjIHNlbmQgYSBjaHVuawotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgc3RyZWFtLmdldF9mcmFtZSg4KSwgUXVp
Y1N0cmVhbUZyYW1lKGRhdGE9YiIwMTIzNDU2NyIsIGZpbj1GYWxzZSwgb2Zmc2V0PTApCi0gICAg
ICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fc2VuZF9wZW5kaW5n
KSwgW3JhbmdlKDgsIDE2KV0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm5leHRf
c2VuZF9vZmZzZXQsIDgpCi0KLSAgICAgICAgIyBzZW5kIGFub3RoZXIgY2h1bmsKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIHN0cmVhbS5nZXRfZnJhbWUoOCksIFF1aWNT
dHJlYW1GcmFtZShkYXRhPWIiODkwMTIzNDUiLCBmaW49VHJ1ZSwgb2Zmc2V0PTgpCi0gICAgICAg
ICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fc2VuZF9wZW5kaW5nKSwg
W10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm5leHRfc2VuZF9vZmZzZXQsIDE2
KQotCi0gICAgICAgICMgbm90aGluZyBtb3JlIHRvIHNlbmQKLSAgICAgICAgc2VsZi5hc3NlcnRJ
c05vbmUoc3RyZWFtLmdldF9mcmFtZSg4KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0
KHN0cmVhbS5fc2VuZF9wZW5kaW5nKSwgW10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Ry
ZWFtLm5leHRfc2VuZF9vZmZzZXQsIDE2KQotCi0gICAgICAgICMgYSBjaHVuayBnZXRzIGxvc3QK
LSAgICAgICAgc3RyZWFtLm9uX2RhdGFfZGVsaXZlcnkoUXVpY0RlbGl2ZXJ5U3RhdGUuTE9TVCwg
MCwgOCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fc2VuZF9wZW5kaW5n
KSwgW3JhbmdlKDAsIDgpXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9z
ZW5kX29mZnNldCwgMCkKLQotICAgICAgICAjIHNlbmQgY2h1bmsgYWdhaW4KLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIHN0cmVhbS5nZXRfZnJhbWUoOCksIFF1aWNTdHJl
YW1GcmFtZShkYXRhPWIiMDEyMzQ1NjciLCBmaW49RmFsc2UsIG9mZnNldD0wKQotICAgICAgICAp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3NlbmRfcGVuZGluZyksIFtd
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCAxNikK
LQotICAgIGRlZiB0ZXN0X3NlbmRfZGF0YV9sb3N0X2ZpbihzZWxmKToKLSAgICAgICAgc3RyZWFt
ID0gUXVpY1N0cmVhbSgpCi0KLSAgICAgICAgIyBub3RoaW5nIHRvIHNlbmQgeWV0Ci0gICAgICAg
IGZyYW1lID0gc3RyZWFtLmdldF9mcmFtZSg4KQotICAgICAgICBzZWxmLmFzc2VydElzTm9uZShm
cmFtZSkKLQotICAgICAgICAjIHdyaXRlIGRhdGEgYW5kIEVPRgotICAgICAgICBzdHJlYW0ud3Jp
dGUoYiIwMTIzNDU2Nzg5MDEyMzQ1IiwgZW5kX3N0cmVhbT1UcnVlKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9zZW5kX3BlbmRpbmcpLCBbcmFuZ2UoMCwgMTYpXSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5kX29mZnNldCwgMCkKLQotICAg
ICAgICAjIHNlbmQgYSBjaHVuawotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAg
ICAgc3RyZWFtLmdldF9mcmFtZSg4KSwgUXVpY1N0cmVhbUZyYW1lKGRhdGE9YiIwMTIzNDU2NyIs
IGZpbj1GYWxzZSwgb2Zmc2V0PTApCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChsaXN0KHN0cmVhbS5fc2VuZF9wZW5kaW5nKSwgW3JhbmdlKDgsIDE2KV0pCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm5leHRfc2VuZF9vZmZzZXQsIDgpCi0KLSAgICAgICAgIyBz
ZW5kIGFub3RoZXIgY2h1bmsKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAg
IHN0cmVhbS5nZXRfZnJhbWUoOCksIFF1aWNTdHJlYW1GcmFtZShkYXRhPWIiODkwMTIzNDUiLCBm
aW49VHJ1ZSwgb2Zmc2V0PTgpCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChs
aXN0KHN0cmVhbS5fc2VuZF9wZW5kaW5nKSwgW10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c3RyZWFtLm5leHRfc2VuZF9vZmZzZXQsIDE2KQotCi0gICAgICAgICMgbm90aGluZyBtb3JlIHRv
IHNlbmQKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc3RyZWFtLmdldF9mcmFtZSg4KSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0cmVhbS5fc2VuZF9wZW5kaW5nKSwgW10pCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLm5leHRfc2VuZF9vZmZzZXQsIDE2KQotCi0g
ICAgICAgICMgYSBjaHVuayBnZXRzIGxvc3QKLSAgICAgICAgc3RyZWFtLm9uX2RhdGFfZGVsaXZl
cnkoUXVpY0RlbGl2ZXJ5U3RhdGUuTE9TVCwgOCwgMTYpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwobGlzdChzdHJlYW0uX3NlbmRfcGVuZGluZyksIFtyYW5nZSg4LCAxNildKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zmc2V0LCA4KQotCi0gICAgICAgICMg
c2VuZCBjaHVuayBhZ2FpbgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAg
c3RyZWFtLmdldF9mcmFtZSg4KSwgUXVpY1N0cmVhbUZyYW1lKGRhdGE9YiI4OTAxMjM0NSIsIGZp
bj1UcnVlLCBvZmZzZXQ9OCkKLSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxp
c3Qoc3RyZWFtLl9zZW5kX3BlbmRpbmcpLCBbXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
dHJlYW0ubmV4dF9zZW5kX29mZnNldCwgMTYpCi0KLSAgICBkZWYgdGVzdF9zZW5kX2Jsb2NrZWQo
c2VsZik6Ci0gICAgICAgIHN0cmVhbSA9IFF1aWNTdHJlYW0oKQotICAgICAgICBtYXhfb2Zmc2V0
ID0gMTIKLQotICAgICAgICAjIG5vdGhpbmcgdG8gc2VuZCB5ZXQKLSAgICAgICAgZnJhbWUgPSBz
dHJlYW0uZ2V0X2ZyYW1lKDgsIG1heF9vZmZzZXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25l
KGZyYW1lKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3RyZWFtLl9zZW5kX3BlbmRp
bmcpLCBbXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5kX29mZnNl
dCwgMCkKLQotICAgICAgICAjIHdyaXRlIGRhdGEsIHNlbmQgYSBjaHVuawotICAgICAgICBzdHJl
YW0ud3JpdGUoYiIwMTIzNDU2Nzg5MDEyMzQ1IikKLSAgICAgICAgZnJhbWUgPSBzdHJlYW0uZ2V0
X2ZyYW1lKDgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnJhbWUuZGF0YSwgYiIwMTIzNDU2
NyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZnJhbWUuZmluKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGZyYW1lLm9mZnNldCwgMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0
KHN0cmVhbS5fc2VuZF9wZW5kaW5nKSwgW3JhbmdlKDgsIDE2KV0pCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc3RyZWFtLm5leHRfc2VuZF9vZmZzZXQsIDgpCi0KLSAgICAgICAgIyBzZW5kIGlz
IGxpbWl0ZWQgYnkgcGVlcgotICAgICAgICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUoOCwgbWF4
X29mZnNldCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmcmFtZS5kYXRhLCBiIjg5MDEiKQot
ICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGZyYW1lLmZpbikKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChmcmFtZS5vZmZzZXQsIDgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJl
YW0uX3NlbmRfcGVuZGluZyksIFtyYW5nZSgxMiwgMTYpXSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChzdHJlYW0ubmV4dF9zZW5kX29mZnNldCwgMTIpCi0KLSAgICAgICAgIyB1bmFibGUgdG8g
c2VuZCwgYmxvY2tlZAotICAgICAgICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUoOCwgbWF4X29m
ZnNldCkKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZnJhbWUpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGlzdChzdHJlYW0uX3NlbmRfcGVuZGluZyksIFtyYW5nZSgxMiwgMTYpXSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5kX29mZnNldCwgMTIpCi0KLSAg
ICAgICAgIyB3cml0ZSBtb3JlIGRhdGEsIHN0aWxsIGJsb2NrZWQKLSAgICAgICAgc3RyZWFtLndy
aXRlKGIiYWJjZGVmZ2giKQotICAgICAgICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUoOCwgbWF4
X29mZnNldCkKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZnJhbWUpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3NlbmRfcGVuZGluZyksIFtyYW5nZSgxMiwgMjQpXSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ubmV4dF9zZW5kX29mZnNldCwgMTIpCi0K
LSAgICAgICAgIyBwZWVyIHJhaXNlcyBsaW1pdCwgc2VuZCBzb21lIGRhdGEKLSAgICAgICAgbWF4
X29mZnNldCArPSA4Ci0gICAgICAgIGZyYW1lID0gc3RyZWFtLmdldF9mcmFtZSg4LCBtYXhfb2Zm
c2V0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZyYW1lLmRhdGEsIGIiMjM0NWFiY2QiKQot
ICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGZyYW1lLmZpbikKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChmcmFtZS5vZmZzZXQsIDEyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3Ry
ZWFtLl9zZW5kX3BlbmRpbmcpLCBbcmFuZ2UoMjAsIDI0KV0pCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc3RyZWFtLm5leHRfc2VuZF9vZmZzZXQsIDIwKQotCi0gICAgICAgICMgcGVlciByYWlz
ZXMgbGltaXQgYWdhaW4sIHNlbmQgcmVtYWluaW5nIGRhdGEKLSAgICAgICAgbWF4X29mZnNldCAr
PSA4Ci0gICAgICAgIGZyYW1lID0gc3RyZWFtLmdldF9mcmFtZSg4LCBtYXhfb2Zmc2V0KQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGZyYW1lLmRhdGEsIGIiZWZnaCIpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RmFsc2UoZnJhbWUuZmluKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZyYW1lLm9m
ZnNldCwgMjApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdHJlYW0uX3NlbmRfcGVu
ZGluZyksIFtdKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5uZXh0X3NlbmRfb2Zm
c2V0LCAyNCkKLQotICAgICAgICAjIG5vdGhpbmcgbW9yZSB0byBzZW5kCi0gICAgICAgIGZyYW1l
ID0gc3RyZWFtLmdldF9mcmFtZSg4LCBtYXhfb2Zmc2V0KQotICAgICAgICBzZWxmLmFzc2VydElz
Tm9uZShmcmFtZSkKLQotICAgIGRlZiB0ZXN0X3NlbmRfZmluX29ubHkoc2VsZik6Ci0gICAgICAg
IHN0cmVhbSA9IFF1aWNTdHJlYW0oKQotCi0gICAgICAgICMgbm90aGluZyB0byBzZW5kIHlldAot
ICAgICAgICBzZWxmLmFzc2VydFRydWUoc3RyZWFtLnNlbmRfYnVmZmVyX2lzX2VtcHR5KQotICAg
ICAgICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUoOCkKLSAgICAgICAgc2VsZi5hc3NlcnRJc05v
bmUoZnJhbWUpCi0KLSAgICAgICAgIyB3cml0ZSBFT0YKLSAgICAgICAgc3RyZWFtLndyaXRlKGIi
IiwgZW5kX3N0cmVhbT1UcnVlKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHN0cmVhbS5zZW5k
X2J1ZmZlcl9pc19lbXB0eSkKLSAgICAgICAgZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1lKDgpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnJhbWUuZGF0YSwgYiIiKQotICAgICAgICBzZWxmLmFz
c2VydFRydWUoZnJhbWUuZmluKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZyYW1lLm9mZnNl
dCwgMCkKLQotICAgICAgICAjIG5vdGhpbmcgbW9yZSB0byBzZW5kCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RmFsc2Uoc3RyZWFtLnNlbmRfYnVmZmVyX2lzX2VtcHR5KSAgIyBGSVhNRT8KLSAgICAgICAg
ZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1lKDgpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZy
YW1lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoc3RyZWFtLnNlbmRfYnVmZmVyX2lzX2VtcHR5
KQotCi0gICAgZGVmIHRlc3Rfc2VuZF9maW5fb25seV9kZXNwaXRlX2Jsb2NrZWQoc2VsZik6Ci0g
ICAgICAgIHN0cmVhbSA9IFF1aWNTdHJlYW0oKQotCi0gICAgICAgICMgbm90aGluZyB0byBzZW5k
IHlldAotICAgICAgICBzZWxmLmFzc2VydFRydWUoc3RyZWFtLnNlbmRfYnVmZmVyX2lzX2VtcHR5
KQotICAgICAgICBmcmFtZSA9IHN0cmVhbS5nZXRfZnJhbWUoOCkKLSAgICAgICAgc2VsZi5hc3Nl
cnRJc05vbmUoZnJhbWUpCi0KLSAgICAgICAgIyB3cml0ZSBFT0YKLSAgICAgICAgc3RyZWFtLndy
aXRlKGIiIiwgZW5kX3N0cmVhbT1UcnVlKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHN0cmVh
bS5zZW5kX2J1ZmZlcl9pc19lbXB0eSkKLSAgICAgICAgZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1l
KDgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnJhbWUuZGF0YSwgYiIiKQotICAgICAgICBz
ZWxmLmFzc2VydFRydWUoZnJhbWUuZmluKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZyYW1l
Lm9mZnNldCwgMCkKLQotICAgICAgICAjIG5vdGhpbmcgbW9yZSB0byBzZW5kCi0gICAgICAgIHNl
bGYuYXNzZXJ0RmFsc2Uoc3RyZWFtLnNlbmRfYnVmZmVyX2lzX2VtcHR5KSAgIyBGSVhNRT8KLSAg
ICAgICAgZnJhbWUgPSBzdHJlYW0uZ2V0X2ZyYW1lKDgpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNO
b25lKGZyYW1lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoc3RyZWFtLnNlbmRfYnVmZmVyX2lz
X2VtcHR5KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfdGxzLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3Rlc3RzL3Rlc3RfdGxzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBiZThhNDcwZjc0YjFjZTRmOTk0NTgzYWU4MzdlZDBhZDk0ODM3YjRjLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0
X3Rscy5weQorKysgL2Rldi9udWxsCkBAIC0xLDE0MDAgKzAsMCBAQAotaW1wb3J0IGJpbmFzY2lp
Ci1pbXBvcnQgZGF0ZXRpbWUKLWltcG9ydCBzc2wKLWZyb20gdW5pdHRlc3QgaW1wb3J0IFRlc3RD
YXNlCi1mcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IHBhdGNoCi0KLWZyb20gY3J5cHRvZ3JhcGh5
LmV4Y2VwdGlvbnMgaW1wb3J0IFVuc3VwcG9ydGVkQWxnb3JpdGhtCi1mcm9tIGNyeXB0b2dyYXBo
eS5oYXptYXQucHJpbWl0aXZlcyBpbXBvcnQgc2VyaWFsaXphdGlvbgotZnJvbSBjcnlwdG9ncmFw
aHkuaGF6bWF0LnByaW1pdGl2ZXMuYXN5bW1ldHJpYyBpbXBvcnQgZWMKLQotZnJvbSBhaW9xdWlj
IGltcG9ydCB0bHMKLWZyb20gYWlvcXVpYy5idWZmZXIgaW1wb3J0IEJ1ZmZlciwgQnVmZmVyUmVh
ZEVycm9yCi1mcm9tIGFpb3F1aWMucXVpYy5jb25maWd1cmF0aW9uIGltcG9ydCBRdWljQ29uZmln
dXJhdGlvbgotZnJvbSBhaW9xdWljLnRscyBpbXBvcnQgKAotICAgIENlcnRpZmljYXRlLAotICAg
IENlcnRpZmljYXRlVmVyaWZ5LAotICAgIENsaWVudEhlbGxvLAotICAgIENvbnRleHQsCi0gICAg
RW5jcnlwdGVkRXh0ZW5zaW9ucywKLSAgICBGaW5pc2hlZCwKLSAgICBOZXdTZXNzaW9uVGlja2V0
LAotICAgIFNlcnZlckhlbGxvLAotICAgIFN0YXRlLAotICAgIGxvYWRfcGVtX3g1MDlfY2VydGlm
aWNhdGVzLAotICAgIHB1bGxfYmxvY2ssCi0gICAgcHVsbF9jZXJ0aWZpY2F0ZSwKLSAgICBwdWxs
X2NlcnRpZmljYXRlX3ZlcmlmeSwKLSAgICBwdWxsX2NsaWVudF9oZWxsbywKLSAgICBwdWxsX2Vu
Y3J5cHRlZF9leHRlbnNpb25zLAotICAgIHB1bGxfZmluaXNoZWQsCi0gICAgcHVsbF9uZXdfc2Vz
c2lvbl90aWNrZXQsCi0gICAgcHVsbF9zZXJ2ZXJfaGVsbG8sCi0gICAgcHVzaF9jZXJ0aWZpY2F0
ZSwKLSAgICBwdXNoX2NlcnRpZmljYXRlX3ZlcmlmeSwKLSAgICBwdXNoX2NsaWVudF9oZWxsbywK
LSAgICBwdXNoX2VuY3J5cHRlZF9leHRlbnNpb25zLAotICAgIHB1c2hfZmluaXNoZWQsCi0gICAg
cHVzaF9uZXdfc2Vzc2lvbl90aWNrZXQsCi0gICAgcHVzaF9zZXJ2ZXJfaGVsbG8sCi0gICAgdmVy
aWZ5X2NlcnRpZmljYXRlLAotKQotCi1mcm9tIC51dGlscyBpbXBvcnQgKAotICAgIFNFUlZFUl9D
QUNFUlRGSUxFLAotICAgIFNFUlZFUl9DRVJURklMRSwKLSAgICBTRVJWRVJfS0VZRklMRSwKLSAg
ICBnZW5lcmF0ZV9lY19jZXJ0aWZpY2F0ZSwKLSAgICBsb2FkLAotKQotCi1DRVJUSUZJQ0FURV9E
QVRBID0gbG9hZCgidGxzX2NlcnRpZmljYXRlLmJpbiIpWzExOi0yXQotQ0VSVElGSUNBVEVfVkVS
SUZZX1NJR05BVFVSRSA9IGxvYWQoInRsc19jZXJ0aWZpY2F0ZV92ZXJpZnkuYmluIilbLTM4NDpd
Ci0KLUNMSUVOVF9RVUlDX1RSQU5TUE9SVF9QQVJBTUVURVJTID0gYmluYXNjaWkudW5oZXhsaWZ5
KAotICAgIGIiZmYwMDAwMTEwMDMxMDAwNTAwMDQ4MDEwMDAwMDAwMDYwMDA0ODAxMDAwMDAwMDA3
MDAwNDgwMTAwMDAwMDAwIgotICAgIGIiNDAwMDQ4MTAwMDAwMDAwMDEwMDAyNDI1ODAwMDgwMDAy
NDA2NDAwMGEwMDAxMGEiCi0pCi0KLVNFUlZFUl9RVUlDX1RSQU5TUE9SVF9QQVJBTUVURVJTID0g
YmluYXNjaWkudW5oZXhsaWZ5KAotICAgIGIiZmYwMDAwMTEwNGZmMDAwMDExMDA0NTAwMDUwMDA0
ODAxMDAwMDAwMDA2MDAwNDgwMTAwMDAwMDAwNzAwMDQ4IgotICAgIGIiMDEwMDAwMDAwMDQwMDA0
ODEwMDAwMDAwMDAxMDAwMjQyNTgwMDAyMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwIgotICAgIGIi
MDAwMDAwMDAwMDAwMDAwODAwMDI0MDY0MDAwYTAwMDEwYSIKLSkKLQotU0VSVkVSX1FVSUNfVFJB
TlNQT1JUX1BBUkFNRVRFUlNfMiA9IGJpbmFzY2lpLnVuaGV4bGlmeSgKLSAgICBiIjAwNTcwMDA2
MDAwNDgwMDBmZmZmMDAwNTAwMDQ4MDAwZmZmZjAwMDIwMDEwYzVhYzQxMGZiZGQ0ZmU2ZTJjMSIK
LSAgICBiIjQyMjc5ZjIzMWU4ZTAwMDBhMDAwMTAzMDAwNDAwMDQ4MDA1ZmZmYTAwMGIwMDAxMTkw
MDAxMDAwMjY3MTBmZiIKLSAgICBiIjQyMDAwYzVjMDY3ZjI3ZTM5MzIxYzYzZTI4ZTdjOTAwMDMw
MDAyNDdlNDAwMDgwMDAxMDYiCi0pCi0KLVNFUlZFUl9RVUlDX1RSQU5TUE9SVF9QQVJBTUVURVJT
XzMgPSBiaW5hc2NpaS51bmhleGxpZnkoCi0gICAgYiIwMDU0MDAwMjAwMTAwZGNiNTBhNDQyNTEz
Mjk1YjQ2NzliYWYwNGNiNWVmZmZmOGEwMDA5YzhhZmU3MmE2Mzk3IgotICAgIGIiMjU1NDA3MDAw
NjAwMDQ4MDAwZmZmZjAwMDgwMDAxMDYwMDA0MDAwNDgwMDVmZmZhMDAwNTAwMDQ4MDAwZmZmZiIK
LSAgICBiIjAwMDMwMDAyNDdlNDAwMGEwMDAxMDMwMDAxMDAwMjY3MTAwMDBiMDAwMTE5IgotKQot
Ci0KLWNsYXNzIEJ1ZmZlclRlc3QoVGVzdENhc2UpOgotICAgIGRlZiB0ZXN0X3B1bGxfYmxvY2tf
dHJ1bmNhdGVkKHNlbGYpOgotICAgICAgICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9MCkKLSAgICAg
ICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJSZWFkRXJyb3IpOgotICAgICAgICAgICAg
d2l0aCBwdWxsX2Jsb2NrKGJ1ZiwgMSk6Ci0gICAgICAgICAgICAgICAgcGFzcwotCi0KLWRlZiBj
cmVhdGVfYnVmZmVycygpOgotICAgIHJldHVybiB7Ci0gICAgICAgIHRscy5FcG9jaC5JTklUSUFM
OiBCdWZmZXIoY2FwYWNpdHk9NDA5NiksCi0gICAgICAgIHRscy5FcG9jaC5IQU5EU0hBS0U6IEJ1
ZmZlcihjYXBhY2l0eT00MDk2KSwKLSAgICAgICAgdGxzLkVwb2NoLk9ORV9SVFQ6IEJ1ZmZlcihj
YXBhY2l0eT00MDk2KSwKLSAgICB9Ci0KLQotZGVmIG1lcmdlX2J1ZmZlcnMoYnVmZmVycyk6Ci0g
ICAgcmV0dXJuIGIiIi5qb2luKHguZGF0YSBmb3IgeCBpbiBidWZmZXJzLnZhbHVlcygpKQotCi0K
LWRlZiByZXNldF9idWZmZXJzKGJ1ZmZlcnMpOgotICAgIGZvciBrIGluIGJ1ZmZlcnMua2V5cygp
OgotICAgICAgICBidWZmZXJzW2tdLnNlZWsoMCkKLQotCi1jbGFzcyBDb250ZXh0VGVzdChUZXN0
Q2FzZSk6Ci0gICAgZGVmIGNyZWF0ZV9jbGllbnQoCi0gICAgICAgIHNlbGYsIGFscG5fcHJvdG9j
b2xzPU5vbmUsIGNhZGF0YT1Ob25lLCBjYWZpbGU9U0VSVkVSX0NBQ0VSVEZJTEUsICoqa3dhcmdz
Ci0gICAgKToKLSAgICAgICAgY2xpZW50ID0gQ29udGV4dCgKLSAgICAgICAgICAgIGFscG5fcHJv
dG9jb2xzPWFscG5fcHJvdG9jb2xzLAotICAgICAgICAgICAgY2FkYXRhPWNhZGF0YSwKLSAgICAg
ICAgICAgIGNhZmlsZT1jYWZpbGUsCi0gICAgICAgICAgICBpc19jbGllbnQ9VHJ1ZSwKLSAgICAg
ICAgICAgICoqa3dhcmdzCi0gICAgICAgICkKLSAgICAgICAgY2xpZW50LmhhbmRzaGFrZV9leHRl
bnNpb25zID0gWwotICAgICAgICAgICAgKAotICAgICAgICAgICAgICAgIHRscy5FeHRlbnNpb25U
eXBlLlFVSUNfVFJBTlNQT1JUX1BBUkFNRVRFUlMsCi0gICAgICAgICAgICAgICAgQ0xJRU5UX1FV
SUNfVFJBTlNQT1JUX1BBUkFNRVRFUlMsCi0gICAgICAgICAgICApCi0gICAgICAgIF0KLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9IQU5EU0hBS0Vf
U1RBUlQpCi0gICAgICAgIHJldHVybiBjbGllbnQKLQotICAgIGRlZiBjcmVhdGVfc2VydmVyKHNl
bGYsIGFscG5fcHJvdG9jb2xzPU5vbmUpOgotICAgICAgICBjb25maWd1cmF0aW9uID0gUXVpY0Nv
bmZpZ3VyYXRpb24oaXNfY2xpZW50PUZhbHNlKQotICAgICAgICBjb25maWd1cmF0aW9uLmxvYWRf
Y2VydF9jaGFpbihTRVJWRVJfQ0VSVEZJTEUsIFNFUlZFUl9LRVlGSUxFKQotCi0gICAgICAgIHNl
cnZlciA9IENvbnRleHQoCi0gICAgICAgICAgICBhbHBuX3Byb3RvY29scz1hbHBuX3Byb3RvY29s
cywgaXNfY2xpZW50PUZhbHNlLCBtYXhfZWFybHlfZGF0YT0weEZGRkZGRkZGCi0gICAgICAgICkK
LSAgICAgICAgc2VydmVyLmNlcnRpZmljYXRlID0gY29uZmlndXJhdGlvbi5jZXJ0aWZpY2F0ZQot
ICAgICAgICBzZXJ2ZXIuY2VydGlmaWNhdGVfcHJpdmF0ZV9rZXkgPSBjb25maWd1cmF0aW9uLnBy
aXZhdGVfa2V5Ci0gICAgICAgIHNlcnZlci5oYW5kc2hha2VfZXh0ZW5zaW9ucyA9IFsKLSAgICAg
ICAgICAgICgKLSAgICAgICAgICAgICAgICB0bHMuRXh0ZW5zaW9uVHlwZS5RVUlDX1RSQU5TUE9S
VF9QQVJBTUVURVJTLAotICAgICAgICAgICAgICAgIFNFUlZFUl9RVUlDX1RSQU5TUE9SVF9QQVJB
TUVURVJTLAotICAgICAgICAgICAgKQotICAgICAgICBdCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoc2VydmVyLnN0YXRlLCBTdGF0ZS5TRVJWRVJfRVhQRUNUX0NMSUVOVF9IRUxMTykKLSAgICAg
ICAgcmV0dXJuIHNlcnZlcgotCi0gICAgZGVmIHRlc3RfY2xpZW50X3VuZXhwZWN0ZWRfbWVzc2Fn
ZShzZWxmKToKLSAgICAgICAgY2xpZW50ID0gc2VsZi5jcmVhdGVfY2xpZW50KCkKLQotICAgICAg
ICBjbGllbnQuc3RhdGUgPSBTdGF0ZS5DTElFTlRfRVhQRUNUX1NFUlZFUl9IRUxMTwotICAgICAg
ICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHRscy5BbGVydFVuZXhwZWN0ZWRNZXNzYWdlKToKLSAg
ICAgICAgICAgIGNsaWVudC5oYW5kbGVfbWVzc2FnZShiIlx4MDBceDAwXHgwMFx4MDAiLCBjcmVh
dGVfYnVmZmVycygpKQotCi0gICAgICAgIGNsaWVudC5zdGF0ZSA9IFN0YXRlLkNMSUVOVF9FWFBF
Q1RfRU5DUllQVEVEX0VYVEVOU0lPTlMKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh0
bHMuQWxlcnRVbmV4cGVjdGVkTWVzc2FnZSk6Ci0gICAgICAgICAgICBjbGllbnQuaGFuZGxlX21l
c3NhZ2UoYiJceDAwXHgwMFx4MDBceDAwIiwgY3JlYXRlX2J1ZmZlcnMoKSkKLQotICAgICAgICBj
bGllbnQuc3RhdGUgPSBTdGF0ZS5DTElFTlRfRVhQRUNUX0NFUlRJRklDQVRFX1JFUVVFU1RfT1Jf
Q0VSVElGSUNBVEUKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh0bHMuQWxlcnRVbmV4
cGVjdGVkTWVzc2FnZSk6Ci0gICAgICAgICAgICBjbGllbnQuaGFuZGxlX21lc3NhZ2UoYiJceDAw
XHgwMFx4MDBceDAwIiwgY3JlYXRlX2J1ZmZlcnMoKSkKLQotICAgICAgICBjbGllbnQuc3RhdGUg
PSBTdGF0ZS5DTElFTlRfRVhQRUNUX0NFUlRJRklDQVRFX1ZFUklGWQotICAgICAgICB3aXRoIHNl
bGYuYXNzZXJ0UmFpc2VzKHRscy5BbGVydFVuZXhwZWN0ZWRNZXNzYWdlKToKLSAgICAgICAgICAg
IGNsaWVudC5oYW5kbGVfbWVzc2FnZShiIlx4MDBceDAwXHgwMFx4MDAiLCBjcmVhdGVfYnVmZmVy
cygpKQotCi0gICAgICAgIGNsaWVudC5zdGF0ZSA9IFN0YXRlLkNMSUVOVF9FWFBFQ1RfRklOSVNI
RUQKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh0bHMuQWxlcnRVbmV4cGVjdGVkTWVz
c2FnZSk6Ci0gICAgICAgICAgICBjbGllbnQuaGFuZGxlX21lc3NhZ2UoYiJceDAwXHgwMFx4MDBc
eDAwIiwgY3JlYXRlX2J1ZmZlcnMoKSkKLQotICAgICAgICBjbGllbnQuc3RhdGUgPSBTdGF0ZS5D
TElFTlRfUE9TVF9IQU5EU0hBS0UKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh0bHMu
QWxlcnRVbmV4cGVjdGVkTWVzc2FnZSk6Ci0gICAgICAgICAgICBjbGllbnQuaGFuZGxlX21lc3Nh
Z2UoYiJceDAwXHgwMFx4MDBceDAwIiwgY3JlYXRlX2J1ZmZlcnMoKSkKLQotICAgIGRlZiB0ZXN0
X2NsaWVudF9iYWRfY2VydGlmaWNhdGVfdmVyaWZ5X2RhdGEoc2VsZik6Ci0gICAgICAgIGNsaWVu
dCA9IHNlbGYuY3JlYXRlX2NsaWVudCgpCi0gICAgICAgIHNlcnZlciA9IHNlbGYuY3JlYXRlX3Nl
cnZlcigpCi0KLSAgICAgICAgIyBzZW5kIGNsaWVudCBoZWxsbwotICAgICAgICBjbGllbnRfYnVm
ID0gY3JlYXRlX2J1ZmZlcnMoKQotICAgICAgICBjbGllbnQuaGFuZGxlX21lc3NhZ2UoYiIiLCBj
bGllbnRfYnVmKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5zdGF0ZSwgU3RhdGUu
Q0xJRU5UX0VYUEVDVF9TRVJWRVJfSEVMTE8pCi0gICAgICAgIHNlcnZlcl9pbnB1dCA9IG1lcmdl
X2J1ZmZlcnMoY2xpZW50X2J1ZikKLSAgICAgICAgcmVzZXRfYnVmZmVycyhjbGllbnRfYnVmKQot
Ci0gICAgICAgICMgaGFuZGxlIGNsaWVudCBoZWxsbwotICAgICAgICAjIHNlbmQgc2VydmVyIGhl
bGxvLCBlbmNyeXB0ZWQgZXh0ZW5zaW9ucywgY2VydGlmaWNhdGUsIGNlcnRpZmljYXRlIHZlcmlm
eSwgZmluaXNoZWQKLSAgICAgICAgc2VydmVyX2J1ZiA9IGNyZWF0ZV9idWZmZXJzKCkKLSAgICAg
ICAgc2VydmVyLmhhbmRsZV9tZXNzYWdlKHNlcnZlcl9pbnB1dCwgc2VydmVyX2J1ZikKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXIuc3RhdGUsIFN0YXRlLlNFUlZFUl9FWFBFQ1RfRklO
SVNIRUQpCi0gICAgICAgIGNsaWVudF9pbnB1dCA9IG1lcmdlX2J1ZmZlcnMoc2VydmVyX2J1ZikK
LSAgICAgICAgcmVzZXRfYnVmZmVycyhzZXJ2ZXJfYnVmKQotCi0gICAgICAgICMgbWVzcyB3aXRo
IGNlcnRpZmljYXRlIHZlcmlmeQotICAgICAgICBjbGllbnRfaW5wdXQgPSBjbGllbnRfaW5wdXRb
Oi01Nl0gKyBieXRlcyg0KSArIGNsaWVudF9pbnB1dFstNTI6XQotCi0gICAgICAgICMgaGFuZGxl
IHNlcnZlciBoZWxsbywgZW5jcnlwdGVkIGV4dGVuc2lvbnMsIGNlcnRpZmljYXRlLCBjZXJ0aWZp
Y2F0ZSB2ZXJpZnksIGZpbmlzaGVkCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXModGxz
LkFsZXJ0RGVjcnlwdEVycm9yKToKLSAgICAgICAgICAgIGNsaWVudC5oYW5kbGVfbWVzc2FnZShj
bGllbnRfaW5wdXQsIGNsaWVudF9idWYpCi0KLSAgICBkZWYgdGVzdF9jbGllbnRfYmFkX2Zpbmlz
aGVkX3ZlcmlmeV9kYXRhKHNlbGYpOgotICAgICAgICBjbGllbnQgPSBzZWxmLmNyZWF0ZV9jbGll
bnQoKQotICAgICAgICBzZXJ2ZXIgPSBzZWxmLmNyZWF0ZV9zZXJ2ZXIoKQotCi0gICAgICAgICMg
c2VuZCBjbGllbnQgaGVsbG8KLSAgICAgICAgY2xpZW50X2J1ZiA9IGNyZWF0ZV9idWZmZXJzKCkK
LSAgICAgICAgY2xpZW50LmhhbmRsZV9tZXNzYWdlKGIiIiwgY2xpZW50X2J1ZikKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjbGllbnQuc3RhdGUsIFN0YXRlLkNMSUVOVF9FWFBFQ1RfU0VSVkVS
X0hFTExPKQotICAgICAgICBzZXJ2ZXJfaW5wdXQgPSBtZXJnZV9idWZmZXJzKGNsaWVudF9idWYp
Ci0gICAgICAgIHJlc2V0X2J1ZmZlcnMoY2xpZW50X2J1ZikKLQotICAgICAgICAjIGhhbmRsZSBj
bGllbnQgaGVsbG8KLSAgICAgICAgIyBzZW5kIHNlcnZlciBoZWxsbywgZW5jcnlwdGVkIGV4dGVu
c2lvbnMsIGNlcnRpZmljYXRlLCBjZXJ0aWZpY2F0ZSB2ZXJpZnksIGZpbmlzaGVkCi0gICAgICAg
IHNlcnZlcl9idWYgPSBjcmVhdGVfYnVmZmVycygpCi0gICAgICAgIHNlcnZlci5oYW5kbGVfbWVz
c2FnZShzZXJ2ZXJfaW5wdXQsIHNlcnZlcl9idWYpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c2VydmVyLnN0YXRlLCBTdGF0ZS5TRVJWRVJfRVhQRUNUX0ZJTklTSEVEKQotICAgICAgICBjbGll
bnRfaW5wdXQgPSBtZXJnZV9idWZmZXJzKHNlcnZlcl9idWYpCi0gICAgICAgIHJlc2V0X2J1ZmZl
cnMoc2VydmVyX2J1ZikKLQotICAgICAgICAjIG1lc3Mgd2l0aCBmaW5pc2hlZCB2ZXJpZnkgZGF0
YQotICAgICAgICBjbGllbnRfaW5wdXQgPSBjbGllbnRfaW5wdXRbOi00XSArIGJ5dGVzKDQpCi0K
LSAgICAgICAgIyBoYW5kbGUgc2VydmVyIGhlbGxvLCBlbmNyeXB0ZWQgZXh0ZW5zaW9ucywgY2Vy
dGlmaWNhdGUsIGNlcnRpZmljYXRlIHZlcmlmeSwgZmluaXNoZWQKLSAgICAgICAgd2l0aCBzZWxm
LmFzc2VydFJhaXNlcyh0bHMuQWxlcnREZWNyeXB0RXJyb3IpOgotICAgICAgICAgICAgY2xpZW50
LmhhbmRsZV9tZXNzYWdlKGNsaWVudF9pbnB1dCwgY2xpZW50X2J1ZikKLQotICAgIGRlZiB0ZXN0
X3NlcnZlcl91bmV4cGVjdGVkX21lc3NhZ2Uoc2VsZik6Ci0gICAgICAgIHNlcnZlciA9IHNlbGYu
Y3JlYXRlX3NlcnZlcigpCi0KLSAgICAgICAgc2VydmVyLnN0YXRlID0gU3RhdGUuU0VSVkVSX0VY
UEVDVF9DTElFTlRfSEVMTE8KLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh0bHMuQWxl
cnRVbmV4cGVjdGVkTWVzc2FnZSk6Ci0gICAgICAgICAgICBzZXJ2ZXIuaGFuZGxlX21lc3NhZ2Uo
YiJceDAwXHgwMFx4MDBceDAwIiwgY3JlYXRlX2J1ZmZlcnMoKSkKLQotICAgICAgICBzZXJ2ZXIu
c3RhdGUgPSBTdGF0ZS5TRVJWRVJfRVhQRUNUX0ZJTklTSEVECi0gICAgICAgIHdpdGggc2VsZi5h
c3NlcnRSYWlzZXModGxzLkFsZXJ0VW5leHBlY3RlZE1lc3NhZ2UpOgotICAgICAgICAgICAgc2Vy
dmVyLmhhbmRsZV9tZXNzYWdlKGIiXHgwMFx4MDBceDAwXHgwMCIsIGNyZWF0ZV9idWZmZXJzKCkp
Ci0KLSAgICAgICAgc2VydmVyLnN0YXRlID0gU3RhdGUuU0VSVkVSX1BPU1RfSEFORFNIQUtFCi0g
ICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXModGxzLkFsZXJ0VW5leHBlY3RlZE1lc3NhZ2Up
OgotICAgICAgICAgICAgc2VydmVyLmhhbmRsZV9tZXNzYWdlKGIiXHgwMFx4MDBceDAwXHgwMCIs
IGNyZWF0ZV9idWZmZXJzKCkpCi0KLSAgICBkZWYgX3NlcnZlcl9mYWlsX2hlbGxvKHNlbGYsIGNs
aWVudCwgc2VydmVyKToKLSAgICAgICAgIyBzZW5kIGNsaWVudCBoZWxsbwotICAgICAgICBjbGll
bnRfYnVmID0gY3JlYXRlX2J1ZmZlcnMoKQotICAgICAgICBjbGllbnQuaGFuZGxlX21lc3NhZ2Uo
YiIiLCBjbGllbnRfYnVmKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5zdGF0ZSwg
U3RhdGUuQ0xJRU5UX0VYUEVDVF9TRVJWRVJfSEVMTE8pCi0gICAgICAgIHNlcnZlcl9pbnB1dCA9
IG1lcmdlX2J1ZmZlcnMoY2xpZW50X2J1ZikKLSAgICAgICAgcmVzZXRfYnVmZmVycyhjbGllbnRf
YnVmKQotCi0gICAgICAgICMgaGFuZGxlIGNsaWVudCBoZWxsbwotICAgICAgICBzZXJ2ZXJfYnVm
ID0gY3JlYXRlX2J1ZmZlcnMoKQotICAgICAgICBzZXJ2ZXIuaGFuZGxlX21lc3NhZ2Uoc2VydmVy
X2lucHV0LCBzZXJ2ZXJfYnVmKQotCi0gICAgZGVmIHRlc3Rfc2VydmVyX3Vuc3VwcG9ydGVkX2Np
cGhlcl9zdWl0ZShzZWxmKToKLSAgICAgICAgY2xpZW50ID0gc2VsZi5jcmVhdGVfY2xpZW50KCkK
LSAgICAgICAgY2xpZW50Ll9jaXBoZXJfc3VpdGVzID0gW3Rscy5DaXBoZXJTdWl0ZS5BRVNfMTI4
X0dDTV9TSEEyNTZdCi0KLSAgICAgICAgc2VydmVyID0gc2VsZi5jcmVhdGVfc2VydmVyKCkKLSAg
ICAgICAgc2VydmVyLl9jaXBoZXJfc3VpdGVzID0gW3Rscy5DaXBoZXJTdWl0ZS5BRVNfMjU2X0dD
TV9TSEEzODRdCi0KLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh0bHMuQWxlcnRIYW5k
c2hha2VGYWlsdXJlKSBhcyBjbToKLSAgICAgICAgICAgIHNlbGYuX3NlcnZlcl9mYWlsX2hlbGxv
KGNsaWVudCwgc2VydmVyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRp
b24pLCAiTm8gc3VwcG9ydGVkIGNpcGhlciBzdWl0ZSIpCi0KLSAgICBkZWYgdGVzdF9zZXJ2ZXJf
dW5zdXBwb3J0ZWRfc2lnbmF0dXJlX2FsZ29yaXRobShzZWxmKToKLSAgICAgICAgY2xpZW50ID0g
c2VsZi5jcmVhdGVfY2xpZW50KCkKLSAgICAgICAgY2xpZW50Ll9zaWduYXR1cmVfYWxnb3JpdGht
cyA9IFt0bHMuU2lnbmF0dXJlQWxnb3JpdGhtLkVENDQ4XQotCi0gICAgICAgIHNlcnZlciA9IHNl
bGYuY3JlYXRlX3NlcnZlcigpCi0KLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh0bHMu
QWxlcnRIYW5kc2hha2VGYWlsdXJlKSBhcyBjbToKLSAgICAgICAgICAgIHNlbGYuX3NlcnZlcl9m
YWlsX2hlbGxvKGNsaWVudCwgc2VydmVyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihj
bS5leGNlcHRpb24pLCAiTm8gc3VwcG9ydGVkIHNpZ25hdHVyZSBhbGdvcml0aG0iKQotCi0gICAg
ZGVmIHRlc3Rfc2VydmVyX3Vuc3VwcG9ydGVkX3ZlcnNpb24oc2VsZik6Ci0gICAgICAgIGNsaWVu
dCA9IHNlbGYuY3JlYXRlX2NsaWVudCgpCi0gICAgICAgIGNsaWVudC5fc3VwcG9ydGVkX3ZlcnNp
b25zID0gW3Rscy5UTFNfVkVSU0lPTl8xXzJdCi0KLSAgICAgICAgc2VydmVyID0gc2VsZi5jcmVh
dGVfc2VydmVyKCkKLQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHRscy5BbGVydFBy
b3RvY29sVmVyc2lvbikgYXMgY206Ci0gICAgICAgICAgICBzZWxmLl9zZXJ2ZXJfZmFpbF9oZWxs
byhjbGllbnQsIHNlcnZlcikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0
aW9uKSwgIk5vIHN1cHBvcnRlZCBwcm90b2NvbCB2ZXJzaW9uIikKLQotICAgIGRlZiB0ZXN0X3Nl
cnZlcl9iYWRfZmluaXNoZWRfdmVyaWZ5X2RhdGEoc2VsZik6Ci0gICAgICAgIGNsaWVudCA9IHNl
bGYuY3JlYXRlX2NsaWVudCgpCi0gICAgICAgIHNlcnZlciA9IHNlbGYuY3JlYXRlX3NlcnZlcigp
Ci0KLSAgICAgICAgIyBzZW5kIGNsaWVudCBoZWxsbwotICAgICAgICBjbGllbnRfYnVmID0gY3Jl
YXRlX2J1ZmZlcnMoKQotICAgICAgICBjbGllbnQuaGFuZGxlX21lc3NhZ2UoYiIiLCBjbGllbnRf
YnVmKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5zdGF0ZSwgU3RhdGUuQ0xJRU5U
X0VYUEVDVF9TRVJWRVJfSEVMTE8pCi0gICAgICAgIHNlcnZlcl9pbnB1dCA9IG1lcmdlX2J1ZmZl
cnMoY2xpZW50X2J1ZikKLSAgICAgICAgcmVzZXRfYnVmZmVycyhjbGllbnRfYnVmKQotCi0gICAg
ICAgICMgaGFuZGxlIGNsaWVudCBoZWxsbwotICAgICAgICAjIHNlbmQgc2VydmVyIGhlbGxvLCBl
bmNyeXB0ZWQgZXh0ZW5zaW9ucywgY2VydGlmaWNhdGUsIGNlcnRpZmljYXRlIHZlcmlmeSwgZmlu
aXNoZWQKLSAgICAgICAgc2VydmVyX2J1ZiA9IGNyZWF0ZV9idWZmZXJzKCkKLSAgICAgICAgc2Vy
dmVyLmhhbmRsZV9tZXNzYWdlKHNlcnZlcl9pbnB1dCwgc2VydmVyX2J1ZikKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzZXJ2ZXIuc3RhdGUsIFN0YXRlLlNFUlZFUl9FWFBFQ1RfRklOSVNIRUQp
Ci0gICAgICAgIGNsaWVudF9pbnB1dCA9IG1lcmdlX2J1ZmZlcnMoc2VydmVyX2J1ZikKLSAgICAg
ICAgcmVzZXRfYnVmZmVycyhzZXJ2ZXJfYnVmKQotCi0gICAgICAgICMgaGFuZGxlIHNlcnZlciBo
ZWxsbywgZW5jcnlwdGVkIGV4dGVuc2lvbnMsIGNlcnRpZmljYXRlLCBjZXJ0aWZpY2F0ZSB2ZXJp
ZnksIGZpbmlzaGVkCi0gICAgICAgICMgc2VuZCBmaW5pc2hlZAotICAgICAgICBjbGllbnQuaGFu
ZGxlX21lc3NhZ2UoY2xpZW50X2lucHV0LCBjbGllbnRfYnVmKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGNsaWVudC5zdGF0ZSwgU3RhdGUuQ0xJRU5UX1BPU1RfSEFORFNIQUtFKQotICAgICAg
ICBzZXJ2ZXJfaW5wdXQgPSBtZXJnZV9idWZmZXJzKGNsaWVudF9idWYpCi0gICAgICAgIHJlc2V0
X2J1ZmZlcnMoY2xpZW50X2J1ZikKLQotICAgICAgICAjIG1lc3Mgd2l0aCBmaW5pc2hlZCB2ZXJp
ZnkgZGF0YQotICAgICAgICBzZXJ2ZXJfaW5wdXQgPSBzZXJ2ZXJfaW5wdXRbOi00XSArIGJ5dGVz
KDQpCi0KLSAgICAgICAgIyBoYW5kbGUgZmluaXNoZWQKLSAgICAgICAgd2l0aCBzZWxmLmFzc2Vy
dFJhaXNlcyh0bHMuQWxlcnREZWNyeXB0RXJyb3IpOgotICAgICAgICAgICAgc2VydmVyLmhhbmRs
ZV9tZXNzYWdlKHNlcnZlcl9pbnB1dCwgc2VydmVyX2J1ZikKLQotICAgIGRlZiBfaGFuZHNoYWtl
KHNlbGYsIGNsaWVudCwgc2VydmVyKToKLSAgICAgICAgIyBzZW5kIGNsaWVudCBoZWxsbwotICAg
ICAgICBjbGllbnRfYnVmID0gY3JlYXRlX2J1ZmZlcnMoKQotICAgICAgICBjbGllbnQuaGFuZGxl
X21lc3NhZ2UoYiIiLCBjbGllbnRfYnVmKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVu
dC5zdGF0ZSwgU3RhdGUuQ0xJRU5UX0VYUEVDVF9TRVJWRVJfSEVMTE8pCi0gICAgICAgIHNlcnZl
cl9pbnB1dCA9IG1lcmdlX2J1ZmZlcnMoY2xpZW50X2J1ZikKLSAgICAgICAgc2VsZi5hc3NlcnRH
cmVhdGVyRXF1YWwobGVuKHNlcnZlcl9pbnB1dCksIDE4MSkKLSAgICAgICAgc2VsZi5hc3NlcnRM
ZXNzRXF1YWwobGVuKHNlcnZlcl9pbnB1dCksIDM1OCkKLSAgICAgICAgcmVzZXRfYnVmZmVycyhj
bGllbnRfYnVmKQotCi0gICAgICAgICMgaGFuZGxlIGNsaWVudCBoZWxsbwotICAgICAgICAjIHNl
bmQgc2VydmVyIGhlbGxvLCBlbmNyeXB0ZWQgZXh0ZW5zaW9ucywgY2VydGlmaWNhdGUsIGNlcnRp
ZmljYXRlIHZlcmlmeSwgZmluaXNoZWQsIChzZXNzaW9uIHRpY2tldCkKLSAgICAgICAgc2VydmVy
X2J1ZiA9IGNyZWF0ZV9idWZmZXJzKCkKLSAgICAgICAgc2VydmVyLmhhbmRsZV9tZXNzYWdlKHNl
cnZlcl9pbnB1dCwgc2VydmVyX2J1ZikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXIu
c3RhdGUsIFN0YXRlLlNFUlZFUl9FWFBFQ1RfRklOSVNIRUQpCi0gICAgICAgIGNsaWVudF9pbnB1
dCA9IG1lcmdlX2J1ZmZlcnMoc2VydmVyX2J1ZikKLSAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVy
RXF1YWwobGVuKGNsaWVudF9pbnB1dCksIDYwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1
YWwobGVuKGNsaWVudF9pbnB1dCksIDIzMTYpCi0KLSAgICAgICAgcmVzZXRfYnVmZmVycyhzZXJ2
ZXJfYnVmKQotCi0gICAgICAgICMgaGFuZGxlIHNlcnZlciBoZWxsbywgZW5jcnlwdGVkIGV4dGVu
c2lvbnMsIGNlcnRpZmljYXRlLCBjZXJ0aWZpY2F0ZSB2ZXJpZnksIGZpbmlzaGVkLCAoc2Vzc2lv
biB0aWNrZXQpCi0gICAgICAgICMgc2VuZCBmaW5pc2hlZAotICAgICAgICBjbGllbnQuaGFuZGxl
X21lc3NhZ2UoY2xpZW50X2lucHV0LCBjbGllbnRfYnVmKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGNsaWVudC5zdGF0ZSwgU3RhdGUuQ0xJRU5UX1BPU1RfSEFORFNIQUtFKQotICAgICAgICBz
ZXJ2ZXJfaW5wdXQgPSBtZXJnZV9idWZmZXJzKGNsaWVudF9idWYpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobGVuKHNlcnZlcl9pbnB1dCksIDUyKQotICAgICAgICByZXNldF9idWZmZXJzKGNs
aWVudF9idWYpCi0KLSAgICAgICAgIyBoYW5kbGUgZmluaXNoZWQKLSAgICAgICAgc2VydmVyLmhh
bmRsZV9tZXNzYWdlKHNlcnZlcl9pbnB1dCwgc2VydmVyX2J1ZikKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChzZXJ2ZXIuc3RhdGUsIFN0YXRlLlNFUlZFUl9QT1NUX0hBTkRTSEFLRSkKLSAgICAg
ICAgY2xpZW50X2lucHV0ID0gbWVyZ2VfYnVmZmVycyhzZXJ2ZXJfYnVmKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGxlbihjbGllbnRfaW5wdXQpLCAwKQotCi0gICAgICAgICMgY2hlY2sga2V5
cyBtYXRjaAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5fZGVjX2tleSwgc2VydmVy
Ll9lbmNfa2V5KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5fZW5jX2tleSwgc2Vy
dmVyLl9kZWNfa2V5KQotCi0gICAgICAgICMgY2hlY2sgY2lwaGVyIHN1aXRlCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBjbGllbnQua2V5X3NjaGVkdWxlLmNpcGhlcl9z
dWl0ZSwgdGxzLkNpcGhlclN1aXRlLkFFU18yNTZfR0NNX1NIQTM4NAotICAgICAgICApCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBzZXJ2ZXIua2V5X3NjaGVkdWxlLmNp
cGhlcl9zdWl0ZSwgdGxzLkNpcGhlclN1aXRlLkFFU18yNTZfR0NNX1NIQTM4NAotICAgICAgICAp
Ci0KLSAgICBkZWYgdGVzdF9oYW5kc2hha2Uoc2VsZik6Ci0gICAgICAgIGNsaWVudCA9IHNlbGYu
Y3JlYXRlX2NsaWVudCgpCi0gICAgICAgIHNlcnZlciA9IHNlbGYuY3JlYXRlX3NlcnZlcigpCi0K
LSAgICAgICAgc2VsZi5faGFuZHNoYWtlKGNsaWVudCwgc2VydmVyKQotCi0gICAgICAgICMgY2hl
Y2sgQUxQTiBtYXRjaGVzCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50LmFscG5fbmVn
b3RpYXRlZCwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXIuYWxwbl9uZWdv
dGlhdGVkLCBOb25lKQotCi0gICAgZGVmIHRlc3RfaGFuZHNoYWtlX2VjZHNhX3NlY3AyNTZyMShz
ZWxmKToKLSAgICAgICAgc2VydmVyID0gc2VsZi5jcmVhdGVfc2VydmVyKCkKLSAgICAgICAgc2Vy
dmVyLmNlcnRpZmljYXRlLCBzZXJ2ZXIuY2VydGlmaWNhdGVfcHJpdmF0ZV9rZXkgPSBnZW5lcmF0
ZV9lY19jZXJ0aWZpY2F0ZSgKLSAgICAgICAgICAgIGNvbW1vbl9uYW1lPSJleGFtcGxlLmNvbSIs
IGN1cnZlPWVjLlNFQ1AyNTZSMQotICAgICAgICApCi0KLSAgICAgICAgY2xpZW50ID0gc2VsZi5j
cmVhdGVfY2xpZW50KAotICAgICAgICAgICAgY2FkYXRhPXNlcnZlci5jZXJ0aWZpY2F0ZS5wdWJs
aWNfYnl0ZXMoc2VyaWFsaXphdGlvbi5FbmNvZGluZy5QRU0pLAotICAgICAgICAgICAgY2FmaWxl
PU5vbmUsCi0gICAgICAgICkKLQotICAgICAgICBzZWxmLl9oYW5kc2hha2UoY2xpZW50LCBzZXJ2
ZXIpCi0KLSAgICAgICAgIyBjaGVjayBBTFBOIG1hdGNoZXMKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChjbGllbnQuYWxwbl9uZWdvdGlhdGVkLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHNlcnZlci5hbHBuX25lZ290aWF0ZWQsIE5vbmUpCi0KLSAgICBkZWYgdGVzdF9oYW5kc2hh
a2Vfd2l0aF9hbHBuKHNlbGYpOgotICAgICAgICBjbGllbnQgPSBzZWxmLmNyZWF0ZV9jbGllbnQo
YWxwbl9wcm90b2NvbHM9WyJocS0yMCJdKQotICAgICAgICBzZXJ2ZXIgPSBzZWxmLmNyZWF0ZV9z
ZXJ2ZXIoYWxwbl9wcm90b2NvbHM9WyJocS0yMCIsICJoMy0yMCJdKQotCi0gICAgICAgIHNlbGYu
X2hhbmRzaGFrZShjbGllbnQsIHNlcnZlcikKLQotICAgICAgICAjIGNoZWNrIEFMUE4gbWF0Y2hl
cwotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5hbHBuX25lZ290aWF0ZWQsICJocS0y
MCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLmFscG5fbmVnb3RpYXRlZCwgImhx
LTIwIikKLQotICAgIGRlZiB0ZXN0X2hhbmRzaGFrZV93aXRoX2FscG5fZmFpbChzZWxmKToKLSAg
ICAgICAgY2xpZW50ID0gc2VsZi5jcmVhdGVfY2xpZW50KGFscG5fcHJvdG9jb2xzPVsiaHEtMjAi
XSkKLSAgICAgICAgc2VydmVyID0gc2VsZi5jcmVhdGVfc2VydmVyKGFscG5fcHJvdG9jb2xzPVsi
aDMtMjAiXSkKLQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHRscy5BbGVydEhhbmRz
aGFrZUZhaWx1cmUpIGFzIGNtOgotICAgICAgICAgICAgc2VsZi5faGFuZHNoYWtlKGNsaWVudCwg
c2VydmVyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLCAiTm8g
Y29tbW9uIEFMUE4gcHJvdG9jb2xzIikKLQotICAgIGRlZiB0ZXN0X2hhbmRzaGFrZV93aXRoX3Jz
YV9wa2NzMV9zaGEyNTZfc2lnbmF0dXJlKHNlbGYpOgotICAgICAgICBjbGllbnQgPSBzZWxmLmNy
ZWF0ZV9jbGllbnQoKQotICAgICAgICBjbGllbnQuX3NpZ25hdHVyZV9hbGdvcml0aG1zID0gW3Rs
cy5TaWduYXR1cmVBbGdvcml0aG0uUlNBX1BLQ1MxX1NIQTI1Nl0KLSAgICAgICAgc2VydmVyID0g
c2VsZi5jcmVhdGVfc2VydmVyKCkKLQotICAgICAgICBzZWxmLl9oYW5kc2hha2UoY2xpZW50LCBz
ZXJ2ZXIpCi0KLSAgICBkZWYgdGVzdF9oYW5kc2hha2Vfd2l0aF9jZXJ0aWZpY2F0ZV9lcnJvcihz
ZWxmKToKLSAgICAgICAgY2xpZW50ID0gc2VsZi5jcmVhdGVfY2xpZW50KGNhZmlsZT1Ob25lKQot
ICAgICAgICBzZXJ2ZXIgPSBzZWxmLmNyZWF0ZV9zZXJ2ZXIoKQotCi0gICAgICAgIHdpdGggc2Vs
Zi5hc3NlcnRSYWlzZXModGxzLkFsZXJ0QmFkQ2VydGlmaWNhdGUpIGFzIGNtOgotICAgICAgICAg
ICAgc2VsZi5faGFuZHNoYWtlKGNsaWVudCwgc2VydmVyKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHN0cihjbS5leGNlcHRpb24pLCAidW5hYmxlIHRvIGdldCBsb2NhbCBpc3N1ZXIgY2VydGlm
aWNhdGUiKQotCi0gICAgZGVmIHRlc3RfaGFuZHNoYWtlX3dpdGhfY2VydGlmaWNhdGVfbm9fdmVy
aWZ5KHNlbGYpOgotICAgICAgICBjbGllbnQgPSBzZWxmLmNyZWF0ZV9jbGllbnQoY2FmaWxlPU5v
bmUsIHZlcmlmeV9tb2RlPXNzbC5DRVJUX05PTkUpCi0gICAgICAgIHNlcnZlciA9IHNlbGYuY3Jl
YXRlX3NlcnZlcigpCi0KLSAgICAgICAgc2VsZi5faGFuZHNoYWtlKGNsaWVudCwgc2VydmVyKQot
Ci0gICAgZGVmIHRlc3RfaGFuZHNoYWtlX3dpdGhfZ3JlYXNlX2dyb3VwKHNlbGYpOgotICAgICAg
ICBjbGllbnQgPSBzZWxmLmNyZWF0ZV9jbGllbnQoKQotICAgICAgICBjbGllbnQuX3N1cHBvcnRl
ZF9ncm91cHMgPSBbdGxzLkdyb3VwLkdSRUFTRSwgdGxzLkdyb3VwLlNFQ1AyNTZSMV0KLSAgICAg
ICAgc2VydmVyID0gc2VsZi5jcmVhdGVfc2VydmVyKCkKLQotICAgICAgICBzZWxmLl9oYW5kc2hh
a2UoY2xpZW50LCBzZXJ2ZXIpCi0KLSAgICBkZWYgdGVzdF9oYW5kc2hha2Vfd2l0aF94MjU1MTko
c2VsZik6Ci0gICAgICAgIGNsaWVudCA9IHNlbGYuY3JlYXRlX2NsaWVudCgpCi0gICAgICAgIGNs
aWVudC5fc3VwcG9ydGVkX2dyb3VwcyA9IFt0bHMuR3JvdXAuWDI1NTE5XQotICAgICAgICBzZXJ2
ZXIgPSBzZWxmLmNyZWF0ZV9zZXJ2ZXIoKQotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNl
bGYuX2hhbmRzaGFrZShjbGllbnQsIHNlcnZlcikKLSAgICAgICAgZXhjZXB0IFVuc3VwcG9ydGVk
QWxnb3JpdGhtIGFzIGV4YzoKLSAgICAgICAgICAgIHNlbGYuc2tpcFRlc3Qoc3RyKGV4YykpCi0K
LSAgICBkZWYgdGVzdF9oYW5kc2hha2Vfd2l0aF94NDQ4KHNlbGYpOgotICAgICAgICBjbGllbnQg
PSBzZWxmLmNyZWF0ZV9jbGllbnQoKQotICAgICAgICBjbGllbnQuX3N1cHBvcnRlZF9ncm91cHMg
PSBbdGxzLkdyb3VwLlg0NDhdCi0gICAgICAgIHNlcnZlciA9IHNlbGYuY3JlYXRlX3NlcnZlcigp
Ci0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5faGFuZHNoYWtlKGNsaWVudCwgc2Vy
dmVyKQotICAgICAgICBleGNlcHQgVW5zdXBwb3J0ZWRBbGdvcml0aG0gYXMgZXhjOgotICAgICAg
ICAgICAgc2VsZi5za2lwVGVzdChzdHIoZXhjKSkKLQotICAgIGRlZiB0ZXN0X3Nlc3Npb25fdGlj
a2V0KHNlbGYpOgotICAgICAgICBjbGllbnRfdGlja2V0cyA9IFtdCi0gICAgICAgIHNlcnZlcl90
aWNrZXRzID0gW10KLQotICAgICAgICBkZWYgY2xpZW50X25ld190aWNrZXQodGlja2V0KToKLSAg
ICAgICAgICAgIGNsaWVudF90aWNrZXRzLmFwcGVuZCh0aWNrZXQpCi0KLSAgICAgICAgZGVmIHNl
cnZlcl9nZXRfdGlja2V0KGxhYmVsKToKLSAgICAgICAgICAgIGZvciB0IGluIHNlcnZlcl90aWNr
ZXRzOgotICAgICAgICAgICAgICAgIGlmIHQudGlja2V0ID09IGxhYmVsOgotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdAotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICBkZWYg
c2VydmVyX25ld190aWNrZXQodGlja2V0KToKLSAgICAgICAgICAgIHNlcnZlcl90aWNrZXRzLmFw
cGVuZCh0aWNrZXQpCi0KLSAgICAgICAgZGVmIGZpcnN0X2hhbmRzaGFrZSgpOgotICAgICAgICAg
ICAgY2xpZW50ID0gc2VsZi5jcmVhdGVfY2xpZW50KCkKLSAgICAgICAgICAgIGNsaWVudC5uZXdf
c2Vzc2lvbl90aWNrZXRfY2IgPSBjbGllbnRfbmV3X3RpY2tldAotCi0gICAgICAgICAgICBzZXJ2
ZXIgPSBzZWxmLmNyZWF0ZV9zZXJ2ZXIoKQotICAgICAgICAgICAgc2VydmVyLm5ld19zZXNzaW9u
X3RpY2tldF9jYiA9IHNlcnZlcl9uZXdfdGlja2V0Ci0KLSAgICAgICAgICAgIHNlbGYuX2hhbmRz
aGFrZShjbGllbnQsIHNlcnZlcikKLQotICAgICAgICAgICAgIyBjaGVjayBzZXNzaW9uIHJlc3Vt
cHRpb24gd2FzIG5vdCB1c2VkCi0gICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNsaWVudC5z
ZXNzaW9uX3Jlc3VtZWQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlcnZlci5zZXNz
aW9uX3Jlc3VtZWQpCi0KLSAgICAgICAgICAgICMgY2hlY2sgdGlja2V0cyBtYXRjaAotICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY2xpZW50X3RpY2tldHMpLCAxKQotICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VydmVyX3RpY2tldHMpLCAxKQotICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjbGllbnRfdGlja2V0c1swXS50aWNrZXQsIHNlcnZlcl90aWNrZXRz
WzBdLnRpY2tldCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICAg
ICAgY2xpZW50X3RpY2tldHNbMF0ucmVzdW1wdGlvbl9zZWNyZXQsIHNlcnZlcl90aWNrZXRzWzBd
LnJlc3VtcHRpb25fc2VjcmV0Ci0gICAgICAgICAgICApCi0KLSAgICAgICAgZGVmIHNlY29uZF9o
YW5kc2hha2UoKToKLSAgICAgICAgICAgIGNsaWVudCA9IHNlbGYuY3JlYXRlX2NsaWVudCgpCi0g
ICAgICAgICAgICBjbGllbnQuc2Vzc2lvbl90aWNrZXQgPSBjbGllbnRfdGlja2V0c1swXQotCi0g
ICAgICAgICAgICBzZXJ2ZXIgPSBzZWxmLmNyZWF0ZV9zZXJ2ZXIoKQotICAgICAgICAgICAgc2Vy
dmVyLmdldF9zZXNzaW9uX3RpY2tldF9jYiA9IHNlcnZlcl9nZXRfdGlja2V0Ci0KLSAgICAgICAg
ICAgICMgc2VuZCBjbGllbnQgaGVsbG8gd2l0aCBwcmVfc2hhcmVkX2tleQotICAgICAgICAgICAg
Y2xpZW50X2J1ZiA9IGNyZWF0ZV9idWZmZXJzKCkKLSAgICAgICAgICAgIGNsaWVudC5oYW5kbGVf
bWVzc2FnZShiIiIsIGNsaWVudF9idWYpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNs
aWVudC5zdGF0ZSwgU3RhdGUuQ0xJRU5UX0VYUEVDVF9TRVJWRVJfSEVMTE8pCi0gICAgICAgICAg
ICBzZXJ2ZXJfaW5wdXQgPSBtZXJnZV9idWZmZXJzKGNsaWVudF9idWYpCi0gICAgICAgICAgICBz
ZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChsZW4oc2VydmVyX2lucHV0KSwgMzgzKQotICAgICAgICAg
ICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwobGVuKHNlcnZlcl9pbnB1dCksIDQ4MykKLSAgICAgICAg
ICAgIHJlc2V0X2J1ZmZlcnMoY2xpZW50X2J1ZikKLQotICAgICAgICAgICAgIyBoYW5kbGUgY2xp
ZW50IGhlbGxvCi0gICAgICAgICAgICAjIHNlbmQgc2VydmVyIGhlbGxvLCBlbmNyeXB0ZWQgZXh0
ZW5zaW9ucywgZmluaXNoZWQKLSAgICAgICAgICAgIHNlcnZlcl9idWYgPSBjcmVhdGVfYnVmZmVy
cygpCi0gICAgICAgICAgICBzZXJ2ZXIuaGFuZGxlX21lc3NhZ2Uoc2VydmVyX2lucHV0LCBzZXJ2
ZXJfYnVmKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXIuc3RhdGUsIFN0YXRl
LlNFUlZFUl9FWFBFQ1RfRklOSVNIRUQpCi0gICAgICAgICAgICBjbGllbnRfaW5wdXQgPSBtZXJn
ZV9idWZmZXJzKHNlcnZlcl9idWYpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihj
bGllbnRfaW5wdXQpLCAyNzUpCi0gICAgICAgICAgICByZXNldF9idWZmZXJzKHNlcnZlcl9idWYp
Ci0KLSAgICAgICAgICAgICMgaGFuZGxlIHNlcnZlciBoZWxsbywgZW5jcnlwdGVkIGV4dGVuc2lv
bnMsIGNlcnRpZmljYXRlLCBjZXJ0aWZpY2F0ZSB2ZXJpZnksIGZpbmlzaGVkCi0gICAgICAgICAg
ICAjIHNlbmQgZmluaXNoZWQKLSAgICAgICAgICAgIGNsaWVudC5oYW5kbGVfbWVzc2FnZShjbGll
bnRfaW5wdXQsIGNsaWVudF9idWYpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVu
dC5zdGF0ZSwgU3RhdGUuQ0xJRU5UX1BPU1RfSEFORFNIQUtFKQotICAgICAgICAgICAgc2VydmVy
X2lucHV0ID0gbWVyZ2VfYnVmZmVycyhjbGllbnRfYnVmKQotICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChsZW4oc2VydmVyX2lucHV0KSwgNTIpCi0gICAgICAgICAgICByZXNldF9idWZmZXJz
KGNsaWVudF9idWYpCi0KLSAgICAgICAgICAgICMgaGFuZGxlIGZpbmlzaGVkCi0gICAgICAgICAg
ICAjIHNlbmQgbmV3X3Nlc3Npb25fdGlja2V0Ci0gICAgICAgICAgICBzZXJ2ZXIuaGFuZGxlX21l
c3NhZ2Uoc2VydmVyX2lucHV0LCBzZXJ2ZXJfYnVmKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChzZXJ2ZXIuc3RhdGUsIFN0YXRlLlNFUlZFUl9QT1NUX0hBTkRTSEFLRSkKLSAgICAgICAg
ICAgIGNsaWVudF9pbnB1dCA9IG1lcmdlX2J1ZmZlcnMoc2VydmVyX2J1ZikKLSAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNsaWVudF9pbnB1dCksIDApCi0gICAgICAgICAgICByZXNl
dF9idWZmZXJzKHNlcnZlcl9idWYpCi0KLSAgICAgICAgICAgICMgY2hlY2sga2V5cyBtYXRjaAot
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuX2RlY19rZXksIHNlcnZlci5fZW5j
X2tleSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50Ll9lbmNfa2V5LCBzZXJ2
ZXIuX2RlY19rZXkpCi0KLSAgICAgICAgICAgICMgY2hlY2sgc2Vzc2lvbiByZXN1bXB0aW9uIHdh
cyB1c2VkCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2xpZW50LnNlc3Npb25fcmVzdW1l
ZCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXJ2ZXIuc2Vzc2lvbl9yZXN1bWVkKQot
Ci0gICAgICAgIGRlZiBzZWNvbmRfaGFuZHNoYWtlX2JhZF9iaW5kZXIoKToKLSAgICAgICAgICAg
IGNsaWVudCA9IHNlbGYuY3JlYXRlX2NsaWVudCgpCi0gICAgICAgICAgICBjbGllbnQuc2Vzc2lv
bl90aWNrZXQgPSBjbGllbnRfdGlja2V0c1swXQotCi0gICAgICAgICAgICBzZXJ2ZXIgPSBzZWxm
LmNyZWF0ZV9zZXJ2ZXIoKQotICAgICAgICAgICAgc2VydmVyLmdldF9zZXNzaW9uX3RpY2tldF9j
YiA9IHNlcnZlcl9nZXRfdGlja2V0Ci0KLSAgICAgICAgICAgICMgc2VuZCBjbGllbnQgaGVsbG8g
d2l0aCBwcmVfc2hhcmVkX2tleQotICAgICAgICAgICAgY2xpZW50X2J1ZiA9IGNyZWF0ZV9idWZm
ZXJzKCkKLSAgICAgICAgICAgIGNsaWVudC5oYW5kbGVfbWVzc2FnZShiIiIsIGNsaWVudF9idWYp
Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5zdGF0ZSwgU3RhdGUuQ0xJRU5U
X0VYUEVDVF9TRVJWRVJfSEVMTE8pCi0gICAgICAgICAgICBzZXJ2ZXJfaW5wdXQgPSBtZXJnZV9i
dWZmZXJzKGNsaWVudF9idWYpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChs
ZW4oc2VydmVyX2lucHV0KSwgMzgzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwo
bGVuKHNlcnZlcl9pbnB1dCksIDQ4MykKLSAgICAgICAgICAgIHJlc2V0X2J1ZmZlcnMoY2xpZW50
X2J1ZikKLQotICAgICAgICAgICAgIyB0YW1wZXIgd2l0aCBiaW5kZXIKLSAgICAgICAgICAgIHNl
cnZlcl9pbnB1dCA9IHNlcnZlcl9pbnB1dFs6LTRdICsgYnl0ZXMoNCkKLQotICAgICAgICAgICAg
IyBoYW5kbGUgY2xpZW50IGhlbGxvCi0gICAgICAgICAgICAjIHNlbmQgc2VydmVyIGhlbGxvLCBl
bmNyeXB0ZWQgZXh0ZW5zaW9ucywgZmluaXNoZWQKLSAgICAgICAgICAgIHNlcnZlcl9idWYgPSBj
cmVhdGVfYnVmZmVycygpCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHRscy5B
bGVydEhhbmRzaGFrZUZhaWx1cmUpIGFzIGNtOgotICAgICAgICAgICAgICAgIHNlcnZlci5oYW5k
bGVfbWVzc2FnZShzZXJ2ZXJfaW5wdXQsIHNlcnZlcl9idWYpCi0gICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLCAiUFNLIHZhbGlkYXRpb24gZmFpbGVkIikKLQot
ICAgICAgICBkZWYgc2Vjb25kX2hhbmRzaGFrZV9iYWRfcHJlX3NoYXJlZF9rZXkoKToKLSAgICAg
ICAgICAgIGNsaWVudCA9IHNlbGYuY3JlYXRlX2NsaWVudCgpCi0gICAgICAgICAgICBjbGllbnQu
c2Vzc2lvbl90aWNrZXQgPSBjbGllbnRfdGlja2V0c1swXQotCi0gICAgICAgICAgICBzZXJ2ZXIg
PSBzZWxmLmNyZWF0ZV9zZXJ2ZXIoKQotICAgICAgICAgICAgc2VydmVyLmdldF9zZXNzaW9uX3Rp
Y2tldF9jYiA9IHNlcnZlcl9nZXRfdGlja2V0Ci0KLSAgICAgICAgICAgICMgc2VuZCBjbGllbnQg
aGVsbG8gd2l0aCBwcmVfc2hhcmVkX2tleQotICAgICAgICAgICAgY2xpZW50X2J1ZiA9IGNyZWF0
ZV9idWZmZXJzKCkKLSAgICAgICAgICAgIGNsaWVudC5oYW5kbGVfbWVzc2FnZShiIiIsIGNsaWVu
dF9idWYpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5zdGF0ZSwgU3RhdGUu
Q0xJRU5UX0VYUEVDVF9TRVJWRVJfSEVMTE8pCi0gICAgICAgICAgICBzZXJ2ZXJfaW5wdXQgPSBt
ZXJnZV9idWZmZXJzKGNsaWVudF9idWYpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJF
cXVhbChsZW4oc2VydmVyX2lucHV0KSwgMzgzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNz
RXF1YWwobGVuKHNlcnZlcl9pbnB1dCksIDQ4MykKLSAgICAgICAgICAgIHJlc2V0X2J1ZmZlcnMo
Y2xpZW50X2J1ZikKLQotICAgICAgICAgICAgIyBoYW5kbGUgY2xpZW50IGhlbGxvCi0gICAgICAg
ICAgICAjIHNlbmQgc2VydmVyIGhlbGxvLCBlbmNyeXB0ZWQgZXh0ZW5zaW9ucywgZmluaXNoZWQK
LSAgICAgICAgICAgIHNlcnZlcl9idWYgPSBjcmVhdGVfYnVmZmVycygpCi0gICAgICAgICAgICBz
ZXJ2ZXIuaGFuZGxlX21lc3NhZ2Uoc2VydmVyX2lucHV0LCBzZXJ2ZXJfYnVmKQotICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXIuc3RhdGUsIFN0YXRlLlNFUlZFUl9FWFBFQ1RfRklO
SVNIRUQpCi0KLSAgICAgICAgICAgICMgdGFtcGVyIHdpdGggcHJlX3NoYXJlX2tleSBpbmRleAot
ICAgICAgICAgICAgYnVmID0gc2VydmVyX2J1Zlt0bHMuRXBvY2guSU5JVElBTF0KLSAgICAgICAg
ICAgIGJ1Zi5zZWVrKGJ1Zi50ZWxsKCkgLSAxKQotICAgICAgICAgICAgYnVmLnB1c2hfdWludDgo
MSkKLSAgICAgICAgICAgIGNsaWVudF9pbnB1dCA9IG1lcmdlX2J1ZmZlcnMoc2VydmVyX2J1ZikK
LSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNsaWVudF9pbnB1dCksIDI3NSkKLSAg
ICAgICAgICAgIHJlc2V0X2J1ZmZlcnMoc2VydmVyX2J1ZikKLQotICAgICAgICAgICAgIyBoYW5k
bGUgc2VydmVyIGhlbGxvIGFuZCBib21iCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFp
c2VzKHRscy5BbGVydElsbGVnYWxQYXJhbWV0ZXIpOgotICAgICAgICAgICAgICAgIGNsaWVudC5o
YW5kbGVfbWVzc2FnZShjbGllbnRfaW5wdXQsIGNsaWVudF9idWYpCi0KLSAgICAgICAgZmlyc3Rf
aGFuZHNoYWtlKCkKLSAgICAgICAgc2Vjb25kX2hhbmRzaGFrZSgpCi0gICAgICAgIHNlY29uZF9o
YW5kc2hha2VfYmFkX2JpbmRlcigpCi0gICAgICAgIHNlY29uZF9oYW5kc2hha2VfYmFkX3ByZV9z
aGFyZWRfa2V5KCkKLQotCi1jbGFzcyBUbHNUZXN0KFRlc3RDYXNlKToKLSAgICBkZWYgdGVzdF9w
dWxsX2NsaWVudF9oZWxsbyhzZWxmKToKLSAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9bG9hZCgi
dGxzX2NsaWVudF9oZWxsby5iaW4iKSkKLSAgICAgICAgaGVsbG8gPSBwdWxsX2NsaWVudF9oZWxs
byhidWYpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWYuZW9mKCkpCi0KLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGhlbGxvLnJhbmRvbSwKLSAgICAgICAgICAgIGJp
bmFzY2lpLnVuaGV4bGlmeSgKLSAgICAgICAgICAgICAgICAiMThiMmIyM2JmM2U0NGI1ZDUyY2Nm
ZTdhZWNiYzVmZjE0ZWFkYzNkMzQ5ZmFiZjgwNGQ3MWYxNjVhZTc2ZTdkNSIKLSAgICAgICAgICAg
ICksCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGhl
bGxvLmxlZ2FjeV9zZXNzaW9uX2lkLAotICAgICAgICAgICAgYmluYXNjaWkudW5oZXhsaWZ5KAot
ICAgICAgICAgICAgICAgICI5YWVlODJhMmQxODZjMWNiMzJhMzI5ZDlkY2ZlMDA0YTFhNDM4YWQw
NDg1YTUzYzZiZmNmNTVjMTMyYTIzMjM1IgotICAgICAgICAgICAgKSwKLSAgICAgICAgKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgaGVsbG8uY2lwaGVyX3N1aXRlcywK
LSAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICB0bHMuQ2lwaGVyU3VpdGUuQUVTXzI1Nl9H
Q01fU0hBMzg0LAotICAgICAgICAgICAgICAgIHRscy5DaXBoZXJTdWl0ZS5BRVNfMTI4X0dDTV9T
SEEyNTYsCi0gICAgICAgICAgICAgICAgdGxzLkNpcGhlclN1aXRlLkNIQUNIQTIwX1BPTFkxMzA1
X1NIQTI1NiwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChoZWxsby5sZWdhY3lfY29tcHJlc3Npb25fbWV0aG9kcywgW3Rscy5Db21wcmVzc2lvbk1l
dGhvZC5OVUxMXSkKLQotICAgICAgICAjIGV4dGVuc2lvbnMKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChoZWxsby5hbHBuX3Byb3RvY29scywgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgKLSAgICAgICAgICAgIGhlbGxvLmtleV9zaGFyZSwKLSAgICAgICAgICAgIFsKLSAgICAgICAg
ICAgICAgICAoCi0gICAgICAgICAgICAgICAgICAgIHRscy5Hcm91cC5TRUNQMjU2UjEsCi0gICAg
ICAgICAgICAgICAgICAgIGJpbmFzY2lpLnVuaGV4bGlmeSgKLSAgICAgICAgICAgICAgICAgICAg
ICAgICIwNDdiZmVhMzQ0NDY3NTM1MDU0MjYzYjc1ZGVmNjBjZmZhODI0MDVhMjExYjY4ZDFlYjhk
MWQ5NDRlNjdhZWY4IgotICAgICAgICAgICAgICAgICAgICAgICAgIjkzYzc2NjVhNTQ3M2QwMzJj
ZmFmMjJhNzNkYTI4ZWI0YWFjYWUwMDE3ZWQxMjU1N2I1NzkxZjk4YTFlODRmMTUiCi0gICAgICAg
ICAgICAgICAgICAgICAgICAiYjAiCi0gICAgICAgICAgICAgICAgICAgICksCi0gICAgICAgICAg
ICAgICAgKQotICAgICAgICAgICAgXSwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKAotICAgICAgICAgICAgaGVsbG8ucHNrX2tleV9leGNoYW5nZV9tb2RlcywgW3Rscy5Qc2tL
ZXlFeGNoYW5nZU1vZGUuUFNLX0RIRV9LRV0KLSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGhlbGxvLnNlcnZlcl9uYW1lLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KAotICAgICAgICAgICAgaGVsbG8uc2lnbmF0dXJlX2FsZ29yaXRobXMsCi0gICAgICAgICAgICBb
Ci0gICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5SU0FfUFNTX1JTQUVfU0hB
MjU2LAotICAgICAgICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdvcml0aG0uRUNEU0FfU0VDUDI1
NlIxX1NIQTI1NiwKLSAgICAgICAgICAgICAgICB0bHMuU2lnbmF0dXJlQWxnb3JpdGhtLlJTQV9Q
S0NTMV9TSEEyNTYsCi0gICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5SU0Ff
UEtDUzFfU0hBMSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChoZWxsby5zdXBwb3J0ZWRfZ3JvdXBzLCBbdGxzLkdyb3VwLlNFQ1AyNTZSMV0pCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBoZWxsby5zdXBwb3J0ZWRfdmVy
c2lvbnMsCi0gICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgdGxzLlRMU19WRVJTSU9OXzFf
MywKLSAgICAgICAgICAgICAgICB0bHMuVExTX1ZFUlNJT05fMV8zX0RSQUZUXzI4LAotICAgICAg
ICAgICAgICAgIHRscy5UTFNfVkVSU0lPTl8xXzNfRFJBRlRfMjcsCi0gICAgICAgICAgICAgICAg
dGxzLlRMU19WRVJTSU9OXzFfM19EUkFGVF8yNiwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICkK
LQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgaGVsbG8ub3RoZXJfZXh0
ZW5zaW9ucywKLSAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAoCi0gICAgICAgICAgICAg
ICAgICAgIHRscy5FeHRlbnNpb25UeXBlLlFVSUNfVFJBTlNQT1JUX1BBUkFNRVRFUlMsCi0gICAg
ICAgICAgICAgICAgICAgIENMSUVOVF9RVUlDX1RSQU5TUE9SVF9QQVJBTUVURVJTLAotICAgICAg
ICAgICAgICAgICkKLSAgICAgICAgICAgIF0sCi0gICAgICAgICkKLQotICAgIGRlZiB0ZXN0X3B1
bGxfY2xpZW50X2hlbGxvX3dpdGhfYWxwbihzZWxmKToKLSAgICAgICAgYnVmID0gQnVmZmVyKGRh
dGE9bG9hZCgidGxzX2NsaWVudF9oZWxsb193aXRoX2FscG4uYmluIikpCi0gICAgICAgIGhlbGxv
ID0gcHVsbF9jbGllbnRfaGVsbG8oYnVmKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoYnVmLmVv
ZigpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBoZWxsby5yYW5k
b20sCi0gICAgICAgICAgICBiaW5hc2NpaS51bmhleGxpZnkoCi0gICAgICAgICAgICAgICAgImVk
NTc1YzZmYmQ1OTljNGRmYWFiZDAwM2RjYTZlODYwY2NkYjBlMTc4MmMxYWYwMmU1N2JmMjdjYjY0
NzliNzYiCi0gICAgICAgICAgICApLAotICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoaGVsbG8ubGVnYWN5X3Nlc3Npb25faWQsIGIiIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgKLSAgICAgICAgICAgIGhlbGxvLmNpcGhlcl9zdWl0ZXMsCi0gICAgICAgICAgICBbCi0gICAg
ICAgICAgICAgICAgdGxzLkNpcGhlclN1aXRlLkFFU18xMjhfR0NNX1NIQTI1NiwKLSAgICAgICAg
ICAgICAgICB0bHMuQ2lwaGVyU3VpdGUuQUVTXzI1Nl9HQ01fU0hBMzg0LAotICAgICAgICAgICAg
ICAgIHRscy5DaXBoZXJTdWl0ZS5DSEFDSEEyMF9QT0xZMTMwNV9TSEEyNTYsCi0gICAgICAgICAg
ICAgICAgdGxzLkNpcGhlclN1aXRlLkVNUFRZX1JFTkVHT1RJQVRJT05fSU5GT19TQ1NWLAotICAg
ICAgICAgICAgXSwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlbGxvLmxl
Z2FjeV9jb21wcmVzc2lvbl9tZXRob2RzLCBbdGxzLkNvbXByZXNzaW9uTWV0aG9kLk5VTExdKQot
Ci0gICAgICAgICMgZXh0ZW5zaW9ucwotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlbGxvLmFs
cG5fcHJvdG9jb2xzLCBbImgzLTE5Il0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVsbG8u
ZWFybHlfZGF0YSwgRmFsc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAg
ICBoZWxsby5rZXlfc2hhcmUsCi0gICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgKAotICAg
ICAgICAgICAgICAgICAgICB0bHMuR3JvdXAuU0VDUDI1NlIxLAotICAgICAgICAgICAgICAgICAg
ICBiaW5hc2NpaS51bmhleGxpZnkoCi0gICAgICAgICAgICAgICAgICAgICAgICAiMDQ4ODQyMzE1
YzQzN2JiMGNlMjkyOWM4MTZmZWU0ZTk0MmVjNWNiNmRiNmE2YjliZjYyMjY4MDE4OGViYjBkNCIK
LSAgICAgICAgICAgICAgICAgICAgICAgICJiNjUyZTY5MDMzZjcxNjg2YWEwMWNiYzc5MTU1ODY2
ZTI2NGM5ZjMzZjQ1YWExNmIwZGZhMTBhMjIyZTNhNjY5IgotICAgICAgICAgICAgICAgICAgICAg
ICAgIjIyIgotICAgICAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgICAgICkKLSAgICAg
ICAgICAgIF0sCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAg
ICAgIGhlbGxvLnBza19rZXlfZXhjaGFuZ2VfbW9kZXMsIFt0bHMuUHNrS2V5RXhjaGFuZ2VNb2Rl
LlBTS19ESEVfS0VdCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5z
ZXJ2ZXJfbmFtZSwgImNsb3VkZmxhcmUtcXVpYy5jb20iKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKAotICAgICAgICAgICAgaGVsbG8uc2lnbmF0dXJlX2FsZ29yaXRobXMsCi0gICAgICAgICAg
ICBbCi0gICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5FQ0RTQV9TRUNQMjU2
UjFfU0hBMjU2LAotICAgICAgICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdvcml0aG0uRUNEU0Ff
U0VDUDM4NFIxX1NIQTM4NCwKLSAgICAgICAgICAgICAgICB0bHMuU2lnbmF0dXJlQWxnb3JpdGht
LkVDRFNBX1NFQ1A1MjFSMV9TSEE1MTIsCi0gICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFs
Z29yaXRobS5FRDI1NTE5LAotICAgICAgICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdvcml0aG0u
RUQ0NDgsCi0gICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5SU0FfUFNTX1BT
U19TSEEyNTYsCi0gICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5SU0FfUFNT
X1BTU19TSEEzODQsCi0gICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5SU0Ff
UFNTX1BTU19TSEE1MTIsCi0gICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5S
U0FfUFNTX1JTQUVfU0hBMjU2LAotICAgICAgICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdvcml0
aG0uUlNBX1BTU19SU0FFX1NIQTM4NCwKLSAgICAgICAgICAgICAgICB0bHMuU2lnbmF0dXJlQWxn
b3JpdGhtLlJTQV9QU1NfUlNBRV9TSEE1MTIsCi0gICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVy
ZUFsZ29yaXRobS5SU0FfUEtDUzFfU0hBMjU2LAotICAgICAgICAgICAgICAgIHRscy5TaWduYXR1
cmVBbGdvcml0aG0uUlNBX1BLQ1MxX1NIQTM4NCwKLSAgICAgICAgICAgICAgICB0bHMuU2lnbmF0
dXJlQWxnb3JpdGhtLlJTQV9QS0NTMV9TSEE1MTIsCi0gICAgICAgICAgICBdLAotICAgICAgICAp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBoZWxsby5zdXBwb3J0ZWRf
Z3JvdXBzLAotICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgIHRscy5Hcm91cC5TRUNQMjU2
UjEsCi0gICAgICAgICAgICAgICAgdGxzLkdyb3VwLlgyNTUxOSwKLSAgICAgICAgICAgICAgICB0
bHMuR3JvdXAuU0VDUDM4NFIxLAotICAgICAgICAgICAgICAgIHRscy5Hcm91cC5TRUNQNTIxUjEs
Ci0gICAgICAgICAgICBdLAotICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVs
bG8uc3VwcG9ydGVkX3ZlcnNpb25zLCBbdGxzLlRMU19WRVJTSU9OXzFfM10pCi0KLSAgICAgICAg
IyBzZXJpYWxpemUKLSAgICAgICAgYnVmID0gQnVmZmVyKDEwMDApCi0gICAgICAgIHB1c2hfY2xp
ZW50X2hlbGxvKGJ1ZiwgaGVsbG8pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGJ1Zi5k
YXRhKSwgbGVuKGxvYWQoInRsc19jbGllbnRfaGVsbG9fd2l0aF9hbHBuLmJpbiIpKSkKLQotICAg
IGRlZiB0ZXN0X3B1bGxfY2xpZW50X2hlbGxvX3dpdGhfcHNrKHNlbGYpOgotICAgICAgICBidWYg
PSBCdWZmZXIoZGF0YT1sb2FkKCJ0bHNfY2xpZW50X2hlbGxvX3dpdGhfcHNrLmJpbiIpKQotICAg
ICAgICBoZWxsbyA9IHB1bGxfY2xpZW50X2hlbGxvKGJ1ZikKLQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGhlbGxvLmVhcmx5X2RhdGEsIFRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Ci0gICAgICAgICAgICBoZWxsby5wcmVfc2hhcmVkX2tleSwKLSAgICAgICAgICAgIHRscy5PZmZl
cmVkUHNrcygKLSAgICAgICAgICAgICAgICBpZGVudGl0aWVzPVsKLSAgICAgICAgICAgICAgICAg
ICAgKAotICAgICAgICAgICAgICAgICAgICAgICAgYmluYXNjaWkudW5oZXhsaWZ5KAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJmYWIzZGM3ZDc5ZjM1ZWE1M2U5YWRmMjExNTBlNjAxNTkx
YTc1MGI4MGNkZTBjZDE2N2ZlZjZlMGNkYmMwMzJhIgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJjNDE2MWZjNWM1YjY2Njc5ZGU0OTUyNGJkNTYyNGM1MGQ3MWJhM2U2NTA3ODBhNGJmZTQw
MmQ2YTA2YTAwNTI1IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICIwYjVkYzUyMDg1MjMz
YjY5ZDBkZDEzOTI0Y2M1YzcxM2EzOTY3ODRlY2FmYzU5ZjVlYTczYzE1ODVkNzk2MjFiIgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICI4YTk0ZTRmMjI5MWIxNzQyN2Q1MTg1YWJmNGE5OTRm
Y2E3NGVlN2E3Zjk5M2E5NTBjNzEwMDNmYzdjZjgiCi0gICAgICAgICAgICAgICAgICAgICAgICAp
LAotICAgICAgICAgICAgICAgICAgICAgICAgMjA2NzE1NjM3OCwKLSAgICAgICAgICAgICAgICAg
ICAgKQotICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgYmluZGVycz1bCi0gICAg
ICAgICAgICAgICAgICAgIGJpbmFzY2lpLnVuaGV4bGlmeSgKLSAgICAgICAgICAgICAgICAgICAg
ICAgICIxNzg4YWQ0M2ZkZmYzN2NmYzYyOGYyNGI2Y2U3YzhjNzYxODA3MDUzODBkYTE3ZGEzMjgx
MWI1YmFlNGU3OCIKLSAgICAgICAgICAgICAgICAgICAgICAgICJkN2FhYWY2NWE5YjcxMzg3MmYy
YmIyODgxOGNhMWE2YjAxIgotICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAg
XSwKLSAgICAgICAgICAgICksCi0gICAgICAgICkKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUo
YnVmLmVvZigpKQotCi0gICAgICAgICMgc2VyaWFsaXplCi0gICAgICAgIGJ1ZiA9IEJ1ZmZlcigx
MDAwKQotICAgICAgICBwdXNoX2NsaWVudF9oZWxsbyhidWYsIGhlbGxvKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGJ1Zi5kYXRhLCBsb2FkKCJ0bHNfY2xpZW50X2hlbGxvX3dpdGhfcHNrLmJp
biIpKQotCi0gICAgZGVmIHRlc3RfcHVsbF9jbGllbnRfaGVsbG9fd2l0aF9zbmkoc2VsZik6Ci0g
ICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWxvYWQoInRsc19jbGllbnRfaGVsbG9fd2l0aF9zbmku
YmluIikpCi0gICAgICAgIGhlbGxvID0gcHVsbF9jbGllbnRfaGVsbG8oYnVmKQotICAgICAgICBz
ZWxmLmFzc2VydFRydWUoYnVmLmVvZigpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0g
ICAgICAgICAgICBoZWxsby5yYW5kb20sCi0gICAgICAgICAgICBiaW5hc2NpaS51bmhleGxpZnko
Ci0gICAgICAgICAgICAgICAgIjk4N2Q4OTM0MTQwYjBhNDJjYzU1NDUwNzFmM2Y5ZjdmNjE5NjNk
N2I2NDA0ZWI2NzRjOGRiZTUxMzYwNDM0NmIiCi0gICAgICAgICAgICApLAotICAgICAgICApCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBoZWxsby5sZWdhY3lfc2Vzc2lv
bl9pZCwKLSAgICAgICAgICAgIGJpbmFzY2lpLnVuaGV4bGlmeSgKLSAgICAgICAgICAgICAgICAi
MjZiMTliZGQzMGRiZjc1MTAxNWEzYTE2ZTEzYmQ1OTAwMmRmZTQyMGI3OTlkMmE1Y2Q1ZTExYjhm
YTdiY2I2NiIKLSAgICAgICAgICAgICksCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgKLSAgICAgICAgICAgIGhlbGxvLmNpcGhlcl9zdWl0ZXMsCi0gICAgICAgICAgICBbCi0g
ICAgICAgICAgICAgICAgdGxzLkNpcGhlclN1aXRlLkFFU18yNTZfR0NNX1NIQTM4NCwKLSAgICAg
ICAgICAgICAgICB0bHMuQ2lwaGVyU3VpdGUuQUVTXzEyOF9HQ01fU0hBMjU2LAotICAgICAgICAg
ICAgICAgIHRscy5DaXBoZXJTdWl0ZS5DSEFDSEEyMF9QT0xZMTMwNV9TSEEyNTYsCi0gICAgICAg
ICAgICBdLAotICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVsbG8ubGVnYWN5
X2NvbXByZXNzaW9uX21ldGhvZHMsIFt0bHMuQ29tcHJlc3Npb25NZXRob2QuTlVMTF0pCi0KLSAg
ICAgICAgIyBleHRlbnNpb25zCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVsbG8uYWxwbl9w
cm90b2NvbHMsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBo
ZWxsby5rZXlfc2hhcmUsCi0gICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgKAotICAgICAg
ICAgICAgICAgICAgICB0bHMuR3JvdXAuU0VDUDI1NlIxLAotICAgICAgICAgICAgICAgICAgICBi
aW5hc2NpaS51bmhleGxpZnkoCi0gICAgICAgICAgICAgICAgICAgICAgICAiMDRiNjJkNzBmOTA3
YzgxNGNkNjVkMGY3M2I4Yjk5MWYwNmI3MGM3NzE1M2Y1NDg0MTBhMTkxZDJiMTk3NjRhMiIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICJlY2MwNjA2NWE0ODBlZmE5ZTFmMTBjOGRhNmU3MzdkNWJm
YzA0YmUzZjc3M2UyMGEwYzk5N2Y1MWI1NjIxMjgwIgotICAgICAgICAgICAgICAgICAgICAgICAg
IjQwIgotICAgICAgICAgICAgICAgICAgICApLAotICAgICAgICAgICAgICAgICkKLSAgICAgICAg
ICAgIF0sCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAg
IGhlbGxvLnBza19rZXlfZXhjaGFuZ2VfbW9kZXMsIFt0bHMuUHNrS2V5RXhjaGFuZ2VNb2RlLlBT
S19ESEVfS0VdCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5zZXJ2
ZXJfbmFtZSwgImNsb3VkZmxhcmUtcXVpYy5jb20iKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KAotICAgICAgICAgICAgaGVsbG8uc2lnbmF0dXJlX2FsZ29yaXRobXMsCi0gICAgICAgICAgICBb
Ci0gICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5SU0FfUFNTX1JTQUVfU0hB
MjU2LAotICAgICAgICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdvcml0aG0uRUNEU0FfU0VDUDI1
NlIxX1NIQTI1NiwKLSAgICAgICAgICAgICAgICB0bHMuU2lnbmF0dXJlQWxnb3JpdGhtLlJTQV9Q
S0NTMV9TSEEyNTYsCi0gICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5SU0Ff
UEtDUzFfU0hBMSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChoZWxsby5zdXBwb3J0ZWRfZ3JvdXBzLCBbdGxzLkdyb3VwLlNFQ1AyNTZSMV0pCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBoZWxsby5zdXBwb3J0ZWRfdmVy
c2lvbnMsCi0gICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgdGxzLlRMU19WRVJTSU9OXzFf
MywKLSAgICAgICAgICAgICAgICB0bHMuVExTX1ZFUlNJT05fMV8zX0RSQUZUXzI4LAotICAgICAg
ICAgICAgICAgIHRscy5UTFNfVkVSU0lPTl8xXzNfRFJBRlRfMjcsCi0gICAgICAgICAgICAgICAg
dGxzLlRMU19WRVJTSU9OXzFfM19EUkFGVF8yNiwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICkK
LQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgaGVsbG8ub3RoZXJfZXh0
ZW5zaW9ucywKLSAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAoCi0gICAgICAgICAgICAg
ICAgICAgIHRscy5FeHRlbnNpb25UeXBlLlFVSUNfVFJBTlNQT1JUX1BBUkFNRVRFUlMsCi0gICAg
ICAgICAgICAgICAgICAgIENMSUVOVF9RVUlDX1RSQU5TUE9SVF9QQVJBTUVURVJTLAotICAgICAg
ICAgICAgICAgICkKLSAgICAgICAgICAgIF0sCi0gICAgICAgICkKLQotICAgICAgICAjIHNlcmlh
bGl6ZQotICAgICAgICBidWYgPSBCdWZmZXIoMTAwMCkKLSAgICAgICAgcHVzaF9jbGllbnRfaGVs
bG8oYnVmLCBoZWxsbykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYuZGF0YSwgbG9hZCgi
dGxzX2NsaWVudF9oZWxsb193aXRoX3NuaS5iaW4iKSkKLQotICAgIGRlZiB0ZXN0X3B1c2hfY2xp
ZW50X2hlbGxvKHNlbGYpOgotICAgICAgICBoZWxsbyA9IENsaWVudEhlbGxvKAotICAgICAgICAg
ICAgcmFuZG9tPWJpbmFzY2lpLnVuaGV4bGlmeSgKLSAgICAgICAgICAgICAgICAiMThiMmIyM2Jm
M2U0NGI1ZDUyY2NmZTdhZWNiYzVmZjE0ZWFkYzNkMzQ5ZmFiZjgwNGQ3MWYxNjVhZTc2ZTdkNSIK
LSAgICAgICAgICAgICksCi0gICAgICAgICAgICBsZWdhY3lfc2Vzc2lvbl9pZD1iaW5hc2NpaS51
bmhleGxpZnkoCi0gICAgICAgICAgICAgICAgIjlhZWU4MmEyZDE4NmMxY2IzMmEzMjlkOWRjZmUw
MDRhMWE0MzhhZDA0ODVhNTNjNmJmY2Y1NWMxMzJhMjMyMzUiCi0gICAgICAgICAgICApLAotICAg
ICAgICAgICAgY2lwaGVyX3N1aXRlcz1bCi0gICAgICAgICAgICAgICAgdGxzLkNpcGhlclN1aXRl
LkFFU18yNTZfR0NNX1NIQTM4NCwKLSAgICAgICAgICAgICAgICB0bHMuQ2lwaGVyU3VpdGUuQUVT
XzEyOF9HQ01fU0hBMjU2LAotICAgICAgICAgICAgICAgIHRscy5DaXBoZXJTdWl0ZS5DSEFDSEEy
MF9QT0xZMTMwNV9TSEEyNTYsCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgbGVnYWN5X2Nv
bXByZXNzaW9uX21ldGhvZHM9W3Rscy5Db21wcmVzc2lvbk1ldGhvZC5OVUxMXSwKLSAgICAgICAg
ICAgIGtleV9zaGFyZT1bCi0gICAgICAgICAgICAgICAgKAotICAgICAgICAgICAgICAgICAgICB0
bHMuR3JvdXAuU0VDUDI1NlIxLAotICAgICAgICAgICAgICAgICAgICBiaW5hc2NpaS51bmhleGxp
ZnkoCi0gICAgICAgICAgICAgICAgICAgICAgICAiMDQ3YmZlYTM0NDQ2NzUzNTA1NDI2M2I3NWRl
ZjYwY2ZmYTgyNDA1YTIxMWI2OGQxZWI4ZDFkOTQ0ZTY3YWVmOCIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICI5M2M3NjY1YTU0NzNkMDMyY2ZhZjIyYTczZGEyOGViNGFhY2FlMDAxN2VkMTI1NTdi
NTc5MWY5OGExZTg0ZjE1IgotICAgICAgICAgICAgICAgICAgICAgICAgImIwIgotICAgICAgICAg
ICAgICAgICAgICApLAotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgIF0sCi0gICAgICAg
ICAgICBwc2tfa2V5X2V4Y2hhbmdlX21vZGVzPVt0bHMuUHNrS2V5RXhjaGFuZ2VNb2RlLlBTS19E
SEVfS0VdLAotICAgICAgICAgICAgc2lnbmF0dXJlX2FsZ29yaXRobXM9WwotICAgICAgICAgICAg
ICAgIHRscy5TaWduYXR1cmVBbGdvcml0aG0uUlNBX1BTU19SU0FFX1NIQTI1NiwKLSAgICAgICAg
ICAgICAgICB0bHMuU2lnbmF0dXJlQWxnb3JpdGhtLkVDRFNBX1NFQ1AyNTZSMV9TSEEyNTYsCi0g
ICAgICAgICAgICAgICAgdGxzLlNpZ25hdHVyZUFsZ29yaXRobS5SU0FfUEtDUzFfU0hBMjU2LAot
ICAgICAgICAgICAgICAgIHRscy5TaWduYXR1cmVBbGdvcml0aG0uUlNBX1BLQ1MxX1NIQTEsCi0g
ICAgICAgICAgICBdLAotICAgICAgICAgICAgc3VwcG9ydGVkX2dyb3Vwcz1bdGxzLkdyb3VwLlNF
Q1AyNTZSMV0sCi0gICAgICAgICAgICBzdXBwb3J0ZWRfdmVyc2lvbnM9WwotICAgICAgICAgICAg
ICAgIHRscy5UTFNfVkVSU0lPTl8xXzMsCi0gICAgICAgICAgICAgICAgdGxzLlRMU19WRVJTSU9O
XzFfM19EUkFGVF8yOCwKLSAgICAgICAgICAgICAgICB0bHMuVExTX1ZFUlNJT05fMV8zX0RSQUZU
XzI3LAotICAgICAgICAgICAgICAgIHRscy5UTFNfVkVSU0lPTl8xXzNfRFJBRlRfMjYsCi0gICAg
ICAgICAgICBdLAotICAgICAgICAgICAgb3RoZXJfZXh0ZW5zaW9ucz1bCi0gICAgICAgICAgICAg
ICAgKAotICAgICAgICAgICAgICAgICAgICB0bHMuRXh0ZW5zaW9uVHlwZS5RVUlDX1RSQU5TUE9S
VF9QQVJBTUVURVJTLAotICAgICAgICAgICAgICAgICAgICBDTElFTlRfUVVJQ19UUkFOU1BPUlRf
UEFSQU1FVEVSUywKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICBdLAotICAgICAgICAp
Ci0KLSAgICAgICAgYnVmID0gQnVmZmVyKDEwMDApCi0gICAgICAgIHB1c2hfY2xpZW50X2hlbGxv
KGJ1ZiwgaGVsbG8pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGxvYWQoInRs
c19jbGllbnRfaGVsbG8uYmluIikpCi0KLSAgICBkZWYgdGVzdF9wdWxsX3NlcnZlcl9oZWxsbyhz
ZWxmKToKLSAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9bG9hZCgidGxzX3NlcnZlcl9oZWxsby5i
aW4iKSkKLSAgICAgICAgaGVsbG8gPSBwdWxsX3NlcnZlcl9oZWxsbyhidWYpCi0gICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShidWYuZW9mKCkpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAg
ICAgICAgICAgIGhlbGxvLnJhbmRvbSwKLSAgICAgICAgICAgIGJpbmFzY2lpLnVuaGV4bGlmeSgK
LSAgICAgICAgICAgICAgICAiYWRhODUyNzFkMTk2ODBjNjE1ZWE3MzM2NTE5ZTNmZGY2ZjFlMjZm
M2IxMDc1ZWUxZGU5NmZmYTg4ODRlODI4MCIKLSAgICAgICAgICAgICksCi0gICAgICAgICkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGhlbGxvLmxlZ2FjeV9zZXNzaW9u
X2lkLAotICAgICAgICAgICAgYmluYXNjaWkudW5oZXhsaWZ5KAotICAgICAgICAgICAgICAgICI5
YWVlODJhMmQxODZjMWNiMzJhMzI5ZDlkY2ZlMDA0YTFhNDM4YWQwNDg1YTUzYzZiZmNmNTVjMTMy
YTIzMjM1IgotICAgICAgICAgICAgKSwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGhlbGxvLmNpcGhlcl9zdWl0ZSwgdGxzLkNpcGhlclN1aXRlLkFFU18yNTZfR0NNX1NIQTM4
NCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5jb21wcmVzc2lvbl9tZXRob2QsIHRs
cy5Db21wcmVzc2lvbk1ldGhvZC5OVUxMKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAg
ICAgICAgICAgaGVsbG8ua2V5X3NoYXJlLAotICAgICAgICAgICAgKAotICAgICAgICAgICAgICAg
IHRscy5Hcm91cC5TRUNQMjU2UjEsCi0gICAgICAgICAgICAgICAgYmluYXNjaWkudW5oZXhsaWZ5
KAotICAgICAgICAgICAgICAgICAgICAiMDQ4YjI3ZDAyODIyNDJkODRiN2ZjYzAyYTljNGYxM2Vj
YTAzMjllM2M3MDI5YWEzNGEzMzc5NGU2ZTdiYTE4OSIKLSAgICAgICAgICAgICAgICAgICAgIjVj
Y2ExYzUwM2JmMDM3OGFjNjkzN2MzNTQ5MTIxMTZmZjMyNTEwMjZiY2ExOTU4ZDdmMzg3MzE2Yzgz
YWU2Y2YiCi0gICAgICAgICAgICAgICAgICAgICJiMiIKLSAgICAgICAgICAgICAgICApLAotICAg
ICAgICAgICAgKSwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlbGxvLnBy
ZV9zaGFyZWRfa2V5LCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlbGxvLnN1cHBv
cnRlZF92ZXJzaW9uLCB0bHMuVExTX1ZFUlNJT05fMV8zKQotCi0gICAgZGVmIHRlc3RfcHVsbF9z
ZXJ2ZXJfaGVsbG9fd2l0aF9wc2soc2VsZik6Ci0gICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWxv
YWQoInRsc19zZXJ2ZXJfaGVsbG9fd2l0aF9wc2suYmluIikpCi0gICAgICAgIGhlbGxvID0gcHVs
bF9zZXJ2ZXJfaGVsbG8oYnVmKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoYnVmLmVvZigpKQot
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBoZWxsby5yYW5kb20sCi0g
ICAgICAgICAgICBiaW5hc2NpaS51bmhleGxpZnkoCi0gICAgICAgICAgICAgICAgImNjYmFhZjA0
ZmMxYmQ1MTQzYjJjYzZiOTc1MjBjZjM3ZDkxNDcwZGJmYzgxMjcxMzFhN2JmMGY5NDFlM2ExMzci
Ci0gICAgICAgICAgICApLAotICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0g
ICAgICAgICAgICBoZWxsby5sZWdhY3lfc2Vzc2lvbl9pZCwKLSAgICAgICAgICAgIGJpbmFzY2lp
LnVuaGV4bGlmeSgKLSAgICAgICAgICAgICAgICAiOTQ4M2U3ZTg5NWQwZjRjZWMxNzA4NmIwODQ5
NjAxYzA2MzI2NjJjZDc2NGU4MjhmMmY4OTJmNGM0Yjc3NzFiMCIKLSAgICAgICAgICAgICksCi0g
ICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5jaXBoZXJfc3VpdGUsIHRs
cy5DaXBoZXJTdWl0ZS5BRVNfMjU2X0dDTV9TSEEzODQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoaGVsbG8uY29tcHJlc3Npb25fbWV0aG9kLCB0bHMuQ29tcHJlc3Npb25NZXRob2QuTlVMTCkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGhlbGxvLmtleV9zaGFyZSwK
LSAgICAgICAgICAgICgKLSAgICAgICAgICAgICAgICB0bHMuR3JvdXAuU0VDUDI1NlIxLAotICAg
ICAgICAgICAgICAgIGJpbmFzY2lpLnVuaGV4bGlmeSgKLSAgICAgICAgICAgICAgICAgICAgIjA0
ODVkN2NlY2JlYmZjNTQ4ZmM2NTdiZjUxYjhlOGRhODQyYTQwNTZiMTY0YTI3Zjc3MDJjYTMxOGMx
NmU0ODgiCi0gICAgICAgICAgICAgICAgICAgICIxOGI2NDA5NTkzYjE1YzY2NDlkNmY0NTkzODdh
NTMxMjhiMTY0MTc4YWRjODQwMTc5YWFkMDFkMzZjZTk1ZDYyIgotICAgICAgICAgICAgICAgICAg
ICAiNzYiCi0gICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICksCi0gICAgICAgICkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsby5wcmVfc2hhcmVkX2tleSwgMCkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChoZWxsby5zdXBwb3J0ZWRfdmVyc2lvbiwgdGxzLlRMU19WRVJTSU9O
XzFfMykKLQotICAgICAgICAjIHNlcmlhbGl6ZQotICAgICAgICBidWYgPSBCdWZmZXIoMTAwMCkK
LSAgICAgICAgcHVzaF9zZXJ2ZXJfaGVsbG8oYnVmLCBoZWxsbykKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChidWYuZGF0YSwgbG9hZCgidGxzX3NlcnZlcl9oZWxsb193aXRoX3Bzay5iaW4iKSkK
LQotICAgIGRlZiB0ZXN0X3B1bGxfc2VydmVyX2hlbGxvX3dpdGhfdW5rbm93bl9leHRlbnNpb24o
c2VsZik6Ci0gICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWxvYWQoInRsc19zZXJ2ZXJfaGVsbG9f
d2l0aF91bmtub3duX2V4dGVuc2lvbi5iaW4iKSkKLSAgICAgICAgaGVsbG8gPSBwdWxsX3NlcnZl
cl9oZWxsbyhidWYpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWYuZW9mKCkpCi0KLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGhlbGxvLAotICAgICAgICAgICAgU2Vy
dmVySGVsbG8oCi0gICAgICAgICAgICAgICAgcmFuZG9tPWJpbmFzY2lpLnVuaGV4bGlmeSgKLSAg
ICAgICAgICAgICAgICAgICAgImFkYTg1MjcxZDE5NjgwYzYxNWVhNzMzNjUxOWUzZmRmNmYxZTI2
ZjNiMTA3NWVlMWRlOTZmZmE4ODg0ZTgyODAiCi0gICAgICAgICAgICAgICAgKSwKLSAgICAgICAg
ICAgICAgICBsZWdhY3lfc2Vzc2lvbl9pZD1iaW5hc2NpaS51bmhleGxpZnkoCi0gICAgICAgICAg
ICAgICAgICAgICI5YWVlODJhMmQxODZjMWNiMzJhMzI5ZDlkY2ZlMDA0YTFhNDM4YWQwNDg1YTUz
YzZiZmNmNTVjMTMyYTIzMjM1IgotICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICAgICAg
Y2lwaGVyX3N1aXRlPXRscy5DaXBoZXJTdWl0ZS5BRVNfMjU2X0dDTV9TSEEzODQsCi0gICAgICAg
ICAgICAgICAgY29tcHJlc3Npb25fbWV0aG9kPXRscy5Db21wcmVzc2lvbk1ldGhvZC5OVUxMLAot
ICAgICAgICAgICAgICAgIGtleV9zaGFyZT0oCi0gICAgICAgICAgICAgICAgICAgIHRscy5Hcm91
cC5TRUNQMjU2UjEsCi0gICAgICAgICAgICAgICAgICAgIGJpbmFzY2lpLnVuaGV4bGlmeSgKLSAg
ICAgICAgICAgICAgICAgICAgICAgICIwNDhiMjdkMDI4MjI0MmQ4NGI3ZmNjMDJhOWM0ZjEzZWNh
MDMyOWUzYzcwMjlhYTM0YTMzNzk0ZTZlN2JhMTg5IgotICAgICAgICAgICAgICAgICAgICAgICAg
IjVjY2ExYzUwM2JmMDM3OGFjNjkzN2MzNTQ5MTIxMTZmZjMyNTEwMjZiY2ExOTU4ZDdmMzg3MzE2
YzgzYWU2Y2YiCi0gICAgICAgICAgICAgICAgICAgICAgICAiYjIiCi0gICAgICAgICAgICAgICAg
ICAgICksCi0gICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAgICAgICBzdXBwb3J0ZWRfdmVy
c2lvbj10bHMuVExTX1ZFUlNJT05fMV8zLAotICAgICAgICAgICAgICAgIG90aGVyX2V4dGVuc2lv
bnM9WygxMjM0NSwgYiJmb28iKV0sCi0gICAgICAgICAgICApLAotICAgICAgICApCi0KLSAgICAg
ICAgIyBzZXJpYWxpemUKLSAgICAgICAgYnVmID0gQnVmZmVyKDEwMDApCi0gICAgICAgIHB1c2hf
c2VydmVyX2hlbGxvKGJ1ZiwgaGVsbG8pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRh
dGEsIGxvYWQoInRsc19zZXJ2ZXJfaGVsbG9fd2l0aF91bmtub3duX2V4dGVuc2lvbi5iaW4iKSkK
LQotICAgIGRlZiB0ZXN0X3B1c2hfc2VydmVyX2hlbGxvKHNlbGYpOgotICAgICAgICBoZWxsbyA9
IFNlcnZlckhlbGxvKAotICAgICAgICAgICAgcmFuZG9tPWJpbmFzY2lpLnVuaGV4bGlmeSgKLSAg
ICAgICAgICAgICAgICAiYWRhODUyNzFkMTk2ODBjNjE1ZWE3MzM2NTE5ZTNmZGY2ZjFlMjZmM2Ix
MDc1ZWUxZGU5NmZmYTg4ODRlODI4MCIKLSAgICAgICAgICAgICksCi0gICAgICAgICAgICBsZWdh
Y3lfc2Vzc2lvbl9pZD1iaW5hc2NpaS51bmhleGxpZnkoCi0gICAgICAgICAgICAgICAgIjlhZWU4
MmEyZDE4NmMxY2IzMmEzMjlkOWRjZmUwMDRhMWE0MzhhZDA0ODVhNTNjNmJmY2Y1NWMxMzJhMjMy
MzUiCi0gICAgICAgICAgICApLAotICAgICAgICAgICAgY2lwaGVyX3N1aXRlPXRscy5DaXBoZXJT
dWl0ZS5BRVNfMjU2X0dDTV9TSEEzODQsCi0gICAgICAgICAgICBjb21wcmVzc2lvbl9tZXRob2Q9
dGxzLkNvbXByZXNzaW9uTWV0aG9kLk5VTEwsCi0gICAgICAgICAgICBrZXlfc2hhcmU9KAotICAg
ICAgICAgICAgICAgIHRscy5Hcm91cC5TRUNQMjU2UjEsCi0gICAgICAgICAgICAgICAgYmluYXNj
aWkudW5oZXhsaWZ5KAotICAgICAgICAgICAgICAgICAgICAiMDQ4YjI3ZDAyODIyNDJkODRiN2Zj
YzAyYTljNGYxM2VjYTAzMjllM2M3MDI5YWEzNGEzMzc5NGU2ZTdiYTE4OSIKLSAgICAgICAgICAg
ICAgICAgICAgIjVjY2ExYzUwM2JmMDM3OGFjNjkzN2MzNTQ5MTIxMTZmZjMyNTEwMjZiY2ExOTU4
ZDdmMzg3MzE2YzgzYWU2Y2YiCi0gICAgICAgICAgICAgICAgICAgICJiMiIKLSAgICAgICAgICAg
ICAgICApLAotICAgICAgICAgICAgKSwKLSAgICAgICAgICAgIHN1cHBvcnRlZF92ZXJzaW9uPXRs
cy5UTFNfVkVSU0lPTl8xXzMsCi0gICAgICAgICkKLQotICAgICAgICBidWYgPSBCdWZmZXIoMTAw
MCkKLSAgICAgICAgcHVzaF9zZXJ2ZXJfaGVsbG8oYnVmLCBoZWxsbykKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChidWYuZGF0YSwgbG9hZCgidGxzX3NlcnZlcl9oZWxsby5iaW4iKSkKLQotICAg
IGRlZiB0ZXN0X3B1bGxfbmV3X3Nlc3Npb25fdGlja2V0KHNlbGYpOgotICAgICAgICBidWYgPSBC
dWZmZXIoZGF0YT1sb2FkKCJ0bHNfbmV3X3Nlc3Npb25fdGlja2V0LmJpbiIpKQotICAgICAgICBu
ZXdfc2Vzc2lvbl90aWNrZXQgPSBwdWxsX25ld19zZXNzaW9uX3RpY2tldChidWYpCi0gICAgICAg
IHNlbGYuYXNzZXJ0SXNOb3ROb25lKG5ld19zZXNzaW9uX3RpY2tldCkKLSAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKGJ1Zi5lb2YoKSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAg
ICAgICAgbmV3X3Nlc3Npb25fdGlja2V0LAotICAgICAgICAgICAgTmV3U2Vzc2lvblRpY2tldCgK
LSAgICAgICAgICAgICAgICB0aWNrZXRfbGlmZXRpbWU9ODY0MDAsCi0gICAgICAgICAgICAgICAg
dGlja2V0X2FnZV9hZGQ9MzMwMzQ1MjQyNSwKLSAgICAgICAgICAgICAgICB0aWNrZXRfbm9uY2U9
YiIiLAotICAgICAgICAgICAgICAgIHRpY2tldD1iaW5hc2NpaS51bmhleGxpZnkoCi0gICAgICAg
ICAgICAgICAgICAgICJkYmU2ZjFhNzdhNzhjMDQyNmJmYTYwN2NkMGQwMmIzNTAyNDdkOTA2MTg3
MDQ3MDk1OTZiZWRhN2U5NjJjYzgxIgotICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICAg
ICAgbWF4X2Vhcmx5X2RhdGFfc2l6ZT0weEZGRkZGRkZGLAotICAgICAgICAgICAgKSwKLSAgICAg
ICAgKQotCi0gICAgICAgICMgc2VyaWFsaXplCi0gICAgICAgIGJ1ZiA9IEJ1ZmZlcigxMDApCi0g
ICAgICAgIHB1c2hfbmV3X3Nlc3Npb25fdGlja2V0KGJ1ZiwgbmV3X3Nlc3Npb25fdGlja2V0KQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zi5kYXRhLCBsb2FkKCJ0bHNfbmV3X3Nlc3Npb25f
dGlja2V0LmJpbiIpKQotCi0gICAgZGVmIHRlc3RfcHVsbF9uZXdfc2Vzc2lvbl90aWNrZXRfd2l0
aF91bmtub3duX2V4dGVuc2lvbihzZWxmKToKLSAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9bG9h
ZCgidGxzX25ld19zZXNzaW9uX3RpY2tldF93aXRoX3Vua25vd25fZXh0ZW5zaW9uLmJpbiIpKQot
ICAgICAgICBuZXdfc2Vzc2lvbl90aWNrZXQgPSBwdWxsX25ld19zZXNzaW9uX3RpY2tldChidWYp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKG5ld19zZXNzaW9uX3RpY2tldCkKLSAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKGJ1Zi5lb2YoKSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KAotICAgICAgICAgICAgbmV3X3Nlc3Npb25fdGlja2V0LAotICAgICAgICAgICAgTmV3U2Vzc2lv
blRpY2tldCgKLSAgICAgICAgICAgICAgICB0aWNrZXRfbGlmZXRpbWU9ODY0MDAsCi0gICAgICAg
ICAgICAgICAgdGlja2V0X2FnZV9hZGQ9MzMwMzQ1MjQyNSwKLSAgICAgICAgICAgICAgICB0aWNr
ZXRfbm9uY2U9YiIiLAotICAgICAgICAgICAgICAgIHRpY2tldD1iaW5hc2NpaS51bmhleGxpZnko
Ci0gICAgICAgICAgICAgICAgICAgICJkYmU2ZjFhNzdhNzhjMDQyNmJmYTYwN2NkMGQwMmIzNTAy
NDdkOTA2MTg3MDQ3MDk1OTZiZWRhN2U5NjJjYzgxIgotICAgICAgICAgICAgICAgICksCi0gICAg
ICAgICAgICAgICAgbWF4X2Vhcmx5X2RhdGFfc2l6ZT0weEZGRkZGRkZGLAotICAgICAgICAgICAg
ICAgIG90aGVyX2V4dGVuc2lvbnM9WygxMjM0NSwgYiJmb28iKV0sCi0gICAgICAgICAgICApLAot
ICAgICAgICApCi0KLSAgICAgICAgIyBzZXJpYWxpemUKLSAgICAgICAgYnVmID0gQnVmZmVyKDEw
MCkKLSAgICAgICAgcHVzaF9uZXdfc2Vzc2lvbl90aWNrZXQoYnVmLCBuZXdfc2Vzc2lvbl90aWNr
ZXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBidWYuZGF0YSwgbG9h
ZCgidGxzX25ld19zZXNzaW9uX3RpY2tldF93aXRoX3Vua25vd25fZXh0ZW5zaW9uLmJpbiIpCi0g
ICAgICAgICkKLQotICAgIGRlZiB0ZXN0X2VuY3J5cHRlZF9leHRlbnNpb25zKHNlbGYpOgotICAg
ICAgICBkYXRhID0gbG9hZCgidGxzX2VuY3J5cHRlZF9leHRlbnNpb25zLmJpbiIpCi0gICAgICAg
IGJ1ZiA9IEJ1ZmZlcihkYXRhPWRhdGEpCi0gICAgICAgIGV4dGVuc2lvbnMgPSBwdWxsX2VuY3J5
cHRlZF9leHRlbnNpb25zKGJ1ZikKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoZXh0ZW5z
aW9ucykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ1Zi5lb2YoKSkKLQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKAotICAgICAgICAgICAgZXh0ZW5zaW9ucywKLSAgICAgICAgICAgIEVuY3J5
cHRlZEV4dGVuc2lvbnMoCi0gICAgICAgICAgICAgICAgb3RoZXJfZXh0ZW5zaW9ucz1bCi0gICAg
ICAgICAgICAgICAgICAgICgKLSAgICAgICAgICAgICAgICAgICAgICAgIHRscy5FeHRlbnNpb25U
eXBlLlFVSUNfVFJBTlNQT1JUX1BBUkFNRVRFUlMsCi0gICAgICAgICAgICAgICAgICAgICAgICBT
RVJWRVJfUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVSUywKLSAgICAgICAgICAgICAgICAgICAgKQot
ICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAgICksCi0gICAgICAgICkKLQotICAgICAgICAj
IHNlcmlhbGl6ZQotICAgICAgICBidWYgPSBCdWZmZXIoY2FwYWNpdHk9MTAwKQotICAgICAgICBw
dXNoX2VuY3J5cHRlZF9leHRlbnNpb25zKGJ1ZiwgZXh0ZW5zaW9ucykKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChidWYuZGF0YSwgZGF0YSkKLQotICAgIGRlZiB0ZXN0X2VuY3J5cHRlZF9leHRl
bnNpb25zX3dpdGhfYWxwbihzZWxmKToKLSAgICAgICAgZGF0YSA9IGxvYWQoInRsc19lbmNyeXB0
ZWRfZXh0ZW5zaW9uc193aXRoX2FscG4uYmluIikKLSAgICAgICAgYnVmID0gQnVmZmVyKGRhdGE9
ZGF0YSkKLSAgICAgICAgZXh0ZW5zaW9ucyA9IHB1bGxfZW5jcnlwdGVkX2V4dGVuc2lvbnMoYnVm
KQotICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShleHRlbnNpb25zKQotICAgICAgICBzZWxm
LmFzc2VydFRydWUoYnVmLmVvZigpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAg
ICAgICAgICBleHRlbnNpb25zLAotICAgICAgICAgICAgRW5jcnlwdGVkRXh0ZW5zaW9ucygKLSAg
ICAgICAgICAgICAgICBhbHBuX3Byb3RvY29sPSJocS0yMCIsCi0gICAgICAgICAgICAgICAgb3Ro
ZXJfZXh0ZW5zaW9ucz1bCi0gICAgICAgICAgICAgICAgICAgICh0bHMuRXh0ZW5zaW9uVHlwZS5T
RVJWRVJfTkFNRSwgYiIiKSwKLSAgICAgICAgICAgICAgICAgICAgKAotICAgICAgICAgICAgICAg
ICAgICAgICAgdGxzLkV4dGVuc2lvblR5cGUuUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVSUywKLSAg
ICAgICAgICAgICAgICAgICAgICAgIFNFUlZFUl9RVUlDX1RSQU5TUE9SVF9QQVJBTUVURVJTXzIs
Ci0gICAgICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAg
ICksCi0gICAgICAgICkKLQotICAgICAgICAjIHNlcmlhbGl6ZQotICAgICAgICBidWYgPSBCdWZm
ZXIoMTE1KQotICAgICAgICBwdXNoX2VuY3J5cHRlZF9leHRlbnNpb25zKGJ1ZiwgZXh0ZW5zaW9u
cykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ1Zi5lb2YoKSkKLQotICAgIGRlZiB0ZXN0X3B1
bGxfZW5jcnlwdGVkX2V4dGVuc2lvbnNfd2l0aF9hbHBuX2FuZF9lYXJseV9kYXRhKHNlbGYpOgot
ICAgICAgICBidWYgPSBCdWZmZXIoZGF0YT1sb2FkKCJ0bHNfZW5jcnlwdGVkX2V4dGVuc2lvbnNf
d2l0aF9hbHBuX2FuZF9lYXJseV9kYXRhLmJpbiIpKQotICAgICAgICBleHRlbnNpb25zID0gcHVs
bF9lbmNyeXB0ZWRfZXh0ZW5zaW9ucyhidWYpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25l
KGV4dGVuc2lvbnMpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWYuZW9mKCkpCi0KLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGV4dGVuc2lvbnMsCi0gICAgICAgICAg
ICBFbmNyeXB0ZWRFeHRlbnNpb25zKAotICAgICAgICAgICAgICAgIGFscG5fcHJvdG9jb2w9Imhx
LTIwIiwKLSAgICAgICAgICAgICAgICBlYXJseV9kYXRhPVRydWUsCi0gICAgICAgICAgICAgICAg
b3RoZXJfZXh0ZW5zaW9ucz1bCi0gICAgICAgICAgICAgICAgICAgICh0bHMuRXh0ZW5zaW9uVHlw
ZS5TRVJWRVJfTkFNRSwgYiIiKSwKLSAgICAgICAgICAgICAgICAgICAgKAotICAgICAgICAgICAg
ICAgICAgICAgICAgdGxzLkV4dGVuc2lvblR5cGUuUVVJQ19UUkFOU1BPUlRfUEFSQU1FVEVSUywK
LSAgICAgICAgICAgICAgICAgICAgICAgIFNFUlZFUl9RVUlDX1RSQU5TUE9SVF9QQVJBTUVURVJT
XzMsCi0gICAgICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgICAgICAgXSwKLSAgICAgICAg
ICAgICksCi0gICAgICAgICkKLQotICAgICAgICAjIHNlcmlhbGl6ZQotICAgICAgICBidWYgPSBC
dWZmZXIoMTE2KQotICAgICAgICBwdXNoX2VuY3J5cHRlZF9leHRlbnNpb25zKGJ1ZiwgZXh0ZW5z
aW9ucykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ1Zi5lb2YoKSkKLQotICAgIGRlZiB0ZXN0
X3B1bGxfY2VydGlmaWNhdGUoc2VsZik6Ci0gICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWxvYWQo
InRsc19jZXJ0aWZpY2F0ZS5iaW4iKSkKLSAgICAgICAgY2VydGlmaWNhdGUgPSBwdWxsX2NlcnRp
ZmljYXRlKGJ1ZikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ1Zi5lb2YoKSkKLQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGNlcnRpZmljYXRlLnJlcXVlc3RfY29udGV4dCwgYiIiKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGNlcnRpZmljYXRlLmNlcnRpZmljYXRlcywgWyhDRVJUSUZJ
Q0FURV9EQVRBLCBiIiIpXSkKLQotICAgIGRlZiB0ZXN0X3B1c2hfY2VydGlmaWNhdGUoc2VsZik6
Ci0gICAgICAgIGNlcnRpZmljYXRlID0gQ2VydGlmaWNhdGUoCi0gICAgICAgICAgICByZXF1ZXN0
X2NvbnRleHQ9YiIiLCBjZXJ0aWZpY2F0ZXM9WyhDRVJUSUZJQ0FURV9EQVRBLCBiIiIpXQotICAg
ICAgICApCi0KLSAgICAgICAgYnVmID0gQnVmZmVyKDE2MDApCi0gICAgICAgIHB1c2hfY2VydGlm
aWNhdGUoYnVmLCBjZXJ0aWZpY2F0ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYuZGF0
YSwgbG9hZCgidGxzX2NlcnRpZmljYXRlLmJpbiIpKQotCi0gICAgZGVmIHRlc3RfcHVsbF9jZXJ0
aWZpY2F0ZV92ZXJpZnkoc2VsZik6Ci0gICAgICAgIGJ1ZiA9IEJ1ZmZlcihkYXRhPWxvYWQoInRs
c19jZXJ0aWZpY2F0ZV92ZXJpZnkuYmluIikpCi0gICAgICAgIHZlcmlmeSA9IHB1bGxfY2VydGlm
aWNhdGVfdmVyaWZ5KGJ1ZikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ1Zi5lb2YoKSkKLQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZlcmlmeS5hbGdvcml0aG0sIHRscy5TaWduYXR1cmVB
bGdvcml0aG0uUlNBX1BTU19SU0FFX1NIQTI1NikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2
ZXJpZnkuc2lnbmF0dXJlLCBDRVJUSUZJQ0FURV9WRVJJRllfU0lHTkFUVVJFKQotCi0gICAgZGVm
IHRlc3RfcHVzaF9jZXJ0aWZpY2F0ZV92ZXJpZnkoc2VsZik6Ci0gICAgICAgIHZlcmlmeSA9IENl
cnRpZmljYXRlVmVyaWZ5KAotICAgICAgICAgICAgYWxnb3JpdGhtPXRscy5TaWduYXR1cmVBbGdv
cml0aG0uUlNBX1BTU19SU0FFX1NIQTI1NiwKLSAgICAgICAgICAgIHNpZ25hdHVyZT1DRVJUSUZJ
Q0FURV9WRVJJRllfU0lHTkFUVVJFLAotICAgICAgICApCi0KLSAgICAgICAgYnVmID0gQnVmZmVy
KDQwMCkKLSAgICAgICAgcHVzaF9jZXJ0aWZpY2F0ZV92ZXJpZnkoYnVmLCB2ZXJpZnkpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLmRhdGEsIGxvYWQoInRsc19jZXJ0aWZpY2F0ZV92ZXJp
ZnkuYmluIikpCi0KLSAgICBkZWYgdGVzdF9wdWxsX2ZpbmlzaGVkKHNlbGYpOgotICAgICAgICBi
dWYgPSBCdWZmZXIoZGF0YT1sb2FkKCJ0bHNfZmluaXNoZWQuYmluIikpCi0gICAgICAgIGZpbmlz
aGVkID0gcHVsbF9maW5pc2hlZChidWYpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWYuZW9m
KCkpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGZpbmlzaGVkLnZl
cmlmeV9kYXRhLAotICAgICAgICAgICAgYmluYXNjaWkudW5oZXhsaWZ5KAotICAgICAgICAgICAg
ICAgICJmMTU3OTIzMjM0ZmY5YTQ5MjFhYWRiMmUwZWM3YjFhMzBmY2U3M2ZiOWVjMGM0Mjc2Zjlh
ZjI2OGY0MDhlYzY4IgotICAgICAgICAgICAgKSwKLSAgICAgICAgKQotCi0gICAgZGVmIHRlc3Rf
cHVzaF9maW5pc2hlZChzZWxmKToKLSAgICAgICAgZmluaXNoZWQgPSBGaW5pc2hlZCgKLSAgICAg
ICAgICAgIHZlcmlmeV9kYXRhPWJpbmFzY2lpLnVuaGV4bGlmeSgKLSAgICAgICAgICAgICAgICAi
ZjE1NzkyMzIzNGZmOWE0OTIxYWFkYjJlMGVjN2IxYTMwZmNlNzNmYjllYzBjNDI3NmY5YWYyNjhm
NDA4ZWM2OCIKLSAgICAgICAgICAgICkKLSAgICAgICAgKQotCi0gICAgICAgIGJ1ZiA9IEJ1ZmZl
cigxMjgpCi0gICAgICAgIHB1c2hfZmluaXNoZWQoYnVmLCBmaW5pc2hlZCkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChidWYuZGF0YSwgbG9hZCgidGxzX2ZpbmlzaGVkLmJpbiIpKQotCi0KLWNs
YXNzIFZlcmlmeUNlcnRpZmljYXRlVGVzdChUZXN0Q2FzZSk6Ci0gICAgZGVmIHRlc3RfdmVyaWZ5
X2NlcnRpZmljYXRlX2NoYWluKHNlbGYpOgotICAgICAgICB3aXRoIG9wZW4oU0VSVkVSX0NFUlRG
SUxFLCAicmIiKSBhcyBmcDoKLSAgICAgICAgICAgIGNlcnRpZmljYXRlID0gbG9hZF9wZW1feDUw
OV9jZXJ0aWZpY2F0ZXMoZnAucmVhZCgpKVswXQotCi0gICAgICAgIHdpdGggcGF0Y2goImFpb3F1
aWMudGxzLnV0Y25vdyIpIGFzIG1vY2tfdXRjbm93OgotICAgICAgICAgICAgbW9ja191dGNub3cu
cmV0dXJuX3ZhbHVlID0gY2VydGlmaWNhdGUubm90X3ZhbGlkX2JlZm9yZQotCi0gICAgICAgICAg
ICAjIGZhaWwKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXModGxzLkFsZXJ0QmFk
Q2VydGlmaWNhdGUpIGFzIGNtOgotICAgICAgICAgICAgICAgIHZlcmlmeV9jZXJ0aWZpY2F0ZShj
ZXJ0aWZpY2F0ZT1jZXJ0aWZpY2F0ZSwgc2VydmVyX25hbWU9ImxvY2FsaG9zdCIpCi0gICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgICAgIHN0cihjbS5leGNlcHRpb24p
LCAidW5hYmxlIHRvIGdldCBsb2NhbCBpc3N1ZXIgY2VydGlmaWNhdGUiCi0gICAgICAgICAgICAp
Ci0KLSAgICAgICAgICAgICMgb2sKLSAgICAgICAgICAgIHZlcmlmeV9jZXJ0aWZpY2F0ZSgKLSAg
ICAgICAgICAgICAgICBjYWZpbGU9U0VSVkVSX0NBQ0VSVEZJTEUsCi0gICAgICAgICAgICAgICAg
Y2VydGlmaWNhdGU9Y2VydGlmaWNhdGUsCi0gICAgICAgICAgICAgICAgc2VydmVyX25hbWU9Imxv
Y2FsaG9zdCIsCi0gICAgICAgICAgICApCi0KLSAgICBkZWYgdGVzdF92ZXJpZnlfY2VydGlmaWNh
dGVfY2hhaW5fc2VsZl9zaWduZWQoc2VsZik6Ci0gICAgICAgIGNlcnRpZmljYXRlLCBfID0gZ2Vu
ZXJhdGVfZWNfY2VydGlmaWNhdGUoCi0gICAgICAgICAgICBjb21tb25fbmFtZT0ibG9jYWxob3N0
IiwgY3VydmU9ZWMuU0VDUDI1NlIxCi0gICAgICAgICkKLQotICAgICAgICB3aXRoIHBhdGNoKCJh
aW9xdWljLnRscy51dGNub3ciKSBhcyBtb2NrX3V0Y25vdzoKLSAgICAgICAgICAgIG1vY2tfdXRj
bm93LnJldHVybl92YWx1ZSA9IGNlcnRpZmljYXRlLm5vdF92YWxpZF9iZWZvcmUKLQotICAgICAg
ICAgICAgIyBmYWlsCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHRscy5BbGVy
dEJhZENlcnRpZmljYXRlKSBhcyBjbToKLSAgICAgICAgICAgICAgICB2ZXJpZnlfY2VydGlmaWNh
dGUoY2VydGlmaWNhdGU9Y2VydGlmaWNhdGUsIHNlcnZlcl9uYW1lPSJsb2NhbGhvc3QiKQotICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwgInNlbGYgc2lnbmVk
IGNlcnRpZmljYXRlIikKLQotICAgICAgICAgICAgIyBvawotICAgICAgICAgICAgdmVyaWZ5X2Nl
cnRpZmljYXRlKAotICAgICAgICAgICAgICAgIGNhZGF0YT1jZXJ0aWZpY2F0ZS5wdWJsaWNfYnl0
ZXMoc2VyaWFsaXphdGlvbi5FbmNvZGluZy5QRU0pLAotICAgICAgICAgICAgICAgIGNlcnRpZmlj
YXRlPWNlcnRpZmljYXRlLAotICAgICAgICAgICAgICAgIHNlcnZlcl9uYW1lPSJsb2NhbGhvc3Qi
LAotICAgICAgICAgICAgKQotCi0gICAgQHBhdGNoKCJhaW9xdWljLnRscy5saWIuWDUwOV9TVE9S
RV9uZXciKQotICAgIGRlZiB0ZXN0X3ZlcmlmeV9jZXJ0aWZpY2F0ZV9jaGFpbl9pbnRlcm5hbF9l
cnJvcihzZWxmLCBtb2NrX3N0b3JlX25ldyk6Ci0gICAgICAgIG1vY2tfc3RvcmVfbmV3LnJldHVy
bl92YWx1ZSA9IHRscy5mZmkuTlVMTAotCi0gICAgICAgIGNlcnRpZmljYXRlLCBfID0gZ2VuZXJh
dGVfZWNfY2VydGlmaWNhdGUoCi0gICAgICAgICAgICBjb21tb25fbmFtZT0ibG9jYWxob3N0Iiwg
Y3VydmU9ZWMuU0VDUDI1NlIxCi0gICAgICAgICkKLQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0
UmFpc2VzKHRscy5BbGVydEludGVybmFsRXJyb3IpIGFzIGNtOgotICAgICAgICAgICAgdmVyaWZ5
X2NlcnRpZmljYXRlKAotICAgICAgICAgICAgICAgIGNhZGF0YT1jZXJ0aWZpY2F0ZS5wdWJsaWNf
Ynl0ZXMoc2VyaWFsaXphdGlvbi5FbmNvZGluZy5QRU0pLAotICAgICAgICAgICAgICAgIGNlcnRp
ZmljYXRlPWNlcnRpZmljYXRlLAotICAgICAgICAgICAgICAgIHNlcnZlcl9uYW1lPSJsb2NhbGhv
c3QiLAotICAgICAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNl
cHRpb24pLCAiT3BlblNTTCBjYWxsIHRvIFg1MDlfc3RvcmVfbmV3IGZhaWxlZCIpCi0KLSAgICBk
ZWYgdGVzdF92ZXJpZnlfZGF0ZXMoc2VsZik6Ci0gICAgICAgIGNlcnRpZmljYXRlLCBfID0gZ2Vu
ZXJhdGVfZWNfY2VydGlmaWNhdGUoCi0gICAgICAgICAgICBjb21tb25fbmFtZT0iZXhhbXBsZS5j
b20iLCBjdXJ2ZT1lYy5TRUNQMjU2UjEKLSAgICAgICAgKQotICAgICAgICBjYWRhdGEgPSBjZXJ0
aWZpY2F0ZS5wdWJsaWNfYnl0ZXMoc2VyaWFsaXphdGlvbi5FbmNvZGluZy5QRU0pCi0KLSAgICAg
ICAgIyDCoHRvbyBlYXJseQotICAgICAgICB3aXRoIHBhdGNoKCJhaW9xdWljLnRscy51dGNub3ci
KSBhcyBtb2NrX3V0Y25vdzoKLSAgICAgICAgICAgIG1vY2tfdXRjbm93LnJldHVybl92YWx1ZSA9
ICgKLSAgICAgICAgICAgICAgICBjZXJ0aWZpY2F0ZS5ub3RfdmFsaWRfYmVmb3JlIC0gZGF0ZXRp
bWUudGltZWRlbHRhKHNlY29uZHM9MSkKLSAgICAgICAgICAgICkKLSAgICAgICAgICAgIHdpdGgg
c2VsZi5hc3NlcnRSYWlzZXModGxzLkFsZXJ0Q2VydGlmaWNhdGVFeHBpcmVkKSBhcyBjbToKLSAg
ICAgICAgICAgICAgICB2ZXJpZnlfY2VydGlmaWNhdGUoCi0gICAgICAgICAgICAgICAgICAgIGNh
ZGF0YT1jYWRhdGEsIGNlcnRpZmljYXRlPWNlcnRpZmljYXRlLCBzZXJ2ZXJfbmFtZT0iZXhhbXBs
ZS5jb20iCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
dHIoY20uZXhjZXB0aW9uKSwgIkNlcnRpZmljYXRlIGlzIG5vdCB2YWxpZCB5ZXQiKQotCi0gICAg
ICAgICMgdmFsaWQKLSAgICAgICAgd2l0aCBwYXRjaCgiYWlvcXVpYy50bHMudXRjbm93IikgYXMg
bW9ja191dGNub3c6Ci0gICAgICAgICAgICBtb2NrX3V0Y25vdy5yZXR1cm5fdmFsdWUgPSBjZXJ0
aWZpY2F0ZS5ub3RfdmFsaWRfYmVmb3JlCi0gICAgICAgICAgICB2ZXJpZnlfY2VydGlmaWNhdGUo
Ci0gICAgICAgICAgICAgICAgY2FkYXRhPWNhZGF0YSwgY2VydGlmaWNhdGU9Y2VydGlmaWNhdGUs
IHNlcnZlcl9uYW1lPSJleGFtcGxlLmNvbSIKLSAgICAgICAgICAgICkKLQotICAgICAgICB3aXRo
IHBhdGNoKCJhaW9xdWljLnRscy51dGNub3ciKSBhcyBtb2NrX3V0Y25vdzoKLSAgICAgICAgICAg
IG1vY2tfdXRjbm93LnJldHVybl92YWx1ZSA9IGNlcnRpZmljYXRlLm5vdF92YWxpZF9hZnRlcgot
ICAgICAgICAgICAgdmVyaWZ5X2NlcnRpZmljYXRlKAotICAgICAgICAgICAgICAgIGNhZGF0YT1j
YWRhdGEsIGNlcnRpZmljYXRlPWNlcnRpZmljYXRlLCBzZXJ2ZXJfbmFtZT0iZXhhbXBsZS5jb20i
Ci0gICAgICAgICAgICApCi0KLSAgICAgICAgIyB0b28gbGF0ZQotICAgICAgICB3aXRoIHBhdGNo
KCJhaW9xdWljLnRscy51dGNub3ciKSBhcyBtb2NrX3V0Y25vdzoKLSAgICAgICAgICAgIG1vY2tf
dXRjbm93LnJldHVybl92YWx1ZSA9IGNlcnRpZmljYXRlLm5vdF92YWxpZF9hZnRlciArIGRhdGV0
aW1lLnRpbWVkZWx0YSgKLSAgICAgICAgICAgICAgICBzZWNvbmRzPTEKLSAgICAgICAgICAgICkK
LSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXModGxzLkFsZXJ0Q2VydGlmaWNhdGVF
eHBpcmVkKSBhcyBjbToKLSAgICAgICAgICAgICAgICB2ZXJpZnlfY2VydGlmaWNhdGUoCi0gICAg
ICAgICAgICAgICAgICAgIGNhZGF0YT1jYWRhdGEsIGNlcnRpZmljYXRlPWNlcnRpZmljYXRlLCBz
ZXJ2ZXJfbmFtZT0iZXhhbXBsZS5jb20iCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwgIkNlcnRpZmljYXRlIGlzIG5vIGxv
bmdlciB2YWxpZCIpCi0KLSAgICBkZWYgdGVzdF92ZXJpZnlfc3ViamVjdChzZWxmKToKLSAgICAg
ICAgY2VydGlmaWNhdGUsIF8gPSBnZW5lcmF0ZV9lY19jZXJ0aWZpY2F0ZSgKLSAgICAgICAgICAg
IGNvbW1vbl9uYW1lPSJleGFtcGxlLmNvbSIsIGN1cnZlPWVjLlNFQ1AyNTZSMQotICAgICAgICAp
Ci0gICAgICAgIGNhZGF0YSA9IGNlcnRpZmljYXRlLnB1YmxpY19ieXRlcyhzZXJpYWxpemF0aW9u
LkVuY29kaW5nLlBFTSkKLQotICAgICAgICB3aXRoIHBhdGNoKCJhaW9xdWljLnRscy51dGNub3ci
KSBhcyBtb2NrX3V0Y25vdzoKLSAgICAgICAgICAgIG1vY2tfdXRjbm93LnJldHVybl92YWx1ZSA9
IGNlcnRpZmljYXRlLm5vdF92YWxpZF9iZWZvcmUKLQotICAgICAgICAgICAgIyB2YWxpZAotICAg
ICAgICAgICAgdmVyaWZ5X2NlcnRpZmljYXRlKAotICAgICAgICAgICAgICAgIGNhZGF0YT1jYWRh
dGEsIGNlcnRpZmljYXRlPWNlcnRpZmljYXRlLCBzZXJ2ZXJfbmFtZT0iZXhhbXBsZS5jb20iCi0g
ICAgICAgICAgICApCi0KLSAgICAgICAgICAgICMgaW52YWxpZAotICAgICAgICAgICAgd2l0aCBz
ZWxmLmFzc2VydFJhaXNlcyh0bHMuQWxlcnRCYWRDZXJ0aWZpY2F0ZSkgYXMgY206Ci0gICAgICAg
ICAgICAgICAgdmVyaWZ5X2NlcnRpZmljYXRlKAotICAgICAgICAgICAgICAgICAgICBjYWRhdGE9
Y2FkYXRhLAotICAgICAgICAgICAgICAgICAgICBjZXJ0aWZpY2F0ZT1jZXJ0aWZpY2F0ZSwKLSAg
ICAgICAgICAgICAgICAgICAgc2VydmVyX25hbWU9InRlc3QuZXhhbXBsZS5jb20iLAotICAgICAg
ICAgICAgICAgICkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICAg
ICAgc3RyKGNtLmV4Y2VwdGlvbiksCi0gICAgICAgICAgICAgICAgImhvc3RuYW1lICd0ZXN0LmV4
YW1wbGUuY29tJyBkb2Vzbid0IG1hdGNoICdleGFtcGxlLmNvbSciLAotICAgICAgICAgICAgKQot
Ci0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHRscy5BbGVydEJhZENlcnRpZmlj
YXRlKSBhcyBjbToKLSAgICAgICAgICAgICAgICB2ZXJpZnlfY2VydGlmaWNhdGUoCi0gICAgICAg
ICAgICAgICAgICAgIGNhZGF0YT1jYWRhdGEsIGNlcnRpZmljYXRlPWNlcnRpZmljYXRlLCBzZXJ2
ZXJfbmFtZT0iYWNtZS5jb20iCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgKLSAgICAgICAgICAgICAgICBzdHIoY20uZXhjZXB0aW9uKSwgImhvc3RuYW1l
ICdhY21lLmNvbScgZG9lc24ndCBtYXRjaCAnZXhhbXBsZS5jb20nIgotICAgICAgICAgICAgKQot
Ci0gICAgZGVmIHRlc3RfdmVyaWZ5X3N1YmplY3Rfd2l0aF9zdWJqYWx0bmFtZShzZWxmKToKLSAg
ICAgICAgY2VydGlmaWNhdGUsIF8gPSBnZW5lcmF0ZV9lY19jZXJ0aWZpY2F0ZSgKLSAgICAgICAg
ICAgIGFsdGVybmF0aXZlX25hbWVzPVsiKi5leGFtcGxlLmNvbSIsICJleGFtcGxlLmNvbSJdLAot
ICAgICAgICAgICAgY29tbW9uX25hbWU9ImV4YW1wbGUuY29tIiwKLSAgICAgICAgICAgIGN1cnZl
PWVjLlNFQ1AyNTZSMSwKLSAgICAgICAgKQotICAgICAgICBjYWRhdGEgPSBjZXJ0aWZpY2F0ZS5w
dWJsaWNfYnl0ZXMoc2VyaWFsaXphdGlvbi5FbmNvZGluZy5QRU0pCi0KLSAgICAgICAgd2l0aCBw
YXRjaCgiYWlvcXVpYy50bHMudXRjbm93IikgYXMgbW9ja191dGNub3c6Ci0gICAgICAgICAgICBt
b2NrX3V0Y25vdy5yZXR1cm5fdmFsdWUgPSBjZXJ0aWZpY2F0ZS5ub3RfdmFsaWRfYmVmb3JlCi0K
LSAgICAgICAgICAgICMgdmFsaWQKLSAgICAgICAgICAgIHZlcmlmeV9jZXJ0aWZpY2F0ZSgKLSAg
ICAgICAgICAgICAgICBjYWRhdGE9Y2FkYXRhLCBjZXJ0aWZpY2F0ZT1jZXJ0aWZpY2F0ZSwgc2Vy
dmVyX25hbWU9ImV4YW1wbGUuY29tIgotICAgICAgICAgICAgKQotICAgICAgICAgICAgdmVyaWZ5
X2NlcnRpZmljYXRlKAotICAgICAgICAgICAgICAgIGNhZGF0YT1jYWRhdGEsIGNlcnRpZmljYXRl
PWNlcnRpZmljYXRlLCBzZXJ2ZXJfbmFtZT0idGVzdC5leGFtcGxlLmNvbSIKLSAgICAgICAgICAg
ICkKLQotICAgICAgICAgICAgIyBpbnZhbGlkCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0
UmFpc2VzKHRscy5BbGVydEJhZENlcnRpZmljYXRlKSBhcyBjbToKLSAgICAgICAgICAgICAgICB2
ZXJpZnlfY2VydGlmaWNhdGUoCi0gICAgICAgICAgICAgICAgICAgIGNhZGF0YT1jYWRhdGEsIGNl
cnRpZmljYXRlPWNlcnRpZmljYXRlLCBzZXJ2ZXJfbmFtZT0iYWNtZS5jb20iCi0gICAgICAgICAg
ICAgICAgKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgICAgICBz
dHIoY20uZXhjZXB0aW9uKSwKLSAgICAgICAgICAgICAgICAiaG9zdG5hbWUgJ2FjbWUuY29tJyBk
b2Vzbid0IG1hdGNoIGVpdGhlciBvZiAnKi5leGFtcGxlLmNvbScsICdleGFtcGxlLmNvbSciLAot
ICAgICAgICAgICAgKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19jZXJ0aWZp
Y2F0ZS5iaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2NlcnRpZmljYXRlLmJpbgpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTliZGU2MjkwNTQ4NTk5YmE4NmY4NWMxNTA2MTNiZjc3
NmFjZDdjOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMApHSVQgYmlu
YXJ5IHBhdGNoCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKbGl0ZXJhbCAxNTM4CnpjbWQ7UFZFeEN5
ITF7fVVee1lWPj5xbW5vbWRGTG5PcEh1U29EOFJSOClpbWoyRWBjZ3ZUPHMpZDk7MSFXbnw9TAp6
V2lhcUg8VGxgQlYtOTZ1NkswQnRHKm1OQzBkY3JeV0NKUW9HVj0yamc3ZWMjJGBneEg3Mk5WbV5I
TEheR0ojXncKemopcjBlQXxRM2xKaVBnKE1ZX3B9eTJZdFFXdk45NWFeayMoNzZ1a1ptV0MhcSMp
Zjg1Oz1EIXsySWRDbFBfOThkCnpzJihROXE5OXx+ZEg5P1lpJVc3KzYmJitRR0t2eF80MyFOT0E/
fWRFP0c4Z0IwfEFJNUlDSnVvNkxUezFpJVNmZQp6NyNBVVhrJiVed3hyd28jMFZ2K1opV3ExeEZr
ZUk4LTBeKlZPMHJteipoQHh7QitYTStHYlkoYFQjbjI5Y2l7N3QKekJmdDN+P3hidytLRH5MPkpn
MWxKdih0Xnc/dEViKithLU05ekdacmkmKmklUCZpcjFqdGh3el40PksqY3lNQkdBCnpNeHtpdGdu
NDxIJENWMCs+d0QkMCtgOEY1R24tSDRVSiQlTj4xX1hZWDB5ZkRtQ0krJl9qPFpeT1coZDR0cmc0
OQp6S21CLW93ZSplWUh4aj5wb0JKcjViJXBRajhGTWMlZHxSZX1kN0RfNF5ASi1mKD0+aEBQZV4l
Z15uMXNWbzx9KmwKelh8Wj5FVWNFb2piOXE7RD89RnZwUTcpenZDZC07T3dBT1BndEAmYWh4JHJV
amdrXmJsJVI7UyV5TUZNV1U2PUpyCnpDWW9SQSlTS3M9KSgpKTZ5WFJsT2MyYVp4UzJtfX05KFJU
KU4yaGF9MUVVKUZjUm0hb0BAZ3I2dzN9TVhKVk9nUAp6MSh8fWNgd1h+Kmp6cXJ5eDRCckAkU1N8
KmlyRmJ3IXlsI0BTRUZYJF8qZ2JvQD1EQFhFQjd4YUp7MyhgREV7REUKej5ZWiZ7Uz5MWEQrZzVz
NUpAOSQlXzQ0UTYxPlZePXpnUSt7KGwhNXQ1JENeJmBfI1VecFkmc1c+ZU1UJDd2eSlhCno5LVBM
c0BaTDFwdUFSUDIlIX58LWk8PWteMEFwa2lJMSRNVHZoVyZrSHpDQyNBMjMjQmA1NzdpdiM+QlR1
YFYhPgp6MUBUb2BLeHZMY25+amxgbTdTUnAmU0VtKTBaOXZrbHJ0R0hLb3MrX2hfUShEem1rMXk5
SyNeQ3hqUjJRfEZYfk4KenQqMnszNFFmRyhtMDhMUk4qWUEmP211PHcqK3I5Rz1CMHxLQEBIe3Fk
QHxrVXVgcUNuS2IxMkA2Rm0xdDgjRmU8Cno5TH50ZFFmXlJjVTwyYkRGdHIoRWwjfj0kPkZieEk3
TUNPXj5KQC08QWMmKXZtcyRjOSlpMDxfUEUxWk1EJHhUSAp6MkJ2VmBqQlQzND0qfnxyRjM+a3sx
X2dwVmk7YVBtZnlEeHwxdHg3cSNPTihiRWR5cFZQemopeVQkRj5IJVlYJDUKekZxYnRsc0RKSD02
IT4hTnhkeX1qVUFAKTklcFlaeiNjeVR7VTgxen1fTko/RGQleUdDYjxXI1RuVlBRMXFaUnRqCnpw
fDVyUmVEfmQ0VEU1Iy1OQGdzbVV3N3hELWZnRkhpM2c/S1lOaT43OXA3ZjNDQDsjLW5pVShHJEBE
aVc8VjUpQwp6NFhNbXhrTjZvWlhRbk5mLTcjN0dRSXV8X1k1ZXI/aVgtZDQmV3ZrWWVPWWo9KUZS
JHJLPnxEZj9WbyRqXy01T3QKeklidUpxbTIhMDU9NmJxQ1RkYVB8UHAkY2ZGT14/RW49MUR1TkE3
angmSlhNMm0mbCotSTxtOEI8O2ByUDRDe3hmCno4KE93Y0lJYH5GN2p1OGIxXjREI1pHM3UwajN2
I1Urd3FRKnQlQld+P05oWikhKy02by0pNlB6bHorcyhRYWdATAp6b3RfUGBkT3RlX3cwfUNmYFAo
cFRTSEdPOXE5THhWWDZXPikmVHNPUT5XcSs2Xlc4cWIqTThaYHYkYldAUmEyOU8KelF0Yn5EbTNN
RzNfVSteZngkQGcyPS0qQSg0LU1BYTQoMnlxbD5jUFNAeSVgN0gxJE85MiV7PUsqfnBfVll2WklV
CnpqU3BVNyklVXU1IV54QEZfO0s+N3RMQFdnYHxnbHBIclh3NmlPRGB2YEheeCVOQWpUJGk7YEQj
R2NXKUVVTHJ9NAoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfY2VydGlmaWNh
dGVfdmVyaWZ5LmJpbiBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfY2VydGlmaWNhdGVfdmVyaWZ5
LmJpbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmYwODM5NTBiNTM4YzEyM2ViOWVk
YzhmY2JlZDkyZTE5MzI5NTczNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKbGl0ZXJhbCAzOTIK
emNtVjszMGVBaW4wMEQjdTFPYjQ4ck91PTljT2QwQXZ2MyU5QzI9bSU3PXIqIyE8YiZhPld7JUcl
fFdDT0BgclZhCnpsOzhHemVsQDVzJlZpWDc2eDs7flJXJjdeeiVBenUpZil6bEdDK0k2Tz9wY3Mh
fTxtKDNBWG0qYmhucVgoIS1HWgp6byE0fkJYUmAkWXpHUD1UZSZofD5UP2UjVDxJZFdobzVeMEBo
Zlh3RFU3OUJweUFSM0peP2FAQngzIUB+QkprTTUKekgxPUFEJjEhRGZ4MnJ4Yz1mJl9qZCpmJTRs
LVZsbUUyNkV4dkUqYWImcE5ONzE+bHlDP1hsO2xOTDx1V0Q2fGUzCnpgRj5FNHZ1MkE5NUA3YSpk
Kkp8V0BtJkI3c0xublFyen5zKHQ7TGlQPDI9PTEkfX0yZExNPTE4P28mM2IrPmI/dgp6MV5fRn4j
bXhKT2JtUnl2UDg8aGhsSVlQKyVZVHQqUGFKNzdUeFhkYXwwQmRsMzY+ajFDQzBhVE9iOzg4cVpD
NSgKemFiSTNZS21FalpxSHxTMVZGWmJJQVl+S0heeyVZZW5gVT9TJlgob1dtNUR8UU0jc2JIR0Z3
XyRveTh7UTNfX0JYCm07e2A+ejg+UFNHOGpXVGAwISV5bjgmSFd+dEhDJihaKCRFdHlVTVFBUTJ8
QDhYVEFGWAoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfY2xpZW50X2hlbGxv
LmJpbiBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfY2xpZW50X2hlbGxvLmJpbgpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMTE0MGFlY2ZjNjlmYjg0ZDViZWQ2YjFhYWM5MTYyZWMxM2Ew
NDY4Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMApHSVQgYmluYXJ5
IHBhdGNoCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKbGl0ZXJhbCAyNTgKemNtWlElVkVEKChFVXte
bV8yKHp2dXxhNDRSbFY2MHxJdSZsO21lLUNfQlokemVvUzNnX1dZe0N0YW5YfEYxOCYhCnpaTTBi
UD1BQ35HVVEqNm83ZCliWmtMXkRuZGVDVCprdHFZNEZxMUgmRmYkX3EhK0hpfDI2cU5tMjV8O1Ft
Zzt8dAp6VUVFNGRTKUchJSRHJVRFfEV0TCVOPk11RjtfRmA3RFNxa2Vlb1FgfDc4TyFfIVJZKlly
UkJEWmBuSWUoXj88U04KenFINmZvTzhGVEpVLSprfFY5O2paPFh+cDBtI0xTb210eD4kOzl9dDVV
fTBmcVZQcytpdlJOM0lmVlN1fEZmbFV6CnlVJj4ocXBNZ1A7IUh8S0tmdSV1IWZxe1Z5TzB6PzA3
Nno2XnBmQ2Q/MUN2dCgwfHhfPkxraUZnTWxKeCRJI0dINgoKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlv
cXVpYy90ZXN0cy90bHNfY2xpZW50X2hlbGxvX3dpdGhfYWxwbi5iaW4gYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
dGVzdHMvdGxzX2NsaWVudF9oZWxsb193aXRoX2FscG4uYmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA5MTEzYTNlNzVlMTRkNmQ5MjkwZjVkYTQyOWEzMjUwMmQ3YzRjMjZjLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCkdJVCBiaW5hcnkgcGF0Y2gKbGl0
ZXJhbCAwCkhjbVY/ZDAwMDAxCgpsaXRlcmFsIDMwNgp6Y21aUSVWQU53fmVqNlQ+emMrR0BAMn1N
dG5Dfm9tayNPY1ZwTG87M14tTkV6S2g8bj1wSXllbHojK15pJXB9YXIKekBTbC1eO3FVKlk0NWtk
bTQ2RjwrNEotQHszflclRTlaSXRSWCN0PSgyTG1HYDExQUhNTGthXlVQPjcrXzA0T05JCnpBalpI
VG9TYyhpbnYjfjJTZF4rO1NlbHV2bXo8eD16fEZ3SSUpclJSenkqWEg0QmB5M0soJiQjJTBOOD1L
dDNDNQp6aE93QHBCfWd8PWopOCVmTDVATCZnXylJXmpoVGE7Z00pKlVnTnVXa2dOMXtZZ049b2Vt
NjQ1K0w3UmJAaUo2NSMKem13XmZCM31YZyYyM01kKU4wdHNKIXgtbzQ0ZCptOVBsKXx7XjN2JXwl
KG1ORSp8V2JYV2lXUVUtZig0Ryg2YjR+CmktXkpRaUZgaG0/Rnw7akQmMWImeG0jQnI9eXVTbiVE
THIxNnNSUkkrKE1NX2sKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2NsaWVu
dF9oZWxsb193aXRoX3Bzay5iaW4gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX2NsaWVudF9oZWxs
b193aXRoX3Bzay5iaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmNjk1YzNhN2Iz
N2MyNzAxOWFmYTUxYTYwNTI1Y2JiYzEwOTY2YjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmxp
dGVyYWwgNDgxCnpjbVpRJVY3JHhCOUY/K1MqQiRFeGVBUWIjR21yQXV6Y3NxTkdFaXtCe29KK1I2
Q0RxbXUqKWVwWndsalc2T1lVUAp6YFp8UC1gPk85dTlxVkp+OWx4WGAmWSQ7I3p4R2VkOFV7OURD
U2dXbFc9MDBhSl9jaDNjTHJBbWFSeGAwRFJ4SDcKekEwKzlXS2R7VzlgUy1QfV9XM1YqWTkwJTBz
KExEXyhEYCRaKm8+REY0aC1IRTstPWpkQXZQKz9gJWIrcWN5eDNBCnopJShsLVVIT3xHKW1YTmNM
N1JiLWdQRW1YcmUzO1VpaC1BYmktQ2lLZ0B1YGdrJTx3PVc/XjZnK00+KEEjS18zTgp6eiN6alEj
bFJxNWwzSEElUzVUQiRtUk9SU3BJbmsoUCtGeylvUyp4RERUNjd7VTkxYyY0RlcqNVkqM21WTzB6
SnEKekd5O1ZnNz1lNi1RVWVBSzF9MjlUcGJkOyUzfGNeOE9AXkhlRWV2KFBIczdoT3syYUhgWnF8
SzhRTjlHeGlPVTBhCnpAWjk2TW5Fdm5FZ1JeXj53VF82JUEzZUcpdEA1NXtrb1ZPanBNZE1xaT1Q
RWxhQyFmOCg5TDM3el5jan1kc0x4Uwp6KipmI1dVRXhWU01+QDNIbz50Kl4+UUNnP1NIJVktVms/
dVJ5UVZ6KHEkd0AjUjIkZzNgcGUyR2YwcHxfVTtjQ1EKeiU3RWhuJXp0V3JSR2F6RVZsWHJpP154
Xm5fckxsMVY7WX5sYkRwMCNwNGQ8ais7Ql8kbVFrYTBeZzYkYT4jTnFNClN1R311JXVDS2tSTCpr
VEZIWHtJQ0FGQGdTCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19jbGllbnRf
aGVsbG9fd2l0aF9zbmkuYmluIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19jbGllbnRfaGVsbG9f
d2l0aF9zbmkuYmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNTY4YTg2MTY3ZmYx
NjE4MzFmM2U5NzllNzQ1MDJjMzAzZTE2YTVlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpsaXRl
cmFsIDI4Ngp6Y21aUSVWM2NCSm8+QUxyQkVycShiU0JpNVVFWTN2ZWQwOVI+SiptTz17fip0MD9r
LVZ2Szc9ZSZjMTdLYCtGY2AKemwkRj4rPiNHeCg/bXRvM0tKKEpqdnZHbnVlcFIxTlZfKnx6NUBy
LTtXQEtQRSYweCZuJmZ2LSomZnYoaE99RjRECnpgdzVZPXNUYU9tY2g4aCgrczshaVk5Rz1mdXlF
cH5qbmgqV3kqWkdPeH1AUiMlNy02JGRZMyZuenE8Y2BfdjcheQp6a0dPYmQpKDM3KTVeOFdAJn1R
SnxVfW1ZOHNoNiZvViZHLXFWJkxGbFZQUiVyV01UeGVTczBqcncmKmYyRiNAZSsKemtZRXNGVT1V
OHUkdUNWdyVTa0xzKWgjVHxPeDg9eiY7N3JZIVRkaTFnQ0soOzExa2VkZzgpITE4PGJ7OyhrdSl0
ClhqWCtAck1nfUlRMm5HJVlDV2pRRGBIV2x1MXxDclQKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvdGVzdHMvdGxzX2VuY3J5cHRlZF9leHRlbnNpb25zLmJpbiBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0
cy90bHNfZW5jcnlwdGVkX2V4dGVuc2lvbnMuYmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAzMzU0NmM3MGM0OWNlNmIzYjM3MzlmYTI5NDMzZTE3Mzk3NTUzZWE2Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAw
CkhjbVY/ZDAwMDAxCgpsaXRlcmFsIDkwCnpjbWQ7SlU8aExmYE07RFE7NkRSe0FQYjBLYUFqYStV
fStGd1V8P1dfKChGKjBnQEw2SkQ5cGdmen5tSWN6e0NKagpRZzk8bnBtPmcwVnhFTDZAMDR9VHUq
I0gwbAoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfZW5jcnlwdGVkX2V4dGVu
c2lvbnNfd2l0aF9hbHBuLmJpbiBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfZW5jcnlwdGVkX2V4
dGVuc2lvbnNfd2l0aF9hbHBuLmJpbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGQ4
NDM2YTdiMzM4MzA3N2Y0YTM5YWQzMThhNThiMjhlM2JkMzU3Mi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMApIY21WP2Qw
MDAwMQoKbGl0ZXJhbCAxMTUKemNtZDtKVjkwMDRXZEgjSTFgWS1gKXtIYDNCWkwxLTg2cHxOOFEy
KEQ4V3tmblhKQ2NXT2JofT8qRXNVO3o0OStsCnpNP3xVZWxpYGE4M3x0SjElblUzKjErNCNuRj5v
XzVOLXs3cUZyXkZwY1ZnZylWWElldkpYIUlXb3lQTiU0OXBCbgpMP29XVT1GdFB5dlFWMVFSCgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19lbmNyeXB0ZWRfZXh0ZW5zaW9uc193
aXRoX2FscG5fYW5kX2Vhcmx5X2RhdGEuYmluIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19lbmNy
eXB0ZWRfZXh0ZW5zaW9uc193aXRoX2FscG5fYW5kX2Vhcmx5X2RhdGEuYmluCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA3ZTkwNjlmNmJlM2QyZTQ1N2U2M2M5NDJmYzlmMDU0Y2RiYWM0
YTkxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCkdJVCBiaW5hcnkg
cGF0Y2gKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpsaXRlcmFsIDExNgp6Y21kO0pVP15iN1YqbWpH
MWBZLWApe0hgM0JMZkM0MjhSRGo4TndKczc/PkNZY3V4bGBhU0FrPXgrUSh+ZFkwMzEKenxObk99
YUdxSElUcX05SFk2dj82OHZ7IU4hfmckNCY1U0BNa2krYF83WHZGKWtlUHdXe1JzbVgxMHlwN0JM
aD5xCkswMFREenFhKi1vXzhaNm0KCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxz
X2ZpbmlzaGVkLmJpbiBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfZmluaXNoZWQuYmluCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNjRiYjJmMmE5ZDI3NTM4Y2EyMTU0YWI3OTRmMzll
Zjc3NmZkNWZhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCkdJVCBi
aW5hcnkgcGF0Y2gKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpsaXRlcmFsIDM2CnVjbVYrPDBOZWkq
MDAxRUlTQ1RSYHxDJmk1c0BwQ08kRlpYaSZVNT5ventEcVNuKH1EJDI8JkphTkQtUj0KCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX25ld19zZXNzaW9uX3RpY2tldC5iaW4gYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvdGVzdHMvdGxzX25ld19zZXNzaW9uX3RpY2tldC5iaW4KZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDY0MzliNDczMWUwNGIzYjZkNmQzYTYxNWZjMzNkZTVkZjc0NmNm
NWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKR0lUIGJpbmFyeSBw
YXRjaApsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmxpdGVyYWwgNTcKemNtWlEhVUAmRTEzflZeXlkm
fENmZ1RuMStBRDM1RTlCfDcxbH44bHhnMD9BPmAlTn45MChae0g/Nj1FYkNZQDx5Ck07OSReVlZF
R1JPMER3anFKXiVtIQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfbmV3X3Nl
c3Npb25fdGlja2V0X3dpdGhfdW5rbm93bl9leHRlbnNpb24uYmluIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rl
c3RzL3Rsc19uZXdfc2Vzc2lvbl90aWNrZXRfd2l0aF91bmtub3duX2V4dGVuc2lvbi5iaW4KZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzNzkyODkwYWNlNzUxM2NmYjVhYTE4YTM3M2E5
NDlmNDFkYjhjY2YuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKR0lU
IGJpbmFyeSBwYXRjaApsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmxpdGVyYWwgNjQKemNtWlEhVjZi
NmUzflZeXlkmfENmZ1RuMStBRDM1RTlCfDcxbH44bHhnMD9BPmAlTn45MChae0g/Nj1FYkNZQDx5
ClQ7QWhaY1ZFR1JPMjleeFdZNURtOEY7Zn0qCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rl
c3RzL3Rsc19zZXJ2ZXJfaGVsbG8uYmluIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19zZXJ2ZXJf
aGVsbG8uYmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMGE2YzUxZmU1NjAyOTUx
M2I4MzhjNmQyNDMxOWNlNWM4ZmZkYmY0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpsaXRlcmFs
IDE1NQp6Y21WO00wQSY5SDAwNVQqMUZmaTFhblk4NSN1ZSZ3SGNfNUctKXxsIV5SV2tCO29nQDJz
RUFJMmZGUFJnZn0rdWUKeiFPSnFFRGNSaXEwN0BEfGlxSj99UV52b35SbHpjJUdCcHpkMDAyKF9E
KnlybTFPUEp0TUYxQjdLP0k4QCY/cTg4CnoqaF8hUjA7JENES0ZSfHI8SHJKO3FlP1MqUEh1YWxp
Q29HWVAmQEU5aXBHPENIQXhaP1p9VE0oQ2NMNFFqZWpfRQpKN1JXbTAmJDFOKkt7QH5jCgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19zZXJ2ZXJfaGVsbG9fd2l0aF9wc2suYmlu
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19zZXJ2ZXJfaGVsbG9fd2l0aF9wc2suYmluCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZWNjZGY1OWFiOTVlODllNDA0Y2UyMzRkYjNmODFk
MThkZTFlMGViLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCkdJVCBi
aW5hcnkgcGF0Y2gKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpsaXRlcmFsIDE2MQp6Y21WO1MwQUJ3
QjAwNWw+MUkpVXcxcEZKLTZndz0meHBnNFZIYHg/JCt4JnFpNkI+SylgOWI1TUh6MVVRPWpmSHQK
el52PU8+aE9tVHwwbDtHPlYkRjY9ZnshbldGSEIyIWFqKzh0MDAzMTBEKnlybTFPUEp0TUYxQjdL
P0hAQCZkY2xrCnpSRkI0Mnpmcmo4K0pxYFZSPFVIRmV8R31QRl5tQEVoIzBtJm02TmV0Vz1Zb2NT
dlkhQTV7bmk9YyYqNGw3bi1kQgpQKGBATm9Wcy0jMjAwSUMyNkkoO2sKCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvdGVzdHMvdGxzX3NlcnZlcl9oZWxsb193aXRoX3Vua25vd25fZXh0ZW5zaW9u
LmJpbiBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfc2VydmVyX2hlbGxvX3dpdGhfdW5rbm93bl9l
eHRlbnNpb24uYmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYmU1YjcwNzNmZGJl
M2NiN2JmZmI3MThiMTQ2ZGUyNTEwODNiZWQ1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpsaXRl
cmFsIDE2Mgp6Y21WO1QwQTJxQTAwNW8/MUZmaTFhblk4NSN1ZSZ3SGNfNUctKXxsIV5SV2tCO29n
QDJzRUFJMmZGUFJnZn0rdWUKeiFPSnFFRGNSaXEwN0BEfGlxSj99UV52b35SbHpjJUdCcHpkMDAz
NDFEKnlybTFPUEp0TUYxQjdLP0k4QCY/cTg4CnoqaF8hUjA7JENES0ZSfHI8SHJKO3FlP1MqUEh1
YWxpQ29HWVAmQEU5aXBHPENIQXhaP1p9VE0oQ2NMNFFqZWpfRQpRN1JXbTAmJDJLJTAwVS1rWnxS
ZGxfeTdPXgoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy91dGlscy5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YWlvcXVpYy90ZXN0cy91dGlscy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjBi
YWIyYjY4YTI0OGZiYzUzNDBmMjNlMmE3OTc2NzA1MGE1ZjVhNC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdXRpbHMucHkK
KysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi1pbXBvcnQgYXN5bmNpbwotaW1wb3J0IGRh
dGV0aW1lCi1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi0KLWZyb20gY3J5
cHRvZ3JhcGh5IGltcG9ydCB4NTA5Ci1mcm9tIGNyeXB0b2dyYXBoeS5oYXptYXQuYmFja2VuZHMg
aW1wb3J0IGRlZmF1bHRfYmFja2VuZAotZnJvbSBjcnlwdG9ncmFwaHkuaGF6bWF0LnByaW1pdGl2
ZXMgaW1wb3J0IGhhc2hlcwotZnJvbSBjcnlwdG9ncmFwaHkuaGF6bWF0LnByaW1pdGl2ZXMuYXN5
bW1ldHJpYyBpbXBvcnQgZWMKLQotCi1kZWYgZ2VuZXJhdGVfZWNfY2VydGlmaWNhdGUoY29tbW9u
X25hbWUsIGN1cnZlPWVjLlNFQ1AyNTZSMSwgYWx0ZXJuYXRpdmVfbmFtZXM9W10pOgotICAgIGtl
eSA9IGVjLmdlbmVyYXRlX3ByaXZhdGVfa2V5KGJhY2tlbmQ9ZGVmYXVsdF9iYWNrZW5kKCksIGN1
cnZlPWN1cnZlKQotCi0gICAgc3ViamVjdCA9IGlzc3VlciA9IHg1MDkuTmFtZSgKLSAgICAgICAg
W3g1MDkuTmFtZUF0dHJpYnV0ZSh4NTA5Lk5hbWVPSUQuQ09NTU9OX05BTUUsIGNvbW1vbl9uYW1l
KV0KLSAgICApCi0KLSAgICBidWlsZGVyID0gKAotICAgICAgICB4NTA5LkNlcnRpZmljYXRlQnVp
bGRlcigpCi0gICAgICAgIC5zdWJqZWN0X25hbWUoc3ViamVjdCkKLSAgICAgICAgLmlzc3Vlcl9u
YW1lKGlzc3VlcikKLSAgICAgICAgLnB1YmxpY19rZXkoa2V5LnB1YmxpY19rZXkoKSkKLSAgICAg
ICAgLnNlcmlhbF9udW1iZXIoeDUwOS5yYW5kb21fc2VyaWFsX251bWJlcigpKQotICAgICAgICAu
bm90X3ZhbGlkX2JlZm9yZShkYXRldGltZS5kYXRldGltZS51dGNub3coKSkKLSAgICAgICAgLm5v
dF92YWxpZF9hZnRlcihkYXRldGltZS5kYXRldGltZS51dGNub3coKSArIGRhdGV0aW1lLnRpbWVk
ZWx0YShkYXlzPTEwKSkKLSAgICApCi0gICAgaWYgYWx0ZXJuYXRpdmVfbmFtZXM6Ci0gICAgICAg
IGJ1aWxkZXIgPSBidWlsZGVyLmFkZF9leHRlbnNpb24oCi0gICAgICAgICAgICB4NTA5LlN1Ympl
Y3RBbHRlcm5hdGl2ZU5hbWUoCi0gICAgICAgICAgICAgICAgW3g1MDkuRE5TTmFtZShuYW1lKSBm
b3IgbmFtZSBpbiBhbHRlcm5hdGl2ZV9uYW1lc10KLSAgICAgICAgICAgICksCi0gICAgICAgICAg
ICBjcml0aWNhbD1GYWxzZSwKLSAgICAgICAgKQotICAgIGNlcnQgPSBidWlsZGVyLnNpZ24oa2V5
LCBoYXNoZXMuU0hBMjU2KCksIGRlZmF1bHRfYmFja2VuZCgpKQotICAgIHJldHVybiBjZXJ0LCBr
ZXkKLQotCi1kZWYgbG9hZChuYW1lKToKLSAgICBwYXRoID0gb3MucGF0aC5qb2luKG9zLnBhdGgu
ZGlybmFtZShfX2ZpbGVfXyksIG5hbWUpCi0gICAgd2l0aCBvcGVuKHBhdGgsICJyYiIpIGFzIGZw
OgotICAgICAgICByZXR1cm4gZnAucmVhZCgpCi0KLQotZGVmIHJ1bihjb3JvKToKLSAgICByZXR1
cm4gYXN5bmNpby5nZXRfZXZlbnRfbG9vcCgpLnJ1bl91bnRpbF9jb21wbGV0ZShjb3JvKQotCi0K
LVNFUlZFUl9DQUNFUlRGSUxFID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVf
XyksICJweWNhY2VydC5wZW0iKQotU0VSVkVSX0NFUlRGSUxFID0gb3MucGF0aC5qb2luKG9zLnBh
dGguZGlybmFtZShfX2ZpbGVfXyksICJzc2xfY2VydC5wZW0iKQotU0VSVkVSX0NFUlRGSUxFX1dJ
VEhfQ0hBSU4gPSBvcy5wYXRoLmpvaW4oCi0gICAgb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwg
InNzbF9jZXJ0X3dpdGhfY2hhaW4ucGVtIgotKQotU0VSVkVSX0tFWUZJTEUgPSBvcy5wYXRoLmpv
aW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgInNzbF9rZXkucGVtIikKLVNLSVBfVEVTVFMg
PSBmcm96ZW5zZXQob3MuZW52aXJvbi5nZXQoIkFJT1FVSUNfU0tJUF9URVNUUyIsICIiKS5zcGxp
dCgiLCIpKQotCi1pZiBvcy5lbnZpcm9uLmdldCgiQUlPUVVJQ19ERUJVRyIpOgotICAgIGxvZ2dp
bmcuYmFzaWNDb25maWcobGV2ZWw9bG9nZ2luZy5ERUJVRykKLQotaWYgKAotICAgIHN5cy5wbGF0
Zm9ybSA9PSAid2luMzIiCi0gICAgYW5kIHN5cy52ZXJzaW9uX2luZm8ubWFqb3IgPT0gMwotICAg
IGFuZCBzeXMudmVyc2lvbl9pbmZvLm1pbm9yID09IDgKLSk6Ci0gICAgIyBQeXRob24gMy44IHVz
ZXMgUHJvYWN0b3JFdmVudExvb3AgYnkgZGVmYXVsdCwKLSAgICAjIHdoaWNoIGJyZWFrcyBVRFAg
LyBJUHY2IHN1cHBvcnQsIHNlZToKLSAgICAjCi0gICAgIyBodHRwczovL2J1Z3MucHl0aG9uLm9y
Zy9pc3N1ZTM5MTQ4Ci0KLSAgICBhc3luY2lvLnNldF9ldmVudF9sb29wX3BvbGljeShhc3luY2lv
LldpbmRvd3NTZWxlY3RvckV2ZW50TG9vcFBvbGljeSgpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9x
dWljL3Rlc3RzL3ZlcnNpb25fbmVnb3RpYXRpb24uYmluIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Zl
cnNpb25fbmVnb3RpYXRpb24uYmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ODUw
OWM5MDk5Y2VhOGFlZTI4ZGVmZmI1NTA2MmQzOTNkMWMzYmE4Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAwCkhjbVY/ZDAw
MDAxCgpsaXRlcmFsIDMxCmxjbWFGRzAwYlBmKTxrKmtZRzJ7V0BsKVR+P0FLSzNnfDY9SVYqZVEh
Qm11SUozaitXRQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy93M2MtaW1wb3J0Lmxv
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy90ZXN0cy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMzkwZjEzZTFiMmMzNzUzZTI4NjkzZmFlMjM4MjUyYWY2N2E3ODg2My4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMv
dGVzdHMvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1UaGUg
dGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3Np
dG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5z
dGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8v
Z2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9T
Y3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBt
b2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVz
IHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWly
aW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxl
czoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMv
aW5pdGlhbF9jbGllbnQuYmluCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL2luaXRpYWxfc2VydmVyLmJp
bgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYWlvcXVpYy90ZXN0cy9weWNhY2VydC5wZW0KLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMv
cmV0cnkuYmluCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Nob3J0X2hlYWRlci5iaW4KLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fp
b3F1aWMvdGVzdHMvc3NsX2NlcnQucGVtCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3NzbF9jZXJ0X3dp
dGhfY2hhaW4ucGVtCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3NzbF9rZXkucGVtCi0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9x
dWljL3Rlc3RzL3Rlc3RfYXN5bmNpby5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2FzeW5j
aW9fY29tcGF0LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfYnVmZmVyLnB5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
aW9xdWljL3Rlc3RzL3Rlc3RfY29ubmVjdGlvbi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0
X2NyeXB0by5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X2gwLnB5Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L3Rlc3RzL3Rlc3RfaDMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9sb2dnZXIucHkKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2Fpb3F1aWMvdGVzdHMvdGVzdF9wYWNrZXQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGVz
dF9wYWNrZXRfYnVpbGRlci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X3Jhbmdlc2V0LnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rlc3RfcmVjb3ZlcnkucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVz
dHMvdGVzdF9yZXRyeS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90ZXN0X3N0cmVhbS5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYWlvcXVpYy90ZXN0cy90ZXN0X3Rscy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfY2Vy
dGlmaWNhdGUuYmluCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19jZXJ0aWZpY2F0ZV92ZXJpZnku
YmluCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19jbGllbnRfaGVsbG8uYmluCi0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9x
dWljL3Rlc3RzL3Rsc19jbGllbnRfaGVsbG9fd2l0aF9hbHBuLmJpbgotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90
ZXN0cy90bHNfY2xpZW50X2hlbGxvX3dpdGhfcHNrLmJpbgotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90
bHNfY2xpZW50X2hlbGxvX3dpdGhfc25pLmJpbgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfZW5j
cnlwdGVkX2V4dGVuc2lvbnMuYmluCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19lbmNyeXB0ZWRf
ZXh0ZW5zaW9uc193aXRoX2FscG4uYmluCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3Rsc19lbmNyeXB0
ZWRfZXh0ZW5zaW9uc193aXRoX2FscG5fYW5kX2Vhcmx5X2RhdGEuYmluCi0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWlj
L3Rlc3RzL3Rsc19maW5pc2hlZC5iaW4KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX25ld19zZXNz
aW9uX3RpY2tldC5iaW4KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdGVzdHMvdGxzX25ld19zZXNzaW9uX3RpY2tl
dF93aXRoX3Vua25vd25fZXh0ZW5zaW9uLmJpbgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfc2Vy
dmVyX2hlbGxvLmJpbgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfc2VydmVyX2hlbGxvX3dpdGhf
cHNrLmJpbgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYWlvcXVpYy90ZXN0cy90bHNfc2VydmVyX2hlbGxvX3dpdGhfdW5rbm93
bl9leHRlbnNpb24uYmluCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9xdWljL3Rlc3RzL3V0aWxzLnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9haW9x
dWljL3Rlc3RzL3ZlcnNpb25fbmVnb3RpYXRpb24uYmluCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1
aWMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhNGVjOTVjOWExNjE2N2NjM2VjMGMzMTczNTMyYzU0MDBj
MTE2Y2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9haW9xdWljL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAot
VGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJl
cG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4K
LUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRw
czovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9v
bHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBO
T1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVy
dGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJl
cXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2Yg
ZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9haW9xdWljL0xJQ0VOU0UKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Fpb3F1aWMvTUFOSUZFU1QuaW4K
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Fpb3F1aWMvUkVBRE1FLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYWlvcXVpYy9zZXR1cC5jZmcKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Fpb3F1aWMvc2V0dXAucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXRvbWljd3JpdGVzLy5naXRpZ25v
cmUgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2F0b21pY3dyaXRlcy8uZ2l0aWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJiMmQzMTI4NzUz
ZTlmNmYzNDg5NWU3MTgzNTk1ODI5ZDEwNjNhNWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0
b21pY3dyaXRlcy8uZ2l0aWdub3JlCkBAIC0wLDAgKzEsOSBAQAorLnRveAorKi5weWMKKyoucHlv
CitfX3B5Y2FjaGVfXworKi5lZ2ctaW5mbworZG9jcy9fYnVpbGQKK2J1aWxkCitkaXN0CisuY2Fj
aGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYXRvbWljd3JpdGVzLy50cmF2aXMueW1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdG9t
aWN3cml0ZXMvLnRyYXZpcy55bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTk3NzkwMThhZDMxZTYyMTBhOGQ5MWVi
ZTE4YzljYWIwZWMwM2ZkZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXRvbWljd3JpdGVzLy50
cmF2aXMueW1sCkBAIC0wLDAgKzEsMzUgQEAKK3N1ZG86IGZhbHNlCitvczogbGludXgKK2xhbmd1
YWdlOiBweXRob24KKworbWF0cml4OgorICAgIGluY2x1ZGU6CisgICAgICAgIC0gb3M6IG9zeAor
ICAgICAgICAgIGxhbmd1YWdlOiBnZW5lcmljCisgICAgICAgICAgZW52OiBUT1hFTlZfU1VGRklY
PXRlc3QKKworcHl0aG9uOgorICAgIC0gIjIuNiIKKyAgICAtICIyLjciCisgICAgLSAicHlweSIK
KyAgICAtICIzLjMiCisgICAgLSAiMy40IgorCitpbnN0YWxsOgorICAgIC0gIyBUaGUgT1MgWCBW
TSBkb2Vzbid0IGhhdmUgYW55IFB5dGhvbiBzdXBwb3J0IGF0IGFsbAorICAgICAgIyBTZWUgaHR0
cHM6Ly9naXRodWIuY29tL3RyYXZpcy1jaS90cmF2aXMtY2kvaXNzdWVzLzIzMTIKKyAgICAgIGlm
IFsgIiRUUkFWSVNfT1NfTkFNRSIgPSAib3N4IiBdOyB0aGVuCisgICAgICAgICAgYnJldyB1cGRh
dGU7CisgICAgICAgICAgYnJldyBpbnN0YWxsIHB5dGhvbjM7CisgICAgICAgICAgdmlydHVhbGVu
diAtcCBweXRob24zICRIT01FL29zeC1weTM7CisgICAgICAgICAgLiAkSE9NRS9vc3gtcHkzL2Jp
bi9hY3RpdmF0ZTsKKyAgICAgICAgICBleHBvcnQgVFJBVklTX1BZVEhPTl9WRVJTSU9OPSIkKHB5
dGhvbiAtLXZlcnNpb24gfCBjdXQgLWQgJyAnIC1mIDIgfCBjdXQgLWQgLiAtZiAtMikiOworICAg
ICAgZmkKKyAgICAtIHBpcCBpbnN0YWxsIHRveAorCitzY3JpcHQ6CisgICAgLSBleHBvcnQgVE9Y
X1BZPSIkKGVjaG8gcHkkVFJBVklTX1BZVEhPTl9WRVJTSU9OIHwgdHIgLWQgLiB8IHNlZCAtZSAn
cy9weXB5cHkvcHlweS8nKSIKKyAgICAtIHRveCAtZSAkVE9YX1BZLXRlc3QKKyAgICAtIGlmIFsg
IiRUUkFWSVNfUFlUSE9OX1ZFUlNJT04iID0gIjIuNyIgXSB8fCBbICIkVFJBVklTX1BZVEhPTl9W
RVJTSU9OIiA9ICIuMy41IiBdOyB0aGVuCisgICAgICAgICAgdG94IC1lICRUT1hfUFktc3R5bGVj
aGVjazsKKyAgICAgIGZpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0b21pY3dyaXRlcy9hdG9taWN3cml0
ZXMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0b21pY3dyaXRlcy9hdG9taWN3cml0ZXMvdzNjLWlt
cG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlMzc2MmFhNTZjNTMzNjNm
NzEzNGE2MWYwYTI1MTc3N2EzZDI1M2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9hdG9taWN3cml0ZXMvYXRvbWljd3JpdGVzL3czYy1pbXBvcnQu
bG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGly
ZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9k
aWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1
bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBs
YXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNj
LXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0
aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9y
IHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdG9taWN3
cml0ZXMvYXRvbWljd3JpdGVzL19faW5pdF9fLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0b21pY3dy
aXRlcy9kb2NzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdG9taWN3cml0ZXMvZG9jcy93M2MtaW1w
b3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmJjY2JiMmQ0ZGJkOTgzNmE2
ZmJmZmI2N2RmMTgxMDMzOWZiYjBlOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2F0b21pY3dyaXRlcy9kb2NzL3czYy1pbXBvcnQubG9nCisrKyAv
ZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdl
cmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNl
IHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVz
dCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRl
c3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGlu
IFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUu
Ci0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVz
OgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25l
Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdG9taWN3cml0ZXMvZG9j
cy9NYWtlZmlsZQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYXRvbWljd3JpdGVzL2RvY3MvY29uZi5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXRvbWlj
d3JpdGVzL2RvY3MvaW5kZXgucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdG9taWN3cml0ZXMvZG9jcy9tYWtlLmJhdApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9hdG9taWN3cml0ZXMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0b21p
Y3dyaXRlcy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWRh
MGZjMDczMzVlNjc2NGJmOTFhNmE4MmUxYzE1YTVmY2NlNmE3My4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0b21pY3dyaXRlcy93M2MtaW1wb3J0
LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRp
cmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1v
ZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBw
dWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1w
bGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXcz
Yy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUg
dGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRv
ciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZp
eGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXRvbWlj
d3JpdGVzL0NPTlRSSUJVVElORy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0b21pY3dyaXRlcy9MSUNFTlNFCi0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9hdG9taWN3cml0ZXMvTUFOSUZFU1QuaW4KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0b21pY3dyaXRlcy9NYWtlZmlsZQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYXRvbWljd3JpdGVzL1JFQURNRS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0b21pY3dyaXRlcy9hcHB2ZXlv
ci55bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2F0b21pY3dyaXRlcy9zZXR1cC5jZmcKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0b21pY3dyaXRlcy9z
ZXR1cC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYXRvbWljd3JpdGVzL3RveC5pbmkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0
cnMvLmdpdGh1Yi93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvLmdpdGh1Yi93M2MtaW1wb3J0
LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDdhNzE4ZDg2NDcxY2FjYjY5NWJh
NjNhN2I2MDc0Yzk4NmE3ZTdiNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2F0dHJzLy5naXRodWIvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVs
bApAQCAtMSwxOSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBv
cnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMg
ZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRo
ZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0
Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0
IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25l
Ci1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzLy5naXRodWIvQ09ERV9PRl9D
T05EVUNULnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvLmdpdGh1Yi9DT05UUklCVVRJTkcucnN0Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
dHRycy8uZ2l0aHViL1BVTExfUkVRVUVTVF9URU1QTEFURS5tZApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
dHRycy8uZ2l0aWdub3JlIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy8uZ2l0aWdub3JlCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZjODk1
ZWUxZGI3Mjc4OGYzYzMyMGM3ODc4ZGI5NmZiOGRlOGJhOGYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2F0dHJzLy5naXRpZ25vcmUKQEAgLTAsMCArMSwxMSBAQAorKi5weWMKKyouZWdnLWluZm8K
Ky5jYWNoZQorLmNvdmVyYWdlKgorLmh5cG90aGVzaXMKKy5weXRlc3RfY2FjaGUKKy50b3gKK2J1
aWxkCitkaXN0Citkb2NzL19idWlsZC8KK2h0bWxjb3YKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMv
LnJlYWR0aGVkb2NzLnltbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvLnJlYWR0aGVkb2NzLnltbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hNGI2ZjQzMTA2NmY1NzlhN2Q2Nzg5YWZmZTYxMjIzOWVkODljMTZhCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9hdHRycy8ucmVhZHRoZWRvY3MueW1sCkBAIC0wLDAgKzEsNiBAQAorLS0tCitw
eXRob246CisgIHZlcnNpb246IDMKKyAgcGlwX2luc3RhbGw6IHRydWUKKyAgZXh0cmFfcmVxdWly
ZW1lbnRzOgorICAgIC0gZG9jcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy8udHJhdmlzLnltbCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYXR0cnMvLnRyYXZpcy55bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2M5OGIyMWE2MzdkZmM4ZTc0ZjBi
ZTQzNWVmODAyYTNmYmI1MDFmNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvLnRyYXZp
cy55bWwKQEAgLTAsMCArMSw2OSBAQAorZGlzdDogdHJ1c3R5Citncm91cDogdHJhdmlzX2xhdGVz
dAorc3VkbzogZmFsc2UKK2NhY2hlOgorICBkaXJlY3RvcmllczoKKyAgICAtICRIT01FLy5jYWNo
ZS9waXAKKworbGFuZ3VhZ2U6IHB5dGhvbgorCisKK21hdHJpeDoKKyAgZmFzdF9maW5pc2g6IHRy
dWUKKworICBpbmNsdWRlOgorICAgIC0gcHl0aG9uOiAiMi43IgorICAgICAgZW52OiBUT1hFTlY9
cHkyNworICAgIC0gcHl0aG9uOiAiMy40IgorICAgICAgZW52OiBUT1hFTlY9cHkzNAorICAgIC0g
cHl0aG9uOiAiMy41IgorICAgICAgZW52OiBUT1hFTlY9cHkzNQorICAgIC0gcHl0aG9uOiAiMy42
IgorICAgICAgZW52OiBUT1hFTlY9cHkzNgorICAgIC0gcHl0aG9uOiAicHlweSIKKyAgICAgIGVu
djogVE9YRU5WPXB5cHkKKyAgICAtIHB5dGhvbjogInB5cHkzIgorICAgICAgZW52OiBUT1hFTlY9
cHlweTMKKworICAgICMgUHJldmVudCBicmVha2FnZSBieSBhIG5ldyByZWxlYXNlcworICAgIC0g
cHl0aG9uOiAiMy42LWRldiIKKyAgICAgIGVudjogVE9YRU5WPXB5MzYKKyAgICAtIHB5dGhvbjog
IjMuNy1kZXYiCisgICAgICBlbnY6IFRPWEVOVj1weTM3CisKKyAgICAjIE1ldGEKKyAgICAtIHB5
dGhvbjogIjMuNiIKKyAgICAgIGVudjogVE9YRU5WPWZsYWtlOAorICAgIC0gcHl0aG9uOiAiMy42
IgorICAgICAgZW52OiBUT1hFTlY9bWFuaWZlc3QKKyAgICAtIHB5dGhvbjogIjMuNiIKKyAgICAg
IGVudjogVE9YRU5WPWRvY3MKKyAgICAtIHB5dGhvbjogIjMuNiIKKyAgICAgIGVudjogVE9YRU5W
PXJlYWRtZQorICAgIC0gcHl0aG9uOiAiMy42IgorICAgICAgZW52OiBUT1hFTlY9Y2hhbmdlbG9n
CisKKyAgYWxsb3dfZmFpbHVyZXM6CisgICAgLSBweXRob246ICIzLjYtZGV2IgorICAgIC0gcHl0
aG9uOiAiMy43LWRldiIKKworCitpbnN0YWxsOgorICAtIHBpcCBpbnN0YWxsIHRveAorCisKK3Nj
cmlwdDoKKyAgLSB0b3gKKworCitiZWZvcmVfaW5zdGFsbDoKKyAgLSBwaXAgaW5zdGFsbCBjb2Rl
Y292CisKKworYWZ0ZXJfc3VjY2VzczoKKyAgLSB0b3ggLWUgY292ZXJhZ2UtcmVwb3J0CisgIC0g
Y29kZWNvdgorCisKK25vdGlmaWNhdGlvbnM6CisgIGVtYWlsOiBmYWxzZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9hdHRycy9jaGFuZ2Vsb2cuZC8uZ2l0aWdub3JlIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9jaGFuZ2Vsb2cu
ZC8uZ2l0aWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2OWRlMjliYjJkMWQ2NDM0YjhiMjlhZTc3NWFkOGMy
ZTQ4YzUzOTEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvY2hhbmdlbG9nLmQvdzNjLWltcG9ydC5s
b2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2F0dHJzL2NoYW5nZWxvZy5kL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwOWZlMTYwMWQyNjRhMTZmODljMzQ4Y2U2NTQxYzVlNTk0M2VhMTcy
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0
cnMvY2hhbmdlbG9nLmQvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCww
IEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBX
M0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2Vi
S2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgot
CWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRo
ZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0K
LURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Q
cm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1
ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlz
dCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL2NoYW5nZWxvZy5kLzE3OC5jaGFuZ2UucnN0Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9hdHRycy9jaGFuZ2Vsb2cuZC8yOTAuY2hhbmdlLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvY2hhbmdlbG9n
LmQvMzAwLmNoYW5nZS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL2NoYW5nZWxvZy5kLzMxMS5jaGFuZ2UucnN0
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9hdHRycy9jaGFuZ2Vsb2cuZC8zMjEuY2hhbmdlLnJzdAotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvY2hh
bmdlbG9nLmQvMzIyLmNoYW5nZS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL2NoYW5nZWxvZy5kLzMyMy5jaGFu
Z2UucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9hdHRycy9jaGFuZ2Vsb2cuZC8zMjYuY2hhbmdlLnJzdAotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0
cnMvY2hhbmdlbG9nLmQvMzMxLmNoYW5nZS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL2NoYW5nZWxvZy5kLzMz
Mi5jaGFuZ2UucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9jaGFuZ2Vsb2cuZC8zMzQuY2hhbmdlLnJzdAotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYXR0cnMvY2hhbmdlbG9nLmQvMzM2LmNoYW5nZS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL2NoYW5nZWxv
Zy5kLzMzOS5jaGFuZ2UucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9jaGFuZ2Vsb2cuZC8zNDMuY2hhbmdlLnJz
dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYXR0cnMvY2hhbmdlbG9nLmQvMzQ5LmNoYW5nZS5yc3QKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL2No
YW5nZWxvZy5kLzM1Ni5jaGFuZ2UucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9jaGFuZ2Vsb2cuZC8zNjMuY2hh
bmdlLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYXR0cnMvY2hhbmdlbG9nLmQvMzY5LmNoYW5nZS5yc3QKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0
dHJzL2NoYW5nZWxvZy5kLzM3MC5jaGFuZ2UucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9jaGFuZ2Vsb2cuZC85
NS5jaGFuZ2UucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9jaGFuZ2Vsb2cuZC90b3duY3JpZXJfdGVtcGxhdGUu
cnN0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL2RvY3MvX3N0YXRpYy93M2MtaW1wb3J0LmxvZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYXR0cnMvZG9jcy9fc3RhdGljL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA5NGMwMDE0MjJiYWVkZTFkMjhhMzEyMzhjYmM0ZWQ0YjI2YzA4NWU5Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMv
ZG9jcy9fc3RhdGljL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBA
QAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzND
IHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktp
dC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlo
dHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUg
VG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1E
byBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJv
cGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVz
IHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qg
b2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9hdHRycy9kb2NzL19zdGF0aWMvYXR0cnNfbG9nby5wbmcKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2F0dHJzL2RvY3MvX3N0YXRpYy9hdHRyc19sb2dvLnN2ZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRy
cy9kb2NzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9kb2NzL3czYy1pbXBvcnQubG9nCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NjM0ZWM5YmU5NzI4NjExN2M5ZGNlZDY2YzFh
ODE5ZGYwNGY5ZmI4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYXR0cnMvZG9jcy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDMz
ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20g
dGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBp
biBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRo
dWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBy
dW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBv
cnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5
IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvZG9jcy9NYWtlZmlsZQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMv
ZG9jcy9hcGkucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9kb2NzL2JhY2t3YXJkLWNvbXBhdGliaWxpdHkucnN0
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9hdHRycy9kb2NzL2NoYW5nZWxvZy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL2RvY3MvY29uZi5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYXR0cnMvZG9jcy9jb250cmlidXRpbmcucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9kb2NzL2Rv
Y3V0aWxzLmNvbmYKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL2RvY3MvZXhhbXBsZXMucnN0Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9k
b2NzL2V4dGVuZGluZy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL2RvY3MvZ2xvc3NhcnkucnN0Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
dHRycy9kb2NzL2hhc2hpbmcucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9kb2NzL2hvdy1kb2VzLWl0LXdvcmsu
cnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9hdHRycy9kb2NzL2luZGV4LnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvZG9jcy9pbml0LnJz
dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYXR0cnMvZG9jcy9saWNlbnNlLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvZG9jcy9vdmVydmll
dy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2F0dHJzL2RvY3Mvd2h5LnJzdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9z
cmMvYXR0ci93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvc3JjL2F0dHIvdzNjLWltcG9ydC5s
b2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiNDEyZDEyMjRmNWQ3NTM4YTE1NTgz
ZmNkMmUwZGZiYzFiYWFhN2UuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9hdHRycy9zcmMvYXR0ci93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxs
CkBAIC0xLDI1ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9y
dGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBk
aXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhl
IFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQK
LQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQg
dG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUK
LVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvc3JjL2F0dHIvX19pbml0X18u
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2F0dHJzL3NyYy9hdHRyL19jb21wYXQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL3NyYy9hdHRy
L19jb25maWcucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL3NyYy9hdHRyL19mdW5jcy5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMv
c3JjL2F0dHIvX21ha2UucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL3NyYy9hdHRyL2NvbnZlcnRlcnMucHkKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2F0dHJzL3NyYy9hdHRyL2V4Y2VwdGlvbnMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL3NyYy9hdHRyL2Zp
bHRlcnMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2F0dHJzL3NyYy9hdHRyL3ZhbGlkYXRvcnMucHkKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYXR0cnMvdGVzdHMvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL3Rlc3RzL19faW5pdF9f
LnB5CmluZGV4IGE2ODM0YjgyODVhNTZiZWYwZTE1NDNmZDkwMWM3ZTZmMmY4YmMyMDIuLmU2OWRl
MjliYjJkMWQ2NDM0YjhiMjlhZTc3NWFkOGMyZTQ4YzUzOTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0
cnMvdGVzdHMvX19pbml0X18ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy90ZXN0cy9fX2luaXRfXy5weQpA
QCAtMSArMCwwIEBACi0jIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJj
aCB0aGlzIGRpcmVjdG9yeSBmb3IgbW9kdWxlcy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL3Rlc3RzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRy
cy90ZXN0cy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDBj
OGQ1M2FmMGZlYWI0YTYxMTg2YWE2MzI0OTdjNTZiNzJmYzdhNS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL3Rlc3RzL3czYy1pbXBvcnQu
bG9nCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGly
ZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9k
aWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1
bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBs
YXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNj
LXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0
aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9y
IHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy90
ZXN0cy9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvdGVzdHMvc3RyYXRlZ2llcy5weQotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YXR0cnMvdGVzdHMvdGVzdF9hbm5vdGF0aW9ucy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvdGVzdHMvdGVzdF9j
b25maWcucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2F0dHJzL3Rlc3RzL3Rlc3RfY29udmVydGVycy5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0
cnMvdGVzdHMvdGVzdF9kYXJrX21hZ2ljLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy90ZXN0cy90ZXN0X2R1bmRl
cnMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2F0dHJzL3Rlc3RzL3Rlc3RfZmlsdGVycy5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvdGVz
dHMvdGVzdF9mdW5jcy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvdGVzdHMvdGVzdF9pbml0X3N1YmNsYXNzLnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9hdHRycy90ZXN0cy90ZXN0X21ha2UucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL3Rlc3RzL3Rlc3Rf
c2xvdHMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2F0dHJzL3Rlc3RzL3Rlc3RfdmFsaWRhdG9ycy5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0
cnMvdGVzdHMvdXRpbHMucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvdzNjLWltcG9ydC5sb2cg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2F0dHJzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA3Y2FiOTIzNjA1Y2YxZmIwNDMzMDE0MzllN2JkYjJmYmUwMTdkNzY3Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvdzNjLWltcG9ydC5s
b2cKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJl
Y3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2Rp
ZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVs
bCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxh
dGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2Mt
dGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRo
aXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhl
czoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL0FV
VEhPUlMucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9hdHRycy9DSEFOR0VMT0cucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9MSUNFTlNF
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9hdHRycy9NQU5JRkVTVC5pbgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvUkVBRE1FLnJzdAotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YXR0cnMvY29uZnRlc3QucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL3B5cHJvamVjdC50b21sCi0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRy
cy9zZXR1cC5jZmcKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL3NldHVwLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy90b3guaW5pCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2NlcnRpZmkvY2VydGlmaS5lZ2ctaW5mby93M2MtaW1wb3J0LmxvZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvY2VydGlmaS9jZXJ0aWZpLmVnZy1pbmZvL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA5NjNhYzAyYTExN2I2ODE0MTU2NDY4NmU1MDYyZDkzNzZhOWMz
YmExLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
Y2VydGlmaS9jZXJ0aWZpLmVnZy1pbmZvL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAg
LTEsMjEgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQg
ZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVj
dGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BU
IGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1U
aGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byBy
ZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJv
cGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9jZXJ0aWZpL2NlcnRpZmkuZWdnLWluZm8vUEtH
LUlORk8KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2NlcnRpZmkvY2VydGlmaS5lZ2ctaW5mby9TT1VSQ0VTLnR4dAotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
Y2VydGlmaS9jZXJ0aWZpLmVnZy1pbmZvL2RlcGVuZGVuY3lfbGlua3MudHh0Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9jZXJ0
aWZpL2NlcnRpZmkuZWdnLWluZm8vbm90LXppcC1zYWZlCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9jZXJ0aWZpL2NlcnRpZmku
ZWdnLWluZm8vdG9wX2xldmVsLnR4dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9jZXJ0aWZpL2NlcnRpZmkv
dzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2NlcnRpZmkvY2VydGlmaS93M2MtaW1wb3J0LmxvZwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWU3ZGRhYjNjZDQyYWI4MmM2M2UyYzdjNDdlZDk1
MDYxYTI5N2Q2ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2NlcnRpZmkvY2VydGlmaS93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0x
LDIwICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZy
b20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3Rs
eSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBn
aXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhl
biBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVp
bXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3Bl
cnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvY2VydGlmaS9jZXJ0aWZpL19faW5pdF9fLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9jZXJ0aWZpL2NlcnRpZmkvX19tYWluX18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2NlcnRpZmkvY2VydGlmaS9j
YWNlcnQucGVtCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9jZXJ0aWZpL2NlcnRpZmkvY29yZS5weQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9jZXJ0aWZpL3NldHVwLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9jZXJ0aWZpL3NldHVwLnB5Cm9sZCBtb2RlIDEwMDY0
NApuZXcgbW9kZSAxMDA3NTUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvY2VydGlmaS93M2MtaW1wb3J0Lmxv
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvY2VydGlmaS93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZDRhMWZiZjc2YmMyYmUzYjk3Y2E5NzY3YmEyOTg1YjUwYThjMGI3YS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2NlcnRpZmkvdzNjLWlt
cG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhp
cyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5P
VCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRl
IGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93
ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9y
dC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVt
b3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Nl
cnRpZmkvTElDRU5TRQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvY2VydGlmaS9NQU5JRkVTVC5pbgotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvY2VydGlmaS9Q
S0ctSU5GTwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvY2VydGlmaS9SRUFETUUucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9jZXJ0aWZpL3NldHVwLmNm
ZwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvY2VydGlmaS9zZXR1cC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9lbnVtL2VudW0vZG9j
L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9lbnVtL2VudW0vZG9jL3czYy1pbXBvcnQubG9nCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZDVkZTIzNDMxZDBlNDA3OWVjN2ZkYjk5ZmE5OWMy
YTFjNmJkYjczLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvZW51bS9lbnVtL2RvYy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE3
ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20g
dGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBp
biBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRo
dWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBy
dW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBv
cnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5
IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZW51bS9lbnVtL2RvYy9lbnVtLnJzdApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9lbnVtL2VudW0vdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2VudW0vZW51bS93M2MtaW1w
b3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmFjMTI4MmYxYmI1ZGM1ZWFk
ODAwNmM4OTI5NDJiZjU2N2E1NDQzOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2VudW0vZW51bS93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxs
CkBAIC0xLDIwICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9y
dGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBk
aXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhl
IFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQK
LQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQg
dG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUK
LVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZW51bS9lbnVtL0xJQ0VOU0UKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2VudW0vZW51bS9SRUFETUUKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2VudW0vZW51bS9fX2luaXRfXy5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZW51
bS9lbnVtL3Rlc3QucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZW51bS9lbnVtMzQuZWdnLWluZm8vdzNj
LWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2VudW0vZW51bTM0LmVnZy1pbmZvL3czYy1pbXBvcnQubG9nCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZGZjNTMxMTAyYThlMjVhOWZjMDU4MGNmNDMx
MWMzMzhhNzI0YjYwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvZW51bS9lbnVtMzQuZWdnLWluZm8vdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVs
bApAQCAtMSwyMCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBv
cnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMg
ZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRo
ZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0
Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0
IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25l
Ci1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2VudW0vZW51bTM0LmVnZy1pbmZvL1BL
Ry1JTkZPCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9lbnVtL2VudW0zNC5lZ2ctaW5mby9TT1VSQ0VTLnR4dAotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZW51
bS9lbnVtMzQuZWdnLWluZm8vZGVwZW5kZW5jeV9saW5rcy50eHQKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2VudW0vZW51bTM0
LmVnZy1pbmZvL3RvcF9sZXZlbC50eHQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZW51bS93M2MtaW1wb3J0
LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvZW51bS93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNjE3OTFjYTY3ODZlZmM0NjFkYjE5ODNhZDQxYmJmYjMzZDdmMDQxNi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2VudW0vdzNjLWltcG9y
dC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBk
aXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBt
b2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEg
cHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWIt
cGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13
M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3Zl
IHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2VudW0v
TUFOSUZFU1QuaW4KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2VudW0vUEtHLUlORk8KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2VudW0vUkVBRE1FCi0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9lbnVtL3NldHVwLmNmZwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZW51bS9zZXR1cC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9m
dW5jc2lncy8uY292ZXJhZ2VyYyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvLmNvdmVyYWdlcmMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZDgzYmZjMjIwYjEyMDU1YmUzOTY1OGIzNzRhMzQ5YmQ4ZTg3MWMyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvZnVuY3NpZ3MvLmNvdmVyYWdlcmMKQEAgLTAsMCArMSw2IEBACitbcnVuXQor
c291cmNlPWZ1bmNzaWdzCitvbWl0PWZ1bmNzaWdzL29kaWN0KgorCitbcmVwb3J0XQoraW5jbHVk
ZT1mdW5jc2lncyoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvLmdpdGlnbm9yZSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
ZnVuY3NpZ3MvLmdpdGlnbm9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOGQyYWY4NWQzYzYxN2FhM2YyNTUxMzQ5
YWYxMGQ2MWNmZjY1YzJhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy8uZ2l0aWdu
b3JlCkBAIC0wLDAgKzEsMTkgQEAKKyp+CisqLmVnZworKi5lZ2ctaW5mbworKi5weWMKKyoucHlv
CisqLnN3cAorLkRTX1N0b3JlCisuY292ZXJhZ2UKKy50b3gvCitNQU5JRkVTVAorYnVpbGQvCitk
b2NzLy5idWlsZC8KK2Rpc3QvCitlbnYqLworaHRtbGNvdi8KK3RtcC8KK2NvdmVyYWdlLnhtbAor
anVuaXQueG1sCisuZWdncy8KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvLnRyYXZpcy55bWwg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Z1bmNzaWdzLy50cmF2aXMueW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMxZTdhYmUwYjQ0YTg5YzE2
N2E3OWNhYzMzY2ZjOWM0Yzc5ZWQ4ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdz
Ly50cmF2aXMueW1sCkBAIC0wLDAgKzEsMTggQEAKK2xhbmd1YWdlOiBweXRob24KK3B5dGhvbjoK
KyAgLSAyLjYKKyAgLSAyLjcKKyAgLSAzLjMKKyAgLSAzLjQKKyAgLSAzLjUKKyAgLSBuaWdodGx5
CisgIC0gcHlweQorIyAgLSBweXB5MworaW5zdGFsbDoKKyAgLSBwaXAgaW5zdGFsbCAtVSBwaXAg
c2V0dXB0b29scyB3aGVlbAorICAtIHBpcCBpbnN0YWxsIC1yIHJlcXVpcmVtZW50cy9kZXZlbG9w
bWVudC50eHQgLgorc2NyaXB0OgorICAtIGNvdmVyYWdlIHJ1biBzZXR1cC5weSB0ZXN0CisgIC0g
Y292ZXJhZ2UgcmVwb3J0IC0tc2hvdy1taXNzaW5nCithZnRlcl9zdWNjZXNzOgorICAtIGNvdmVy
YWxscwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy9DSEFOR0VMT0cgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdz
L0NIQU5HRUxPRwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTEzNjZkMjY2OGQwM2Rl
ODEwMmQwNDk1M2M1NWU0OTQwMDU1Y2IwMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzL0NIQU5HRUxPRworKysgL2Rldi9udWxsCkBA
IC0xLDI0ICswLDAgQEAKLUNoYW5nZWxvZwotLS0tLS0tLS0tCi0KLTAuNQotYGBgCi0KLSogRml4
IGJpbmRpbmcgd2l0aCBzZWxmIGFzIGEga3dhcmcuIChSb2JlcnQgQ29sbGlucyAjMTQpCi0KLTAu
NCAoMjAxMy0xMi0yMCkKLWBgYGBgYGBgYGBgYGBgYGAKLSogRml4IHVuYm91bmQgbWV0aG9kcyBn
ZXR0aW5nIHRoZWlyIGZpcnN0IHBhcmFtZXRlciBjdXJyaWVkCi0qIFB1Ymxpc2ggUHl0aG9uIHdo
ZWVsIHBhY2thZ2VzCi0KLTAuMyAoMjAxMy0wNS0yOSkKLWBgYGBgYGBgYGBgYGBgYGAKLSogRml4
IGFubm90YXRpb24gZm9ybWF0dGluZyBvZiBidWlsdGluIHR5cGVzIG9uIFB5dGhvbiAyLngKLQot
MC4yICgyMDEyLTAxLTA3KQotYGBgYGBgYGBgYGBgYGBgYAotKiBQeVB5IGNvbXBhdGFiaWxpdHkK
LQotMC4xICgyMDEyLTAxLTA2KQotYGBgYGBgYGBgYGBgYGBgYAotKiBJbml0aWFsIHJlbGVhc2UK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvZG9jcy9fdGVtcGxhdGVzL3czYy1pbXBvcnQubG9n
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9mdW5jc2lncy9kb2NzL190ZW1wbGF0ZXMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjMzI1MTI5NGEwZjZlYTc5NWNhOTM1YWVkMDdmMGNiMWU2
ZmJkMTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9mdW5jc2lncy9kb2NzL190ZW1wbGF0ZXMvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApA
QCAtMSwxNyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRl
ZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGly
ZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBX
UFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0K
LVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRv
IHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Q
cm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzL2RvY3MvX3RlbXBsYXRlcy9w
YWdlLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvZG9jcy93M2MtaW1wb3J0LmxvZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvZnVuY3NpZ3MvZG9jcy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMjA0Y2M4MDA4MWQxZjI5NmU1MWY0OGEyMTgyMDliMmIwODY1MmMzOC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzL2Rv
Y3MvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1UaGUgdGVz
dHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9y
eS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVh
ZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0
aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3Jp
cHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2Rp
Znkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJl
cXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5n
IHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Z1bmNzaWdzL2RvY3MvTWFrZWZpbGUKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzL2RvY3MvY29uZi5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvZnVuY3NpZ3MvZG9jcy9pbmRleC5yc3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3Np
Z3MvZnVuY3NpZ3MvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzL2Z1bmNzaWdzL3czYy1p
bXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZDg0ZjI2ZmQwNDk0ZGMx
YjE4YTlkYjk2MzJlZjBlZTJmYzU3NWM4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvZnVuY3NpZ3MvdzNjLWltcG9ydC5sb2cKKysr
IC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkg
d2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhl
c2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1
ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0t
dGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMg
aW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmls
ZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5v
bmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzL2Z1bmNz
aWdzL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy9mdW5jc2lncy92ZXJzaW9uLnB5CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Z1bmNzaWdzL3JlcXVpcmVtZW50cy93M2MtaW1wb3J0LmxvZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
ZnVuY3NpZ3MvcmVxdWlyZW1lbnRzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBkMWJhZmQ4MzBlYzU1NDQ4MTI1ZjRhODZhMDdiYzNmODU0ZTJlNDBmLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3Mv
cmVxdWlyZW1lbnRzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBA
QAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzND
IHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktp
dC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlo
dHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUg
VG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1E
byBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJv
cGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVz
IHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qg
b2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy9yZXF1aXJlbWVudHMvZGV2ZWxvcG1lbnQudHh0CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzL3Rlc3RzL19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2ln
cy90ZXN0cy9fX2luaXRfXy5weQppbmRleCBhNjgzNGI4Mjg1YTU2YmVmMGUxNTQzZmQ5MDFjN2U2
ZjJmOGJjMjAyLi5lNjlkZTI5YmIyZDFkNjQzNGI4YjI5YWU3NzVhZDhjMmU0OGM1MzkxIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Z1bmNzaWdzL3Rlc3RzL19faW5pdF9fLnB5CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3Np
Z3MvdGVzdHMvX19pbml0X18ucHkKQEAgLTEgKzAsMCBAQAotIyBUaGlzIGZpbGUgaXMgcmVxdWly
ZWQgZm9yIFB5dGhvbiB0byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZXMuClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy90ZXN0cy93
M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvdGVzdHMvdzNjLWltcG9ydC5sb2cKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzOTIxYTE4NTIyZjZlMDc2NGY2MzhkMjQ1NzUzZGRm
ZDk5MWEyZTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9mdW5jc2lncy90ZXN0cy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIw
ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20g
dGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBp
biBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRo
dWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBy
dW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBv
cnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5
IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvdGVzdHMvX19pbml0X18ucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2Z1bmNzaWdzL3Rlc3RzL3Rlc3RfZm9ybWF0YW5ub3RhdGlvbi5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3Mv
dGVzdHMvdGVzdF9mdW5jc2lncy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvdGVzdHMvdGVzdF9pbnNwZWN0
LnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5j
c2lncy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzI1MTli
ZDA4OWEzNzAzYmMzOTk4NGNmYWJlN2YxN2Y4MjdkOGQwZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzL3czYy1pbXBvcnQubG9nCisr
KyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5
IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRo
ZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVx
dWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3Jt
LXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3Rz
IGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZp
bGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZp
eGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1O
b25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy9DSEFO
R0VMT0cKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2Z1bmNzaWdzL0xJQ0VOU0UKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzL01BTklGRVNULmlu
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9mdW5jc2lncy9NYWtlZmlsZQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvUkVBRE1FLnJzdAotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvZnVuY3NpZ3Mvc2V0dXAuY2ZnCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy9zZXR1cC5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVu
Y3NpZ3MvdG94LmluaQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi8uY292ZXJhZ2VyYyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIv
LmNvdmVyYWdlcmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTUzZTM4ZDNlMGUyNWNjMzIxN2Q2MzkwMGE3ZjI4OGNj
Y2JiNWNiMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvLmNvdmVyYWdlcmMKQEAgLTAsMCAr
MSwxOCBAQAorW3J1bl0KK2JyYW5jaCA9IFRydWUKK3NvdXJjZSA9IGgyCisKK1tyZXBvcnRdCitm
YWlsX3VuZGVyID0gMTAwCitzaG93X21pc3NpbmcgPSBUcnVlCitleGNsdWRlX2xpbmVzID0KKyAg
ICBwcmFnbWE6IG5vIGNvdmVyCisgICAgLio6LiogIyBQeXRob24gXGQuKgorICAgIGFzc2VydCBG
YWxzZSwgIlNob3VsZCBub3QgYmUgcmVhY2hhYmxlIgorICAgIC4qOi4qICMgUGxhdGZvcm0tc3Bl
Y2lmaWM6CisKK1twYXRoc10KK3NvdXJjZSA9CisgICAgaDIvCisgICAgLnRveC8qL2xpYi9weXRo
b24qL3NpdGUtcGFja2FnZXMvaDIKKyAgICAudG94L3B5cHkqL3NpdGUtcGFja2FnZXMvaDIKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvaDIvZG9jcy9zb3VyY2UvX3N0YXRpYy8ua2VlcCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZG9j
cy9zb3VyY2UvX3N0YXRpYy8ua2VlcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNjlkZTI5YmIyZDFkNjQzNGI4YjI5
YWU3NzVhZDhjMmU0OGM1MzkxCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2RvY3Mvc291cmNlL19zdGF0
aWMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2RvY3Mvc291cmNlL19zdGF0aWMvdzNjLWltcG9y
dC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3NjhlODU2YjZiNDc2NDVkNmUx
YmJjZTlmMDE1MTUwNGYzZWQ4MWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9oMi9kb2NzL3NvdXJjZS9fc3RhdGljL3czYy1pbXBvcnQubG9nCisr
KyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5
IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRo
ZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVx
dWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3Jt
LXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3Rz
IGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZp
bGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZp
eGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1O
b25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9kb2NzL3NvdXJj
ZS9fc3RhdGljL2gyLmNvbm5lY3Rpb24uSDJDb25uZWN0aW9uU3RhdGVNYWNoaW5lLmRvdC5wbmcK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2gyL2RvY3Mvc291cmNlL19zdGF0aWMvaDIuc3RyZWFtLkgyU3RyZWFtU3RhdGVNYWNo
aW5lLmRvdC5wbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZG9jcy9zb3VyY2UvdzNjLWltcG9ydC5s
b2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2gyL2RvY3Mvc291cmNlL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBhMWZiMmJkZTUyY2E5NWE1NjljZjc5ZWNlMmI3NjU4N2ZhMzJlMDU5Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZG9j
cy9zb3VyY2UvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1U
aGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVw
b3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0Lgot
SW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBz
Oi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29s
cy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5P
VCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0
aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVx
dWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBm
aWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2gyL2RvY3Mvc291cmNlL2FkdmFuY2VkLXVzYWdlLnJzdAotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIv
ZG9jcy9zb3VyY2UvYXBpLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZG9jcy9zb3VyY2UvYXN5bmNpby1leGFtcGxl
LnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaDIvZG9jcy9zb3VyY2UvYmFzaWMtdXNhZ2UucnN0Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9kb2Nz
L3NvdXJjZS9jb25mLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9kb2NzL3NvdXJjZS9jb250cmlidXRvcnMucnN0Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9oMi9kb2NzL3NvdXJjZS9jdXJpby1leGFtcGxlLnJzdAotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZG9jcy9zb3Vy
Y2UvZXZlbnRsZXQtZXhhbXBsZS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2RvY3Mvc291cmNlL2V4YW1wbGVzLnJz
dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaDIvZG9jcy9zb3VyY2UvaW5kZXgucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9kb2NzL3NvdXJjZS9p
bnN0YWxsYXRpb24ucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9kb2NzL3NvdXJjZS9sb3ctbGV2ZWwucnN0Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9oMi9kb2NzL3NvdXJjZS9uZWdvdGlhdGluZy1odHRwMi5yc3QKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2RvY3Mvc291
cmNlL3JlbGVhc2Utbm90ZXMucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9kb2NzL3NvdXJjZS9yZWxlYXNlLXByb2Nl
c3MucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9oMi9kb2NzL3NvdXJjZS90ZXN0aW1vbmlhbHMucnN0Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9k
b2NzL3NvdXJjZS90b3JuYWRvLWV4YW1wbGUucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9kb2NzL3NvdXJjZS90d2lz
dGVkLWV4YW1wbGUucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9kb2NzL3NvdXJjZS90d2lzdGVkLWhlYWQtZXhhbXBs
ZS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2gyL2RvY3Mvc291cmNlL3R3aXN0ZWQtcG9zdC1leGFtcGxlLnJzdAotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaDIvZG9jcy9zb3VyY2Uvd3NnaS1leGFtcGxlLnJzdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9k
b2NzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9kb2NzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNGVhNTM3NzUyNGM2MmUyNGIzZTkxYWM4YWRiNTUyMmJl
ZmRlNTQ2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaDIvZG9jcy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAK
LVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyBy
ZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQu
Ci1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0
cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRv
b2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8g
Tk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3Bl
cnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyBy
ZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9m
IGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvaDIvZG9jcy9NYWtlZmlsZQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZG9jcy9tYWtlLmJhdApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9oMi9leGFtcGxlcy9hc3luY2lvL3czYy1pbXBvcnQubG9nIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9oMi9leGFtcGxlcy9hc3luY2lvL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA3ZThhZTRhMjg3ZTUwZjVlNGY4NzNiZGJjMTIzNzFiZDEyOGUxZjdhLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBs
ZXMvYXN5bmNpby93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAK
LVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyBy
ZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQu
Ci1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0
cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRv
b2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8g
Tk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3Bl
cnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyBy
ZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9m
IGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvYXN5bmNpby9hc3luY2lvLXNlcnZlci5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaDIvZXhhbXBsZXMvYXN5bmNpby9jZXJ0LmNydAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvYXN5bmNp
by9jZXJ0LmtleQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvYXN5bmNpby93c2dpLXNlcnZlci5weQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9oMi9leGFtcGxlcy9jdXJpby93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIv
ZXhhbXBsZXMvY3VyaW8vdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGIyOTA2YjA5MzE0Mjk2MjE1MDQwZTQ3YmY0NzUxOWJjMmY2ZGZkNWMuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9leGFtcGxlcy9jdXJp
by93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVRoZSB0ZXN0
cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5
LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFk
LCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRo
dWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1Njcmlw
dHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlm
eSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVx
dWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcg
dmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaDIvZXhhbXBsZXMvY3VyaW8vY3VyaW8tc2VydmVyLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9leGFtcGxl
cy9jdXJpby9sb2NhbGhvc3QuY3J0LnBlbQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvY3VyaW8vbG9jYWxo
b3N0LmtleQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9leGFtcGxlcy9ldmVudGxldC93M2MtaW1wb3J0
LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvZXZlbnRsZXQvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5ZjgyMjQ0NTBiYjU4ODMyYzg0Y2EzOWE4MWU0ZGMxNzk3
OWU1ODkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9oMi9leGFtcGxlcy9ldmVudGxldC93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0x
LDE5ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZy
b20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3Rs
eSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBn
aXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhl
biBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVp
bXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3Bl
cnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvZXZlbnRsZXQvZXZlbnRsZXQt
c2VydmVyLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9oMi9leGFtcGxlcy9ldmVudGxldC9zZXJ2ZXIuY3J0Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9o
Mi9leGFtcGxlcy9ldmVudGxldC9zZXJ2ZXIua2V5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2V4YW1w
bGVzL2ZyYWdtZW50cy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvZnJhZ21lbnRz
L3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiM2VlNmY5NGI0
MjBhNjFjZGJkZTExYjljNjBlMzJiZThlZGUzZDk5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvZnJhZ21lbnRzL3czYy1pbXBv
cnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMg
ZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1Qg
bW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBh
IHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2Vi
LXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQt
dzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92
ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVu
ZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9l
eGFtcGxlcy9mcmFnbWVudHMvY2xpZW50X2h0dHBzX3NldHVwX2ZyYWdtZW50LnB5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9o
Mi9leGFtcGxlcy9mcmFnbWVudHMvY2xpZW50X3VwZ3JhZGVfZnJhZ21lbnQucHkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gy
L2V4YW1wbGVzL2ZyYWdtZW50cy9zZXJ2ZXJfaHR0cHNfc2V0dXBfZnJhZ21lbnQucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2gyL2V4YW1wbGVzL2ZyYWdtZW50cy9zZXJ2ZXJfdXBncmFkZV9mcmFnbWVudC5weQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9oMi9leGFtcGxlcy90b3JuYWRvL3Rvcm5hZG8tc2VydmVyLnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9o
Mi9leGFtcGxlcy90b3JuYWRvL3Rvcm5hZG8tc2VydmVyLnB5Cm9sZCBtb2RlIDEwMDY0NApuZXcg
bW9kZSAxMDA3NTUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvdG9ybmFkby93M2MtaW1w
b3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvdG9ybmFkby93M2MtaW1wb3J0LmxvZwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTFlZWRlOTgwMjllY2RiMDFkMTgyNzNiMjdjNjk5NDE4
MzAzZmU5ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2gyL2V4YW1wbGVzL3Rvcm5hZG8vdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAt
MSwxOSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBm
cm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0
bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQg
Z2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRo
ZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJl
aW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9w
ZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2V4YW1wbGVzL3Rvcm5hZG8vc2VydmVyLmNy
dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaDIvZXhhbXBsZXMvdG9ybmFkby9zZXJ2ZXIua2V5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9leGFtcGxl
cy90b3JuYWRvL3Rvcm5hZG8tc2VydmVyLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2V4YW1wbGVz
L3R3aXN0ZWQvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2V4YW1wbGVzL3R3aXN0ZWQvdzNjLWlt
cG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViMGZmMmVjMWVmNTU4ZjM3
Yjc2MjAzNTEyOGU5YTFjODgyYjU2NmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9oMi9leGFtcGxlcy90d2lzdGVkL3czYy1pbXBvcnQubG9nCisr
KyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5
IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRo
ZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVx
dWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3Jt
LXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3Rz
IGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZp
bGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZp
eGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1O
b25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9leGFtcGxlcy90
d2lzdGVkL2hlYWRfcmVxdWVzdC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvdHdpc3RlZC9wb3N0X3Jl
cXVlc3QucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2gyL2V4YW1wbGVzL3R3aXN0ZWQvc2VydmVyLmNydAotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIv
ZXhhbXBsZXMvdHdpc3RlZC9zZXJ2ZXIuY3NyCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9leGFtcGxlcy90d2lzdGVkL3Nl
cnZlci5rZXkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2gyL2V4YW1wbGVzL3R3aXN0ZWQvdHdpc3RlZC1zZXJ2ZXIucHkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvaDIvaDIvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2gyL3czYy1pbXBv
cnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNWNhNGI3MGZiZjk2ZGZiMjA4
MGE5M2M4MWMxYTJiNmE3YjRmZWVlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaDIvaDIvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAt
MSwyNyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBm
cm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0
bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQg
Z2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRo
ZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJl
aW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9w
ZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2gyL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9o
Mi9jb25maWcucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2gyL2Nvbm5lY3Rpb24ucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2gyL2Vycm9y
cy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaDIvaDIvZXZlbnRzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9oMi9leGNlcHRpb25zLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9oMi9oMi9mcmFtZV9idWZmZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2gyL3NldHRpbmdzLnB5Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9oMi9oMi9zdHJlYW0ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2gyL3V0aWxpdGllcy5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvaDIv
d2luZG93cy5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi90ZXN0L3czYy1pbXBvcnQubG9nIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9oMi90ZXN0L3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBh
YmVjZTVhNjIyZmFiNGEzNjM4MWFmMzU4ZjY5ZjlmODgxN2E3NTU4Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdGVzdC93M2MtaW1wb3J0Lmxv
ZworKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVj
dG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlm
eSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxs
IHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0
Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10
ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhp
cyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVz
OgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdGVzdC9j
b25mdGVzdC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaDIvdGVzdC9jb3JvdXRpbmVfdGVzdHMucHkKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3Rl
c3QvaGVscGVycy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdGVzdC90ZXN0X2Jhc2ljX2xvZ2ljLnB5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9o
Mi90ZXN0L3Rlc3RfY2xvc2VkX3N0cmVhbXMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3Rlc3QvdGVzdF9jb21wbGV4
X2xvZ2ljLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9oMi90ZXN0L3Rlc3RfY29uZmlnLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi90ZXN0L3Rl
c3RfZXZlbnRzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9oMi90ZXN0L3Rlc3RfZXhjZXB0aW9ucy5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIv
dGVzdC90ZXN0X2Zsb3dfY29udHJvbF93aW5kb3cucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3Rlc3QvdGVzdF9oMl91
cGdyYWRlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9oMi90ZXN0L3Rlc3RfaGVhZF9yZXF1ZXN0LnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi90
ZXN0L3Rlc3RfaGVhZGVyX2luZGV4aW5nLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi90ZXN0L3Rlc3RfaW5mb3JtYXRp
b25hbF9yZXNwb25zZXMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3Rlc3QvdGVzdF9pbnRlcmFjdGluZ19zdGFja3Mu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2gyL3Rlc3QvdGVzdF9pbnZhbGlkX2NvbnRlbnRfbGVuZ3Rocy5weQotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
aDIvdGVzdC90ZXN0X2ludmFsaWRfZnJhbWVfc2VxdWVuY2VzLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi90ZXN0L3Rl
c3RfaW52YWxpZF9oZWFkZXJzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi90ZXN0L3Rlc3RfcHJpb3JpdHkucHkKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2gyL3Rlc3QvdGVzdF9yZWxhdGVkX2V2ZW50cy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdGVzdC90ZXN0X3Jm
Yzc4MzgucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2gyL3Rlc3QvdGVzdF9zZXR0aW5ncy5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdGVzdC90
ZXN0X3N0YXRlX21hY2hpbmVzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi90ZXN0L3Rlc3Rfc3RyZWFtX3Jlc2V0LnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9oMi90ZXN0L3Rlc3RfdXRpbGl0eV9mdW5jdGlvbnMucHkKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaDIvdXRpbHMvYmFja3BvcnQuc2ggYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3V0aWxzL2JhY2twb3J0LnNoCm9sZCBt
b2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdXRpbHMvdzNj
LWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3V0aWxzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBmMjM4M2E3YTk5MWY5MDVhMDQzZWEzMWFiYzdlZTUzMDkyNWMyMGI4
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIv
dXRpbHMvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1UaGUg
dGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3Np
dG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5z
dGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8v
Z2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9T
Y3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBt
b2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVz
IHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWly
aW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxl
czoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2gyL3V0aWxzL2JhY2twb3J0LnNoCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3Zpc3Vh
bGl6ZXIvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3Zpc3VhbGl6ZXIvdzNjLWltcG9ydC5sb2cK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0ZDNmZmYxYjMyOTJjNTJmYTM1ZmMzYTNj
ZTBlZWEwYWZhNmI1NWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9oMi92aXN1YWxpemVyL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAg
LTEsMTggKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQg
ZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVj
dGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BU
IGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1U
aGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byBy
ZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJv
cGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi92aXN1YWxpemVyL05PVElDRVMudmlzdWFs
aXplcgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaDIvdmlzdWFsaXplci92aXN1YWxpemUucHkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
aDIvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA5ZGZkMmZjYWU0YTNkMzM3ZWE4MmQ4NWZhMTljMjBkZjA2NThmN2Yx
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIv
dzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1UaGUgdGVzdHMg
aW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4K
LURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwg
Y3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHVi
LmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRz
L2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkg
b3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVp
cmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2gyL0NPTlRSSUJVVE9SUy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL0hJU1RPUlkucnN0Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9M
SUNFTlNFCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9oMi9NQU5JRkVTVC5pbgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvTWFrZWZpbGUKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gy
L1JFQURNRS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3NldHVwLmNmZwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvc2V0dXAucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2gyL3Rlc3RfcmVxdWlyZW1lbnRzLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdG94LmluaQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9ocGFjay9ocGFjay5lZ2ctaW5mby93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHBhY2svaHBh
Y2suZWdnLWluZm8vdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGEwN2M3NGFjMmI3N2VjNDRkMmI5YTE0Yjk3MDlhZTRkZjMzNzdhMWEuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9ocGFjay9ocGFjay5lZ2ctaW5m
by93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVRoZSB0ZXN0
cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5
LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFk
LCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRo
dWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1Njcmlw
dHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlm
eSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVx
dWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcg
dmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaHBhY2svaHBhY2suZWdnLWluZm8vUEtHLUlORk8KLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2hwYWNrL2hwYWNrLmVn
Zy1pbmZvL1NPVVJDRVMudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9ocGFjay9ocGFjay5lZ2ctaW5mby9kZXBlbmRlbmN5
X2xpbmtzLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaHBhY2svaHBhY2suZWdnLWluZm8vdG9wX2xldmVsLnR4dApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9ocGFjay9ocGFjay93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHBhY2svaHBh
Y2svdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiYzBiNGJl
ZDVkMTA4Zjg5MmQ1ZmRlNjBjYjY1NzNhOWFmYjAzYjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9ocGFjay9ocGFjay93M2MtaW1wb3J0LmxvZwor
KysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9y
eSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0
aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJl
cXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9y
bS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0
cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBm
aWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgot
Tm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHBhY2svaHBhY2sv
X19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2hwYWNrL2hwYWNrL2NvbXBhdC5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHBhY2svaHBh
Y2svZXhjZXB0aW9ucy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHBhY2svaHBhY2svaHBhY2sucHkKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2hwYWNr
L2hwYWNrL2h1ZmZtYW4ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2hwYWNrL2hwYWNrL2h1ZmZtYW5fY29uc3RhbnRzLnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9ocGFjay9ocGFjay9odWZmbWFuX3RhYmxlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9ocGFjay9ocGFjay9z
dHJ1Y3QucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2hwYWNrL2hwYWNrL3RhYmxlLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2hw
YWNrL3Rlc3QvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2hwYWNrL3Rlc3QvdzNjLWltcG9ydC5sb2cK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzZTQ5MTYyNTA0OWU0MmI4NzgyYjVjOTQx
NTIwMjI1Mjk3OGUwODkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9ocGFjay90ZXN0L3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEs
MjIgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJv
bSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5
IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdp
dGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVu
IHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWlt
cG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVy
dHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9ocGFjay90ZXN0L3Rlc3RfZW5jb2RlX2RlY29kZS5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaHBhY2svdGVzdC90ZXN0X2hwYWNrLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9ocGFjay90ZXN0L3Rlc3Rf
aHBhY2tfaW50ZWdyYXRpb24ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2hwYWNrL3Rlc3QvdGVzdF9odWZmbWFuLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9ocGFjay90ZXN0L3Rlc3Rfc3RydWN0LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9ocGFjay90ZXN0L3Rlc3RfdGFi
bGUucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHBhY2svdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2hwYWNr
L3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZjY0NDk5NTA1
YWY3MGIwNDFjODFhMGYxYmUwODNjMDhhNWIxZmM3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHBhY2svdzNjLWltcG9ydC5sb2cKKysrIC9kZXYv
bnVsbApAQCAtMSwyNCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBp
bXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVz
dHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9u
IHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMv
d3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2Vi
S2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1O
b25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2hwYWNrL0NPTlRSSUJVVE9SUy5y
c3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2hwYWNrL0hJU1RPUlkucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9ocGFjay9MSUNFTlNFCi0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9o
cGFjay9NQU5JRkVTVC5pbgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHBhY2svUEtHLUlORk8KLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2hwYWNrL1JFQURN
RS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2hwYWNrL3NldHVwLmNmZwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHBhY2svc2V0dXAucHkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaHRtbDVsaWIvLmFwcHZleW9yLnltbCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvLmFwcHZl
eW9yLnltbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45ODRlMmI3ZmE1ZTZlOTgzNjBkMjFhMjMyM2RiMTZhZTQxZWFi
NjNlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi8uYXBwdmV5b3IueW1sCkBAIC0w
LDAgKzEsMzEgQEAKKyMgVG8gYWN0aXZhdGUsIGNoYW5nZSB0aGUgQXBwdmV5b3Igc2V0dGluZ3Mg
dG8gdXNlIGAuYXBwdmV5b3IueW1sYC4KK2Vudmlyb25tZW50OgorICBnbG9iYWw6CisgICAgUEFU
SDogIkM6XFxQeXRob24yN1xcU2NyaXB0c1xcOyVQQVRIJSIKKyAgICBQWVRFU1RfQ09NTUFORDog
ImNvdmVyYWdlIHJ1biAtbSBweXRlc3QiCisgIG1hdHJpeDoKKyAgICAtIFRPWEVOVjogcHkyNy1i
YXNlCisgICAgLSBUT1hFTlY6IHB5Mjctb3B0aW9uYWwKKyAgICAtIFRPWEVOVjogcHkzMy1iYXNl
CisgICAgLSBUT1hFTlY6IHB5MzMtb3B0aW9uYWwKKyAgICAtIFRPWEVOVjogcHkzNC1iYXNlCisg
ICAgLSBUT1hFTlY6IHB5MzQtb3B0aW9uYWwKKyAgICAtIFRPWEVOVjogcHkzNS1iYXNlCisgICAg
LSBUT1hFTlY6IHB5MzUtb3B0aW9uYWwKKyAgICAtIFRPWEVOVjogcHkzNi1iYXNlCisgICAgLSBU
T1hFTlY6IHB5MzYtb3B0aW9uYWwKKworaW5zdGFsbDoKKyAgLSBnaXQgc3VibW9kdWxlIHVwZGF0
ZSAtLWluaXQgLS1yZWN1cnNpdmUKKyAgLSBweXRob24gLW0gcGlwIGluc3RhbGwgdG94IGNvZGVj
b3YKKworYnVpbGQ6IG9mZgorCit0ZXN0X3NjcmlwdDoKKyAgLSB0b3gKKworYWZ0ZXJfdGVzdDoK
KyAgLSBweXRob24gZGVidWctaW5mby5weQorCitvbl9zdWNjZXNzOgorICAtIGNvZGVjb3YKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvLmNvdmVyYWdlcmMgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliLy5jb3Zl
cmFnZXJjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZmYWNmMzUyMzlmYTViZDE4N2U2OThiMWZmM2RlMDZiNTQ1ZGVi
MDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliLy5jb3ZlcmFnZXJjCkBAIC0wLDAg
KzEsOCBAQAorW3J1bl0KK2JyYW5jaCA9IFRydWUKK3NvdXJjZSA9IGh0bWw1bGliCisKK1twYXRo
c10KK3NvdXJjZSA9CisgICBodG1sNWxpYgorICAgLnRveC8qL2xpYi9weXRob24qL3NpdGUtcGFj
a2FnZXMvaHRtbDVsaWIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvLmdpdGlnbm9yZSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaHRtbDVsaWIvLmdpdGlnbm9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lY2Q2MmRmMzFiOTExZTNlYTA4YzA5
ODlkMWY5OWE5MjkxOGEwZTMyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi8uZ2l0
aWdub3JlCkBAIC0wLDAgKzEsODUgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDE0IEdpdEh1YiwgSW5j
LgorIworIyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCAgZnJlZSBvZiBjaGFyZ2UsICB0
byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisjIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNz
b2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisjIHRvIGRlYWwg
aW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxp
bWl0YXRpb24KKyMgdGhlIHJpZ2h0cyB0byAgdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJs
aXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorIyBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhl
IFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyMgU29mdHdhcmUg
aXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
czoKKyMKKyMgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBu
b3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyMgYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBw
b3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisjCisjIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAi
QVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisjIElNUExJ
RUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZLAorIyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5G
UklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyMgQVVUSE9SUyBPUiBDT1BZUklHSFQg
SE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorIyBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lT
RSwgQVJJU0lORworIyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZU
V0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCisjIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKwor
IyBCeXRlLWNvbXBpbGVkIC8gb3B0aW1pemVkIC8gRExMIGZpbGVzCitfX3B5Y2FjaGVfXy8KKyou
cHlbY29kXQorKiRweS5jbGFzcworCisjIEMgZXh0ZW5zaW9ucworKi5zbworCisjIERpc3RyaWJ1
dGlvbiAvIHBhY2thZ2luZworLlB5dGhvbgorZW52LworYnVpbGQvCitkZXZlbG9wLWVnZ3MvCitk
aXN0LworZG93bmxvYWRzLworZWdncy8KKy5lZ2dzLworbGliLworbGliNjQvCitwYXJ0cy8KK3Nk
aXN0LwordmFyLworKi5lZ2ctaW5mby8KKy5pbnN0YWxsZWQuY2ZnCisqLmVnZworTUFOSUZFU1QK
KworIyBQeUluc3RhbGxlcgorIyAgVXN1YWxseSB0aGVzZSBmaWxlcyBhcmUgd3JpdHRlbiBieSBh
IHB5dGhvbiBzY3JpcHQgZnJvbSBhIHRlbXBsYXRlCisjICBiZWZvcmUgUHlJbnN0YWxsZXIgYnVp
bGRzIHRoZSBleGUsIHNvIGFzIHRvIGluamVjdCBkYXRlL290aGVyIGluZm9zIGludG8gaXQuCisq
Lm1hbmlmZXN0CisqLnNwZWMKKworIyBJbnN0YWxsZXIgbG9ncworcGlwLWxvZy50eHQKK3BpcC1k
ZWxldGUtdGhpcy1kaXJlY3RvcnkudHh0CisKKyMgVW5pdCB0ZXN0IC8gY292ZXJhZ2UgcmVwb3J0
cworaHRtbGNvdi8KKy50b3gvCisuY292ZXJhZ2UKKy5jb3ZlcmFnZS4qCisuY2FjaGUKK25vc2V0
ZXN0cy54bWwKK2NvdmVyYWdlLnhtbAorKixjb3ZlcgorCisjIFRyYW5zbGF0aW9ucworKi5tbwor
Ki5wb3QKKworIyBEamFuZ28gc3R1ZmY6CisqLmxvZworCisjIFNwaGlueCBkb2N1bWVudGF0aW9u
Citkb2MvX2J1aWxkLworCisjIFB5QnVpbGRlcgordGFyZ2V0LworCisjIEdlbmVyYXRlZCBieSBw
YXJzZS5weSAtcAorc3RhdHMucHJvZgorCisjIElERQorLmlkZWEKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
aHRtbDVsaWIvLmdpdG1vZHVsZXMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliLy5naXRtb2R1bGVzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmRiY2E0NzAzMjhkNmJjNTZkNDQzNDk2MmE2OTcyOTkyZGNlNGNkYzgKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2h0bWw1bGliLy5naXRtb2R1bGVzCkBAIC0wLDAgKzEsMyBAQAorW3N1Ym1v
ZHVsZSAidGVzdGRhdGEiXQorCXBhdGggPSBodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YQorCXVybCA9
IGh0dHBzOi8vZ2l0aHViLmNvbS9odG1sNWxpYi9odG1sNWxpYi10ZXN0cy5naXQKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaHRtbDVsaWIvLnByb3NwZWN0b3IueWFtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvLnByb3Nw
ZWN0b3IueWFtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZThlZmUxYTYyOWUwYTA0MzFhZDEzMmMwZmE1NjMyMjkw
MjgzYTk2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi8ucHJvc3BlY3Rvci55YW1s
CkBAIC0wLDAgKzEsMjEgQEAKK3N0cmljdG5lc3M6IHZlcnloaWdoCitkb2Mtd2FybmluZ3M6IGZh
bHNlCit0ZXN0LXdhcm5pbmdzOiBmYWxzZQorCittYXgtbGluZS1sZW5ndGg6IDEzOQorCityZXF1
aXJlbWVudHM6CisgIC0gcmVxdWlyZW1lbnRzLnR4dAorICAtIHJlcXVpcmVtZW50cy10ZXN0LnR4
dAorICAtIHJlcXVpcmVtZW50cy1vcHRpb25hbC50eHQKKworaWdub3JlLXBhdGhzOgorICAtIHBh
cnNlLnB5CisgIC0gdXRpbHMvCisKK3B5dGhvbi10YXJnZXRzOgorICAtIDIKKyAgLSAzCisKK21j
Y2FiZToKKyAgcnVuOiBmYWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi8ucHlsaW50cmMg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2h0bWw1bGliLy5weWxpbnRyYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYTc0ZDVkYjNmZjMxNTdlMjA2
ZDQ3YjUwNzE1ZDI2YTAzZWI4OWU4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi8u
cHlsaW50cmMKQEAgLTAsMCArMSwxMCBAQAorW01BU1RFUl0KK2lnbm9yZT10ZXN0cworCitbTUVT
U0FHRVMgQ09OVFJPTF0KKyMgbWVzc2FnZXMgdXAgdG8gZml4bWUgc2hvdWxkIHByb2JhYmx5IGJl
IGZpeGVkIHNvbWVob3cKK2Rpc2FibGUgPSByZWRlZmluZWQtYnVpbHRpbixhdHRyaWJ1dGUtZGVm
aW5lZC1vdXRzaWRlLWluaXQsYW5vbWFsb3VzLWJhY2tzbGFzaC1pbi1zdHJpbmcsbm8tc2VsZi11
c2UscmVkZWZpbmVkLW91dGVyLW5hbWUsYmFkLWNvbnRpbnVhdGlvbix3cm9uZy1pbXBvcnQtb3Jk
ZXIsc3VwZXJmbHVvdXMtcGFyZW5zLG5vLW1lbWJlcixkdXBsaWNhdGUtY29kZSxzdXBlci1pbml0
LW5vdC1jYWxsZWQsYWJzdHJhY3QtbWV0aG9kLHByb3BlcnR5LW9uLW9sZC1jbGFzcyx3cm9uZy1p
bXBvcnQtcG9zaXRpb24sbm8tbmFtZS1pbi1tb2R1bGUsbm8taW5pdCxiYWQtbWNzLWNsYXNzbWV0
aG9kLWFyZ3VtZW50LGJhZC1jbGFzc21ldGhvZC1hcmd1bWVudCxmaXhtZSxpbnZhbGlkLW5hbWUs
aW1wb3J0LWVycm9yLHRvby1mZXctcHVibGljLW1ldGhvZHMsdG9vLW1hbnktYW5jZXN0b3JzLHRv
by1tYW55LWFyZ3VtZW50cyx0b28tbWFueS1ib29sZWFuLWV4cHJlc3Npb25zLHRvby1tYW55LWJy
YW5jaGVzLHRvby1tYW55LWluc3RhbmNlLWF0dHJpYnV0ZXMsdG9vLW1hbnktbG9jYWxzLHRvby1t
YW55LWxpbmVzLHRvby1tYW55LXB1YmxpYy1tZXRob2RzLHRvby1tYW55LXJldHVybi1zdGF0ZW1l
bnRzLHRvby1tYW55LXN0YXRlbWVudHMsbWlzc2luZy1kb2NzdHJpbmcsbGluZS10b28tbG9uZyxs
b2NhbGx5LWRpc2FibGVkLGxvY2FsbHktZW5hYmxlZCxiYWQtYnVpbHRpbixkZXByZWNhdGVkLWxh
bWJkYQorCitbRk9STUFUXQorbWF4LWxpbmUtbGVuZ3RoPTEzOQorc2luZ2xlLWxpbmUtaWYtc3Rt
dD1ubwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi8ucHl0ZXN0LmV4cGVjdCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRt
bDVsaWIvLnB5dGVzdC5leHBlY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGZhMzI2ZjAzNTRmODk0MzFkYjgzYzc0
MjBjYTQxMjdlNjBjNTI2OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvLnB5dGVz
dC5leHBlY3QKQEAgLTAsMCArMSwxMzIyIEBACitweXRlc3QtZXhwZWN0IGZpbGUgdjEKKygyLCA3
LCAxMSwgJ2ZpbmFsJywgMCkKK2InaHRtbDVsaWIvdGVzdHMvdGVzdF9lbmNvZGluZy5weTo6dGVz
dF9lbmNvZGluZzo6WzExMF0nOiBGQUlMCitiJ2h0bWw1bGliL3Rlc3RzL3Rlc3RfZW5jb2Rpbmcu
cHk6OnRlc3RfZW5jb2Rpbmc6OlsxMTFdJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90b2tlbml6ZXIvdGVzdDIudGVzdDo6MDo6ZGF0YVN0YXRlJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90b2tlbml6ZXIvdGVzdDMudGVzdDo6MjI4OjpkYXRhU3RhdGUnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Rva2VuaXplci90ZXN0My50ZXN0OjoyMzE6OmRh
dGFTdGF0ZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdG9rZW5pemVyL3Rlc3Qz
LnRlc3Q6OjIzMjo6ZGF0YVN0YXRlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
b2tlbml6ZXIvdGVzdDMudGVzdDo6MjM0OjpkYXRhU3RhdGUnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3Rva2VuaXplci90ZXN0My50ZXN0OjoyMzU6OmRhdGFTdGF0ZSc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdG9rZW5pemVyL3Rlc3QzLnRlc3Q6OjIzNzo6ZGF0
YVN0YXRlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90b2tlbml6ZXIvdGVzdDMu
dGVzdDo6MjQwOjpkYXRhU3RhdGUnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Rv
a2VuaXplci90ZXN0My50ZXN0OjoyNDE6OmRhdGFTdGF0ZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdG9rZW5pemVyL3Rlc3QzLnRlc3Q6OjI0Mzo6ZGF0YVN0YXRlJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90b2tlbml6ZXIvdGVzdDMudGVzdDo6MjQ0OjpkYXRh
U3RhdGUnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Rva2VuaXplci90ZXN0My50
ZXN0OjoyNDY6OmRhdGFTdGF0ZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdG9r
ZW5pemVyL3Rlc3QzLnRlc3Q6OjI1ODo6ZGF0YVN0YXRlJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90b2tlbml6ZXIvdGVzdDMudGVzdDo6NjU2OjpkYXRhU3RhdGUnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2Fkb3B0aW9uMDEuZGF0
OjoxNzo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2Fkb3B0aW9uMDEuZGF0OjoxNzo6RE9NOjpwYXJzZXI6
OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi9hZG9wdGlvbjAxLmRhdDo6MTc6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVz
cGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L2Fkb3B0aW9uMDEuZGF0OjoxNzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2Un
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2Fkb3B0
aW9uMDEuZGF0OjoxNzo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2Fkb3B0aW9uMDEuZGF0
OjoxNzo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9hZG9wdGlvbjAxLmRhdDo6MTc6
Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vYWRvcHRpb24wMS5kYXQ6OjE3OjpseG1sOjpwYXJzZXI6OnZv
aWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MDo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQn
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVp
Z24tZnJhZ21lbnQuZGF0OjowOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21l
bnQuZGF0OjowOjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRh
dDo6MDo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0
OjowOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjA6
OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjA6
Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjA6Omx4bWw6OnBhcnNl
cjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjoxODo6RE9NOjpwYXJzZXI6Om5hbWVz
cGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjoxODo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWdu
LWZyYWdtZW50LmRhdDo6MTg6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJh
Z21lbnQuZGF0OjoxODo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJh
Z21lbnQuZGF0OjoxODo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21l
bnQuZGF0OjoxODo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdt
ZW50LmRhdDo6MTg6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjE4
OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MTk6OkRPTTo6
cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MTk6OkRPTTo6cGFyc2VyOjp2b2lk
LW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjE5OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1l
c3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MTk6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFt
ZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MTk6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3Bh
Y2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9m
b3JlaWduLWZyYWdtZW50LmRhdDo6MTk6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVz
cGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
Zm9yZWlnbi1mcmFnbWVudC5kYXQ6OjE5OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJh
Z21lbnQuZGF0OjoxOTo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5k
YXQ6OjE6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MTo6RE9NOjpw
YXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MTo6RWxlbWVudFRyZWU6OnBh
cnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjE6OkVsZW1lbnRUcmVlOjpwYXJzZXI6
OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MTo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6
Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjoxOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9p
ZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjoxOjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQn
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVp
Z24tZnJhZ21lbnQuZGF0OjoxOjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdt
ZW50LmRhdDo6MjI6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MjI6
OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjIyOjpFbGVtZW50
VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MjI6OkVsZW1lbnRUcmVl
OjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MjI6OmNFbGVtZW50VHJl
ZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MjI6OmNFbGVtZW50VHJlZTo6
cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjIyOjpseG1sOjpwYXJzZXI6
Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjoyMjo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVz
cGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
Zm9yZWlnbi1mcmFnbWVudC5kYXQ6OjIzOjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFn
bWVudC5kYXQ6OjIzOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0
OjoyMzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjIz
OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjIz
OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjIzOjpj
RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjoyMzo6
bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MjM6Omx4bWw6OnBhcnNl
cjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjoyNjo6RE9NOjpwYXJzZXI6Om5hbWVz
cGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjoyNjo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWdu
LWZyYWdtZW50LmRhdDo6MjY6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJh
Z21lbnQuZGF0OjoyNjo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJh
Z21lbnQuZGF0OjoyNjo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21l
bnQuZGF0OjoyNjo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdt
ZW50LmRhdDo6MjY6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjI2
OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6Mjc6OkRPTTo6
cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6Mjc6OkRPTTo6cGFyc2VyOjp2b2lk
LW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjI3OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1l
c3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi9mb3JlaWduLWZyYWdtZW50LmRhdDo6Mjc6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFt
ZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi9mb3JlaWduLWZyYWdtZW50LmRhdDo6Mjc6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3Bh
Y2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9m
b3JlaWduLWZyYWdtZW50LmRhdDo6Mjc6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVz
cGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
Zm9yZWlnbi1mcmFnbWVudC5kYXQ6OjI3OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJh
Z21lbnQuZGF0OjoyNzo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5k
YXQ6OjI6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6Mjo6RE9NOjpw
YXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6Mjo6RWxlbWVudFRyZWU6OnBh
cnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjI6OkVsZW1lbnRUcmVlOjpwYXJzZXI6
OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6Mjo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6
Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjoyOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9p
ZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjoyOjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQn
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVp
Z24tZnJhZ21lbnQuZGF0OjoyOjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdt
ZW50LmRhdDo6MzA6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MzA6
OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjMwOjpFbGVtZW50
VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MzA6OkVsZW1lbnRUcmVl
OjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MzA6OmNFbGVtZW50VHJl
ZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MzA6OmNFbGVtZW50VHJlZTo6
cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjMwOjpseG1sOjpwYXJzZXI6
Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjozMDo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVz
cGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
Zm9yZWlnbi1mcmFnbWVudC5kYXQ6OjMxOjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFn
bWVudC5kYXQ6OjMxOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0
OjozMTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjMx
OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjMx
OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjMxOjpj
RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjozMTo6
bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MzE6Omx4bWw6OnBhcnNl
cjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjozNDo6RE9NOjpwYXJzZXI6Om5hbWVz
cGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjozNDo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWdu
LWZyYWdtZW50LmRhdDo6MzQ6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJh
Z21lbnQuZGF0OjozNDo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJh
Z21lbnQuZGF0OjozNDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21l
bnQuZGF0OjozNDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdt
ZW50LmRhdDo6MzQ6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjM0
OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MzU6OkRPTTo6
cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MzU6OkRPTTo6cGFyc2VyOjp2b2lk
LW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjM1OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1l
c3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MzU6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFt
ZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi9mb3JlaWduLWZyYWdtZW50LmRhdDo6MzU6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3Bh
Y2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9m
b3JlaWduLWZyYWdtZW50LmRhdDo6MzU6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVz
cGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
Zm9yZWlnbi1mcmFnbWVudC5kYXQ6OjM1OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJh
Z21lbnQuZGF0OjozNTo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5k
YXQ6OjM4OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjM4OjpET006
OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjozODo6RWxlbWVudFRyZWU6
OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjM4OjpFbGVtZW50VHJlZTo6cGFy
c2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjM4OjpjRWxlbWVudFRyZWU6OnBh
cnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjM4OjpjRWxlbWVudFRyZWU6OnBhcnNl
cjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjozODo6bHhtbDo6cGFyc2VyOjpuYW1l
c3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi9mb3JlaWduLWZyYWdtZW50LmRhdDo6Mzg6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2Un
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVp
Z24tZnJhZ21lbnQuZGF0OjozOTo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQu
ZGF0OjozOTo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6Mzk6
OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjozOTo6RWxl
bWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjozOTo6Y0Vs
ZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0OjozOTo6Y0VsZW1l
bnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6Mzk6Omx4bWw6
OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjM5OjpseG1sOjpwYXJzZXI6OnZv
aWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6Mzo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQn
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVp
Z24tZnJhZ21lbnQuZGF0OjozOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21l
bnQuZGF0OjozOjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRh
dDo6Mzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0
OjozOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjM6
OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjM6
Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjM6Omx4bWw6OnBhcnNl
cjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0Ojo0MDo6RE9NOjpwYXJzZXI6Om5hbWVz
cGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L2ZvcmVpZ24tZnJhZ21lbnQuZGF0Ojo0MDo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWdu
LWZyYWdtZW50LmRhdDo6NDA6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJh
Z21lbnQuZGF0Ojo0MDo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJh
Z21lbnQuZGF0Ojo0MDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21l
bnQuZGF0Ojo0MDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdt
ZW50LmRhdDo6NDA6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjQw
OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6NDE6OkRPTTo6
cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6NDE6OkRPTTo6cGFyc2VyOjp2b2lk
LW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjQxOjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1l
c3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi9mb3JlaWduLWZyYWdtZW50LmRhdDo6NDE6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFt
ZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi9mb3JlaWduLWZyYWdtZW50LmRhdDo6NDE6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3Bh
Y2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9m
b3JlaWduLWZyYWdtZW50LmRhdDo6NDE6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVz
cGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
Zm9yZWlnbi1mcmFnbWVudC5kYXQ6OjQxOjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJh
Z21lbnQuZGF0Ojo0MTo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5k
YXQ6OjQ3OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjQ3OjpET006
OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0Ojo0Nzo6RWxlbWVudFRyZWU6
OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjQ3OjpFbGVtZW50VHJlZTo6cGFy
c2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjQ3OjpjRWxlbWVudFRyZWU6OnBh
cnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjQ3OjpjRWxlbWVudFRyZWU6OnBhcnNl
cjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0Ojo0Nzo6bHhtbDo6cGFyc2VyOjpuYW1l
c3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi9mb3JlaWduLWZyYWdtZW50LmRhdDo6NDc6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2Un
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVp
Z24tZnJhZ21lbnQuZGF0Ojo0ODo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQu
ZGF0Ojo0ODo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6NDg6
OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0Ojo0ODo6RWxl
bWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0Ojo0ODo6Y0Vs
ZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2ZvcmVpZ24tZnJhZ21lbnQuZGF0Ojo0ODo6Y0VsZW1l
bnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9mb3JlaWduLWZyYWdtZW50LmRhdDo6NDg6Omx4bWw6
OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vZm9yZWlnbi1mcmFnbWVudC5kYXQ6OjQ4OjpseG1sOjpwYXJzZXI6OnZv
aWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi9pc2luZGV4LmRhdDo6MDo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2lzaW5kZXguZGF0Ojow
OjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2lzaW5kZXguZGF0OjowOjpFbGVtZW50VHJlZTo6cGFy
c2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi9pc2luZGV4LmRhdDo6MDo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1l
c3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L2lzaW5kZXguZGF0OjowOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vaXNpbmRleC5kYXQ6
OjA6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vaXNpbmRleC5kYXQ6OjA6Omx4bWw6
OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vaXNpbmRleC5kYXQ6OjA6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3Bh
Y2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2lz
aW5kZXguZGF0OjoxOjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vaXNpbmRleC5kYXQ6OjE6OkRPTTo6cGFy
c2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vaXNpbmRleC5kYXQ6OjE6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVz
cGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L2lzaW5kZXguZGF0OjoxOjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vaXNpbmRleC5k
YXQ6OjE6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9pc2luZGV4LmRhdDo6MTo6Y0VsZW1l
bnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9pc2luZGV4LmRhdDo6MTo6bHhtbDo6cGFyc2VyOjpu
YW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi9pc2luZGV4LmRhdDo6MTo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vaXNpbmRleC5kYXQ6
OjI6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9pc2luZGV4LmRhdDo6Mjo6RE9NOjpwYXJzZXI6OnZvaWQt
bmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi9pc2luZGV4LmRhdDo6Mjo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vaXNpbmRleC5k
YXQ6OjI6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9pc2luZGV4LmRhdDo6Mjo6Y0Vs
ZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2lzaW5kZXguZGF0OjoyOjpjRWxlbWVudFRyZWU6OnBh
cnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL2lzaW5kZXguZGF0OjoyOjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQn
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2lzaW5k
ZXguZGF0OjoyOjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9pc2luZGV4LmRhdDo6Mzo6RE9NOjpw
YXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL2lzaW5kZXguZGF0OjozOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2Un
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2lzaW5k
ZXguZGF0OjozOjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9pc2luZGV4LmRhdDo6Mzo6RWxl
bWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL2lzaW5kZXguZGF0OjozOjpjRWxlbWVudFRyZWU6
OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vaXNpbmRleC5kYXQ6OjM6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lk
LW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vaXNpbmRleC5kYXQ6OjM6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vaXNpbmRleC5kYXQ6OjM6
Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL21lbnVpdGVtLWVsZW1lbnQuZGF0OjozOjpET006OnBh
cnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vbWVudWl0ZW0tZWxlbWVudC5kYXQ6OjM6OkRPTTo6cGFyc2VyOjp2b2lkLW5h
bWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vbWVudWl0ZW0tZWxlbWVudC5kYXQ6OjM6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFj
ZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL21l
bnVpdGVtLWVsZW1lbnQuZGF0OjozOjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFj
ZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vbWVu
dWl0ZW0tZWxlbWVudC5kYXQ6OjM6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9tZW51aXRl
bS1lbGVtZW50LmRhdDo6Mzo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9tZW51aXRl
bS1lbGVtZW50LmRhdDo6Mzo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9tZW51aXRlbS1lbGVtZW50LmRh
dDo6Mzo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vbWVudWl0ZW0tZWxlbWVudC5kYXQ6OjQ6OkRP
TTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi9tZW51aXRlbS1lbGVtZW50LmRhdDo6NDo6RE9NOjpwYXJzZXI6OnZv
aWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi9tZW51aXRlbS1lbGVtZW50LmRhdDo6NDo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFt
ZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vbWVudWl0ZW0tZWxlbWVudC5kYXQ6OjQ6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFt
ZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi9tZW51aXRlbS1lbGVtZW50LmRhdDo6NDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFj
ZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL21l
bnVpdGVtLWVsZW1lbnQuZGF0Ojo0OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3Bh
Y2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL21l
bnVpdGVtLWVsZW1lbnQuZGF0Ojo0OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL21lbnVpdGVtLWVsZW1l
bnQuZGF0Ojo0OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9tZW51aXRlbS1lbGVtZW50LmRhdDo6
NTo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL21lbnVpdGVtLWVsZW1lbnQuZGF0Ojo1OjpET006OnBhcnNl
cjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL21lbnVpdGVtLWVsZW1lbnQuZGF0Ojo1OjpFbGVtZW50VHJlZTo6cGFyc2Vy
OjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi9tZW51aXRlbS1lbGVtZW50LmRhdDo6NTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9p
ZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL21lbnVpdGVtLWVsZW1lbnQuZGF0Ojo1OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFt
ZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vbWVudWl0ZW0tZWxlbWVudC5kYXQ6OjU6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5h
bWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vbWVudWl0ZW0tZWxlbWVudC5kYXQ6OjU6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vbWVudWl0ZW0t
ZWxlbWVudC5kYXQ6OjU6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL25hbWVzcGFjZS1zZW5zaXRp
dml0eS5kYXQ6OjA6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9uYW1lc3BhY2Utc2Vuc2l0aXZpdHkuZGF0
OjowOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL25hbWVzcGFjZS1zZW5zaXRpdml0eS5kYXQ6OjA6
OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL25hbWVzcGFjZS1zZW5zaXRpdml0eS5kYXQ6OjA6
OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9uYW1lc3BhY2Utc2Vuc2l0aXZpdHkuZGF0
OjowOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vbmFtZXNwYWNlLXNlbnNpdGl2aXR5LmRh
dDo6MDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9uYW1lc3BhY2Utc2Vuc2l0aXZp
dHkuZGF0OjowOjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL25hbWVzcGFjZS1zZW5zaXRpdml0eS5kYXQ6
OjA6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3J1YnkuZGF0OjowOjpET006OnBhcnNlcjo6bmFt
ZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vcnVieS5kYXQ6OjA6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjA6OkVsZW1l
bnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3J1YnkuZGF0OjowOjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2
b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vcnVieS5kYXQ6OjA6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRh
dDo6MDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6MDo6bHhtbDo6
cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6MDo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5k
YXQ6OjEwOjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjEwOjpET006OnBhcnNlcjo6dm9p
ZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3J1YnkuZGF0OjoxMDo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6
OjEwOjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjEwOjpjRWxlbWVu
dFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjEwOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6
dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3J1YnkuZGF0OjoxMDo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6MTA6
Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3J1YnkuZGF0OjoxMjo6RE9NOjpwYXJzZXI6Om5hbWVz
cGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3J1YnkuZGF0OjoxMjo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6MTI6OkVsZW1l
bnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3J1YnkuZGF0OjoxMjo6RWxlbWVudFRyZWU6OnBhcnNlcjo6
dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3J1YnkuZGF0OjoxMjo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQn
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3J1Ynku
ZGF0OjoxMjo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6MTI6Omx4
bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjEyOjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNw
YWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9y
dWJ5LmRhdDo6MTU6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6MTU6OkRPTTo6cGFyc2Vy
Ojp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjE1OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2Vk
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5
LmRhdDo6MTU6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6MTU6OmNF
bGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6MTU6OmNFbGVtZW50VHJlZTo6cGFy
c2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjE1OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3J1YnkuZGF0
OjoxNTo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjE3OjpET006OnBhcnNlcjo6
bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vcnVieS5kYXQ6OjE3OjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3J1YnkuZGF0OjoxNzo6
RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjE3OjpFbGVtZW50VHJlZTo6cGFy
c2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjE3OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNw
YWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
cnVieS5kYXQ6OjE3OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3J1YnkuZGF0Ojox
Nzo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6MTc6Omx4bWw6OnBhcnNlcjo6dm9pZC1u
YW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3J1YnkuZGF0OjoxOjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjE6OkRPTTo6cGFy
c2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjE6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFj
ZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3J1
YnkuZGF0OjoxOjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjE6OmNF
bGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6MTo6Y0VsZW1lbnRUcmVlOjpwYXJz
ZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6MTo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6
MTo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjIwOjpET006OnBhcnNlcjo6bmFt
ZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vcnVieS5kYXQ6OjIwOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3J1YnkuZGF0OjoyMDo6RWxl
bWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjIwOjpFbGVtZW50VHJlZTo6cGFyc2Vy
Ojp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjIwOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNl
ZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVi
eS5kYXQ6OjIwOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3J1YnkuZGF0OjoyMDo6
bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6MjA6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1l
c3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3J1YnkuZGF0OjoyOjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjI6OkRPTTo6cGFyc2Vy
Ojp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjI6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQn
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3J1Ynku
ZGF0OjoyOjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjI6OmNFbGVt
ZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6Mjo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6
OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi9ydWJ5LmRhdDo6Mjo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6Mjo6
bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjM6OkRPTTo6cGFyc2VyOjpuYW1lc3Bh
Y2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9y
dWJ5LmRhdDo6Mzo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6Mzo6RWxlbWVudFRy
ZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjM6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQt
bmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi9ydWJ5LmRhdDo6Mzo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3J1YnkuZGF0Ojoz
OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3J1YnkuZGF0OjozOjpseG1sOjpwYXJz
ZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3J1YnkuZGF0OjozOjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6
NTo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3J1YnkuZGF0Ojo1OjpET006OnBhcnNlcjo6dm9pZC1uYW1l
c3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3J1YnkuZGF0Ojo1OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6NTo6RWxl
bWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3J1YnkuZGF0Ojo1OjpjRWxlbWVudFRyZWU6OnBh
cnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjU6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVz
cGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
cnVieS5kYXQ6OjU6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6OjU6Omx4bWw6OnBhcnNl
cjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3J1YnkuZGF0Ojo3OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6Ojc6
OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5kYXQ6Ojc6OkVsZW1lbnRUcmVlOjpwYXJzZXI6
Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3J1YnkuZGF0Ojo3OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vcnVieS5k
YXQ6Ojc6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6Nzo6Y0VsZW1lbnRU
cmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9ydWJ5LmRhdDo6Nzo6bHhtbDo6cGFyc2VyOjpuYW1lc3Bh
Y2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9y
dWJ5LmRhdDo6Nzo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vc2NyaXB0ZWQvYWRvcHRpb24wMS5k
YXQ6OjA6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9zY3JpcHRlZC9hZG9wdGlvbjAxLmRhdDo6MDo6RE9N
OjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi9zY3JpcHRlZC9hZG9wdGlvbjAxLmRhdDo6MDo6RWxlbWVudFRy
ZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vc2NyaXB0ZWQvYWRvcHRpb24wMS5kYXQ6OjA6OkVsZW1lbnRUcmVl
OjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi9zY3JpcHRlZC9hZG9wdGlvbjAxLmRhdDo6MDo6Y0VsZW1lbnRU
cmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3NjcmlwdGVkL2Fkb3B0aW9uMDEuZGF0OjowOjpjRWxlbWVudFRy
ZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3NjcmlwdGVkL2Fkb3B0aW9uMDEuZGF0OjowOjpseG1sOjpw
YXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3NjcmlwdGVkL2Fkb3B0aW9uMDEuZGF0OjowOjpseG1sOjpwYXJzZXI6OnZv
aWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi9zY3JpcHRlZC9hcmsuZGF0OjowOjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vc2NyaXB0ZWQv
YXJrLmRhdDo6MDo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9zY3JpcHRlZC9hcmsuZGF0OjowOjpF
bGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9zY3JpcHRlZC9hcmsuZGF0OjowOjpFbGVtZW50VHJl
ZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vc2NyaXB0ZWQvYXJrLmRhdDo6MDo6Y0VsZW1lbnRUcmVlOjpw
YXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3NjcmlwdGVkL2Fyay5kYXQ6OjA6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2
b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vc2NyaXB0ZWQvYXJrLmRhdDo6MDo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9zY3JpcHRl
ZC9hcmsuZGF0OjowOjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9zY3JpcHRlZC93ZWJraXQwMS5k
YXQ6OjA6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi9zY3JpcHRlZC93ZWJraXQwMS5kYXQ6OjA6OkRPTTo6
cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vc2NyaXB0ZWQvd2Via2l0MDEuZGF0OjowOjpFbGVtZW50VHJlZTo6
cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi9zY3JpcHRlZC93ZWJraXQwMS5kYXQ6OjA6OkVsZW1lbnRUcmVlOjpwYXJz
ZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi9zY3JpcHRlZC93ZWJraXQwMS5kYXQ6OjA6OmNFbGVtZW50VHJlZTo6cGFy
c2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi9zY3JpcHRlZC93ZWJraXQwMS5kYXQ6OjA6OmNFbGVtZW50VHJlZTo6cGFyc2Vy
Ojp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vc2NyaXB0ZWQvd2Via2l0MDEuZGF0OjowOjpseG1sOjpwYXJzZXI6Om5hbWVz
cGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3NjcmlwdGVkL3dlYmtpdDAxLmRhdDo6MDo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vc2NyaXB0
ZWQvd2Via2l0MDEuZGF0OjoxOjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vc2NyaXB0ZWQvd2Via2l0MDEu
ZGF0OjoxOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3NjcmlwdGVkL3dlYmtpdDAxLmRhdDo6MTo6
RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vc2NyaXB0ZWQvd2Via2l0MDEuZGF0OjoxOjpFbGVt
ZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vc2NyaXB0ZWQvd2Via2l0MDEuZGF0OjoxOjpjRWxl
bWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vc2NyaXB0ZWQvd2Via2l0MDEuZGF0OjoxOjpjRWxlbWVu
dFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3NjcmlwdGVkL3dlYmtpdDAxLmRhdDo6MTo6bHhtbDo6
cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi9zY3JpcHRlZC93ZWJraXQwMS5kYXQ6OjE6Omx4bWw6OnBhcnNlcjo6dm9p
ZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6MDo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6
MDo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjA6OkVsZW1lbnRUcmVlOjpw
YXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MDo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1u
YW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6MDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6MDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjA6
Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjowOjpseG1sOjpwYXJzZXI6OnZvaWQt
bmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi90ZW1wbGF0ZS5kYXQ6OjEwMDo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6
MTAwOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTAwOjpFbGVtZW50VHJl
ZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjEwMDo6RWxlbWVudFRyZWU6OnBhcnNlcjo6
dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTAwOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNw
YWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
dGVtcGxhdGUuZGF0OjoxMDA6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxh
dGUuZGF0OjoxMDA6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDA6Omx4bWw6
OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTAxOjpET006OnBhcnNlcjo6bmFtZXNw
YWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
dGVtcGxhdGUuZGF0OjoxMDE6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojox
MDE6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTAxOjpFbGVtZW50
VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDE6OmNFbGVtZW50VHJlZTo6
cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjEwMTo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZv
aWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjEwMTo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5k
YXQ6OjEwMTo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDI6OkRPTTo6
cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjEwMjo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNw
YWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90
ZW1wbGF0ZS5kYXQ6OjEwMjo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0
OjoxMDI6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjEwMjo6
Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTAyOjpjRWxlbWVudFRy
ZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTAyOjpseG1sOjpwYXJzZXI6Om5h
bWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6MTAyOjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5k
YXQ6OjEwMzo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTAzOjpET006OnBhcnNl
cjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTAzOjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1l
c3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi90ZW1wbGF0ZS5kYXQ6OjEwMzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2Un
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBs
YXRlLmRhdDo6MTAzOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojox
MDM6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDM6Omx4
bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDM6Omx4bWw6OnBhcnNlcjo6dm9pZC1u
YW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6MTA0OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojox
MDQ6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDQ6OkVsZW1lbnRUcmVl
OjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTA0OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2
b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDQ6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3Bh
Y2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90
ZW1wbGF0ZS5kYXQ6OjEwNDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0
ZS5kYXQ6OjEwNDo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjEwNDo6bHhtbDo6
cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDU6OkRPTTo6cGFyc2VyOjpuYW1lc3Bh
Y2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90
ZW1wbGF0ZS5kYXQ6OjEwNTo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjEw
NTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDU6OkVsZW1lbnRU
cmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjEwNTo6Y0VsZW1lbnRUcmVlOjpw
YXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTA1OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9p
ZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6MTA1OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6MTA1OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjEwNjo6RE9NOjpw
YXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTA2OjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3Bh
Y2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
bXBsYXRlLmRhdDo6MTA2OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6
OjEwNjo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTA2Ojpj
RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDY6OmNFbGVtZW50VHJl
ZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDY6Omx4bWw6OnBhcnNlcjo6bmFt
ZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVtcGxhdGUuZGF0OjoxMDY6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6MTA3OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDc6OkRPTTo6cGFyc2Vy
Ojp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDc6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVz
cGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3RlbXBsYXRlLmRhdDo6MTA3OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxh
dGUuZGF0OjoxMDc6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjEw
Nzo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjEwNzo6bHht
bDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjEwNzo6bHhtbDo6cGFyc2VyOjp2b2lkLW5h
bWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVtcGxhdGUuZGF0OjoxMDo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTA6
OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDo6RWxlbWVudFRyZWU6OnBh
cnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1u
YW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6MTA6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0
ZS5kYXQ6OjEwOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6
MTA6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMDo6bHhtbDo6cGFyc2VyOjp2
b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMTo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6MTE6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMTo6RWxlbWVudFRy
ZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6
dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTE6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3Bh
Y2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90
ZW1wbGF0ZS5kYXQ6OjExOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6MTE6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMTo6bHhtbDo6cGFy
c2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMjo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQn
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBs
YXRlLmRhdDo6MTI6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMjo6RWxl
bWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMjo6RWxlbWVudFRyZWU6OnBh
cnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTI6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpu
YW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi90ZW1wbGF0ZS5kYXQ6OjEyOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3Bh
Y2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
bXBsYXRlLmRhdDo6MTI6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMjo6bHht
bDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMzo6RE9NOjpwYXJzZXI6Om5hbWVz
cGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3RlbXBsYXRlLmRhdDo6MTM6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojox
Mzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxMzo6RWxlbWVudFRy
ZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTM6OmNFbGVtZW50VHJlZTo6cGFy
c2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjEzOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1u
YW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6MTM6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojox
Mzo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxNDo6RE9NOjpwYXJzZXI6
Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6MTQ6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUu
ZGF0OjoxNDo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxNDo6RWxl
bWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTQ6OmNFbGVtZW50VHJl
ZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjE0OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6
dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTQ6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUu
ZGF0OjoxNDo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxNTo6RE9NOjpw
YXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTU6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFj
ZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVt
cGxhdGUuZGF0OjoxNTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojox
NTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTU6OmNFbGVt
ZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjE1OjpjRWxlbWVudFRyZWU6OnBh
cnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTU6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNl
ZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVt
cGxhdGUuZGF0OjoxNTo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxNjo6
RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTY6OkRPTTo6cGFyc2VyOjp2b2lkLW5h
bWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVtcGxhdGUuZGF0OjoxNjo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUu
ZGF0OjoxNjo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTY6
OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjE2OjpjRWxlbWVudFRy
ZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTY6Omx4bWw6OnBhcnNlcjo6bmFt
ZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVtcGxhdGUuZGF0OjoxNjo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0
OjoxNzo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTc6OkRPTTo6cGFyc2VyOjp2
b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxNzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNl
ZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVt
cGxhdGUuZGF0OjoxNzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6MTc6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjE3OjpjRWxl
bWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTc6Omx4bWw6OnBhcnNl
cjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxNzo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxh
dGUuZGF0OjoxODo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTg6OkRPTTo6cGFy
c2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxODo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFt
ZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVtcGxhdGUuZGF0OjoxODo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2Un
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBs
YXRlLmRhdDo6MTg6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjE4
OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTg6Omx4bWw6
OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxODo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVz
cGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
dGVtcGxhdGUuZGF0OjoxOTo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTk6OkRP
TTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxOTo6RWxlbWVudFRyZWU6OnBhcnNl
cjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxOTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1l
c3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3RlbXBsYXRlLmRhdDo6MTk6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5k
YXQ6OjE5OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTk6
Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxOTo6bHhtbDo6cGFyc2VyOjp2b2lk
LW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vdGVtcGxhdGUuZGF0OjoxOjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojox
OjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTo6RWxlbWVudFRyZWU6OnBh
cnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoxOjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5h
bWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVtcGxhdGUuZGF0OjoxOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUu
ZGF0OjoxOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MTo6
bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjE6Omx4bWw6OnBhcnNlcjo6dm9pZC1u
YW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6MjA6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjIw
OjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MjA6OkVsZW1lbnRUcmVlOjpw
YXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MjA6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQt
bmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi90ZW1wbGF0ZS5kYXQ6OjIwOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxh
dGUuZGF0OjoyMDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6
OjIwOjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MjA6Omx4bWw6OnBhcnNlcjo6
dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MjE6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5k
YXQ6OjIxOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MjE6OkVsZW1lbnRU
cmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MjE6OkVsZW1lbnRUcmVlOjpwYXJzZXI6
OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjIxOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNw
YWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
dGVtcGxhdGUuZGF0OjoyMTo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0
ZS5kYXQ6OjIxOjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MjE6Omx4bWw6OnBh
cnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MjI6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2Vk
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1w
bGF0ZS5kYXQ6OjIyOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MjI6OkVs
ZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MjI6OkVsZW1lbnRUcmVlOjpw
YXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjIyOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6
bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vdGVtcGxhdGUuZGF0OjoyMjo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNw
YWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90
ZW1wbGF0ZS5kYXQ6OjIyOjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MjI6Omx4
bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MjM6OkRPTTo6cGFyc2VyOjpuYW1l
c3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi90ZW1wbGF0ZS5kYXQ6OjIzOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6
MjM6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MjM6OkVsZW1lbnRU
cmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjIzOjpjRWxlbWVudFRyZWU6OnBh
cnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoyMzo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQt
bmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi90ZW1wbGF0ZS5kYXQ6OjIzOjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6
MjM6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MjQ6OkRPTTo6cGFyc2Vy
OjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjI0OjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6MjQ6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MjQ6OkVs
ZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjI0OjpjRWxlbWVudFRy
ZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoyNDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6
OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjI0OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6MjQ6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MjU6OkRPTTo6
cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjI1OjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3Bh
Y2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
bXBsYXRlLmRhdDo6MjU6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6
MjU6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjI1OjpjRWxl
bWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoyNTo6Y0VsZW1lbnRUcmVlOjpw
YXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjI1OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFj
ZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
bXBsYXRlLmRhdDo6MjU6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MjY6
OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjI2OjpET006OnBhcnNlcjo6dm9pZC1u
YW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6MjY6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6MjY6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjI2
OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoyNjo6Y0VsZW1lbnRU
cmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjI2OjpseG1sOjpwYXJzZXI6Om5h
bWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6MjY6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6Mjc6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjI3OjpET006OnBhcnNlcjo6
dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Mjc6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFj
ZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
bXBsYXRlLmRhdDo6Mjc6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5k
YXQ6OjI3OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoyNzo6Y0Vs
ZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjI3OjpseG1sOjpwYXJz
ZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Mjc6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2Un
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBs
YXRlLmRhdDo6Mjg6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjI4OjpET006OnBh
cnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Mjg6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5h
bWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6Mjg6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNl
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1w
bGF0ZS5kYXQ6OjI4OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojoy
ODo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjI4OjpseG1s
OjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Mjg6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1l
c3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3RlbXBsYXRlLmRhdDo6Mjk6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjI5OjpE
T006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Mjk6OkVsZW1lbnRUcmVlOjpwYXJz
ZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Mjk6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFt
ZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi90ZW1wbGF0ZS5kYXQ6OjI5OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUu
ZGF0OjoyOTo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjI5
OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Mjk6Omx4bWw6OnBhcnNlcjo6dm9p
ZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6Mjo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6
Mjo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjI6OkVsZW1lbnRUcmVlOjpw
YXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Mjo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1u
YW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6Mjo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6Mjo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjI6
Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjoyOjpseG1sOjpwYXJzZXI6OnZvaWQt
bmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi90ZW1wbGF0ZS5kYXQ6OjMwOjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojoz
MDo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjMwOjpFbGVtZW50VHJlZTo6
cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjMwOjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lk
LW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vdGVtcGxhdGUuZGF0OjozMDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQn
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBs
YXRlLmRhdDo6MzA6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0
OjozMDo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjMwOjpseG1sOjpwYXJzZXI6
OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjMxOjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUu
ZGF0OjozMTo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjMxOjpFbGVtZW50
VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjMxOjpFbGVtZW50VHJlZTo6cGFyc2Vy
Ojp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozMTo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVz
cGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3RlbXBsYXRlLmRhdDo6MzE6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxh
dGUuZGF0OjozMTo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjMxOjpseG1sOjpw
YXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjMyOjpET006OnBhcnNlcjo6bmFtZXNwYWNl
ZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVt
cGxhdGUuZGF0OjozMjo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjMyOjpF
bGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjMyOjpFbGVtZW50VHJlZTo6
cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozMjo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6
Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6MzI6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVz
cGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
dGVtcGxhdGUuZGF0OjozMjo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjMyOjps
eG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjMzOjpET006OnBhcnNlcjo6bmFt
ZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVtcGxhdGUuZGF0OjozMzo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6
OjMzOjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjMzOjpFbGVtZW50
VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozMzo6Y0VsZW1lbnRUcmVlOjpw
YXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MzM6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lk
LW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vdGVtcGxhdGUuZGF0OjozMzo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6
OjMzOjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjM0OjpET006OnBhcnNl
cjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozNDo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0
ZS5kYXQ6OjM0OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjM0OjpF
bGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozNDo6Y0VsZW1lbnRU
cmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MzQ6OmNFbGVtZW50VHJlZTo6cGFyc2Vy
Ojp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozNDo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0
ZS5kYXQ6OjM0OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjM1OjpET006
OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozNTo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNw
YWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90
ZW1wbGF0ZS5kYXQ6OjM1OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6
OjM1OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozNTo6Y0Vs
ZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MzU6OmNFbGVtZW50VHJlZTo6
cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozNTo6bHhtbDo6cGFyc2VyOjpuYW1lc3Bh
Y2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90
ZW1wbGF0ZS5kYXQ6OjM1OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjM2
OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozNjo6RE9NOjpwYXJzZXI6OnZvaWQt
bmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi90ZW1wbGF0ZS5kYXQ6OjM2OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0
ZS5kYXQ6OjM2OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojoz
Njo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6MzY6OmNFbGVtZW50
VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozNjo6bHhtbDo6cGFyc2VyOjpu
YW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi90ZW1wbGF0ZS5kYXQ6OjM2OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5k
YXQ6OjM3OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozNzo6RE9NOjpwYXJzZXI6
OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjM3OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3Bh
Y2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90
ZW1wbGF0ZS5kYXQ6OjM3OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUu
ZGF0OjozNzo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Mzc6OmNF
bGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozNzo6bHhtbDo6cGFy
c2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjM3OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNl
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1w
bGF0ZS5kYXQ6OjM4OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozODo6RE9NOjpw
YXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjM4OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpu
YW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi90ZW1wbGF0ZS5kYXQ6OjM4OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFj
ZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVt
cGxhdGUuZGF0OjozODo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6
Mzg6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozODo6bHht
bDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjM4OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFt
ZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi90ZW1wbGF0ZS5kYXQ6OjM6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjM6OkRP
TTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozOjpFbGVtZW50VHJlZTo6cGFyc2Vy
OjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjM6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNw
YWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90
ZW1wbGF0ZS5kYXQ6OjM6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6
OjM6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0OjozOjpseG1s
OjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Mzo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVz
cGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
dGVtcGxhdGUuZGF0Ojo0MDo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDA6OkRP
TTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0MDo6RWxlbWVudFRyZWU6OnBhcnNl
cjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0MDo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1l
c3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3RlbXBsYXRlLmRhdDo6NDA6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5k
YXQ6OjQwOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDA6
Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0MDo6bHhtbDo6cGFyc2VyOjp2b2lk
LW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0MTo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6
NDE6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0MTo6RWxlbWVudFRyZWU6
OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0MTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9p
ZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6NDE6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2Vk
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1w
bGF0ZS5kYXQ6OjQxOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6NDE6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0MTo6bHhtbDo6cGFyc2Vy
Ojp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0Mjo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6NDI6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0Mjo6RWxlbWVu
dFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0Mjo6RWxlbWVudFRyZWU6OnBhcnNl
cjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDI6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1l
c3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi90ZW1wbGF0ZS5kYXQ6OjQyOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2Un
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBs
YXRlLmRhdDo6NDI6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0Mjo6bHhtbDo6
cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0Mzo6RE9NOjpwYXJzZXI6Om5hbWVzcGFj
ZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
bXBsYXRlLmRhdDo6NDM6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0Mzo6
RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0Mzo6RWxlbWVudFRyZWU6
OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDM6OmNFbGVtZW50VHJlZTo6cGFyc2Vy
OjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjQzOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1l
c3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3RlbXBsYXRlLmRhdDo6NDM6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0Mzo6
bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0NDo6RE9NOjpwYXJzZXI6Om5h
bWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6NDQ6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0
Ojo0NDo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0NDo6RWxlbWVu
dFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDQ6OmNFbGVtZW50VHJlZTo6
cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjQ0OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9p
ZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6NDQ6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0
Ojo0NDo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0NTo6RE9NOjpwYXJz
ZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDU6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxh
dGUuZGF0Ojo0NTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0NTo6
RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDU6OmNFbGVtZW50
VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjQ1OjpjRWxlbWVudFRyZWU6OnBhcnNl
cjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDU6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxh
dGUuZGF0Ojo0NTo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0Njo6RE9N
OjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDY6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVz
cGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
dGVtcGxhdGUuZGF0Ojo0Njo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0
Ojo0Njo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDY6OmNF
bGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjQ2OjpjRWxlbWVudFRyZWU6
OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDY6Omx4bWw6OnBhcnNlcjo6bmFtZXNw
YWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
dGVtcGxhdGUuZGF0Ojo0Njo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0
Nzo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDc6OkRPTTo6cGFyc2VyOjp2b2lk
LW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0Nzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxh
dGUuZGF0Ojo0Nzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6
NDc6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjQ3OjpjRWxlbWVu
dFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDc6Omx4bWw6OnBhcnNlcjo6
bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0Nzo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUu
ZGF0Ojo0ODo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDg6OkRPTTo6cGFyc2Vy
Ojp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0ODo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNw
YWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
dGVtcGxhdGUuZGF0Ojo0ODo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6NDg6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjQ4Ojpj
RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDg6Omx4bWw6OnBh
cnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0ODo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFj
ZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVt
cGxhdGUuZGF0Ojo0OTo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDk6OkRPTTo6
cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0OTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6
bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0OTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3Bh
Y2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
bXBsYXRlLmRhdDo6NDk6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6
OjQ5OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDk6Omx4
bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0OTo6bHhtbDo6cGFyc2VyOjp2b2lkLW5h
bWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVtcGxhdGUuZGF0Ojo0OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0OjpE
T006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDo6RWxlbWVudFRyZWU6OnBhcnNl
cjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo0OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVz
cGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
dGVtcGxhdGUuZGF0Ojo0OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0
Ojo0OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NDo6bHht
bDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjQ6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1l
c3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3RlbXBsYXRlLmRhdDo6NTA6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjUwOjpE
T006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTA6OkVsZW1lbnRUcmVlOjpwYXJz
ZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTA6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFt
ZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi90ZW1wbGF0ZS5kYXQ6OjUwOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUu
ZGF0Ojo1MDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjUw
OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTA6Omx4bWw6OnBhcnNlcjo6dm9p
ZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6NTE6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6
OjUxOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTE6OkVsZW1lbnRUcmVl
OjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTE6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZv
aWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjUxOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNl
ZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVt
cGxhdGUuZGF0Ojo1MTo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5k
YXQ6OjUxOjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTE6Omx4bWw6OnBhcnNl
cjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTI6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0
ZS5kYXQ6OjUyOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTI6OkVsZW1l
bnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTI6OkVsZW1lbnRUcmVlOjpwYXJz
ZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjUyOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFt
ZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVtcGxhdGUuZGF0Ojo1Mjo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNl
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1w
bGF0ZS5kYXQ6OjUyOjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTI6Omx4bWw6
OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTM6OkRPTTo6cGFyc2VyOjpuYW1lc3Bh
Y2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90
ZW1wbGF0ZS5kYXQ6OjUzOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTM6
OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTM6OkVsZW1lbnRUcmVl
OjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjUzOjpjRWxlbWVudFRyZWU6OnBhcnNl
cjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo1Mzo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFt
ZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi90ZW1wbGF0ZS5kYXQ6OjUzOjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTM6
Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTQ6OkRPTTo6cGFyc2VyOjpu
YW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi90ZW1wbGF0ZS5kYXQ6OjU0OjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6NTQ6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTQ6OkVsZW1l
bnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjU0OjpjRWxlbWVudFRyZWU6
OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo1NDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZv
aWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjU0OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6NTQ6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTU6OkRPTTo6cGFy
c2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjU1OjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2Un
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBs
YXRlLmRhdDo6NTU6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTU6
OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjU1OjpjRWxlbWVu
dFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo1NTo6Y0VsZW1lbnRUcmVlOjpwYXJz
ZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjU1OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQn
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBs
YXRlLmRhdDo6NTU6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTY6OkRP
TTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjU2OjpET006OnBhcnNlcjo6dm9pZC1uYW1l
c3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3RlbXBsYXRlLmRhdDo6NTY6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6NTY6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjU2Ojpj
RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo1Njo6Y0VsZW1lbnRUcmVl
OjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjU2OjpseG1sOjpwYXJzZXI6Om5hbWVz
cGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3RlbXBsYXRlLmRhdDo6NTY6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6
NTc6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjU3OjpET006OnBhcnNlcjo6dm9p
ZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6NTc6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQn
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBs
YXRlLmRhdDo6NTc6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6
OjU3OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo1Nzo6Y0VsZW1l
bnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjU3OjpseG1sOjpwYXJzZXI6
Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6NTc6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6NTg6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjU4OjpET006OnBhcnNl
cjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTg6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVz
cGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3RlbXBsYXRlLmRhdDo6NTg6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0
ZS5kYXQ6OjU4OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo1ODo6
Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjU4OjpseG1sOjpw
YXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTg6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3Bh
Y2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
bXBsYXRlLmRhdDo6NTk6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjU5OjpET006
OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTk6OkVsZW1lbnRUcmVlOjpwYXJzZXI6
Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6NTk6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNw
YWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90
ZW1wbGF0ZS5kYXQ6OjU5OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0
Ojo1OTo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjU5Ojps
eG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTk6Omx4bWw6OnBhcnNlcjo6dm9pZC1u
YW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6NTo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTo6
RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjU6OkVsZW1lbnRUcmVlOjpwYXJz
ZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1l
c3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3RlbXBsYXRlLmRhdDo6NTo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6NTo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjU6Omx4
bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo1OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFt
ZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi90ZW1wbGF0ZS5kYXQ6OjYwOjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2MDo6
RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjYwOjpFbGVtZW50VHJlZTo6cGFy
c2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjYwOjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5h
bWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVtcGxhdGUuZGF0Ojo2MDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6NjA6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2
MDo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjYwOjpseG1sOjpwYXJzZXI6OnZv
aWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjYxOjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0
Ojo2MTo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjYxOjpFbGVtZW50VHJl
ZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjYxOjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2
b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2MTo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFj
ZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
bXBsYXRlLmRhdDo6NjE6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUu
ZGF0Ojo2MTo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjYxOjpseG1sOjpwYXJz
ZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjYyOjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxh
dGUuZGF0Ojo2Mjo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjYyOjpFbGVt
ZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjYyOjpFbGVtZW50VHJlZTo6cGFy
c2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2Mjo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5h
bWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6NjI6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFj
ZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVt
cGxhdGUuZGF0Ojo2Mjo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjYyOjpseG1s
OjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjYzOjpET006OnBhcnNlcjo6bmFtZXNw
YWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
dGVtcGxhdGUuZGF0Ojo2Mzo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjYz
OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjYzOjpFbGVtZW50VHJl
ZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2Mzo6Y0VsZW1lbnRUcmVlOjpwYXJz
ZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NjM6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5h
bWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVtcGxhdGUuZGF0Ojo2Mzo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjYz
OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjY0OjpET006OnBhcnNlcjo6
bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2NDo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5k
YXQ6OjY0OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjY0OjpFbGVt
ZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2NDo6Y0VsZW1lbnRUcmVl
OjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NjQ6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2
b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2NDo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5k
YXQ6OjY0OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjY1OjpET006OnBh
cnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2NTo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNl
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1w
bGF0ZS5kYXQ6OjY1OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjY1
OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2NTo6Y0VsZW1l
bnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NjU6OmNFbGVtZW50VHJlZTo6cGFy
c2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2NTo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2Vk
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1w
bGF0ZS5kYXQ6OjY1OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjY2OjpE
T006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2Njo6RE9NOjpwYXJzZXI6OnZvaWQtbmFt
ZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi90ZW1wbGF0ZS5kYXQ6OjY2OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5k
YXQ6OjY2OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2Njo6
Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NjY6OmNFbGVtZW50VHJl
ZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2Njo6bHhtbDo6cGFyc2VyOjpuYW1l
c3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi90ZW1wbGF0ZS5kYXQ6OjY2OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6
OjY3OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2Nzo6RE9NOjpwYXJzZXI6OnZv
aWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjY3OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2Vk
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1w
bGF0ZS5kYXQ6OjY3OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0
Ojo2Nzo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Njc6OmNFbGVt
ZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2Nzo6bHhtbDo6cGFyc2Vy
OjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjY3OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0
ZS5kYXQ6OjY4OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2ODo6RE9NOjpwYXJz
ZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjY4OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1l
c3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi90ZW1wbGF0ZS5kYXQ6OjY4OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxh
dGUuZGF0Ojo2ODo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Njg6
OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2ODo6bHhtbDo6
cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjY4OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNw
YWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90
ZW1wbGF0ZS5kYXQ6OjY5OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2OTo6RE9N
OjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjY5OjpFbGVtZW50VHJlZTo6cGFyc2Vy
OjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjY5OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVz
cGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
dGVtcGxhdGUuZGF0Ojo2OTo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6Njk6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2OTo6
bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjY5OjpseG1sOjpwYXJzZXI6OnZvaWQt
bmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi90ZW1wbGF0ZS5kYXQ6OjY6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjY6
OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2OjpFbGVtZW50VHJlZTo6cGFy
c2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjY6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFt
ZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi90ZW1wbGF0ZS5kYXQ6OjY6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5k
YXQ6OjY6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo2Ojps
eG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Njo6bHhtbDo6cGFyc2VyOjp2b2lkLW5h
bWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVtcGxhdGUuZGF0Ojo3MDo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NzA6
OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3MDo6RWxlbWVudFRyZWU6OnBh
cnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3MDo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1u
YW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6NzA6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0
ZS5kYXQ6OjcwOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6
NzA6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3MDo6bHhtbDo6cGFyc2VyOjp2
b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3MTo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6NzE6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3MTo6RWxlbWVudFRy
ZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3MTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6
dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NzE6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3Bh
Y2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90
ZW1wbGF0ZS5kYXQ6OjcxOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6NzE6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3MTo6bHhtbDo6cGFy
c2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3Mjo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQn
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBs
YXRlLmRhdDo6NzI6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3Mjo6RWxl
bWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3Mjo6RWxlbWVudFRyZWU6OnBh
cnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NzI6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpu
YW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi90ZW1wbGF0ZS5kYXQ6OjcyOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3Bh
Y2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
bXBsYXRlLmRhdDo6NzI6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3Mjo6bHht
bDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3Mzo6RE9NOjpwYXJzZXI6Om5hbWVz
cGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3RlbXBsYXRlLmRhdDo6NzM6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3
Mzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3Mzo6RWxlbWVudFRy
ZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NzM6OmNFbGVtZW50VHJlZTo6cGFy
c2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjczOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1u
YW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6NzM6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3
Mzo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3NDo6RE9NOjpwYXJzZXI6
Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6NzQ6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUu
ZGF0Ojo3NDo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3NDo6RWxl
bWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NzQ6OmNFbGVtZW50VHJl
ZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojc0OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6
dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NzQ6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUu
ZGF0Ojo3NDo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3NTo6RE9NOjpw
YXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NzU6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFj
ZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVt
cGxhdGUuZGF0Ojo3NTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3
NTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NzU6OmNFbGVt
ZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojc1OjpjRWxlbWVudFRyZWU6OnBh
cnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NzU6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNl
ZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVt
cGxhdGUuZGF0Ojo3NTo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3Njo6
RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NzY6OkRPTTo6cGFyc2VyOjp2b2lkLW5h
bWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVtcGxhdGUuZGF0Ojo3Njo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUu
ZGF0Ojo3Njo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NzY6
OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojc2OjpjRWxlbWVudFRy
ZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6NzY6Omx4bWw6OnBhcnNlcjo6bmFt
ZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVtcGxhdGUuZGF0Ojo3Njo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0
Ojo3Nzo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Nzc6OkRPTTo6cGFyc2VyOjp2
b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3Nzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNl
ZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVt
cGxhdGUuZGF0Ojo3Nzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6Nzc6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojc3OjpjRWxl
bWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Nzc6Omx4bWw6OnBhcnNl
cjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3Nzo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxh
dGUuZGF0Ojo3ODo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Nzg6OkRPTTo6cGFy
c2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3ODo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFt
ZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVtcGxhdGUuZGF0Ojo3ODo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2Un
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBs
YXRlLmRhdDo6Nzg6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojc4
OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Nzg6Omx4bWw6
OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3ODo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVz
cGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
dGVtcGxhdGUuZGF0Ojo3OTo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Nzk6OkRP
TTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3OTo6RWxlbWVudFRyZWU6OnBhcnNl
cjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3OTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1l
c3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3RlbXBsYXRlLmRhdDo6Nzk6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5k
YXQ6Ojc5OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6Nzk6
Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo3OTo6bHhtbDo6cGFyc2VyOjp2b2lk
LW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4MDo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6
ODA6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4MDo6RWxlbWVudFRyZWU6
OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4MDo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9p
ZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6ODA6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2Vk
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1w
bGF0ZS5kYXQ6OjgwOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6ODA6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4MDo6bHhtbDo6cGFyc2Vy
Ojp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4MTo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6ODE6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4MTo6RWxlbWVu
dFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4MTo6RWxlbWVudFRyZWU6OnBhcnNl
cjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODE6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1l
c3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi90ZW1wbGF0ZS5kYXQ6OjgxOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2Un
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBs
YXRlLmRhdDo6ODE6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4MTo6bHhtbDo6
cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4Mjo6RE9NOjpwYXJzZXI6Om5hbWVzcGFj
ZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
bXBsYXRlLmRhdDo6ODI6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4Mjo6
RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4Mjo6RWxlbWVudFRyZWU6
OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODI6OmNFbGVtZW50VHJlZTo6cGFyc2Vy
OjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjgyOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1l
c3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3RlbXBsYXRlLmRhdDo6ODI6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4Mjo6
bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4Mzo6RE9NOjpwYXJzZXI6Om5h
bWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6ODM6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0
Ojo4Mzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4Mzo6RWxlbWVu
dFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODM6OmNFbGVtZW50VHJlZTo6
cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjgzOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9p
ZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6ODM6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0
Ojo4Mzo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVz
dHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4NDo6RE9NOjpwYXJz
ZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODQ6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxh
dGUuZGF0Ojo4NDo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4NDo6
RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODQ6OmNFbGVtZW50
VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojg0OjpjRWxlbWVudFRyZWU6OnBhcnNl
cjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODQ6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxh
dGUuZGF0Ojo4NDo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4NTo6RE9N
OjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODU6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVz
cGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
dGVtcGxhdGUuZGF0Ojo4NTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0
Ojo4NTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODU6OmNF
bGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojg1OjpjRWxlbWVudFRyZWU6
OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODU6Omx4bWw6OnBhcnNlcjo6bmFtZXNw
YWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
dGVtcGxhdGUuZGF0Ojo4NTo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4
Njo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODY6OkRPTTo6cGFyc2VyOjp2b2lk
LW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4Njo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxh
dGUuZGF0Ojo4Njo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6
ODY6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojg2OjpjRWxlbWVu
dFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODY6Omx4bWw6OnBhcnNlcjo6
bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4Njo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUu
ZGF0Ojo4Nzo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODc6OkRPTTo6cGFyc2Vy
Ojp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4Nzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNw
YWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
dGVtcGxhdGUuZGF0Ojo4Nzo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6ODc6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojg3Ojpj
RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODc6Omx4bWw6OnBh
cnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4Nzo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFj
ZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVt
cGxhdGUuZGF0Ojo4ODo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODg6OkRPTTo6
cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4ODo6RWxlbWVudFRyZWU6OnBhcnNlcjo6
bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4ODo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3Bh
Y2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
bXBsYXRlLmRhdDo6ODg6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6
Ojg4OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODg6Omx4
bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4ODo6bHhtbDo6cGFyc2VyOjp2b2lkLW5h
bWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVtcGxhdGUuZGF0Ojo4OTo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODk6
OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4OTo6RWxlbWVudFRyZWU6OnBh
cnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4OTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1u
YW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6ODk6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0
ZS5kYXQ6Ojg5OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6
ODk6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4OTo6bHhtbDo6cGFyc2VyOjp2
b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0
Ojo4OjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6ODo6RWxlbWVudFRyZWU6
OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lk
LW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vdGVtcGxhdGUuZGF0Ojo4OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxh
dGUuZGF0Ojo4OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6
ODo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojg6Omx4bWw6OnBhcnNlcjo6dm9p
ZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6OTA6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6
OjkwOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTA6OkVsZW1lbnRUcmVl
OjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTA6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZv
aWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjkwOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNl
ZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVt
cGxhdGUuZGF0Ojo5MDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJ
TAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5k
YXQ6OjkwOjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTA6Omx4bWw6OnBhcnNl
cjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTE6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0
ZS5kYXQ6OjkxOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTE6OkVsZW1l
bnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTE6OkVsZW1lbnRUcmVlOjpwYXJz
ZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjkxOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFt
ZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVtcGxhdGUuZGF0Ojo5MTo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNl
JzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1w
bGF0ZS5kYXQ6OjkxOjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTE6Omx4bWw6
OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTI6OkRPTTo6cGFyc2VyOjpuYW1lc3Bh
Y2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90
ZW1wbGF0ZS5kYXQ6OjkyOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTI6
OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTI6OkVsZW1lbnRUcmVl
OjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjkyOjpjRWxlbWVudFRyZWU6OnBhcnNl
cjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25z
dHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo5Mjo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFt
ZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi90ZW1wbGF0ZS5kYXQ6OjkyOjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTI6
Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTM6OkRPTTo6cGFyc2VyOjpu
YW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi90ZW1wbGF0ZS5kYXQ6OjkzOjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6OTM6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTM6OkVsZW1l
bnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjkzOjpjRWxlbWVudFRyZWU6
OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo5Mzo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZv
aWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6OjkzOjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6OTM6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTQ6OkRPTTo6cGFy
c2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojk0OjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2Un
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBs
YXRlLmRhdDo6OTQ6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0
bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTQ6
OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojk0OjpjRWxlbWVu
dFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo5NDo6Y0VsZW1lbnRUcmVlOjpwYXJz
ZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojk0OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQn
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBs
YXRlLmRhdDo6OTQ6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTU6OkRP
TTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojk1OjpET006OnBhcnNlcjo6dm9pZC1uYW1l
c3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3RlbXBsYXRlLmRhdDo6OTU6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6OTU6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojk1Ojpj
RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo5NTo6Y0VsZW1lbnRUcmVl
OjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojk1OjpseG1sOjpwYXJzZXI6Om5hbWVz
cGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3RlbXBsYXRlLmRhdDo6OTU6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6
OTY6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojk2OjpET006OnBhcnNlcjo6dm9p
ZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6OTY6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQn
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBs
YXRlLmRhdDo6OTY6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6
Ojk2OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo5Njo6Y0VsZW1l
bnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojk2OjpseG1sOjpwYXJzZXI6
Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6OTY6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRl
LmRhdDo6OTc6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojk3OjpET006OnBhcnNl
cjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTc6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVz
cGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3RlbXBsYXRlLmRhdDo6OTc6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0
ZS5kYXQ6Ojk3OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo5Nzo6
Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojk3OjpseG1sOjpw
YXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTc6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3Bh
Y2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
bXBsYXRlLmRhdDo6OTg6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojk4OjpET006
OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTg6OkVsZW1lbnRUcmVlOjpwYXJzZXI6
Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6OTg6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNw
YWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90
ZW1wbGF0ZS5kYXQ6Ojk4OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0
Ojo5ODo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojk4Ojps
eG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRh
L3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTg6Omx4bWw6OnBhcnNlcjo6dm9pZC1u
YW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3RlbXBsYXRlLmRhdDo6OTk6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdo
dG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojk5
OjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTk6OkVsZW1lbnRUcmVlOjpw
YXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTk6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQt
bmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi90ZW1wbGF0ZS5kYXQ6Ojk5OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6
IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxh
dGUuZGF0Ojo5OTo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6
Ojk5OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTk6Omx4bWw6OnBhcnNlcjo6
dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlM
Cit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRh
dDo6OTo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6Ojk6OkVsZW1lbnRUcmVl
OjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3RlbXBsYXRlLmRhdDo6OTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9p
ZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3Ry
dWN0aW9uL3RlbXBsYXRlLmRhdDo6OTo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQn
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3RlbXBs
YXRlLmRhdDo6OTo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZW1wbGF0ZS5kYXQ6
Ojk6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVtcGxhdGUuZGF0Ojo5OjpseG1sOjpwYXJzZXI6OnZv
aWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi90ZXN0czExLmRhdDo6Mjo6RE9NOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rlc3RzMTEuZGF0Ojoy
OjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rlc3RzMTEuZGF0OjoyOjpFbGVtZW50VHJlZTo6cGFy
c2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi90ZXN0czExLmRhdDo6Mjo6RWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1l
c3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3Rlc3RzMTEuZGF0OjoyOjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMxMS5kYXQ6
OjI6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVs
aWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMxMS5kYXQ6OjI6Omx4bWw6
OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vdGVzdHMxMS5kYXQ6OjI6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3Bh
Y2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rl
c3RzMTEuZGF0Ojo0OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMxMS5kYXQ6OjQ6OkRPTTo6cGFy
c2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vdGVzdHMxMS5kYXQ6OjQ6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVz
cGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3Rlc3RzMTEuZGF0Ojo0OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMxMS5k
YXQ6OjQ6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0czExLmRhdDo6NDo6Y0VsZW1l
bnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0czExLmRhdDo6NDo6bHhtbDo6cGFyc2VyOjpu
YW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi90ZXN0czExLmRhdDo6NDo6bHhtbDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMxMS5kYXQ6
OjU6OkRPTTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0czExLmRhdDo6NTo6RE9NOjpwYXJzZXI6OnZvaWQt
bmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi90ZXN0czExLmRhdDo6NTo6RWxlbWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZB
SUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMxMS5k
YXQ6OjU6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0czExLmRhdDo6NTo6Y0Vs
ZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rlc3RzMTEuZGF0Ojo1OjpjRWxlbWVudFRyZWU6OnBh
cnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3Ry
ZWUtY29uc3RydWN0aW9uL3Rlc3RzMTEuZGF0Ojo1OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQn
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rlc3Rz
MTEuZGF0Ojo1OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0czExLmRhdDo6Njo6RE9NOjpw
YXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUt
Y29uc3RydWN0aW9uL3Rlc3RzMTEuZGF0Ojo2OjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2Un
OiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rlc3Rz
MTEuZGF0Ojo2OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0czExLmRhdDo6Njo6RWxl
bWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rlc3RzMTEuZGF0Ojo2OjpjRWxlbWVudFRyZWU6
OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vdGVzdHMxMS5kYXQ6OjY6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lk
LW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1
Y3Rpb24vdGVzdHMxMS5kYXQ6OjY6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMxMS5kYXQ6OjY6
Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rlc3RzMTkuZGF0OjoxNDo6RE9NOjpwYXJzZXI6Om5h
bWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0
aW9uL3Rlc3RzMTkuZGF0OjoxNDo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAor
dSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0czE5LmRhdDo6
MTQ6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rlc3RzMTkuZGF0OjoxNDo6RWxlbWVudFRy
ZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3Rlc3RzMTkuZGF0OjoxNDo6Y0VsZW1lbnRUcmVlOjpwYXJz
ZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3Rlc3RzMTkuZGF0OjoxNDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFt
ZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi90ZXN0czE5LmRhdDo6MTQ6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMxOS5kYXQ6OjE0Ojps
eG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0czE5LmRhdDo6MTc6OkRPTTo6cGFyc2VyOjpuYW1l
c3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi90ZXN0czE5LmRhdDo6MTc6OkRPTTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3Un
aHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMxOS5kYXQ6OjE3
OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0czE5LmRhdDo6MTc6OkVsZW1lbnRUcmVl
OjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0
YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0czE5LmRhdDo6MTc6OmNFbGVtZW50VHJlZTo6cGFyc2Vy
OjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi90ZXN0czE5LmRhdDo6MTc6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVz
cGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
dGVzdHMxOS5kYXQ6OjE3OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rlc3RzMTkuZGF0OjoxNzo6bHht
bDo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRh
dGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMxOS5kYXQ6Ojc6OkRPTTo6cGFyc2VyOjpuYW1lc3Bh
Y2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90
ZXN0czE5LmRhdDo6Nzo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1s
NWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0czE5LmRhdDo6Nzo6RWxl
bWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMxOS5kYXQ6Ojc6OkVsZW1lbnRUcmVlOjpwYXJz
ZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi90ZXN0czE5LmRhdDo6Nzo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVz
cGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9u
L3Rlc3RzMTkuZGF0Ojo3OjpjRWxlbWVudFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rlc3RzMTku
ZGF0Ojo3OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rlc3RzMTkuZGF0Ojo3OjpseG1sOjpwYXJzZXI6
OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi90ZXN0czIuZGF0Ojo2OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwK
K3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMyLmRhdDo6
Njo6RE9NOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90
ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0czIuZGF0Ojo2OjpFbGVtZW50VHJlZTo6cGFy
c2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi90ZXN0czIuZGF0Ojo2OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVz
cGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24v
dGVzdHMyLmRhdDo6Njo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rlc3RzMi5kYXQ6OjY6
OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIv
dGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMyLmRhdDo6Njo6bHhtbDo6cGFy
c2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi90ZXN0czIuZGF0Ojo2OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0czIu
ZGF0Ojo3OjpET006OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMv
dGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMyLmRhdDo6Nzo6RE9NOjpwYXJzZXI6OnZv
aWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi90ZXN0czIuZGF0Ojo3OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0czIu
ZGF0Ojo3OjpFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMyLmRhdDo6Nzo6Y0Vs
ZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rlc3RzMi5kYXQ6Ojc6OmNFbGVtZW50VHJlZTo6cGFy
c2VyOjp2b2lkLW5hbWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJl
ZS1jb25zdHJ1Y3Rpb24vdGVzdHMyLmRhdDo6Nzo6bHhtbDo6cGFyc2VyOjpuYW1lc3BhY2VkJzog
RkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0czIu
ZGF0Ojo3OjpseG1sOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90
ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0czI1LmRhdDo6Nzo6RE9NOjpwYXJz
ZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29u
c3RydWN0aW9uL3Rlc3RzMjUuZGF0Ojo3OjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rlc3RzMjUu
ZGF0Ojo3OjpFbGVtZW50VHJlZTo6cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi90ZXN0czI1LmRhdDo6Nzo6RWxlbWVu
dFRyZWU6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rl
c3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3Rlc3RzMjUuZGF0Ojo3OjpjRWxlbWVudFRyZWU6OnBh
cnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vdGVzdHMyNS5kYXQ6Ojc6OmNFbGVtZW50VHJlZTo6cGFyc2VyOjp2b2lkLW5h
bWVzcGFjZSc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rp
b24vdGVzdHMyNS5kYXQ6Ojc6Omx4bWw6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRt
bDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vdGVzdHMyNS5kYXQ6Ojc6Omx4
bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3Rk
YXRhL3RyZWUtY29uc3RydWN0aW9uL3dlYmtpdDAyLmRhdDo6MTQ6OkRPTTo6cGFyc2VyOjpuYW1l
c3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlv
bi93ZWJraXQwMi5kYXQ6OjE0OjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3dlYmtpdDAyLmRhdDo6
MTQ6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rl
c3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3dlYmtpdDAyLmRhdDo6MTQ6OkVsZW1lbnRU
cmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0
ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi93ZWJraXQwMi5kYXQ6OjE0OjpjRWxlbWVudFRyZWU6OnBh
cnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEvdHJlZS1j
b25zdHJ1Y3Rpb24vd2Via2l0MDIuZGF0OjoxNDo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQt
bmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVj
dGlvbi93ZWJraXQwMi5kYXQ6OjE0OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3dlYmtpdDAyLmRhdDo6
MTQ6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3Rz
L3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3dlYmtpdDAyLmRhdDo6MTU6OkRPTTo6cGFyc2Vy
OjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0
cnVjdGlvbi93ZWJraXQwMi5kYXQ6OjE1OjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3dlYmtpdDAy
LmRhdDo6MTU6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1J2h0bWw1
bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3dlYmtpdDAyLmRhdDo6MTU6OkVs
ZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0
cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi93ZWJraXQwMi5kYXQ6OjE1OjpjRWxlbWVudFRy
ZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVzdGRhdGEv
dHJlZS1jb25zdHJ1Y3Rpb24vd2Via2l0MDIuZGF0OjoxNTo6Y0VsZW1lbnRUcmVlOjpwYXJzZXI6
OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNv
bnN0cnVjdGlvbi93ZWJraXQwMi5kYXQ6OjE1OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBG
QUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3dlYmtpdDAy
LmRhdDo6MTU6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCit1J2h0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3dlYmtpdDAyLmRhdDo6MTY6OkRPTTo6
cGFyc2VyOjpuYW1lc3BhY2VkJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90cmVl
LWNvbnN0cnVjdGlvbi93ZWJraXQwMi5kYXQ6OjE2OjpET006OnBhcnNlcjo6dm9pZC1uYW1lc3Bh
Y2UnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3dl
YmtpdDAyLmRhdDo6MTY6OkVsZW1lbnRUcmVlOjpwYXJzZXI6Om5hbWVzcGFjZWQnOiBGQUlMCit1
J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3dlYmtpdDAyLmRhdDo6
MTY6OkVsZW1lbnRUcmVlOjpwYXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxp
Yi90ZXN0cy90ZXN0ZGF0YS90cmVlLWNvbnN0cnVjdGlvbi93ZWJraXQwMi5kYXQ6OjE2OjpjRWxl
bWVudFRyZWU6OnBhcnNlcjo6bmFtZXNwYWNlZCc6IEZBSUwKK3UnaHRtbDVsaWIvdGVzdHMvdGVz
dGRhdGEvdHJlZS1jb25zdHJ1Y3Rpb24vd2Via2l0MDIuZGF0OjoxNjo6Y0VsZW1lbnRUcmVlOjpw
YXJzZXI6OnZvaWQtbmFtZXNwYWNlJzogRkFJTAordSdodG1sNWxpYi90ZXN0cy90ZXN0ZGF0YS90
cmVlLWNvbnN0cnVjdGlvbi93ZWJraXQwMi5kYXQ6OjE2OjpseG1sOjpwYXJzZXI6Om5hbWVzcGFj
ZWQnOiBGQUlMCit1J2h0bWw1bGliL3Rlc3RzL3Rlc3RkYXRhL3RyZWUtY29uc3RydWN0aW9uL3dl
YmtpdDAyLmRhdDo6MTY6Omx4bWw6OnBhcnNlcjo6dm9pZC1uYW1lc3BhY2UnOiBGQUlMCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2h0bWw1bGliLy50cmF2aXMueW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi8udHJhdmlz
LnltbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41NzI3ZTA5NDdlMmViZjFiOGVkYzFmNDM5NTJlYTMxZTIwOTk3NjYz
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi8udHJhdmlzLnltbApAQCAtMCwwICsx
LDMyIEBACitsYW5ndWFnZTogcHl0aG9uCitweXRob246CisgIC0gInB5cHkiCisgIC0gIjMuNiIK
KyAgLSAiMy41IgorICAtICIzLjQiCisgIC0gIjMuMyIKKyAgLSAiMi43IgorCitzdWRvOiBmYWxz
ZQorCitjYWNoZTogcGlwCisKK2VudjoKKyAgZ2xvYmFsOgorICAgIC0gUFlURVNUX0NPTU1BTkQ9
ImNvdmVyYWdlIHJ1biAtbSBweXRlc3QiCisgIG1hdHJpeDoKKyAgICAtIFRPWEVOVj1vcHRpb25h
bAorICAgIC0gVE9YRU5WPWJhc2UKKyAgICAtIFRPWEVOVj1zaXgxOS1vcHRpb25hbAorCitpbnN0
YWxsOgorICAtIHBpcCBpbnN0YWxsIHRveCBjb2RlY292CisKK3NjcmlwdDoKKyAgLSB0b3gKKwor
YWZ0ZXJfc2NyaXB0OgorICAtIHB5dGhvbiBkZWJ1Zy1pbmZvLnB5CisKK2FmdGVyX3N1Y2Nlc3M6
CisgIC0gY29kZWNvdgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1hcmtzL2RhdGEv
dzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2JlbmNobWFya3MvZGF0YS93M2MtaW1wb3J0
LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTNiYmUzZWViM2I3MWRhMTI0ZjRi
ZDFmMWRmODE0YWFmMDUzYTljNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2JlbmNobWFya3MvZGF0YS93M2MtaW1wb3J0LmxvZwor
KysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9y
eSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0
aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJl
cXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9y
bS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0
cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBm
aWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgot
Tm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvYmVu
Y2htYXJrcy9kYXRhL1JFQURNRS5tZAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvYmVuY2htYXJrcy9kYXRhL2h0
bWwuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1hcmtzL2RhdGEvd3B0L3Jh
bmRvbS9iYWNrZ3JvdW5kLW9yaWdpbi0wMDctcmVmLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2JlbmNo
bWFya3MvZGF0YS93cHQvcmFuZG9tL2JhY2tncm91bmQtb3JpZ2luLTAwNy1yZWYuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kM2ExZDA1MzI4MTg0MjhlM2RmYjY5MTAxZDdlOGI4ODFiNDIwNjA4Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1hcmtzL2RhdGEvd3B0L3JhbmRvbS9iYWNr
Z3JvdW5kLW9yaWdpbi0wMDctcmVmLmh0bWwKQEAgLTAsMCArMSwxOCBAQAorPCFET0NUWVBFIGh0
bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+Q1NTIEJhY2tncm91bmRzIGFuZCBC
b3JkZXJzIFJlZmVyZW5jZTwvdGl0bGU+Cis8bGluayByZWw9ImF1dGhvciIgdGl0bGU9IkludGVs
IiBocmVmPSJodHRwOi8vd3d3LmludGVsLmNvbSI+Cis8c3R5bGU+CisgIGRpdiB7CisgICAgYmFj
a2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAgaGVpZ2h0OiA1NXB4OworICAgIGxlZnQ6IDVweDsK
KyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgdG9wOiA1cHg7CisgICAgd2lkdGg6IDU1cHg7
CisgIH0KKzwvc3R5bGU+Cis8Ym9keT4KKyAgPHA+VGVzdCBwYXNzZXMgaWYgdGhlcmUgaXMgYSBm
aWxsZWQgZ3JlZW4gc3F1YXJlIGFuZCA8c3Ryb25nPm5vIHJlZDwvc3Ryb25nPi48L3A+CisgIDxk
aXY+PC9kaXY+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2JlbmNobWFya3Mv
ZGF0YS93cHQvcmFuZG9tL2xpLXR5cGUtdW5zdXBwb3J0ZWQtcmVmLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1
bGliL2JlbmNobWFya3MvZGF0YS93cHQvcmFuZG9tL2xpLXR5cGUtdW5zdXBwb3J0ZWQtcmVmLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGZiYzVhY2E5NzRiZmZlYWRlMmU5N2U4ZmE0ZDBmMTgzYTg0NzQ2NAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvYmVuY2htYXJrcy9kYXRhL3dwdC9yYW5k
b20vbGktdHlwZS11bnN1cHBvcnRlZC1yZWYuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IWRvY3R5
cGUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9dXRmLTg+Cis8dGl0bGU+bGlAdHlwZTogdW5zdXBwb3J0
ZWQgdHlwZXM8L3RpdGxlPgorPGxpPmZpcnN0IGl0ZW08L2xpPgorPGxpPnNlY29uZCBpdGVtPC9s
aT4KKzxvbD4KKyAgPGxpPmZpcnN0IG9yZGVyZWQgaXRlbTwvbGk+CisgIDxsaT5zZWNvbmQgb3Jk
ZXJlZCBpdGVtPC9saT4KKzwvb2w+Cis8dWw+CisgIDxsaT5maXJzdCB1bm9yZGVyZWQgaXRlbTwv
bGk+CisgIDxsaT5zZWNvbmQgdW5vcmRlcmVkIGl0ZW08L2xpPgorPC91bD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaHRtbDVsaWIvYmVuY2htYXJrcy9kYXRhL3dwdC9yYW5kb20vdzNjLWltcG9ydC5sb2cg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2h0bWw1bGliL2JlbmNobWFya3MvZGF0YS93cHQvcmFuZG9tL3czYy1pbXBvcnQubG9n
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MWM2NjZhZTA0Mjg0MzhhMjRlN2E4Njll
Zjg0NDRkNzAzYTZhMGY5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaHRtbDVsaWIvYmVuY2htYXJrcy9kYXRhL3dwdC9yYW5kb20vdzNjLWltcG9y
dC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBk
aXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBt
b2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEg
cHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWIt
cGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13
M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3Zl
IHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1
bGliL2JlbmNobWFya3MvZGF0YS93cHQvcmFuZG9tLzAwMS5odG1sCi0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9i
ZW5jaG1hcmtzL2RhdGEvd3B0L3JhbmRvbS9iYWNrZ3JvdW5kX3Nob3J0aGFuZF9jc3NfcmVsYXRp
dmVfdXJsLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2JlbmNobWFya3MvZGF0YS93cHQvcmFuZG9tL2Jl
Zm9yZXVubG9hZC1vbi1oaXN0b3J5LWJhY2stMS5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1h
cmtzL2RhdGEvd3B0L3JhbmRvbS9ldWNrci1lbmNvZGUtZm9ybS5odG1sCi0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxp
Yi9iZW5jaG1hcmtzL2RhdGEvd3B0L3JhbmRvbS9mcmFtZS1hbmNlc3RvcnMtc2VsZi1hbGxvdy5o
dG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1hcmtzL2RhdGEvd3B0L3JhbmRvbS9ncm91cGluZy1k
bC5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1hcmtzL2RhdGEvd3B0L3JhbmRvbS9oZWF2eS1z
dHlsaW5nLTAwNS5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1hcmtzL2RhdGEvd3B0L3JhbmRv
bS9odGItbHRyLWx0ci5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1hcmtzL2RhdGEvd3B0L3Jh
bmRvbS9pZGJpbmRleF9nZXQ4Lmh0bQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvYmVuY2htYXJrcy9kYXRhL3dw
dC9yYW5kb20vaWRsaGFybmVzcy5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1hcmtzL2RhdGEv
d3B0L3JhbmRvbS9tb3otY3NzMjEtZmxvYXQtcGFnZS1icmVhay1pbnNpZGUtYXZvaWQtNi5odG1s
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1hcmtzL2RhdGEvd3B0L3JhbmRvbS9zaGFwZS1vdXRzaWRl
LWNvbnRlbnQtYm94LTAwMi5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1hcmtzL2RhdGEvd3B0
L3JhbmRvbS93b3JrZXItY29uc3RydWN0b3IuaHR0cHMuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9o
dG1sNWxpYi9iZW5jaG1hcmtzL2RhdGEvd3B0L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxp
Yi9iZW5jaG1hcmtzL2RhdGEvd3B0L3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwODVmNWU4M2E5ODRiZjM2ZjUwMTIxNzdhYjRmM2ZiYTcxMWU5OGZiLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIv
YmVuY2htYXJrcy9kYXRhL3dwdC93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE4
ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20g
dGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBp
biBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRo
dWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBy
dW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBv
cnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5
IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvYmVuY2htYXJrcy9kYXRhL3dwdC9MSUNF
TlNFLm1kCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1hcmtzL2RhdGEvd3B0L1JFQURNRS5tZApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1hcmtzL2RhdGEvd3B0L3dlaWdodGVkL2ZpbHRl
ci10dXJidWxlbmNlLWludmFsaWQtMDAxLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2JlbmNobWFya3Mv
ZGF0YS93cHQvd2VpZ2h0ZWQvZmlsdGVyLXR1cmJ1bGVuY2UtaW52YWxpZC0wMDEuaHRtbAppbmRl
eCAxMjJjYzcwZjM5NzkzNTAyNjk0OTk4ZmZhNDNjNDMxNzcxZTI4ZWY3Li43NDAwYzhiMzc5Mzhm
MTQzZmE3MDFlOTEyNmMwYTc2OWQ0ZDRkZTFjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2Jl
bmNobWFya3MvZGF0YS93cHQvd2VpZ2h0ZWQvZmlsdGVyLXR1cmJ1bGVuY2UtaW52YWxpZC0wMDEu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2JlbmNobWFya3MvZGF0YS93cHQvd2VpZ2h0ZWQvZmls
dGVyLXR1cmJ1bGVuY2UtaW52YWxpZC0wMDEuaHRtbApAQCAtMjUsNyArMjUsNyBAQAogICAgICAg
ICAgICAgPGZlRnVuY0cgdHlwZT0iZGlzY3JldGUiIHRhYmxlVmFsdWVzPSIwIDAuNTAyIDAiLz4g
PCEtLSBtYXAgWzAuLjEvM10gLT4gMDsgWzEvMy4uLjIvM10gLT4gMC41MDI7IFsyLzMuLjFdIC0+
IDAgLS0+CiAgICAgICAgICAgICA8ZmVGdW5jQiB0eXBlPSJkaXNjcmV0ZSIgdGFibGVWYWx1ZXM9
IjAiLz4KICAgICAgICAgICAgIDxmZUZ1bmNBIHR5cGU9ImRpc2NyZXRlIiB0YWJsZVZhbHVlcz0i
MCAxIDAiLz4KLSAgICAgICAgPC9mZWNvbXBvbmVudHRyYW5zZmVyPgorICAgICAgICA8L2ZlQ29t
cG9uZW50VHJhbnNmZXI+CiAgICAgPC9maWx0ZXI+CiAKICAgICA8ZmlsdGVyIGlkPSJmbjIiIHg9
IjAiIHk9IjAiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiPgpAQCAtMzUsNyArMzUsNyBAQAogICAgICAg
ICAgICAgPGZlRnVuY0cgdHlwZT0iZGlzY3JldGUiIHRhYmxlVmFsdWVzPSIwIDAuNTAyIDAiLz4g
PCEtLSBtYXAgWzAuLjEvM10gLT4gMDsgWzEvMy4uLjIvM10gLT4gMC41MDI7IFsyLzMuLjFdIC0+
IDAgLS0+CiAgICAgICAgICAgICA8ZmVGdW5jQiB0eXBlPSJkaXNjcmV0ZSIgdGFibGVWYWx1ZXM9
IjAiLz4KICAgICAgICAgICAgIDxmZUZ1bmNBIHR5cGU9ImRpc2NyZXRlIiB0YWJsZVZhbHVlcz0i
MCAxIDAiLz4KLSAgICAgICAgPC9mZWNvbXBvbmVudHRyYW5zZmVyPgorICAgICAgICA8L2ZlQ29t
cG9uZW50VHJhbnNmZXI+CiAgICAgPC9maWx0ZXI+CiAKICAgICA8IS0tIHR5cGU9dHVyYnVsZW5j
ZSAtLT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvYmVuY2htYXJrcy9kYXRhL3dwdC93ZWln
aHRlZC9pbWFnZS1vcmllbnRhdGlvbi1mcm9tLWltYWdlLWNvbnRlbnQtaW1hZ2VzLXJlZi5odG1s
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1hcmtzL2RhdGEvd3B0L3dlaWdodGVkL2ltYWdlLW9yaWVu
dGF0aW9uLWZyb20taW1hZ2UtY29udGVudC1pbWFnZXMtcmVmLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzBk
Mjk5MDlmOTA2ODgwM2RmY2ZlOWJkNjgxOGYzNTRkNGZiNmNhOAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaHRtbDVsaWIvYmVuY2htYXJrcy9kYXRhL3dwdC93ZWlnaHRlZC9pbWFnZS1vcmllbnRh
dGlvbi1mcm9tLWltYWdlLWNvbnRlbnQtaW1hZ2VzLXJlZi5odG1sCkBAIC0wLDAgKzEsODYgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DU1MgSW1hZ2VzIE1vZHVs
ZSBMZXZlbCAzOiBpbWFnZS1vcmllbnRhdGlvbjogZnJvbS1pbWFnZSBmb3IgY29udGVudCBpbWFn
ZXM8L3RpdGxlPgorPGxpbmsgcmVsPSJhdXRob3IiIHRpdGxlPSJTdGVwaGVuIENoZW5uZXkiIGhy
ZWY9Im1haWx0bzpzY2hlbm5leUBjaHJvbWl1bS5vcmciPgorPGxpbmsgcmVsPSJoZWxwIiBocmVm
PSJodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWltYWdlcy0zLyNwcm9wZGVmLWltYWdlLW9y
aWVudGF0aW9uIj4KKzxzdHlsZT4KKyAgICBkaXYuaW1hZ2UgeworICAgICAgICBkaXNwbGF5OiBp
bmxpbmUtYmxvY2s7CisgICAgfQorICAgIGRpdi5jb250YWluZXIgeworICAgICAgICBkaXNwbGF5
OiBpbmxpbmUtYmxvY2s7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgdmVydGljYWwt
YWxpZ246IHRvcDsKKyAgICB9CisgICAgaW1nIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAg
ICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0
OworICAgIH0KKyAgICBib2R5IHsKKyAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKKyAgICB9Cis8
L3N0eWxlPgorPC9oZWFkPgorPGJvZHkgPgorICAgIDxwPlRoZSBpbWFnZXMgc2hvdWxkIHJvdGF0
ZSByZXNwZWN0aW5nIHRoZWlyIEVYSUYgb3JpZW50YXRpb24gYmVjYXVzZQorICAgICAgIGltYWdl
LW9yaWVudGF0aW9uOiBmcm9tLWltYWdlIGlzIHNwZWNpZmllZC4KKyAgICA8L3A+CisgICAgPGRp
diBjbGFzcz0iY29udGFpbmVyIj4KKyAgICAgICAgPGRpdiBjbGFzcz0iaW1hZ2UiIHN0eWxlPSJj
b250ZW50OiB1cmwoLi4vc3VwcG9ydC9leGlmLW9yaWVudGF0aW9uLTEtdWwtcHJlLXJvdGF0ZWQu
anBnKSI+PC9kaXY+CisgICAgICAgIDxicj5Ob3JtYWwKKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNs
YXNzPSJjb250YWluZXIiPgorICAgICAgICA8ZGl2IGNsYXNzPSJpbWFnZSIgc3R5bGU9ImNvbnRl
bnQ6IHVybCguLi9zdXBwb3J0L2V4aWYtb3JpZW50YXRpb24tMi11ci1wcmUtcm90YXRlZC5qcGcp
Ij48L2Rpdj4KKyAgICAgICAgPGJyPkZsaXBwZWQgaG9yaXpvbnRhbGx5CisgICAgPC9kaXY+Cisg
ICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KKyAgICAgICAgPGRpdiBjbGFzcz0iaW1hZ2UiIHN0
eWxlPSJjb250ZW50OiB1cmwoLi4vc3VwcG9ydC9leGlmLW9yaWVudGF0aW9uLTMtbHItcHJlLXJv
dGF0ZWQuanBnKSI+PC9kaXY+CisgICAgICAgIDxicj5Sb3RhdGVkIDE4MCZkZWc7CisgICAgPC9k
aXY+CisgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KKyAgICAgICAgPGRpdiBjbGFzcz0iaW1h
Z2UiIHN0eWxlPSJjb250ZW50OiB1cmwoLi4vc3VwcG9ydC9leGlmLW9yaWVudGF0aW9uLTQtbG9s
LXByZS1yb3RhdGVkLmpwZykiPjwvZGl2PgorICAgICAgICA8YnI+RmxpcHBlZCB2ZXJ0aWNhbGx5
CisgICAgPC9kaXY+CisgICAgPGJyPgorICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CisgICAg
ICAgIDxkaXYgY2xhc3M9ImltYWdlIiBzdHlsZT0iY29udGVudDogdXJsKC4uL3N1cHBvcnQvZXhp
Zi1vcmllbnRhdGlvbi01LWx1LXByZS1yb3RhdGVkLmpwZykiPjwvZGl2PgorICAgICAgICA8YnI+
Um90YXRlZCA5MCZkZWc7IENDVyBhbmQgZmxpcHBlZCB2ZXJ0aWNhbGx5CisgICAgPC9kaXY+Cisg
ICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KKyAgICAgICAgPGRpdiBjbGFzcz0iaW1hZ2UiIHN0
eWxlPSJjb250ZW50OiB1cmwoLi4vc3VwcG9ydC9leGlmLW9yaWVudGF0aW9uLTYtcnUtcHJlLXJv
dGF0ZWQuanBnKSI+PC9kaXY+CisgICAgICAgIDxicj5Sb3RhdGVkIDkwJmRlZzsgQ1cKKyAgICA8
L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgorICAgICAgICA8ZGl2IGNsYXNzPSJp
bWFnZSIgc3R5bGU9ImNvbnRlbnQ6IHVybCguLi9zdXBwb3J0L2V4aWYtb3JpZW50YXRpb24tNy1y
bC1wcmUtcm90YXRlZC5qcGcpIj48L2Rpdj4KKyAgICAgICAgPGJyPlJvdGF0ZWQgOTAmZGVnOyBD
VyBhbmQgZmxpcHBlZCB2ZXJ0aWNhbGx5CisgICAgPC9kaXY+CisgICAgPGRpdiBjbGFzcz0iY29u
dGFpbmVyIj4KKyAgICAgICAgPGRpdiBjbGFzcz0iaW1hZ2UiIHN0eWxlPSJjb250ZW50OiB1cmwo
Li4vc3VwcG9ydC9leGlmLW9yaWVudGF0aW9uLTgtbGxvLXByZS1yb3RhdGVkLmpwZykiPjwvZGl2
PgorICAgICAgICA8YnI+Um90YXRlZCA5MCZkZWc7IENDVworICAgIDwvZGl2PgorICAgIDxicj4K
KyAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgorICAgICAgICA8aW1nIHN0eWxlPSJiYWNrZ3Jv
dW5kLWltYWdlOiB1cmwoLi4vc3VwcG9ydC9leGlmLW9yaWVudGF0aW9uLTUtbHUtcHJlLXJvdGF0
ZWQuanBnKSI+PC9pbWc+CisgICAgICAgIDxicj5Sb3RhdGVkIDkwJmRlZzsgQ0NXIGFuZCBmbGlw
cGVkIHZlcnRpY2FsbHkKKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgor
ICAgICAgICA8aW1nIHN0eWxlPSJiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vc3VwcG9ydC9leGlm
LW9yaWVudGF0aW9uLTYtcnUtcHJlLXJvdGF0ZWQuanBnKSI+PC9pbWc+CisgICAgICAgIDxicj5S
b3RhdGVkIDkwJmRlZzsgQ1cKKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIi
PgorICAgICAgICA8aW1nIHN0eWxlPSJiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vc3VwcG9ydC9l
eGlmLW9yaWVudGF0aW9uLTctcmwtcHJlLXJvdGF0ZWQuanBnKSI+PC9pbWc+CisgICAgICAgIDxi
cj5Sb3RhdGVkIDkwJmRlZzsgQ1cgYW5kIGZsaXBwZWQgdmVydGljYWxseQorICAgIDwvZGl2Pgor
ICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CisgICAgICAgIDxpbWcgc3R5bGU9ImJhY2tncm91
bmQtaW1hZ2U6IHVybCguLi9zdXBwb3J0L2V4aWYtb3JpZW50YXRpb24tOC1sbG8tcHJlLXJvdGF0
ZWQuanBnKSI+PC9pbWc+CisgICAgICAgIDxicj5Sb3RhdGVkIDkwJmRlZzsgQ0NXCisgICAgPC9k
aXY+CisgICAgPGJyPgorICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CisgICAgICAgIDxkaXYg
Y2xhc3M9ImltYWdlIiBzdHlsZT0iY29udGVudDogdXJsKC4uL3N1cHBvcnQvZXhpZi1vcmllbnRh
dGlvbi05LXUtcHJlLXJvdGF0ZWQuanBnKSI+PC9kaXY+CisgICAgICAgIDxicj5VbmRlZmluZWQg
KGludmFsaWQgdmFsdWUpCisgICAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2h0bWw1bGliL2JlbmNobWFya3MvZGF0YS93cHQvd2VpZ2h0ZWQvcG9zaXRpb24tc3Rp
Y2t5LXRhYmxlLXRoLWJvdHRvbS1yZWYuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvYmVuY2htYXJrcy9k
YXRhL3dwdC93ZWlnaHRlZC9wb3NpdGlvbi1zdGlja3ktdGFibGUtdGgtYm90dG9tLXJlZi5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjJhYTVjMDhhNTVkMjlhMDg5ZDU3ZTQzMDNkODkzZGZkMTU5MjBhYmYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2JlbmNobWFya3MvZGF0YS93cHQvd2VpZ2h0
ZWQvcG9zaXRpb24tc3RpY2t5LXRhYmxlLXRoLWJvdHRvbS1yZWYuaHRtbApAQCAtMCwwICsxLDYy
IEBACis8IURPQ1RZUEUgaHRtbD4KKzx0aXRsZT5SZWZlcmVuY2UgZm9yIHBvc2l0aW9uOnN0aWNr
eSBib3R0b20gY29uc3RyYWludCBzaG91bGQgYmVoYXZlIGNvcnJlY3RseSBmb3IgJmx0O3RoJmd0
OyBlbGVtZW50czwvdGl0bGU+CisKKzxzdHlsZT4KKy5ncm91cCB7CisgIGRpc3BsYXk6IGlubGlu
ZS1ibG9jazsKKyAgcG9zaXRpb246IHJlbGF0aXZlOworICB3aWR0aDogMTUwcHg7CisgIGhlaWdo
dDogMjAwcHg7Cit9CisKKy5zY3JvbGxlciB7CisgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgd2lk
dGg6IDEwMHB4OworICBoZWlnaHQ6IDE1MHB4OworICBvdmVyZmxvdy14OiBoaWRkZW47CisgIG92
ZXJmbG93LXk6IGF1dG87Cit9CisKKy5jb250ZW50cyB7CisgIGhlaWdodDogNTUwcHg7Cit9CisK
Ky5pbmRpY2F0b3IgeworICBwb3NpdGlvbjogYWJzb2x1dGU7CisgIGJhY2tncm91bmQtY29sb3I6
IGdyZWVuOworICBsZWZ0OiAwOworICBoZWlnaHQ6IDUwcHg7CisgIHdpZHRoOiA1MHB4OworfQor
PC9zdHlsZT4KKworPHNjcmlwdD4KK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVu
Y3Rpb24oKSB7CisgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxlcjEnKS5zY3JvbGxU
b3AgPSAwOworICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXIyJykuc2Nyb2xsVG9w
ID0gNzU7CisgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxlcjMnKS5zY3JvbGxUb3Ag
PSAyMDA7Cit9KTsKKzwvc2NyaXB0PgorCis8ZGl2IGNsYXNzPSJncm91cCI+CisgIDxkaXYgaWQ9
InNjcm9sbGVyMSIgY2xhc3M9InNjcm9sbGVyIj4KKyAgICA8ZGl2IGNsYXNzPSJpbmRpY2F0b3Ii
IHN0eWxlPSJ0b3A6IDEwMHB4OyI+PC9kaXY+CisgICAgPGRpdiBjbGFzcz0iY29udGVudHMiPjwv
ZGl2PgorICA8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJncm91cCI+CisgIDxkaXYgaWQ9
InNjcm9sbGVyMiIgY2xhc3M9InNjcm9sbGVyIj4KKyAgICA8ZGl2IGNsYXNzPSJpbmRpY2F0b3Ii
IHN0eWxlPSJ0b3A6IDE1MHB4OyI+PC9kaXY+CisgICAgPGRpdiBjbGFzcz0iY29udGVudHMiPjwv
ZGl2PgorICA8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJncm91cCI+CisgIDxkaXYgaWQ9
InNjcm9sbGVyMyIgY2xhc3M9InNjcm9sbGVyIj4KKyAgICA8ZGl2IGNsYXNzPSJpbmRpY2F0b3Ii
IHN0eWxlPSJ0b3A6IDI1MHB4OyI+PC9kaXY+CisgICAgPGRpdiBjbGFzcz0iY29udGVudHMiPjwv
ZGl2PgorICA8L2Rpdj4KKzwvZGl2PgorCis8ZGl2PllvdSBzaG91bGQgc2VlIHRocmVlIGdyZWVu
IGJveGVzIGFib3ZlLiBObyByZWQgc2hvdWxkIGJlIHZpc2libGUuPC9kaXY+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2h0bWw1bGliL2JlbmNobWFya3MvZGF0YS93cHQvd2VpZ2h0ZWQvcmVzaXplLTAwNC5o
dG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1hcmtzL2RhdGEvd3B0L3dlaWdodGVkL3Jlc2l6ZS0w
MDQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zYTFmNTYxNzQ5MzQzYmM4ODU3ZGM4YzQzM2E1MGQxYmY5Yzk0
ZjAyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1hcmtzL2RhdGEvd3B0
L3dlaWdodGVkL3Jlc2l6ZS0wMDQuaHRtbApAQCAtMCwwICsxLDIwIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5DU1MgQmFzaWMgVXNlciBJbnRlcmZh
Y2UgVGVzdDogcmVzaXplIGluaXRpYWwgdmFsdWUgLSBub25lPC90aXRsZT4KKzxsaW5rIHJlbD0i
YXV0aG9yIiB0aXRsZT0iSW50ZWwiIGhyZWY9Imh0dHA6Ly93d3cuaW50ZWwuY29tLyI+Cis8bGlu
ayByZWw9ImF1dGhvciIgdGl0bGU9IlNoaXlvdSBUYW4iIGhyZWY9Im1haWx0bzpzaGl5b3V4LnRh
bkBpbnRlbC5jb20iPgorPGxpbmsgcmVsPSJoZWxwIiB0aXRsZT0iOC4xLiAncmVzaXplJyBwcm9w
ZXJ0eSIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy11aS8jcmVzaXplIj4KKzxtZXRh
IG5hbWU9ImZsYWdzIiBjb250ZW50PSJpbnRlcmFjdCI+Cis8bWV0YSBuYW1lPSJhc3NlcnQiIGNv
bnRlbnQ9IlRlc3QgY2hlY2tzIHRoYXQgdGhlIHJlc2l6ZSBwcm9wZXJ0eSBpbml0aWFsIHZhbHVl
IGlzIG5vbmUiPgorPHN0eWxlPgorICAjdGVzdCB7CisgICAgYm9yZGVyOiAycHggc29saWQgYmx1
ZTsKKyAgICBoZWlnaHQ6IDEwMHB4OworICAgIG92ZXJmbG93OiBhdXRvOworICAgIHdpZHRoOiAx
MDBweDsKKyAgfQorPC9zdHlsZT4KKzxib2R5PgorICA8cD5UZXN0IHBhc3NlcyBpZiA8c3Ryb25n
Pm5laXRoZXI8L3N0cm9uZz4gdGhlIGhlaWdodCA8c3Ryb25nPm5vcjwvc3Ryb25nPiB0aGUgd2lk
dGggb2YgdGhlIGJsdWUgYm9yZGVyIHNxdWFyZSBjYW4gYmUgYWRqdXN0ZWQoZm9yIGluc3RhbmNl
IGJ5IGRyYWdnaW5nIHRoZSBib3R0b20tcmlnaHQgY29ybmVyKS48L3A+CisgIDxkaXYgaWQ9InRl
c3QiPjwvZGl2PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1hcmtz
L2RhdGEvd3B0L3dlaWdodGVkL3Rlc3QtcGxhbi5zcmMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvYmVu
Y2htYXJrcy9kYXRhL3dwdC93ZWlnaHRlZC90ZXN0LXBsYW4uc3JjLmh0bWwKaW5kZXggNjQ0YzEw
YWExMjIwNWQzOGY0MGJjNzJkZWM2MDFmNTk3MWZhOWVjYy4uYzI5ZjI2ODgzN2RkODI4YTI0ZjA0
YTg5YWExNDkwOTJiODVlMTFjYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1hcmtz
L2RhdGEvd3B0L3dlaWdodGVkL3Rlc3QtcGxhbi5zcmMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGli
L2JlbmNobWFya3MvZGF0YS93cHQvd2VpZ2h0ZWQvdGVzdC1wbGFuLnNyYy5odG1sCkBAIC0xNDkw
LDcgKzE0OTAsNyBAQAogCQkJCQkJCQlbUF0gLSBwYXJlbnQgZWxlbWVudCB3aXRoIGEgcHJvcGVy
dHkgdGhhdCBjcmVhdGVzIGEgc3RhY2tpbmcgY29udGV4dCAoZS5nLiA8Y29kZT5wb3NpdGlvbjpm
aXhlZDwvY29kZT4pOyB0aGUgZWxlbWVudCA8Y29kZT5iYWNrZ3JvdW5kLWNvbG9yPC9jb2RlPiBp
cyBvdGhlciB0aGFuIDxjb2RlPnRyYW5zcGFyZW50PC9jb2RlPjxicj4KIAkJCQkJCQkJW0lOLVBd
IC0gSW50ZXJtZWRpYXRlIGNoaWxkIGVsZW1lbnQgYmV0d2VlbiB0aGUgcGFyZW50IFtQXSBhbmQg
dGhlIGNoaWxkIFtCXTxicj4KIAkJCQkJCQkJVGhlIGludGVybWVkaWF0ZSBlbGVtZW50IGhhcyB0
ZXh0IGNvbnRlbnQsIGRlZmF1bHQgdmFsdWUgZm9yIDxjb2RlPmJhY2tncm91bmQtY29sb3I8L2Nv
ZGU+IGFuZCA8Y29kZT5pc29sYXRpb246aXNvbGF0ZTwvY29kZT4gc2V0PGJyPgotCQkJCQkJCQlb
Ql0gLSBlbGVtZW50IHdpdGggPGNvZGU+bWl4LWJsZW5kLW1vZGU8L2NvZGU+IG90aGVyIHRoYW4g
PGNvZGU+bm9ybWFsPC9kPgorCQkJCQkJCQlbQl0gLSBlbGVtZW50IHdpdGggPGNvZGU+bWl4LWJs
ZW5kLW1vZGU8L2NvZGU+IG90aGVyIHRoYW4gPGNvZGU+bm9ybWFsPC9kIDxicj4KIAkJCQkJCQk8
dGQ+CiAJCQkJCQkJCVRoZSBjb2xvciBvZiB0aGUgY2hpbGQgZWxlbWVudCBbQl0gbWl4ZXMgd2l0
aCB0aGUgY29sb3Igb2YgdGhlIGludGVybWVkaWF0ZSBlbGVtZW50IFtJTi1QXSwgd2hlcmUgdGhl
eSBvdmVybGFwLjxicj4KIAkJCQkJCQkJVGhlcmUgaXMgbm8gYmxlbmRpbmcgYmV0d2VlbiB0aGUg
Y29sb3Igb2YgdGhlIHBhcmVudCBlbGVtZW50IFtQXSBhbmQgdGhlIGNvbG9yIG9mIHRoZSBibGVu
ZGVkIGVsZW1lbnQgW0JdLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1hcmtzL2Rh
dGEvd3B0L3dlaWdodGVkL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1hcmtz
L2RhdGEvd3B0L3dlaWdodGVkL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBjNTQzYTMxN2E3ZjM5ZjRmYjNhNTU3YjIyZWQyZmY1ZjhhY2E3Mzc2Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvYmVu
Y2htYXJrcy9kYXRhL3dwdC93ZWlnaHRlZC93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBA
IC0xLDI4ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVk
IGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJl
Y3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQ
VCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQot
VGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8g
cmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVBy
b3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvYmVuY2htYXJrcy9kYXRhL3dw
dC93ZWlnaHRlZC8yZC5jb21wb3NpdGUuaW1hZ2UuZGVzdGluYXRpb24tb3Zlci5odG1sCi0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9odG1sNWxpYi9iZW5jaG1hcmtzL2RhdGEvd3B0L3dlaWdodGVkL2FsaWduLWNvbnRlbnQtd3Jh
cC0wMDIuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvYmVuY2htYXJrcy9kYXRhL3dwdC93ZWlnaHRlZC9i
aWc1X2NoYXJzX2V4dHJhLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2JlbmNobWFya3MvZGF0YS93cHQv
d2VpZ2h0ZWQvZmV0Y2guaHR0cC5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1hcmtzL2RhdGEv
d3B0L3dlaWdodGVkL2ZpbHRlci10dXJidWxlbmNlLWludmFsaWQtMDAxLmh0bWwKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0
bWw1bGliL2JlbmNobWFya3MvZGF0YS93cHQvd2VpZ2h0ZWQvZ3JpZC1hdXRvLWZpbGwtcm93cy0w
MDEuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvYmVuY2htYXJrcy9kYXRhL3dwdC93ZWlnaHRlZC9tYXNv
bnJ5LWl0ZW0tcGxhY2VtZW50LTAwNi5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1hcmtzL2Rh
dGEvd3B0L3dlaWdodGVkL21vei1jc3MyMS10YWJsZS1wYWdlLWJyZWFrLWluc2lkZS1hdm9pZC0y
Lmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2h0bWw1bGliL2JlbmNobWFya3MvZGF0YS93cHQvd2VpZ2h0ZWQvcHJlLWZs
b2F0LTAwMS5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1hcmtzL2RhdGEvd3B0L3dlaWdodGVk
L3Rlc3QtcGxhbi5zcmMuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvYmVuY2htYXJrcy9kYXRhL3dwdC93
ZWlnaHRlZC90b0Jsb2IucG5nLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2JlbmNobWFya3MvZGF0YS93
cHQvd2VpZ2h0ZWQvd2lsbC1jaGFuZ2UtYWJzcG9zLWNiLTAwMS5odG1sCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2h0bWw1bGliL2JlbmNobWFya3MvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2Jl
bmNobWFya3MvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0
YmUyMmY2YzA1N2Q1N2E5NzEzNDk1MzU3NGY3M2E4NDlkZjRhYjEuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9iZW5jaG1hcmtzL3cz
Yy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotVGhlIHRlc3RzIGlu
IHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1E
byBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNy
ZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5j
b20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9p
bXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9y
IHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9odG1sNWxpYi9iZW5jaG1hcmtzL2JlbmNoX2h0bWwucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2JlbmNo
bWFya3MvYmVuY2hfd3B0LnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2RvYy93M2MtaW1w
b3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvZG9jL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBhZDcwMWFiZjhmNWY1ZTgyMDE5YmJjNjlhNGJjNTQzOWZmZGRkNDFh
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRt
bDVsaWIvZG9jL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAot
VGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJl
cG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4K
LUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRw
czovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9v
bHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBO
T1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVy
dGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJl
cXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2Yg
ZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9odG1sNWxpYi9kb2MvTWFrZWZpbGUKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2RvYy9j
aGFuZ2VzLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvZG9jL2NvbmYucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2Rv
Yy9odG1sNWxpYi5maWx0ZXJzLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvZG9jL2h0bWw1bGliLnJzdAot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaHRtbDVsaWIvZG9jL2h0bWw1bGliLnRyZWVhZGFwdGVycy5yc3QKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1
bGliL2RvYy9odG1sNWxpYi50cmVlYnVpbGRlcnMucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9kb2MvaHRt
bDVsaWIudHJlZXdhbGtlcnMucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9kb2MvaW5kZXgucnN0Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9odG1sNWxpYi9kb2MvbGljZW5zZS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2RvYy9tYWtlLmJhdAot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaHRtbDVsaWIvZG9jL21vZHVsZXMucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9kb2MvbW92aW5n
cGFydHMucnN0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2ZsYWtlOC1ydW4uc2ggYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2h0bWw1bGliL2ZsYWtlOC1ydW4uc2gKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi9fdHJpZS93M2MtaW1wb3J0LmxvZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvX3RyaWUvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGZkMGYxYjU1MDUwNzJmNmQwZjdhMmM4YmFjY2JiZWMyMjYyODNh
M2YuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9o
dG1sNWxpYi9odG1sNWxpYi9fdHJpZS93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0x
LDE5ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZy
b20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3Rs
eSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBn
aXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhl
biBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVp
bXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3Bl
cnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvX3RyaWUvX19pbml0
X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL190cmllL19iYXNlLnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1s
NWxpYi9odG1sNWxpYi9fdHJpZS9weS5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1s
NWxpYi9maWx0ZXJzL19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi9maWx0ZXJz
L19faW5pdF9fLnB5CmluZGV4IGE2ODM0YjgyODVhNTZiZWYwZTE1NDNmZDkwMWM3ZTZmMmY4YmMy
MDIuLmU2OWRlMjliYjJkMWQ2NDM0YjhiMjlhZTc3NWFkOGMyZTQ4YzUzOTEgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvZmlsdGVycy9fX2luaXRfXy5weQorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0
bWw1bGliL2h0bWw1bGliL2ZpbHRlcnMvX19pbml0X18ucHkKQEAgLTEgKzAsMCBAQAotIyBUaGlz
IGZpbGUgaXMgcmVxdWlyZWQgZm9yIFB5dGhvbiB0byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9y
IG1vZHVsZXMuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9o
dG1sNWxpYi9odG1sNWxpYi9maWx0ZXJzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9o
dG1sNWxpYi9maWx0ZXJzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBkOGVmNTIxMzIyNzE2M2JhOTI1NmUwMjkxYThiMDhmMmU0N2Q3ZjQxLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVs
aWIvZmlsdGVycy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAK
LVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyBy
ZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQu
Ci1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0
cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRv
b2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8g
Tk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3Bl
cnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyBy
ZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9m
IGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvZmlsdGVycy9fX2luaXRfXy5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaHRtbDVsaWIvaHRtbDVsaWIvZmlsdGVycy9hbHBoYWJldGljYWxhdHRyaWJ1dGVzLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9odG1sNWxpYi9odG1sNWxpYi9maWx0ZXJzL2Jhc2UucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0
bWw1bGliL2ZpbHRlcnMvaW5qZWN0X21ldGFfY2hhcnNldC5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRt
bDVsaWIvZmlsdGVycy9saW50LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi9maWx0ZXJzL29w
dGlvbmFsdGFncy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvZmlsdGVycy9zYW5pdGl6ZXIu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL2ZpbHRlcnMvd2hpdGVzcGFjZS5weQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi90ZXN0cy9zYW5pdGl6ZXItdGVzdGRhdGEvdzNj
LWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL3Rlc3RzL3Nhbml0aXplci10ZXN0
ZGF0YS93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDU2NTNl
ZDY1NDY4NWZiZDFkZWIxZDQ0ZWY0ZTA5N2M0OGExYjFmOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL3Rlc3RzL3Nh
bml0aXplci10ZXN0ZGF0YS93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE3ICsw
LDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhl
IFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBX
ZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6
Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4g
dGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQK
LQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZh
bHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1M
aXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvdGVzdHMvc2FuaXRpemVyLXRl
c3RkYXRhL3Rlc3RzMS5kYXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvdGVz
dHMvc2VyaWFsaXplci10ZXN0ZGF0YS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRt
bDVsaWIvdGVzdHMvc2VyaWFsaXplci10ZXN0ZGF0YS93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggN2QyMmRhMThjZDVjZjAxYmE2MTQwYjkzZDk3ZjY1NGU3YzI2
NmM5NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2h0bWw1bGliL2h0bWw1bGliL3Rlc3RzL3NlcmlhbGl6ZXItdGVzdGRhdGEvdzNjLWltcG9ydC5s
b2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJl
Y3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2Rp
ZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVs
bCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxh
dGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2Mt
dGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRo
aXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhl
czoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGli
L2h0bWw1bGliL3Rlc3RzL3NlcmlhbGl6ZXItdGVzdGRhdGEvY29yZS50ZXN0Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1s
NWxpYi9odG1sNWxpYi90ZXN0cy9zZXJpYWxpemVyLXRlc3RkYXRhL2luamVjdG1ldGEudGVzdAot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvdGVzdHMvc2VyaWFsaXplci10ZXN0ZGF0YS9vcHRpb25h
bHRhZ3MudGVzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvdGVzdHMvc2VyaWFsaXplci10ZXN0
ZGF0YS9vcHRpb25zLnRlc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL3Rlc3RzL3NlcmlhbGl6
ZXItdGVzdGRhdGEvd2hpdGVzcGFjZS50ZXN0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0
bWw1bGliL3Rlc3RzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi90ZXN0
cy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTgyY2FhNDUx
NjY4ZjMxNmYxNzIwN2NlOWM0ZTVhY2UwYjYzMzM4NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL3Rlc3RzL3czYy1p
bXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRo
aXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBO
T1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0
ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20v
d2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBv
cnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJl
bW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcg
dmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9o
dG1sNWxpYi9odG1sNWxpYi90ZXN0cy9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVs
aWIvdGVzdHMvY29uZnRlc3QucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL3Rlc3RzL3Nhbml0
aXplci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvdGVzdHMvc3VwcG9ydC5weQotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
aHRtbDVsaWIvaHRtbDVsaWIvdGVzdHMvdGVzdF9hbHBoYWJldGljYWxhdHRyaWJ1dGVzLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9odG1sNWxpYi9odG1sNWxpYi90ZXN0cy90ZXN0X2VuY29kaW5nLnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1s
NWxpYi9odG1sNWxpYi90ZXN0cy90ZXN0X21ldGEucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGli
L3Rlc3RzL3Rlc3Rfb3B0aW9uYWx0YWdzX2ZpbHRlci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVs
aWIvdGVzdHMvdGVzdF9wYXJzZXIyLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi90ZXN0cy90
ZXN0X3Nhbml0aXplci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvdGVzdHMvdGVzdF9zZXJp
YWxpemVyLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi90ZXN0cy90ZXN0X3N0cmVhbS5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvdGVzdHMvdGVzdF90b2tlbml6ZXIyLnB5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9o
dG1sNWxpYi9odG1sNWxpYi90ZXN0cy90ZXN0X3RyZWVhZGFwdGVycy5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVs
aWIvaHRtbDVsaWIvdGVzdHMvdGVzdF90cmVld2Fsa2Vycy5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRt
bDVsaWIvdGVzdHMvdGVzdF93aGl0ZXNwYWNlX2ZpbHRlci5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRt
bDVsaWIvdGVzdHMvdG9rZW5pemVyLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi90ZXN0cy90
b2tlbml6ZXJ0b3RyZWUucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL3Rlc3RzL3RyZWVfY29u
c3RydWN0aW9uLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi90ZXN0cy91cy1hc2NpaS5odG1s
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi90ZXN0cy91dGYtOC1ib20uaHRtbApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi90cmVlYWRhcHRlcnMvdzNjLWltcG9ydC5sb2cgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2h0bWw1bGliL2h0bWw1bGliL3RyZWVhZGFwdGVycy93M2MtaW1wb3J0LmxvZwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGQwZmY3ODg1MTE0YTk3MWU0NDE2OWYzOTg0ZDE2Nzk3
MmNkYzIwMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2h0bWw1bGliL2h0bWw1bGliL3RyZWVhZGFwdGVycy93M2MtaW1wb3J0LmxvZworKysgL2Rl
di9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJl
IGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0
ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qg
b24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0
cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBX
ZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgot
Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
LU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIv
dHJlZWFkYXB0ZXJzL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi90cmVlYWRh
cHRlcnMvZ2Vuc2hpLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi90cmVlYWRhcHRlcnMvc2F4
LnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL3RyZWVidWlsZGVycy93M2Mt
aW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvdHJlZWJ1aWxkZXJzL3czYy1pbXBv
cnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZDA0YzVhMjg0NjZiOThmNzYx
NzYxZDhjMmJiOTdlYmNlYTFiNWMzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvdHJlZWJ1aWxkZXJzL3czYy1pbXBv
cnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMg
ZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1Qg
bW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBh
IHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2Vi
LXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQt
dzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92
ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVu
ZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1s
NWxpYi9odG1sNWxpYi90cmVlYnVpbGRlcnMvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0
bWw1bGliL3RyZWVidWlsZGVycy9iYXNlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi90cmVl
YnVpbGRlcnMvZG9tLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi90cmVlYnVpbGRlcnMvZXRy
ZWUucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL3RyZWVidWlsZGVycy9ldHJlZV9seG1sLnB5
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL3RyZWV3YWxrZXJzL3czYy1pbXBv
cnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi90cmVld2Fsa2Vycy93M2MtaW1wb3J0Lmxv
ZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDQ2ZDA1NWIwZGQ4MDU1NTUwODEyYjg5
Y2VkNDU3NTI4MzNkMGZhZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL3RyZWV3YWxrZXJzL3czYy1pbXBvcnQubG9n
CisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0
b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5
IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwg
cmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRm
b3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRl
c3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlz
IGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6
Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9o
dG1sNWxpYi90cmVld2Fsa2Vycy9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIv
dHJlZXdhbGtlcnMvYmFzZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvdHJlZXdhbGtlcnMv
ZG9tLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi90cmVld2Fsa2Vycy9ldHJlZS5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaHRtbDVsaWIvaHRtbDVsaWIvdHJlZXdhbGtlcnMvZXRyZWVfbHhtbC5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRt
bDVsaWIvaHRtbDVsaWIvdHJlZXdhbGtlcnMvZ2Vuc2hpLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0
bWw1bGliL2h0bWw1bGliL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi93
M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWRlMDU2MWNjMmM3
ZTFkN2I0ZGExZjdjMjEzZmFlZDRlNTIwNGE4Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL3czYy1pbXBvcnQubG9n
CisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0
b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5
IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwg
cmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRm
b3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRl
c3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlz
IGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6
Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9o
dG1sNWxpYi9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvX2loYXRleG1sLnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi9faW5wdXRzdHJlYW0ucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGli
L2h0bWw1bGliL190b2tlbml6ZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL191dGlscy5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvY29uc3RhbnRzLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9o
dG1sNWxpYi9odG1sNXBhcnNlci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvc2VyaWFsaXpl
ci5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9wYXJzZS5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIv
cGFyc2UucHkKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9odG1sNWxpYi9yZXF1aXJlbWVudHMtaW5zdGFsbC5zaCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvcmVxdWly
ZW1lbnRzLWluc3RhbGwuc2gKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9odG1sNWxpYi91dGlscy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIv
dXRpbHMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzMWUw
MDM5ZWY0MDAyNzNjNzFlMzJlMmJkN2JkNzZmNjdhNDIzNWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi91dGlscy93M2MtaW1wb3J0
LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRp
cmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1v
ZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBw
dWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1w
bGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXcz
Yy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUg
dGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRv
ciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZp
eGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVs
aWIvdXRpbHMvZW50aXRpZXMucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvdzNjLWltcG9y
dC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2h0bWw1bGliL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAyNGI4MzQzOTdjMGUyNTdiNjhhNmMzMWM0NjgxN2E3ZmJkN2UwMmU4Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIv
dzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1UaGUgdGVzdHMg
aW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4K
LURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwg
Y3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHVi
LmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRz
L2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkg
b3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVp
cmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2h0bWw1bGliL0FVVEhPUlMucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9DSEFOR0VTLnJzdAotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaHRtbDVsaWIvQ09OVFJJQlVUSU5HLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvTElDRU5TRQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaHRtbDVsaWIvTUFOSUZFU1QuaW4KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL1JFQURNRS5yc3QKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2h0bWw1bGliL2RlYnVnLWluZm8ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2ZsYWtlOC1ydW4uc2gKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2h0bWw1bGliL3BhcnNlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9weXRlc3QuaW5pCi0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9o
dG1sNWxpYi9yZXF1aXJlbWVudHMtaW5zdGFsbC5zaAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvcmVxdWlyZW1l
bnRzLW9wdGlvbmFsLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvcmVxdWlyZW1lbnRzLXRlc3QudHh0Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9odG1sNWxpYi9yZXF1aXJlbWVudHMudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9zZXR1cC5jZmcK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2h0bWw1bGliL3NldHVwLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi90b3guaW5pCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2h5cGVyL2h5cGVyL2NvbW1vbi93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIv
aHlwZXIvY29tbW9uL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAzZWUwODE4MTE0MDhlN2Q4N2MxMDMxOTQ0N2YwNTc4NDg5MjZlZmZiLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvY29tbW9u
L3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotVGhlIHRlc3Rz
IGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnku
Ci1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQs
IGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1
Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0
cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5
IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1
aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9oeXBlci9oeXBlci9jb21tb24vX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL2Nv
bW1vbi9idWZzb2NrZXQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL2NvbW1vbi9jb25uZWN0aW9uLnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9oeXBlci9oeXBlci9jb21tb24vZGVjb2Rlci5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIv
Y29tbW9uL2V4Y2VwdGlvbnMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL2NvbW1vbi9oZWFkZXJzLnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9oeXBlci9oeXBlci9jb21tb24vdXRpbC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBl
ci9oeXBlci9oMi9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvaDIvX19pbml0X18ucHkK
b2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9o
eXBlci9oMi9jb25maWcucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL2gyL2NvbmZpZy5weQpvbGQgbW9k
ZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL2gy
L2Nvbm5lY3Rpb24ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL2gyL2Nvbm5lY3Rpb24ucHkKb2xkIG1v
ZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9o
Mi9lcnJvcnMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL2gyL2Vycm9ycy5weQpvbGQgbW9kZSAxMDA2
NDQKbmV3IG1vZGUgMTAwNzU1CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL2gyL2V2ZW50
cy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvaDIvZXZlbnRzLnB5Cm9sZCBtb2RlIDEwMDY0NApuZXcg
bW9kZSAxMDA3NTUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvaDIvZXhjZXB0aW9ucy5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaHlwZXIvaHlwZXIvaDIvZXhjZXB0aW9ucy5weQpvbGQgbW9kZSAxMDA2NDQKbmV3
IG1vZGUgMTAwNzU1CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL2gyL2ZyYW1lX2J1ZmZl
ci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvaDIvZnJhbWVfYnVmZmVyLnB5Cm9sZCBtb2RlIDEwMDY0
NApuZXcgbW9kZSAxMDA3NTUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvaDIvc2V0dGlu
Z3MucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL2gyL3NldHRpbmdzLnB5Cm9sZCBtb2RlIDEwMDY0NApu
ZXcgbW9kZSAxMDA3NTUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvaDIvc3RyZWFtLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9oeXBlci9oeXBlci9oMi9zdHJlYW0ucHkKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2Rl
IDEwMDc1NQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9oMi91dGlsaXRpZXMucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2h5cGVyL2h5cGVyL2gyL3V0aWxpdGllcy5weQpvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUg
MTAwNzU1CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL2gyL3czYy1pbXBvcnQubG9nIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9oeXBlci9oeXBlci9oMi93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMzkwZTI2OTRmZTM2NWIyMTBmNDdmYTMyN2ZhZDRmYzJjYzg5MWNjNi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVy
L2gyL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotVGhlIHRl
c3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRv
cnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3Rl
YWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dp
dGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2Ny
aXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9k
aWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyBy
ZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmlu
ZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9oeXBlci9oeXBlci9oMi9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvaDIv
Y29uZmlnLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9oMi9jb25uZWN0aW9uLnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBl
ci9oeXBlci9oMi9lcnJvcnMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL2gyL2V2ZW50cy5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaHlwZXIvaHlwZXIvaDIvZXhjZXB0aW9ucy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvaDIvZnJh
bWVfYnVmZmVyLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9oMi9zZXR0aW5ncy5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlw
ZXIvaHlwZXIvaDIvc3RyZWFtLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9oMi91dGlsaXRpZXMucHkK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2h5cGVyL2h5cGVyL2gyL3dpbmRvd3MucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIv
aHlwZXIvaDIvd2luZG93cy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvaDIvd2luZG93cy5weQpvbGQg
bW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVy
L2h0dHAxMS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvaHR0cDExL3czYy1pbXBv
cnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Y2I3Y2U3NWZkMjBiYmU2M2Nm
OWUyMDI4MThiODU0MTU1MGQ3YjgxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvaHR0cDExL3czYy1pbXBvcnQubG9nCisrKyAv
ZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdl
cmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNl
IHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVz
dCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRl
c3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGlu
IFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUu
Ci0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVz
OgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25l
Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9odHRw
MTEvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL2h0dHAxMS9jb25uZWN0aW9uLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9oeXBlci9oeXBlci9odHRwMTEvcGFyc2VyLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9odHRw
MTEvcmVzcG9uc2UucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvaHR0cDIwL3czYy1p
bXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9odHRwMjAvdzNjLWltcG9ydC5sb2cKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzYWY4NjU1ZWM2MGQ3ZjE0ZGU4Y2UzYWNlYzQwMjBk
Yzk0ZTQ0NjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9oeXBlci9oeXBlci9odHRwMjAvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAt
MSwyNCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBm
cm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0
bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQg
Z2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRo
ZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJl
aW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9w
ZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL2h0dHAyMC9fX2luaXRfXy5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaHlwZXIvaHlwZXIvaHR0cDIwL2Nvbm5lY3Rpb24ucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5
cGVyL2h0dHAyMC9lcnJvcnMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL2h0dHAyMC9leGNlcHRpb25z
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9odHRwMjAvcmVzcG9uc2UucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5
cGVyL2h0dHAyMC9zdHJlYW0ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL2h0dHAyMC91dGlsLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9oeXBlci9oeXBlci9odHRwMjAvd2luZG93LnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVy
L2h5cGVyL3BhY2thZ2VzL2hwYWNrL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9w
YWNrYWdlcy9ocGFjay93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNWU1MDA1NDU3NjM0ZmJhMzA0NGE2OGQ2OGFmODE1MDgwYzRkYTUzYy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL3BhY2th
Z2VzL2hwYWNrL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAot
VGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJl
cG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4K
LUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRw
czovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9v
bHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBO
T1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVy
dGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJl
cXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2Yg
ZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9wYWNrYWdlcy9ocGFjay9fX2luaXRfXy5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaHlwZXIvaHlwZXIvcGFja2FnZXMvaHBhY2svY29tcGF0LnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBl
ci9wYWNrYWdlcy9ocGFjay9leGNlcHRpb25zLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9wYWNrYWdl
cy9ocGFjay9ocGFjay5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvcGFja2FnZXMvaHBhY2svaHBhY2tf
Y29tcGF0LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9wYWNrYWdlcy9ocGFjay9odWZmbWFuLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9oeXBlci9oeXBlci9wYWNrYWdlcy9ocGFjay9odWZmbWFuX2NvbnN0YW50cy5weQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9wYWNrYWdlcy9oeXBlcmZyYW1lL3czYy1pbXBvcnQu
bG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9wYWNrYWdlcy9oeXBlcmZyYW1lL3czYy1pbXBvcnQubG9n
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhN2YwYmZmMzk2NjU2YWEyNmI3ZjY3NjQ2
MmRmMjFlNzBlNmRjMzg0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvcGFja2FnZXMvaHlwZXJmcmFtZS93M2MtaW1wb3J0Lmxv
ZworKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVj
dG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlm
eSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxs
IHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0
Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10
ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhp
cyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVz
OgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlw
ZXIvcGFja2FnZXMvaHlwZXJmcmFtZS9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvcGFj
a2FnZXMvaHlwZXJmcmFtZS9mbGFncy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvcGFja2FnZXMvaHlw
ZXJmcmFtZS9mcmFtZS5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9wYWNrYWdlcy9y
ZmMzOTg2L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9wYWNrYWdlcy9yZmMzOTg2
L3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjgyYzQ4YWMw
ZTA3OWRlMjRiNWZmYzc3OGQyOWNjODNmYjc1NjE1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvcGFja2FnZXMvcmZjMzk4Ni93
M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLVRoZSB0ZXN0cyBp
biB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5Lgot
RG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBj
cmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIu
Y29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMv
aW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBv
ciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWly
aW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVu
ZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaHlwZXIvaHlwZXIvcGFja2FnZXMvcmZjMzk4Ni9MSUNFTlNFCi0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBl
ci9wYWNrYWdlcy9yZmMzOTg2L19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9wYWNrYWdl
cy9yZmMzOTg2L2FwaS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvcGFja2FnZXMvcmZjMzk4Ni9jb21w
YXQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL3BhY2thZ2VzL3JmYzM5ODYvZXhjZXB0aW9ucy5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaHlwZXIvaHlwZXIvcGFja2FnZXMvcmZjMzk4Ni9taXNjLnB5Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9o
eXBlci9wYWNrYWdlcy9yZmMzOTg2L25vcm1hbGl6ZXJzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9w
YWNrYWdlcy9yZmMzOTg2L3BhcnNlcmVzdWx0LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9wYWNrYWdl
cy9yZmMzOTg2L3VyaS5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9wYWNrYWdlcy93
M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvcGFja2FnZXMvdzNjLWltcG9ydC5sb2cK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4Nzk0MWQyYWE0ZWQ3OTExMTgyYzI4NTIx
MzgxZjcwMzUwOGEwOWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9wYWNrYWdlcy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9u
dWxsCkBAIC0xLDE3ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGlt
cG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0
cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24g
dGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93
cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJL
aXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5v
bmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvcGFja2FnZXMv
X19pbml0X18ucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvdzNjLWltcG9ydC5sb2cg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2h5cGVyL2h5cGVyL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA1OTllNjE5ZDNlZWZmNTQ4NTBiOTZmYTVhZTViNjRjNGQwZWUxMWI1Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIv
dzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1UaGUgdGVzdHMg
aW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4K
LURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwg
Y3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHVi
LmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRz
L2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkg
b3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVp
cmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2h5cGVyL2h5cGVyL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9jZXJ0cy5wZW0K
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2h5cGVyL2h5cGVyL2NsaS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvY29tcGF0LnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9oeXBlci9oeXBlci9jb250cmliLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9odHRwbGliX2Nv
bXBhdC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvc3NsX2NvbXBhdC5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlw
ZXIvdGxzLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyZnJhbWUvaHlwZXJmcmFtZS5lZ2ctaW5m
by93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXJmcmFtZS9oeXBlcmZyYW1lLmVnZy1pbmZvL3cz
Yy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMDc2OWQ1MjRmOGZj
MzMwMTQzNGQxNDZkYjI2N2I1NWNlMjVhMmJjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXJmcmFtZS9oeXBlcmZyYW1lLmVnZy1pbmZvL3cz
Yy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotVGhlIHRlc3RzIGlu
IHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1E
byBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNy
ZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5j
b20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9p
bXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9y
IHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9oeXBlcmZyYW1lL2h5cGVyZnJhbWUuZWdnLWluZm8vUEtHLUlORk8KLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyZnJh
bWUvaHlwZXJmcmFtZS5lZ2ctaW5mby9TT1VSQ0VTLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXJmcmFtZS9oeXBl
cmZyYW1lLmVnZy1pbmZvL2RlcGVuZGVuY3lfbGlua3MudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL2h5
cGVyZnJhbWUuZWdnLWluZm8vdG9wX2xldmVsLnR4dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZy
YW1lL2h5cGVyZnJhbWUvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyZnJhbWUvaHlwZXJmcmFt
ZS93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWRmNWI1ZjI4
NGZlMmNjM2Q4NzBlNTg4YTkwMDMzNjdhNmEzMGQ1OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyZnJhbWUvaHlwZXJmcmFtZS93M2MtaW1w
b3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlz
IGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9U
IG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUg
YSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0
LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1v
dmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlw
ZXJmcmFtZS9oeXBlcmZyYW1lL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL2h5cGVyZnJh
bWUvZXhjZXB0aW9ucy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXJmcmFtZS9oeXBlcmZyYW1lL2ZsYWdzLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9oeXBlcmZyYW1lL2h5cGVyZnJhbWUvZnJhbWUucHkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlw
ZXJmcmFtZS90ZXN0L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL3Rlc3QvdzNjLWlt
cG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjZDY3YmY5ZjhjZGMwMGIz
YWEyNzU3NmE0YWUyMjlmY2VlOWIzN2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL3Rlc3QvdzNjLWltcG9ydC5sb2cKKysrIC9k
ZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2Vy
ZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2Ug
dGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0
IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVz
dHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4g
V2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4K
LQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6
Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUK
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyZnJhbWUvdGVzdC90
ZXN0X2ZsYWdzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL3Rlc3QvdGVzdF9mcmFtZXMucHkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaHlwZXJmcmFtZS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXJmcmFtZS93
M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTY2YzQ0MDlhNTAx
OTBmYjBlMzAwY2I1NGY2MmM0NTFkYjRlNWYyOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyZnJhbWUvdzNjLWltcG9ydC5sb2cKKysrIC9k
ZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2Vy
ZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2Ug
dGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0
IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVz
dHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4g
V2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4K
LQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6
Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUK
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyZnJhbWUvQ09OVFJJ
QlVUT1JTLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaHlwZXJmcmFtZS9ISVNUT1JZLnJzdAotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXJmcmFt
ZS9MSUNFTlNFCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL01BTklGRVNULmluCi0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1l
L1BLRy1JTkZPCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL1JFQURNRS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyZnJhbWUv
c2V0dXAuY2ZnCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL3NldHVwLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2lt
cG9ydGxpYl9tZXRhZGF0YS8uZ2l0aHViL3dvcmtmbG93cy93M2MtaW1wb3J0LmxvZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
aW1wb3J0bGliX21ldGFkYXRhLy5naXRodWIvd29ya2Zsb3dzL3czYy1pbXBvcnQubG9nCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZDVjNDAxNjM1ZWRjNTM2ODFmZjQ1NGFmMmU1ZWI5
NTAyNGQ0MGZmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaW1wb3J0bGliX21ldGFkYXRhLy5naXRodWIvd29ya2Zsb3dzL3czYy1pbXBvcnQubG9n
CisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0
b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5
IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwg
cmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRm
b3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRl
c3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlz
IGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6
Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbXBvcnRsaWJf
bWV0YWRhdGEvLmdpdGh1Yi93b3JrZmxvd3MvbWFpbi55bWwKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1w
b3J0bGliX21ldGFkYXRhLy5naXRpZ25vcmUgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2ltcG9ydGxpYl9tZXRhZGF0YS8uZ2l0
aWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmFlODY0ZDYxMjU5Nzk4NDUyYzNhYzM5NWJjZmE3ZWUyNzMzNTQ5
YTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2ltcG9ydGxpYl9tZXRhZGF0YS8uZ2l0aWdub3Jl
CkBAIC0wLDAgKzEsMTMgQEAKK2J1aWxkCisvY292ZXJhZ2UueG1sCisvZGlmZmNvdi5odG1sCito
dG1sY292CitpbXBvcnRsaWJfbWV0YWRhdGEuZWdnLWluZm8KKy5teXB5X2NhY2hlCisvLmNvdmVy
YWdlCisvLkRTX1N0b3JlCithcnRpZmFjdHMKKy5lZ2dzCisuZG9jdHJlZXMKK2Rpc3QKK3BpcC13
aGVlbC1tZXRhZGF0YQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbXBvcnRsaWJfbWV0YWRhdGEvLnJlYWR0
aGVkb2NzLnltbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRhLy5yZWFkdGhlZG9jcy55bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOGFlNDQ2ODQyOGJlZGY3NDQxYzRiNDM5Mjg0MjUwNTVhNDQ1MzE5MQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRhLy5yZWFkdGhlZG9jcy55bWwKQEAg
LTAsMCArMSw1IEBACitweXRob246CisgIHZlcnNpb246IDMKKyAgZXh0cmFfcmVxdWlyZW1lbnRz
OgorICAgIC0gZG9jcworICBwaXBfaW5zdGFsbDogdHJ1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbXBv
cnRsaWJfbWV0YWRhdGEvZG9jcy9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRh
L2RvY3MvX19pbml0X18ucHkKaW5kZXggYTY4MzRiODI4NWE1NmJlZjBlMTU0M2ZkOTAxYzdlNmYy
ZjhiYzIwMi4uZTY5ZGUyOWJiMmQxZDY0MzRiOGIyOWFlNzc1YWQ4YzJlNDhjNTM5MSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9pbXBvcnRsaWJfbWV0YWRhdGEvZG9jcy9fX2luaXRfXy5weQorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2ltcG9ydGxpYl9tZXRhZGF0YS9kb2NzL19faW5pdF9fLnB5CkBAIC0xICswLDAgQEAKLSMgVGhp
cyBmaWxlIGlzIHJlcXVpcmVkIGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZv
ciBtb2R1bGVzLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
aW1wb3J0bGliX21ldGFkYXRhL2RvY3MvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2ltcG9ydGxpYl9t
ZXRhZGF0YS9kb2NzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA1YjAwMTY2MDA1NWU1OWY3MzY3MTBjNmViYTdkODk1YWU5YjkyNGFhLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRh
L2RvY3MvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1UaGUg
dGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3Np
dG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5z
dGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8v
Z2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9T
Y3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBt
b2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVz
IHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWly
aW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxl
czoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2ltcG9ydGxpYl9tZXRhZGF0YS9kb2NzL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbXBv
cnRsaWJfbWV0YWRhdGEvZG9jcy9jaGFuZ2Vsb2cucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbXBvcnRsaWJfbWV0YWRh
dGEvZG9jcy9jb25mLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbXBvcnRsaWJfbWV0YWRhdGEvZG9jcy9pbmRleC5yc3QK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2ltcG9ydGxpYl9tZXRhZGF0YS9kb2NzL3VzaW5nLnJzdApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9pbXBvcnRsaWJfbWV0YWRhdGEvaW1wb3J0bGliX21ldGFkYXRhL3czYy1pbXBvcnQubG9nIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9pbXBvcnRsaWJfbWV0YWRhdGEvaW1wb3J0bGliX21ldGFkYXRhL3czYy1pbXBvcnQubG9n
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzFjMTk4ODI0YzllMDJmNjEwZDA5Nzg1
MmIyYmNiNDBkZDkzMzMwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRhL2ltcG9ydGxpYl9tZXRhZGF0YS93M2MtaW1w
b3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlz
IGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9U
IG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUg
YSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0
LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1v
dmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1w
b3J0bGliX21ldGFkYXRhL2ltcG9ydGxpYl9tZXRhZGF0YS9fX2luaXRfXy5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1w
b3J0bGliX21ldGFkYXRhL2ltcG9ydGxpYl9tZXRhZGF0YS9fY29tcGF0LnB5CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2ltcG9ydGxpYl9tZXRhZGF0YS9wcmVwYXJlL2V4YW1wbGUvZXhhbXBsZS93M2MtaW1w
b3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRhL3ByZXBhcmUvZXhhbXBsZS9leGFtcGxl
L3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MjJkOTlmNjI4
NjJiZjFjMTBiY2IwOWI3MTRkY2RhYjAyZTFhNmQ3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRhL3ByZXBhcmUvZXhh
bXBsZS9leGFtcGxlL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBA
QAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzND
IHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktp
dC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlo
dHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUg
VG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1E
byBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJv
cGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVz
IHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qg
b2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9pbXBvcnRsaWJfbWV0YWRhdGEvcHJlcGFyZS9leGFtcGxlL2V4YW1w
bGUvX19pbml0X18ucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRhL3ByZXBh
cmUvZXhhbXBsZS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRhL3ByZXBh
cmUvZXhhbXBsZS93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
Y2MwODMyNzRhMTMzZTFmNGEyYmZhYjA1NDIzZmQyZjMxYWU5ZTlkZS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2ltcG9ydGxpYl9tZXRhZGF0YS9w
cmVwYXJlL2V4YW1wbGUvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCww
IEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBX
M0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2Vi
S2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgot
CWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRo
ZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0K
LURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Q
cm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1
ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlz
dCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2ltcG9ydGxpYl9tZXRhZGF0YS9wcmVwYXJlL2V4YW1wbGUvc2V0
dXAucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRhL3Rlc3RzL19faW5pdF9f
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9pbXBvcnRsaWJfbWV0YWRhdGEvdGVzdHMvX19pbml0X18ucHkKaW5kZXggYTY4
MzRiODI4NWE1NmJlZjBlMTU0M2ZkOTAxYzdlNmYyZjhiYzIwMi4uZTY5ZGUyOWJiMmQxZDY0MzRi
OGIyOWFlNzc1YWQ4YzJlNDhjNTM5MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbXBvcnRsaWJfbWV0YWRh
dGEvdGVzdHMvX19pbml0X18ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbXBvcnRsaWJfbWV0YWRhdGEvdGVzdHMv
X19pbml0X18ucHkKQEAgLTEgKzAsMCBAQAotIyBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFB5
dGhvbiB0byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZXMuClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbXBvcnRsaWJfbWV0YWRhdGEvdGVzdHMv
ZGF0YS9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRhL3Rlc3RzL2RhdGEvX19p
bml0X18ucHkKaW5kZXggYTY4MzRiODI4NWE1NmJlZjBlMTU0M2ZkOTAxYzdlNmYyZjhiYzIwMi4u
ZTY5ZGUyOWJiMmQxZDY0MzRiOGIyOWFlNzc1YWQ4YzJlNDhjNTM5MSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9pbXBvcnRsaWJfbWV0YWRhdGEvdGVzdHMvZGF0YS9fX2luaXRfXy5weQorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2lt
cG9ydGxpYl9tZXRhZGF0YS90ZXN0cy9kYXRhL19faW5pdF9fLnB5CkBAIC0xICswLDAgQEAKLSMg
VGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5
IGZvciBtb2R1bGVzLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaW1wb3J0bGliX21ldGFkYXRhL3Rlc3RzL2RhdGEvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2lt
cG9ydGxpYl9tZXRhZGF0YS90ZXN0cy9kYXRhL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBiNjFlMDUwYmNjODQ2NzBhMGU3NTMwYjdhZjE5NzM3MTFlZTU5ZDA2
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1w
b3J0bGliX21ldGFkYXRhL3Rlc3RzL2RhdGEvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApA
QCAtMSwxOSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRl
ZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGly
ZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBX
UFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0K
LVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRv
IHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Q
cm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2ltcG9ydGxpYl9tZXRhZGF0YS90ZXN0cy9k
YXRhL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbXBvcnRsaWJfbWV0YWRhdGEvdGVzdHMvZGF0YS9leGFt
cGxlLTIxLjEyLXB5My1ub25lLWFueS53aGwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2ltcG9ydGxpYl9tZXRhZGF0YS90ZXN0
cy9kYXRhL2V4YW1wbGUtMjEuMTItcHkzLjYuZWdnCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2ltcG9ydGxp
Yl9tZXRhZGF0YS90ZXN0cy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRh
L3Rlc3RzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYzM3
YzQ5YWI1NmIzYzU5MTYwYWZmYWZhMDg5NGJkNWVjNGRkNTllLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRhL3Rlc3Rz
L3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotVGhlIHRlc3Rz
IGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnku
Ci1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQs
IGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1
Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0
cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5
IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1
aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9pbXBvcnRsaWJfbWV0YWRhdGEvdGVzdHMvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2ltcG9ydGxp
Yl9tZXRhZGF0YS90ZXN0cy9maXh0dXJlcy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRhL3Rl
c3RzL3B5Mzljb21wYXQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2ltcG9ydGxpYl9tZXRhZGF0YS90ZXN0cy90ZXN0X2Fw
aS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRhL3Rlc3RzL3Rlc3RfaW50ZWdyYXRpb24ucHkK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2ltcG9ydGxpYl9tZXRhZGF0YS90ZXN0cy90ZXN0X21haW4ucHkKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2ltcG9y
dGxpYl9tZXRhZGF0YS90ZXN0cy90ZXN0X3ppcC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbXBvcnRs
aWJfbWV0YWRhdGEvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2ltcG9ydGxpYl9tZXRhZGF0YS93M2Mt
aW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzMwNzkyNmJmNTQ4MTM2
YTVmZTc1OTI1ZTBlYTllNmY4NzI5ZTM5ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2ltcG9ydGxpYl9tZXRhZGF0YS93M2MtaW1wb3J0LmxvZwor
KysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9y
eSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0
aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJl
cXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9y
bS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0
cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBm
aWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgot
Tm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21l
dGFkYXRhL0xJQ0VOU0UKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2ltcG9ydGxpYl9tZXRhZGF0YS9NQU5JRkVTVC5pbgotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaW1wb3J0bGliX21ldGFkYXRhL1JFQURNRS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2ltcG9ydGxpYl9tZXRhZGF0
YS9jb2RlY292LnltbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFkYXRhL2NvdmVyYWdlLmluaQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaW1wb3J0bGliX21ldGFkYXRhL2NvdmVycGx1Zy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW1wb3J0bGliX21ldGFk
YXRhL3B5cHJvamVjdC50b21sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbXBvcnRsaWJfbWV0YWRhdGEvc2V0dXAuY2ZnCi0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9pbXBvcnRsaWJfbWV0YWRhdGEvc2V0dXAucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2ltcG9ydGxpYl9tZXRhZGF0
YS90b3guaW5pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2luaWNvbmZpZy8uZ2l0aWdub3JlIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9p
bmljb25maWcvLmdpdGlnbm9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OWU2MjM0MzgwY2YyOThlNDFlODMxYjY3
NmZmN2QzZDNlM2M5Y2QxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbmljb25maWcvLmdpdGln
bm9yZQpAQCAtMCwwICsxLDggQEAKKyouZWdnLWluZm8KKyoucHljCisuY2FjaGUvCisuZWdncy8K
K2J1aWxkLworZGlzdC8KK19fcHljYWNoZV9fCisudG94LwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbmlj
b25maWcvLmhnaWdub3JlIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbmljb25maWcvLmhnaWdub3JlCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4
ZTkxYWJhYjFlODlmZDJlMGJjMDE1MzZmNGM3NmU2MDk5OGRhNjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2luaWNvbmZpZy8uaGdpZ25vcmUKQEAgLTAsMCArMSwxNiBAQAorCisjIFRoZXNlIGxp
bmVzIGFyZSBzdWdnZXN0ZWQgYWNjb3JkaW5nIHRvIHRoZSBzdm46aWdub3JlIHByb3BlcnR5Cisj
IEZlZWwgZnJlZSB0byBlbmFibGUgdGhlbSBieSB1bmNvbW1lbnRpbmcgdGhlbQorc3ludGF4Omds
b2IKKyoucHljCisqLnB5bworKi5zd3AKKyouaHRtbAorKi5jbGFzcworCisudG94CisKK2J1aWxk
CitkaXN0CisqLmVnZy1pbmZvCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW5pY29uZmlnLy5sYW5kc2Nh
cGUueW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9pbmljb25maWcvLmxhbmRzY2FwZS55bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTIxMmRk
ZWE0MTIxOGFhMDJkNGQ5NzUyNDEwODA2ZGRlNTFhNDBkOQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaW5pY29uZmlnLy5sYW5kc2NhcGUueW1sCkBAIC0wLDAgKzEsNSBAQAorcGVwODoKKyAgZnVs
bDogdHJ1ZQorcHl0aG9uLXRhcmdldHM6CisgIC0gMgorICAtIDMKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
aW5pY29uZmlnLy50cmF2aXMueW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbmljb25maWcvLnRyYXZpcy55bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZTNmZWUwNmM5ZmFlNDk5ZTM1M2U4NmQ0MmQ3ZGZiYTA3MzQyMmU0MAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvaW5pY29uZmlnLy50cmF2aXMueW1sCkBAIC0wLDAgKzEsMTggQEAKK2xh
bmd1YWdlOiBweXRob24KK3B5dGhvbjoKKy0gJzIuNycKKy0gJzMuNCcKKy0gJzMuNScKKy0gbmln
aHRseQorLSBweXB5CitpbnN0YWxsOiBwaXAgaW5zdGFsbCBzZXR1cHRvb2xzX3NjbSB0b3gKK3Nj
cmlwdDogdG94IC1lIHB5CitkZXBsb3k6CisgIHByb3ZpZGVyOiBweXBpCisgIHVzZXI6IHJvbm55
CisgIHBhc3N3b3JkOgorICAgIHNlY3VyZTogRHNSVlg5OUhBNiszSm9YT1ZQL25QWGVhYkp5MlA3
M3dzN0FnZXIvZTRyeDNwM2pTNzRiSWQwOVhzQlU0NmJBVDlBTm1SV1BSOHk1RFJpNVpscTBXUTJ1
WG9SNTV3bXNkdTJLVWVnazZiRElTNElvcDhERnhZOEtqb3U5czhSWmJEVFAyN0xmdVlYS01PMXJE
Vy94YTZFaGlvdFlSb2Rla2VaVXozUDNNWWpJaTZyQlYyUnozdndtSW5wa0tPdGk3QUZ3QXNDR21D
Q0sxM2lybVBKRXA1bndsM1JnZUt1MkFHYW9sdzlleXBKWGVOTFVjTkRWUTg4WlVVWFFDa3dncTdh
MUJrSzZOTWVRTE1yV0FFMWJEM2FtQ2JWWEhDUjlUYVZ4MVpIMWRuaGE1SmNmajNnRUZ1Y1RtSW5X
V2VzNXU5cnlwdnNDa1N4S3RTcWRpVUE3Qk1KcTdYeWtWN25HTnBsR0xtMnNxNCtLU1lsZjNnWlhn
NFhOWFFrTk9pNEVCdFJ2YXRoZkZ6aUQyU1pnZHRqaVFYMm5laDBkTWpmOWN6Yy91Q1lrS1lDRkxl
b3pkdzJvUVErQnN4aFFmc21VMklMR0NGSHlGaWttRGJCcVpPV2ZRRTVUTjNpdFFxVjNURks4c09I
UThpeTNNRFNocytsQms5QVV3YkNBNVliUmg4aEpLaGdYeUVzRHBpc0M0MTdQajIyK1RidXRUajd2
M1JtcGUvc3Q0aG9MNzQwZ3JXYzNQU1ZVQmF5cEcwUnNvYWZTRFpXblluVEMrMGFha2Q2UUViNVM5
d25Na1A5NGtpallqakY2eVVJbnVUMDV3ZGJRdjVYY1NYcUFkR3pCcUI1ak5OZGZ3Z1dWQ09sd0dm
am52ektsbGhGM1BtV1BXL25mbVFwR09RaDQ9CisgIG9uOgorICAgIHRhZ3M6IHRydWUKKyAgICBk
aXN0cmlidXRpb25zOiBzZGlzdCBiZGlzdF93aGVlbAorICAgIHJlcG86IFJvbm55UGZhbm5zY2ht
aWR0L2luaWNvbmZpZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbmljb25maWcvQ0hBTkdFTE9HIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9pbmljb25maWcvQ0hBTkdFTE9HCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Nzk5
MTlmY2QyZTQ2NTczNGFlY2MzZjRiYmRkYjhjYzgxMGJiZDliLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW5pY29uZmlnL0NIQU5HRUxPRworKysg
L2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLTEuMS4xCi09PT09PT09PT0KLQotKiBmaXggdmVy
c2lvbiBkZXRlcm1pbmF0aW9uICh0aGFua3MgQGZsb3JpbW9uZG1hbmNhKQotCi0xLjEuMAotPT09
PT0KLQotLSB0eXBpbmcgc3R1YnMgKHRoYW5rcyBAYmx1ZXRlY2gpCi0tIGNpIGZpeGVzCi0KLTEu
MC4xCi09PT09PT0KLQotcHl0ZXN0IDUrIHN1cHBvcnQKLQotMS4wCi09PT09Ci0KLS0gcmUtc3lu
YyB3aXRoIHB5bGliIGNvZGViYXNlCi0KLTAuMgotPT09PT09PT09PT09PT09PT09Ci0KLS0gYWRk
ZWQgYWJpbGl0eSB0byBhc2sgIm5hbWUgaW4gaW5pY29uZmlnIiwgaS5lLiB0byBjaGVjawotICBp
ZiBhIHNlY3Rpb24gaXMgY29udGFpbmVkLgotCi0tIGZpeCBidWcgaW4gIm5hbWU9dmFsdWUiIHBh
cnNpbmcgd2hlcmUgdmFsdWUgd2FzICJ4PTMiCi0KLS0gYWxsb3cgZm9yICc6ICcgdG8gZGVsaW1p
dCBuYW1lPXZhbHVlIHBhaXJzLCBzbyB0aGF0IGUuZy4gLnB5cGlyYyBmaWxlcwotICBsaWtlIGh0
dHA6Ly9kb2NzLnB5dGhvbi5vcmcvZGlzdHV0aWxzL3BhY2thZ2VpbmRleC5odG1sCi0gIGNhbiBi
ZSBzdWNjZXNzZnVsbHkgcGFyc2VkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2luaWNvbmZpZy9zcmMvaW5p
Y29uZmlnL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbmljb25maWcvc3JjL2luaWNvbmZpZy93M2Mt
aW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDU0YzgzNzdlODUxOGJk
YWExMzEzOWQ1Y2JmMTRhNTZjNjI5ZWJhYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2luaWNvbmZpZy9zcmMvaW5pY29uZmlnL3czYy1pbXBvcnQu
bG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGly
ZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9k
aWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1
bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBs
YXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNj
LXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0
aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9y
IHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbmljb25m
aWcvc3JjL2luaWNvbmZpZy9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW5pY29uZmlnL3NyYy9pbmljb25m
aWcvX19pbml0X18ucHlpCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbmljb25maWcvc3JjL2luaWNvbmZpZy9weS50eXBlZApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9pbmljb25maWcvdGVzdGluZy93M2MtaW1wb3J0LmxvZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
aW5pY29uZmlnL3Rlc3RpbmcvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGQyNGQ1NmU1YzAxODk2ODBiYjc4ZTliNjk4ZDgyNDMyZmEyYTZiZTAuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbmljb25maWcvdGVz
dGluZy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVRoZSB0
ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0
b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0
ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9n
aXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1Nj
cmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1v
ZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVz
OgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaW5pY29uZmlnL3Rlc3RpbmcvY29uZnRlc3QucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2luaWNvbmZpZy90
ZXN0aW5nL3Rlc3RfaW5pY29uZmlnLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2luaWNvbmZpZy93M2Mt
aW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaW5pY29uZmlnL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA3Y2Q2MjdhODQ0Zjk1NzFmMzllOGUyMzI4NjIwYjQ3MmQxYjkwMmU0
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaW5p
Y29uZmlnL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotVGhl
IHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9z
aXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUlu
c3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczov
L2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMv
U2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1Qg
bW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGll
cyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVp
cmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmls
ZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9pbmljb25maWcvQ0hBTkdFTE9HCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbmljb25maWcvTElDRU5TRQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaW5pY29uZmlnL01BTklGRVNULmluCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbmljb25maWcvUkVBRE1FLnR4dAot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaW5pY29uZmlnL2V4YW1wbGUuaW5pCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9pbmljb25maWcvcHlwcm9qZWN0LnRv
bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2luaWNvbmZpZy9zZXR1cC5jZmcKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2luaWNvbmZpZy9zZXR1cC5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaW5pY29uZmlnL3RveC5pbmkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvbW9yZS1pdGVydG9vbHMv
LmdpdGF0dHJpYnV0ZXMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L21vcmUtaXRlcnRvb2xzLy5naXRhdHRyaWJ1dGVzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjlhYWJhN2E5ZmU4ZWJlOTRhNjM1NGRiZDcyZjhlYzM5ODViNGI4MTEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L21vcmUtaXRlcnRvb2xzLy5naXRhdHRyaWJ1dGVzCkBAIC0wLDAgKzEs
MiBAQAorbW9yZV9pdGVydG9vbHMvbW9yZS5weSBtZXJnZT11bmlvbgorbW9yZV9pdGVydG9vbHMv
dGVzdHMvdGVzdF9tb3JlLnB5IG1lcmdlPXVuaW9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L21vcmUtaXRl
cnRvb2xzLy5naXRpZ25vcmUgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L21vcmUtaXRlcnRvb2xzLy5naXRpZ25vcmUKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjI5ODkxZmI0MzYwMGQ2ZjUzZmQ1Y2Y5NDJjNWYxMmQyYzQ1NjAwMwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvbW9yZS1pdGVydG9vbHMvLmdpdGlnbm9yZQpAQCAtMCwwICsxLDM0IEBA
CisqLnB5W2NvXQorCisjIFBhY2thZ2VzCisqLmVnZworKi5lZ2dzCisqLmVnZy1pbmZvCitkaXN0
CitidWlsZAorZWdncworcGFydHMKK2JpbgordmFyCitzZGlzdAorZGV2ZWxvcC1lZ2dzCisuaW5z
dGFsbGVkLmNmZworCisjIEluc3RhbGxlciBsb2dzCitwaXAtbG9nLnR4dAorCisjIFVuaXQgdGVz
dCAvIGNvdmVyYWdlIHJlcG9ydHMKKy5jb3ZlcmFnZQorLnRveAorLm5vc2VpZHMKKworIyBEb2Nz
IGJ5IFNwaGlueAorX2J1aWxkCisKKyMgRW52aXJvbm1lbnQKKy5lbnYKKworIyBJREUgZmlsZXMK
Ky5pZGVhCisudnNjb2RlCisuRFNfU3RvcmUNCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L21vcmUtaXRlcnRv
b2xzLy50cmF2aXMueW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9tb3JlLWl0ZXJ0b29scy8udHJhdmlzLnltbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wMDhmYjBjNjdlOGVlMzQ5ZTUzZjQyMzE0MGYzZWRjMGRjN2Y1MTNlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9tb3JlLWl0ZXJ0b29scy8udHJhdmlzLnltbApAQCAtMCwwICsxLDI2IEBA
CitzdWRvOiBmYWxzZQorCitsYW5ndWFnZTogInB5dGhvbiIKKworcHl0aG9uOgorICAgIC0gIjIu
NyIKKyAgICAtICIzLjQiCisgICAgLSAiMy41IgorICAgIC0gIjMuNiIKKyAgICAtICIzLjctZGV2
IgorICAgIC0gInB5cHktNS40LjEiCisgICAgLSAicHlweTMiCisKK2luc3RhbGw6CisgICAgLSAi
cGlwIGluc3RhbGwgLiIKKyAgICAtICJwaXAgaW5zdGFsbCAtVSBjb3ZlcmFsbHMgZmxha2U4Igor
CitzY3JpcHQ6CisgICAgLSAiY292ZXJhZ2UgcnVuIC0taW5jbHVkZT0nbW9yZV9pdGVydG9vbHMv
Ki5weScgLS1vbWl0PSdtb3JlX2l0ZXJ0b29scy90ZXN0cy8qJyBzZXR1cC5weSB0ZXN0IgorICAg
IC0gImZsYWtlOCAuIgorCitub3RpZmljYXRpb25zOgorICBlbWFpbDogZmFsc2UKKworYWZ0ZXJf
c3VjY2VzczoKKyAgICAtICJjb3ZlcmFsbHMiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L21vcmUtaXRlcnRv
b2xzL2RvY3MvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L21vcmUtaXRlcnRvb2xzL2RvY3MvdzNjLWlt
cG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyZGNlODg0YTgzZGY4YjEy
MDYwNjQzNWUyZTkwY2FhMjgwYjE4MDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9tb3JlLWl0ZXJ0b29scy9kb2NzL3czYy1pbXBvcnQubG9nCisr
KyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5
IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRo
ZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVx
dWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3Jt
LXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3Rz
IGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZp
bGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZp
eGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1O
b25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9tb3JlLWl0ZXJ0b29s
cy9kb2NzL01ha2VmaWxlCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9tb3JlLWl0ZXJ0b29scy9kb2NzL2FwaS5yc3QKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L21vcmUtaXRlcnRvb2xzL2RvY3MvY29uZi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvbW9yZS1pdGVydG9vbHMvZG9jcy9p
bmRleC5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L21vcmUtaXRlcnRvb2xzL2RvY3MvbGljZW5zZS5yc3QKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L21v
cmUtaXRlcnRvb2xzL2RvY3MvbWFrZS5iYXQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L21vcmUtaXRlcnRvb2xzL2RvY3MvdGVz
dGluZy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L21vcmUtaXRlcnRvb2xzL2RvY3MvdmVyc2lvbnMucnN0CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L21vcmUtaXRlcnRvb2xzL21vcmVfaXRlcnRvb2xzL3Rlc3RzL19faW5pdF9fLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9tb3JlLWl0ZXJ0b29scy9tb3JlX2l0ZXJ0b29scy90ZXN0cy9fX2luaXRfXy5weQpp
bmRleCBhNjgzNGI4Mjg1YTU2YmVmMGUxNTQzZmQ5MDFjN2U2ZjJmOGJjMjAyLi5lNjlkZTI5YmIy
ZDFkNjQzNGI4YjI5YWU3NzVhZDhjMmU0OGM1MzkxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L21vcmUtaXRl
cnRvb2xzL21vcmVfaXRlcnRvb2xzL3Rlc3RzL19faW5pdF9fLnB5CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvbW9yZS1p
dGVydG9vbHMvbW9yZV9pdGVydG9vbHMvdGVzdHMvX19pbml0X18ucHkKQEAgLTEgKzAsMCBAQAot
IyBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFB5dGhvbiB0byBzZWFyY2ggdGhpcyBkaXJlY3Rv
cnkgZm9yIG1vZHVsZXMuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9tb3JlLWl0ZXJ0b29scy9tb3JlX2l0ZXJ0b29scy90ZXN0cy93M2MtaW1wb3J0LmxvZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvbW9yZS1pdGVydG9vbHMvbW9yZV9pdGVydG9vbHMvdGVzdHMvdzNjLWltcG9ydC5sb2cK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzMDJhODE4YjU4MDUzYzM4ZTAyYjQ2Y2Fk
Mjc4ZmEwOGVmMzNkZWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9tb3JlLWl0ZXJ0b29scy9tb3JlX2l0ZXJ0b29scy90ZXN0cy93M2MtaW1wb3J0
LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRp
cmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1v
ZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBw
dWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1w
bGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXcz
Yy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUg
dGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRv
ciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZp
eGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvbW9yZS1p
dGVydG9vbHMvbW9yZV9pdGVydG9vbHMvdGVzdHMvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L21vcmUtaXRl
cnRvb2xzL21vcmVfaXRlcnRvb2xzL3Rlc3RzL3Rlc3RfbW9yZS5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvbW9yZS1pdGVy
dG9vbHMvbW9yZV9pdGVydG9vbHMvdGVzdHMvdGVzdF9yZWNpcGVzLnB5CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L21vcmUtaXRlcnRvb2xzL21vcmVfaXRlcnRvb2xzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9t
b3JlLWl0ZXJ0b29scy9tb3JlX2l0ZXJ0b29scy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYTdkNzliNjhhNWU0YjU0OTVhZGMwNDBhOGY0NGU5MjllNWFhMTVk
MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L21v
cmUtaXRlcnRvb2xzL21vcmVfaXRlcnRvb2xzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwK
QEAgLTEsMTkgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0
ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRp
cmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUg
V1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAot
Ci1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0
byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQot
UHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9tb3JlLWl0ZXJ0b29scy9tb3JlX2l0ZXJ0
b29scy9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvbW9yZS1pdGVydG9vbHMvbW9yZV9pdGVydG9vbHMvbW9y
ZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvbW9yZS1pdGVydG9vbHMvbW9yZV9pdGVydG9vbHMvcmVjaXBlcy5weQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9tb3JlLWl0ZXJ0b29scy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvbW9yZS1p
dGVydG9vbHMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3
NjczMWFlZDNlMTY2MGZkZTg2NzI5NTkxNjdlZWE5YmMxMzhiOTguLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9tb3JlLWl0ZXJ0b29scy93M2MtaW1w
b3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlz
IGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9U
IG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUg
YSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0
LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1v
dmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvbW9y
ZS1pdGVydG9vbHMvTElDRU5TRQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvbW9yZS1pdGVydG9vbHMvTUFOSUZFU1QuaW4KLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L21vcmUtaXRlcnRvb2xzL1JFQURNRS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L21vcmUtaXRlcnRvb2xzL3NldHVw
LmNmZwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvbW9yZS1pdGVydG9vbHMvc2V0dXAucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L21vcmUtaXRlcnRvb2xz
L3RveC5pbmkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nLy5jb3ZlcmFnZXJjIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
YWNrYWdpbmcvLmNvdmVyYWdlcmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGEyMDVlNWExNDk1NDVjYjRhY2FkYWIw
ZTYzMzI3MjJhNjNlMWI0NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nLy5jb3Zl
cmFnZXJjCkBAIC0wLDAgKzEsOSBAQAorW3J1bl0KK2JyYW5jaCA9IFRydWUKK29taXQgPSBwYWNr
YWdpbmcvX2NvbXBhdC5weQorCitbcmVwb3J0XQorZXhjbHVkZV9saW5lcyA9CisgICAgcHJhZ21h
OiBubyBjb3ZlcgorICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICBAYWJjLmFic3RyYWN0cHJv
cGVydHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nLy5mbGFrZTggYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2lu
Zy8uZmxha2U4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI1YTM1YmU5MmFmMjU1MjM2MzdjMTQwMmU0MmE1OWQ5N2Iw
MmEzNWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy8uZmxha2U4CkBAIC0wLDAg
KzEsMyBAQAorW2ZsYWtlOF0KK21heC1saW5lLWxlbmd0aCA9IDg4CitpZ25vcmUgPSBFMjAzLFc1
MDMsVzUwNApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvLmdpdGh1Yi93b3JrZmxvd3MvdzNj
LWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy8uZ2l0aHViL3dvcmtmbG93cy93M2MtaW1wb3J0
LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjc0MGY0Y2U4ZmE5YjZjMGNkODgy
MWQ4NzlkMTQxNTg0M2JjYTI4YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy8uZ2l0aHViL3dvcmtmbG93cy93M2MtaW1wb3J0Lmxv
ZworKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVj
dG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlm
eSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxs
IHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0
Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10
ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhp
cyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVz
OgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5n
Ly5naXRodWIvd29ya2Zsb3dzL2RvY3MueW1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvLmdpdGh1Yi93b3Jr
Zmxvd3MvbGludC55bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy8uZ2l0aHViL3dvcmtmbG93cy90ZXN0Lnlt
bApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvLmdpdGlnbm9yZSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5n
Ly5naXRpZ25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlNTU0YTY0YzI0NGQ5NmMyMWRkMmQ4Y2UwNmYwMDYw
YjY1Y2FjOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nLy5naXRpZ25vcmUKQEAg
LTAsMCArMSwxOCBAQAorKi5lZ2ctaW5mby8KKyouZWdnCisqLnB5W2NvXQorCisuW250XW94Lwor
LmNhY2hlLworLmNvdmVyYWdlCisuaWRlYQorLnZlbnYqCisudnNjb2RlLworCisubXlweV9jYWNo
ZS8KKy5weXRlc3RfY2FjaGUvCitfX3B5Y2FjaGVfXy8KK19idWlsZC8KK2J1aWxkLworZGlzdC8K
K2h0bWxjb3YvCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy8ucHJlLWNvbW1pdC1jb25maWcu
eWFtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcGFja2FnaW5nLy5wcmUtY29tbWl0LWNvbmZpZy55YW1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmVjNzc2NWVkZDEwODA4N2E0MDhlZmE2NGY2NWQxY2Y0NjRiOTBmODAKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3BhY2thZ2luZy8ucHJlLWNvbW1pdC1jb25maWcueWFtbApAQCAtMCwwICsxLDMy
IEBACityZXBvczoKKyAgLSByZXBvOiBodHRwczovL2dpdGh1Yi5jb20vcHJlLWNvbW1pdC9wcmUt
Y29tbWl0LWhvb2tzCisgICAgcmV2OiB2Mi4zLjAKKyAgICBob29rczoKKyAgICAgIC0gaWQ6IGNo
ZWNrLXRvbWwKKyAgICAgIC0gaWQ6IGNoZWNrLXlhbWwKKyAgICAgIC0gaWQ6IGVuZC1vZi1maWxl
LWZpeGVyCisgICAgICAtIGlkOiB0cmFpbGluZy13aGl0ZXNwYWNlCisKKyAgLSByZXBvOiBodHRw
czovL2dpdGh1Yi5jb20vcHJlLWNvbW1pdC9taXJyb3JzLW15cHkKKyAgICByZXY6IHYwLjc5MAor
ICAgIGhvb2tzOgorICAgICAgLSBpZDogbXlweQorICAgICAgICBleGNsdWRlOiAnXihkb2NzfHRh
c2tzfHRlc3RzKXxzZXR1cFwucHknCisgICAgICAgIGFyZ3M6IFtdCisgICAgICAtIGlkOiBteXB5
CisgICAgICAgIG5hbWU6IG15cHkgZm9yIFB5dGhvbiAyCisgICAgICAgIGV4Y2x1ZGU6ICdeKGRv
Y3N8dGFza3N8dGVzdHMpfHNldHVwXC5weXxub3hmaWxlXC5weScKKyAgICAgICAgYXJnczogWyIt
LXB5MiJdCisKKyAgLSByZXBvOiBodHRwczovL2dpdGh1Yi5jb20vcHNmL2JsYWNrCisgICAgcmV2
OiAxOS4zYjAKKyAgICBob29rczoKKyAgICAgIC0gaWQ6IGJsYWNrCisKKyAgLSByZXBvOiBodHRw
czovL2dpdGxhYi5jb20vUHlDUUEvZmxha2U4CisgICAgcmV2OiAiMy43LjgiCisgICAgaG9va3M6
CisgICAgICAtIGlkOiBmbGFrZTgKKyAgICAgICAgYWRkaXRpb25hbF9kZXBlbmRlbmNpZXM6IFsi
cGVwOC1uYW1pbmciXQorICAgICAgICAjIElnbm9yZSBhbGwgZm9ybWF0LXJlbGF0ZWQgY2hlY2tz
IGFzIEJsYWNrIHRha2VzIGNhcmUgb2YgdGhvc2UuCisgICAgICAgIGFyZ3M6IFsiLS1pZ25vcmUi
LCAiRTIsVzUiLCAiLS1zZWxlY3QiLCAiRSxXLEYsTiJdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2th
Z2luZy8ucmVhZHRoZWRvY3MueW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvLnJlYWR0aGVkb2NzLnltbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kOGFjMjE2Njg3OTlhYzZkYzAwNGU1Zjc4YjM5NGY3ZTBhOTJlZmY0Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvLnJlYWR0aGVkb2NzLnltbApAQCAtMCwwICsx
LDE1IEBACit2ZXJzaW9uOiAyCisKK2J1aWxkOgorICBpbWFnZTogbGF0ZXN0CisKK2Zvcm1hdHM6
IFtwZGZdCitzcGhpbng6CisgIGNvbmZpZ3VyYXRpb246IGRvY3MvY29uZi5weQorCitweXRob246
CisgIHZlcnNpb246IDMuOAorICBpbnN0YWxsOgorICAgIC0gcmVxdWlyZW1lbnRzOiBkb2NzL3Jl
cXVpcmVtZW50cy50eHQKKyAgICAtIG1ldGhvZDogcGlwCisgICAgICBwYXRoOiAuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3BhY2thZ2luZy8udHJhdmlzLnltbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nLy50cmF2aXMu
eW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjdmMDk3M2FlMmMxMGQzMmQ5YjFmZGJmNzhlODI1Y2QxM2MzYjVkNzQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy8udHJhdmlzLnltbApAQCAtMCwwICsx
LDQyIEBACitsYW5ndWFnZTogcHl0aG9uCitjYWNoZTogcGlwCitweXRob246IDMuOAorCittYXRy
aXg6CisgIGluY2x1ZGU6CisgICAgLSBweXRob246IDIuNworICAgICAgZW52OiBOT1hTRVNTSU9O
PXRlc3RzLTIuNworICAgIC0gcHl0aG9uOiBweXB5CisgICAgICBlbnY6IE5PWFNFU1NJT049dGVz
dHMtcHlweQorICAgIC0gcHl0aG9uOiBweXB5MworICAgICAgZW52OiBOT1hTRVNTSU9OPXRlc3Rz
LXB5cHkzCisgICAgLSBweXRob246IDMuNAorICAgICAgZW52OiBOT1hTRVNTSU9OPXRlc3RzLTMu
NAorICAgIC0gcHl0aG9uOiAzLjUKKyAgICAgIGVudjogTk9YU0VTU0lPTj10ZXN0cy0zLjUKKyAg
ICAtIHB5dGhvbjogMy42CisgICAgICBlbnY6IE5PWFNFU1NJT049dGVzdHMtMy42CisgICAgLSBw
eXRob246IDMuNworICAgICAgZW52OiBOT1hTRVNTSU9OPXRlc3RzLTMuNworICAgIC0gcHl0aG9u
OiAzLjgKKyAgICAgIGVudjogTk9YU0VTU0lPTj10ZXN0cy0zLjgKKyAgICAtIGVudjogTk9YU0VT
U0lPTj1saW50CisgICAgLSBlbnY6IE5PWFNFU1NJT049ZG9jcworCitpbnN0YWxsOgorICAtIHB5
ZW52IGdsb2JhbCAzLjcuMQorICAtIHB5dGhvbjMuNyAtbSBwaXAgaW5zdGFsbCBub3gKKworc2Ny
aXB0OgorICAtIHB5dGhvbjMuNyAtbSBub3gKKworbm90aWZpY2F0aW9uczoKKyAgaXJjOgorICAg
IGNoYW5uZWxzOgorICAgICAgIyBUaGlzIGlzIHNldCB0byBhIHNlY3VyZSB2YXJpYWJsZSB0byBw
cmV2ZW50IGZvcmtzIGZyb20gbm90aWZ5aW5nIHRoZQorICAgICAgIyBJUkMgY2hhbm5lbCB3aGVu
ZXZlciB0aGV5IGZhaWwgYSBidWlsZC4gVGhpcyBjYW4gYmUgcmVtb3ZlZCB3aGVuIHRyYXZpcwor
ICAgICAgIyBpbXBsZW1lbnRzIGh0dHBzOi8vZ2l0aHViLmNvbS90cmF2aXMtY2kvdHJhdmlzLWNp
L2lzc3Vlcy8xMDk0LgorICAgICAgIyBUaGUgYWN0dWFsIHZhbHVlIGhlcmUgaXM6IGlyYy5mcmVl
bm9kZS5vcmcjcHlwYS1kZXYKKyAgICAgIC0gc2VjdXJlOiAiQnI2YVlCWWtqTDE3ZkJaNitBY3pD
a2FCTVdRQVk2VG84SUg0enFoSHJPUlhBV3E0emV1QzRWeUNaNE1YbUR6azBXYkEzaDNFYTd1OWtv
ZFVmMXNWSzFoMHE3SFg2NnA4cW1GeVRuY1FvTEZnbzJMRi94MWFVMUZHV0tERFNYNUs2cUtPelVL
ckhVaFF5VnErdUF1UlZVbTdiSmhKTDAvdmlQd0VvaCtiT05vPSIKKyAgICB1c2Vfbm90aWNlOiB0
cnVlCisgICAgc2tpcF9qb2luOiB0cnVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9kb2Nz
L19zdGF0aWMvLmVtcHR5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvZG9jcy9fc3RhdGljLy5lbXB0eQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lNjlkZTI5YmIyZDFkNjQzNGI4YjI5YWU3NzVhZDhjMmU0OGM1MzkxCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3BhY2thZ2luZy9kb2NzL2RldmVsb3BtZW50L3czYy1pbXBvcnQubG9nIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9wYWNrYWdpbmcvZG9jcy9kZXZlbG9wbWVudC93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggM2E3YzcyOGZmNTU2YWI5M2UwNzQ3YzlhMmU0MTMxYjU0Y2EwYTU4
MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Bh
Y2thZ2luZy9kb2NzL2RldmVsb3BtZW50L3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAg
LTEsMjEgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQg
ZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVj
dGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BU
IGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1U
aGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byBy
ZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJv
cGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvZG9jcy9kZXZlbG9wbWVudC9n
ZXR0aW5nLXN0YXJ0ZWQucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvZG9jcy9kZXZlbG9wbWVudC9pbmRl
eC5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3BhY2thZ2luZy9kb2NzL2RldmVsb3BtZW50L3JlbGVhc2UtcHJvY2Vzcy5y
c3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3BhY2thZ2luZy9kb2NzL2RldmVsb3BtZW50L3Jldmlld2luZy1wYXRjaGVzLnJz
dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcGFja2FnaW5nL2RvY3MvZGV2ZWxvcG1lbnQvc3VibWl0dGluZy1wYXRjaGVzLnJz
dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvZG9jcy93M2MtaW1wb3J0LmxvZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cGFja2FnaW5nL2RvY3MvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDdiNjg1Mjk5ODQzNjZkZjEyNWIyYzY2ZDhmZGMyYmY5NTdiM2JiNzIuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvZG9jcy93
M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLVRoZSB0ZXN0cyBp
biB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5Lgot
RG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBj
cmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIu
Y29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMv
aW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBv
ciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWly
aW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVu
ZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcGFja2FnaW5nL2RvY3MvTWFrZWZpbGUKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9kb2NzL2NoYW5nZWxv
Zy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3BhY2thZ2luZy9kb2NzL2NvbmYucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9kb2Nz
L2luZGV4LnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL2RvY3MvbWFya2Vycy5yc3QKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2th
Z2luZy9kb2NzL3JlcXVpcmVtZW50cy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9kb2NzL3JlcXVpcmVt
ZW50cy50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9kb2NzL3NlY3VyaXR5LnJzdAotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2Fn
aW5nL2RvY3Mvc3BlY2lmaWVycy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9kb2NzL3RhZ3MucnN0Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9wYWNrYWdpbmcvZG9jcy91dGlscy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9kb2NzL3ZlcnNp
b24ucnN0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9wYWNrYWdpbmcvdzNjLWltcG9ydC5s
b2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3BhY2thZ2luZy9wYWNrYWdpbmcvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDg5YjFjZjNiZmE3YzcyMjY4ZjkzNjBmNjk0NjMxN2E0ODJkYWU0
YmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
YWNrYWdpbmcvcGFja2FnaW5nL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjcg
KzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0
aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGlu
IFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1
YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1
biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9y
dAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkg
dmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvcGFja2FnaW5nL19faW5pdF9fLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9wYWNrYWdpbmcvcGFja2FnaW5nL19jb21wYXQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9wYWNr
YWdpbmcvX3N0cnVjdHVyZXMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9wYWNrYWdpbmcvX3R5cGluZy5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcGFja2FnaW5nL3BhY2thZ2luZy9tYXJrZXJzLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcv
cGFja2FnaW5nL3B5LnR5cGVkCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvcGFja2FnaW5nL3JlcXVpcmVtZW50
cy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcGFja2FnaW5nL3BhY2thZ2luZy9zcGVjaWZpZXJzLnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNr
YWdpbmcvcGFja2FnaW5nL3RhZ3MucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9wYWNrYWdpbmcvdXRpbHMu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3BhY2thZ2luZy9wYWNrYWdpbmcvdmVyc2lvbi5weQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9wYWNrYWdpbmcvdGFza3MvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy90YXNrcy93
M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjYxOWMwZjJiNDA3
Nzc2MzdjODlhNDZjMDVmOGRiZDdhMTllNWM2Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy90YXNrcy93M2MtaW1wb3J0LmxvZwor
KysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9y
eSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0
aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJl
cXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9y
bS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0
cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBm
aWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgot
Tm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL3Rh
c2tzL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvdGFza3MvY2hlY2sucHkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Bh
Y2thZ2luZy90YXNrcy9wYXRocy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL3Rhc2tzL3JlcXVpcmVtZW50
cy50eHQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL3Rlc3RzL2J1aWxkLWhlbGxvLXdvcmxk
LnNoIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9wYWNrYWdpbmcvdGVzdHMvYnVpbGQtaGVsbG8td29ybGQuc2gKb2xkIG1vZGUg
MTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvdGVzdHMv
aGVsbG8td29ybGQtYXJtdjdsLWFybWVsIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvdGVzdHMvaGVsbG8td29y
bGQtYXJtdjdsLWFybWVsCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcGFja2FnaW5nL3Rlc3RzL2hlbGxvLXdvcmxkLWFybXY3bC1hcm1oZiBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cGFja2FnaW5nL3Rlc3RzL2hlbGxvLXdvcmxkLWFybXY3bC1hcm1oZgpvbGQgbW9kZSAxMDA2NDQK
bmV3IG1vZGUgMTAwNzU1CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy90ZXN0cy9oZWxsby13
b3JsZC1pbnZhbGlkLWNsYXNzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvdGVzdHMvaGVsbG8td29ybGQtaW52
YWxpZC1jbGFzcwpvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3BhY2thZ2luZy90ZXN0cy9oZWxsby13b3JsZC1pbnZhbGlkLWRhdGEgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2th
Z2luZy90ZXN0cy9oZWxsby13b3JsZC1pbnZhbGlkLWRhdGEKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBt
b2RlIDEwMDc1NQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvdGVzdHMvaGVsbG8td29ybGQt
aW52YWxpZC1tYWdpYyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL3Rlc3RzL2hlbGxvLXdvcmxkLWludmFsaWQt
bWFnaWMKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
YWNrYWdpbmcvdGVzdHMvaGVsbG8td29ybGQteDg2XzY0LWkzODYgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy90
ZXN0cy9oZWxsby13b3JsZC14ODZfNjQtaTM4NgpvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAw
NzU1CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy90ZXN0cy9oZWxsby13b3JsZC14ODZfNjQt
eDMyIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9wYWNrYWdpbmcvdGVzdHMvaGVsbG8td29ybGQteDg2XzY0LXgzMgpvbGQgbW9k
ZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy90ZXN0
cy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL3Rlc3RzL3czYy1pbXBvcnQubG9nCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxN2I3ZjY4N2YyZGFhY2JhODg4YTM1MzY0NDY3
N2RiY2ZkNDI1ZDZmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcGFja2FnaW5nL3Rlc3RzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAg
LTEsMzYgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQg
ZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVj
dGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BU
IGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1U
aGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byBy
ZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJv
cGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvdGVzdHMvX19pbml0X18ucHkK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3BhY2thZ2luZy90ZXN0cy9idWlsZC1oZWxsby13b3JsZC5zaAotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2Fn
aW5nL3Rlc3RzL2hlbGxvLXdvcmxkLWFybXY3bC1hcm1lbAotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL3Rlc3Rz
L2hlbGxvLXdvcmxkLWFybXY3bC1hcm1oZgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL3Rlc3RzL2hlbGxvLXdv
cmxkLWludmFsaWQtY2xhc3MKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy90ZXN0cy9oZWxsby13b3JsZC1pbnZh
bGlkLWRhdGEKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy90ZXN0cy9oZWxsby13b3JsZC1pbnZhbGlkLW1hZ2lj
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9wYWNrYWdpbmcvdGVzdHMvaGVsbG8td29ybGQtczM5MHgtczM5MHgKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Bh
Y2thZ2luZy90ZXN0cy9oZWxsby13b3JsZC10b28tc2hvcnQKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy90ZXN0
cy9oZWxsby13b3JsZC14ODZfNjQtYW1kNjQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy90ZXN0cy9oZWxsby13
b3JsZC14ODZfNjQtaTM4NgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL3Rlc3RzL2hlbGxvLXdvcmxkLXg4Nl82
NC14MzIKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3BhY2thZ2luZy90ZXN0cy9oZWxsby13b3JsZC5jCi0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdp
bmcvdGVzdHMvdGVzdF9tYXJrZXJzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvdGVzdHMvdGVzdF9yZXF1
aXJlbWVudHMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy90ZXN0cy90ZXN0X3NwZWNpZmllcnMucHkKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3BhY2thZ2luZy90ZXN0cy90ZXN0X3N0cnVjdHVyZXMucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy90
ZXN0cy90ZXN0X3RhZ3MucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy90ZXN0cy90ZXN0X3V0aWxzLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9wYWNrYWdpbmcvdGVzdHMvdGVzdF92ZXJzaW9uLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Bh
Y2thZ2luZy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFja2FnaW5nL3czYy1pbXBvcnQubG9nCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YTcyZWZlMDljNjc0YWI3Nzc1ZTA0YzdhYTNk
MWY5NzEyYmJjNDk1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcGFja2FnaW5nL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjUg
KzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0
aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGlu
IFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1
YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1
biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9y
dAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkg
dmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYWNrYWdpbmcvQ0hBTkdFTE9HLnJzdAotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGFj
a2FnaW5nL0NPTlRSSUJVVElORy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9MSUNFTlNFCi0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
YWNrYWdpbmcvTElDRU5TRS5BUEFDSEUKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9MSUNFTlNFLkJTRAotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcGFja2FnaW5nL1JFQURNRS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9teXB5LmluaQotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cGFja2FnaW5nL25veGZpbGUucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhY2thZ2luZy9weXByb2plY3QudG9tbApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9wYXRobGliMi8uZ2l0aWdub3JlIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYXRobGliMi8uZ2l0aWdu
b3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmRiNDU2MWVhYTFkNGYzZWQwMWFmMTE0YTMxNWEwMDUzNzc2ZmZlZDAK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhdGhsaWIyLy5naXRpZ25vcmUKQEAgLTAsMCArMSw1
NCBAQAorIyBCeXRlLWNvbXBpbGVkIC8gb3B0aW1pemVkIC8gRExMIGZpbGVzCitfX3B5Y2FjaGVf
Xy8KKyoucHlbY29kXQorCisjIEMgZXh0ZW5zaW9ucworKi5zbworCisjIERpc3RyaWJ1dGlvbiAv
IHBhY2thZ2luZworLlB5dGhvbgorZW52LworYnVpbGQvCitkZXZlbG9wLWVnZ3MvCitkaXN0Lwor
ZG93bmxvYWRzLworZWdncy8KK2xpYi8KK2xpYjY0LworcGFydHMvCitzZGlzdC8KK3Zhci8KKyou
ZWdnLWluZm8vCisuaW5zdGFsbGVkLmNmZworKi5lZ2cKKworIyBQeUluc3RhbGxlcgorIyAgVXN1
YWxseSB0aGVzZSBmaWxlcyBhcmUgd3JpdHRlbiBieSBhIHB5dGhvbiBzY3JpcHQgZnJvbSBhIHRl
bXBsYXRlCisjICBiZWZvcmUgUHlJbnN0YWxsZXIgYnVpbGRzIHRoZSBleGUsIHNvIGFzIHRvIGlu
amVjdCBkYXRlL290aGVyIGluZm9zIGludG8gaXQuCisqLm1hbmlmZXN0CisqLnNwZWMKKworIyBJ
bnN0YWxsZXIgbG9ncworcGlwLWxvZy50eHQKK3BpcC1kZWxldGUtdGhpcy1kaXJlY3RvcnkudHh0
CisKKyMgVW5pdCB0ZXN0IC8gY292ZXJhZ2UgcmVwb3J0cworaHRtbGNvdi8KKy50b3gvCisuY292
ZXJhZ2UKKy5jYWNoZQorbm9zZXRlc3RzLnhtbAorY292ZXJhZ2UueG1sCisKKyMgVHJhbnNsYXRp
b25zCisqLm1vCisqLnBvdAorCisjIERqYW5nbyBzdHVmZjoKKyoubG9nCisKKyMgU3BoaW54IGRv
Y3VtZW50YXRpb24KK2RvY3MvX2J1aWxkLworCisjIFB5QnVpbGRlcgordGFyZ2V0LwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9wYXRobGliMi8udHJhdmlzLnltbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGF0aGxpYjIvLnRyYXZpcy55
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMzE2Njc0MTIyMDExYjMzN2E3NmE0NTBjMDJlNTJjY2U0MjY3ZTY3YQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGF0aGxpYjIvLnRyYXZpcy55bWwKQEAgLTAsMCArMSw0
NyBAQAorbGFuZ3VhZ2U6IHB5dGhvbgorc3VkbzogZmFsc2UKK21hdHJpeDoKKyAgaW5jbHVkZToK
KyAgICAtIHB5dGhvbjogIjMuNyIKKyAgICAgIGRpc3Q6IHhlbmlhbAorICAgICAgZW52OiBMQ19B
TEw9ImVuX1VTLnV0Zi04IgorICAgIC0gcHl0aG9uOiAiMy43IgorICAgICAgZGlzdDogeGVuaWFs
CisgICAgICBlbnY6IExDX0FMTD0iZW5fVVMuYXNjaWkiCisgICAgLSBweXRob246ICIzLjYiCisg
ICAgICBkaXN0OiB4ZW5pYWwKKyAgICAtIHB5dGhvbjogIjMuNSIKKyAgICAgIGRpc3Q6IHhlbmlh
bAorICAgIC0gcHl0aG9uOiAiMy40IgorICAgICAgZGlzdDogeGVuaWFsCisgICAgLSBweXRob246
ICIyLjciCisgICAgICBkaXN0OiB4ZW5pYWwKKyAgICAtIHB5dGhvbjogIjIuNiIKKyAgICAgIGRp
c3Q6IHRydXN0eQorICAgIC0gcHl0aG9uOiAicHlweSIKKyAgICAgIGRpc3Q6IHhlbmlhbAorICAg
IC0gcHl0aG9uOiAicHlweTMiCisgICAgICBkaXN0OiB4ZW5pYWwKKyAgYWxsb3dfZmFpbHVyZXM6
CisgICMgcHlweSBvY2Nhc2lvbmFsbHkgaGFzIHNvbWUgYnVncworICAtIHB5dGhvbjogInB5cHki
CisgIC0gcHl0aG9uOiAicHlweTMiCiticmFuY2hlczoKKyAgb25seToKKyAgICAtIGRldmVsb3AK
K2luc3RhbGw6CisgIC0gInB5dGhvbiAtYyBcImltcG9ydCBzeXM7IHByaW50KHN5cy5nZXRmaWxl
c3lzdGVtZW5jb2RpbmcoKSlcIiIKKyAgLSAicGlwIGluc3RhbGwgLS11cGdyYWRlIHNldHVwdG9v
bHMiCisgIC0gInBpcCBpbnN0YWxsIC0tdXBncmFkZSBweXRlc3QiCisgIC0gInBpcCBpbnN0YWxs
IHB5dGVzdC1jb3YiCisgIC0gInBpcCBpbnN0YWxsIC1yIHJlcXVpcmVtZW50cy50eHQiCisgIC0g
ImlmIFtbICRUUkFWSVNfUFlUSE9OX1ZFUlNJT04gPT0gJzIuNicgXV07IHRoZW4gcGlwIGluc3Rh
bGwgdW5pdHRlc3QyOyBmaSIKKyAgLSAiaWYgW1sgJFRSQVZJU19QWVRIT05fVkVSU0lPTiA9PSAn
My43JyBdXTsgdGhlbiBwaXAgaW5zdGFsbCBjaGVjay1tYW5pZmVzdCBmbGFrZTg7IGZpIgorICAt
ICJwaXAgaW5zdGFsbCAuIgorc2NyaXB0OgorICAtICJpZiBbWyAkVFJBVklTX1BZVEhPTl9WRVJT
SU9OID09ICczLjcnIF1dOyB0aGVuIGNoZWNrLW1hbmlmZXN0OyBmaSIKKyAgLSAiaWYgW1sgJFRS
QVZJU19QWVRIT05fVkVSU0lPTiA9PSAnMy43JyBdXTsgdGhlbiBmbGFrZTg7IGZpIgorICAtIGNk
IHRlc3RzCisgIC0gInB5dGVzdCAtLWNvdi1yZXBvcnQ9eG1sIC0tY292PXBhdGhsaWIyIC4iCith
ZnRlcl9zdWNjZXNzOgorICAtIGJhc2ggPChjdXJsIC1zIGh0dHBzOi8vY29kZWNvdi5pby9iYXNo
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9wYXRobGliMi9hcHB2ZXlvci93M2MtaW1wb3J0LmxvZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcGF0aGxpYjIvYXBwdmV5b3IvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDNlN2Y4NjhlOGQ4OGQ2ZjFkMWYwYjUyZjI2NTE5NDZkNjNkYmZjOGEuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYXRobGliMi9h
cHB2ZXlvci93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVRo
ZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBv
c2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1J
bnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6
Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xz
L1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9U
IG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRp
ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1
aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZp
bGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcGF0aGxpYjIvYXBwdmV5b3IvaW5zdGFsbC5wczEKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcGF0aGxpYjIvcGF0aGxpYjIvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhdGhsaWIyL3BhdGhs
aWIyL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMzBjMjc1
M2IxN2RjYzcwNzQzNmQwZTEzYWU4ZWYxNDM2MDY0MmY1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGF0aGxpYjIvcGF0aGxpYjIvdzNjLWltcG9y
dC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBk
aXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBt
b2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEg
cHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWIt
cGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13
M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3Zl
IHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhdGhs
aWIyL3BhdGhsaWIyL19faW5pdF9fLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhdGhsaWIyL3Rlc3Rz
L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYXRobGliMi90ZXN0cy93M2MtaW1wb3J0LmxvZwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODBlMDJjYjBjOWM1ZDQ4OTQ1ZmIzZjJjMmI5ZmQ3
NDk3M2Y0YWJkOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3BhdGhsaWIyL3Rlc3RzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEs
MTcgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJv
bSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5
IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdp
dGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVu
IHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWlt
cG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVy
dHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYXRobGliMi90ZXN0cy90ZXN0X3BhdGhsaWIyLnB5
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3BhdGhsaWIyL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYXRobGli
Mi93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjQ5ZTYyZjBi
NmIyNDFjYTI3YTBlZTBiOThmNDY0Njg0ZGU1ZjQ4Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhdGhsaWIyL3czYy1pbXBvcnQubG9nCisrKyAv
ZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdl
cmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNl
IHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVz
dCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRl
c3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGlu
IFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUu
Ci0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVz
OgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25l
Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wYXRobGliMi9DSEFOR0VM
T0cucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9wYXRobGliMi9MSUNFTlNFLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGF0aGxpYjIvTUFOSUZF
U1QuaW4KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3BhdGhsaWIyL1JFQURNRS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhdGhsaWIyL1ZFUlNJT04K
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3BhdGhsaWIyL2FwcHZleW9yLnltbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGF0aGxpYjIvY29kZWNvdi55bWwK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3BhdGhsaWIyL3JlcXVpcmVtZW50cy50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BhdGhsaWIyL3NldHVwLmNm
ZwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcGF0aGxpYjIvc2V0dXAucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGRmX2pzL3BkZi53
b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcGRmX2pzL3BkZi53b3JrZXIuaHRtbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMjM4MjkxMzUyOGU2OTNiM2E1ZDU2YzY2MGE0NTA2MDk4MGI1NDhjMy4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BkZl9q
cy9wZGYud29ya2VyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi08IS0tIFRoaXMg
ZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVuIHRo
ZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3BkZl9qcy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGRmX2pzL3czYy1pbXBvcnQu
bG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZDQxYzdhMjhiNDQ0NmFjM2E5MDg5
MDgwOGRkYjljNzFlZGU3YzFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcGRmX2pzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEs
MTkgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJv
bSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5
IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdp
dGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVu
IHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWlt
cG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVy
dHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wZGZfanMvTElDRU5TRQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGRmX2pzL3Bk
Zi5qcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcGRmX2pzL3BkZi53b3JrZXIuanMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5
Ly5jb3ZlcmFnZXJjIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvLmNvdmVyYWdlcmMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWIxZGUx
Y2QyNDdjYTdjZWJjM2VmZjY1OWQ3MmIxMGRiY2VmOGI0NwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcGx1Z2d5Ly5jb3ZlcmFnZXJjCkBAIC0wLDAgKzEsMTQgQEAKK1tydW5dCitpbmNsdWRlID0K
KyAgcGx1Z2d5LyoKKyAgdGVzdGluZy8qCisgICovbGliL3B5dGhvbiovc2l0ZS1wYWNrYWdlcy9w
bHVnZ3kvKgorICAqL3B5cHkqL3NpdGUtcGFja2FnZXMvcGx1Z2d5LyoKKyAgKlxMaWJcc2l0ZS1w
YWNrYWdlc1xwbHVnZ3lcKgorYnJhbmNoID0gMQorCitbcGF0aHNdCitzb3VyY2UgPSBwbHVnZ3kv
CisgICovbGliL3B5dGhvbiovc2l0ZS1wYWNrYWdlcy9wbHVnZ3kvCisgICovcHlweSovc2l0ZS1w
YWNrYWdlcy9wbHVnZ3kvCisgICpcTGliXHNpdGUtcGFja2FnZXNccGx1Z2d5XApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9wbHVnZ3kvLmdpdGlnbm9yZSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5Ly5naXRpZ25vcmUKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNDU4MDUzNmM3YWRlNzQ4NThiMDU2NGIzNmZhY2VlOGRjZDQ5Nzk0MAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcGx1Z2d5Ly5naXRpZ25vcmUKQEAgLTAsMCArMSw2NCBAQAorIyBCeXRl
LWNvbXBpbGVkIC8gb3B0aW1pemVkIC8gRExMIGZpbGVzCitfX3B5Y2FjaGVfXy8KKyoucHlbY29k
XQorCisjIEMgZXh0ZW5zaW9ucworKi5zbworCisjIERpc3RyaWJ1dGlvbiAvIHBhY2thZ2luZwor
LlB5dGhvbgorZW52LworYnVpbGQvCitkZXZlbG9wLWVnZ3MvCitkaXN0LworZG93bmxvYWRzLwor
ZWdncy8KKy5lZ2dzLworbGliLworbGliNjQvCitwYXJ0cy8KK3NkaXN0LwordmFyLworKi5lZ2ct
aW5mby8KKy5pbnN0YWxsZWQuY2ZnCisqLmVnZworCisjIFB5SW5zdGFsbGVyCisjICBVc3VhbGx5
IHRoZXNlIGZpbGVzIGFyZSB3cml0dGVuIGJ5IGEgcHl0aG9uIHNjcmlwdCBmcm9tIGEgdGVtcGxh
dGUKKyMgIGJlZm9yZSBQeUluc3RhbGxlciBidWlsZHMgdGhlIGV4ZSwgc28gYXMgdG8gaW5qZWN0
IGRhdGUvb3RoZXIgaW5mb3MgaW50byBpdC4KKyoubWFuaWZlc3QKKyouc3BlYworCisjIEluc3Rh
bGxlciBsb2dzCitwaXAtbG9nLnR4dAorcGlwLWRlbGV0ZS10aGlzLWRpcmVjdG9yeS50eHQKKwor
IyBVbml0IHRlc3QgLyBjb3ZlcmFnZSByZXBvcnRzCitodG1sY292LworLnRveC8KKy5jb3ZlcmFn
ZQorLmNvdmVyYWdlLioKKy5jYWNoZQorbm9zZXRlc3RzLnhtbAorY292ZXJhZ2UueG1sCisqLGNv
dmVyCisKKyMgVHJhbnNsYXRpb25zCisqLm1vCisqLnBvdAorCisjIERqYW5nbyBzdHVmZjoKKyou
bG9nCisKKyMgU3BoaW54IGRvY3VtZW50YXRpb24KK2RvY3MvX2J1aWxkLworCisjIFB5QnVpbGRl
cgordGFyZ2V0LworKi5zd3AKKworIyBnZW5lcmF0ZWQgYnkgc2V0dXB0b29sc19zY20KK3NyYy9w
bHVnZ3kvX3ZlcnNpb24ucHkKKworIyBnZW5lcmF0ZWQgYnkgcGlwCitwaXAtd2hlZWwtbWV0YWRh
dGEvCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS8ucHJlLWNvbW1pdC1jb25maWcueWFtbCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcGx1Z2d5Ly5wcmUtY29tbWl0LWNvbmZpZy55YW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVjMDhkOTgzNzc3
NTk4Zjg1N2NjOWU0YTRkMTViYjQ5MjI4Y2IzM2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Bs
dWdneS8ucHJlLWNvbW1pdC1jb25maWcueWFtbApAQCAtMCwwICsxLDMyIEBACityZXBvczoKKy0g
ICByZXBvOiBodHRwczovL2dpdGh1Yi5jb20vYW1idi9ibGFjaworICAgIHJldjogMTkuM2IwCisg
ICAgaG9va3M6CisgICAgLSAgIGlkOiBibGFjaworICAgICAgICBhcmdzOiBbLS1zYWZlLCAtLXF1
aWV0XQorICAgICAgICBsYW5ndWFnZV92ZXJzaW9uOiBweXRob24zLjYKKy0gICByZXBvOiBodHRw
czovL2dpdGh1Yi5jb20vYXNvdHRpbGUvYmxhY2tlbi1kb2NzCisgICAgcmV2OiB2MC41LjAKKyAg
ICBob29rczoKKyAgICAtICAgaWQ6IGJsYWNrZW4tZG9jcworICAgICAgICBhZGRpdGlvbmFsX2Rl
cGVuZGVuY2llczogW2JsYWNrPT0xOS4zYjBdCisgICAgICAgIGxhbmd1YWdlX3ZlcnNpb246IHB5
dGhvbjMuNgorLSAgIHJlcG86IGh0dHBzOi8vZ2l0aHViLmNvbS9wcmUtY29tbWl0L3ByZS1jb21t
aXQtaG9va3MKKyAgICByZXY6IHYyLjEuMAorICAgIGhvb2tzOgorICAgIC0gICBpZDogdHJhaWxp
bmctd2hpdGVzcGFjZQorICAgIC0gICBpZDogZW5kLW9mLWZpbGUtZml4ZXIKKyAgICAtICAgaWQ6
IGZsYWtlOAorLSAgIHJlcG86IGxvY2FsCisgICAgaG9va3M6CisgICAgLSAgIGlkOiByc3QKKyAg
ICAgICAgbmFtZTogcnN0CisgICAgICAgIGVudHJ5OiByc3QtbGludCAtLWVuY29kaW5nIHV0Zi04
CisgICAgICAgIGZpbGVzOiBeKENIQU5HRUxPRy5yc3R8SE9XVE9SRUxFQVNFLnJzdHxSRUFETUUu
cnN0fGNoYW5nZWxvZy8uKikkCisgICAgICAgIGxhbmd1YWdlOiBweXRob24KKyAgICAgICAgYWRk
aXRpb25hbF9kZXBlbmRlbmNpZXM6IFtweWdtZW50cywgcmVzdHJ1Y3R1cmVkdGV4dF9saW50XQor
ICAgICAgICBsYW5ndWFnZV92ZXJzaW9uOiBweXRob24zLjYKKy0gICByZXBvOiBodHRwczovL2dp
dGh1Yi5jb20vcHJlLWNvbW1pdC9weWdyZXAtaG9va3MKKyAgICByZXY6IHYxLjMuMAorICAgIGhv
b2tzOgorICAgIC0gICBpZDogcnN0LWJhY2t0aWNrcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kv
LnRyYXZpcy55bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS8udHJhdmlzLnltbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YmE1OTY2
ZTVkNWE5NjE4NDU5MGQxMjYzNGNjYTUwNTIzZWM4ZmNkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9wbHVnZ3kvLnRyYXZpcy55bWwKQEAgLTAsMCArMSw4MSBAQAorZGlzdDogeGVuaWFsCitsYW5n
dWFnZTogcHl0aG9uCisKK3N0YWdlczoKKy0gbmFtZTogdGVzdAorICBpZjogdGFnIElTIE5PVCBw
cmVzZW50CistIG5hbWU6IGRlcGxveQorICBpZjogcmVwbyA9IHB5dGVzdC1kZXYvcGx1Z2d5IEFO
RCB0YWcgSVMgcHJlc2VudAorCitqb2JzOgorICBpbmNsdWRlOgorICAgIC0gcHl0aG9uOiAnMy42
JworICAgICAgZW52OiBUT1hFTlY9bGludGluZworICAgICAgY2FjaGU6CisgICAgICAgIGRpcmVj
dG9yaWVzOgorICAgICAgICAgIC0gJEhPTUUvLmNhY2hlL3ByZS1jb21taXQKKyAgICAtIHB5dGhv
bjogJzMuNicKKyAgICAgIGVudjogVE9YRU5WPWRvY3MKKyAgICAtIHB5dGhvbjogJzIuNycKKyAg
ICAgIGVudjogVE9YRU5WPXB5MjctY292ZXJhZ2UKKyAgICAtIHB5dGhvbjogJzMuNCcKKyAgICAg
IGVudjogVE9YRU5WPXB5MzQtY292ZXJhZ2UKKyAgICAtIHB5dGhvbjogJzMuNScKKyAgICAgIGVu
djogVE9YRU5WPXB5MzUtY292ZXJhZ2UKKyAgICAtIHB5dGhvbjogJzMuNicKKyAgICAgIGVudjog
VE9YRU5WPXB5MzYtY292ZXJhZ2UKKyAgICAtIHB5dGhvbjogJ3B5cHkyLjctNi4wJworICAgICAg
ZW52OiBUT1hFTlY9cHlweS1jb3ZlcmFnZQorICAgIC0gcHl0aG9uOiAncHlweTMuNS02LjAnCisg
ICAgICBlbnY6IFRPWEVOVj1weXB5My1jb3ZlcmFnZQorICAgIC0gcHl0aG9uOiAnMy43JworICAg
ICAgZW52OiBUT1hFTlY9cHkzNy1jb3ZlcmFnZQorICAgIC0gcHl0aG9uOiAnMy44LWRldicKKyAg
ICAgIGVudjogVE9YRU5WPXB5MzgtY292ZXJhZ2UKKyAgICAtIHB5dGhvbjogJzMuNicKKyAgICAg
IGVudjogVE9YRU5WPXB5MzYtcHl0ZXN0bWFzdGVyLWNvdmVyYWdlCisgICAgLSBweXRob246ICcz
LjYnCisgICAgICBlbnY6IFRPWEVOVj1weTM2LXB5dGVzdGZlYXR1cmVzLWNvdmVyYWdlCisgICAg
LSBweXRob246ICczLjYnCisgICAgICBlbnY6IFRPWEVOVj1iZW5jaG1hcmsKKyAgICAtIHB5dGhv
bjogJzMuNycKKyAgICAgIGVudjogVE9YRU5WPXB5MzctcHl0ZXN0bWFzdGVyLWNvdmVyYWdlCisg
ICAgLSBweXRob246ICczLjcnCisgICAgICBlbnY6IFRPWEVOVj1weTM3LXB5dGVzdGZlYXR1cmVz
LWNvdmVyYWdlCisKKyAgICAtIHN0YWdlOiBkZXBsb3kKKyAgICAgIHB5dGhvbjogJzMuNicKKyAg
ICAgIGVudjoKKyAgICAgIGluc3RhbGw6IHBpcCBpbnN0YWxsIC1VIHNldHVwdG9vbHMgc2V0dXB0
b29sc19zY20KKyAgICAgIHNjcmlwdDogc2tpcAorICAgICAgZGVwbG95OgorICAgICAgICBwcm92
aWRlcjogcHlwaQorICAgICAgICB1c2VyOiBuaWNvZGRlbXVzCisgICAgICAgIGRpc3RyaWJ1dGlv
bnM6IHNkaXN0IGJkaXN0X3doZWVsCisgICAgICAgIHNraXBfdXBsb2FkX2RvY3M6IHRydWUKKyAg
ICAgICAgcGFzc3dvcmQ6CisgICAgICAgICAgc2VjdXJlOiBQRHZRQ0tmWHJGMVYvdGR3RU9mZURF
akRzNnZKOWdLV280eXJNVW1CeDFKTDVwbEhaYXFmSExmdGxHTW9IZWthUVRIY2Z5WVlieGlnbkZ3
NUlHc245Ny9uRktLV0RQTkJmWkErM1JKSm1lSmZ6Mk5RdW5Za1Nub3F0QnRmRXRXSHpGUGRrQ20w
dy9DTjlDOElwUmpodkxuRlRVUXppbDZpTXk2d1pHMjc2Z1U9CisgICAgICAgIG9uOgorICAgICAg
ICAgIHRhZ3M6IHRydWUKKyAgICAgICAgICByZXBvOiBweXRlc3QtZGV2L3BsdWdneQorCitpbnN0
YWxsOgorICAtIHBpcCBpbnN0YWxsIC1VIHBpcAorICAtIHBpcCBpbnN0YWxsIC1VIC0tZm9yY2Ut
cmVpbnN0YWxsIHNldHVwdG9vbHMgdG94CisKK3NjcmlwdDoKKyAgLSB0b3gKKworYWZ0ZXJfc2Ny
aXB0OgorICAtIHwKKyAgICBpZiBbWyAiJHtUT1hFTlYlLWNvdmVyYWdlfSIgIT0gIiRUT1hFTlYi
IF1dOyB0aGVuCisgICAgICBiYXNoIDwoY3VybCAtcyBodHRwczovL2NvZGVjb3YuaW8vYmFzaCkg
LVogLVggZ2NvdiAtWCBjb3ZlcmFnZXB5IC1YIHNlYXJjaCAtWCB4Y29kZSAtWCBnY292b3V0IC1Y
IGZpeCAtZiBjb3ZlcmFnZS54bWwgLW4gJFRPWEVOVgorICAgIGZpCisKK25vdGlmaWNhdGlvbnM6
CisgIGlyYzoKKyAgICBjaGFubmVsczoKKyAgICAgIC0gImNoYXQuZnJlZW5vZGUubmV0I3B5dGVz
dCIKKyAgICBvbl9zdWNjZXNzOiBjaGFuZ2UKKyAgICBvbl9mYWlsdXJlOiBjaGFuZ2UKKyAgICBz
a2lwX2pvaW46IHRydWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L2NoYW5nZWxvZy93M2MtaW1w
b3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcGx1Z2d5L2NoYW5nZWxvZy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNWZjNmQ1MmJlMDQxNTU0ZjZjNzdkYmMyOGY2MGQ1ZjY0NjQ5
MDVhMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3BsdWdneS9jaGFuZ2Vsb2cvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxOCAr
MCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRo
ZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4g
V2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHVi
OgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVu
IHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0
Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2
YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
TGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9jaGFuZ2Vsb2cvUkVBRE1FLnJzdAotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cGx1Z2d5L2NoYW5nZWxvZy9fdGVtcGxhdGUucnN0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9k
b2NzL19zdGF0aWMvaW1nL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvZG9jcy9fc3RhdGlj
L2ltZy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDY1YzY3
OTViYTFhZmUyOGU1MTZlZmFmMTFkNzA4Y2I4YTEwOTlkNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9kb2NzL19zdGF0aWMvaW1nL3cz
Yy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotVGhlIHRlc3RzIGlu
IHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1E
byBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNy
ZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5j
b20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9p
bXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9y
IHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9wbHVnZ3kvZG9jcy9fc3RhdGljL2ltZy9wbHVnLnBuZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVn
Z3kvZG9jcy9leGFtcGxlcy9lZ2dzYW1wbGUtc3BhbS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1
Z2d5L2RvY3MvZXhhbXBsZXMvZWdnc2FtcGxlLXNwYW0vdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlNDNlMzNlNWJhZDE1MzU1YmQwZWUxNDZhNDU4ZTYzNTdl
NDAzOWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9wbHVnZ3kvZG9jcy9leGFtcGxlcy9lZ2dzYW1wbGUtc3BhbS93M2MtaW1wb3J0LmxvZworKysg
L2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3
ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVz
ZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVl
c3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10
ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBp
biBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxl
LgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhl
czoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9u
ZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L2RvY3MvZXhh
bXBsZXMvZWdnc2FtcGxlLXNwYW0vZWdnc2FtcGxlX3NwYW0ucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9kb2Nz
L2V4YW1wbGVzL2VnZ3NhbXBsZS1zcGFtL3NldHVwLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdn
eS9kb2NzL2V4YW1wbGVzL2VnZ3NhbXBsZS9lZ2dzYW1wbGUvdzNjLWltcG9ydC5sb2cgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3BsdWdneS9kb2NzL2V4YW1wbGVzL2VnZ3NhbXBsZS9lZ2dzYW1wbGUvdzNjLWltcG9ydC5sb2cK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlYmFjNGFkZWFjZWU0N2Q5NzVmMjVhZmRi
NDMxNWYwZmM5ZjBjZWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9wbHVnZ3kvZG9jcy9leGFtcGxlcy9lZ2dzYW1wbGUvZWdnc2FtcGxlL3czYy1p
bXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRo
aXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBO
T1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0
ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20v
d2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBv
cnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJl
bW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcg
dmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
bHVnZ3kvZG9jcy9leGFtcGxlcy9lZ2dzYW1wbGUvZWdnc2FtcGxlL19faW5pdF9fLnB5Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9wbHVnZ3kvZG9jcy9leGFtcGxlcy9lZ2dzYW1wbGUvZWdnc2FtcGxlL2hvb2tzcGVjcy5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcGx1Z2d5L2RvY3MvZXhhbXBsZXMvZWdnc2FtcGxlL2VnZ3NhbXBsZS9ob3N0LnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9wbHVnZ3kvZG9jcy9leGFtcGxlcy9lZ2dzYW1wbGUvZWdnc2FtcGxlL2xpYi5weQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9wbHVnZ3kvZG9jcy9leGFtcGxlcy9lZ2dzYW1wbGUvdzNjLWltcG9ydC5s
b2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3BsdWdneS9kb2NzL2V4YW1wbGVzL2VnZ3NhbXBsZS93M2MtaW1wb3J0LmxvZwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTBjMjU1NDAwZDNkM2QwN2Q1YmYyMTgyOWU5
NjhhNTliYmVlMDgxNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3BsdWdneS9kb2NzL2V4YW1wbGVzL2VnZ3NhbXBsZS93M2MtaW1wb3J0LmxvZwor
KysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9y
eSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0
aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJl
cXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9y
bS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0
cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBm
aWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgot
Tm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L2RvY3Mv
ZXhhbXBsZXMvZWdnc2FtcGxlL3NldHVwLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9kb2Nz
L2V4YW1wbGVzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvZG9jcy9leGFtcGxlcy93M2Mt
aW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzM3YTE4MGI2YmRhMmJk
MGQxYmFiNWJjYjAwOGI5MGI3NmY4MTBiYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9kb2NzL2V4YW1wbGVzL3czYy1pbXBvcnQubG9n
CisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0
b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5
IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwg
cmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRm
b3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRl
c3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlz
IGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6
Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvZG9j
cy9leGFtcGxlcy90b3ktZXhhbXBsZS5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvZG9jcy93
M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L2RvY3MvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2ZWI5YTAzZmEzNDA3MWEwZWFmZDUxOGE0ODllNDlmYTM4
NDllNDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9wbHVnZ3kvZG9jcy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAg
QEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFcz
QyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJL
aXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0J
aHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhl
IFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQot
RG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVBy
b3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVl
cyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0
IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L2RvY3MvYXBpX3JlZmVyZW5jZS5yc3QKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Bs
dWdneS9kb2NzL2NoYW5nZWxvZy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9kb2NzL2NvbmYucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3BsdWdneS9kb2NzL2luZGV4LnJzdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvcGx1Z2d5L19f
aW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvcGx1Z2d5L19faW5pdF9fLnB5CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBhYjUxNzVkOTU2NjE0YjAyZjNlZTVhYThiYzkzMzE4M2ViNzUxMjMz
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1
Z2d5L3BsdWdneS9fX2luaXRfXy5weQorKysgL2Rldi9udWxsCkBAIC0xLDY4NCArMCwwIEBACi1p
bXBvcnQgaW5zcGVjdAotaW1wb3J0IHdhcm5pbmdzCi1mcm9tIC5jYWxsZXJzIGltcG9ydCBfbXVs
dGljYWxsLCBIb29rQ2FsbEVycm9yLCBfUmVzdWx0LCBfbGVnYWN5bXVsdGljYWxsCi0KLV9fdmVy
c2lvbl9fID0gJzAuNS4zLmRldicKLQotX19hbGxfXyA9IFsiUGx1Z2luTWFuYWdlciIsICJQbHVn
aW5WYWxpZGF0aW9uRXJyb3IiLCAiSG9va0NhbGxFcnJvciIsCi0gICAgICAgICAgICJIb29rc3Bl
Y01hcmtlciIsICJIb29raW1wbE1hcmtlciJdCi0KLQotY2xhc3MgUGx1Z2luVmFsaWRhdGlvbkVy
cm9yKEV4Y2VwdGlvbik6Ci0gICAgIiIiIHBsdWdpbiBmYWlsZWQgdmFsaWRhdGlvbi4gIiIiCi0K
LQotY2xhc3MgSG9va3NwZWNNYXJrZXIob2JqZWN0KToKLSAgICAiIiIgRGVjb3JhdG9yIGhlbHBl
ciBjbGFzcyBmb3IgbWFya2luZyBmdW5jdGlvbnMgYXMgaG9vayBzcGVjaWZpY2F0aW9ucy4KLQot
ICAgIFlvdSBjYW4gaW5zdGFudGlhdGUgaXQgd2l0aCBhIHByb2plY3RfbmFtZSB0byBnZXQgYSBk
ZWNvcmF0b3IuCi0gICAgQ2FsbGluZyBQbHVnaW5NYW5hZ2VyLmFkZF9ob29rc3BlY3MgbGF0ZXIg
d2lsbCBkaXNjb3ZlciBhbGwgbWFya2VkIGZ1bmN0aW9ucwotICAgIGlmIHRoZSBQbHVnaW5NYW5h
Z2VyIHVzZXMgdGhlIHNhbWUgcHJvamVjdF9uYW1lLgotICAgICIiIgotCi0gICAgZGVmIF9faW5p
dF9fKHNlbGYsIHByb2plY3RfbmFtZSk6Ci0gICAgICAgIHNlbGYucHJvamVjdF9uYW1lID0gcHJv
amVjdF9uYW1lCi0KLSAgICBkZWYgX19jYWxsX18oc2VsZiwgZnVuY3Rpb249Tm9uZSwgZmlyc3Ry
ZXN1bHQ9RmFsc2UsIGhpc3RvcmljPUZhbHNlKToKLSAgICAgICAgIiIiIGlmIHBhc3NlZCBhIGZ1
bmN0aW9uLCBkaXJlY3RseSBzZXRzIGF0dHJpYnV0ZXMgb24gdGhlIGZ1bmN0aW9uCi0gICAgICAg
IHdoaWNoIHdpbGwgbWFrZSBpdCBkaXNjb3ZlcmFibGUgdG8gYWRkX2hvb2tzcGVjcygpLiAgSWYg
cGFzc2VkIG5vCi0gICAgICAgIGZ1bmN0aW9uLCByZXR1cm5zIGEgZGVjb3JhdG9yIHdoaWNoIGNh
biBiZSBhcHBsaWVkIHRvIGEgZnVuY3Rpb24KLSAgICAgICAgbGF0ZXIgdXNpbmcgdGhlIGF0dHJp
YnV0ZXMgc3VwcGxpZWQuCi0KLSAgICAgICAgSWYgZmlyc3RyZXN1bHQgaXMgVHJ1ZSB0aGUgMTpO
IGhvb2sgY2FsbCAoTiBiZWluZyB0aGUgbnVtYmVyIG9mIHJlZ2lzdGVyZWQKLSAgICAgICAgaG9v
ayBpbXBsZW1lbnRhdGlvbiBmdW5jdGlvbnMpIHdpbGwgc3RvcCBhdCBJPD1OIHdoZW4gdGhlIEkn
dGggZnVuY3Rpb24KLSAgICAgICAgcmV0dXJucyBhIG5vbi1Ob25lIHJlc3VsdC4KLQotICAgICAg
ICBJZiBoaXN0b3JpYyBpcyBUcnVlIGNhbGxzIHRvIGEgaG9vayB3aWxsIGJlIG1lbW9yaXplZCBh
bmQgcmVwbGF5ZWQKLSAgICAgICAgb24gbGF0ZXIgcmVnaXN0ZXJlZCBwbHVnaW5zLgotCi0gICAg
ICAgICIiIgotICAgICAgICBkZWYgc2V0YXR0cl9ob29rc3BlY19vcHRzKGZ1bmMpOgotICAgICAg
ICAgICAgaWYgaGlzdG9yaWMgYW5kIGZpcnN0cmVzdWx0OgotICAgICAgICAgICAgICAgIHJhaXNl
IFZhbHVlRXJyb3IoImNhbm5vdCBoYXZlIGEgaGlzdG9yaWMgZmlyc3RyZXN1bHQgaG9vayIpCi0g
ICAgICAgICAgICBzZXRhdHRyKGZ1bmMsIHNlbGYucHJvamVjdF9uYW1lICsgIl9zcGVjIiwKLSAg
ICAgICAgICAgICAgICAgICAgZGljdChmaXJzdHJlc3VsdD1maXJzdHJlc3VsdCwgaGlzdG9yaWM9
aGlzdG9yaWMpKQotICAgICAgICAgICAgcmV0dXJuIGZ1bmMKLQotICAgICAgICBpZiBmdW5jdGlv
biBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBzZXRhdHRyX2hvb2tzcGVjX29wdHMo
ZnVuY3Rpb24pCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gc2V0YXR0cl9ob29r
c3BlY19vcHRzCi0KLQotY2xhc3MgSG9va2ltcGxNYXJrZXIob2JqZWN0KToKLSAgICAiIiIgRGVj
b3JhdG9yIGhlbHBlciBjbGFzcyBmb3IgbWFya2luZyBmdW5jdGlvbnMgYXMgaG9vayBpbXBsZW1l
bnRhdGlvbnMuCi0KLSAgICBZb3UgY2FuIGluc3RhbnRpYXRlIHdpdGggYSBwcm9qZWN0X25hbWUg
dG8gZ2V0IGEgZGVjb3JhdG9yLgotICAgIENhbGxpbmcgUGx1Z2luTWFuYWdlci5yZWdpc3RlciBs
YXRlciB3aWxsIGRpc2NvdmVyIGFsbCBtYXJrZWQgZnVuY3Rpb25zCi0gICAgaWYgdGhlIFBsdWdp
bk1hbmFnZXIgdXNlcyB0aGUgc2FtZSBwcm9qZWN0X25hbWUuCi0gICAgIiIiCi0gICAgZGVmIF9f
aW5pdF9fKHNlbGYsIHByb2plY3RfbmFtZSk6Ci0gICAgICAgIHNlbGYucHJvamVjdF9uYW1lID0g
cHJvamVjdF9uYW1lCi0KLSAgICBkZWYgX19jYWxsX18oc2VsZiwgZnVuY3Rpb249Tm9uZSwgaG9v
a3dyYXBwZXI9RmFsc2UsIG9wdGlvbmFsaG9vaz1GYWxzZSwKLSAgICAgICAgICAgICAgICAgdHJ5
Zmlyc3Q9RmFsc2UsIHRyeWxhc3Q9RmFsc2UpOgotCi0gICAgICAgICIiIiBpZiBwYXNzZWQgYSBm
dW5jdGlvbiwgZGlyZWN0bHkgc2V0cyBhdHRyaWJ1dGVzIG9uIHRoZSBmdW5jdGlvbgotICAgICAg
ICB3aGljaCB3aWxsIG1ha2UgaXQgZGlzY292ZXJhYmxlIHRvIHJlZ2lzdGVyKCkuICBJZiBwYXNz
ZWQgbm8gZnVuY3Rpb24sCi0gICAgICAgIHJldHVybnMgYSBkZWNvcmF0b3Igd2hpY2ggY2FuIGJl
IGFwcGxpZWQgdG8gYSBmdW5jdGlvbiBsYXRlciB1c2luZwotICAgICAgICB0aGUgYXR0cmlidXRl
cyBzdXBwbGllZC4KLQotICAgICAgICBJZiBvcHRpb25hbGhvb2sgaXMgVHJ1ZSBhIG1pc3Npbmcg
bWF0Y2hpbmcgaG9vayBzcGVjaWZpY2F0aW9uIHdpbGwgbm90IHJlc3VsdAotICAgICAgICBpbiBh
biBlcnJvciAoYnkgZGVmYXVsdCBpdCBpcyBhbiBlcnJvciBpZiBubyBtYXRjaGluZyBzcGVjIGlz
IGZvdW5kKS4KLQotICAgICAgICBJZiB0cnlmaXJzdCBpcyBUcnVlIHRoaXMgaG9vayBpbXBsZW1l
bnRhdGlvbiB3aWxsIHJ1biBhcyBlYXJseSBhcyBwb3NzaWJsZQotICAgICAgICBpbiB0aGUgY2hh
aW4gb2YgTiBob29rIGltcGxlbWVudGF0aW9ucyBmb3IgYSBzcGVjZmljYXRpb24uCi0KLSAgICAg
ICAgSWYgdHJ5bGFzdCBpcyBUcnVlIHRoaXMgaG9vayBpbXBsZW1lbnRhdGlvbiB3aWxsIHJ1biBh
cyBsYXRlIGFzIHBvc3NpYmxlCi0gICAgICAgIGluIHRoZSBjaGFpbiBvZiBOIGhvb2sgaW1wbGVt
ZW50YXRpb25zLgotCi0gICAgICAgIElmIGhvb2t3cmFwcGVyIGlzIFRydWUgdGhlIGhvb2sgaW1w
bGVtZW50YXRpb25zIG5lZWRzIHRvIGV4ZWN1dGUgZXhhY3RseQotICAgICAgICBvbmUgInlpZWxk
Ii4gIFRoZSBjb2RlIGJlZm9yZSB0aGUgeWllbGQgaXMgcnVuIGVhcmx5IGJlZm9yZSBhbnkgbm9u
LWhvb2t3cmFwcGVyCi0gICAgICAgIGZ1bmN0aW9uIGlzIHJ1bi4gIFRoZSBjb2RlIGFmdGVyIHRo
ZSB5aWVsZCBpcyBydW4gYWZ0ZXIgYWxsIG5vbi1ob29rd3JhcHBlcgotICAgICAgICBmdW5jdGlv
biBoYXZlIHJ1bi4gIFRoZSB5aWVsZCByZWNlaXZlcyBhIGBgX1Jlc3VsdGBgIG9iamVjdCByZXBy
ZXNlbnRpbmcKLSAgICAgICAgdGhlIGV4Y2VwdGlvbiBvciByZXN1bHQgb3V0Y29tZSBvZiB0aGUg
aW5uZXIgY2FsbHMgKGluY2x1ZGluZyBvdGhlciBob29rd3JhcHBlcgotICAgICAgICBjYWxscyku
Ci0KLSAgICAgICAgIiIiCi0gICAgICAgIGRlZiBzZXRhdHRyX2hvb2tpbXBsX29wdHMoZnVuYyk6
Ci0gICAgICAgICAgICBzZXRhdHRyKGZ1bmMsIHNlbGYucHJvamVjdF9uYW1lICsgIl9pbXBsIiwK
LSAgICAgICAgICAgICAgICAgICAgZGljdChob29rd3JhcHBlcj1ob29rd3JhcHBlciwgb3B0aW9u
YWxob29rPW9wdGlvbmFsaG9vaywKLSAgICAgICAgICAgICAgICAgICAgICAgICB0cnlmaXJzdD10
cnlmaXJzdCwgdHJ5bGFzdD10cnlsYXN0KSkKLSAgICAgICAgICAgIHJldHVybiBmdW5jCi0KLSAg
ICAgICAgaWYgZnVuY3Rpb24gaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBzZXRhdHRyX2hv
b2tpbXBsX29wdHMKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBzZXRhdHRyX2hv
b2tpbXBsX29wdHMoZnVuY3Rpb24pCi0KLQotZGVmIG5vcm1hbGl6ZV9ob29raW1wbF9vcHRzKG9w
dHMpOgotICAgIG9wdHMuc2V0ZGVmYXVsdCgidHJ5Zmlyc3QiLCBGYWxzZSkKLSAgICBvcHRzLnNl
dGRlZmF1bHQoInRyeWxhc3QiLCBGYWxzZSkKLSAgICBvcHRzLnNldGRlZmF1bHQoImhvb2t3cmFw
cGVyIiwgRmFsc2UpCi0gICAgb3B0cy5zZXRkZWZhdWx0KCJvcHRpb25hbGhvb2siLCBGYWxzZSkK
LQotCi1jbGFzcyBfVGFnVHJhY2VyKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgot
ICAgICAgICBzZWxmLl90YWcycHJvYyA9IHt9Ci0gICAgICAgIHNlbGYud3JpdGVyID0gTm9uZQot
ICAgICAgICBzZWxmLmluZGVudCA9IDAKLQotICAgIGRlZiBnZXQoc2VsZiwgbmFtZSk6Ci0gICAg
ICAgIHJldHVybiBfVGFnVHJhY2VyU3ViKHNlbGYsIChuYW1lLCkpCi0KLSAgICBkZWYgZm9ybWF0
X21lc3NhZ2Uoc2VsZiwgdGFncywgYXJncyk6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2UoYXJnc1st
MV0sIGRpY3QpOgotICAgICAgICAgICAgZXh0cmEgPSBhcmdzWy0xXQotICAgICAgICAgICAgYXJn
cyA9IGFyZ3NbOi0xXQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZXh0cmEgPSB7fQotCi0g
ICAgICAgIGNvbnRlbnQgPSAiICIuam9pbihtYXAoc3RyLCBhcmdzKSkKLSAgICAgICAgaW5kZW50
ID0gIiAgIiAqIHNlbGYuaW5kZW50Ci0KLSAgICAgICAgbGluZXMgPSBbCi0gICAgICAgICAgICAi
JXMlcyBbJXNdXG4iICUgKGluZGVudCwgY29udGVudCwgIjoiLmpvaW4odGFncykpCi0gICAgICAg
IF0KLQotICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gZXh0cmEuaXRlbXMoKToKLSAgICAgICAg
ICAgIGxpbmVzLmFwcGVuZCgiJXMgICAgJXM6ICVzXG4iICUgKGluZGVudCwgbmFtZSwgdmFsdWUp
KQotICAgICAgICByZXR1cm4gbGluZXMKLQotICAgIGRlZiBwcm9jZXNzbWVzc2FnZShzZWxmLCB0
YWdzLCBhcmdzKToKLSAgICAgICAgaWYgc2VsZi53cml0ZXIgaXMgbm90IE5vbmUgYW5kIGFyZ3M6
Ci0gICAgICAgICAgICBsaW5lcyA9IHNlbGYuZm9ybWF0X21lc3NhZ2UodGFncywgYXJncykKLSAg
ICAgICAgICAgIHNlbGYud3JpdGVyKCcnLmpvaW4obGluZXMpKQotICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICBzZWxmLl90YWcycHJvY1t0YWdzXSh0YWdzLCBhcmdzKQotICAgICAgICBleGNlcHQg
S2V5RXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICBkZWYgc2V0d3JpdGVyKHNlbGYsIHdy
aXRlcik6Ci0gICAgICAgIHNlbGYud3JpdGVyID0gd3JpdGVyCi0KLSAgICBkZWYgc2V0cHJvY2Vz
c29yKHNlbGYsIHRhZ3MsIHByb2Nlc3Nvcik6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2UodGFncywg
c3RyKToKLSAgICAgICAgICAgIHRhZ3MgPSB0dXBsZSh0YWdzLnNwbGl0KCI6IikpCi0gICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZSh0YWdzLCB0dXBsZSkKLSAgICAg
ICAgc2VsZi5fdGFnMnByb2NbdGFnc10gPSBwcm9jZXNzb3IKLQotCi1jbGFzcyBfVGFnVHJhY2Vy
U3ViKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJvb3QsIHRhZ3MpOgotICAgICAg
ICBzZWxmLnJvb3QgPSByb290Ci0gICAgICAgIHNlbGYudGFncyA9IHRhZ3MKLQotICAgIGRlZiBf
X2NhbGxfXyhzZWxmLCAqYXJncyk6Ci0gICAgICAgIHNlbGYucm9vdC5wcm9jZXNzbWVzc2FnZShz
ZWxmLnRhZ3MsIGFyZ3MpCi0KLSAgICBkZWYgc2V0bXlwcm9jZXNzb3Ioc2VsZiwgcHJvY2Vzc29y
KToKLSAgICAgICAgc2VsZi5yb290LnNldHByb2Nlc3NvcihzZWxmLnRhZ3MsIHByb2Nlc3NvcikK
LQotICAgIGRlZiBnZXQoc2VsZiwgbmFtZSk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3Nf
XyhzZWxmLnJvb3QsIHNlbGYudGFncyArIChuYW1lLCkpCi0KLQotY2xhc3MgX1RyYWNlZEhvb2tF
eGVjdXRpb24ob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGx1Z2lubWFuYWdlciwg
YmVmb3JlLCBhZnRlcik6Ci0gICAgICAgIHNlbGYucGx1Z2lubWFuYWdlciA9IHBsdWdpbm1hbmFn
ZXIKLSAgICAgICAgc2VsZi5iZWZvcmUgPSBiZWZvcmUKLSAgICAgICAgc2VsZi5hZnRlciA9IGFm
dGVyCi0gICAgICAgIHNlbGYub2xkY2FsbCA9IHBsdWdpbm1hbmFnZXIuX2lubmVyX2hvb2tleGVj
Ci0gICAgICAgIGFzc2VydCBub3QgaXNpbnN0YW5jZShzZWxmLm9sZGNhbGwsIF9UcmFjZWRIb29r
RXhlY3V0aW9uKQotICAgICAgICBzZWxmLnBsdWdpbm1hbmFnZXIuX2lubmVyX2hvb2tleGVjID0g
c2VsZgotCi0gICAgZGVmIF9fY2FsbF9fKHNlbGYsIGhvb2ssIGhvb2tfaW1wbHMsIGt3YXJncyk6
Ci0gICAgICAgIHNlbGYuYmVmb3JlKGhvb2submFtZSwgaG9va19pbXBscywga3dhcmdzKQotICAg
ICAgICBvdXRjb21lID0gX1Jlc3VsdC5mcm9tX2NhbGwobGFtYmRhOiBzZWxmLm9sZGNhbGwoaG9v
aywgaG9va19pbXBscywga3dhcmdzKSkKLSAgICAgICAgc2VsZi5hZnRlcihvdXRjb21lLCBob29r
Lm5hbWUsIGhvb2tfaW1wbHMsIGt3YXJncykKLSAgICAgICAgcmV0dXJuIG91dGNvbWUuZ2V0X3Jl
c3VsdCgpCi0KLSAgICBkZWYgdW5kbyhzZWxmKToKLSAgICAgICAgc2VsZi5wbHVnaW5tYW5hZ2Vy
Ll9pbm5lcl9ob29rZXhlYyA9IHNlbGYub2xkY2FsbAotCi0KLWNsYXNzIFBsdWdpbk1hbmFnZXIo
b2JqZWN0KToKLSAgICAiIiIgQ29yZSBQbHVnaW5tYW5hZ2VyIGNsYXNzIHdoaWNoIG1hbmFnZXMg
cmVnaXN0cmF0aW9uCi0gICAgb2YgcGx1Z2luIG9iamVjdHMgYW5kIDE6TiBob29rIGNhbGxpbmcu
Ci0KLSAgICBZb3UgY2FuIHJlZ2lzdGVyIG5ldyBob29rcyBieSBjYWxsaW5nIGBgYWRkX2hvb2tz
cGVjKG1vZHVsZV9vcl9jbGFzcylgYC4KLSAgICBZb3UgY2FuIHJlZ2lzdGVyIHBsdWdpbiBvYmpl
Y3RzICh3aGljaCBjb250YWluIGhvb2tzKSBieSBjYWxsaW5nCi0gICAgYGByZWdpc3RlcihwbHVn
aW4pYGAuICBUaGUgUGx1Z2lubWFuYWdlciBpcyBpbml0aWFsaXplZCB3aXRoIGEKLSAgICBwcmVm
aXggdGhhdCBpcyBzZWFyY2hlZCBmb3IgaW4gdGhlIG5hbWVzIG9mIHRoZSBkaWN0IG9mIHJlZ2lz
dGVyZWQKLSAgICBwbHVnaW4gb2JqZWN0cy4gIEFuIG9wdGlvbmFsIGV4Y2x1ZGVmdW5jIGFsbG93
cyB0byBibGFja2xpc3QgbmFtZXMgd2hpY2gKLSAgICBhcmUgbm90IGNvbnNpZGVyZWQgYXMgaG9v
a3MgZGVzcGl0ZSBhIG1hdGNoaW5nIHByZWZpeC4KLQotICAgIEZvciBkZWJ1Z2dpbmcgcHVycG9z
ZXMgeW91IGNhbiBjYWxsIGBgZW5hYmxlX3RyYWNpbmcoKWBgCi0gICAgd2hpY2ggd2lsbCBzdWJz
ZXF1ZW50bHkgc2VuZCBkZWJ1ZyBpbmZvcm1hdGlvbiB0byB0aGUgdHJhY2UgaGVscGVyLgotICAg
ICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHByb2plY3RfbmFtZSwgaW1wbHByZWZpeD1O
b25lKToKLSAgICAgICAgIiIiIGlmIGltcGxwcmVmaXggaXMgZ2l2ZW4gaW1wbGVtZW50YXRpb24g
ZnVuY3Rpb25zCi0gICAgICAgIHdpbGwgYmUgcmVjb2duaXplZCBpZiB0aGVpciBuYW1lIG1hdGNo
ZXMgdGhlIGltcGxwcmVmaXguICIiIgotICAgICAgICBzZWxmLnByb2plY3RfbmFtZSA9IHByb2pl
Y3RfbmFtZQotICAgICAgICBzZWxmLl9uYW1lMnBsdWdpbiA9IHt9Ci0gICAgICAgIHNlbGYuX3Bs
dWdpbjJob29rY2FsbGVycyA9IHt9Ci0gICAgICAgIHNlbGYuX3BsdWdpbl9kaXN0aW5mbyA9IFtd
Ci0gICAgICAgIHNlbGYudHJhY2UgPSBfVGFnVHJhY2VyKCkuZ2V0KCJwbHVnaW5tYW5hZ2UiKQot
ICAgICAgICBzZWxmLmhvb2sgPSBfSG9va1JlbGF5KHNlbGYudHJhY2Uucm9vdC5nZXQoImhvb2si
KSkKLSAgICAgICAgc2VsZi5faW1wbHByZWZpeCA9IGltcGxwcmVmaXgKLSAgICAgICAgc2VsZi5f
aW5uZXJfaG9va2V4ZWMgPSBsYW1iZGEgaG9vaywgbWV0aG9kcywga3dhcmdzOiBcCi0gICAgICAg
ICAgICBob29rLm11bHRpY2FsbCgKLSAgICAgICAgICAgICAgICBtZXRob2RzLCBrd2FyZ3MsCi0g
ICAgICAgICAgICAgICAgZmlyc3RyZXN1bHQ9aG9vay5zcGVjX29wdHMuZ2V0KCdmaXJzdHJlc3Vs
dCcpLAotICAgICAgICAgICAgKQotCi0gICAgZGVmIF9ob29rZXhlYyhzZWxmLCBob29rLCBtZXRo
b2RzLCBrd2FyZ3MpOgotICAgICAgICAjIGNhbGxlZCBmcm9tIGFsbCBob29rY2FsbGVyIGluc3Rh
bmNlcy4KLSAgICAgICAgIyBlbmFibGVfdHJhY2luZyB3aWxsIHNldCBpdHMgb3duIHdyYXBwaW5n
IGZ1bmN0aW9uIGF0IHNlbGYuX2lubmVyX2hvb2tleGVjCi0gICAgICAgIHJldHVybiBzZWxmLl9p
bm5lcl9ob29rZXhlYyhob29rLCBtZXRob2RzLCBrd2FyZ3MpCi0KLSAgICBkZWYgcmVnaXN0ZXIo
c2VsZiwgcGx1Z2luLCBuYW1lPU5vbmUpOgotICAgICAgICAiIiIgUmVnaXN0ZXIgYSBwbHVnaW4g
YW5kIHJldHVybiBpdHMgY2Fub25pY2FsIG5hbWUgb3IgTm9uZSBpZiB0aGUgbmFtZQotICAgICAg
ICBpcyBibG9ja2VkIGZyb20gcmVnaXN0ZXJpbmcuICBSYWlzZSBhIFZhbHVlRXJyb3IgaWYgdGhl
IHBsdWdpbiBpcyBhbHJlYWR5Ci0gICAgICAgIHJlZ2lzdGVyZWQuICIiIgotICAgICAgICBwbHVn
aW5fbmFtZSA9IG5hbWUgb3Igc2VsZi5nZXRfY2Fub25pY2FsX25hbWUocGx1Z2luKQotCi0gICAg
ICAgIGlmIHBsdWdpbl9uYW1lIGluIHNlbGYuX25hbWUycGx1Z2luIG9yIHBsdWdpbiBpbiBzZWxm
Ll9wbHVnaW4yaG9va2NhbGxlcnM6Ci0gICAgICAgICAgICBpZiBzZWxmLl9uYW1lMnBsdWdpbi5n
ZXQocGx1Z2luX25hbWUsIC0xKSBpcyBOb25lOgotICAgICAgICAgICAgICAgIHJldHVybiAgIyBi
bG9ja2VkIHBsdWdpbiwgcmV0dXJuIE5vbmUgdG8gaW5kaWNhdGUgbm8gcmVnaXN0cmF0aW9uCi0g
ICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJQbHVnaW4gYWxyZWFkeSByZWdpc3RlcmVkOiAl
cz0lc1xuJXMiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBsdWdpbl9uYW1lLCBw
bHVnaW4sIHNlbGYuX25hbWUycGx1Z2luKSkKLQotICAgICAgICAjIFhYWCBpZiBhbiBlcnJvciBo
YXBwZW5zIHdlIHNob3VsZCBtYWtlIHN1cmUgbm8gc3RhdGUgaGFzIGJlZW4KLSAgICAgICAgIyBj
aGFuZ2VkIGF0IHBvaW50IG9mIHJldHVybgotICAgICAgICBzZWxmLl9uYW1lMnBsdWdpbltwbHVn
aW5fbmFtZV0gPSBwbHVnaW4KLQotICAgICAgICAjIHJlZ2lzdGVyIG1hdGNoaW5nIGhvb2sgaW1w
bGVtZW50YXRpb25zIG9mIHRoZSBwbHVnaW4KLSAgICAgICAgc2VsZi5fcGx1Z2luMmhvb2tjYWxs
ZXJzW3BsdWdpbl0gPSBob29rY2FsbGVycyA9IFtdCi0gICAgICAgIGZvciBuYW1lIGluIGRpcihw
bHVnaW4pOgotICAgICAgICAgICAgaG9va2ltcGxfb3B0cyA9IHNlbGYucGFyc2VfaG9va2ltcGxf
b3B0cyhwbHVnaW4sIG5hbWUpCi0gICAgICAgICAgICBpZiBob29raW1wbF9vcHRzIGlzIG5vdCBO
b25lOgotICAgICAgICAgICAgICAgIG5vcm1hbGl6ZV9ob29raW1wbF9vcHRzKGhvb2tpbXBsX29w
dHMpCi0gICAgICAgICAgICAgICAgbWV0aG9kID0gZ2V0YXR0cihwbHVnaW4sIG5hbWUpCi0gICAg
ICAgICAgICAgICAgaG9va2ltcGwgPSBIb29rSW1wbChwbHVnaW4sIHBsdWdpbl9uYW1lLCBtZXRo
b2QsIGhvb2tpbXBsX29wdHMpCi0gICAgICAgICAgICAgICAgaG9vayA9IGdldGF0dHIoc2VsZi5o
b29rLCBuYW1lLCBOb25lKQotICAgICAgICAgICAgICAgIGlmIGhvb2sgaXMgTm9uZToKLSAgICAg
ICAgICAgICAgICAgICAgaG9vayA9IF9Ib29rQ2FsbGVyKG5hbWUsIHNlbGYuX2hvb2tleGVjKQot
ICAgICAgICAgICAgICAgICAgICBzZXRhdHRyKHNlbGYuaG9vaywgbmFtZSwgaG9vaykKLSAgICAg
ICAgICAgICAgICBlbGlmIGhvb2suaGFzX3NwZWMoKToKLSAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fdmVyaWZ5X2hvb2soaG9vaywgaG9va2ltcGwpCi0gICAgICAgICAgICAgICAgICAgIGhvb2su
X21heWJlX2FwcGx5X2hpc3RvcnkoaG9va2ltcGwpCi0gICAgICAgICAgICAgICAgaG9vay5fYWRk
X2hvb2tpbXBsKGhvb2tpbXBsKQotICAgICAgICAgICAgICAgIGhvb2tjYWxsZXJzLmFwcGVuZCho
b29rKQotICAgICAgICByZXR1cm4gcGx1Z2luX25hbWUKLQotICAgIGRlZiBwYXJzZV9ob29raW1w
bF9vcHRzKHNlbGYsIHBsdWdpbiwgbmFtZSk6Ci0gICAgICAgIG1ldGhvZCA9IGdldGF0dHIocGx1
Z2luLCBuYW1lKQotICAgICAgICBpZiBub3QgaW5zcGVjdC5pc3JvdXRpbmUobWV0aG9kKToKLSAg
ICAgICAgICAgIHJldHVybgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXMgPSBnZXRhdHRy
KG1ldGhvZCwgc2VsZi5wcm9qZWN0X25hbWUgKyAiX2ltcGwiLCBOb25lKQotICAgICAgICBleGNl
cHQgRXhjZXB0aW9uOgotICAgICAgICAgICAgcmVzID0ge30KLSAgICAgICAgaWYgcmVzIGlzIG5v
dCBOb25lIGFuZCBub3QgaXNpbnN0YW5jZShyZXMsIGRpY3QpOgotICAgICAgICAgICAgIyBmYWxz
ZSBwb3NpdGl2ZQotICAgICAgICAgICAgcmVzID0gTm9uZQotICAgICAgICBlbGlmIHJlcyBpcyBO
b25lIGFuZCBzZWxmLl9pbXBscHJlZml4IGFuZCBuYW1lLnN0YXJ0c3dpdGgoc2VsZi5faW1wbHBy
ZWZpeCk6Ci0gICAgICAgICAgICByZXMgPSB7fQotICAgICAgICByZXR1cm4gcmVzCi0KLSAgICBk
ZWYgdW5yZWdpc3RlcihzZWxmLCBwbHVnaW49Tm9uZSwgbmFtZT1Ob25lKToKLSAgICAgICAgIiIi
IHVucmVnaXN0ZXIgYSBwbHVnaW4gb2JqZWN0IGFuZCBhbGwgaXRzIGNvbnRhaW5lZCBob29rIGlt
cGxlbWVudGF0aW9ucwotICAgICAgICBmcm9tIGludGVybmFsIGRhdGEgc3RydWN0dXJlcy4gIiIi
Ci0gICAgICAgIGlmIG5hbWUgaXMgTm9uZToKLSAgICAgICAgICAgIGFzc2VydCBwbHVnaW4gaXMg
bm90IE5vbmUsICJvbmUgb2YgbmFtZSBvciBwbHVnaW4gbmVlZHMgdG8gYmUgc3BlY2lmaWVkIgot
ICAgICAgICAgICAgbmFtZSA9IHNlbGYuZ2V0X25hbWUocGx1Z2luKQotCi0gICAgICAgIGlmIHBs
dWdpbiBpcyBOb25lOgotICAgICAgICAgICAgcGx1Z2luID0gc2VsZi5nZXRfcGx1Z2luKG5hbWUp
Ci0KLSAgICAgICAgIyBpZiBzZWxmLl9uYW1lMnBsdWdpbltuYW1lXSA9PSBOb25lIHJlZ2lzdHJh
dGlvbiB3YXMgYmxvY2tlZDogaWdub3JlCi0gICAgICAgIGlmIHNlbGYuX25hbWUycGx1Z2luLmdl
dChuYW1lKToKLSAgICAgICAgICAgIGRlbCBzZWxmLl9uYW1lMnBsdWdpbltuYW1lXQotCi0gICAg
ICAgIGZvciBob29rY2FsbGVyIGluIHNlbGYuX3BsdWdpbjJob29rY2FsbGVycy5wb3AocGx1Z2lu
LCBbXSk6Ci0gICAgICAgICAgICBob29rY2FsbGVyLl9yZW1vdmVfcGx1Z2luKHBsdWdpbikKLQot
ICAgICAgICByZXR1cm4gcGx1Z2luCi0KLSAgICBkZWYgc2V0X2Jsb2NrZWQoc2VsZiwgbmFtZSk6
Ci0gICAgICAgICIiIiBibG9jayByZWdpc3RyYXRpb25zIG9mIHRoZSBnaXZlbiBuYW1lLCB1bnJl
Z2lzdGVyIGlmIGFscmVhZHkgcmVnaXN0ZXJlZC4gIiIiCi0gICAgICAgIHNlbGYudW5yZWdpc3Rl
cihuYW1lPW5hbWUpCi0gICAgICAgIHNlbGYuX25hbWUycGx1Z2luW25hbWVdID0gTm9uZQotCi0g
ICAgZGVmIGlzX2Jsb2NrZWQoc2VsZiwgbmFtZSk6Ci0gICAgICAgICIiIiByZXR1cm4gVHJ1ZSBp
ZiB0aGUgbmFtZSBibG9ncyByZWdpc3RlcmluZyBwbHVnaW5zIG9mIHRoYXQgbmFtZS4gIiIiCi0g
ICAgICAgIHJldHVybiBuYW1lIGluIHNlbGYuX25hbWUycGx1Z2luIGFuZCBzZWxmLl9uYW1lMnBs
dWdpbltuYW1lXSBpcyBOb25lCi0KLSAgICBkZWYgYWRkX2hvb2tzcGVjcyhzZWxmLCBtb2R1bGVf
b3JfY2xhc3MpOgotICAgICAgICAiIiIgYWRkIG5ldyBob29rIHNwZWNpZmljYXRpb25zIGRlZmlu
ZWQgaW4gdGhlIGdpdmVuIG1vZHVsZV9vcl9jbGFzcy4KLSAgICAgICAgRnVuY3Rpb25zIGFyZSBy
ZWNvZ25pemVkIGlmIHRoZXkgaGF2ZSBiZWVuIGRlY29yYXRlZCBhY2NvcmRpbmdseS4gIiIiCi0g
ICAgICAgIG5hbWVzID0gW10KLSAgICAgICAgZm9yIG5hbWUgaW4gZGlyKG1vZHVsZV9vcl9jbGFz
cyk6Ci0gICAgICAgICAgICBzcGVjX29wdHMgPSBzZWxmLnBhcnNlX2hvb2tzcGVjX29wdHMobW9k
dWxlX29yX2NsYXNzLCBuYW1lKQotICAgICAgICAgICAgaWYgc3BlY19vcHRzIGlzIG5vdCBOb25l
OgotICAgICAgICAgICAgICAgIGhjID0gZ2V0YXR0cihzZWxmLmhvb2ssIG5hbWUsIE5vbmUpCi0g
ICAgICAgICAgICAgICAgaWYgaGMgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgaGMgPSBf
SG9va0NhbGxlcihuYW1lLCBzZWxmLl9ob29rZXhlYywgbW9kdWxlX29yX2NsYXNzLCBzcGVjX29w
dHMpCi0gICAgICAgICAgICAgICAgICAgIHNldGF0dHIoc2VsZi5ob29rLCBuYW1lLCBoYykKLSAg
ICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAjIHBsdWdpbnMgcmVnaXN0
ZXJlZCB0aGlzIGhvb2sgd2l0aG91dCBrbm93aW5nIHRoZSBzcGVjCi0gICAgICAgICAgICAgICAg
ICAgIGhjLnNldF9zcGVjaWZpY2F0aW9uKG1vZHVsZV9vcl9jbGFzcywgc3BlY19vcHRzKQotICAg
ICAgICAgICAgICAgICAgICBmb3IgaG9va2Z1bmN0aW9uIGluIChoYy5fd3JhcHBlcnMgKyBoYy5f
bm9ud3JhcHBlcnMpOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fdmVyaWZ5X2hvb2so
aGMsIGhvb2tmdW5jdGlvbikKLSAgICAgICAgICAgICAgICBuYW1lcy5hcHBlbmQobmFtZSkKLQot
ICAgICAgICBpZiBub3QgbmFtZXM6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJkaWQg
bm90IGZpbmQgYW55ICVyIGhvb2tzIGluICVyIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChzZWxmLnByb2plY3RfbmFtZSwgbW9kdWxlX29yX2NsYXNzKSkKLQotICAgIGRlZiBwYXJz
ZV9ob29rc3BlY19vcHRzKHNlbGYsIG1vZHVsZV9vcl9jbGFzcywgbmFtZSk6Ci0gICAgICAgIG1l
dGhvZCA9IGdldGF0dHIobW9kdWxlX29yX2NsYXNzLCBuYW1lKQotICAgICAgICByZXR1cm4gZ2V0
YXR0cihtZXRob2QsIHNlbGYucHJvamVjdF9uYW1lICsgIl9zcGVjIiwgTm9uZSkKLQotICAgIGRl
ZiBnZXRfcGx1Z2lucyhzZWxmKToKLSAgICAgICAgIiIiIHJldHVybiB0aGUgc2V0IG9mIHJlZ2lz
dGVyZWQgcGx1Z2lucy4gIiIiCi0gICAgICAgIHJldHVybiBzZXQoc2VsZi5fcGx1Z2luMmhvb2tj
YWxsZXJzKQotCi0gICAgZGVmIGlzX3JlZ2lzdGVyZWQoc2VsZiwgcGx1Z2luKToKLSAgICAgICAg
IiIiIFJldHVybiBUcnVlIGlmIHRoZSBwbHVnaW4gaXMgYWxyZWFkeSByZWdpc3RlcmVkLiAiIiIK
LSAgICAgICAgcmV0dXJuIHBsdWdpbiBpbiBzZWxmLl9wbHVnaW4yaG9va2NhbGxlcnMKLQotICAg
IGRlZiBnZXRfY2Fub25pY2FsX25hbWUoc2VsZiwgcGx1Z2luKToKLSAgICAgICAgIiIiIFJldHVy
biBjYW5vbmljYWwgbmFtZSBmb3IgYSBwbHVnaW4gb2JqZWN0LiBOb3RlIHRoYXQgYSBwbHVnaW4K
LSAgICAgICAgbWF5IGJlIHJlZ2lzdGVyZWQgdW5kZXIgYSBkaWZmZXJlbnQgbmFtZSB3aGljaCB3
YXMgc3BlY2lmaWVkCi0gICAgICAgIGJ5IHRoZSBjYWxsZXIgb2YgcmVnaXN0ZXIocGx1Z2luLCBu
YW1lKS4gVG8gb2J0YWluIHRoZSBuYW1lCi0gICAgICAgIG9mIGFuIHJlZ2lzdGVyZWQgcGx1Z2lu
IHVzZSBgYGdldF9uYW1lKHBsdWdpbilgYCBpbnN0ZWFkLiIiIgotICAgICAgICByZXR1cm4gZ2V0
YXR0cihwbHVnaW4sICJfX25hbWVfXyIsIE5vbmUpIG9yIHN0cihpZChwbHVnaW4pKQotCi0gICAg
ZGVmIGdldF9wbHVnaW4oc2VsZiwgbmFtZSk6Ci0gICAgICAgICIiIiBSZXR1cm4gYSBwbHVnaW4g
b3IgTm9uZSBmb3IgdGhlIGdpdmVuIG5hbWUuICIiIgotICAgICAgICByZXR1cm4gc2VsZi5fbmFt
ZTJwbHVnaW4uZ2V0KG5hbWUpCi0KLSAgICBkZWYgaGFzX3BsdWdpbihzZWxmLCBuYW1lKToKLSAg
ICAgICAgIiIiIFJldHVybiBUcnVlIGlmIGEgcGx1Z2luIHdpdGggdGhlIGdpdmVuIG5hbWUgaXMg
cmVnaXN0ZXJlZC4gIiIiCi0gICAgICAgIHJldHVybiBzZWxmLmdldF9wbHVnaW4obmFtZSkgaXMg
bm90IE5vbmUKLQotICAgIGRlZiBnZXRfbmFtZShzZWxmLCBwbHVnaW4pOgotICAgICAgICAiIiIg
UmV0dXJuIG5hbWUgZm9yIHJlZ2lzdGVyZWQgcGx1Z2luIG9yIE5vbmUgaWYgbm90IHJlZ2lzdGVy
ZWQuICIiIgotICAgICAgICBmb3IgbmFtZSwgdmFsIGluIHNlbGYuX25hbWUycGx1Z2luLml0ZW1z
KCk6Ci0gICAgICAgICAgICBpZiBwbHVnaW4gPT0gdmFsOgotICAgICAgICAgICAgICAgIHJldHVy
biBuYW1lCi0KLSAgICBkZWYgX3ZlcmlmeV9ob29rKHNlbGYsIGhvb2ssIGhvb2tpbXBsKToKLSAg
ICAgICAgaWYgaG9vay5pc19oaXN0b3JpYygpIGFuZCBob29raW1wbC5ob29rd3JhcHBlcjoKLSAg
ICAgICAgICAgIHJhaXNlIFBsdWdpblZhbGlkYXRpb25FcnJvcigKLSAgICAgICAgICAgICAgICAi
UGx1Z2luICVyXG5ob29rICVyXG5oaXN0b3JpYyBpbmNvbXBhdGlibGUgdG8gaG9va3dyYXBwZXIi
ICUKLSAgICAgICAgICAgICAgICAoaG9va2ltcGwucGx1Z2luX25hbWUsIGhvb2submFtZSkpCi0K
LSAgICAgICAgIyBwb3NpdGlvbmFsIGFyZyBjaGVja2luZwotICAgICAgICBub3RpbnNwZWMgPSBz
ZXQoaG9va2ltcGwuYXJnbmFtZXMpIC0gc2V0KGhvb2suYXJnbmFtZXMpCi0gICAgICAgIGlmIG5v
dGluc3BlYzoKLSAgICAgICAgICAgIHJhaXNlIFBsdWdpblZhbGlkYXRpb25FcnJvcigKLSAgICAg
ICAgICAgICAgICAiUGx1Z2luICVyIGZvciBob29rICVyXG5ob29raW1wbCBkZWZpbml0aW9uOiAl
c1xuIgotICAgICAgICAgICAgICAgICJBcmd1bWVudChzKSAlcyBhcmUgZGVjbGFyZWQgaW4gdGhl
IGhvb2tpbXBsIGJ1dCAiCi0gICAgICAgICAgICAgICAgImNhbiBub3QgYmUgZm91bmQgaW4gdGhl
IGhvb2tzcGVjIiAlCi0gICAgICAgICAgICAgICAgKGhvb2tpbXBsLnBsdWdpbl9uYW1lLCBob29r
Lm5hbWUsCi0gICAgICAgICAgICAgICAgIF9mb3JtYXRkZWYoaG9va2ltcGwuZnVuY3Rpb24pLCBu
b3RpbnNwZWMpCi0gICAgICAgICAgICApCi0KLSAgICBkZWYgY2hlY2tfcGVuZGluZyhzZWxmKToK
LSAgICAgICAgIiIiIFZlcmlmeSB0aGF0IGFsbCBob29rcyB3aGljaCBoYXZlIG5vdCBiZWVuIHZl
cmlmaWVkIGFnYWluc3QKLSAgICAgICAgYSBob29rIHNwZWNpZmljYXRpb24gYXJlIG9wdGlvbmFs
LCBvdGhlcndpc2UgcmFpc2UgUGx1Z2luVmFsaWRhdGlvbkVycm9yIiIiCi0gICAgICAgIGZvciBu
YW1lIGluIHNlbGYuaG9vay5fX2RpY3RfXzoKLSAgICAgICAgICAgIGlmIG5hbWVbMF0gIT0gIl8i
OgotICAgICAgICAgICAgICAgIGhvb2sgPSBnZXRhdHRyKHNlbGYuaG9vaywgbmFtZSkKLSAgICAg
ICAgICAgICAgICBpZiBub3QgaG9vay5oYXNfc3BlYygpOgotICAgICAgICAgICAgICAgICAgICBm
b3IgaG9va2ltcGwgaW4gKGhvb2suX3dyYXBwZXJzICsgaG9vay5fbm9ud3JhcHBlcnMpOgotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGhvb2tpbXBsLm9wdGlvbmFsaG9vazoKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBQbHVnaW5WYWxpZGF0aW9uRXJyb3IoCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmtub3duIGhvb2sgJXIgaW4gcGx1Z2luICVy
IiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuYW1lLCBob29raW1wbC5wbHVn
aW4pKQotCi0gICAgZGVmIGxvYWRfc2V0dXB0b29sc19lbnRyeXBvaW50cyhzZWxmLCBlbnRyeXBv
aW50X25hbWUpOgotICAgICAgICAiIiIgTG9hZCBtb2R1bGVzIGZyb20gcXVlcnlpbmcgdGhlIHNw
ZWNpZmllZCBzZXR1cHRvb2xzIGVudHJ5cG9pbnQgbmFtZS4KLSAgICAgICAgUmV0dXJuIHRoZSBu
dW1iZXIgb2YgbG9hZGVkIHBsdWdpbnMuICIiIgotICAgICAgICBmcm9tIHBrZ19yZXNvdXJjZXMg
aW1wb3J0IChpdGVyX2VudHJ5X3BvaW50cywgRGlzdHJpYnV0aW9uTm90Rm91bmQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25Db25mbGljdCkKLSAgICAgICAgZm9y
IGVwIGluIGl0ZXJfZW50cnlfcG9pbnRzKGVudHJ5cG9pbnRfbmFtZSk6Ci0gICAgICAgICAgICAj
IGlzIHRoZSBwbHVnaW4gcmVnaXN0ZXJlZCBvciBibG9ja2VkPwotICAgICAgICAgICAgaWYgc2Vs
Zi5nZXRfcGx1Z2luKGVwLm5hbWUpIG9yIHNlbGYuaXNfYmxvY2tlZChlcC5uYW1lKToKLSAgICAg
ICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHBs
dWdpbiA9IGVwLmxvYWQoKQotICAgICAgICAgICAgZXhjZXB0IERpc3RyaWJ1dGlvbk5vdEZvdW5k
OgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBleGNlcHQgVmVyc2lvbkNv
bmZsaWN0IGFzIGU6Ci0gICAgICAgICAgICAgICAgcmFpc2UgUGx1Z2luVmFsaWRhdGlvbkVycm9y
KAotICAgICAgICAgICAgICAgICAgICAiUGx1Z2luICVyIGNvdWxkIG5vdCBiZSBsb2FkZWQ6ICVz
ISIgJSAoZXAubmFtZSwgZSkpCi0gICAgICAgICAgICBzZWxmLnJlZ2lzdGVyKHBsdWdpbiwgbmFt
ZT1lcC5uYW1lKQotICAgICAgICAgICAgc2VsZi5fcGx1Z2luX2Rpc3RpbmZvLmFwcGVuZCgocGx1
Z2luLCBlcC5kaXN0KSkKLSAgICAgICAgcmV0dXJuIGxlbihzZWxmLl9wbHVnaW5fZGlzdGluZm8p
Ci0KLSAgICBkZWYgbGlzdF9wbHVnaW5fZGlzdGluZm8oc2VsZik6Ci0gICAgICAgICIiIiByZXR1
cm4gbGlzdCBvZiBkaXN0aW5mby9wbHVnaW4gdHVwbGVzIGZvciBhbGwgc2V0dXB0b29scyByZWdp
c3RlcmVkCi0gICAgICAgIHBsdWdpbnMuICIiIgotICAgICAgICByZXR1cm4gbGlzdChzZWxmLl9w
bHVnaW5fZGlzdGluZm8pCi0KLSAgICBkZWYgbGlzdF9uYW1lX3BsdWdpbihzZWxmKToKLSAgICAg
ICAgIiIiIHJldHVybiBsaXN0IG9mIG5hbWUvcGx1Z2luIHBhaXJzLiAiIiIKLSAgICAgICAgcmV0
dXJuIGxpc3Qoc2VsZi5fbmFtZTJwbHVnaW4uaXRlbXMoKSkKLQotICAgIGRlZiBnZXRfaG9va2Nh
bGxlcnMoc2VsZiwgcGx1Z2luKToKLSAgICAgICAgIiIiIGdldCBhbGwgaG9vayBjYWxsZXJzIGZv
ciB0aGUgc3BlY2lmaWVkIHBsdWdpbi4gIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9wbHVnaW4y
aG9va2NhbGxlcnMuZ2V0KHBsdWdpbikKLQotICAgIGRlZiBhZGRfaG9va2NhbGxfbW9uaXRvcmlu
ZyhzZWxmLCBiZWZvcmUsIGFmdGVyKToKLSAgICAgICAgIiIiIGFkZCBiZWZvcmUvYWZ0ZXIgdHJh
Y2luZyBmdW5jdGlvbnMgZm9yIGFsbCBob29rcwotICAgICAgICBhbmQgcmV0dXJuIGFuIHVuZG8g
ZnVuY3Rpb24gd2hpY2gsIHdoZW4gY2FsbGVkLAotICAgICAgICB3aWxsIHJlbW92ZSB0aGUgYWRk
ZWQgdHJhY2Vycy4KLQotICAgICAgICBgYGJlZm9yZShob29rX25hbWUsIGhvb2tfaW1wbHMsIGt3
YXJncylgYCB3aWxsIGJlIGNhbGxlZCBhaGVhZAotICAgICAgICBvZiBhbGwgaG9vayBjYWxscyBh
bmQgcmVjZWl2ZSBhIGhvb2tjYWxsZXIgaW5zdGFuY2UsIGEgbGlzdAotICAgICAgICBvZiBIb29r
SW1wbCBpbnN0YW5jZXMgYW5kIHRoZSBrZXl3b3JkIGFyZ3VtZW50cyBmb3IgdGhlIGhvb2sgY2Fs
bC4KLQotICAgICAgICBgYGFmdGVyKG91dGNvbWUsIGhvb2tfbmFtZSwgaG9va19pbXBscywga3dh
cmdzKWBgIHJlY2VpdmVzIHRoZQotICAgICAgICBzYW1lIGFyZ3VtZW50cyBhcyBgYGJlZm9yZWBg
IGJ1dCBhbHNvIGEgOnB5OmNsYXNzOmBfUmVzdWx0YGAgb2JqZWN0Ci0gICAgICAgIHdoaWNoIHJl
cHJlc2VudHMgdGhlIHJlc3VsdCBvZiB0aGUgb3ZlcmFsbCBob29rIGNhbGwuCi0gICAgICAgICIi
IgotICAgICAgICByZXR1cm4gX1RyYWNlZEhvb2tFeGVjdXRpb24oc2VsZiwgYmVmb3JlLCBhZnRl
cikudW5kbwotCi0gICAgZGVmIGVuYWJsZV90cmFjaW5nKHNlbGYpOgotICAgICAgICAiIiIgZW5h
YmxlIHRyYWNpbmcgb2YgaG9vayBjYWxscyBhbmQgcmV0dXJuIGFuIHVuZG8gZnVuY3Rpb24uICIi
IgotICAgICAgICBob29rdHJhY2UgPSBzZWxmLmhvb2suX3RyYWNlCi0KLSAgICAgICAgZGVmIGJl
Zm9yZShob29rX25hbWUsIG1ldGhvZHMsIGt3YXJncyk6Ci0gICAgICAgICAgICBob29rdHJhY2Uu
cm9vdC5pbmRlbnQgKz0gMQotICAgICAgICAgICAgaG9va3RyYWNlKGhvb2tfbmFtZSwga3dhcmdz
KQotCi0gICAgICAgIGRlZiBhZnRlcihvdXRjb21lLCBob29rX25hbWUsIG1ldGhvZHMsIGt3YXJn
cyk6Ci0gICAgICAgICAgICBpZiBvdXRjb21lLmV4Y2luZm8gaXMgTm9uZToKLSAgICAgICAgICAg
ICAgICBob29rdHJhY2UoImZpbmlzaCIsIGhvb2tfbmFtZSwgIi0tPiIsIG91dGNvbWUuZ2V0X3Jl
c3VsdCgpKQotICAgICAgICAgICAgaG9va3RyYWNlLnJvb3QuaW5kZW50IC09IDEKLQotICAgICAg
ICByZXR1cm4gc2VsZi5hZGRfaG9va2NhbGxfbW9uaXRvcmluZyhiZWZvcmUsIGFmdGVyKQotCi0g
ICAgZGVmIHN1YnNldF9ob29rX2NhbGxlcihzZWxmLCBuYW1lLCByZW1vdmVfcGx1Z2lucyk6Ci0g
ICAgICAgICIiIiBSZXR1cm4gYSBuZXcgX0hvb2tDYWxsZXIgaW5zdGFuY2UgZm9yIHRoZSBuYW1l
ZCBtZXRob2QKLSAgICAgICAgd2hpY2ggbWFuYWdlcyBjYWxscyB0byBhbGwgcmVnaXN0ZXJlZCBw
bHVnaW5zIGV4Y2VwdCB0aGUKLSAgICAgICAgb25lcyBmcm9tIHJlbW92ZV9wbHVnaW5zLiAiIiIK
LSAgICAgICAgb3JpZyA9IGdldGF0dHIoc2VsZi5ob29rLCBuYW1lKQotICAgICAgICBwbHVnaW5z
X3RvX3JlbW92ZSA9IFtwbHVnIGZvciBwbHVnIGluIHJlbW92ZV9wbHVnaW5zIGlmIGhhc2F0dHIo
cGx1ZywgbmFtZSldCi0gICAgICAgIGlmIHBsdWdpbnNfdG9fcmVtb3ZlOgotICAgICAgICAgICAg
aGMgPSBfSG9va0NhbGxlcihvcmlnLm5hbWUsIG9yaWcuX2hvb2tleGVjLCBvcmlnLl9zcGVjbW9k
dWxlX29yX2NsYXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnLnNwZWNfb3B0
cykKLSAgICAgICAgICAgIGZvciBob29raW1wbCBpbiAob3JpZy5fd3JhcHBlcnMgKyBvcmlnLl9u
b253cmFwcGVycyk6Ci0gICAgICAgICAgICAgICAgcGx1Z2luID0gaG9va2ltcGwucGx1Z2luCi0g
ICAgICAgICAgICAgICAgaWYgcGx1Z2luIG5vdCBpbiBwbHVnaW5zX3RvX3JlbW92ZToKLSAgICAg
ICAgICAgICAgICAgICAgaGMuX2FkZF9ob29raW1wbChob29raW1wbCkKLSAgICAgICAgICAgICAg
ICAgICAgIyB3ZSBhbHNvIGtlZXAgdHJhY2sgb2YgdGhpcyBob29rIGNhbGxlciBzbyBpdAotICAg
ICAgICAgICAgICAgICAgICAjIGdldHMgcHJvcGVybHkgcmVtb3ZlZCBvbiBwbHVnaW4gdW5yZWdp
c3RyYXRpb24KLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGx1Z2luMmhvb2tjYWxsZXJzLnNl
dGRlZmF1bHQocGx1Z2luLCBbXSkuYXBwZW5kKGhjKQotICAgICAgICAgICAgcmV0dXJuIGhjCi0g
ICAgICAgIHJldHVybiBvcmlnCi0KLQotZGVmIHZhcm5hbWVzKGZ1bmMpOgotICAgICIiIlJldHVy
biB0dXBsZSBvZiBwb3NpdGlvbmFsIGFuZCBrZXl3cm9yZCBhcmd1bWVudCBuYW1lcyBmb3IgYSBm
dW5jdGlvbiwKLSAgICBtZXRob2QsIGNsYXNzIG9yIGNhbGxhYmxlLgotCi0gICAgSW4gY2FzZSBv
ZiBhIGNsYXNzLCBpdHMgYGBfX2luaXRfX2BgIG1ldGhvZCBpcyBjb25zaWRlcmVkLgotICAgIEZv
ciBtZXRob2RzIHRoZSBgYHNlbGZgYCBwYXJhbWV0ZXIgaXMgbm90IGluY2x1ZGVkLgotICAgICIi
IgotICAgIGNhY2hlID0gZ2V0YXR0cihmdW5jLCAiX19kaWN0X18iLCB7fSkKLSAgICB0cnk6Ci0g
ICAgICAgIHJldHVybiBjYWNoZVsiX3Zhcm5hbWVzIl0KLSAgICBleGNlcHQgS2V5RXJyb3I6Ci0g
ICAgICAgIHBhc3MKLQotICAgIGlmIGluc3BlY3QuaXNjbGFzcyhmdW5jKToKLSAgICAgICAgdHJ5
OgotICAgICAgICAgICAgZnVuYyA9IGZ1bmMuX19pbml0X18KLSAgICAgICAgZXhjZXB0IEF0dHJp
YnV0ZUVycm9yOgotICAgICAgICAgICAgcmV0dXJuICgpLCAoKQotICAgIGVsaWYgbm90IGluc3Bl
Y3QuaXNyb3V0aW5lKGZ1bmMpOiAgIyBjYWxsYWJsZSBvYmplY3Q/Ci0gICAgICAgIHRyeToKLSAg
ICAgICAgICAgIGZ1bmMgPSBnZXRhdHRyKGZ1bmMsICdfX2NhbGxfXycsIGZ1bmMpCi0gICAgICAg
IGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICByZXR1cm4gKCkKLQotICAgIHRyeTogICMg
ZnVuYyBNVVNUIGJlIGEgZnVuY3Rpb24gb3IgbWV0aG9kIGhlcmUgb3Igd2Ugd29uJ3QgcGFyc2Ug
YW55IGFyZ3MKLSAgICAgICAgc3BlYyA9IF9nZXRhcmdzcGVjKGZ1bmMpCi0gICAgZXhjZXB0IFR5
cGVFcnJvcjoKLSAgICAgICAgcmV0dXJuICgpLCAoKQotCi0gICAgYXJncywgZGVmYXVsdHMgPSB0
dXBsZShzcGVjLmFyZ3MpLCBzcGVjLmRlZmF1bHRzCi0gICAgaWYgZGVmYXVsdHM6Ci0gICAgICAg
IGluZGV4ID0gLWxlbihkZWZhdWx0cykKLSAgICAgICAgYXJncywgZGVmYXVsdHMgPSBhcmdzWzpp
bmRleF0sIHR1cGxlKGFyZ3NbaW5kZXg6XSkKLSAgICBlbHNlOgotICAgICAgICBkZWZhdWx0cyA9
ICgpCi0KLSAgICAjIHN0cmlwIGFueSBpbXBsaWNpdCBpbnN0YW5jZSBhcmcKLSAgICBpZiBhcmdz
OgotICAgICAgICBpZiBpbnNwZWN0LmlzbWV0aG9kKGZ1bmMpIG9yICgKLSAgICAgICAgICAgICcu
JyBpbiBnZXRhdHRyKGZ1bmMsICdfX3F1YWxuYW1lX18nLCAoKSkgYW5kIGFyZ3NbMF0gPT0gJ3Nl
bGYnCi0gICAgICAgICk6Ci0gICAgICAgICAgICBhcmdzID0gYXJnc1sxOl0KLQotICAgIGFzc2Vy
dCAic2VsZiIgbm90IGluIGFyZ3MgICMgYmVzdCBuYW1pbmcgcHJhY3Rpc2VzIGNoZWNrPwotICAg
IHRyeToKLSAgICAgICAgY2FjaGVbIl92YXJuYW1lcyJdID0gYXJncywgZGVmYXVsdHMKLSAgICBl
eGNlcHQgVHlwZUVycm9yOgotICAgICAgICBwYXNzCi0gICAgcmV0dXJuIGFyZ3MsIGRlZmF1bHRz
Ci0KLQotY2xhc3MgX0hvb2tSZWxheShvYmplY3QpOgotICAgICIiIiBob29rIGhvbGRlciBvYmpl
Y3QgZm9yIHBlcmZvcm1pbmcgMTpOIGhvb2sgY2FsbHMgd2hlcmUgTiBpcyB0aGUgbnVtYmVyCi0g
ICAgb2YgcmVnaXN0ZXJlZCBwbHVnaW5zLgotCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18o
c2VsZiwgdHJhY2UpOgotICAgICAgICBzZWxmLl90cmFjZSA9IHRyYWNlCi0KLQotY2xhc3MgX0hv
b2tDYWxsZXIob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgaG9va19leGVj
dXRlLCBzcGVjbW9kdWxlX29yX2NsYXNzPU5vbmUsCi0gICAgICAgICAgICAgICAgIHNwZWNfb3B0
cz1Ob25lKToKLSAgICAgICAgc2VsZi5uYW1lID0gbmFtZQotICAgICAgICBzZWxmLl93cmFwcGVy
cyA9IFtdCi0gICAgICAgIHNlbGYuX25vbndyYXBwZXJzID0gW10KLSAgICAgICAgc2VsZi5faG9v
a2V4ZWMgPSBob29rX2V4ZWN1dGUKLSAgICAgICAgc2VsZi5fc3BlY21vZHVsZV9vcl9jbGFzcyA9
IE5vbmUKLSAgICAgICAgc2VsZi5hcmduYW1lcyA9IE5vbmUKLSAgICAgICAgc2VsZi5rd2FyZ25h
bWVzID0gTm9uZQotICAgICAgICBzZWxmLm11bHRpY2FsbCA9IF9tdWx0aWNhbGwKLSAgICAgICAg
c2VsZi5zcGVjX29wdHMgPSBzcGVjX29wdHMgb3Ige30KLSAgICAgICAgaWYgc3BlY21vZHVsZV9v
cl9jbGFzcyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYuc2V0X3NwZWNpZmljYXRpb24o
c3BlY21vZHVsZV9vcl9jbGFzcywgc3BlY19vcHRzKQotCi0gICAgZGVmIGhhc19zcGVjKHNlbGYp
OgotICAgICAgICByZXR1cm4gc2VsZi5fc3BlY21vZHVsZV9vcl9jbGFzcyBpcyBub3QgTm9uZQot
Ci0gICAgZGVmIHNldF9zcGVjaWZpY2F0aW9uKHNlbGYsIHNwZWNtb2R1bGVfb3JfY2xhc3MsIHNw
ZWNfb3B0cyk6Ci0gICAgICAgIGFzc2VydCBub3Qgc2VsZi5oYXNfc3BlYygpCi0gICAgICAgIHNl
bGYuX3NwZWNtb2R1bGVfb3JfY2xhc3MgPSBzcGVjbW9kdWxlX29yX2NsYXNzCi0gICAgICAgIHNw
ZWNmdW5jID0gZ2V0YXR0cihzcGVjbW9kdWxlX29yX2NsYXNzLCBzZWxmLm5hbWUpCi0gICAgICAg
ICMgZ2V0IHNwZWMgYXJnIHNpZ25hdHVyZQotICAgICAgICBhcmduYW1lcywgc2VsZi5rd2FyZ25h
bWVzID0gdmFybmFtZXMoc3BlY2Z1bmMpCi0gICAgICAgIHNlbGYuYXJnbmFtZXMgPSBbIl9fbXVs
dGljYWxsX18iXSArIGxpc3QoYXJnbmFtZXMpCi0gICAgICAgIHNlbGYuc3BlY19vcHRzLnVwZGF0
ZShzcGVjX29wdHMpCi0gICAgICAgIGlmIHNwZWNfb3B0cy5nZXQoImhpc3RvcmljIik6Ci0gICAg
ICAgICAgICBzZWxmLl9jYWxsX2hpc3RvcnkgPSBbXQotCi0gICAgZGVmIGlzX2hpc3RvcmljKHNl
bGYpOgotICAgICAgICByZXR1cm4gaGFzYXR0cihzZWxmLCAiX2NhbGxfaGlzdG9yeSIpCi0KLSAg
ICBkZWYgX3JlbW92ZV9wbHVnaW4oc2VsZiwgcGx1Z2luKToKLSAgICAgICAgZGVmIHJlbW92ZSh3
cmFwcGVycyk6Ci0gICAgICAgICAgICBmb3IgaSwgbWV0aG9kIGluIGVudW1lcmF0ZSh3cmFwcGVy
cyk6Ci0gICAgICAgICAgICAgICAgaWYgbWV0aG9kLnBsdWdpbiA9PSBwbHVnaW46Ci0gICAgICAg
ICAgICAgICAgICAgIGRlbCB3cmFwcGVyc1tpXQotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
VHJ1ZQotICAgICAgICBpZiByZW1vdmUoc2VsZi5fd3JhcHBlcnMpIGlzIE5vbmU6Ci0gICAgICAg
ICAgICBpZiByZW1vdmUoc2VsZi5fbm9ud3JhcHBlcnMpIGlzIE5vbmU6Ci0gICAgICAgICAgICAg
ICAgcmFpc2UgVmFsdWVFcnJvcigicGx1Z2luICVyIG5vdCBmb3VuZCIgJSAocGx1Z2luLCkpCi0K
LSAgICBkZWYgX2FkZF9ob29raW1wbChzZWxmLCBob29raW1wbCk6Ci0gICAgICAgICIiIkEgYW4g
aW1wbGVtZW50YXRpb24gdG8gdGhlIGNhbGxiYWNrIGNoYWluLgotICAgICAgICAiIiIKLSAgICAg
ICAgaWYgaG9va2ltcGwuaG9va3dyYXBwZXI6Ci0gICAgICAgICAgICBtZXRob2RzID0gc2VsZi5f
d3JhcHBlcnMKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG1ldGhvZHMgPSBzZWxmLl9ub253
cmFwcGVycwotCi0gICAgICAgIGlmIGhvb2tpbXBsLnRyeWxhc3Q6Ci0gICAgICAgICAgICBtZXRo
b2RzLmluc2VydCgwLCBob29raW1wbCkKLSAgICAgICAgZWxpZiBob29raW1wbC50cnlmaXJzdDoK
LSAgICAgICAgICAgIG1ldGhvZHMuYXBwZW5kKGhvb2tpbXBsKQotICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgIyBmaW5kIGxhc3Qgbm9uLXRyeWZpcnN0IG1ldGhvZAotICAgICAgICAgICAgaSA9
IGxlbihtZXRob2RzKSAtIDEKLSAgICAgICAgICAgIHdoaWxlIGkgPj0gMCBhbmQgbWV0aG9kc1tp
XS50cnlmaXJzdDoKLSAgICAgICAgICAgICAgICBpIC09IDEKLSAgICAgICAgICAgIG1ldGhvZHMu
aW5zZXJ0KGkgKyAxLCBob29raW1wbCkKLQotICAgICAgICBpZiAnX19tdWx0aWNhbGxfXycgaW4g
aG9va2ltcGwuYXJnbmFtZXM6Ci0gICAgICAgICAgICB3YXJuaW5ncy53YXJuKAotICAgICAgICAg
ICAgICAgICJTdXBwb3J0IGZvciBfX211bHRpY2FsbF9fIGlzIG5vdyBkZXByZWNhdGVkIGFuZCB3
aWxsIGJlIgotICAgICAgICAgICAgICAgICJyZW1vdmVkIGluIGFuIHVwY29taW5nIHJlbGVhc2Uu
IiwKLSAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcKLSAgICAgICAgICAgICkKLSAg
ICAgICAgICAgIHNlbGYubXVsdGljYWxsID0gX2xlZ2FjeW11bHRpY2FsbAotCi0gICAgZGVmIF9f
cmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIjxfSG9va0NhbGxlciAlcj4iICUgKHNlbGYu
bmFtZSwpCi0KLSAgICBkZWYgX19jYWxsX18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAg
ICAgaWYgYXJnczoKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiaG9vayBjYWxsaW5nIHN1
cHBvcnRzIG9ubHkga2V5d29yZCBhcmd1bWVudHMiKQotICAgICAgICBhc3NlcnQgbm90IHNlbGYu
aXNfaGlzdG9yaWMoKQotICAgICAgICBpZiBzZWxmLmFyZ25hbWVzOgotICAgICAgICAgICAgbm90
aW5jYWxsID0gc2V0KHNlbGYuYXJnbmFtZXMpIC0gc2V0KFsnX19tdWx0aWNhbGxfXyddKSAtIHNl
dCgKLSAgICAgICAgICAgICAgICBrd2FyZ3Mua2V5cygpKQotICAgICAgICAgICAgaWYgbm90aW5j
YWxsOgotICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oCi0gICAgICAgICAgICAgICAgICAg
ICJBcmd1bWVudChzKSB7fSB3aGljaCBhcmUgZGVjbGFyZWQgaW4gdGhlIGhvb2tzcGVjICIKLSAg
ICAgICAgICAgICAgICAgICAgImNhbiBub3QgYmUgZm91bmQgaW4gdGhpcyBob29rIGNhbGwiCi0g
ICAgICAgICAgICAgICAgICAgIC5mb3JtYXQodHVwbGUobm90aW5jYWxsKSksCi0gICAgICAgICAg
ICAgICAgICAgIHN0YWNrbGV2ZWw9MiwKLSAgICAgICAgICAgICAgICApCi0gICAgICAgIHJldHVy
biBzZWxmLl9ob29rZXhlYyhzZWxmLCBzZWxmLl9ub253cmFwcGVycyArIHNlbGYuX3dyYXBwZXJz
LCBrd2FyZ3MpCi0KLSAgICBkZWYgY2FsbF9oaXN0b3JpYyhzZWxmLCBwcm9jPU5vbmUsIGt3YXJn
cz1Ob25lKToKLSAgICAgICAgIiIiIGNhbGwgdGhlIGhvb2sgd2l0aCBnaXZlbiBgYGt3YXJnc2Bg
IGZvciBhbGwgcmVnaXN0ZXJlZCBwbHVnaW5zIGFuZAotICAgICAgICBmb3IgYWxsIHBsdWdpbnMg
d2hpY2ggd2lsbCBiZSByZWdpc3RlcmVkIGFmdGVyd2FyZHMuCi0KLSAgICAgICAgSWYgYGBwcm9j
YGAgaXMgbm90IE5vbmUgaXQgd2lsbCBiZSBjYWxsZWQgZm9yIGZvciBlYWNoIG5vbi1Ob25lIHJl
c3VsdAotICAgICAgICBvYnRhaW5lZCBmcm9tIGEgaG9vayBpbXBsZW1lbnRhdGlvbi4KLSAgICAg
ICAgIiIiCi0gICAgICAgIHNlbGYuX2NhbGxfaGlzdG9yeS5hcHBlbmQoKGt3YXJncyBvciB7fSwg
cHJvYykpCi0gICAgICAgICMgaGlzdG9yaXppbmcgaG9va3MgZG9uJ3QgcmV0dXJuIHJlc3VsdHMK
LSAgICAgICAgcmVzID0gc2VsZi5faG9va2V4ZWMoc2VsZiwgc2VsZi5fbm9ud3JhcHBlcnMgKyBz
ZWxmLl93cmFwcGVycywga3dhcmdzKQotICAgICAgICBmb3IgeCBpbiByZXMgb3IgW106Ci0gICAg
ICAgICAgICBwcm9jKHgpCi0KLSAgICBkZWYgY2FsbF9leHRyYShzZWxmLCBtZXRob2RzLCBrd2Fy
Z3MpOgotICAgICAgICAiIiIgQ2FsbCB0aGUgaG9vayB3aXRoIHNvbWUgYWRkaXRpb25hbCB0ZW1w
b3JhcmlseSBwYXJ0aWNpcGF0aW5nCi0gICAgICAgIG1ldGhvZHMgdXNpbmcgdGhlIHNwZWNpZmll
ZCBrd2FyZ3MgYXMgY2FsbCBwYXJhbWV0ZXJzLiAiIiIKLSAgICAgICAgb2xkID0gbGlzdChzZWxm
Ll9ub253cmFwcGVycyksIGxpc3Qoc2VsZi5fd3JhcHBlcnMpCi0gICAgICAgIGZvciBtZXRob2Qg
aW4gbWV0aG9kczoKLSAgICAgICAgICAgIG9wdHMgPSBkaWN0KGhvb2t3cmFwcGVyPUZhbHNlLCB0
cnlsYXN0PUZhbHNlLCB0cnlmaXJzdD1GYWxzZSkKLSAgICAgICAgICAgIGhvb2tpbXBsID0gSG9v
a0ltcGwoTm9uZSwgIjx0ZW1wPiIsIG1ldGhvZCwgb3B0cykKLSAgICAgICAgICAgIHNlbGYuX2Fk
ZF9ob29raW1wbChob29raW1wbCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIHNl
bGYoKiprd2FyZ3MpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9ub253cmFw
cGVycywgc2VsZi5fd3JhcHBlcnMgPSBvbGQKLQotICAgIGRlZiBfbWF5YmVfYXBwbHlfaGlzdG9y
eShzZWxmLCBtZXRob2QpOgotICAgICAgICAiIiJBcHBseSBjYWxsIGhpc3RvcnkgdG8gYSBuZXcg
aG9va2ltcGwgaWYgaXQgaXMgbWFya2VkIGFzIGhpc3RvcmljLgotICAgICAgICAiIiIKLSAgICAg
ICAgaWYgc2VsZi5pc19oaXN0b3JpYygpOgotICAgICAgICAgICAgZm9yIGt3YXJncywgcHJvYyBp
biBzZWxmLl9jYWxsX2hpc3Rvcnk6Ci0gICAgICAgICAgICAgICAgcmVzID0gc2VsZi5faG9va2V4
ZWMoc2VsZiwgW21ldGhvZF0sIGt3YXJncykKLSAgICAgICAgICAgICAgICBpZiByZXMgYW5kIHBy
b2MgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHByb2MocmVzWzBdKQotCi0KLWNs
YXNzIEhvb2tJbXBsKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBsdWdpbiwgcGx1
Z2luX25hbWUsIGZ1bmN0aW9uLCBob29rX2ltcGxfb3B0cyk6Ci0gICAgICAgIHNlbGYuZnVuY3Rp
b24gPSBmdW5jdGlvbgotICAgICAgICBzZWxmLmFyZ25hbWVzLCBzZWxmLmt3YXJnbmFtZXMgPSB2
YXJuYW1lcyhzZWxmLmZ1bmN0aW9uKQotICAgICAgICBzZWxmLnBsdWdpbiA9IHBsdWdpbgotICAg
ICAgICBzZWxmLm9wdHMgPSBob29rX2ltcGxfb3B0cwotICAgICAgICBzZWxmLnBsdWdpbl9uYW1l
ID0gcGx1Z2luX25hbWUKLSAgICAgICAgc2VsZi5fX2RpY3RfXy51cGRhdGUoaG9va19pbXBsX29w
dHMpCi0KLQotaWYgaGFzYXR0cihpbnNwZWN0LCAnZ2V0ZnVsbGFyZ3NwZWMnKToKLSAgICBkZWYg
X2dldGFyZ3NwZWMoZnVuYyk6Ci0gICAgICAgIHJldHVybiBpbnNwZWN0LmdldGZ1bGxhcmdzcGVj
KGZ1bmMpCi1lbHNlOgotICAgIGRlZiBfZ2V0YXJnc3BlYyhmdW5jKToKLSAgICAgICAgcmV0dXJu
IGluc3BlY3QuZ2V0YXJnc3BlYyhmdW5jKQotCi0KLWlmIGhhc2F0dHIoaW5zcGVjdCwgJ3NpZ25h
dHVyZScpOgotICAgIGRlZiBfZm9ybWF0ZGVmKGZ1bmMpOgotICAgICAgICByZXR1cm4gIiVzJXMi
ICUgKAotICAgICAgICAgICAgZnVuYy5fX25hbWVfXywKLSAgICAgICAgICAgIHN0cihpbnNwZWN0
LnNpZ25hdHVyZShmdW5jKSkKLSAgICAgICAgKQotZWxzZToKLSAgICBkZWYgX2Zvcm1hdGRlZihm
dW5jKToKLSAgICAgICAgcmV0dXJuICIlcyVzIiAlICgKLSAgICAgICAgICAgIGZ1bmMuX19uYW1l
X18sCi0gICAgICAgICAgICBpbnNwZWN0LmZvcm1hdGFyZ3NwZWMoKmluc3BlY3QuZ2V0YXJnc3Bl
YyhmdW5jKSkKLSAgICAgICAgKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvcGx1Z2d5L2NhbGxl
cnMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3BsdWdneS9wbHVnZ3kvY2FsbGVycy5weQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggM2ZmNjdiZWNmZmJjYjRjM2UwY2RjMmZlMWJkYjhiNjgzNGRiZDc2OS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9w
bHVnZ3kvY2FsbGVycy5weQorKysgL2Rldi9udWxsCkBAIC0xLDIwMSArMCwwIEBACi0nJycKLUNh
bGwgbG9vcCBtYWNoaW5lcnkKLScnJwotaW1wb3J0IHN5cwotaW1wb3J0IHdhcm5pbmdzCi0KLV9w
eTMgPSBzeXMudmVyc2lvbl9pbmZvID4gKDMsIDApCi0KLQotaWYgbm90IF9weTM6Ci0gICAgZXhl
YygiIiIKLWRlZiBfcmVyYWlzZShjbHMsIHZhbCwgdGIpOgotICAgIHJhaXNlIGNscywgdmFsLCB0
YgotIiIiKQotCi0KLWRlZiBfcmFpc2Vfd3JhcGZhaWwod3JhcF9jb250cm9sbGVyLCBtc2cpOgot
ICAgIGNvID0gd3JhcF9jb250cm9sbGVyLmdpX2NvZGUKLSAgICByYWlzZSBSdW50aW1lRXJyb3Io
IndyYXBfY29udHJvbGxlciBhdCAlciAlczolZCAlcyIgJQotICAgICAgICAgICAgICAgICAgICAg
ICAoY28uY29fbmFtZSwgY28uY29fZmlsZW5hbWUsIGNvLmNvX2ZpcnN0bGluZW5vLCBtc2cpKQot
Ci0KLWNsYXNzIEhvb2tDYWxsRXJyb3IoRXhjZXB0aW9uKToKLSAgICAiIiIgSG9vayB3YXMgY2Fs
bGVkIHdyb25nbHkuICIiIgotCi0KLWNsYXNzIF9SZXN1bHQob2JqZWN0KToKLSAgICBkZWYgX19p
bml0X18oc2VsZiwgcmVzdWx0LCBleGNpbmZvKToKLSAgICAgICAgc2VsZi5fcmVzdWx0ID0gcmVz
dWx0Ci0gICAgICAgIHNlbGYuX2V4Y2luZm8gPSBleGNpbmZvCi0KLSAgICBAcHJvcGVydHkKLSAg
ICBkZWYgZXhjaW5mbyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2V4Y2luZm8KLQotICAg
IEBwcm9wZXJ0eQotICAgIGRlZiByZXN1bHQoc2VsZik6Ci0gICAgICAgICIiIkdldCB0aGUgcmVz
dWx0KHMpIGZvciB0aGlzIGhvb2sgY2FsbCAoREVQUkVDQVRFRCBpbiBmYXZvciBvZiBgYGdldF9y
ZXN1bHQoKWBgKS4iIiIKLSAgICAgICAgbXNnID0gJ1VzZSBnZXRfcmVzdWx0KCkgd2hpY2ggZm9y
Y2VzIGNvcnJlY3QgZXhjZXB0aW9uIGhhbmRsaW5nJwotICAgICAgICB3YXJuaW5ncy53YXJuKERl
cHJlY2F0aW9uV2FybmluZyhtc2cpLCBzdGFja2xldmVsPTIpCi0gICAgICAgIHJldHVybiBzZWxm
Ll9yZXN1bHQKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBmcm9tX2NhbGwoY2xzLCBmdW5j
KToKLSAgICAgICAgX190cmFjZWJhY2toaWRlX18gPSBUcnVlCi0gICAgICAgIHJlc3VsdCA9IGV4
Y2luZm8gPSBOb25lCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJlc3VsdCA9IGZ1bmMoKQot
ICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbjoKLSAgICAgICAgICAgIGV4Y2luZm8gPSBzeXMu
ZXhjX2luZm8oKQotCi0gICAgICAgIHJldHVybiBjbHMocmVzdWx0LCBleGNpbmZvKQotCi0gICAg
ZGVmIGZvcmNlX3Jlc3VsdChzZWxmLCByZXN1bHQpOgotICAgICAgICAiIiJGb3JjZSB0aGUgcmVz
dWx0KHMpIHRvIGBgcmVzdWx0YGAuCi0KLSAgICAgICAgSWYgdGhlIGhvb2sgd2FzIG1hcmtlZCBh
cyBhIGBgZmlyc3RyZXN1bHRgYCBhIHNpbmdsZSB2YWx1ZSBzaG91bGQKLSAgICAgICAgYmUgc2V0
IG90aGVyd2lzZSBzZXQgYSAobW9kaWZpZWQpIGxpc3Qgb2YgcmVzdWx0cy4gQW55IGV4Y2VwdGlv
bnMKLSAgICAgICAgZm91bmQgZHVyaW5nIGludm9jYXRpb24gd2lsbCBiZSBkZWxldGVkLgotICAg
ICAgICAiIiIKLSAgICAgICAgc2VsZi5fcmVzdWx0ID0gcmVzdWx0Ci0gICAgICAgIHNlbGYuX2V4
Y2luZm8gPSBOb25lCi0KLSAgICBkZWYgZ2V0X3Jlc3VsdChzZWxmKToKLSAgICAgICAgIiIiR2V0
IHRoZSByZXN1bHQocykgZm9yIHRoaXMgaG9vayBjYWxsLgotCi0gICAgICAgIElmIHRoZSBob29r
IHdhcyBtYXJrZWQgYXMgYSBgYGZpcnN0cmVzdWx0YGAgb25seSBhIHNpbmdsZSB2YWx1ZQotICAg
ICAgICB3aWxsIGJlIHJldHVybmVkIG90aGVyd2lzZSBhIGxpc3Qgb2YgcmVzdWx0cy4KLSAgICAg
ICAgIiIiCi0gICAgICAgIF9fdHJhY2ViYWNraGlkZV9fID0gVHJ1ZQotICAgICAgICBpZiBzZWxm
Ll9leGNpbmZvIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fcmVzdWx0Ci0gICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICBleCA9IHNlbGYuX2V4Y2luZm8KLSAgICAgICAgICAgIGlm
IF9weTM6Ci0gICAgICAgICAgICAgICAgcmFpc2UgZXhbMV0ud2l0aF90cmFjZWJhY2soZXhbMl0p
Ci0gICAgICAgICAgICBfcmVyYWlzZSgqZXgpICAjIG5vcWEKLQotCi1kZWYgX3dyYXBwZWRfY2Fs
bCh3cmFwX2NvbnRyb2xsZXIsIGZ1bmMpOgotICAgICIiIiBXcmFwIGNhbGxpbmcgdG8gYSBmdW5j
dGlvbiB3aXRoIGEgZ2VuZXJhdG9yIHdoaWNoIG5lZWRzIHRvIHlpZWxkCi0gICAgZXhhY3RseSBv
bmNlLiAgVGhlIHlpZWxkIHBvaW50IHdpbGwgdHJpZ2dlciBjYWxsaW5nIHRoZSB3cmFwcGVkIGZ1
bmN0aW9uCi0gICAgYW5kIHJldHVybiBpdHMgYGBfUmVzdWx0YGAgdG8gdGhlIHlpZWxkIHBvaW50
LiAgVGhlIGdlbmVyYXRvciB0aGVuIG5lZWRzCi0gICAgdG8gZmluaXNoIChyYWlzZSBTdG9wSXRl
cmF0aW9uKSBpbiBvcmRlciBmb3IgdGhlIHdyYXBwZWQgY2FsbCB0byBjb21wbGV0ZS4KLSAgICAi
IiIKLSAgICB0cnk6Ci0gICAgICAgIG5leHQod3JhcF9jb250cm9sbGVyKSAgICMgZmlyc3QgeWll
bGQKLSAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKLSAgICAgICAgX3JhaXNlX3dyYXBmYWlsKHdy
YXBfY29udHJvbGxlciwgImRpZCBub3QgeWllbGQiKQotICAgIGNhbGxfb3V0Y29tZSA9IF9SZXN1
bHQuZnJvbV9jYWxsKGZ1bmMpCi0gICAgdHJ5OgotICAgICAgICB3cmFwX2NvbnRyb2xsZXIuc2Vu
ZChjYWxsX291dGNvbWUpCi0gICAgICAgIF9yYWlzZV93cmFwZmFpbCh3cmFwX2NvbnRyb2xsZXIs
ICJoYXMgc2Vjb25kIHlpZWxkIikKLSAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKLSAgICAgICAg
cGFzcwotICAgIHJldHVybiBjYWxsX291dGNvbWUuZ2V0X3Jlc3VsdCgpCi0KLQotY2xhc3MgX0xl
Z2FjeU11bHRpQ2FsbChvYmplY3QpOgotICAgICIiIiBleGVjdXRlIGEgY2FsbCBpbnRvIG11bHRp
cGxlIHB5dGhvbiBmdW5jdGlvbnMvbWV0aG9kcy4gIiIiCi0KLSAgICAjIFhYWCBub3RlIHRoYXQg
dGhlIF9fbXVsdGljYWxsX18gYXJndW1lbnQgaXMgc3VwcG9ydGVkIG9ubHkKLSAgICAjIGZvciBw
eXRlc3QgY29tcGF0aWJpbGl0eSByZWFzb25zLiAgSXQgd2FzIG5ldmVyIG9mZmljaWFsbHkKLSAg
ICAjIHN1cHBvcnRlZCB0aGVyZSBhbmQgaXMgZXhwbGljaXRlbHkgZGVwcmVjYXRlZCBzaW5jZSAy
LjgKLSAgICAjIHNvIHdlIGNhbiByZW1vdmUgaXQgc29vbiwgYWxsb3dpbmcgdG8gYXZvaWQgdGhl
IGJlbG93IHJlY3Vyc2lvbgotICAgICMgaW4gZXhlY3V0ZSgpIGFuZCBzaW1wbGlmeS9zcGVlZCB1
cCB0aGUgZXhlY3V0ZSBsb29wLgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvb2tfaW1wbHMs
IGt3YXJncywgZmlyc3RyZXN1bHQ9RmFsc2UpOgotICAgICAgICBzZWxmLmhvb2tfaW1wbHMgPSBo
b29rX2ltcGxzCi0gICAgICAgIHNlbGYuY2FsbGVyX2t3YXJncyA9IGt3YXJncyAgIyBjb21lIGZy
b20gX0hvb2tDYWxsZXIuX19jYWxsX18oKQotICAgICAgICBzZWxmLmNhbGxlcl9rd2FyZ3NbIl9f
bXVsdGljYWxsX18iXSA9IHNlbGYKLSAgICAgICAgc2VsZi5maXJzdHJlc3VsdCA9IGZpcnN0cmVz
dWx0Ci0KLSAgICBkZWYgZXhlY3V0ZShzZWxmKToKLSAgICAgICAgY2FsbGVyX2t3YXJncyA9IHNl
bGYuY2FsbGVyX2t3YXJncwotICAgICAgICBzZWxmLnJlc3VsdHMgPSByZXN1bHRzID0gW10KLSAg
ICAgICAgZmlyc3RyZXN1bHQgPSBzZWxmLmZpcnN0cmVzdWx0Ci0KLSAgICAgICAgd2hpbGUgc2Vs
Zi5ob29rX2ltcGxzOgotICAgICAgICAgICAgaG9va19pbXBsID0gc2VsZi5ob29rX2ltcGxzLnBv
cCgpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgYXJncyA9IFtjYWxsZXJfa3dh
cmdzW2FyZ25hbWVdIGZvciBhcmduYW1lIGluIGhvb2tfaW1wbC5hcmduYW1lc10KLSAgICAgICAg
ICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgICAgICBmb3IgYXJnbmFtZSBpbiBob29r
X2ltcGwuYXJnbmFtZXM6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGFyZ25hbWUgbm90IGluIGNh
bGxlcl9rd2FyZ3M6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBIb29rQ2FsbEVycm9y
KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJob29rIGNhbGwgbXVzdCBwcm92aWRlIGFy
Z3VtZW50ICVyIiAlIChhcmduYW1lLCkpCi0gICAgICAgICAgICBpZiBob29rX2ltcGwuaG9va3dy
YXBwZXI6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIF93cmFwcGVkX2NhbGwoaG9va19pbXBsLmZ1
bmN0aW9uKCphcmdzKSwgc2VsZi5leGVjdXRlKQotICAgICAgICAgICAgcmVzID0gaG9va19pbXBs
LmZ1bmN0aW9uKCphcmdzKQotICAgICAgICAgICAgaWYgcmVzIGlzIG5vdCBOb25lOgotICAgICAg
ICAgICAgICAgIGlmIGZpcnN0cmVzdWx0OgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVz
Ci0gICAgICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzKQotCi0gICAgICAgIGlmIG5vdCBm
aXJzdHJlc3VsdDoKLSAgICAgICAgICAgIHJldHVybiByZXN1bHRzCi0KLSAgICBkZWYgX19yZXBy
X18oc2VsZik6Ci0gICAgICAgIHN0YXR1cyA9ICIlZCBtZXRocyIgJSAobGVuKHNlbGYuaG9va19p
bXBscyksKQotICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICJyZXN1bHRzIik6Ci0gICAgICAgICAg
ICBzdGF0dXMgPSAoIiVkIHJlc3VsdHMsICIgJSBsZW4oc2VsZi5yZXN1bHRzKSkgKyBzdGF0dXMK
LSAgICAgICAgcmV0dXJuICI8X011bHRpQ2FsbCAlcywga3dhcmdzPSVyPiIgJSAoc3RhdHVzLCBz
ZWxmLmNhbGxlcl9rd2FyZ3MpCi0KLQotZGVmIF9sZWdhY3ltdWx0aWNhbGwoaG9va19pbXBscywg
Y2FsbGVyX2t3YXJncywgZmlyc3RyZXN1bHQ9RmFsc2UpOgotICAgIHJldHVybiBfTGVnYWN5TXVs
dGlDYWxsKAotICAgICAgICBob29rX2ltcGxzLCBjYWxsZXJfa3dhcmdzLCBmaXJzdHJlc3VsdD1m
aXJzdHJlc3VsdCkuZXhlY3V0ZSgpCi0KLQotZGVmIF9tdWx0aWNhbGwoaG9va19pbXBscywgY2Fs
bGVyX2t3YXJncywgZmlyc3RyZXN1bHQ9RmFsc2UpOgotICAgICIiIkV4ZWN1dGUgYSBjYWxsIGlu
dG8gbXVsdGlwbGUgcHl0aG9uIGZ1bmN0aW9ucy9tZXRob2RzIGFuZCByZXR1cm4gdGhlCi0gICAg
cmVzdWx0KHMpLgotCi0gICAgYGBjYWxsZXJfa3dhcmdzYGAgY29tZXMgZnJvbSBfSG9va0NhbGxl
ci5fX2NhbGxfXygpLgotICAgICIiIgotICAgIF9fdHJhY2ViYWNraGlkZV9fID0gVHJ1ZQotICAg
IHJlc3VsdHMgPSBbXQotICAgIGV4Y2luZm8gPSBOb25lCi0gICAgdHJ5OiAgIyBydW4gaW1wbCBh
bmQgd3JhcHBlciBzZXR1cCBmdW5jdGlvbnMgaW4gYSBsb29wCi0gICAgICAgIHRlYXJkb3ducyA9
IFtdCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZvciBob29rX2ltcGwgaW4gcmV2ZXJzZWQo
aG9va19pbXBscyk6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBh
cmdzID0gW2NhbGxlcl9rd2FyZ3NbYXJnbmFtZV0gZm9yIGFyZ25hbWUgaW4gaG9va19pbXBsLmFy
Z25hbWVzXQotICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgICAg
ICAgICAgZm9yIGFyZ25hbWUgaW4gaG9va19pbXBsLmFyZ25hbWVzOgotICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgYXJnbmFtZSBub3QgaW4gY2FsbGVyX2t3YXJnczoKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByYWlzZSBIb29rQ2FsbEVycm9yKAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiaG9vayBjYWxsIG11c3QgcHJvdmlkZSBhcmd1bWVudCAlciIgJSAoYXJnbmFt
ZSwpKQotCi0gICAgICAgICAgICAgICAgaWYgaG9va19pbXBsLmhvb2t3cmFwcGVyOgotICAgICAg
ICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBnZW4gPSBob29rX2lt
cGwuZnVuY3Rpb24oKmFyZ3MpCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXh0KGdlbikgICAj
IGZpcnN0IHlpZWxkCi0gICAgICAgICAgICAgICAgICAgICAgICB0ZWFyZG93bnMuYXBwZW5kKGdl
bikKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBfcmFpc2Vfd3JhcGZhaWwoZ2VuLCAiZGlkIG5vdCB5aWVsZCIpCi0gICAg
ICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcmVzID0gaG9va19pbXBsLmZ1
bmN0aW9uKCphcmdzKQotICAgICAgICAgICAgICAgICAgICBpZiByZXMgaXMgbm90IE5vbmU6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXMpCi0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiBmaXJzdHJlc3VsdDogICMgaGFsdCBmdXJ0aGVyIGltcGwgY2FsbHMKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBleGNlcHQgQmFzZUV4Y2Vw
dGlvbjoKLSAgICAgICAgICAgIGV4Y2luZm8gPSBzeXMuZXhjX2luZm8oKQotICAgIGZpbmFsbHk6
Ci0gICAgICAgIGlmIGZpcnN0cmVzdWx0OiAgIyBmaXJzdCByZXN1bHQgaG9va3MgcmV0dXJuIGEg
c2luZ2xlIHZhbHVlCi0gICAgICAgICAgICBvdXRjb21lID0gX1Jlc3VsdChyZXN1bHRzWzBdIGlm
IHJlc3VsdHMgZWxzZSBOb25lLCBleGNpbmZvKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAg
b3V0Y29tZSA9IF9SZXN1bHQocmVzdWx0cywgZXhjaW5mbykKLQotICAgICAgICAjIHJ1biBhbGwg
d3JhcHBlciBwb3N0LXlpZWxkIGJsb2NrcwotICAgICAgICBmb3IgZ2VuIGluIHJldmVyc2VkKHRl
YXJkb3ducyk6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZ2VuLnNlbmQob3V0
Y29tZSkKLSAgICAgICAgICAgICAgICBfcmFpc2Vfd3JhcGZhaWwoZ2VuLCAiaGFzIHNlY29uZCB5
aWVsZCIpCi0gICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKLSAgICAgICAgICAgICAg
ICBwYXNzCi0KLSAgICAgICAgcmV0dXJuIG91dGNvbWUuZ2V0X3Jlc3VsdCgpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3BsdWdneS9wbHVnZ3kvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9wbHVnZ3kv
dzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkMGQ1YTA5Mzdk
ODJlNmUyMzdhNTZmMWYzYmNmMjE0ZGNlYzJlMmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvcGx1Z2d5L3czYy1pbXBvcnQubG9nCisr
KyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5
IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRo
ZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVx
dWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3Jt
LXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3Rz
IGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZp
bGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZp
eGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1O
b25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvcGx1Z2d5
L19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvcGx1Z2d5L2NhbGxlcnMucHkKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcGx1Z2d5L3NjcmlwdHMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9zY3JpcHRz
L3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZmI5YzdkYTA2
YWFlZDBhMDg3MzlhYjQzMTY5MzY2NmM1ZmM5ZTI2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L3NjcmlwdHMvdzNjLWltcG9ydC5sb2cK
KysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rv
cnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkg
dGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCBy
ZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZv
cm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVz
dHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMg
ZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
LU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9zY3Jp
cHRzL3JlbGVhc2UucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L3NyYy9wbHVnZ3kvdzNjLWlt
cG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3BsdWdneS9zcmMvcGx1Z2d5L3czYy1pbXBvcnQubG9nCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZjM1NTkwZWE5Y2JjN2I5MGFjNmFmYWVmYzViNjBjMzg3
MjhhZTkyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcGx1Z2d5L3NyYy9wbHVnZ3kvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwy
MSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9t
IHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkg
aW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0
aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4g
cnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1w
b3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0
eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9zcmMvcGx1Z2d5L19faW5pdF9fLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9wbHVnZ3kvc3JjL3BsdWdneS9fdHJhY2luZy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L3NyYy9wbHVn
Z3kvY2FsbGVycy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L3NyYy9wbHVnZ3kvaG9va3MucHkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Bs
dWdneS9zcmMvcGx1Z2d5L21hbmFnZXIucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L3Rlc3Rp
bmcvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS90ZXN0aW5nL3czYy1pbXBvcnQubG9nCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OTZhMWJmYzI0ZjIyM2UwYzU4MTBkZTI2Mjll
NGRhMzI5NTgxYzRkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcGx1Z2d5L3Rlc3RpbmcvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAt
MSwyNiArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBm
cm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0
bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQg
Z2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRo
ZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJl
aW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9w
ZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS90ZXN0aW5nL2JlbmNobWFyay5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcGx1Z2d5L3Rlc3RpbmcvY29uZnRlc3QucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS90ZXN0aW5nL3Rl
c3RfZGVwcmVjYXRpb25zLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvdGVzdGluZy90ZXN0X2RldGFpbHMucHkK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3BsdWdneS90ZXN0aW5nL3Rlc3RfaGVscGVycy5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L3Rlc3Rp
bmcvdGVzdF9ob29rY2FsbGVyLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvdGVzdGluZy90ZXN0X2ludm9jYXRp
b25zLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9wbHVnZ3kvdGVzdGluZy90ZXN0X211bHRpY2FsbC5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1
Z2d5L3Rlc3RpbmcvdGVzdF9wbHVnaW5tYW5hZ2VyLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvdGVzdGluZy90
ZXN0X3RyYWNlci5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvdzNjLWltcG9ydC5sb2cgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3BsdWdneS93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZDMxMDUzYWU2NDllYTM4MGVhYThjM2IyODU3NTE5MDkyYzM4ZTU4MS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS93M2MtaW1wb3J0Lmxv
ZworKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVj
dG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlm
eSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxs
IHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0
Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10
ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhp
cyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVz
OgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L0NI
QU5HRUxPRy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9IT1dUT1JFTEVBU0UucnN0Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kv
TElDRU5TRQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcGx1Z2d5L01BTklGRVNULmluCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvUkVBRE1FLnJz
dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcGx1Z2d5L2FwcHZleW9yLnltbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L3B5cHJvamVjdC50b21s
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9wbHVnZ3kvc2V0dXAuY2ZnCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvc2V0dXAucHkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3Bs
dWdneS90b3guaW5pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5Ly5naXRhdHRyaWJ1dGVzIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eS8uZ2l0YXR0cmlidXRlcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMjQ2ODc5YzRkYWFjODJhYmU1NTQwOTBlNjBl
MTFmYzIyNTJmMzNiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS8uZ2l0YXR0cmlidXRlcwpA
QCAtMCwwICsxIEBACisqLmR1bXAgICBlb2w9bGYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvLmdpdGln
bm9yZSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHkvLmdpdGlnbm9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YmIwZDQ1N2Q0OThjNTkyOGUx
ZDA4MTdiZjI0YTQ1ZDdmMDQ4MjIzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS8uZ2l0aWdu
b3JlCkBAIC0wLDAgKzEsMTIgQEAKKworLmNhY2hlLworLnRveC8KK19fcHljYWNoZV9fLworCisq
LnB5YworKi5weW8KKworKi5lZ2ctaW5mbworLmVnZ3MvCisKK2Rpc3QvKgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weS8uaGdpZ25vcmUgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5Ly5oZ2lnbm9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNDk3NmRh
NWQxNTMzNWM3OWQ0YjdiYTY0Zjk0MTk5Zjk1MmMxNjNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weS8uaGdpZ25vcmUKQEAgLTAsMCArMSwyOSBAQAorCisjIEF1dG9tYXRpY2FsbHkgZ2VuZXJh
dGVkIGJ5IGBoZ2ltcG9ydHN2bmAKK3N5bnRheDpnbG9iCisuc3ZuCisuaGdzdm4KKworIyBUaGVz
ZSBsaW5lcyBhcmUgc3VnZ2VzdGVkIGFjY29yZGluZyB0byB0aGUgc3ZuOmlnbm9yZSBwcm9wZXJ0
eQorIyBGZWVsIGZyZWUgdG8gZW5hYmxlIHRoZW0gYnkgdW5jb21tZW50aW5nIHRoZW0KK3N5bnRh
eDpnbG9iCisqLnB5YworKi5weW8KKyouc3dwCisqLmh0bWwKKyouY2xhc3MKKyoub3JpZworKn4K
KworZG9jL19idWlsZAorYnVpbGQvCitkaXN0LworKi5lZ2ctaW5mbworaXNzdWUvCitlbnYvCisz
cmRwYXJ0eS8KKy50b3gKK2xpYi8KK2Jpbi8KK2luY2x1ZGUvCitzcmMvCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5Ly5oZ3RhZ3MgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5Ly5oZ3RhZ3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWQ0ODA5NWJmNjQ3
N2MyNjE3MTAzYzVmYTRiYTEyNWEzN2FmOWVmOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkv
LmhndGFncwpAQCAtMCwwICsxLDY4IEBACis1MmM2ZDllNzg3NzdhNWEzNGU4MTMxMjM5OTdkZmM2
MTRhMWE0NzY3IDEuMC4wYjMKKzFjN2FhYThjNjFmM2IwOTQ1OTIxYTlhY2M3YmViMTg0MjAxYWVk
NGIgMS4wLjBiNAorMWM3YWFhOGM2MWYzYjA5NDU5MjFhOWFjYzdiZWIxODQyMDFhZWQ0YiAxLjAu
MGI0CiswMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIDEuMC4wYjQKKzAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAgMS4wLjBiNAorOGNkNmViOTFl
YmEzMTNiMDEyZDZlNTY4ZjM3ZDg0NGRjMDc1MWYyZSAxLjAuMGI0Cis4Y2Q2ZWI5MWViYTMxM2Iw
MTJkNmU1NjhmMzdkODQ0ZGMwNzUxZjJlIDEuMC4wYjQKKzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAgMS4wLjBiNAorMmNjMDUwN2YxMTdmZmU3MjFkZmY3ZWUwMjY2NDhj
ZmNlMDBlYzkyZiAxLjAuMGI2Cis4NmYxZTFiNmU0OWJmNTg4MmE4MDlmMTFlZGQxZGJiMDgxNjJj
ZGFkIDEuMC4wYjgKKzg2ZjFlMWI2ZTQ5YmY1ODgyYTgwOWYxMWVkZDFkYmIwODE2MmNkYWQgMS4w
LjBiOAorYzYzZjM1YzI2NmNiYjI2ZGFkNmI4N2I1ZTExNWQ2NTY4NWFkZjQ0OCAxLjAuMGI4Citj
NjNmMzVjMjY2Y2JiMjZkYWQ2Yjg3YjVlMTE1ZDY1Njg1YWRmNDQ4IDEuMC4wYjgKKzBlYWEwZmRm
MmJhMDE2M2NmNTM0ZGMyZWZmNGJhMmU1ZmM2NmMyNjEgMS4wLjBiOAorZTJhNjA2NTNjYjQ5MGFl
ZWQ4MWJiYmQ4M2MwNzBiOTk0MDFjMjExYyAxLjAuMGI5Cis1ZWEwY2RmNzg1NGMzZDQyNzhkMzZl
ZGE5NGEyYjY4NDgzYTBlMjExIDEuMC4wCis1ZWEwY2RmNzg1NGMzZDQyNzhkMzZlZGE5NGEyYjY4
NDgzYTBlMjExIDEuMC4wCis3YWNkZTM2MGQ5NGI2YTI2OTBjZTNkMDNmZjM5MzAxZGE4NGMwYTJi
IDEuMC4wCis2YmQyMjE5ODFhYzk5MTAzMDAyYzFjYjk0ZmVkZTQwMGQyM2E5NmExIDEuMC4xCis0
ODE2ZThiODA2MDJhM2ZkM2EwYTEyMDMzM2FkODVmYmU3ZDhiYWI0IDEuMC4yCis2MGM0NGJkYmYw
OTMyODVkYzY5ZDU0NjJkNGRiYjRhY2FkMzI1Y2E2IDEuMS4wCiszMTkxODdmY2RhNjY3MTRjNWVi
MTM1MzQ5MmJhYmVlYzNkM2M4MjZmIDEuMS4xCis0ZmM1MjEyZjc2MjZhNTZiOWViNjQzN2I1YzY3
M2Y1NmRkN2ViOTQyIDEuMi4wCitjMTQzYThjODg0MGExYzY4NTcwODkwYzhhYzYxNjViYmY5MmZk
M2M2IDEuMi4xCitlYWZkM2MyNTZlODczMmRmYjBhNGQ0OWQwNTFiNWI0MzM5ODU4OTI2IDEuMy4w
CitkNWVhY2YzOTBhZjc0NTUzMjI3MTIyYjg1ZTIwMzQ1ZDQ3YjJmOWU2IDEuMy4xCitkNWVhY2Yz
OTBhZjc0NTUzMjI3MTIyYjg1ZTIwMzQ1ZDQ3YjJmOWU2IDEuMy4xCis4YjhlN2MyNWExM2NmODYz
ZjAxYjJkZDk1NTk3ODI4NWFlOWRhZjZhIDEuMy4xCiszYmZmNDRiMTg4YTdlYzFhZjMyOGQ5Nzdi
OWQzOWI2NzU3YmIzOGRmIDEuMy4yCitjNTlkM2ZhODY4MWE1YjU5NjZiODM3NWIxNmZjY2Q2NGEz
YThkYmViIDEuMy4zCis3OWVmNjM3NzcwNTE4NGM1NTYzM2Q0NTY4MzJlZWEzMThmZWRjZjYxIDEu
My40Cis3OWVmNjM3NzcwNTE4NGM1NTYzM2Q0NTY4MzJlZWEzMThmZWRjZjYxIDEuMy40Cis5MGZm
ZmQzNTM3M2U5ZjEyNWFmMjMzZjc4YjE5NDE2ZjA5MzhkODQxIDEuMy40Cis1MzQ2YWI0MWIwNTlj
OTVhNDhjYmUxZThhN2JhZTk2Y2U2ZTBkYTI3IDEuNC4wCisxZjMxMjVjYmE3OTc2NTM4OTUyYmUy
NjhmMTA3YzFkMGMzNmM1Y2U4IDEuNC4xCiswNGFiMjJkYjRmZjczN2NmMzFlOTFkNzVhMGY1ZDcw
NzdmMzI0MTY3IDEuNC4yCis5OTUwYmY5ZDY4NGE5ODRkNTExNzk1MDEzNDIxYzg5YzVjZjg4YmVm
IDEuNC4zCitkOTk1MWUzYmRiYzc2NWU3MzgzNWFlMTMwMTJmNmEwNzRkMTNkOGJmIDEuNC40Citi
ODI3ZGQxNTZhMzY3NTNlMzJjN2YzZjE1Y2U4MmQ2ZmU5ZTM1NmM4IDEuNC42CitmMTU3MjZmOWU1
YTY3Y2M2MjIxYzQ5OWFmZmE0ODQwZTlkNTkxNzYzIDEuNC43CithYmZhYmQwN2ExZDMyOGYxM2M3
MzBlOGE1MGQ4MGQyZTQ3MGFmZDNiIDEuNC45Cis3ZjM3ZWUwYWZmOWJlNGI4MzlkNjc1OWNmZWUz
MzZmNjBlODM5M2E0IDEuNC4xMAorZmU0NTkzMjYzZWZhMTBlYTdiYTAxNGRiNmUzMzc5ZTBiODIz
NjhhMiAxLjQuMTEKK2YwN2FmMjVhMjY3ODZlNDgyNWI1MTcwZTE3YWQ2OTMyNDVjYjM0MjYgMS40
LjEyCitkMzczMGQ4NGJhN2VkYTkyZmQzNDY5YTNmNjNmZDZkOGNiMjJjOTc1IDEuNC4xMworMTJj
MWFlOGU3YzUzNDU3MjFlOWVjOWY4ZTI3YjFlMzZjMDdmNzRkYyAxLjQuMTQKKzEyYzFhZThlN2M1
MzQ1NzIxZTllYzlmOGUyN2IxZTM2YzA3Zjc0ZGMgMS40LjE0CiswMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwIDEuNC4xNAorMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMCAxLjQuMTQKKzE0OTdlMmVmZDBmOGM3M2EwZTNkNTI5ZGViZjBjNDg5ZTRj
ZDZjYWIgMS40LjE0CitlMDY1MDE0YzFjZThhZDExMGEzODFlOWJhYWFhNWQ2NDdiYTdhYzZiIDEu
NC4xNQorZTllNWIzOGY1M2RjMzViMzVhYTFmOWVlOWE5YmU5YmJkMmQyYzNiMSAxLjQuMTYKK2M2
MDM1MDM5NDVmNTJiNzg1MjJkOTZhNDIzNjA1Y2JjOTUzMjM2ZDMgMS40LjE3CitjNTkyMDExMDVh
Mjk4MDFjYzg1OGViOTE2MGI3YTE5NzkxYjkxYTM1IDEuNC4xOAorMjg0Y2MxNzJlMjk0ZDQ4ZWRj
ODQwMDEyZTE0NTFjMzJjMzk2M2Q5MiAxLjQuMTkKK2EzZTA2MjZhYTBjNWFlY2YyNzEzNjdkYzc3
ZTQ3NmFiMjE2ZWEzYzggMS40LjIwCis1ZTQ4MDE2YzRhM2FmOGU3MzU4YTEyNjdkMzNkMDIxZTcx
NzY1YmVkIDEuNC4yMQorMDFhZTJjZmNjNjFjNGZjYjNhYTUwMzEzNDlhZGI1YjQ2N2MzMTAxOCAx
LjQuMjMKKzVmZmQ5ODJmNGRmZjYwYjU4OGYzMDljZDliZGM2MTAzNjU0NzI4MmEgMS40LjI0Citk
YzlmZmJjYWYxZjdkNzJlOTZiZTNmNjhjMTFkZWViYjdlNzE5M2M1IDEuNC4yNQorNmRlMWE0NGJm
NzVkZTdhZjRmY2FlOTQ3YzIzNWU5MDcyYmJkYmI5YSAxLjQuMjYKKzdkNjUwYmEyNjU3ODkwYTIy
NTNjOGM0YTgzZjE3MGZlYmViZDkwZmEgMS40LjI3Cis3ZDY1MGJhMjY1Nzg5MGEyMjUzYzhjNGE4
M2YxNzBmZWJlYmQ5MGZhIDEuNC4yNworMTgxMDAwM2RlYzYzZGQxYjUwNmEyMzg0OTg2MWZmZmE1
YmMzYmExMyAxLjQuMjcKK2JhMDg3MDZmMDhkZGVhMWI3N2E0MjZmMDBkZmUyYmRjMjQ0MzQ1ZTgg
MS40LjI4Cis0ZTgwNTRhZGE2M2YzMzI3YmNmNzU5YWU3Y2QzNmM3Yzg2NTJiYzliIDEuNC4yOQor
MzY2YWIzNDY2MTBjNmRlOGFhYTc2MTdlMjQwMTE3OTRiNDAyMzZjNiAxLjQuMzAKKzY1NzM4MGU0
MzlmOWI3ZTA0OTE4Y2IxNjJjYjJlNDYzODgyNDRiNDIgMS40LjMxCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5Ly50cmF2aXMueW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS8udHJhdmlzLnltbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MTdjNTlk
MTRiNzA3MzliZGMwNDIyNTNiNTNjMTMwZDk3NzI5MWZlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weS8udHJhdmlzLnltbApAQCAtMCwwICsxLDI3IEBACitzdWRvOiBmYWxzZQorbGFuZ3VhZ2U6
IHB5dGhvbgorcHl0aG9uOgorLSAnMi43JworLSAnMy40JworLSAnMy41JworLSAnMy42JworLSAn
cHlweS01LjQnCitlbnY6CistIERFUFM9InB5dGVzdH49Mi45LjAiCistIERFUFM9InB5dGVzdH49
My4wLjAiCisjLSBERVBTPSJweXRlc3R+PTMuMS4wIgorCittYXRyaXg6CisKKyAgaW5jbHVkZToK
KyAgLSBweXRob246ICcyLjcnCisgICAgIyB1c2luZyBhIGRpZmZlcmVudCBvcHRpb24gZHVlIHRv
IHB5dGVzdC1hZGRvcHRzIHB5dGVzdGVyIGlzc3VlcworICAgIGVudjogUFlURVNUX1hBRERPUFRT
PSItbiAzIC0tcnVuc2xvd3Rlc3RzIiBERVBTPSJweXRlc3R+PTMuMC4wIHB5dGVzdC14ZGlzdCIK
KyAgYWxsb3dfZmFpbHVyZXM6CisgIC0gcHl0aG9uOiAncHlweS01LjQnCitpbnN0YWxsOgorLSBw
aXAgaW5zdGFsbCAtVSBzZXR1cHRvb2xzIHNldHVwdG9vbHNfc2NtCistIHBpcCBpbnN0YWxsICRE
RVBTCistIHBpcCBpbnN0YWxsIC1VIC4gLS1mb3JjZS1yZWluc3RhbGwKK3NjcmlwdDoKKy0gcHku
dGVzdCAtLWxzb2YgJFBZVEVTVF9YQURET1BUUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9DSEFOR0VM
T0cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5L0NIQU5HRUxPRwppbmRleCA3ZTdiMDFiMGI5ZTNjMmIwMmQzNDBlYzMyMGUy
ZmQxYzg2OGNkN2NhLi5jMTE1ZTA3MzM2MTcyMWVjM2QwYTAwNzVmZDA4NjgxZWY2MzI2NzgxIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5L0NIQU5HRUxPRworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L0NIQU5HRUxPRwpAQCAt
MSwzICsxLDQyIEBACisyMDIyLTAyLTExICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxl
LmNvbT4KKworICAgICAgICBOZWVkIGEgc2hvcnQgZGVzY3JpcHRpb24gKE9PUFMhKS4KKyAgICAg
ICAgTmVlZCB0aGUgYnVnIFVSTCAoT09QUyEpLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogLmdpdGF0dHJpYnV0ZXM6IEFkZGVkLgorICAgICAgICAq
IC5naXRpZ25vcmU6IEFkZGVkLgorICAgICAgICAqIC5oZ2lnbm9yZTogQWRkZWQuCisgICAgICAg
ICogLmhndGFnczogQWRkZWQuCisgICAgICAgICogLnRyYXZpcy55bWw6IEFkZGVkLgorICAgICAg
ICAqIGJlbmNoL3czYy1pbXBvcnQubG9nOiBSZW1vdmVkLgorICAgICAgICAqIGRvYy9fdGVtcGxh
dGVzL3czYy1pbXBvcnQubG9nOiBSZW1vdmVkLgorICAgICAgICAqIGRvYy9hbm5vdW5jZS93M2Mt
aW1wb3J0LmxvZzogUmVtb3ZlZC4KKyAgICAgICAgKiBkb2MvZXhhbXBsZS93M2MtaW1wb3J0Lmxv
ZzogUmVtb3ZlZC4KKyAgICAgICAgKiBkb2MvaW1nL3czYy1pbXBvcnQubG9nOiBSZW1vdmVkLgor
ICAgICAgICAqIGRvYy93M2MtaW1wb3J0LmxvZzogUmVtb3ZlZC4KKyAgICAgICAgKiBweS9fY29k
ZS93M2MtaW1wb3J0LmxvZzogUmVtb3ZlZC4KKyAgICAgICAgKiBweS9faW8vdzNjLWltcG9ydC5s
b2c6IFJlbW92ZWQuCisgICAgICAgICogcHkvX2xvZy93M2MtaW1wb3J0LmxvZzogUmVtb3ZlZC4K
KyAgICAgICAgKiBweS9fcGF0aC93M2MtaW1wb3J0LmxvZzogUmVtb3ZlZC4KKyAgICAgICAgKiBw
eS9fcHJvY2Vzcy93M2MtaW1wb3J0LmxvZzogUmVtb3ZlZC4KKyAgICAgICAgKiBweS9fdmVuZG9y
ZWRfcGFja2FnZXMvX19pbml0X18ucHk6CisgICAgICAgICogcHkvX3ZlbmRvcmVkX3BhY2thZ2Vz
L2FwaXBrZy0xLjQuZGlzdC1pbmZvL3czYy1pbXBvcnQubG9nOiBSZW1vdmVkLgorICAgICAgICAq
IHB5L192ZW5kb3JlZF9wYWNrYWdlcy9pbmljb25maWctMS4wLjAuZGlzdC1pbmZvL3czYy1pbXBv
cnQubG9nOiBSZW1vdmVkLgorICAgICAgICAqIHB5L192ZW5kb3JlZF9wYWNrYWdlcy93M2MtaW1w
b3J0LmxvZzogUmVtb3ZlZC4KKyAgICAgICAgKiBweS93M2MtaW1wb3J0LmxvZzogUmVtb3ZlZC4K
KyAgICAgICAgKiB0YXNrcy93M2MtaW1wb3J0LmxvZzogUmVtb3ZlZC4KKyAgICAgICAgKiB0ZXN0
aW5nL2NvZGUvdzNjLWltcG9ydC5sb2c6IFJlbW92ZWQuCisgICAgICAgICogdGVzdGluZy9pb18v
dzNjLWltcG9ydC5sb2c6IFJlbW92ZWQuCisgICAgICAgICogdGVzdGluZy9sb2cvX19pbml0X18u
cHk6CisgICAgICAgICogdGVzdGluZy9sb2cvdzNjLWltcG9ydC5sb2c6IFJlbW92ZWQuCisgICAg
ICAgICogdGVzdGluZy9wYXRoL3czYy1pbXBvcnQubG9nOiBSZW1vdmVkLgorICAgICAgICAqIHRl
c3RpbmcvcHJvY2Vzcy93M2MtaW1wb3J0LmxvZzogUmVtb3ZlZC4KKyAgICAgICAgKiB0ZXN0aW5n
L3Jvb3QvdzNjLWltcG9ydC5sb2c6IFJlbW92ZWQuCisgICAgICAgICogdGVzdGluZy93M2MtaW1w
b3J0LmxvZzogUmVtb3ZlZC4KKyAgICAgICAgKiB3M2MtaW1wb3J0LmxvZzogUmVtb3ZlZC4KKwog
MS41LjIKID09PT09CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvYmVuY2gvdzNjLWltcG9ydC5sb2cg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5L2JlbmNoL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBmOGZhZGYwMmY0N2M2ZTJjMWUzMTQ2MWVkNWY4YzgzYTc4ZGZlZTJjLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvYmVuY2gvdzNjLWlt
cG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhp
cyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5P
VCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRl
IGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93
ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9y
dC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVt
b3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
L2JlbmNoL2xvY2FscGF0aC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9kb2MvX3RlbXBsYXRlcy93
M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvZG9jL190ZW1wbGF0ZXMvdzNjLWltcG9ydC5sb2cKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1OTVmYjVlMjQ5Mzc2NjU0NDVkM2JmOWUyMDEy
M2EwMWYwN2E1MWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weS9kb2MvX3RlbXBsYXRlcy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBA
IC0xLDE3ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVk
IGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJl
Y3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQ
VCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQot
VGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8g
cmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVBy
b3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvZG9jL190ZW1wbGF0ZXMvbGF5b3V0Lmh0
bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvZG9jL2Fubm91bmNlL3czYy1pbXBvcnQubG9nIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weS9kb2MvYW5ub3VuY2UvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGUzMjIwOWM2YTI5ZTY0NWUwMzJlMGQ0YjFmMjdlODI2NjZjZjk4ZjguLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9kb2MvYW5ub3Vu
Y2UvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1UaGUgdGVz
dHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9y
eS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVh
ZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0
aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3Jp
cHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2Rp
Znkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJl
cXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5n
IHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5L2RvYy9hbm5vdW5jZS9yZWxlYXNlLTAuOS4wLnR4dAotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvZG9jL2Fu
bm91bmNlL3JlbGVhc2UtMC45LjIudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9kb2MvYW5ub3VuY2UvcmVsZWFzZS0x
LjAuMC50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5L2RvYy9hbm5vdW5jZS9yZWxlYXNlLTEuMC4xLnR4dAotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHkvZG9jL2Fubm91bmNlL3JlbGVhc2UtMS4wLjIudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9kb2MvYW5ub3VuY2Uv
cmVsZWFzZS0xLjEuMC50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L2RvYy9hbm5vdW5jZS9yZWxlYXNlLTEuMS4xLnR4
dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHkvZG9jL2Fubm91bmNlL3JlbGVhc2UtMS4yLjAudHh0Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9kb2Mv
YW5ub3VuY2UvcmVsZWFzZS0xLjIuMS50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L2RvYy9hbm5vdW5jZS9yZWxlYXNl
LTEuMy4wLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHkvZG9jL2Fubm91bmNlL3JlbGVhc2UtMS4zLjEudHh0Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weS9kb2MvYW5ub3VuY2UvcmVsZWFzZS0xLjMuMi50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L2RvYy9hbm5vdW5j
ZS9yZWxlYXNlLTEuMy4zLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvZG9jL2Fubm91bmNlL3JlbGVhc2UtMS4zLjQu
dHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weS9kb2MvYW5ub3VuY2UvcmVsZWFzZS0xLjQuMC50eHQKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L2Rv
Yy9hbm5vdW5jZS9yZWxlYXNlLTEuNC4xLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvZG9jL2Fubm91bmNlL3JlbGVh
c2VzLnR4dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9kb2MvZXhhbXBsZS93M2MtaW1wb3J0LmxvZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHkvZG9jL2V4YW1wbGUvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGY3MWRjZjJjMjBjM2M5NmJkNGU5ZjhhYjgyNzQ2Yjc0NWQ1MDc0MGMuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9kb2MvZXhh
bXBsZS93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVRoZSB0
ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0
b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0
ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9n
aXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1Nj
cmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1v
ZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVz
OgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHkvZG9jL2V4YW1wbGUvZ2VuaHRtbC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvZG9jL2V4YW1wbGUv
Z2VuaHRtbGNzcy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvZG9jL2V4YW1wbGUvZ2VueG1sLnB5CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5L2RvYy9pbWcvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L2RvYy9pbWcvdzNjLWlt
cG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlODlhNjZlODBkNmVlM2E1
NWRiYjVkZGM0MGE4ZWQzOTBjMDFkZDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weS9kb2MvaW1nL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251
bGwKQEAgLTEsMTcgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1w
b3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3Rz
IGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0
aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dw
dAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktp
dCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9u
ZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9kb2MvaW1nL3B5bGliLnBuZwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weS9kb2MvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L2RvYy93M2Mt
aW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjNhZjA1NWJmODRhZTcx
NDgyYTBiYmQwNDQyMThlYjQ5NzUyOWQ4OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L2RvYy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxs
CkBAIC0xLDMxICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9y
dGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBk
aXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhl
IFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQK
LQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQg
dG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUK
LVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvZG9jL01ha2VmaWxlCi0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eS9kb2MvY2hhbmdlbG9nLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvZG9jL2NvZGUudHh0Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9kb2Mv
Y29uZi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHkvZG9jL2Rvd25sb2FkLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L2RvYy9mYXEudHh0
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weS9kb2MvaW5kZXgudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9kb2MvaW5zdGFsbC50eHQKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5L2RvYy9pby50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L2RvYy9saW5rcy5pbmMKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L2RvYy9sb2cu
dHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weS9kb2MvbWlzYy50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L2RvYy9wYXRoLnR4dAotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHkvZG9jL3N0eWxlLmNzcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvZG9jL3htbC50eHQKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHkvcHkvX2NvZGUvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L19jb2RlL3czYy1pbXBvcnQu
bG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YmExYWQyY2VhNmJlODhmNWVkYTIx
Y2FkZjAxMGI1NDU0M2I3ODExLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHkvcHkvX2NvZGUvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApA
QCAtMSwyMyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRl
ZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGly
ZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBX
UFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0K
LVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRv
IHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Q
cm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L19jb2RlL19faW5pdF9fLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weS9weS9fY29kZS9fYXNzZXJ0aW9ubmV3LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9fY29kZS9fYXNz
ZXJ0aW9ub2xkLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9fY29kZS9fcHkydHJhY2ViYWNrLnB5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eS9weS9fY29kZS9hc3NlcnRpb24ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L19jb2RlL2NvZGUucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5L3B5L19jb2RlL3NvdXJjZS5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9faW8vdzNjLWlt
cG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5L3B5L19pby93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMGU0NDM5NzM2MDk4YTVlNzVlOTU5MzkxZDBmM2Y1MjhkN2UzNTg0Mi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5
L19pby93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVRoZSB0
ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0
b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0
ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9n
aXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1Nj
cmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1v
ZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVz
OgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHkvcHkvX2lvL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9faW8vY2FwdHVyZS5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHkvcHkvX2lvL3NhZmVyZXByLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9faW8vdGVybWluYWx3
cml0ZXIucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX2xvZy93M2MtaW1wb3J0LmxvZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHkvcHkvX2xvZy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZjcyYjI0MmVkZDdmMzMyMzZmNzI4Yzc2ZDMwZWJhYmZhZjNjZDM4YS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L19sb2cvdzNjLWlt
cG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhp
cyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5P
VCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRl
IGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93
ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9y
dC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVt
b3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
L3B5L19sb2cvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L19sb2cvbG9nLnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9w
eS9fbG9nL3dhcm5pbmcucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX3BhdGgvdzNjLWltcG9y
dC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5L3B5L19wYXRoL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA4NGVjMmY5MjNmYWRhOWZhMGIyZmI1OGRlMzE5M2NlYjNhZDI5ZTk1Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkv
X3BhdGgvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1UaGUg
dGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3Np
dG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5z
dGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8v
Z2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9T
Y3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBt
b2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVz
IHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWly
aW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxl
czoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5L3B5L19wYXRoL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9fcGF0aC9jYWNo
ZXV0aWwucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5L3B5L19wYXRoL2NvbW1vbi5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX3BhdGgv
bG9jYWwucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5L3B5L19wYXRoL3N2bnVybC5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX3BhdGgv
c3Zud2MucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX3Byb2Nlc3MvdzNjLWltcG9ydC5sb2cg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5L3B5L19wcm9jZXNzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA5YTU0NTY3MGYyZTk4ZmQwOThmMDIzYWU5NjFlMjdlMDQ2ZjhjNDFiLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX3By
b2Nlc3MvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1UaGUg
dGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3Np
dG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5z
dGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8v
Z2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9T
Y3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBt
b2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVz
IHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWly
aW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxl
czoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5L3B5L19wcm9jZXNzL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9fcHJvY2Vz
cy9jbWRleGVjLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9fcHJvY2Vzcy9mb3JrZWRmdW5jLnB5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eS9weS9fcHJvY2Vzcy9raWxscHJvYy5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9fdmVuZG9y
ZWRfcGFja2FnZXMvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L192ZW5kb3JlZF9wYWNrYWdlcy9f
X2luaXRfXy5weQppbmRleCBhNjgzNGI4Mjg1YTU2YmVmMGUxNTQzZmQ5MDFjN2U2ZjJmOGJjMjAy
Li5lNjlkZTI5YmIyZDFkNjQzNGI4YjI5YWU3NzVhZDhjMmU0OGM1MzkxIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5L3B5L192ZW5kb3JlZF9wYWNrYWdlcy9fX2luaXRfXy5weQorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5
L192ZW5kb3JlZF9wYWNrYWdlcy9fX2luaXRfXy5weQpAQCAtMSArMCwwIEBACi0jIFRoaXMgZmls
ZSBpcyByZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRpcmVjdG9yeSBmb3IgbW9k
dWxlcy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5
L192ZW5kb3JlZF9wYWNrYWdlcy9hcGlwa2ctMS40LmRpc3QtaW5mby93M2MtaW1wb3J0LmxvZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHkvcHkvX3ZlbmRvcmVkX3BhY2thZ2VzL2FwaXBrZy0xLjQuZGlzdC1pbmZvL3czYy1p
bXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzc2ZWZjNzgxYzllOTA2
YTEwZjJmZWNmNTFlNDJmMzFkZmY5MDgzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX3ZlbmRvcmVkX3BhY2thZ2VzL2FwaXBrZy0xLjQu
ZGlzdC1pbmZvL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAot
VGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJl
cG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4K
LUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRw
czovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9v
bHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBO
T1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVy
dGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJl
cXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2Yg
ZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weS9weS9fdmVuZG9yZWRfcGFja2FnZXMvYXBpcGtnLTEuNC5kaXN0LWlu
Zm8vREVTQ1JJUFRJT04ucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9fdmVuZG9yZWRfcGFja2FnZXMvYXBpcGtn
LTEuNC5kaXN0LWluZm8vSU5TVEFMTEVSCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9fdmVuZG9yZWRfcGFja2FnZXMv
YXBpcGtnLTEuNC5kaXN0LWluZm8vTUVUQURBVEEKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L192ZW5kb3JlZF9wYWNr
YWdlcy9hcGlwa2ctMS40LmRpc3QtaW5mby9SRUNPUkQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L192ZW5kb3JlZF9w
YWNrYWdlcy9hcGlwa2ctMS40LmRpc3QtaW5mby9XSEVFTAotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX3ZlbmRvcmVk
X3BhY2thZ2VzL2FwaXBrZy0xLjQuZGlzdC1pbmZvL21ldGFkYXRhLmpzb24KLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5
L192ZW5kb3JlZF9wYWNrYWdlcy9hcGlwa2ctMS40LmRpc3QtaW5mby90b3BfbGV2ZWwudHh0CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5L3B5L192ZW5kb3JlZF9wYWNrYWdlcy9pbmljb25maWctMS4wLjAu
ZGlzdC1pbmZvL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9fdmVuZG9yZWRfcGFja2FnZXMv
aW5pY29uZmlnLTEuMC4wLmRpc3QtaW5mby93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMTZkZmVhZGRlMGM2MjJjZjVhZmM0M2Q1MzFkY2QxNzU4NDQzM2JkMC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5
L192ZW5kb3JlZF9wYWNrYWdlcy9pbmljb25maWctMS4wLjAuZGlzdC1pbmZvL3czYy1pbXBvcnQu
bG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGly
ZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9k
aWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1
bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBs
YXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNj
LXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0
aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9y
IHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9f
dmVuZG9yZWRfcGFja2FnZXMvaW5pY29uZmlnLTEuMC4wLmRpc3QtaW5mby9ERVNDUklQVElPTi5y
c3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5L3B5L192ZW5kb3JlZF9wYWNrYWdlcy9pbmljb25maWctMS4wLjAuZGlzdC1p
bmZvL0lOU1RBTExFUgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX3ZlbmRvcmVkX3BhY2thZ2VzL2luaWNvbmZpZy0x
LjAuMC5kaXN0LWluZm8vTUVUQURBVEEKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L192ZW5kb3JlZF9wYWNrYWdlcy9p
bmljb25maWctMS4wLjAuZGlzdC1pbmZvL1JFQ09SRAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX3ZlbmRvcmVkX3Bh
Y2thZ2VzL2luaWNvbmZpZy0xLjAuMC5kaXN0LWluZm8vV0hFRUwKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L192ZW5k
b3JlZF9wYWNrYWdlcy9pbmljb25maWctMS4wLjAuZGlzdC1pbmZvL21ldGFkYXRhLmpzb24KLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5L3B5L192ZW5kb3JlZF9wYWNrYWdlcy9pbmljb25maWctMS4wLjAuZGlzdC1pbmZvL3Rv
cF9sZXZlbC50eHQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX3ZlbmRvcmVkX3BhY2thZ2VzL3cz
Yy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9fdmVuZG9yZWRfcGFja2FnZXMvdzNjLWltcG9ydC5s
b2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyNzcyYTc5ZDAzMTQzMzQwNDBkMDdl
ZDI0NWE2YWMyMWVhODhiZWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weS9weS9fdmVuZG9yZWRfcGFja2FnZXMvdzNjLWltcG9ydC5sb2cKKysr
IC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkg
d2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhl
c2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1
ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0t
dGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMg
aW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmls
ZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5v
bmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L192ZW5kb3Jl
ZF9wYWNrYWdlcy9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX3ZlbmRvcmVkX3BhY2thZ2VzL2Fw
aXBrZy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHkvcHkvX3ZlbmRvcmVkX3BhY2thZ2VzL2luaWNvbmZpZy5weQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weS9weS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvdzNjLWltcG9y
dC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0MmEzMGNkMDBkZmMxN2I2NGY3
Yjc1ZmI0MjE1OGZiOGFmOGU0NTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weS9weS93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0x
LDIzICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZy
b20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3Rs
eSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBn
aXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhl
biBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVp
bXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3Bl
cnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5
L19fbWV0YWluZm8ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L19idWlsdGluLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9fZXJy
b3IucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5L3B5L19zdGQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L194bWxnZW4ucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5L3B5L3Rlc3QucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvdGFza3MvdzNjLWltcG9ydC5sb2cg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5L3Rhc2tzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA4ZThkMjQyZjU4NDcyZTlmZDBhMDhmMjY1NzFiYjM0Nzk2MGRjYTVlLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvdGFza3MvdzNjLWlt
cG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhp
cyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5P
VCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRl
IGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93
ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9y
dC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVt
b3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
L3Rhc2tzL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90YXNrcy92ZW5kb3JpbmcucHkKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHkvdGVzdGluZy9jb2RlL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5n
L2NvZGUvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyYzM4
NDkxOWFiMWJkOWY3NzU1NzAxMzA5NjJkNzNhODg5ODExNDYuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL2NvZGUvdzNjLWltcG9y
dC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBk
aXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBt
b2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEg
cHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWIt
cGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13
M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3Zl
IHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3Rl
c3RpbmcvY29kZS90ZXN0X2Fzc2VydGlvbi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvdGVzdGluZy9jb2RlL3Rlc3Rf
Y29kZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHkvdGVzdGluZy9jb2RlL3Rlc3RfZXhjaW5mby5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkv
dGVzdGluZy9jb2RlL3Rlc3Rfc291cmNlLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3Rlc3Rpbmcv
aW9fL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL2lvXy93M2MtaW1wb3J0LmxvZwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODdjMzZjMWY4NWRhMmJiNDk0OGIwMzYzZmRl
NzQ0ZGRkZDFlOTcxZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5L3Rlc3RpbmcvaW9fL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAg
LTEsMjAgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQg
ZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVj
dGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BU
IGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1U
aGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byBy
ZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJv
cGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL2lvXy9fX2luaXRfXy5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHkvdGVzdGluZy9pb18vdGVzdF9jYXB0dXJlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL2lv
Xy90ZXN0X3NhZmVyZXByLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL2lvXy90ZXN0X3Rlcm1pbmFsd3Jp
dGVyLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3Rlc3RpbmcvbG9nL19faW5pdF9fLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weS90ZXN0aW5nL2xvZy9fX2luaXRfXy5weQppbmRleCBhNjgzNGI4Mjg1YTU2YmVmMGUxNTQz
ZmQ5MDFjN2U2ZjJmOGJjMjAyLi5lNjlkZTI5YmIyZDFkNjQzNGI4YjI5YWU3NzVhZDhjMmU0OGM1
MzkxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3Rlc3RpbmcvbG9nL19faW5pdF9fLnB5CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHkvdGVzdGluZy9sb2cvX19pbml0X18ucHkKQEAgLTEgKzAsMCBAQAotIyBUaGlzIGZpbGUg
aXMgcmVxdWlyZWQgZm9yIFB5dGhvbiB0byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVs
ZXMuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0
aW5nL2xvZy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvdGVzdGluZy9sb2cvdzNjLWltcG9ydC5s
b2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjMGNhNTI4MzM4YzFlOTlhNWU3ZWIz
ZDI1YmUxMmFhNDlmNWYzZGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL2xvZy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxs
CkBAIC0xLDE5ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9y
dGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBk
aXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhl
IFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQK
LQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQg
dG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUK
LVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvdGVzdGluZy9sb2cvX19pbml0X18u
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5L3Rlc3RpbmcvbG9nL3Rlc3RfbG9nLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL2xv
Zy90ZXN0X3dhcm5pbmcucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvdGVzdGluZy9wYXRoL3czYy1p
bXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL3BhdGgvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2NmQ3YjE3ODAyZTI5MzEyNmZhMjQ0OWMzZWFiNjg1OGRm
OWM0YjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weS90ZXN0aW5nL3BhdGgvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyNSAr
MCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRo
ZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4g
V2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHVi
OgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVu
IHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0
Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2
YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
TGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3Rlc3RpbmcvcGF0aC9jb21tb24ucHkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
L3Rlc3RpbmcvcGF0aC9jb25mdGVzdC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvdGVzdGluZy9wYXRoL3JlcG90ZXN0
LmR1bXAKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5L3Rlc3RpbmcvcGF0aC9zdm50ZXN0YmFzZS5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvdGVz
dGluZy9wYXRoL3Rlc3RfY2FjaGV1dGlsLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL3BhdGgvdGVzdF9s
b2NhbC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHkvdGVzdGluZy9wYXRoL3Rlc3Rfc3ZuYXV0aC5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkv
dGVzdGluZy9wYXRoL3Rlc3Rfc3ZudXJsLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL3BhdGgvdGVzdF9z
dm53Yy5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL3Byb2Nlc3MvdzNjLWltcG9ydC5s
b2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5L3Rlc3RpbmcvcHJvY2Vzcy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNjMxZjg5ZTRhY2ZlZTM2YWUyM2EwZGI2YzM2MzgxYzUzYjYyNjIy
Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
L3Rlc3RpbmcvcHJvY2Vzcy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIwICsw
LDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhl
IFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBX
ZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6
Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4g
dGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQK
LQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZh
bHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1M
aXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvdGVzdGluZy9wcm9jZXNzL19faW5pdF9fLnB5Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weS90ZXN0aW5nL3Byb2Nlc3MvdGVzdF9jbWRleGVjLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL3By
b2Nlc3MvdGVzdF9mb3JrZWRmdW5jLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL3Byb2Nlc3MvdGVzdF9r
aWxscHJvYy5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL3Jvb3QvdzNjLWltcG9ydC5s
b2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5L3Rlc3Rpbmcvcm9vdC93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNmMzMmU1NTQ1MGJiYTIzM2UxNmUwYmRmMjgzNTdiYjhmZTE4YzQzOS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3Rl
c3Rpbmcvcm9vdC93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAK
LVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyBy
ZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQu
Ci1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0
cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRv
b2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8g
Tk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3Bl
cnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyBy
ZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9m
IGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHkvdGVzdGluZy9yb290L19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0
aW5nL3Jvb3QvdGVzdF9idWlsdGluLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL3Jvb3QvdGVzdF9lcnJv
ci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHkvdGVzdGluZy9yb290L3Rlc3RfcHlfaW1wb3J0cy5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkv
dGVzdGluZy9yb290L3Rlc3Rfc3RkLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL3Jvb3QvdGVzdF94bWxn
ZW4ucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvdGVzdGluZy93M2MtaW1wb3J0LmxvZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHkvdGVzdGluZy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NWFlYjk0NGY3NDJjNDA2YzUwYzljYWEzZTdkMzIwODI0Y2I5ZjAxMi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3Rlc3RpbmcvdzNjLWltcG9y
dC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBk
aXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBt
b2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEg
cHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWIt
cGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13
M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3Zl
IHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3Rl
c3RpbmcvY29uZnRlc3QucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvdzNjLWltcG9ydC5sb2cgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5L3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MTU3
ZDI5YWI3ZjIzZTg4M2NmNzViYTlhZTIyMzllZGU4MTZhODg1Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvdzNjLWltcG9ydC5sb2cKKysrIC9k
ZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2Vy
ZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2Ug
dGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0
IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVz
dHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4g
V2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4K
LQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6
Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUK
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L0FVVEhPUlMKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5L0NIQU5HRUxPRwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvTElDRU5TRQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvTUFOSUZFU1QuaW4KLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5L1JFQURNRS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L2FwcHZleW9yLnltbAotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvY29uZnRl
c3QucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5L3NldHVwLmNmZwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvc2V0dXAucHkKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3Rv
eC5pbmkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0LWFzeW5jaW8vcHl0ZXN0X2FzeW5jaW8uZWdn
LWluZm8vdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC1hc3luY2lvL3B5dGVzdF9hc3luY2lv
LmVnZy1pbmZvL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0
ZDA0NGE4ZTZkOGIxMDMwOTVjZmE4OTFkN2JkMzVmY2U0NjI1YzBlLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0LWFzeW5jaW8vcHl0ZXN0
X2FzeW5jaW8uZWdnLWluZm8vdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMiAr
MCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRo
ZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4g
V2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHVi
OgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVu
IHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0
Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2
YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
TGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC1hc3luY2lvL3B5dGVzdF9hc3luY2lvLmVnZy1p
bmZvL1BLRy1JTkZPCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QtYXN5bmNpby9weXRlc3RfYXN5bmNpby5lZ2ctaW5m
by9TT1VSQ0VTLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0LWFzeW5jaW8vcHl0ZXN0X2FzeW5jaW8uZWdnLWlu
Zm8vZGVwZW5kZW5jeV9saW5rcy50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC1hc3luY2lvL3B5dGVzdF9hc3lu
Y2lvLmVnZy1pbmZvL2VudHJ5X3BvaW50cy50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC1hc3luY2lvL3B5dGVz
dF9hc3luY2lvLmVnZy1pbmZvL3JlcXVpcmVzLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0LWFzeW5jaW8vcHl0
ZXN0X2FzeW5jaW8uZWdnLWluZm8vdG9wX2xldmVsLnR4dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QtYXN5bmNpby9weXRlc3RfYXN5bmNpby93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0LWFz
eW5jaW8vcHl0ZXN0X2FzeW5jaW8vdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGVhMGYxOWY2YTFkZGYwNmQ5OGI5YjQyY2YzNzA3ODJkZTczNzQ0ZTkuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QtYXN5
bmNpby9weXRlc3RfYXN5bmNpby93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE4
ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20g
dGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBp
biBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRo
dWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBy
dW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBv
cnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5
IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0LWFzeW5jaW8vcHl0ZXN0X2FzeW5jaW8vX19p
bml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC1hc3luY2lvL3B5dGVzdF9hc3luY2lvL3BsdWdpbi5weQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QtYXN5bmNpby93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0LWFzeW5jaW8vdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDNkYTAyYjEwZjI0YWY1YzdlZTQwM2Q3OGJkNWE5M2FhNzZjMzc4MjMuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QtYXN5bmNpby93M2Mt
aW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0
aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8g
Tk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVh
dGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29t
L3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1w
b3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciBy
ZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5n
IHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9y
IHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0LWFzeW5jaW8vTElDRU5TRQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0LWFzeW5jaW8vUEtHLUlORk8KLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC1hc3luY2lvL1JFQURNRS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC1hc3luY2lvL3NldHVw
LmNmZwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0LWFzeW5jaW8vc2V0dXAucHkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0Ly5jb3ZlcmFnZXJjIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvLmNvdmVyYWdlcmMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDlh
YjM3NjQzMzc3MTg1ZTllNmVjZDFiMDgwZGRkMmJmYzBjMjZlZQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0Ly5jb3ZlcmFnZXJjCkBAIC0wLDAgKzEsMzAgQEAKK1tydW5dCitpbmNsdWRl
ID0KKyAgc3JjLyoKKyAgdGVzdGluZy8qCisgICovbGliL3B5dGhvbiovc2l0ZS1wYWNrYWdlcy9f
cHl0ZXN0LyoKKyAgKi9saWIvcHl0aG9uKi9zaXRlLXBhY2thZ2VzL3B5dGVzdC5weQorICAqL3B5
cHkqL3NpdGUtcGFja2FnZXMvX3B5dGVzdC8qCisgICovcHlweSovc2l0ZS1wYWNrYWdlcy9weXRl
c3QucHkKKyAgKlxMaWJcc2l0ZS1wYWNrYWdlc1xfcHl0ZXN0XCoKKyAgKlxMaWJcc2l0ZS1wYWNr
YWdlc1xweXRlc3QucHkKK3BhcmFsbGVsID0gMQorYnJhbmNoID0gMQorCitbcGF0aHNdCitzb3Vy
Y2UgPSBzcmMvCisgICovbGliL3B5dGhvbiovc2l0ZS1wYWNrYWdlcy8KKyAgKi9weXB5Ki9zaXRl
LXBhY2thZ2VzLworICAqXExpYlxzaXRlLXBhY2thZ2VzXAorCitbcmVwb3J0XQorc2tpcF9jb3Zl
cmVkID0gVHJ1ZQorc2hvd19taXNzaW5nID0gVHJ1ZQorZXhjbHVkZV9saW5lcyA9CisgICAgXCNc
cypwcmFnbWE6IG5vIGNvdmVyCisgICAgXlxzKnJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3JcYgor
ICAgIF5ccypyZXR1cm4gTm90SW1wbGVtZW50ZWRcYgorICAgIF5ccyphc3NlcnQgRmFsc2UoLHwk
KQorCisgICAgXlxzKmlmIFRZUEVfQ0hFQ0tJTkc6CisgICAgXlxzKkBvdmVybG9hZCggfCQpCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC8uZ2l0YXR0cmlidXRlcyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0Ly5naXRh
dHRyaWJ1dGVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVjMWM2NmRjMWU5MTU0MGVlOTkxMzQzYmU5YWJhNTE4YTk5
MWI1YmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC8uZ2l0YXR0cmlidXRlcwpAQCAt
MCwwICsxIEBACisqLmJhdCAgdGV4dCBlb2w9Y3JsZgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
LmdpdGJsYW1laWdub3JlIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvLmdpdGJsYW1laWdub3JlCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjBjYjI5OGIwMjRkM2E1YTYxMWNlNTgxNDYwZTc4OGE2YTYzZjY0NzAKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC8uZ2l0YmxhbWVpZ25vcmUKQEAgLTAsMCArMSwyOCBAQAorIyBMaXN0
IG9mIHJldmlzaW9ucyB0aGF0IGNhbiBiZSBpZ25vcmVkIHdpdGggZ2l0LWJsYW1lKDEpLgorIwor
IyBTZWUgYGJsYW1lLmlnbm9yZVJldnNGaWxlYCBpbiBnaXQtY29uZmlnKDEpIHRvIGVuYWJsZSBp
dCBieSBkZWZhdWx0LCBvcgorIyB1c2UgaXQgd2l0aCBgLS1pZ25vcmUtcmV2cy1maWxlYCBtYW51
YWxseSB3aXRoIGdpdC1ibGFtZS4KKyMKKyMgVG8gImluc3RhbGwiIGl0OgorIworIyAgIGdpdCBj
b25maWcgLS1sb2NhbCBibGFtZS5pZ25vcmVSZXZzRmlsZSAuZ2l0YmxhbWVpZ25vcmUKKworIyBy
dW4gYmxhY2sKKzcwM2U0YjExYmE3NjE3MWVjY2QzZjEzZTcyM2M0N2I4MTBkZWQ3ZWYKKyMgc3dp
dGNoZWQgdG8gc3JjIGxheW91dAorZWFhODgyZjNkNTM0MDk1NmJlYjE3NmFhMTc1M2UwN2UzZjNm
MjE5MAorIyBwcmUtY29tbWl0IHJ1biBweXVwZ3JhZGUgLS1hbGwtZmlsZXMKK2E5MWZlMWZlZGRi
ZGVkNTM1YTQzMjJhYjg1NDQyOWUzYTM5NjFmYjQKKyMgbW92ZSBub2RlIGJhc2UgY2xhc3NlcyBm
cm9tIG1haW4gdG8gbm9kZXMKK2FmYzYwN2NmZDgxNDU4ZDRlNGYzYjFmM2NmOGNjOTMxYjkzMzkw
N2UKKyMgWz9dIHNwbGl0IG1vc3QgZml4dHVyZSByZWxhdGVkIGNvZGUgaW50byBvd24gcGx1Z2lu
Cis4YzQ5NTYxNDcwNzA4NzYxZjczMjE1MDRmNWU4MzQzODExYmU4N2FjCisjIHJ1biBweXVwZ3Jh
ZGUKKzlhYWNiNDYzNWU4MWVkZDZlY2YyODFkNGY2YzBjZmM4ZTk0YWIzMDEKKyMgcnVuIGJsYWNr
ZW4tZG9jcworNWY5NWRjZTk1NjAyOTIxYTcwYmZiYzdkOGRlMmY3NzEyYzVlNDUwNQorIyByYW4g
cHl1cGdyYWRlLWRvY3MgYWdhaW4KKzc1ZDBiODk5YmJiNTZkNjg0OWU5ZDY5ZDgzYTk0MjZlZDNm
NDNmOGIKKworIyBtb3ZlIGFyZ3VtZW50IHBhcnNlciB0byBvd24gZmlsZQorYzlkZjc3Y2JkNmEz
NjVkY2I3M2MzOTYxOGU0ODQyNzExODE3ZTg3MQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvLmdp
dGh1Yi9GVU5ESU5HLnltbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0Ly5naXRodWIvRlVORElORy55bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNWYyZDFjZjA5YzgzMjhjNzRhNjNiYWRmNTNjMDcxNzkwNzA2NDkxOQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0Ly5naXRodWIvRlVORElORy55bWwKQEAgLTAsMCArMSw1IEBA
CisjIGluZm86CisjICogaHR0cHM6Ly9oZWxwLmdpdGh1Yi5jb20vZW4vYXJ0aWNsZXMvZGlzcGxh
eWluZy1hLXNwb25zb3ItYnV0dG9uLWluLXlvdXItcmVwb3NpdG9yeQorIyAqIGh0dHBzOi8vdGlk
ZWxpZnQuY29tL3N1YnNjcmlwdGlvbi9ob3ctdG8tY29ubmVjdC10aWRlbGlmdC13aXRoLWdpdGh1
YgordGlkZWxpZnQ6IHB5cGkvcHl0ZXN0CitvcGVuX2NvbGxlY3RpdmU6IHB5dGVzdApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvLmdpdGh1Yi9JU1NVRV9URU1QTEFURS5tZCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
Ly5naXRodWIvSVNTVUVfVEVNUExBVEUubWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGZiY2JiMTZmYzM1MWRlN2I3Y2U3MmMyOGMwZTdiMzM2ZWFkYzRjOWUuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvLmdpdGh1Yi9JU1NV
RV9URU1QTEFURS5tZAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotVGhhbmtzIGZvciBz
dWJtaXR0aW5nIGFuIGlzc3VlIQotCi1IZXJlJ3MgYSBxdWljayBjaGVja2xpc3QgaW4gd2hhdCB0
byBpbmNsdWRlOgotCi0tIFsgXSBJbmNsdWRlIGEgZGV0YWlsZWQgZGVzY3JpcHRpb24gb2YgdGhl
IGJ1ZyBvciBzdWdnZXN0aW9uCi0tIFsgXSBgcGlwIGxpc3RgIG9mIHRoZSB2aXJ0dWFsIGVudmly
b25tZW50IHlvdSBhcmUgdXNpbmcKLS0gWyBdIHB5dGVzdCBhbmQgb3BlcmF0aW5nIHN5c3RlbSB2
ZXJzaW9ucwotLSBbIF0gTWluaW1hbCBleGFtcGxlIGlmIHBvc3NpYmxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC8uZ2l0aHViL0lTU1VFX1RFTVBMQVRFL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvLmdpdGh1Yi9JU1NVRV9URU1QTEFURS93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYTRhMWY2YTVmODg0ZWY3YjU3NmY1OTE4M2Y1NjcyMjJjZDFmYzlj
OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC8uZ2l0aHViL0lTU1VFX1RFTVBMQVRFL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwK
QEAgLTEsMTkgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0
ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRp
cmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUg
V1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAot
Ci1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0
byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQot
UHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvLmdpdGh1Yi9JU1NVRV9URU1Q
TEFURS8xX2J1Z19yZXBvcnQubWQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC8uZ2l0aHViL0lTU1VFX1RFTVBMQVRF
LzJfZmVhdHVyZV9yZXF1ZXN0Lm1kCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvLmdpdGh1Yi9JU1NVRV9URU1QTEFU
RS9jb25maWcueW1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC8uZ2l0aHViL1BVTExfUkVRVUVT
VF9URU1QTEFURS5tZCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0Ly5naXRodWIvUFVMTF9SRVFVRVNUX1RFTVBMQVRF
Lm1kCmluZGV4IDIzYTlmOGM1NjgzMjU1MDdiMGU3YTVhNTI5M2I5M2QwZjE5MjdiMzUuLjk0MDhm
Y2VhZmUzNmI1NWE3MjhkYjQ2MWFhNDkxOWZhMzcwMTI0ODcgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0Ly5naXRodWIvUFVMTF9SRVFVRVNUX1RFTVBMQVRFLm1kCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0Ly5n
aXRodWIvUFVMTF9SRVFVRVNUX1RFTVBMQVRFLm1kCkBAIC0xLDE0ICsxLDI2IEBACis8IS0tCiBU
aGFua3MgZm9yIHN1Ym1pdHRpbmcgYSBQUiwgeW91ciBjb250cmlidXRpb24gaXMgcmVhbGx5IGFw
cHJlY2lhdGVkIQogCi1IZXJlJ3MgYSBxdWljayBjaGVja2xpc3QgdGhhdCBzaG91bGQgYmUgcHJl
c2VudCBpbiBQUnMgKHlvdSBjYW4gZGVsZXRlIHRoaXMgdGV4dCBmcm9tIHRoZSBmaW5hbCBkZXNj
cmlwdGlvbiwgdGhpcyBpcwotanVzdCBhIGd1aWRlbGluZSk6CitIZXJlIGlzIGEgcXVpY2sgY2hl
Y2tsaXN0IHRoYXQgc2hvdWxkIGJlIHByZXNlbnQgaW4gUFJzLgogCi0tIFsgXSBDcmVhdGUgYSBu
ZXcgY2hhbmdlbG9nIGZpbGUgaW4gdGhlIGBjaGFuZ2Vsb2dgIGZvbGRlciwgd2l0aCBhIG5hbWUg
bGlrZSBgPElTU1VFIE5VTUJFUj4uPFRZUEU+LnJzdGAuIFNlZSBbY2hhbmdlbG9nL1JFQURNRS5y
c3RdKC9jaGFuZ2Vsb2cvUkVBRE1FLnJzdCkgZm9yIGRldGFpbHMuCi0tIFsgXSBUYXJnZXQgdGhl
IGBtYXN0ZXJgIGJyYW5jaCBmb3IgYnVnIGZpeGVzLCBkb2N1bWVudGF0aW9uIHVwZGF0ZXMgYW5k
IHRyaXZpYWwgY2hhbmdlcy4KLS0gWyBdIFRhcmdldCB0aGUgYGZlYXR1cmVzYCBicmFuY2ggZm9y
IG5ldyBmZWF0dXJlcyBhbmQgcmVtb3ZhbHMvZGVwcmVjYXRpb25zLgogLSBbIF0gSW5jbHVkZSBk
b2N1bWVudGF0aW9uIHdoZW4gYWRkaW5nIG5ldyBmZWF0dXJlcy4KIC0gWyBdIEluY2x1ZGUgbmV3
IHRlc3RzIG9yIHVwZGF0ZSBleGlzdGluZyB0ZXN0cyB3aGVuIGFwcGxpY2FibGUuCistIFtYXSBB
bGxvdyBtYWludGFpbmVycyB0byBwdXNoIGFuZCBzcXVhc2ggd2hlbiBtZXJnaW5nIG15IGNvbW1p
dHMuIFBsZWFzZSB1bmNoZWNrIHRoaXMgaWYgeW91IHByZWZlciB0byBzcXVhc2ggdGhlIGNvbW1p
dHMgeW91cnNlbGYuCiAKLVVubGVzcyB5b3VyIGNoYW5nZSBpcyB0cml2aWFsIG9yIGEgc21hbGwg
ZG9jdW1lbnRhdGlvbiBmaXggKGUuZy4sICBhIHR5cG8gb3IgcmV3b3JkIG9mIGEgc21hbGwgc2Vj
dGlvbikgcGxlYXNlOgorSWYgdGhpcyBjaGFuZ2UgZml4ZXMgYW4gaXNzdWUsIHBsZWFzZToKIAot
LSBbIF0gQWRkIHlvdXJzZWxmIHRvIGBBVVRIT1JTYCBpbiBhbHBoYWJldGljYWwgb3JkZXI7Cist
IFsgXSBBZGQgdGV4dCBsaWtlIGBgY2xvc2VzICNYWVpXYGAgdG8gdGhlIFBSIGRlc2NyaXB0aW9u
IGFuZC9vciBjb21taXRzICh3aGVyZSBgYFhZWldgYCBpcyB0aGUgaXNzdWUgbnVtYmVyKS4gU2Vl
IHRoZSBbZ2l0aHViIGRvY3NdKGh0dHBzOi8vaGVscC5naXRodWIuY29tL2VuL2dpdGh1Yi9tYW5h
Z2luZy15b3VyLXdvcmstb24tZ2l0aHViL2xpbmtpbmctYS1wdWxsLXJlcXVlc3QtdG8tYW4taXNz
dWUjbGlua2luZy1hLXB1bGwtcmVxdWVzdC10by1hbi1pc3N1ZS11c2luZy1hLWtleXdvcmQpIGZv
ciBtb3JlIGluZm9ybWF0aW9uLgorCitVbmxlc3MgeW91ciBjaGFuZ2UgaXMgdHJpdmlhbCBvciBh
IHNtYWxsIGRvY3VtZW50YXRpb24gZml4IChlLmcuLCBhIHR5cG8gb3IgcmV3b3JkIG9mIGEgc21h
bGwgc2VjdGlvbikgcGxlYXNlOgorCistIFsgXSBDcmVhdGUgYSBuZXcgY2hhbmdlbG9nIGZpbGUg
aW4gdGhlIGBjaGFuZ2Vsb2dgIGZvbGRlciwgd2l0aCBhIG5hbWUgbGlrZSBgPElTU1VFIE5VTUJF
Uj4uPFRZUEU+LnJzdGAuIFNlZSBbY2hhbmdlbG9nL1JFQURNRS5yc3RdKGh0dHBzOi8vZ2l0aHVi
LmNvbS9weXRlc3QtZGV2L3B5dGVzdC9ibG9iL21hc3Rlci9jaGFuZ2Vsb2cvUkVBRE1FLnJzdCkg
Zm9yIGRldGFpbHMuCisKKyAgV3JpdGUgc2VudGVuY2VzIGluIHRoZSAqKnBhc3Qgb3IgcHJlc2Vu
dCB0ZW5zZSoqLCBleGFtcGxlczoKKworICAqICpJbXByb3ZlZCB2ZXJib3NlIGRpZmYgb3V0cHV0
IHdpdGggc2VxdWVuY2VzLioKKyAgKiAqVGVybWluYWwgc3VtbWFyeSBzdGF0aXN0aWNzIG5vdyB1
c2UgbXVsdGlwbGUgY29sb3JzLioKKworICBBbHNvIG1ha2Ugc3VyZSB0byBlbmQgdGhlIHNlbnRl
bmNlIHdpdGggYSBgLmAuCisKKy0gWyBdIEFkZCB5b3Vyc2VsZiB0byBgQVVUSE9SU2AgaW4gYWxw
aGFiZXRpY2FsIG9yZGVyLgorLS0+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC8uZ2l0aHViL2Nv
bmZpZy55bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC8uZ2l0aHViL2NvbmZpZy55bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODZh
OGE5N2U3ODVkMmEwODc5NzEzNmQ2NDE2YzMxMzI4ZDI0Y2ZmZAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0Ly5naXRodWIvY29uZmlnLnltbApAQCAtMCwwICsxLDIgQEAKK3J0ZDoKKyAg
cHJvamVjdDogcHl0ZXN0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC8uZ2l0aHViL2xhYmVscy50
b21sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvLmdpdGh1Yi9sYWJlbHMudG9tbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZWYxZTkx
M2FmODRjYzdhOWZmZjQ0ZjhlNDJkZDQwN2VkZmRlODIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvLmdpdGh1Yi9sYWJlbHMudG9tbApAQCAtMCwwICsxLDE0OSBAQAorWyJvczogY3ln
d2luIl0KK2NvbG9yID0gIjAwNmI3NSIKK2Rlc2NyaXB0aW9uID0gImN5Z3dpbiBwbGF0Zm9ybS1z
cGVjaWZpYyBwcm9ibGVtIgorbmFtZSA9ICJvczogY3lnd2luIgorCitbIm9zOiBsaW51eCJdCitj
b2xvciA9ICIxZDc2ZGIiCitkZXNjcmlwdGlvbiA9ICJsaW51eCBwbGF0Zm9ybS1zcGVjaWZpYyBw
cm9ibGVtIgorbmFtZSA9ICJvczogbGludXgiCisKK1sib3M6IG1hYyJdCitjb2xvciA9ICJiZmRh
ZGMiCitkZXNjcmlwdGlvbiA9ICJtYWMgcGxhdGZvcm0tc3BlY2lmaWMgcHJvYmxlbSIKK25hbWUg
PSAib3M6IG1hYyIKKworWyJvczogd2luZG93cyJdCitjb2xvciA9ICJmYmNhMDQiCitkZXNjcmlw
dGlvbiA9ICJ3aW5kb3dzIHBsYXRmb3JtLXNwZWNpZmljIHByb2JsZW0iCituYW1lID0gIm9zOiB3
aW5kb3dzIgorCitbInBsdWdpbjogYXJnY29tcGxldGUiXQorY29sb3IgPSAiZDRjNWY5IgorZGVz
Y3JpcHRpb24gPSAicmVsYXRlZCB0byB0aGUgYXJnY29tcGxldGUgYnVpbHRpbiBwbHVnaW4iCitu
YW1lID0gInBsdWdpbjogYXJnY29tcGxldGUiCisKK1sicGx1Z2luOiBjYWNoZSJdCitjb2xvciA9
ICJjN2RlZjgiCitkZXNjcmlwdGlvbiA9ICJyZWxhdGVkIHRvIHRoZSBjYWNoZSBidWlsdGluIHBs
dWdpbiIKK25hbWUgPSAicGx1Z2luOiBjYWNoZSIKKworWyJwbHVnaW46IGNhcHR1cmUiXQorY29s
b3IgPSAiMWQ3NmRiIgorZGVzY3JpcHRpb24gPSAicmVsYXRlZCB0byB0aGUgY2FwdHVyZSBidWls
dGluIHBsdWdpbiIKK25hbWUgPSAicGx1Z2luOiBjYXB0dXJlIgorCitbInBsdWdpbjogZGVidWdn
aW5nIl0KK2NvbG9yID0gImRkNTJhOCIKK2Rlc2NyaXB0aW9uID0gInJlbGF0ZWQgdG8gdGhlIGRl
YnVnZ2luZyBidWlsdGluIHBsdWdpbiIKK25hbWUgPSAicGx1Z2luOiBkZWJ1Z2dpbmciCisKK1si
cGx1Z2luOiBkb2N0ZXN0cyJdCitjb2xvciA9ICJmYWQ4YzciCitkZXNjcmlwdGlvbiA9ICJyZWxh
dGVkIHRvIHRoZSBkb2N0ZXN0cyBidWlsdGluIHBsdWdpbiIKK25hbWUgPSAicGx1Z2luOiBkb2N0
ZXN0cyIKKworWyJwbHVnaW46IGp1bml0eG1sIl0KK2NvbG9yID0gImM1ZGVmNSIKK2Rlc2NyaXB0
aW9uID0gInJlbGF0ZWQgdG8gdGhlIGp1bml0eG1sIGJ1aWx0aW4gcGx1Z2luIgorbmFtZSA9ICJw
bHVnaW46IGp1bml0eG1sIgorCitbInBsdWdpbjogbG9nZ2luZyJdCitjb2xvciA9ICJmZjU0MzIi
CitkZXNjcmlwdGlvbiA9ICJyZWxhdGVkIHRvIHRoZSBsb2dnaW5nIGJ1aWx0aW4gcGx1Z2luIgor
bmFtZSA9ICJwbHVnaW46IGxvZ2dpbmciCisKK1sicGx1Z2luOiBtb25rZXlwYXRjaCJdCitjb2xv
ciA9ICIwZThhMTYiCitkZXNjcmlwdGlvbiA9ICJyZWxhdGVkIHRvIHRoZSBtb25rZXlwYXRjaCBi
dWlsdGluIHBsdWdpbiIKK25hbWUgPSAicGx1Z2luOiBtb25rZXlwYXRjaCIKKworWyJwbHVnaW46
IG5vc2UiXQorY29sb3IgPSAiYmZkYWRjIgorZGVzY3JpcHRpb24gPSAicmVsYXRlZCB0byB0aGUg
bm9zZSBpbnRlZ3JhdGlvbiBidWlsdGluIHBsdWdpbiIKK25hbWUgPSAicGx1Z2luOiBub3NlIgor
CitbInBsdWdpbjogcGFzdGViaW4iXQorY29sb3IgPSAiYmZkNGYyIgorZGVzY3JpcHRpb24gPSAi
cmVsYXRlZCB0byB0aGUgcGFzdGViaW4gYnVpbHRpbiBwbHVnaW4iCituYW1lID0gInBsdWdpbjog
cGFzdGViaW4iCisKK1sicGx1Z2luOiBweXRlc3RlciJdCitjb2xvciA9ICJjNWRlZjUiCitkZXNj
cmlwdGlvbiA9ICJyZWxhdGVkIHRvIHRoZSBweXRlc3RlciBidWlsdGluIHBsdWdpbiIKK25hbWUg
PSAicGx1Z2luOiBweXRlc3RlciIKKworWyJwbHVnaW46IHRtcGRpciJdCitjb2xvciA9ICJiZmQ0
ZjIiCitkZXNjcmlwdGlvbiA9ICJyZWxhdGVkIHRvIHRoZSB0bXBkaXIgYnVpbHRpbiBwbHVnaW4i
CituYW1lID0gInBsdWdpbjogdG1wZGlyIgorCitbInBsdWdpbjogdW5pdHRlc3QiXQorY29sb3Ig
PSAiMDA2Yjc1IgorZGVzY3JpcHRpb24gPSAicmVsYXRlZCB0byB0aGUgdW5pdHRlc3QgaW50ZWdy
YXRpb24gYnVpbHRpbiBwbHVnaW4iCituYW1lID0gInBsdWdpbjogdW5pdHRlc3QiCisKK1sicGx1
Z2luOiB3YXJuaW5ncyJdCitjb2xvciA9ICJmZWYyYzAiCitkZXNjcmlwdGlvbiA9ICJyZWxhdGVk
IHRvIHRoZSB3YXJuaW5ncyBidWlsdGluIHBsdWdpbiIKK25hbWUgPSAicGx1Z2luOiB3YXJuaW5n
cyIKKworWyJwbHVnaW46IHhkaXN0Il0KK2NvbG9yID0gIjUzMTllNyIKK2Rlc2NyaXB0aW9uID0g
InJlbGF0ZWQgdG8gdGhlIHhkaXN0IGV4dGVybmFsIHBsdWdpbiIKK25hbWUgPSAicGx1Z2luOiB4
ZGlzdCIKKworWyJzdGF0dXM6IGNyaXRpY2FsIl0KK2NvbG9yID0gImUxMWQyMSIKK2Rlc2NyaXB0
aW9uID0gImdyYXZlIHByb2JsZW0gb3IgdXNhYmlsaXR5IGlzc3VlIHRoYXQgYWZmZWN0cyBsb3Rz
IG9mIHVzZXJzIgorbmFtZSA9ICJzdGF0dXM6IGNyaXRpY2FsIgorCitbInN0YXR1czogZWFzeSJd
Citjb2xvciA9ICJiZmU1YmYiCitkZXNjcmlwdGlvbiA9ICJlYXN5IGlzc3VlIHRoYXQgaXMgZnJp
ZW5kbHkgdG8gbmV3IGNvbnRyaWJ1dG9yIgorbmFtZSA9ICJzdGF0dXM6IGVhc3kiCisKK1sic3Rh
dHVzOiBoZWxwIHdhbnRlZCJdCitjb2xvciA9ICIxNTk4MTgiCitkZXNjcmlwdGlvbiA9ICJkZXZl
bG9wZXJzIHdvdWxkIGxpa2UgaGVscCBmcm9tIGV4cGVydHMgb24gdGhpcyB0b3BpYyIKK25hbWUg
PSAic3RhdHVzOiBoZWxwIHdhbnRlZCIKKworWyJzdGF0dXM6IG5lZWRzIGluZm9ybWF0aW9uIl0K
K2NvbG9yID0gIjUzMTllNyIKK2Rlc2NyaXB0aW9uID0gInJlcG9ydGVyIG5lZWRzIHRvIHByb3Zp
ZGUgbW9yZSBpbmZvcm1hdGlvbjsgY2FuIGJlIGNsb3NlZCBhZnRlciAyIG9yIG1vcmUgd2Vla3Mg
b2YgaW5hY3Rpdml0eSIKK25hbWUgPSAic3RhdHVzOiBuZWVkcyBpbmZvcm1hdGlvbiIKKworWyJ0
b3BpYzogY29sbGVjdGlvbiJdCitjb2xvciA9ICIwMDZiNzUiCitkZXNjcmlwdGlvbiA9ICJyZWxh
dGVkIHRvIHRoZSBjb2xsZWN0aW9uIHBoYXNlIgorbmFtZSA9ICJ0b3BpYzogY29sbGVjdGlvbiIK
KworWyJ0b3BpYzogY29uZmlnIl0KK2NvbG9yID0gIjAwNmI3NSIKK2Rlc2NyaXB0aW9uID0gInJl
bGF0ZWQgdG8gY29uZmlnIGhhbmRsaW5nLCBhcmd1bWVudCBwYXJzaW5nIGFuZCBjb25maWcgZmls
ZSIKK25hbWUgPSAidG9waWM6IGNvbmZpZyIKKworWyJ0b3BpYzogZml4dHVyZXMiXQorY29sb3Ig
PSAiNTMxOWU3IgorZGVzY3JpcHRpb24gPSAiYW55dGhpbmcgaW52b2x2aW5nIGZpeHR1cmVzIGRp
cmVjdGx5IG9yIGluZGlyZWN0bHkiCituYW1lID0gInRvcGljOiBmaXh0dXJlcyIKKworWyJ0b3Bp
YzogbWFya3MiXQorY29sb3IgPSAiYjYwMjA1IgorZGVzY3JpcHRpb24gPSAicmVsYXRlZCB0byBt
YXJrcywgZWl0aGVyIHRoZSBnZW5lcmFsIG1hcmtzIG9yIGJ1aWx0aW4iCituYW1lID0gInRvcGlj
OiBtYXJrcyIKKworWyJ0b3BpYzogcGFyYW1ldHJpemUiXQorY29sb3IgPSAiZmJjYTA0IgorZGVz
Y3JpcHRpb24gPSAicmVsYXRlZCB0byBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUiCituYW1lID0g
InRvcGljOiBwYXJhbWV0cml6ZSIKKworWyJ0b3BpYzogcmVwb3J0aW5nIl0KK2NvbG9yID0gImZl
ZjJjMCIKK2Rlc2NyaXB0aW9uID0gInJlbGF0ZWQgdG8gdGVybWluYWwgb3V0cHV0IGFuZCB1c2Vy
LWZhY2luZyBtZXNzYWdlcyBhbmQgZXJyb3JzIgorbmFtZSA9ICJ0b3BpYzogcmVwb3J0aW5nIgor
CitbInRvcGljOiByZXdyaXRlIl0KK2NvbG9yID0gIjBlOGExNiIKK2Rlc2NyaXB0aW9uID0gInJl
bGF0ZWQgdG8gdGhlIGFzc2VydGlvbiByZXdyaXRlIG1lY2hhbmlzbSIKK25hbWUgPSAidG9waWM6
IHJld3JpdGUiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC8uZ2l0aHViL3czYy1pbXBvcnQubG9n
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvLmdpdGh1Yi93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZmI3Y2YyMjI1NjRiNDJmZjQ4MTcyZGI3MGIzMzgzMDg2MTM5OGE4Yi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC8u
Z2l0aHViL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotVGhl
IHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9z
aXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUlu
c3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczov
L2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMv
U2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1Qg
bW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGll
cyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVp
cmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmls
ZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvLmdpdGh1Yi9JU1NVRV9URU1QTEFURS5tZAotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
Ly5naXRodWIvUFVMTF9SRVFVRVNUX1RFTVBMQVRFLm1kCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC8uZ2l0aHViL3dvcmtmbG93cy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0Ly5naXRodWIv
d29ya2Zsb3dzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBk
NGI3NTI4MGQ5Y2U4OGU5YTU3MmQzNGQ5NjljYjM5MmY5ZDNiNWJiLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0Ly5naXRodWIvd29ya2Zs
b3dzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotVGhlIHRl
c3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRv
cnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3Rl
YWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dp
dGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2Ny
aXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9k
aWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyBy
ZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmlu
ZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvLmdpdGh1Yi93b3JrZmxvd3MvbWFpbi55bWwKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC8u
Z2l0aHViL3dvcmtmbG93cy9yZWxlYXNlLW9uLWNvbW1lbnQueW1sCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC8uZ2l0aWdub3JlIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvLmdpdGlnbm9yZQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
YWVhOWVhYzAzZjkyZTVmOTU5MmRlMWUwNDA1ZjEwYjRhZTc4Mzk3Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvLmdpdGlnbm9yZQpAQCAtMCwwICsxLDU0IEBACisjIEF1dG9tYXRpY2Fs
bHkgZ2VuZXJhdGVkIGJ5IGBoZ2ltcG9ydHN2bmAKKy5zdm4KKy5oZ3N2bgorCisjIElnbm9yZSBs
b2NhbCB2aXJ0dWFsZW52cworbGliLworYmluLworaW5jbHVkZS8KKy5QeXRob24vCisKKyMgVGhl
c2UgbGluZXMgYXJlIHN1Z2dlc3RlZCBhY2NvcmRpbmcgdG8gdGhlIHN2bjppZ25vcmUgcHJvcGVy
dHkKKyMgRmVlbCBmcmVlIHRvIGVuYWJsZSB0aGVtIGJ5IHVuY29tbWVudGluZyB0aGVtCisqLnB5
YworKi5weW8KKyouc3dwCisqLmNsYXNzCisqLm9yaWcKKyp+CisuaHlwb3RoZXNpcy8KKworIyBh
dXRvZ2VuZXJhdGVkCitzcmMvX3B5dGVzdC9fdmVyc2lvbi5weQorIyBzZXR1cHRvb2xzCisuZWdn
cy8KKworZG9jLyovX2J1aWxkCitkb2MvKi8uZG9jdHJlZXMKK2RvYy8qL19jaGFuZ2Vsb2dfdG93
bmNyaWVyX2RyYWZ0LnJzdAorYnVpbGQvCitkaXN0LworKi5lZ2ctaW5mbworaHRtbGNvdi8KK2lz
c3VlLworZW52LworLmVudi8KKy52ZW52LworM3JkcGFydHkvCisudG94CisuY2FjaGUKKy5weXRl
c3RfY2FjaGUKKy5teXB5X2NhY2hlCisuY292ZXJhZ2UKKy5jb3ZlcmFnZS4qCitjb3ZlcmFnZS54
bWwKKy5yb3BlcHJvamVjdAorLmlkZWEKKy5oeXBvdGhlc2lzCisucHlkZXZwcm9qZWN0CisucHJv
amVjdAorLnNldHRpbmdzCisudnNjb2RlCisKKyMgZ2VuZXJhdGVkIGJ5IHBpcAorcGlwLXdoZWVs
LW1ldGFkYXRhLwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvLnByZS1jb21taXQtY29uZmlnLnlh
bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC8ucHJlLWNvbW1pdC1jb25maWcueWFtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MDY4
YTJkMzI0ZDhkYTc3NDNkODc4MjczMTQ1ZjYzNTVkYzZmNWRmCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvLnByZS1jb21taXQtY29uZmlnLnlhbWwKQEAgLTAsMCArMSw4MiBAQAorcmVw
b3M6CistICAgcmVwbzogaHR0cHM6Ly9naXRodWIuY29tL3BzZi9ibGFjaworICAgIHJldjogMTku
MTBiMAorICAgIGhvb2tzOgorICAgIC0gICBpZDogYmxhY2sKKyAgICAgICAgYXJnczogWy0tc2Fm
ZSwgLS1xdWlldF0KKy0gICByZXBvOiBodHRwczovL2dpdGh1Yi5jb20vYXNvdHRpbGUvYmxhY2tl
bi1kb2NzCisgICAgcmV2OiB2MS43LjAKKyAgICBob29rczoKKyAgICAtICAgaWQ6IGJsYWNrZW4t
ZG9jcworICAgICAgICBhZGRpdGlvbmFsX2RlcGVuZGVuY2llczogW2JsYWNrPT0xOS4xMGIwXQor
LSAgIHJlcG86IGh0dHBzOi8vZ2l0aHViLmNvbS9wcmUtY29tbWl0L3ByZS1jb21taXQtaG9va3MK
KyAgICByZXY6IHYzLjEuMAorICAgIGhvb2tzOgorICAgIC0gICBpZDogdHJhaWxpbmctd2hpdGVz
cGFjZQorICAgIC0gICBpZDogZW5kLW9mLWZpbGUtZml4ZXIKKyAgICAtICAgaWQ6IGZpeC1lbmNv
ZGluZy1wcmFnbWEKKyAgICAgICAgYXJnczogWy0tcmVtb3ZlXQorICAgIC0gICBpZDogY2hlY2st
eWFtbAorICAgIC0gICBpZDogZGVidWctc3RhdGVtZW50cworICAgICAgICBleGNsdWRlOiBfcHl0
ZXN0LyhkZWJ1Z2dpbmd8aG9va3NwZWMpLnB5CisgICAgICAgIGxhbmd1YWdlX3ZlcnNpb246IHB5
dGhvbjMKKy0gICByZXBvOiBodHRwczovL2dpdGxhYi5jb20vcHljcWEvZmxha2U4CisgICAgcmV2
OiAzLjguMgorICAgIGhvb2tzOgorICAgIC0gICBpZDogZmxha2U4CisgICAgICAgIGxhbmd1YWdl
X3ZlcnNpb246IHB5dGhvbjMKKyAgICAgICAgYWRkaXRpb25hbF9kZXBlbmRlbmNpZXM6CisgICAg
ICAgICAgLSBmbGFrZTgtdHlwaW5nLWltcG9ydHM9PTEuOS4wCisgICAgICAgICAgLSBmbGFrZTgt
ZG9jc3RyaW5ncz09MS41LjAKKy0gICByZXBvOiBodHRwczovL2dpdGh1Yi5jb20vYXNvdHRpbGUv
cmVvcmRlcl9weXRob25faW1wb3J0cworICAgIHJldjogdjIuMy4wCisgICAgaG9va3M6CisgICAg
LSAgIGlkOiByZW9yZGVyLXB5dGhvbi1pbXBvcnRzCisgICAgICAgIGFyZ3M6IFsnLS1hcHBsaWNh
dGlvbi1kaXJlY3Rvcmllcz0uOnNyYycsIC0tcHkzLXBsdXNdCistICAgcmVwbzogaHR0cHM6Ly9n
aXRodWIuY29tL2Fzb3R0aWxlL3B5dXBncmFkZQorICAgIHJldjogdjIuNC40CisgICAgaG9va3M6
CisgICAgLSAgIGlkOiBweXVwZ3JhZGUKKyAgICAgICAgYXJnczogWy0tcHkzLXBsdXNdCistICAg
cmVwbzogaHR0cHM6Ly9naXRodWIuY29tL2Fzb3R0aWxlL3NldHVwLWNmZy1mbXQKKyAgICByZXY6
IHYxLjkuMAorICAgIGhvb2tzOgorICAgIC0gICBpZDogc2V0dXAtY2ZnLWZtdAorICAgICAgICAj
IFRPRE86IHdoZW4gdXBncmFkaW5nIHNldHVwLWNmZy1mbXQgdGhpcyBjYW4gYmUgcmVtb3ZlZAor
ICAgICAgICBhcmdzOiBbLS1tYXgtcHktdmVyc2lvbj0zLjldCistICAgcmVwbzogaHR0cHM6Ly9n
aXRodWIuY29tL3ByZS1jb21taXQvbWlycm9ycy1teXB5CisgICAgcmV2OiB2MC43ODAgICMgTk9U
RToga2VlcCB0aGlzIGluIHN5bmMgd2l0aCBzZXR1cC5jZmcuCisgICAgaG9va3M6CisgICAgLSAg
IGlkOiBteXB5CisgICAgICAgIGZpbGVzOiBeKHNyYy98dGVzdGluZy8pCisgICAgICAgIGFyZ3M6
IFtdCistICAgcmVwbzogbG9jYWwKKyAgICBob29rczoKKyAgICAtICAgaWQ6IHJzdAorICAgICAg
ICBuYW1lOiByc3QKKyAgICAgICAgZW50cnk6IHJzdC1saW50IC0tZW5jb2RpbmcgdXRmLTgKKyAg
ICAgICAgZmlsZXM6IF4oUkVMRUFTSU5HLnJzdHxSRUFETUUucnN0fFRJREVMSUZULnJzdCkkCisg
ICAgICAgIGxhbmd1YWdlOiBweXRob24KKyAgICAgICAgYWRkaXRpb25hbF9kZXBlbmRlbmNpZXM6
IFtweWdtZW50cywgcmVzdHJ1Y3R1cmVkdGV4dF9saW50XQorICAgIC0gICBpZDogY2hhbmdlbG9n
cy1yc3QKKyAgICAgICAgbmFtZTogY2hhbmdlbG9nIGZpbGVuYW1lcworICAgICAgICBsYW5ndWFn
ZTogZmFpbAorICAgICAgICBlbnRyeTogJ2NoYW5nZWxvZyBmaWxlcyBtdXN0IGJlIG5hbWVkICMj
IyMuKGJyZWFraW5nfGJ1Z2ZpeHxkZXByZWNhdGlvbnxkb2N8ZmVhdHVyZXxpbXByb3ZlbWVudHx0
cml2aWFsfHZlbmRvcikucnN0JworICAgICAgICBleGNsdWRlOiBjaGFuZ2Vsb2cvKFxkK1wuKGJy
ZWFraW5nfGJ1Z2ZpeHxkZXByZWNhdGlvbnxkb2N8ZmVhdHVyZXxpbXByb3ZlbWVudHx0cml2aWFs
fHZlbmRvcikucnN0fFJFQURNRS5yc3R8X3RlbXBsYXRlLnJzdCkKKyAgICAgICAgZmlsZXM6IF5j
aGFuZ2Vsb2cvCisgICAgLSAgIGlkOiBweS1kZXByZWNhdGVkCisgICAgICAgIG5hbWU6IHB5IGxp
YnJhcnkgaXMgZGVwcmVjYXRlZAorICAgICAgICBsYW5ndWFnZTogcHlncmVwCisgICAgICAgIGVu
dHJ5OiA+CisgICAgICAgICAgICAoP3gpXGJweVwuKAorICAgICAgICAgICAgICAgIF9jb2RlXC58
CisgICAgICAgICAgICAgICAgYnVpbHRpblwufAorICAgICAgICAgICAgICAgIGNvZGVcLnwKKyAg
ICAgICAgICAgICAgICBpb1wufAorICAgICAgICAgICAgICAgIHBhdGhcLmxvY2FsXC5zeXNmaW5k
fAorICAgICAgICAgICAgICAgIHByb2Nlc3NcLnwKKyAgICAgICAgICAgICAgICBzdGRcLnwKKyAg
ICAgICAgICAgICAgICBlcnJvclwufAorICAgICAgICAgICAgICAgIHhtbFwuCisgICAgICAgICAg
ICApCisgICAgICAgIHR5cGVzOiBbcHl0aG9uXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvLnJl
YWR0aGVkb2NzLnltbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0Ly5yZWFkdGhlZG9jcy55bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDE3NmMyNjQwMDE1ZWU5MzJmMjFlYzAxZjhkODk2YjFkNzQxMGUzMwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0Ly5yZWFkdGhlZG9jcy55bWwKQEAgLTAsMCArMSwxMiBAQAordmVyc2lv
bjogMgorCitweXRob246CisgICB2ZXJzaW9uOiAzLjcKKyAgIGluc3RhbGw6CisgICAgICAtIHJl
cXVpcmVtZW50czogZG9jL2VuL3JlcXVpcmVtZW50cy50eHQKKyAgICAgIC0gbWV0aG9kOiBwaXAK
KyAgICAgICAgcGF0aDogLgorCitmb3JtYXRzOgorICAtIGVwdWIKKyAgLSBwZGYKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0Ly50cmF2aXMueW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvLnRyYXZpcy55bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNWM4NWRmZTFmNTkxNWYwOWQ5YWUyNTI5MThmMjRiYTU1MDVjODEzZgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0Ly50cmF2aXMueW1sCkBAIC0wLDAgKzEsNjAgQEAKK2xh
bmd1YWdlOiBweXRob24KK2Rpc3Q6IHRydXN0eQorcHl0aG9uOiAnMy41LjEnCitjYWNoZTogZmFs
c2UKKworZW52OgorICBnbG9iYWw6CisgICAgLSBQWVRFU1RfQURET1BUUz0tdnYKKworIyBzZXR1
cHRvb2xzLXNjbSBuZWVkcyBhbGwgdGFncyBpbiBvcmRlciB0byBvYnRhaW4gYSBwcm9wZXIgdmVy
c2lvbgorZ2l0OgorICBkZXB0aDogZmFsc2UKKworaW5zdGFsbDoKKyAgLSBweXRob24gLW0gcGlw
IGluc3RhbGwgLS11cGdyYWRlIC0tcHJlIHRveAorCitqb2JzOgorICBpbmNsdWRlOgorICAgICMg
Q292ZXJhZ2UgZm9yIFB5dGhvbiAzLjUuezAsMX0gc3BlY2lmaWMgY29kZSwgbW9zdGx5IHR5cGlu
ZyByZWxhdGVkLgorICAgIC0gZW52OiBUT1hFTlY9cHkzNSBQWVRFU1RfQ09WRVJBR0U9MSBQWVRF
U1RfQURET1BUUz0iLWsgdGVzdF9yYWlzZXNfY3ljbGljX3JlZmVyZW5jZSIKKyAgICAgIGJlZm9y
ZV9pbnN0YWxsOgorICAgICAgICAjIFdvcmsgYXJvdW5kIGh0dHBzOi8vZ2l0aHViLmNvbS9qYXJh
Y28vemlwcC9pc3N1ZXMvNDAuCisgICAgICAgIC0gcHl0aG9uIC1tIHBpcCBpbnN0YWxsIC1VICdz
ZXR1cHRvb2xzPj0zNC40LjAnIHZpcnR1YWxlbnY9PTE2LjcuOQorCitiZWZvcmVfc2NyaXB0Ogor
ICAtIHwKKyAgICAjIERvIG5vdCAocmUtKXVwbG9hZCBjb3ZlcmFnZSB3aXRoIGNyb24gcnVucy4K
KyAgICBpZiBbWyAiJFRSQVZJU19FVkVOVF9UWVBFIiA9IGNyb24gXV07IHRoZW4KKyAgICAgIFBZ
VEVTVF9DT1ZFUkFHRT0wCisgICAgZmkKKyAgLSB8CisgICAgaWYgW1sgIiRQWVRFU1RfQ09WRVJB
R0UiID0gMSBdXTsgdGhlbgorICAgICAgZXhwb3J0IENPVkVSQUdFX0ZJTEU9IiRQV0QvLmNvdmVy
YWdlIgorICAgICAgZXhwb3J0IENPVkVSQUdFX1BST0NFU1NfU1RBUlQ9IiRQV0QvLmNvdmVyYWdl
cmMiCisgICAgICBleHBvcnQgX1BZVEVTVF9UT1hfQ09WRVJBR0VfUlVOPSJjb3ZlcmFnZSBydW4g
LW0iCisgICAgICBleHBvcnQgX1BZVEVTVF9UT1hfRVhUUkFfREVQPWNvdmVyYWdlLWVuYWJsZS1z
dWJwcm9jZXNzCisgICAgZmkKKworc2NyaXB0OiB0b3gKKworYWZ0ZXJfc3VjY2VzczoKKyAgLSB8
CisgICAgaWYgW1sgIiRQWVRFU1RfQ09WRVJBR0UiID0gMSBdXTsgdGhlbgorICAgICAgZW52IENP
REVDT1ZfTkFNRT0iJFRPWEVOVi0kVFJBVklTX09TX05BTUUiIHNjcmlwdHMvcmVwb3J0LWNvdmVy
YWdlLnNoIC1GIFRyYXZpcworICAgIGZpCisKK25vdGlmaWNhdGlvbnM6CisgIGlyYzoKKyAgICBj
aGFubmVsczoKKyAgICAgIC0gImNoYXQuZnJlZW5vZGUubmV0I3B5dGVzdCIKKyAgICBvbl9zdWNj
ZXNzOiBjaGFuZ2UKKyAgICBvbl9mYWlsdXJlOiBjaGFuZ2UKKyAgICBza2lwX2pvaW46IHRydWUK
KyAgZW1haWw6CisgICAgLSBweXRlc3QtY29tbWl0QHB5dGhvbi5vcmcKKworYnJhbmNoZXM6Cisg
IG9ubHk6CisgICAgLSBtYXN0ZXIKKyAgICAtIC9eXGQrXC5cZCtcLngkLwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvX3B5dGVzdC9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvX19p
bml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlNDFmMDUwNGU0NzA2NDI4
ZjhiYzI0MWQ1ZDJkMTBlZGJhMDEzOGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9fX2luaXRfXy5weQorKysgL2Rldi9u
dWxsCkBAIC0xLDggKzAsMCBAQAotX19hbGxfXyA9IFsnX192ZXJzaW9uX18nXQotCi10cnk6Ci0g
ICAgZnJvbSAuX3ZlcnNpb24gaW1wb3J0IHZlcnNpb24gYXMgX192ZXJzaW9uX18KLWV4Y2VwdCBJ
bXBvcnRFcnJvcjoKLSAgICAjIGJyb2tlbiBpbnN0YWxsYXRpb24sIHdlIGRvbid0IGV2ZW4gdHJ5
Ci0gICAgIyB1bmtub3duIG9ubHkgd29ya3MgYmVjYXVzZSB3ZSBkbyBwb29yIG1hbnMgdmVyc2lv
biBjb21wYXJlCi0gICAgX192ZXJzaW9uX18gPSAndW5rbm93bicKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L19weXRlc3QvX2FyZ2NvbXBsZXRlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9fYXJn
Y29tcGxldGUucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2MjVhNzVmOWYxYjcw
NTBkMzhmMzY1YzQxMzVkZDQ4YWE3MWIxZDYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9fYXJnY29tcGxldGUucHkKKysr
IC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotCi0iIiJhbGxvdyBiYXNoLWNvbXBsZXRpb24g
Zm9yIGFyZ3BhcnNlIHdpdGggYXJnY29tcGxldGUgaWYgaW5zdGFsbGVkCi1uZWVkcyBhcmdjb21w
bGV0ZT49MC41LjYgZm9yIHB5dGhvbiAzLjIvMy4zIChvbGRlciB2ZXJzaW9ucyBmYWlsCi10byBm
aW5kIHRoZSBtYWdpYyBzdHJpbmcsIHNvIF9BUkdDT01QTEVURSBlbnYuIHZhciBpcyBuZXZlciBz
ZXQsIGFuZAotdGhpcyBkb2VzIG5vdCBuZWVkIHNwZWNpYWwgY29kZS4KLQotRnVuY3Rpb24gdHJ5
X2FyZ2NvbXBsZXRlKHBhcnNlcikgc2hvdWxkIGJlIGNhbGxlZCBkaXJlY3RseSBiZWZvcmUKLXRo
ZSBjYWxsIHRvIEFyZ3VtZW50UGFyc2VyLnBhcnNlX2FyZ3MoKS4KLQotVGhlIGZpbGVzY29tcGxl
dGVyIGlzIHdoYXQgeW91IG5vcm1hbGx5IHdvdWxkIHVzZSBvbiB0aGUgcG9zaXRpb25hbAotYXJn
dW1lbnRzIHNwZWNpZmljYXRpb24sIGluIG9yZGVyIHRvIGdldCAiZGlybmFtZS8iIGFmdGVyICJk
aXJuPFRBQj4iCi1pbnN0ZWFkIG9mIHRoZSBkZWZhdWx0ICJkaXJuYW1lICI6Ci0KLSAgIG9wdHBh
cnNlci5hZGRfYXJndW1lbnQoQ29uZmlnLl9maWxlX29yX2RpciwgbmFyZ3M9JyonCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKS5jb21wbGV0ZXI9ZmlsZXNjb21wbGV0ZXIKLQotT3Ro
ZXIsIGFwcGxpY2F0aW9uIHNwZWNpZmljLCBjb21wbGV0ZXJzIHNob3VsZCBnbyBpbiB0aGUgZmls
ZQotZG9pbmcgdGhlIGFkZF9hcmd1bWVudCBjYWxscyBhcyB0aGV5IG5lZWQgdG8gYmUgc3BlY2lm
aWVkIGFzIC5jb21wbGV0ZXIKLWF0dHJpYnV0ZXMgYXMgd2VsbC4gKElmIGFyZ2NvbXBsZXRlIGlz
IG5vdCBpbnN0YWxsZWQsIHRoZSBmdW5jdGlvbiB0aGUKLWF0dHJpYnV0ZSBwb2ludHMgdG8gd2ls
bCBub3QgYmUgdXNlZCkuCi0KLVNQRUVEVVAKLT09PT09PT0KLVRoZSBnZW5lcmljIGFyZ2NvbXBs
ZXRlIHNjcmlwdCBmb3IgYmFzaC1jb21wbGV0aW9uCi0oL2V0Yy9iYXNoX2NvbXBsZXRpb24uZC9w
eXRob24tYXJnY29tcGxldGUuc2ggKQotdXNlcyBhIHB5dGhvbiBwcm9ncmFtIHRvIGRldGVybWlu
ZSBzdGFydHVwIHNjcmlwdCBnZW5lcmF0ZWQgYnkgcGlwLgotWW91IGNhbiBzcGVlZCB1cCBjb21w
bGV0aW9uIHNvbWV3aGF0IGJ5IGNoYW5naW5nIHRoaXMgc2NyaXB0IHRvIGluY2x1ZGUKLSAgIyBQ
WVRIT05fQVJHQ09NUExFVEVfT0sKLXNvIHRoZSB0aGUgcHl0aG9uLWFyZ2NvbXBsZXRlLWNoZWNr
LWVhc3ktaW5zdGFsbC1zY3JpcHQgZG9lcyBub3QKLW5lZWQgdG8gYmUgY2FsbGVkIHRvIGZpbmQg
dGhlIGVudHJ5IHBvaW50IG9mIHRoZSBjb2RlIGFuZCBzZWUgaWYgdGhhdCBpcwotbWFya2VkICB3
aXRoIFBZVEhPTl9BUkdDT01QTEVURV9PSwotCi1JTlNUQUxML0RFQlVHR0lORwotPT09PT09PT09
PT09PT09PT0KLVRvIGluY2x1ZGUgdGhpcyBzdXBwb3J0IGluIGFub3RoZXIgYXBwbGljYXRpb24g
dGhhdCBoYXMgc2V0dXAucHkgZ2VuZXJhdGVkCi1zY3JpcHRzOgotLSBhZGQgdGhlIGxpbmU6Ci0g
ICAgIyBQWVRIT05fQVJHQ09NUExFVEVfT0sKLSAgbmVhciB0aGUgdG9wIG9mIHRoZSBtYWluIHB5
dGhvbiBlbnRyeSBwb2ludAotLSBpbmNsdWRlIGluIHRoZSBmaWxlIGNhbGxpbmcgcGFyc2VfYXJn
cygpOgotICAgIGZyb20gX2FyZ2NvbXBsZXRlIGltcG9ydCB0cnlfYXJnY29tcGxldGUsIGZpbGVz
Y29tcGxldGVyCi0gICAsIGNhbGwgdHJ5X2FyZ2NvbXBsZXRlIGp1c3QgYmVmb3JlIHBhcnNlX2Fy
Z3MoKSwgYW5kIG9wdGlvbmFsbHkgYWRkCi0gICBmaWxlc2NvbXBsZXRlciB0byB0aGUgcG9zaXRp
b25hbCBhcmd1bWVudHMnIGFkZF9hcmd1bWVudCgpCi1JZiB0aGluZ3MgZG8gbm90IHdvcmsgcmln
aHQgYXdheToKLS0gc3dpdGNoIG9uIGFyZ2NvbXBsZXRlIGRlYnVnZ2luZyB3aXRoIChhbHNvIGhl
bHBmdWwgd2hlbiBkb2luZyBjdXN0b20KLSAgY29tcGxldGVycyk6Ci0gICAgZXhwb3J0IF9BUkNf
REVCVUc9MQotLSBydW46Ci0gICAgcHl0aG9uLWFyZ2NvbXBsZXRlLWNoZWNrLWVhc3ktaW5zdGFs
bC1zY3JpcHQgJCh3aGljaCBhcHBuYW1lKQotICAgIGVjaG8gJD8KLSAgd2lsbCBlY2hvIDAgaWYg
dGhlIG1hZ2ljIGxpbmUgaGFzIGJlZW4gZm91bmQsIDEgaWYgbm90Ci0tIHNvbWV0aW1lcyBpdCBo
ZWxwcyB0byBmaW5kIGVhcmx5IG9uIGVycm9ycyB1c2luZzoKLSAgICBfQVJHQ09NUExFVEU9MSBf
QVJDX0RFQlVHPTEgYXBwbmFtZQotICB3aGljaCBzaG91bGQgdGhyb3cgYSBLZXlFcnJvcjogJ0NP
TVBMSU5FJyAod2hpY2ggaXMgcHJvcGVybHkgc2V0IGJ5IHRoZQotICBnbG9iYWwgYXJnY29tcGxl
dGUgc2NyaXB0KS4KLSIiIgotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQs
IGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotaW1wb3J0IHN5cwotaW1wb3J0IG9zCi1mcm9tIGds
b2IgaW1wb3J0IGdsb2IKLQotCi1jbGFzcyBGYXN0RmlsZXNDb21wbGV0ZXI6Ci0gICAgJ0Zhc3Qg
ZmlsZSBjb21wbGV0ZXIgY2xhc3MnCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgZGlyZWN0b3Jp
ZXM9VHJ1ZSk6Ci0gICAgICAgIHNlbGYuZGlyZWN0b3JpZXMgPSBkaXJlY3RvcmllcwotCi0gICAg
ZGVmIF9fY2FsbF9fKHNlbGYsIHByZWZpeCwgKiprd2FyZ3MpOgotICAgICAgICAiIiJvbmx5IGNh
bGxlZCBvbiBub24gb3B0aW9uIGNvbXBsZXRpb25zIiIiCi0gICAgICAgIGlmIG9zLnBhdGguc2Vw
IGluIHByZWZpeFsxOl06Ci0gICAgICAgICAgICBwcmVmaXhfZGlyID0gbGVuKG9zLnBhdGguZGly
bmFtZShwcmVmaXgpICsgb3MucGF0aC5zZXApCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBw
cmVmaXhfZGlyID0gMAotICAgICAgICBjb21wbGV0aW9uID0gW10KLSAgICAgICAgZ2xvYmJlZCA9
IFtdCi0gICAgICAgIGlmICcqJyBub3QgaW4gcHJlZml4IGFuZCAnPycgbm90IGluIHByZWZpeDoK
LSAgICAgICAgICAgICMgd2UgYXJlIG9uIHVuaXgsIG90aGVyd2lzZSBubyBiYXNoCi0gICAgICAg
ICAgICBpZiBub3QgcHJlZml4IG9yIHByZWZpeFstMV0gPT0gb3MucGF0aC5zZXA6Ci0gICAgICAg
ICAgICAgICAgZ2xvYmJlZC5leHRlbmQoZ2xvYihwcmVmaXggKyAnLionKSkKLSAgICAgICAgICAg
IHByZWZpeCArPSAnKicKLSAgICAgICAgZ2xvYmJlZC5leHRlbmQoZ2xvYihwcmVmaXgpKQotICAg
ICAgICBmb3IgeCBpbiBzb3J0ZWQoZ2xvYmJlZCk6Ci0gICAgICAgICAgICBpZiBvcy5wYXRoLmlz
ZGlyKHgpOgotICAgICAgICAgICAgICAgIHggKz0gJy8nCi0gICAgICAgICAgICAjIGFwcGVuZCBz
dHJpcHBpbmcgdGhlIHByZWZpeCAobGlrZSBiYXNoLCBub3QgbGlrZSBjb21wZ2VuKQotICAgICAg
ICAgICAgY29tcGxldGlvbi5hcHBlbmQoeFtwcmVmaXhfZGlyOl0pCi0gICAgICAgIHJldHVybiBj
b21wbGV0aW9uCi0KLQotaWYgb3MuZW52aXJvbi5nZXQoJ19BUkdDT01QTEVURScpOgotICAgIHRy
eToKLSAgICAgICAgaW1wb3J0IGFyZ2NvbXBsZXRlLmNvbXBsZXRlcnMKLSAgICBleGNlcHQgSW1w
b3J0RXJyb3I6Ci0gICAgICAgIHN5cy5leGl0KC0xKQotICAgIGZpbGVzY29tcGxldGVyID0gRmFz
dEZpbGVzQ29tcGxldGVyKCkKLQotICAgIGRlZiB0cnlfYXJnY29tcGxldGUocGFyc2VyKToKLSAg
ICAgICAgYXJnY29tcGxldGUuYXV0b2NvbXBsZXRlKHBhcnNlciwgYWx3YXlzX2NvbXBsZXRlX29w
dGlvbnM9RmFsc2UpCi1lbHNlOgotICAgIGRlZiB0cnlfYXJnY29tcGxldGUocGFyc2VyKToKLSAg
ICAgICAgcGFzcwotICAgIGZpbGVzY29tcGxldGVyID0gTm9uZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvX3B5dGVzdC9fY29kZS9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvX2Nv
ZGUvX19pbml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxNWMxM2I0MmMy
NWJkMzE0OTg4ZGJhYTdmZjlmNGUzZDFkMmU1YzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9fY29kZS9fX2luaXRfXy5w
eQorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLSIiIiBweXRob24gaW5zcGVjdGlvbi9j
b2RlIGdlbmVyYXRpb24gQVBJICIiIgotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9p
bXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotZnJvbSAuY29kZSBpbXBvcnQgQ29kZSAg
IyBub3FhCi1mcm9tIC5jb2RlIGltcG9ydCBFeGNlcHRpb25JbmZvICAjIG5vcWEKLWZyb20gLmNv
ZGUgaW1wb3J0IEZyYW1lICAjIG5vcWEKLWZyb20gLmNvZGUgaW1wb3J0IFRyYWNlYmFjayAgIyBu
b3FhCi1mcm9tIC5jb2RlIGltcG9ydCBnZXRyYXdjb2RlICAjIG5vcWEKLWZyb20gLnNvdXJjZSBp
bXBvcnQgU291cmNlICAjIG5vcWEKLWZyb20gLnNvdXJjZSBpbXBvcnQgY29tcGlsZV8gYXMgY29t
cGlsZSAgIyBub3FhCi1mcm9tIC5zb3VyY2UgaW1wb3J0IGdldGZzbGluZW5vICAjIG5vcWEKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvX2NvZGUvX3B5MnRyYWNlYmFjay5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L19weXRlc3QvX2NvZGUvX3B5MnRyYWNlYmFjay5weQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNWFhY2YwYTQyOGQ4ODA2OTFmZTAzMGE4MzViYzI1OGQwNzg1MDZmMC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9fcHl0ZXN0L19jb2RlL19weTJ0cmFjZWJhY2sucHkKKysrIC9kZXYvbnVsbApAQCAtMSw4NSAr
MCwwIEBACi0jIGNvcGllZCBmcm9tIHB5dGhvbi0yLjcuMydzIHRyYWNlYmFjay5weQotIyBDSEFO
R0VTOgotIyAtIHNvbWVfc3RyIGlzIHJlcGxhY2VkLCB0cnlpbmcgdG8gY3JlYXRlIHVuaWNvZGUg
c3RyaW5ncwotIwotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlz
aW9uLCBwcmludF9mdW5jdGlvbgotaW1wb3J0IHR5cGVzCi0KLQotZGVmIGZvcm1hdF9leGNlcHRp
b25fb25seShldHlwZSwgdmFsdWUpOgotICAgICIiIkZvcm1hdCB0aGUgZXhjZXB0aW9uIHBhcnQg
b2YgYSB0cmFjZWJhY2suCi0KLSAgICBUaGUgYXJndW1lbnRzIGFyZSB0aGUgZXhjZXB0aW9uIHR5
cGUgYW5kIHZhbHVlIHN1Y2ggYXMgZ2l2ZW4gYnkKLSAgICBzeXMubGFzdF90eXBlIGFuZCBzeXMu
bGFzdF92YWx1ZS4gVGhlIHJldHVybiB2YWx1ZSBpcyBhIGxpc3Qgb2YKLSAgICBzdHJpbmdzLCBl
YWNoIGVuZGluZyBpbiBhIG5ld2xpbmUuCi0KLSAgICBOb3JtYWxseSwgdGhlIGxpc3QgY29udGFp
bnMgYSBzaW5nbGUgc3RyaW5nOyBob3dldmVyLCBmb3IKLSAgICBTeW50YXhFcnJvciBleGNlcHRp
b25zLCBpdCBjb250YWlucyBzZXZlcmFsIGxpbmVzIHRoYXQgKHdoZW4KLSAgICBwcmludGVkKSBk
aXNwbGF5IGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IHdoZXJlIHRoZSBzeW50YXgKLSAgICBl
cnJvciBvY2N1cnJlZC4KLQotICAgIFRoZSBtZXNzYWdlIGluZGljYXRpbmcgd2hpY2ggZXhjZXB0
aW9uIG9jY3VycmVkIGlzIGFsd2F5cyB0aGUgbGFzdAotICAgIHN0cmluZyBpbiB0aGUgbGlzdC4K
LQotICAgICIiIgotCi0gICAgIyBBbiBpbnN0YW5jZSBzaG91bGQgbm90IGhhdmUgYSBtZWFuaW5n
ZnVsIHZhbHVlIHBhcmFtZXRlciwgYnV0Ci0gICAgIyBzb21ldGltZXMgZG9lcywgcGFydGljdWxh
cmx5IGZvciBzdHJpbmcgZXhjZXB0aW9ucywgc3VjaCBhcwotICAgICMgPj4+IHJhaXNlIHN0cmlu
ZzEsIHN0cmluZzIgICMgZGVwcmVjYXRlZAotICAgICMKLSAgICAjIENsZWFyIHRoZXNlIG91dCBm
aXJzdCBiZWNhdXNlIGlzc3VidHlwZShzdHJpbmcxLCBTeW50YXhFcnJvcikKLSAgICAjIHdvdWxk
IHRocm93IGFub3RoZXIgZXhjZXB0aW9uIGFuZCBtYXNrIHRoZSBvcmlnaW5hbCBwcm9ibGVtLgot
ICAgIGlmIChpc2luc3RhbmNlKGV0eXBlLCBCYXNlRXhjZXB0aW9uKSBvcgotICAgICAgICBpc2lu
c3RhbmNlKGV0eXBlLCB0eXBlcy5JbnN0YW5jZVR5cGUpIG9yCi0gICAgICAgICAgICBldHlwZSBp
cyBOb25lIG9yIHR5cGUoZXR5cGUpIGlzIHN0cik6Ci0gICAgICAgIHJldHVybiBbX2Zvcm1hdF9m
aW5hbF9leGNfbGluZShldHlwZSwgdmFsdWUpXQotCi0gICAgc3R5cGUgPSBldHlwZS5fX25hbWVf
XwotCi0gICAgaWYgbm90IGlzc3ViY2xhc3MoZXR5cGUsIFN5bnRheEVycm9yKToKLSAgICAgICAg
cmV0dXJuIFtfZm9ybWF0X2ZpbmFsX2V4Y19saW5lKHN0eXBlLCB2YWx1ZSldCi0KLSAgICAjIEl0
IHdhcyBhIHN5bnRheCBlcnJvcjsgc2hvdyBleGFjdGx5IHdoZXJlIHRoZSBwcm9ibGVtIHdhcyBm
b3VuZC4KLSAgICBsaW5lcyA9IFtdCi0gICAgdHJ5OgotICAgICAgICBtc2csIChmaWxlbmFtZSwg
bGluZW5vLCBvZmZzZXQsIGJhZGxpbmUpID0gdmFsdWUuYXJncwotICAgIGV4Y2VwdCBFeGNlcHRp
b246Ci0gICAgICAgIHBhc3MKLSAgICBlbHNlOgotICAgICAgICBmaWxlbmFtZSA9IGZpbGVuYW1l
IG9yICI8c3RyaW5nPiIKLSAgICAgICAgbGluZXMuYXBwZW5kKCcgIEZpbGUgIiVzIiwgbGluZSAl
ZFxuJyAlIChmaWxlbmFtZSwgbGluZW5vKSkKLSAgICAgICAgaWYgYmFkbGluZSBpcyBub3QgTm9u
ZToKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYmFkbGluZSwgYnl0ZXMpOiAgIyBweXRob24g
MiBvbmx5Ci0gICAgICAgICAgICAgICAgYmFkbGluZSA9IGJhZGxpbmUuZGVjb2RlKCd1dGYtOCcs
ICdyZXBsYWNlJykKLSAgICAgICAgICAgIGxpbmVzLmFwcGVuZCh1JyAgICAlc1xuJyAlIGJhZGxp
bmUuc3RyaXAoKSkKLSAgICAgICAgICAgIGlmIG9mZnNldCBpcyBub3QgTm9uZToKLSAgICAgICAg
ICAgICAgICBjYXJldHNwYWNlID0gYmFkbGluZS5yc3RyaXAoJ1xuJylbOm9mZnNldF0ubHN0cmlw
KCkKLSAgICAgICAgICAgICAgICAjIG5vbi1zcGFjZSB3aGl0ZXNwYWNlIChsaWtlcyB0YWJzKSBt
dXN0IGJlIGtlcHQgZm9yIGFsaWdubWVudAotICAgICAgICAgICAgICAgIGNhcmV0c3BhY2UgPSAo
KGMuaXNzcGFjZSgpIGFuZCBjIG9yICcgJykgZm9yIGMgaW4gY2FyZXRzcGFjZSkKLSAgICAgICAg
ICAgICAgICAjIG9ubHkgdGhyZWUgc3BhY2VzIHRvIGFjY291bnQgZm9yIG9mZnNldDEgPT0gcG9z
IDAKLSAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICVzXlxuJyAlICcnLmpvaW4oY2Fy
ZXRzcGFjZSkpCi0gICAgICAgIHZhbHVlID0gbXNnCi0KLSAgICBsaW5lcy5hcHBlbmQoX2Zvcm1h
dF9maW5hbF9leGNfbGluZShzdHlwZSwgdmFsdWUpKQotICAgIHJldHVybiBsaW5lcwotCi0KLWRl
ZiBfZm9ybWF0X2ZpbmFsX2V4Y19saW5lKGV0eXBlLCB2YWx1ZSk6Ci0gICAgIiIiUmV0dXJuIGEg
bGlzdCBvZiBhIHNpbmdsZSBsaW5lIC0tIG5vcm1hbCBjYXNlIGZvciBmb3JtYXRfZXhjZXB0aW9u
X29ubHkiIiIKLSAgICB2YWx1ZXN0ciA9IF9zb21lX3N0cih2YWx1ZSkKLSAgICBpZiB2YWx1ZSBp
cyBOb25lIG9yIG5vdCB2YWx1ZXN0cjoKLSAgICAgICAgbGluZSA9ICIlc1xuIiAlIGV0eXBlCi0g
ICAgZWxzZToKLSAgICAgICAgbGluZSA9ICIlczogJXNcbiIgJSAoZXR5cGUsIHZhbHVlc3RyKQot
ICAgIHJldHVybiBsaW5lCi0KLQotZGVmIF9zb21lX3N0cih2YWx1ZSk6Ci0gICAgdHJ5OgotICAg
ICAgICByZXR1cm4gdW5pY29kZSh2YWx1ZSkKLSAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAg
ICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gc3RyKHZhbHVlKQotICAgICAgICBleGNlcHQgRXhj
ZXB0aW9uOgotICAgICAgICAgICAgcGFzcwotICAgIHJldHVybiAnPHVucHJpbnRhYmxlICVzIG9i
amVjdD4nICUgdHlwZSh2YWx1ZSkuX19uYW1lX18KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19w
eXRlc3QvX2NvZGUvY29kZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvX2NvZGUvY29kZS5weQpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2ZiMjMyYmQ0MzBlOWI0ZjhhZDc2OWUzMDU3
ZGRlZmVjMjgxYTY3ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L19jb2RlL2NvZGUucHkKKysrIC9kZXYvbnVsbApAQCAt
MSw5MDYgKzAsMCBAQAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRp
dmlzaW9uLCBwcmludF9mdW5jdGlvbgotaW1wb3J0IHN5cwotZnJvbSBpbnNwZWN0IGltcG9ydCBD
T19WQVJBUkdTLCBDT19WQVJLRVlXT1JEUwotaW1wb3J0IHJlCi1mcm9tIHdlYWtyZWYgaW1wb3J0
IHJlZgotZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgX1BZMiwgX1BZMywgUFkzNSwgc2FmZV9z
dHIKLQotaW1wb3J0IHB5Ci1idWlsdGluX3JlcHIgPSByZXByCi0KLWlmIF9QWTM6Ci0gICAgZnJv
bSB0cmFjZWJhY2sgaW1wb3J0IGZvcm1hdF9leGNlcHRpb25fb25seQotZWxzZToKLSAgICBmcm9t
IC5fcHkydHJhY2ViYWNrIGltcG9ydCBmb3JtYXRfZXhjZXB0aW9uX29ubHkKLQotCi1jbGFzcyBD
b2RlKG9iamVjdCk6Ci0gICAgIiIiIHdyYXBwZXIgYXJvdW5kIFB5dGhvbiBjb2RlIG9iamVjdHMg
IiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmF3Y29kZSk6Ci0gICAgICAgIGlmIG5vdCBo
YXNhdHRyKHJhd2NvZGUsICJjb19maWxlbmFtZSIpOgotICAgICAgICAgICAgcmF3Y29kZSA9IGdl
dHJhd2NvZGUocmF3Y29kZSkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5maWxlbmFt
ZSA9IHJhd2NvZGUuY29fZmlsZW5hbWUKLSAgICAgICAgICAgIHNlbGYuZmlyc3RsaW5lbm8gPSBy
YXdjb2RlLmNvX2ZpcnN0bGluZW5vIC0gMQotICAgICAgICAgICAgc2VsZi5uYW1lID0gcmF3Y29k
ZS5jb19uYW1lCi0gICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgIHJh
aXNlIFR5cGVFcnJvcigibm90IGEgY29kZSBvYmplY3Q6ICVyIiAlIChyYXdjb2RlLCkpCi0gICAg
ICAgIHNlbGYucmF3ID0gcmF3Y29kZQotCi0gICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6Ci0g
ICAgICAgIHJldHVybiBzZWxmLnJhdyA9PSBvdGhlci5yYXcKLQotICAgIF9faGFzaF9fID0gTm9u
ZQotCi0gICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIHJldHVybiBub3Qgc2Vs
ZiA9PSBvdGhlcgotCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIHBhdGgoc2VsZik6Ci0gICAgICAg
ICIiIiByZXR1cm4gYSBwYXRoIG9iamVjdCBwb2ludGluZyB0byBzb3VyY2UgY29kZSAobm90ZSB0
aGF0IGl0Ci0gICAgICAgIG1pZ2h0IG5vdCBwb2ludCB0byBhbiBhY3R1YWxseSBleGlzdGluZyBm
aWxlKS4gIiIiCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHAgPSBweS5wYXRoLmxvY2FsKHNl
bGYucmF3LmNvX2ZpbGVuYW1lKQotICAgICAgICAgICAgIyBtYXliZSBkb24ndCB0cnkgdGhpcyBj
aGVja2luZwotICAgICAgICAgICAgaWYgbm90IHAuY2hlY2soKToKLSAgICAgICAgICAgICAgICBy
YWlzZSBPU0Vycm9yKCJweS5wYXRoIGNoZWNrIGZhaWxlZC4iKQotICAgICAgICBleGNlcHQgT1NF
cnJvcjoKLSAgICAgICAgICAgICMgWFhYIG1heWJlIHRyeSBoYXJkZXIgbGlrZSB0aGUgd2VpcmQg
bG9naWMKLSAgICAgICAgICAgICMgaW4gdGhlIHN0YW5kYXJkIGxpYiBbbGluZWNhY2hlLnVwZGF0
ZWNhY2hlXSBkb2VzPwotICAgICAgICAgICAgcCA9IHNlbGYucmF3LmNvX2ZpbGVuYW1lCi0KLSAg
ICAgICAgcmV0dXJuIHAKLQotICAgIEBwcm9wZXJ0eQotICAgIGRlZiBmdWxsc291cmNlKHNlbGYp
OgotICAgICAgICAiIiIgcmV0dXJuIGEgX3B5dGVzdC5fY29kZS5Tb3VyY2Ugb2JqZWN0IGZvciB0
aGUgZnVsbCBzb3VyY2UgZmlsZSBvZiB0aGUgY29kZQotICAgICAgICAiIiIKLSAgICAgICAgZnJv
bSBfcHl0ZXN0Ll9jb2RlIGltcG9ydCBzb3VyY2UKLSAgICAgICAgZnVsbCwgXyA9IHNvdXJjZS5m
aW5kc291cmNlKHNlbGYucmF3KQotICAgICAgICByZXR1cm4gZnVsbAotCi0gICAgZGVmIHNvdXJj
ZShzZWxmKToKLSAgICAgICAgIiIiIHJldHVybiBhIF9weXRlc3QuX2NvZGUuU291cmNlIG9iamVj
dCBmb3IgdGhlIGNvZGUgb2JqZWN0J3Mgc291cmNlIG9ubHkKLSAgICAgICAgIiIiCi0gICAgICAg
ICMgcmV0dXJuIHNvdXJjZSBvbmx5IGZvciB0aGF0IHBhcnQgb2YgY29kZQotICAgICAgICBpbXBv
cnQgX3B5dGVzdC5fY29kZQotICAgICAgICByZXR1cm4gX3B5dGVzdC5fY29kZS5Tb3VyY2Uoc2Vs
Zi5yYXcpCi0KLSAgICBkZWYgZ2V0YXJncyhzZWxmLCB2YXI9RmFsc2UpOgotICAgICAgICAiIiIg
cmV0dXJuIGEgdHVwbGUgd2l0aCB0aGUgYXJndW1lbnQgbmFtZXMgZm9yIHRoZSBjb2RlIG9iamVj
dAotCi0gICAgICAgICAgICBpZiAndmFyJyBpcyBzZXQgVHJ1ZSBhbHNvIHJldHVybiB0aGUgbmFt
ZXMgb2YgdGhlIHZhcmlhYmxlIGFuZAotICAgICAgICAgICAga2V5d29yZCBhcmd1bWVudHMgd2hl
biBwcmVzZW50Ci0gICAgICAgICIiIgotICAgICAgICAjIGhhbmRmdWxsIHNob3J0Y3V0IGZvciBn
ZXR0aW5nIGFyZ3MKLSAgICAgICAgcmF3ID0gc2VsZi5yYXcKLSAgICAgICAgYXJnY291bnQgPSBy
YXcuY29fYXJnY291bnQKLSAgICAgICAgaWYgdmFyOgotICAgICAgICAgICAgYXJnY291bnQgKz0g
cmF3LmNvX2ZsYWdzICYgQ09fVkFSQVJHUwotICAgICAgICAgICAgYXJnY291bnQgKz0gcmF3LmNv
X2ZsYWdzICYgQ09fVkFSS0VZV09SRFMKLSAgICAgICAgcmV0dXJuIHJhdy5jb192YXJuYW1lc1s6
YXJnY291bnRdCi0KLQotY2xhc3MgRnJhbWUob2JqZWN0KToKLSAgICAiIiJXcmFwcGVyIGFyb3Vu
ZCBhIFB5dGhvbiBmcmFtZSBob2xkaW5nIGZfbG9jYWxzIGFuZCBmX2dsb2JhbHMKLSAgICBpbiB3
aGljaCBleHByZXNzaW9ucyBjYW4gYmUgZXZhbHVhdGVkLiIiIgotCi0gICAgZGVmIF9faW5pdF9f
KHNlbGYsIGZyYW1lKToKLSAgICAgICAgc2VsZi5saW5lbm8gPSBmcmFtZS5mX2xpbmVubyAtIDEK
LSAgICAgICAgc2VsZi5mX2dsb2JhbHMgPSBmcmFtZS5mX2dsb2JhbHMKLSAgICAgICAgc2VsZi5m
X2xvY2FscyA9IGZyYW1lLmZfbG9jYWxzCi0gICAgICAgIHNlbGYucmF3ID0gZnJhbWUKLSAgICAg
ICAgc2VsZi5jb2RlID0gQ29kZShmcmFtZS5mX2NvZGUpCi0KLSAgICBAcHJvcGVydHkKLSAgICBk
ZWYgc3RhdGVtZW50KHNlbGYpOgotICAgICAgICAiIiIgc3RhdGVtZW50IHRoaXMgZnJhbWUgaXMg
YXQgIiIiCi0gICAgICAgIGltcG9ydCBfcHl0ZXN0Ll9jb2RlCi0gICAgICAgIGlmIHNlbGYuY29k
ZS5mdWxsc291cmNlIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gX3B5dGVzdC5fY29kZS5T
b3VyY2UoIiIpCi0gICAgICAgIHJldHVybiBzZWxmLmNvZGUuZnVsbHNvdXJjZS5nZXRzdGF0ZW1l
bnQoc2VsZi5saW5lbm8pCi0KLSAgICBkZWYgZXZhbChzZWxmLCBjb2RlLCAqKnZhcnMpOgotICAg
ICAgICAiIiIgZXZhbHVhdGUgJ2NvZGUnIGluIHRoZSBmcmFtZQotCi0gICAgICAgICAgICAndmFy
cycgYXJlIG9wdGlvbmFsIGFkZGl0aW9uYWwgbG9jYWwgdmFyaWFibGVzCi0KLSAgICAgICAgICAg
IHJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUgZXZhbHVhdGlvbgotICAgICAgICAiIiIKLSAgICAg
ICAgZl9sb2NhbHMgPSBzZWxmLmZfbG9jYWxzLmNvcHkoKQotICAgICAgICBmX2xvY2Fscy51cGRh
dGUodmFycykKLSAgICAgICAgcmV0dXJuIGV2YWwoY29kZSwgc2VsZi5mX2dsb2JhbHMsIGZfbG9j
YWxzKQotCi0gICAgZGVmIGV4ZWNfKHNlbGYsIGNvZGUsICoqdmFycyk6Ci0gICAgICAgICIiIiBl
eGVjICdjb2RlJyBpbiB0aGUgZnJhbWUKLQotICAgICAgICAgICAgJ3ZhcnMnIGFyZSBvcHRpb25h
OyBhZGRpdGlvbmFsIGxvY2FsIHZhcmlhYmxlcwotICAgICAgICAiIiIKLSAgICAgICAgZl9sb2Nh
bHMgPSBzZWxmLmZfbG9jYWxzLmNvcHkoKQotICAgICAgICBmX2xvY2Fscy51cGRhdGUodmFycykK
LSAgICAgICAgcHkuYnVpbHRpbi5leGVjXyhjb2RlLCBzZWxmLmZfZ2xvYmFscywgZl9sb2NhbHMp
Ci0KLSAgICBkZWYgcmVwcihzZWxmLCBvYmplY3QpOgotICAgICAgICAiIiIgcmV0dXJuIGEgJ3Nh
ZmUnIChub24tcmVjdXJzaXZlLCBvbmUtbGluZSkgc3RyaW5nIHJlcHIgZm9yICdvYmplY3QnCi0g
ICAgICAgICIiIgotICAgICAgICByZXR1cm4gcHkuaW8uc2FmZXJlcHIob2JqZWN0KQotCi0gICAg
ZGVmIGlzX3RydWUoc2VsZiwgb2JqZWN0KToKLSAgICAgICAgcmV0dXJuIG9iamVjdAotCi0gICAg
ZGVmIGdldGFyZ3Moc2VsZiwgdmFyPUZhbHNlKToKLSAgICAgICAgIiIiIHJldHVybiBhIGxpc3Qg
b2YgdHVwbGVzIChuYW1lLCB2YWx1ZSkgZm9yIGFsbCBhcmd1bWVudHMKLQotICAgICAgICAgICAg
aWYgJ3ZhcicgaXMgc2V0IFRydWUgYWxzbyBpbmNsdWRlIHRoZSB2YXJpYWJsZSBhbmQga2V5d29y
ZAotICAgICAgICAgICAgYXJndW1lbnRzIHdoZW4gcHJlc2VudAotICAgICAgICAiIiIKLSAgICAg
ICAgcmV0dmFsID0gW10KLSAgICAgICAgZm9yIGFyZyBpbiBzZWxmLmNvZGUuZ2V0YXJncyh2YXIp
OgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHJldHZhbC5hcHBlbmQoKGFyZywg
c2VsZi5mX2xvY2Fsc1thcmddKSkKLSAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAg
ICAgICAgICAgICBwYXNzICAgICAjIHRoaXMgY2FuIG9jY3VyIHdoZW4gdXNpbmcgUHN5Y28KLSAg
ICAgICAgcmV0dXJuIHJldHZhbAotCi0KLWNsYXNzIFRyYWNlYmFja0VudHJ5KG9iamVjdCk6Ci0g
ICAgIiIiIGEgc2luZ2xlIGVudHJ5IGluIGEgdHJhY2ViYWNrICIiIgotCi0gICAgX3JlcHJfc3R5
bGUgPSBOb25lCi0gICAgZXhwcmluZm8gPSBOb25lCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwg
cmF3ZW50cnksIGV4Y2luZm89Tm9uZSk6Ci0gICAgICAgIHNlbGYuX2V4Y2luZm8gPSBleGNpbmZv
Ci0gICAgICAgIHNlbGYuX3Jhd2VudHJ5ID0gcmF3ZW50cnkKLSAgICAgICAgc2VsZi5saW5lbm8g
PSByYXdlbnRyeS50Yl9saW5lbm8gLSAxCi0KLSAgICBkZWYgc2V0X3JlcHJfc3R5bGUoc2VsZiwg
bW9kZSk6Ci0gICAgICAgIGFzc2VydCBtb2RlIGluICgic2hvcnQiLCAibG9uZyIpCi0gICAgICAg
IHNlbGYuX3JlcHJfc3R5bGUgPSBtb2RlCi0KLSAgICBAcHJvcGVydHkKLSAgICBkZWYgZnJhbWUo
c2VsZik6Ci0gICAgICAgIGltcG9ydCBfcHl0ZXN0Ll9jb2RlCi0gICAgICAgIHJldHVybiBfcHl0
ZXN0Ll9jb2RlLkZyYW1lKHNlbGYuX3Jhd2VudHJ5LnRiX2ZyYW1lKQotCi0gICAgQHByb3BlcnR5
Ci0gICAgZGVmIHJlbGxpbmUoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLmxpbmVubyAtIHNl
bGYuZnJhbWUuY29kZS5maXJzdGxpbmVubwotCi0gICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAg
ICAgICByZXR1cm4gIjxUcmFjZWJhY2tFbnRyeSAlczolZD4iICUgKHNlbGYuZnJhbWUuY29kZS5w
YXRoLCBzZWxmLmxpbmVubyArIDEpCi0KLSAgICBAcHJvcGVydHkKLSAgICBkZWYgc3RhdGVtZW50
KHNlbGYpOgotICAgICAgICAiIiIgX3B5dGVzdC5fY29kZS5Tb3VyY2Ugb2JqZWN0IGZvciB0aGUg
Y3VycmVudCBzdGF0ZW1lbnQgIiIiCi0gICAgICAgIHNvdXJjZSA9IHNlbGYuZnJhbWUuY29kZS5m
dWxsc291cmNlCi0gICAgICAgIHJldHVybiBzb3VyY2UuZ2V0c3RhdGVtZW50KHNlbGYubGluZW5v
KQotCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIHBhdGgoc2VsZik6Ci0gICAgICAgICIiIiBwYXRo
IHRvIHRoZSBzb3VyY2UgY29kZSAiIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuZnJhbWUuY29kZS5w
YXRoCi0KLSAgICBkZWYgZ2V0bG9jYWxzKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5mcmFt
ZS5mX2xvY2FscwotICAgIGxvY2FscyA9IHByb3BlcnR5KGdldGxvY2FscywgTm9uZSwgTm9uZSwg
ImxvY2FscyBvZiB1bmRlcmxheWluZyBmcmFtZSIpCi0KLSAgICBkZWYgZ2V0Zmlyc3RsaW5lc291
cmNlKHNlbGYpOgotICAgICAgICAjIG9uIEp5dGhvbiB0aGlzIGZpcnN0bGluZW5vIGNhbiBiZSAt
MSBhcHBhcmVudGx5Ci0gICAgICAgIHJldHVybiBtYXgoc2VsZi5mcmFtZS5jb2RlLmZpcnN0bGlu
ZW5vLCAwKQotCi0gICAgZGVmIGdldHNvdXJjZShzZWxmLCBhc3RjYWNoZT1Ob25lKToKLSAgICAg
ICAgIiIiIHJldHVybiBmYWlsaW5nIHNvdXJjZSBjb2RlLiAiIiIKLSAgICAgICAgIyB3ZSB1c2Ug
dGhlIHBhc3NlZCBpbiBhc3RjYWNoZSB0byBub3QgcmVwYXJzZSBhc3R0cmVlcwotICAgICAgICAj
IHdpdGhpbiBleGNlcHRpb24gaW5mbyBwcmludGluZwotICAgICAgICBmcm9tIF9weXRlc3QuX2Nv
ZGUuc291cmNlIGltcG9ydCBnZXRzdGF0ZW1lbnRyYW5nZV9hc3QKLSAgICAgICAgc291cmNlID0g
c2VsZi5mcmFtZS5jb2RlLmZ1bGxzb3VyY2UKLSAgICAgICAgaWYgc291cmNlIGlzIE5vbmU6Ci0g
ICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBrZXkgPSBhc3Rub2RlID0gTm9uZQotICAg
ICAgICBpZiBhc3RjYWNoZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGtleSA9IHNlbGYuZnJh
bWUuY29kZS5wYXRoCi0gICAgICAgICAgICBpZiBrZXkgaXMgbm90IE5vbmU6Ci0gICAgICAgICAg
ICAgICAgYXN0bm9kZSA9IGFzdGNhY2hlLmdldChrZXksIE5vbmUpCi0gICAgICAgIHN0YXJ0ID0g
c2VsZi5nZXRmaXJzdGxpbmVzb3VyY2UoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBhc3Ru
b2RlLCBfLCBlbmQgPSBnZXRzdGF0ZW1lbnRyYW5nZV9hc3Qoc2VsZi5saW5lbm8sIHNvdXJjZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3Ru
b2RlPWFzdG5vZGUpCi0gICAgICAgIGV4Y2VwdCBTeW50YXhFcnJvcjoKLSAgICAgICAgICAgIGVu
ZCA9IHNlbGYubGluZW5vICsgMQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYga2V5IGlz
IG5vdCBOb25lOgotICAgICAgICAgICAgICAgIGFzdGNhY2hlW2tleV0gPSBhc3Rub2RlCi0gICAg
ICAgIHJldHVybiBzb3VyY2Vbc3RhcnQ6ZW5kXQotCi0gICAgc291cmNlID0gcHJvcGVydHkoZ2V0
c291cmNlKQotCi0gICAgZGVmIGlzaGlkZGVuKHNlbGYpOgotICAgICAgICAiIiIgcmV0dXJuIFRy
dWUgaWYgdGhlIGN1cnJlbnQgZnJhbWUgaGFzIGEgdmFyIF9fdHJhY2ViYWNraGlkZV9fCi0gICAg
ICAgICAgICByZXNvbHZpbmcgdG8gVHJ1ZQotCi0gICAgICAgICAgICBJZiBfX3RyYWNlYmFja2hp
ZGVfXyBpcyBhIGNhbGxhYmxlLCBpdCBnZXRzIGNhbGxlZCB3aXRoIHRoZQotICAgICAgICAgICAg
RXhjZXB0aW9uSW5mbyBpbnN0YW5jZSBhbmQgY2FuIGRlY2lkZSB3aGV0aGVyIHRvIGhpZGUgdGhl
IHRyYWNlYmFjay4KLQotICAgICAgICAgICAgbW9zdGx5IGZvciBpbnRlcm5hbCB1c2UKLSAgICAg
ICAgIiIiCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHRiaCA9IHNlbGYuZnJhbWUuZl9sb2Nh
bHNbJ19fdHJhY2ViYWNraGlkZV9fJ10KLSAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHRiaCA9IHNlbGYuZnJhbWUuZl9nbG9iYWxzWydf
X3RyYWNlYmFja2hpZGVfXyddCi0gICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgaWYgY2FsbGFibGUodGJoKToKLSAgICAg
ICAgICAgIHJldHVybiB0YmgoTm9uZSBpZiBzZWxmLl9leGNpbmZvIGlzIE5vbmUgZWxzZSBzZWxm
Ll9leGNpbmZvKCkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gdGJoCi0KLSAg
ICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZm4gPSBzdHIo
c2VsZi5wYXRoKQotICAgICAgICBleGNlcHQgcHkuZXJyb3IuRXJyb3I6Ci0gICAgICAgICAgICBm
biA9ICc/Pz8nCi0gICAgICAgIG5hbWUgPSBzZWxmLmZyYW1lLmNvZGUubmFtZQotICAgICAgICB0
cnk6Ci0gICAgICAgICAgICBsaW5lID0gc3RyKHNlbGYuc3RhdGVtZW50KS5sc3RyaXAoKQotICAg
ICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgICAgICByYWlzZQotICAgICAg
ICBleGNlcHQ6ICAjIG5vcWEKLSAgICAgICAgICAgIGxpbmUgPSAiPz8/IgotICAgICAgICByZXR1
cm4gIiAgRmlsZSAlcjolZCBpbiAlc1xuICAlc1xuIiAlIChmbiwgc2VsZi5saW5lbm8gKyAxLCBu
YW1lLCBsaW5lKQotCi0gICAgZGVmIG5hbWUoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLmZy
YW1lLmNvZGUucmF3LmNvX25hbWUKLSAgICBuYW1lID0gcHJvcGVydHkobmFtZSwgTm9uZSwgTm9u
ZSwgImNvX25hbWUgb2YgdW5kZXJsYXlpbmcgY29kZSIpCi0KLQotY2xhc3MgVHJhY2ViYWNrKGxp
c3QpOgotICAgICIiIiBUcmFjZWJhY2sgb2JqZWN0cyBlbmNhcHN1bGF0ZSBhbmQgb2ZmZXIgaGln
aGVyIGxldmVsCi0gICAgICAgIGFjY2VzcyB0byBUcmFjZWJhY2sgZW50cmllcy4KLSAgICAiIiIK
LSAgICBFbnRyeSA9IFRyYWNlYmFja0VudHJ5Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgdGIs
IGV4Y2luZm89Tm9uZSk6Ci0gICAgICAgICIiIiBpbml0aWFsaXplIGZyb20gZ2l2ZW4gcHl0aG9u
IHRyYWNlYmFjayBvYmplY3QgYW5kIEV4Y2VwdGlvbkluZm8gIiIiCi0gICAgICAgIHNlbGYuX2V4
Y2luZm8gPSBleGNpbmZvCi0gICAgICAgIGlmIGhhc2F0dHIodGIsICd0Yl9uZXh0Jyk6Ci0gICAg
ICAgICAgICBkZWYgZihjdXIpOgotICAgICAgICAgICAgICAgIHdoaWxlIGN1ciBpcyBub3QgTm9u
ZToKLSAgICAgICAgICAgICAgICAgICAgeWllbGQgc2VsZi5FbnRyeShjdXIsIGV4Y2luZm89ZXhj
aW5mbykKLSAgICAgICAgICAgICAgICAgICAgY3VyID0gY3VyLnRiX25leHQKLSAgICAgICAgICAg
IGxpc3QuX19pbml0X18oc2VsZiwgZih0YikpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBs
aXN0Ll9faW5pdF9fKHNlbGYsIHRiKQotCi0gICAgZGVmIGN1dChzZWxmLCBwYXRoPU5vbmUsIGxp
bmVubz1Ob25lLCBmaXJzdGxpbmVubz1Ob25lLCBleGNsdWRlcGF0aD1Ob25lKToKLSAgICAgICAg
IiIiIHJldHVybiBhIFRyYWNlYmFjayBpbnN0YW5jZSB3cmFwcGluZyBwYXJ0IG9mIHRoaXMgVHJh
Y2ViYWNrCi0KLSAgICAgICAgICAgIGJ5IHByb3ZkaW5nIGFueSBjb21iaW5hdGlvbiBvZiBwYXRo
LCBsaW5lbm8gYW5kIGZpcnN0bGluZW5vLCB0aGUKLSAgICAgICAgICAgIGZpcnN0IGZyYW1lIHRv
IHN0YXJ0IHRoZSB0by1iZS1yZXR1cm5lZCB0cmFjZWJhY2sgaXMgZGV0ZXJtaW5lZAotCi0gICAg
ICAgICAgICB0aGlzIGFsbG93cyBjdXR0aW5nIHRoZSBmaXJzdCBwYXJ0IG9mIGEgVHJhY2ViYWNr
IGluc3RhbmNlIGUuZy4KLSAgICAgICAgICAgIGZvciBmb3JtYXR0aW5nIHJlYXNvbnMgKHJlbW92
aW5nIHNvbWUgdW5pbnRlcmVzdGluZyBiaXRzIHRoYXQgZGVhbAotICAgICAgICAgICAgd2l0aCBo
YW5kbGluZyBvZiB0aGUgZXhjZXB0aW9uL3RyYWNlYmFjaykKLSAgICAgICAgIiIiCi0gICAgICAg
IGZvciB4IGluIHNlbGY6Ci0gICAgICAgICAgICBjb2RlID0geC5mcmFtZS5jb2RlCi0gICAgICAg
ICAgICBjb2RlcGF0aCA9IGNvZGUucGF0aAotICAgICAgICAgICAgaWYgKChwYXRoIGlzIE5vbmUg
b3IgY29kZXBhdGggPT0gcGF0aCkgYW5kCi0gICAgICAgICAgICAgICAgKGV4Y2x1ZGVwYXRoIGlz
IE5vbmUgb3Igbm90IGhhc2F0dHIoY29kZXBhdGgsICdyZWx0bycpIG9yCi0gICAgICAgICAgICAg
ICAgIG5vdCBjb2RlcGF0aC5yZWx0byhleGNsdWRlcGF0aCkpIGFuZAotICAgICAgICAgICAgICAg
IChsaW5lbm8gaXMgTm9uZSBvciB4LmxpbmVubyA9PSBsaW5lbm8pIGFuZAotICAgICAgICAgICAg
ICAgICAgICAoZmlyc3RsaW5lbm8gaXMgTm9uZSBvciB4LmZyYW1lLmNvZGUuZmlyc3RsaW5lbm8g
PT0gZmlyc3RsaW5lbm8pKToKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJhY2ViYWNrKHguX3Jh
d2VudHJ5LCBzZWxmLl9leGNpbmZvKQotICAgICAgICByZXR1cm4gc2VsZgotCi0gICAgZGVmIF9f
Z2V0aXRlbV9fKHNlbGYsIGtleSk6Ci0gICAgICAgIHZhbCA9IHN1cGVyKFRyYWNlYmFjaywgc2Vs
ZikuX19nZXRpdGVtX18oa2V5KQotICAgICAgICBpZiBpc2luc3RhbmNlKGtleSwgdHlwZShzbGlj
ZSgwKSkpOgotICAgICAgICAgICAgdmFsID0gc2VsZi5fX2NsYXNzX18odmFsKQotICAgICAgICBy
ZXR1cm4gdmFsCi0KLSAgICBkZWYgZmlsdGVyKHNlbGYsIGZuPWxhbWJkYSB4OiBub3QgeC5pc2hp
ZGRlbigpKToKLSAgICAgICAgIiIiIHJldHVybiBhIFRyYWNlYmFjayBpbnN0YW5jZSB3aXRoIGNl
cnRhaW4gaXRlbXMgcmVtb3ZlZAotCi0gICAgICAgICAgICBmbiBpcyBhIGZ1bmN0aW9uIHRoYXQg
Z2V0cyBhIHNpbmdsZSBhcmd1bWVudCwgYSBUcmFjZWJhY2tFbnRyeQotICAgICAgICAgICAgaW5z
dGFuY2UsIGFuZCBzaG91bGQgcmV0dXJuIFRydWUgd2hlbiB0aGUgaXRlbSBzaG91bGQgYmUgYWRk
ZWQKLSAgICAgICAgICAgIHRvIHRoZSBUcmFjZWJhY2ssIEZhbHNlIHdoZW4gbm90Ci0KLSAgICAg
ICAgICAgIGJ5IGRlZmF1bHQgdGhpcyByZW1vdmVzIGFsbCB0aGUgVHJhY2ViYWNrRW50cmllcyB3
aGljaCBhcmUgaGlkZGVuCi0gICAgICAgICAgICAoc2VlIGlzaGlkZGVuKCkgYWJvdmUpCi0gICAg
ICAgICIiIgotICAgICAgICByZXR1cm4gVHJhY2ViYWNrKGZpbHRlcihmbiwgc2VsZiksIHNlbGYu
X2V4Y2luZm8pCi0KLSAgICBkZWYgZ2V0Y3Jhc2hlbnRyeShzZWxmKToKLSAgICAgICAgIiIiIHJl
dHVybiBsYXN0IG5vbi1oaWRkZW4gdHJhY2ViYWNrIGVudHJ5IHRoYXQgbGVhZAotICAgICAgICB0
byB0aGUgZXhjZXB0aW9uIG9mIGEgdHJhY2ViYWNrLgotICAgICAgICAiIiIKLSAgICAgICAgZm9y
IGkgaW4gcmFuZ2UoLTEsIC1sZW4oc2VsZikgLSAxLCAtMSk6Ci0gICAgICAgICAgICBlbnRyeSA9
IHNlbGZbaV0KLSAgICAgICAgICAgIGlmIG5vdCBlbnRyeS5pc2hpZGRlbigpOgotICAgICAgICAg
ICAgICAgIHJldHVybiBlbnRyeQotICAgICAgICByZXR1cm4gc2VsZlstMV0KLQotICAgIGRlZiBy
ZWN1cnNpb25pbmRleChzZWxmKToKLSAgICAgICAgIiIiIHJldHVybiB0aGUgaW5kZXggb2YgdGhl
IGZyYW1lL1RyYWNlYmFja0VudHJ5IHdoZXJlIHJlY3Vyc2lvbgotICAgICAgICAgICAgb3JpZ2lu
YXRlcyBpZiBhcHByb3ByaWF0ZSwgTm9uZSBpZiBubyByZWN1cnNpb24gb2NjdXJyZWQKLSAgICAg
ICAgIiIiCi0gICAgICAgIGNhY2hlID0ge30KLSAgICAgICAgZm9yIGksIGVudHJ5IGluIGVudW1l
cmF0ZShzZWxmKToKLSAgICAgICAgICAgICMgaWQgZm9yIHRoZSBjb2RlLnJhdyBpcyBuZWVkZWQg
dG8gd29yayBhcm91bmQKLSAgICAgICAgICAgICMgdGhlIHN0cmFuZ2UgbWV0YXByb2dyYW1taW5n
IGluIHRoZSBkZWNvcmF0b3IgbGliIGZyb20gcHlwaQotICAgICAgICAgICAgIyB3aGljaCBnZW5l
cmF0ZXMgY29kZSBvYmplY3RzIHRoYXQgaGF2ZSBoYXNoL3ZhbHVlIGVxdWFsaXR5Ci0gICAgICAg
ICAgICAjIFhYWCBuZWVkcyBhIHRlc3QKLSAgICAgICAgICAgIGtleSA9IGVudHJ5LmZyYW1lLmNv
ZGUucGF0aCwgaWQoZW50cnkuZnJhbWUuY29kZS5yYXcpLCBlbnRyeS5saW5lbm8KLSAgICAgICAg
ICAgICMgcHJpbnQgImNoZWNraW5nIGZvciByZWN1cnNpb24gYXQiLCBrZXkKLSAgICAgICAgICAg
IHZhbHVlcyA9IGNhY2hlLnNldGRlZmF1bHQoa2V5LCBbXSkKLSAgICAgICAgICAgIGlmIHZhbHVl
czoKLSAgICAgICAgICAgICAgICBmID0gZW50cnkuZnJhbWUKLSAgICAgICAgICAgICAgICBsb2Mg
PSBmLmZfbG9jYWxzCi0gICAgICAgICAgICAgICAgZm9yIG90aGVybG9jIGluIHZhbHVlczoKLSAg
ICAgICAgICAgICAgICAgICAgaWYgZi5pc190cnVlKGYuZXZhbChjb19lcXVhbCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3JlY3Vyc2lvbmNhY2hlX2xvY2Fsc18x
PWxvYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3JlY3Vyc2lv
bmNhY2hlX2xvY2Fsc18yPW90aGVybG9jKSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gaQotICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChlbnRyeS5mcmFtZS5mX2xvY2FscykKLSAg
ICAgICAgcmV0dXJuIE5vbmUKLQotCi1jb19lcXVhbCA9IGNvbXBpbGUoJ19fcmVjdXJzaW9uY2Fj
aGVfbG9jYWxzXzEgPT0gX19yZWN1cnNpb25jYWNoZV9sb2NhbHNfMicsCi0gICAgICAgICAgICAg
ICAgICAgJz8nLCAnZXZhbCcpCi0KLQotY2xhc3MgRXhjZXB0aW9uSW5mbyhvYmplY3QpOgotICAg
ICIiIiB3cmFwcyBzeXMuZXhjX2luZm8oKSBvYmplY3RzIGFuZCBvZmZlcnMKLSAgICAgICAgaGVs
cCBmb3IgbmF2aWdhdGluZyB0aGUgdHJhY2ViYWNrLgotICAgICIiIgotICAgIF9zdHJpcHRleHQg
PSAnJwotICAgIF9hc3NlcnRfc3RhcnRfcmVwciA9ICJBc3NlcnRpb25FcnJvcih1XCdhc3NlcnQg
IiBpZiBfUFkyIGVsc2UgIkFzc2VydGlvbkVycm9yKFwnYXNzZXJ0ICIKLQotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCB0dXA9Tm9uZSwgZXhwcmluZm89Tm9uZSk6Ci0gICAgICAgIGltcG9ydCBfcHl0
ZXN0Ll9jb2RlCi0gICAgICAgIGlmIHR1cCBpcyBOb25lOgotICAgICAgICAgICAgdHVwID0gc3lz
LmV4Y19pbmZvKCkKLSAgICAgICAgICAgIGlmIGV4cHJpbmZvIGlzIE5vbmUgYW5kIGlzaW5zdGFu
Y2UodHVwWzFdLCBBc3NlcnRpb25FcnJvcik6Ci0gICAgICAgICAgICAgICAgZXhwcmluZm8gPSBn
ZXRhdHRyKHR1cFsxXSwgJ21zZycsIE5vbmUpCi0gICAgICAgICAgICAgICAgaWYgZXhwcmluZm8g
aXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgZXhwcmluZm8gPSBweS5pby5zYWZlcmVwcih0
dXBbMV0pCi0gICAgICAgICAgICAgICAgaWYgZXhwcmluZm8gYW5kIGV4cHJpbmZvLnN0YXJ0c3dp
dGgoc2VsZi5fYXNzZXJ0X3N0YXJ0X3JlcHIpOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9z
dHJpcHRleHQgPSAnQXNzZXJ0aW9uRXJyb3I6ICcKLSAgICAgICAgc2VsZi5fZXhjaW5mbyA9IHR1
cAotICAgICAgICAjOiB0aGUgZXhjZXB0aW9uIGNsYXNzCi0gICAgICAgIHNlbGYudHlwZSA9IHR1
cFswXQotICAgICAgICAjOiB0aGUgZXhjZXB0aW9uIGluc3RhbmNlCi0gICAgICAgIHNlbGYudmFs
dWUgPSB0dXBbMV0KLSAgICAgICAgIzogdGhlIGV4Y2VwdGlvbiByYXcgdHJhY2ViYWNrCi0gICAg
ICAgIHNlbGYudGIgPSB0dXBbMl0KLSAgICAgICAgIzogdGhlIGV4Y2VwdGlvbiB0eXBlIG5hbWUK
LSAgICAgICAgc2VsZi50eXBlbmFtZSA9IHNlbGYudHlwZS5fX25hbWVfXwotICAgICAgICAjOiB0
aGUgZXhjZXB0aW9uIHRyYWNlYmFjayAoX3B5dGVzdC5fY29kZS5UcmFjZWJhY2sgaW5zdGFuY2Up
Ci0gICAgICAgIHNlbGYudHJhY2ViYWNrID0gX3B5dGVzdC5fY29kZS5UcmFjZWJhY2soc2VsZi50
YiwgZXhjaW5mbz1yZWYoc2VsZikpCi0KLSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAg
IHJldHVybiAiPEV4Y2VwdGlvbkluZm8gJXMgdGJsZW49JWQ+IiAlIChzZWxmLnR5cGVuYW1lLCBs
ZW4oc2VsZi50cmFjZWJhY2spKQotCi0gICAgZGVmIGV4Y29ubHkoc2VsZiwgdHJ5c2hvcnQ9RmFs
c2UpOgotICAgICAgICAiIiIgcmV0dXJuIHRoZSBleGNlcHRpb24gYXMgYSBzdHJpbmcKLQotICAg
ICAgICAgICAgd2hlbiAndHJ5c2hvcnQnIHJlc29sdmVzIHRvIFRydWUsIGFuZCB0aGUgZXhjZXB0
aW9uIGlzIGEKLSAgICAgICAgICAgIF9weXRlc3QuX2NvZGUuX0Fzc2VydGlvbkVycm9yLCBvbmx5
IHRoZSBhY3R1YWwgZXhjZXB0aW9uIHBhcnQgb2YKLSAgICAgICAgICAgIHRoZSBleGNlcHRpb24g
cmVwcmVzZW50YXRpb24gaXMgcmV0dXJuZWQgKHNvICdBc3NlcnRpb25FcnJvcjogJyBpcwotICAg
ICAgICAgICAgcmVtb3ZlZCBmcm9tIHRoZSBiZWdpbm5pbmcpCi0gICAgICAgICIiIgotICAgICAg
ICBsaW5lcyA9IGZvcm1hdF9leGNlcHRpb25fb25seShzZWxmLnR5cGUsIHNlbGYudmFsdWUpCi0g
ICAgICAgIHRleHQgPSAnJy5qb2luKGxpbmVzKQotICAgICAgICB0ZXh0ID0gdGV4dC5yc3RyaXAo
KQotICAgICAgICBpZiB0cnlzaG9ydDoKLSAgICAgICAgICAgIGlmIHRleHQuc3RhcnRzd2l0aChz
ZWxmLl9zdHJpcHRleHQpOgotICAgICAgICAgICAgICAgIHRleHQgPSB0ZXh0W2xlbihzZWxmLl9z
dHJpcHRleHQpOl0KLSAgICAgICAgcmV0dXJuIHRleHQKLQotICAgIGRlZiBlcnJpc2luc3RhbmNl
KHNlbGYsIGV4Yyk6Ci0gICAgICAgICIiIiByZXR1cm4gVHJ1ZSBpZiB0aGUgZXhjZXB0aW9uIGlz
IGFuIGluc3RhbmNlIG9mIGV4YyAiIiIKLSAgICAgICAgcmV0dXJuIGlzaW5zdGFuY2Uoc2VsZi52
YWx1ZSwgZXhjKQotCi0gICAgZGVmIF9nZXRyZXByY3Jhc2goc2VsZik6Ci0gICAgICAgIGV4Y29u
bHkgPSBzZWxmLmV4Y29ubHkodHJ5c2hvcnQ9VHJ1ZSkKLSAgICAgICAgZW50cnkgPSBzZWxmLnRy
YWNlYmFjay5nZXRjcmFzaGVudHJ5KCkKLSAgICAgICAgcGF0aCwgbGluZW5vID0gZW50cnkuZnJh
bWUuY29kZS5yYXcuY29fZmlsZW5hbWUsIGVudHJ5LmxpbmVubwotICAgICAgICByZXR1cm4gUmVw
ckZpbGVMb2NhdGlvbihwYXRoLCBsaW5lbm8gKyAxLCBleGNvbmx5KQotCi0gICAgZGVmIGdldHJl
cHIoc2VsZiwgc2hvd2xvY2Fscz1GYWxzZSwgc3R5bGU9ImxvbmciLAotICAgICAgICAgICAgICAg
IGFic3BhdGg9RmFsc2UsIHRiZmlsdGVyPVRydWUsIGZ1bmNhcmdzPUZhbHNlKToKLSAgICAgICAg
IiIiIHJldHVybiBzdHIoKWFibGUgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBleGNlcHRpb24gaW5m
by4KLSAgICAgICAgICAgIHNob3dsb2NhbHM6IHNob3cgbG9jYWxzIHBlciB0cmFjZWJhY2sgZW50
cnkKLSAgICAgICAgICAgIHN0eWxlOiBsb25nfHNob3J0fG5vfG5hdGl2ZSB0cmFjZWJhY2sgc3R5
bGUKLSAgICAgICAgICAgIHRiZmlsdGVyOiBoaWRlIGVudHJpZXMgKHdoZXJlIF9fdHJhY2ViYWNr
aGlkZV9fIGlzIHRydWUpCi0KLSAgICAgICAgICAgIGluIGNhc2Ugb2Ygc3R5bGU9PW5hdGl2ZSwg
dGJmaWx0ZXIgYW5kIHNob3dsb2NhbHMgaXMgaWdub3JlZC4KLSAgICAgICAgIiIiCi0gICAgICAg
IGlmIHN0eWxlID09ICduYXRpdmUnOgotICAgICAgICAgICAgcmV0dXJuIFJlcHJFeGNlcHRpb25J
bmZvKFJlcHJUcmFjZWJhY2tOYXRpdmUoCi0gICAgICAgICAgICAgICAgcHkuc3RkLnRyYWNlYmFj
ay5mb3JtYXRfZXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICAgICBzZWxmLnR5cGUsCi0gICAg
ICAgICAgICAgICAgICAgIHNlbGYudmFsdWUsCi0gICAgICAgICAgICAgICAgICAgIHNlbGYudHJh
Y2ViYWNrWzBdLl9yYXdlbnRyeSwKLSAgICAgICAgICAgICAgICApKSwgc2VsZi5fZ2V0cmVwcmNy
YXNoKCkpCi0KLSAgICAgICAgZm10ID0gRm9ybWF0dGVkRXhjaW5mbyhzaG93bG9jYWxzPXNob3ds
b2NhbHMsIHN0eWxlPXN0eWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic3Bh
dGg9YWJzcGF0aCwgdGJmaWx0ZXI9dGJmaWx0ZXIsIGZ1bmNhcmdzPWZ1bmNhcmdzKQotICAgICAg
ICByZXR1cm4gZm10LnJlcHJfZXhjaW5mbyhzZWxmKQotCi0gICAgZGVmIF9fc3RyX18oc2VsZik6
Ci0gICAgICAgIGVudHJ5ID0gc2VsZi50cmFjZWJhY2tbLTFdCi0gICAgICAgIGxvYyA9IFJlcHJG
aWxlTG9jYXRpb24oZW50cnkucGF0aCwgZW50cnkubGluZW5vICsgMSwgc2VsZi5leGNvbmx5KCkp
Ci0gICAgICAgIHJldHVybiBzdHIobG9jKQotCi0gICAgZGVmIF9fdW5pY29kZV9fKHNlbGYpOgot
ICAgICAgICBlbnRyeSA9IHNlbGYudHJhY2ViYWNrWy0xXQotICAgICAgICBsb2MgPSBSZXByRmls
ZUxvY2F0aW9uKGVudHJ5LnBhdGgsIGVudHJ5LmxpbmVubyArIDEsIHNlbGYuZXhjb25seSgpKQot
ICAgICAgICByZXR1cm4gdW5pY29kZShsb2MpCi0KLSAgICBkZWYgbWF0Y2goc2VsZiwgcmVnZXhw
KToKLSAgICAgICAgIiIiCi0gICAgICAgIE1hdGNoIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gJ3Jl
Z2V4cCcgb24gdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZgotICAgICAgICB0aGUgZXhjZXB0
aW9uLiBJZiBpdCBtYXRjaGVzIHRoZW4gVHJ1ZSBpcyByZXR1cm5lZCAoc28gdGhhdCBpdCBpcwot
ICAgICAgICBwb3NzaWJsZSB0byB3cml0ZSAnYXNzZXJ0IGV4Y2luZm8ubWF0Y2goKScpLiBJZiBp
dCBkb2Vzbid0IG1hdGNoIGFuCi0gICAgICAgIEFzc2VydGlvbkVycm9yIGlzIHJhaXNlZC4KLSAg
ICAgICAgIiIiCi0gICAgICAgIF9fdHJhY2ViYWNraGlkZV9fID0gVHJ1ZQotICAgICAgICBpZiBu
b3QgcmUuc2VhcmNoKHJlZ2V4cCwgc3RyKHNlbGYudmFsdWUpKToKLSAgICAgICAgICAgIGFzc2Vy
dCAwLCAiUGF0dGVybiAnezAhc30nIG5vdCBmb3VuZCBpbiAnezEhc30nIi5mb3JtYXQoCi0gICAg
ICAgICAgICAgICAgcmVnZXhwLCBzZWxmLnZhbHVlKQotICAgICAgICByZXR1cm4gVHJ1ZQotCi0K
LWNsYXNzIEZvcm1hdHRlZEV4Y2luZm8ob2JqZWN0KToKLSAgICAiIiIgcHJlc2VudGluZyBpbmZv
cm1hdGlvbiBhYm91dCBmYWlsaW5nIEZ1bmN0aW9ucyBhbmQgR2VuZXJhdG9ycy4gIiIiCi0gICAg
IyBmb3IgdHJhY2ViYWNrIGVudHJpZXMKLSAgICBmbG93X21hcmtlciA9ICI+IgotICAgIGZhaWxf
bWFya2VyID0gIkUiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgc2hvd2xvY2Fscz1GYWxzZSwg
c3R5bGU9ImxvbmciLCBhYnNwYXRoPVRydWUsIHRiZmlsdGVyPVRydWUsIGZ1bmNhcmdzPUZhbHNl
KToKLSAgICAgICAgc2VsZi5zaG93bG9jYWxzID0gc2hvd2xvY2FscwotICAgICAgICBzZWxmLnN0
eWxlID0gc3R5bGUKLSAgICAgICAgc2VsZi50YmZpbHRlciA9IHRiZmlsdGVyCi0gICAgICAgIHNl
bGYuZnVuY2FyZ3MgPSBmdW5jYXJncwotICAgICAgICBzZWxmLmFic3BhdGggPSBhYnNwYXRoCi0g
ICAgICAgIHNlbGYuYXN0Y2FjaGUgPSB7fQotCi0gICAgZGVmIF9nZXRpbmRlbnQoc2VsZiwgc291
cmNlKToKLSAgICAgICAgIyBmaWd1cmUgb3V0IGluZGVudCBmb3IgZ2l2ZW4gc291cmNlCi0gICAg
ICAgIHRyeToKLSAgICAgICAgICAgIHMgPSBzdHIoc291cmNlLmdldHN0YXRlbWVudChsZW4oc291
cmNlKSAtIDEpKQotICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgICAg
ICByYWlzZQotICAgICAgICBleGNlcHQ6ICAjIG5vcWEKLSAgICAgICAgICAgIHRyeToKLSAgICAg
ICAgICAgICAgICBzID0gc3RyKHNvdXJjZVstMV0pCi0gICAgICAgICAgICBleGNlcHQgS2V5Ym9h
cmRJbnRlcnJ1cHQ6Ci0gICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgIGV4Y2VwdDog
ICMgbm9xYQotICAgICAgICAgICAgICAgIHJldHVybiAwCi0gICAgICAgIHJldHVybiA0ICsgKGxl
bihzKSAtIGxlbihzLmxzdHJpcCgpKSkKLQotICAgIGRlZiBfZ2V0ZW50cnlzb3VyY2Uoc2VsZiwg
ZW50cnkpOgotICAgICAgICBzb3VyY2UgPSBlbnRyeS5nZXRzb3VyY2Uoc2VsZi5hc3RjYWNoZSkK
LSAgICAgICAgaWYgc291cmNlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc291cmNlID0gc291
cmNlLmRlaW5kZW50KCkKLSAgICAgICAgcmV0dXJuIHNvdXJjZQotCi0gICAgZGVmIF9zYWZlcmVw
cihzZWxmLCBvYmopOgotICAgICAgICByZXR1cm4gcHkuaW8uc2FmZXJlcHIob2JqKQotCi0gICAg
ZGVmIHJlcHJfYXJncyhzZWxmLCBlbnRyeSk6Ci0gICAgICAgIGlmIHNlbGYuZnVuY2FyZ3M6Ci0g
ICAgICAgICAgICBhcmdzID0gW10KLSAgICAgICAgICAgIGZvciBhcmduYW1lLCBhcmd2YWx1ZSBp
biBlbnRyeS5mcmFtZS5nZXRhcmdzKHZhcj1UcnVlKToKLSAgICAgICAgICAgICAgICBhcmdzLmFw
cGVuZCgoYXJnbmFtZSwgc2VsZi5fc2FmZXJlcHIoYXJndmFsdWUpKSkKLSAgICAgICAgICAgIHJl
dHVybiBSZXByRnVuY0FyZ3MoYXJncykKLQotICAgIGRlZiBnZXRfc291cmNlKHNlbGYsIHNvdXJj
ZSwgbGluZV9pbmRleD0tMSwgZXhjaW5mbz1Ob25lLCBzaG9ydD1GYWxzZSk6Ci0gICAgICAgICIi
IiByZXR1cm4gZm9ybWF0dGVkIGFuZCBtYXJrZWQgdXAgc291cmNlIGxpbmVzLiAiIiIKLSAgICAg
ICAgaW1wb3J0IF9weXRlc3QuX2NvZGUKLSAgICAgICAgbGluZXMgPSBbXQotICAgICAgICBpZiBz
b3VyY2UgaXMgTm9uZSBvciBsaW5lX2luZGV4ID49IGxlbihzb3VyY2UubGluZXMpOgotICAgICAg
ICAgICAgc291cmNlID0gX3B5dGVzdC5fY29kZS5Tb3VyY2UoIj8/PyIpCi0gICAgICAgICAgICBs
aW5lX2luZGV4ID0gMAotICAgICAgICBpZiBsaW5lX2luZGV4IDwgMDoKLSAgICAgICAgICAgIGxp
bmVfaW5kZXggKz0gbGVuKHNvdXJjZSkKLSAgICAgICAgc3BhY2VfcHJlZml4ID0gIiAgICAiCi0g
ICAgICAgIGlmIHNob3J0OgotICAgICAgICAgICAgbGluZXMuYXBwZW5kKHNwYWNlX3ByZWZpeCAr
IHNvdXJjZS5saW5lc1tsaW5lX2luZGV4XS5zdHJpcCgpKQotICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgZm9yIGxpbmUgaW4gc291cmNlLmxpbmVzWzpsaW5lX2luZGV4XToKLSAgICAgICAgICAg
ICAgICBsaW5lcy5hcHBlbmQoc3BhY2VfcHJlZml4ICsgbGluZSkKLSAgICAgICAgICAgIGxpbmVz
LmFwcGVuZChzZWxmLmZsb3dfbWFya2VyICsgIiAgICIgKyBzb3VyY2UubGluZXNbbGluZV9pbmRl
eF0pCi0gICAgICAgICAgICBmb3IgbGluZSBpbiBzb3VyY2UubGluZXNbbGluZV9pbmRleCArIDE6
XToKLSAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoc3BhY2VfcHJlZml4ICsgbGluZSkKLSAg
ICAgICAgaWYgZXhjaW5mbyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGluZGVudCA9IDQgaWYg
c2hvcnQgZWxzZSBzZWxmLl9nZXRpbmRlbnQoc291cmNlKQotICAgICAgICAgICAgbGluZXMuZXh0
ZW5kKHNlbGYuZ2V0X2V4Y29ubHkoZXhjaW5mbywgaW5kZW50PWluZGVudCwgbWFya2FsbD1UcnVl
KSkKLSAgICAgICAgcmV0dXJuIGxpbmVzCi0KLSAgICBkZWYgZ2V0X2V4Y29ubHkoc2VsZiwgZXhj
aW5mbywgaW5kZW50PTQsIG1hcmthbGw9RmFsc2UpOgotICAgICAgICBsaW5lcyA9IFtdCi0gICAg
ICAgIGluZGVudCA9ICIgIiAqIGluZGVudAotICAgICAgICAjIGdldCB0aGUgcmVhbCBleGNlcHRp
b24gaW5mb3JtYXRpb24gb3V0Ci0gICAgICAgIGV4bGluZXMgPSBleGNpbmZvLmV4Y29ubHkodHJ5
c2hvcnQ9VHJ1ZSkuc3BsaXQoJ1xuJykKLSAgICAgICAgZmFpbGluZGVudCA9IHNlbGYuZmFpbF9t
YXJrZXIgKyBpbmRlbnRbMTpdCi0gICAgICAgIGZvciBsaW5lIGluIGV4bGluZXM6Ci0gICAgICAg
ICAgICBsaW5lcy5hcHBlbmQoZmFpbGluZGVudCArIGxpbmUpCi0gICAgICAgICAgICBpZiBub3Qg
bWFya2FsbDoKLSAgICAgICAgICAgICAgICBmYWlsaW5kZW50ID0gaW5kZW50Ci0gICAgICAgIHJl
dHVybiBsaW5lcwotCi0gICAgZGVmIHJlcHJfbG9jYWxzKHNlbGYsIGxvY2Fscyk6Ci0gICAgICAg
IGlmIHNlbGYuc2hvd2xvY2FsczoKLSAgICAgICAgICAgIGxpbmVzID0gW10KLSAgICAgICAgICAg
IGtleXMgPSBbbG9jIGZvciBsb2MgaW4gbG9jYWxzIGlmIGxvY1swXSAhPSAiQCJdCi0gICAgICAg
ICAgICBrZXlzLnNvcnQoKQotICAgICAgICAgICAgZm9yIG5hbWUgaW4ga2V5czoKLSAgICAgICAg
ICAgICAgICB2YWx1ZSA9IGxvY2Fsc1tuYW1lXQotICAgICAgICAgICAgICAgIGlmIG5hbWUgPT0g
J19fYnVpbHRpbnNfXyc6Ci0gICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgiX19idWls
dGluc19fID0gPGJ1aWx0aW5zPiIpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAg
ICAgICAgICAgIyBUaGlzIGZvcm1hdHRpbmcgY291bGQgYWxsIGJlIGhhbmRsZWQgYnkgdGhlCi0g
ICAgICAgICAgICAgICAgICAgICMgX3JlcHIoKSBmdW5jdGlvbiwgd2hpY2ggaXMgb25seSByZXBy
bGliLlJlcHIgaW4KLSAgICAgICAgICAgICAgICAgICAgIyBkaXNndWlzZSwgc28gaXMgdmVyeSBj
b25maWd1cmFibGUuCi0gICAgICAgICAgICAgICAgICAgIHN0cl9yZXByID0gc2VsZi5fc2FmZXJl
cHIodmFsdWUpCi0gICAgICAgICAgICAgICAgICAgICMgaWYgbGVuKHN0cl9yZXByKSA8IDcwIG9y
IG5vdCBpc2luc3RhbmNlKHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChsaXN0LCB0dXBsZSwgZGljdCkpOgotICAgICAgICAgICAgICAgICAg
ICBsaW5lcy5hcHBlbmQoIiUtMTBzID0gJXMiICUgKG5hbWUsIHN0cl9yZXByKSkKLSAgICAgICAg
ICAgICAgICAgICAgIyBlbHNlOgotICAgICAgICAgICAgICAgICAgICAjICAgIHNlbGYuX2xpbmUo
IiUtMTBzID1cXCIgJSAobmFtZSwpKQotICAgICAgICAgICAgICAgICAgICAjICAgICMgWFhYCi0g
ICAgICAgICAgICAgICAgICAgICMgICAgcHkuc3RkLnBwcmludC5wcHJpbnQodmFsdWUsIHN0cmVh
bT1zZWxmLmV4Y2luZm93cml0ZXIpCi0gICAgICAgICAgICByZXR1cm4gUmVwckxvY2FscyhsaW5l
cykKLQotICAgIGRlZiByZXByX3RyYWNlYmFja19lbnRyeShzZWxmLCBlbnRyeSwgZXhjaW5mbz1O
b25lKToKLSAgICAgICAgaW1wb3J0IF9weXRlc3QuX2NvZGUKLSAgICAgICAgc291cmNlID0gc2Vs
Zi5fZ2V0ZW50cnlzb3VyY2UoZW50cnkpCi0gICAgICAgIGlmIHNvdXJjZSBpcyBOb25lOgotICAg
ICAgICAgICAgc291cmNlID0gX3B5dGVzdC5fY29kZS5Tb3VyY2UoIj8/PyIpCi0gICAgICAgICAg
ICBsaW5lX2luZGV4ID0gMAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBlbnRyeS5nZXRm
aXJzdGxpbmVzb3VyY2UoKSBjYW4gYmUgLTEsIHNob3VsZCBiZSAwIG9uIGp5dGhvbgotICAgICAg
ICAgICAgbGluZV9pbmRleCA9IGVudHJ5LmxpbmVubyAtIG1heChlbnRyeS5nZXRmaXJzdGxpbmVz
b3VyY2UoKSwgMCkKLQotICAgICAgICBsaW5lcyA9IFtdCi0gICAgICAgIHN0eWxlID0gZW50cnku
X3JlcHJfc3R5bGUKLSAgICAgICAgaWYgc3R5bGUgaXMgTm9uZToKLSAgICAgICAgICAgIHN0eWxl
ID0gc2VsZi5zdHlsZQotICAgICAgICBpZiBzdHlsZSBpbiAoInNob3J0IiwgImxvbmciKToKLSAg
ICAgICAgICAgIHNob3J0ID0gc3R5bGUgPT0gInNob3J0IgotICAgICAgICAgICAgcmVwcmFyZ3Mg
PSBzZWxmLnJlcHJfYXJncyhlbnRyeSkgaWYgbm90IHNob3J0IGVsc2UgTm9uZQotICAgICAgICAg
ICAgcyA9IHNlbGYuZ2V0X3NvdXJjZShzb3VyY2UsIGxpbmVfaW5kZXgsIGV4Y2luZm8sIHNob3J0
PXNob3J0KQotICAgICAgICAgICAgbGluZXMuZXh0ZW5kKHMpCi0gICAgICAgICAgICBpZiBzaG9y
dDoKLSAgICAgICAgICAgICAgICBtZXNzYWdlID0gImluICVzIiAlIChlbnRyeS5uYW1lKQotICAg
ICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBtZXNzYWdlID0gZXhjaW5mbyBhbmQgZXhj
aW5mby50eXBlbmFtZSBvciAiIgotICAgICAgICAgICAgcGF0aCA9IHNlbGYuX21ha2VwYXRoKGVu
dHJ5LnBhdGgpCi0gICAgICAgICAgICBmaWxlbG9jcmVwciA9IFJlcHJGaWxlTG9jYXRpb24ocGF0
aCwgZW50cnkubGluZW5vICsgMSwgbWVzc2FnZSkKLSAgICAgICAgICAgIGxvY2Fsc3JlcHIgPSBO
b25lCi0gICAgICAgICAgICBpZiBub3Qgc2hvcnQ6Ci0gICAgICAgICAgICAgICAgbG9jYWxzcmVw
ciA9IHNlbGYucmVwcl9sb2NhbHMoZW50cnkubG9jYWxzKQotICAgICAgICAgICAgcmV0dXJuIFJl
cHJFbnRyeShsaW5lcywgcmVwcmFyZ3MsIGxvY2Fsc3JlcHIsIGZpbGVsb2NyZXByLCBzdHlsZSkK
LSAgICAgICAgaWYgZXhjaW5mbzoKLSAgICAgICAgICAgIGxpbmVzLmV4dGVuZChzZWxmLmdldF9l
eGNvbmx5KGV4Y2luZm8sIGluZGVudD00KSkKLSAgICAgICAgcmV0dXJuIFJlcHJFbnRyeShsaW5l
cywgTm9uZSwgTm9uZSwgTm9uZSwgc3R5bGUpCi0KLSAgICBkZWYgX21ha2VwYXRoKHNlbGYsIHBh
dGgpOgotICAgICAgICBpZiBub3Qgc2VsZi5hYnNwYXRoOgotICAgICAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgICAgIG5wID0gcHkucGF0aC5sb2NhbCgpLmJlc3RyZWxwYXRoKHBhdGgpCi0gICAg
ICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgICAgICByZXR1cm4gcGF0aAotICAg
ICAgICAgICAgaWYgbGVuKG5wKSA8IGxlbihzdHIocGF0aCkpOgotICAgICAgICAgICAgICAgIHBh
dGggPSBucAotICAgICAgICByZXR1cm4gcGF0aAotCi0gICAgZGVmIHJlcHJfdHJhY2ViYWNrKHNl
bGYsIGV4Y2luZm8pOgotICAgICAgICB0cmFjZWJhY2sgPSBleGNpbmZvLnRyYWNlYmFjawotICAg
ICAgICBpZiBzZWxmLnRiZmlsdGVyOgotICAgICAgICAgICAgdHJhY2ViYWNrID0gdHJhY2ViYWNr
LmZpbHRlcigpCi0KLSAgICAgICAgaWYgaXNfcmVjdXJzaW9uX2Vycm9yKGV4Y2luZm8pOgotICAg
ICAgICAgICAgdHJhY2ViYWNrLCBleHRyYWxpbmUgPSBzZWxmLl90cnVuY2F0ZV9yZWN1cnNpdmVf
dHJhY2ViYWNrKHRyYWNlYmFjaykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGV4dHJhbGlu
ZSA9IE5vbmUKLQotICAgICAgICBsYXN0ID0gdHJhY2ViYWNrWy0xXQotICAgICAgICBlbnRyaWVz
ID0gW10KLSAgICAgICAgZm9yIGluZGV4LCBlbnRyeSBpbiBlbnVtZXJhdGUodHJhY2ViYWNrKToK
LSAgICAgICAgICAgIGVpbmZvID0gKGxhc3QgPT0gZW50cnkpIGFuZCBleGNpbmZvIG9yIE5vbmUK
LSAgICAgICAgICAgIHJlcHJlbnRyeSA9IHNlbGYucmVwcl90cmFjZWJhY2tfZW50cnkoZW50cnks
IGVpbmZvKQotICAgICAgICAgICAgZW50cmllcy5hcHBlbmQocmVwcmVudHJ5KQotICAgICAgICBy
ZXR1cm4gUmVwclRyYWNlYmFjayhlbnRyaWVzLCBleHRyYWxpbmUsIHN0eWxlPXNlbGYuc3R5bGUp
Ci0KLSAgICBkZWYgX3RydW5jYXRlX3JlY3Vyc2l2ZV90cmFjZWJhY2soc2VsZiwgdHJhY2ViYWNr
KToKLSAgICAgICAgIiIiCi0gICAgICAgIFRydW5jYXRlIHRoZSBnaXZlbiByZWN1cnNpdmUgdHJh
Y2ViYWNrIHRyeWluZyB0byBmaW5kIHRoZSBzdGFydGluZyBwb2ludAotICAgICAgICBvZiB0aGUg
cmVjdXJzaW9uLgotCi0gICAgICAgIFRoZSBkZXRlY3Rpb24gaXMgZG9uZSBieSBnb2luZyB0aHJv
dWdoIGVhY2ggdHJhY2ViYWNrIGVudHJ5IGFuZCBmaW5kaW5nIHRoZQotICAgICAgICBwb2ludCBp
biB3aGljaCB0aGUgbG9jYWxzIG9mIHRoZSBmcmFtZSBhcmUgZXF1YWwgdG8gdGhlIGxvY2FscyBv
ZiBhIHByZXZpb3VzIGZyYW1lIChzZWUgYGByZWN1cnNpb25pbmRleCgpYGAuCi0KLSAgICAgICAg
SGFuZGxlIHRoZSBzaXR1YXRpb24gd2hlcmUgdGhlIHJlY3Vyc2lvbiBwcm9jZXNzIG1pZ2h0IHJh
aXNlIGFuIGV4Y2VwdGlvbiAoZm9yIGV4YW1wbGUKLSAgICAgICAgY29tcGFyaW5nIG51bXB5IGFy
cmF5cyB1c2luZyBlcXVhbGl0eSByYWlzZXMgYSBUeXBlRXJyb3IpLCBpbiB3aGljaCBjYXNlIHdl
IGRvIG91ciBiZXN0IHRvCi0gICAgICAgIHdhcm4gdGhlIHVzZXIgb2YgdGhlIGVycm9yIGFuZCBz
aG93IGEgbGltaXRlZCB0cmFjZWJhY2suCi0gICAgICAgICIiIgotICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICByZWN1cnNpb25pbmRleCA9IHRyYWNlYmFjay5yZWN1cnNpb25pbmRleCgpCi0gICAg
ICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgIG1heF9mcmFtZXMgPSAxMAot
ICAgICAgICAgICAgZXh0cmFsaW5lID0gKAotICAgICAgICAgICAgICAgICchISEgUmVjdXJzaW9u
IGVycm9yIGRldGVjdGVkLCBidXQgYW4gZXJyb3Igb2NjdXJyZWQgbG9jYXRpbmcgdGhlIG9yaWdp
biBvZiByZWN1cnNpb24uXG4nCi0gICAgICAgICAgICAgICAgJyAgVGhlIGZvbGxvd2luZyBleGNl
cHRpb24gaGFwcGVuZWQgd2hlbiBjb21wYXJpbmcgbG9jYWxzIGluIHRoZSBzdGFjayBmcmFtZTpc
bicKLSAgICAgICAgICAgICAgICAnICAgIHtleGNfdHlwZX06IHtleGNfbXNnfVxuJwotICAgICAg
ICAgICAgICAgICcgIERpc3BsYXlpbmcgZmlyc3QgYW5kIGxhc3Qge21heF9mcmFtZXN9IHN0YWNr
IGZyYW1lcyBvdXQgb2Yge3RvdGFsfS4nCi0gICAgICAgICAgICApLmZvcm1hdChleGNfdHlwZT10
eXBlKGUpLl9fbmFtZV9fLCBleGNfbXNnPXNhZmVfc3RyKGUpLCBtYXhfZnJhbWVzPW1heF9mcmFt
ZXMsIHRvdGFsPWxlbih0cmFjZWJhY2spKQotICAgICAgICAgICAgdHJhY2ViYWNrID0gdHJhY2Vi
YWNrWzptYXhfZnJhbWVzXSArIHRyYWNlYmFja1stbWF4X2ZyYW1lczpdCi0gICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICBpZiByZWN1cnNpb25pbmRleCBpcyBub3QgTm9uZToKLSAgICAgICAgICAg
ICAgICBleHRyYWxpbmUgPSAiISEhIFJlY3Vyc2lvbiBkZXRlY3RlZCAoc2FtZSBsb2NhbHMgJiBw
b3NpdGlvbikiCi0gICAgICAgICAgICAgICAgdHJhY2ViYWNrID0gdHJhY2ViYWNrWzpyZWN1cnNp
b25pbmRleCArIDFdCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGV4dHJhbGlu
ZSA9IE5vbmUKLQotICAgICAgICByZXR1cm4gdHJhY2ViYWNrLCBleHRyYWxpbmUKLQotICAgIGRl
ZiByZXByX2V4Y2luZm8oc2VsZiwgZXhjaW5mbyk6Ci0gICAgICAgIGlmIF9QWTI6Ci0gICAgICAg
ICAgICByZXBydHJhY2ViYWNrID0gc2VsZi5yZXByX3RyYWNlYmFjayhleGNpbmZvKQotICAgICAg
ICAgICAgcmVwcmNyYXNoID0gZXhjaW5mby5fZ2V0cmVwcmNyYXNoKCkKLQotICAgICAgICAgICAg
cmV0dXJuIFJlcHJFeGNlcHRpb25JbmZvKHJlcHJ0cmFjZWJhY2ssIHJlcHJjcmFzaCkKLSAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgIHJlcHJfY2hhaW4gPSBbXQotICAgICAgICAgICAgZSA9IGV4
Y2luZm8udmFsdWUKLSAgICAgICAgICAgIGRlc2NyID0gTm9uZQotICAgICAgICAgICAgd2hpbGUg
ZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBpZiBleGNpbmZvOgotICAgICAgICAgICAg
ICAgICAgICByZXBydHJhY2ViYWNrID0gc2VsZi5yZXByX3RyYWNlYmFjayhleGNpbmZvKQotICAg
ICAgICAgICAgICAgICAgICByZXByY3Jhc2ggPSBleGNpbmZvLl9nZXRyZXByY3Jhc2goKQotICAg
ICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICMgZmFsbGJhY2sgdG8gbmF0
aXZlIHJlcHIgaWYgdGhlIGV4Y2VwdGlvbiBkb2Vzbid0IGhhdmUgYSB0cmFjZWJhY2s6Ci0gICAg
ICAgICAgICAgICAgICAgICMgRXhjZXB0aW9uSW5mbyBvYmplY3RzIHJlcXVpcmUgYSBmdWxsIHRy
YWNlYmFjayB0byB3b3JrCi0gICAgICAgICAgICAgICAgICAgIHJlcHJ0cmFjZWJhY2sgPSBSZXBy
VHJhY2ViYWNrTmF0aXZlKHB5LnN0ZC50cmFjZWJhY2suZm9ybWF0X2V4Y2VwdGlvbih0eXBlKGUp
LCBlLCBOb25lKSkKLSAgICAgICAgICAgICAgICAgICAgcmVwcmNyYXNoID0gTm9uZQotCi0gICAg
ICAgICAgICAgICAgcmVwcl9jaGFpbiArPSBbKHJlcHJ0cmFjZWJhY2ssIHJlcHJjcmFzaCwgZGVz
Y3IpXQotICAgICAgICAgICAgICAgIGlmIGUuX19jYXVzZV9fIGlzIG5vdCBOb25lOgotICAgICAg
ICAgICAgICAgICAgICBlID0gZS5fX2NhdXNlX18KLSAgICAgICAgICAgICAgICAgICAgZXhjaW5m
byA9IEV4Y2VwdGlvbkluZm8oKHR5cGUoZSksIGUsIGUuX190cmFjZWJhY2tfXykpIGlmIGUuX190
cmFjZWJhY2tfXyBlbHNlIE5vbmUKLSAgICAgICAgICAgICAgICAgICAgZGVzY3IgPSAnVGhlIGFi
b3ZlIGV4Y2VwdGlvbiB3YXMgdGhlIGRpcmVjdCBjYXVzZSBvZiB0aGUgZm9sbG93aW5nIGV4Y2Vw
dGlvbjonCi0gICAgICAgICAgICAgICAgZWxpZiAoZS5fX2NvbnRleHRfXyBpcyBub3QgTm9uZSBh
bmQgbm90IGUuX19zdXBwcmVzc19jb250ZXh0X18pOgotICAgICAgICAgICAgICAgICAgICBlID0g
ZS5fX2NvbnRleHRfXwotICAgICAgICAgICAgICAgICAgICBleGNpbmZvID0gRXhjZXB0aW9uSW5m
bygodHlwZShlKSwgZSwgZS5fX3RyYWNlYmFja19fKSkgaWYgZS5fX3RyYWNlYmFja19fIGVsc2Ug
Tm9uZQotICAgICAgICAgICAgICAgICAgICBkZXNjciA9ICdEdXJpbmcgaGFuZGxpbmcgb2YgdGhl
IGFib3ZlIGV4Y2VwdGlvbiwgYW5vdGhlciBleGNlcHRpb24gb2NjdXJyZWQ6JwotICAgICAgICAg
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGUgPSBOb25lCi0gICAgICAgICAgICBy
ZXByX2NoYWluLnJldmVyc2UoKQotICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbkNoYWluUmVw
cihyZXByX2NoYWluKQotCi0KLWNsYXNzIFRlcm1pbmFsUmVwcihvYmplY3QpOgotICAgIGRlZiBf
X3N0cl9fKHNlbGYpOgotICAgICAgICBzID0gc2VsZi5fX3VuaWNvZGVfXygpCi0gICAgICAgIGlm
IF9QWTI6Ci0gICAgICAgICAgICBzID0gcy5lbmNvZGUoJ3V0Zi04JykKLSAgICAgICAgcmV0dXJu
IHMKLQotICAgIGRlZiBfX3VuaWNvZGVfXyhzZWxmKToKLSAgICAgICAgIyBGWUkgdGhpcyBpcyBj
YWxsZWQgZnJvbSBweXRlc3QteGRpc3QncyBzZXJpYWxpemF0aW9uIG9mIGV4Y2VwdGlvbgotICAg
ICAgICAjIGluZm9ybWF0aW9uLgotICAgICAgICBpbyA9IHB5LmlvLlRleHRJTygpCi0gICAgICAg
IHR3ID0gcHkuaW8uVGVybWluYWxXcml0ZXIoZmlsZT1pbykKLSAgICAgICAgc2VsZi50b3Rlcm1p
bmFsKHR3KQotICAgICAgICByZXR1cm4gaW8uZ2V0dmFsdWUoKS5zdHJpcCgpCi0KLSAgICBkZWYg
X19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiPCVzIGluc3RhbmNlIGF0ICUweD4iICUg
KHNlbGYuX19jbGFzc19fLCBpZChzZWxmKSkKLQotCi1jbGFzcyBFeGNlcHRpb25SZXByKFRlcm1p
bmFsUmVwcik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLnNlY3Rpb25z
ID0gW10KLQotICAgIGRlZiBhZGRzZWN0aW9uKHNlbGYsIG5hbWUsIGNvbnRlbnQsIHNlcD0iLSIp
OgotICAgICAgICBzZWxmLnNlY3Rpb25zLmFwcGVuZCgobmFtZSwgY29udGVudCwgc2VwKSkKLQot
ICAgIGRlZiB0b3Rlcm1pbmFsKHNlbGYsIHR3KToKLSAgICAgICAgZm9yIG5hbWUsIGNvbnRlbnQs
IHNlcCBpbiBzZWxmLnNlY3Rpb25zOgotICAgICAgICAgICAgdHcuc2VwKHNlcCwgbmFtZSkKLSAg
ICAgICAgICAgIHR3LmxpbmUoY29udGVudCkKLQotCi1jbGFzcyBFeGNlcHRpb25DaGFpblJlcHIo
RXhjZXB0aW9uUmVwcik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGNoYWluKToKLSAgICAgICAg
c3VwZXIoRXhjZXB0aW9uQ2hhaW5SZXByLCBzZWxmKS5fX2luaXRfXygpCi0gICAgICAgIHNlbGYu
Y2hhaW4gPSBjaGFpbgotICAgICAgICAjIHJlcHJjcmFzaCBhbmQgcmVwcnRyYWNlYmFjayBvZiB0
aGUgb3V0ZXJtb3N0ICh0aGUgbmV3ZXN0KSBleGNlcHRpb24KLSAgICAgICAgIyBpbiB0aGUgY2hh
aW4KLSAgICAgICAgc2VsZi5yZXBydHJhY2ViYWNrID0gY2hhaW5bLTFdWzBdCi0gICAgICAgIHNl
bGYucmVwcmNyYXNoID0gY2hhaW5bLTFdWzFdCi0KLSAgICBkZWYgdG90ZXJtaW5hbChzZWxmLCB0
dyk6Ci0gICAgICAgIGZvciBlbGVtZW50IGluIHNlbGYuY2hhaW46Ci0gICAgICAgICAgICBlbGVt
ZW50WzBdLnRvdGVybWluYWwodHcpCi0gICAgICAgICAgICBpZiBlbGVtZW50WzJdIGlzIG5vdCBO
b25lOgotICAgICAgICAgICAgICAgIHR3LmxpbmUoIiIpCi0gICAgICAgICAgICAgICAgdHcubGlu
ZShlbGVtZW50WzJdLCB5ZWxsb3c9VHJ1ZSkKLSAgICAgICAgc3VwZXIoRXhjZXB0aW9uQ2hhaW5S
ZXByLCBzZWxmKS50b3Rlcm1pbmFsKHR3KQotCi0KLWNsYXNzIFJlcHJFeGNlcHRpb25JbmZvKEV4
Y2VwdGlvblJlcHIpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXBydHJhY2ViYWNrLCByZXBy
Y3Jhc2gpOgotICAgICAgICBzdXBlcihSZXByRXhjZXB0aW9uSW5mbywgc2VsZikuX19pbml0X18o
KQotICAgICAgICBzZWxmLnJlcHJ0cmFjZWJhY2sgPSByZXBydHJhY2ViYWNrCi0gICAgICAgIHNl
bGYucmVwcmNyYXNoID0gcmVwcmNyYXNoCi0KLSAgICBkZWYgdG90ZXJtaW5hbChzZWxmLCB0dyk6
Ci0gICAgICAgIHNlbGYucmVwcnRyYWNlYmFjay50b3Rlcm1pbmFsKHR3KQotICAgICAgICBzdXBl
cihSZXByRXhjZXB0aW9uSW5mbywgc2VsZikudG90ZXJtaW5hbCh0dykKLQotCi1jbGFzcyBSZXBy
VHJhY2ViYWNrKFRlcm1pbmFsUmVwcik6Ci0gICAgZW50cnlzZXAgPSAiXyAiCi0KLSAgICBkZWYg
X19pbml0X18oc2VsZiwgcmVwcmVudHJpZXMsIGV4dHJhbGluZSwgc3R5bGUpOgotICAgICAgICBz
ZWxmLnJlcHJlbnRyaWVzID0gcmVwcmVudHJpZXMKLSAgICAgICAgc2VsZi5leHRyYWxpbmUgPSBl
eHRyYWxpbmUKLSAgICAgICAgc2VsZi5zdHlsZSA9IHN0eWxlCi0KLSAgICBkZWYgdG90ZXJtaW5h
bChzZWxmLCB0dyk6Ci0gICAgICAgICMgdGhlIGVudHJpZXMgbWlnaHQgaGF2ZSBkaWZmZXJlbnQg
c3R5bGVzCi0gICAgICAgIGZvciBpLCBlbnRyeSBpbiBlbnVtZXJhdGUoc2VsZi5yZXByZW50cmll
cyk6Ci0gICAgICAgICAgICBpZiBlbnRyeS5zdHlsZSA9PSAibG9uZyI6Ci0gICAgICAgICAgICAg
ICAgdHcubGluZSgiIikKLSAgICAgICAgICAgIGVudHJ5LnRvdGVybWluYWwodHcpCi0gICAgICAg
ICAgICBpZiBpIDwgbGVuKHNlbGYucmVwcmVudHJpZXMpIC0gMToKLSAgICAgICAgICAgICAgICBu
ZXh0X2VudHJ5ID0gc2VsZi5yZXByZW50cmllc1tpICsgMV0KLSAgICAgICAgICAgICAgICBpZiBl
bnRyeS5zdHlsZSA9PSAibG9uZyIgb3IgXAotICAgICAgICAgICAgICAgICAgIGVudHJ5LnN0eWxl
ID09ICJzaG9ydCIgYW5kIG5leHRfZW50cnkuc3R5bGUgPT0gImxvbmciOgotICAgICAgICAgICAg
ICAgICAgICB0dy5zZXAoc2VsZi5lbnRyeXNlcCkKLQotICAgICAgICBpZiBzZWxmLmV4dHJhbGlu
ZToKLSAgICAgICAgICAgIHR3LmxpbmUoc2VsZi5leHRyYWxpbmUpCi0KLQotY2xhc3MgUmVwclRy
YWNlYmFja05hdGl2ZShSZXByVHJhY2ViYWNrKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgdGJs
aW5lcyk6Ci0gICAgICAgIHNlbGYuc3R5bGUgPSAibmF0aXZlIgotICAgICAgICBzZWxmLnJlcHJl
bnRyaWVzID0gW1JlcHJFbnRyeU5hdGl2ZSh0YmxpbmVzKV0KLSAgICAgICAgc2VsZi5leHRyYWxp
bmUgPSBOb25lCi0KLQotY2xhc3MgUmVwckVudHJ5TmF0aXZlKFRlcm1pbmFsUmVwcik6Ci0gICAg
c3R5bGUgPSAibmF0aXZlIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRibGluZXMpOgotICAg
ICAgICBzZWxmLmxpbmVzID0gdGJsaW5lcwotCi0gICAgZGVmIHRvdGVybWluYWwoc2VsZiwgdHcp
OgotICAgICAgICB0dy53cml0ZSgiIi5qb2luKHNlbGYubGluZXMpKQotCi0KLWNsYXNzIFJlcHJF
bnRyeShUZXJtaW5hbFJlcHIpOgotICAgIGxvY2Fsc3NlcCA9ICJfICIKLQotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBsaW5lcywgcmVwcmZ1bmNhcmdzLCByZXBybG9jYWxzLCBmaWxlbG9jcmVwciwg
c3R5bGUpOgotICAgICAgICBzZWxmLmxpbmVzID0gbGluZXMKLSAgICAgICAgc2VsZi5yZXByZnVu
Y2FyZ3MgPSByZXByZnVuY2FyZ3MKLSAgICAgICAgc2VsZi5yZXBybG9jYWxzID0gcmVwcmxvY2Fs
cwotICAgICAgICBzZWxmLnJlcHJmaWxlbG9jID0gZmlsZWxvY3JlcHIKLSAgICAgICAgc2VsZi5z
dHlsZSA9IHN0eWxlCi0KLSAgICBkZWYgdG90ZXJtaW5hbChzZWxmLCB0dyk6Ci0gICAgICAgIGlm
IHNlbGYuc3R5bGUgPT0gInNob3J0IjoKLSAgICAgICAgICAgIHNlbGYucmVwcmZpbGVsb2MudG90
ZXJtaW5hbCh0dykKLSAgICAgICAgICAgIGZvciBsaW5lIGluIHNlbGYubGluZXM6Ci0gICAgICAg
ICAgICAgICAgcmVkID0gbGluZS5zdGFydHN3aXRoKCJFICAgIikKLSAgICAgICAgICAgICAgICB0
dy5saW5lKGxpbmUsIGJvbGQ9VHJ1ZSwgcmVkPXJlZCkKLSAgICAgICAgICAgICMgdHcubGluZSgi
IikKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBpZiBzZWxmLnJlcHJmdW5jYXJnczoKLSAg
ICAgICAgICAgIHNlbGYucmVwcmZ1bmNhcmdzLnRvdGVybWluYWwodHcpCi0gICAgICAgIGZvciBs
aW5lIGluIHNlbGYubGluZXM6Ci0gICAgICAgICAgICByZWQgPSBsaW5lLnN0YXJ0c3dpdGgoIkUg
ICAiKQotICAgICAgICAgICAgdHcubGluZShsaW5lLCBib2xkPVRydWUsIHJlZD1yZWQpCi0gICAg
ICAgIGlmIHNlbGYucmVwcmxvY2FsczoKLSAgICAgICAgICAgICMgdHcuc2VwKHNlbGYubG9jYWxz
c2VwLCAiTG9jYWxzIikKLSAgICAgICAgICAgIHR3LmxpbmUoIiIpCi0gICAgICAgICAgICBzZWxm
LnJlcHJsb2NhbHMudG90ZXJtaW5hbCh0dykKLSAgICAgICAgaWYgc2VsZi5yZXByZmlsZWxvYzoK
LSAgICAgICAgICAgIGlmIHNlbGYubGluZXM6Ci0gICAgICAgICAgICAgICAgdHcubGluZSgiIikK
LSAgICAgICAgICAgIHNlbGYucmVwcmZpbGVsb2MudG90ZXJtaW5hbCh0dykKLQotICAgIGRlZiBf
X3N0cl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIiVzXG4lc1xuJXMiICUgKCJcbiIuam9pbihz
ZWxmLmxpbmVzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJlcHJsb2Nh
bHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXByZmlsZWxvYykKLQot
Ci1jbGFzcyBSZXByRmlsZUxvY2F0aW9uKFRlcm1pbmFsUmVwcik6Ci0gICAgZGVmIF9faW5pdF9f
KHNlbGYsIHBhdGgsIGxpbmVubywgbWVzc2FnZSk6Ci0gICAgICAgIHNlbGYucGF0aCA9IHN0cihw
YXRoKQotICAgICAgICBzZWxmLmxpbmVubyA9IGxpbmVubwotICAgICAgICBzZWxmLm1lc3NhZ2Ug
PSBtZXNzYWdlCi0KLSAgICBkZWYgdG90ZXJtaW5hbChzZWxmLCB0dyk6Ci0gICAgICAgICMgZmls
ZW5hbWUgYW5kIGxpbmVubyBvdXRwdXQgZm9yIGVhY2ggZW50cnksCi0gICAgICAgICMgdXNpbmcg
YW4gb3V0cHV0IGZvcm1hdCB0aGF0IG1vc3QgZWRpdG9ycyB1bnRlcnN0YW5kCi0gICAgICAgIG1z
ZyA9IHNlbGYubWVzc2FnZQotICAgICAgICBpID0gbXNnLmZpbmQoIlxuIikKLSAgICAgICAgaWYg
aSAhPSAtMToKLSAgICAgICAgICAgIG1zZyA9IG1zZ1s6aV0KLSAgICAgICAgdHcud3JpdGUoc2Vs
Zi5wYXRoLCBib2xkPVRydWUsIHJlZD1UcnVlKQotICAgICAgICB0dy5saW5lKCI6JXM6ICVzIiAl
IChzZWxmLmxpbmVubywgbXNnKSkKLQotCi1jbGFzcyBSZXByTG9jYWxzKFRlcm1pbmFsUmVwcik6
Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxpbmVzKToKLSAgICAgICAgc2VsZi5saW5lcyA9IGxp
bmVzCi0KLSAgICBkZWYgdG90ZXJtaW5hbChzZWxmLCB0dyk6Ci0gICAgICAgIGZvciBsaW5lIGlu
IHNlbGYubGluZXM6Ci0gICAgICAgICAgICB0dy5saW5lKGxpbmUpCi0KLQotY2xhc3MgUmVwckZ1
bmNBcmdzKFRlcm1pbmFsUmVwcik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGFyZ3MpOgotICAg
ICAgICBzZWxmLmFyZ3MgPSBhcmdzCi0KLSAgICBkZWYgdG90ZXJtaW5hbChzZWxmLCB0dyk6Ci0g
ICAgICAgIGlmIHNlbGYuYXJnczoKLSAgICAgICAgICAgIGxpbmVzb2ZhciA9ICIiCi0gICAgICAg
ICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gc2VsZi5hcmdzOgotICAgICAgICAgICAgICAgIG5zID0g
IiVzID0gJXMiICUgKHNhZmVfc3RyKG5hbWUpLCBzYWZlX3N0cih2YWx1ZSkpCi0gICAgICAgICAg
ICAgICAgaWYgbGVuKG5zKSArIGxlbihsaW5lc29mYXIpICsgMiA+IHR3LmZ1bGx3aWR0aDoKLSAg
ICAgICAgICAgICAgICAgICAgaWYgbGluZXNvZmFyOgotICAgICAgICAgICAgICAgICAgICAgICAg
dHcubGluZShsaW5lc29mYXIpCi0gICAgICAgICAgICAgICAgICAgIGxpbmVzb2ZhciA9IG5zCi0g
ICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgaWYgbGluZXNvZmFyOgot
ICAgICAgICAgICAgICAgICAgICAgICAgbGluZXNvZmFyICs9ICIsICIgKyBucwotICAgICAgICAg
ICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgbGluZXNvZmFyID0gbnMK
LSAgICAgICAgICAgIGlmIGxpbmVzb2ZhcjoKLSAgICAgICAgICAgICAgICB0dy5saW5lKGxpbmVz
b2ZhcikKLSAgICAgICAgICAgIHR3LmxpbmUoIiIpCi0KLQotZGVmIGdldHJhd2NvZGUob2JqLCB0
cnljYWxsPVRydWUpOgotICAgICIiIiByZXR1cm4gY29kZSBvYmplY3QgZm9yIGdpdmVuIGZ1bmN0
aW9uLiAiIiIKLSAgICB0cnk6Ci0gICAgICAgIHJldHVybiBvYmouX19jb2RlX18KLSAgICBleGNl
cHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgIG9iaiA9IGdldGF0dHIob2JqLCAnaW1fZnVuYycs
IG9iaikKLSAgICAgICAgb2JqID0gZ2V0YXR0cihvYmosICdmdW5jX2NvZGUnLCBvYmopCi0gICAg
ICAgIG9iaiA9IGdldGF0dHIob2JqLCAnZl9jb2RlJywgb2JqKQotICAgICAgICBvYmogPSBnZXRh
dHRyKG9iaiwgJ19fY29kZV9fJywgb2JqKQotICAgICAgICBpZiB0cnljYWxsIGFuZCBub3QgaGFz
YXR0cihvYmosICdjb19maXJzdGxpbmVubycpOgotICAgICAgICAgICAgaWYgaGFzYXR0cihvYmos
ICdfX2NhbGxfXycpIGFuZCBub3QgcHkuc3RkLmluc3BlY3QuaXNjbGFzcyhvYmopOgotICAgICAg
ICAgICAgICAgIHggPSBnZXRyYXdjb2RlKG9iai5fX2NhbGxfXywgdHJ5Y2FsbD1GYWxzZSkKLSAg
ICAgICAgICAgICAgICBpZiBoYXNhdHRyKHgsICdjb19maXJzdGxpbmVubycpOgotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4geAotICAgICAgICByZXR1cm4gb2JqCi0KLQotaWYgUFkzNTogICMg
UmVjdXJzaW9uRXJyb3IgaW50cm9kdWNlZCBpbiAzLjUKLSAgICBkZWYgaXNfcmVjdXJzaW9uX2Vy
cm9yKGV4Y2luZm8pOgotICAgICAgICByZXR1cm4gZXhjaW5mby5lcnJpc2luc3RhbmNlKFJlY3Vy
c2lvbkVycm9yKSAgIyBub3FhCi1lbHNlOgotICAgIGRlZiBpc19yZWN1cnNpb25fZXJyb3IoZXhj
aW5mbyk6Ci0gICAgICAgIGlmIG5vdCBleGNpbmZvLmVycmlzaW5zdGFuY2UoUnVudGltZUVycm9y
KToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBy
ZXR1cm4gIm1heGltdW0gcmVjdXJzaW9uIGRlcHRoIGV4Y2VlZGVkIiBpbiBzdHIoZXhjaW5mby52
YWx1ZSkKLSAgICAgICAgZXhjZXB0IFVuaWNvZGVFcnJvcjoKLSAgICAgICAgICAgIHJldHVybiBG
YWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9fY29kZS9zb3VyY2UucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9fcHl0ZXN0L19jb2RlL3NvdXJjZS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMjYzOGM1OThiNzQ5ZGIyODg2MWQyMDAwNmU3ZGZhOGY5MGU1NTRiYy4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0
ZXN0L19jb2RlL3NvdXJjZS5weQorKysgL2Rldi9udWxsCkBAIC0xLDQxNSArMCwwIEBACi1mcm9t
IF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIGdlbmVyYXRvcnMs
IHByaW50X2Z1bmN0aW9uCi0KLWZyb20gYmlzZWN0IGltcG9ydCBiaXNlY3RfcmlnaHQKLWltcG9y
dCBzeXMKLWltcG9ydCBzaXgKLWltcG9ydCBpbnNwZWN0Ci1pbXBvcnQgdG9rZW5pemUKLWltcG9y
dCBweQotY3B5X2NvbXBpbGUgPSBjb21waWxlCi0KLXRyeToKLSAgICBpbXBvcnQgX2FzdAotICAg
IGZyb20gX2FzdCBpbXBvcnQgUHlDRl9PTkxZX0FTVCBhcyBfQVNUX0ZMQUcKLWV4Y2VwdCBJbXBv
cnRFcnJvcjoKLSAgICBfQVNUX0ZMQUcgPSAwCi0gICAgX2FzdCA9IE5vbmUKLQotCi1jbGFzcyBT
b3VyY2Uob2JqZWN0KToKLSAgICAiIiIgYSBpbW11dGFibGUgb2JqZWN0IGhvbGRpbmcgYSBzb3Vy
Y2UgY29kZSBmcmFnbWVudCwKLSAgICAgICAgcG9zc2libHkgZGVpbmRlbnRpbmcgaXQuCi0gICAg
IiIiCi0gICAgX2NvbXBpbGVjb3VudGVyID0gMAotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsICpw
YXJ0cywgKiprd2FyZ3MpOgotICAgICAgICBzZWxmLmxpbmVzID0gbGluZXMgPSBbXQotICAgICAg
ICBkZSA9IGt3YXJncy5nZXQoJ2RlaW5kZW50JywgVHJ1ZSkKLSAgICAgICAgcnN0cmlwID0ga3dh
cmdzLmdldCgncnN0cmlwJywgVHJ1ZSkKLSAgICAgICAgZm9yIHBhcnQgaW4gcGFydHM6Ci0gICAg
ICAgICAgICBpZiBub3QgcGFydDoKLSAgICAgICAgICAgICAgICBwYXJ0bGluZXMgPSBbXQotICAg
ICAgICAgICAgaWYgaXNpbnN0YW5jZShwYXJ0LCBTb3VyY2UpOgotICAgICAgICAgICAgICAgIHBh
cnRsaW5lcyA9IHBhcnQubGluZXMKLSAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShwYXJ0LCAo
dHVwbGUsIGxpc3QpKToKLSAgICAgICAgICAgICAgICBwYXJ0bGluZXMgPSBbeC5yc3RyaXAoIlxu
IikgZm9yIHggaW4gcGFydF0KLSAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShwYXJ0LCBzaXgu
c3RyaW5nX3R5cGVzKToKLSAgICAgICAgICAgICAgICBwYXJ0bGluZXMgPSBwYXJ0LnNwbGl0KCdc
bicpCi0gICAgICAgICAgICAgICAgaWYgcnN0cmlwOgotICAgICAgICAgICAgICAgICAgICB3aGls
ZSBwYXJ0bGluZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBwYXJ0bGluZXNbLTFdLnN0
cmlwKCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHBhcnRsaW5lcy5wb3AoKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAg
ICAgICBwYXJ0bGluZXMgPSBnZXRzb3VyY2UocGFydCwgZGVpbmRlbnQ9ZGUpLmxpbmVzCi0gICAg
ICAgICAgICBpZiBkZToKLSAgICAgICAgICAgICAgICBwYXJ0bGluZXMgPSBkZWluZGVudChwYXJ0
bGluZXMpCi0gICAgICAgICAgICBsaW5lcy5leHRlbmQocGFydGxpbmVzKQotCi0gICAgZGVmIF9f
ZXFfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBzZWxm
LmxpbmVzID09IG90aGVyLmxpbmVzCi0gICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAg
ICAgICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIHN0cik6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIHN0cihzZWxmKSA9PSBvdGhlcgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBf
X2hhc2hfXyA9IE5vbmUKLQotICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXkpOgotICAgICAg
ICBpZiBpc2luc3RhbmNlKGtleSwgaW50KToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmxpbmVz
W2tleV0KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIGtleS5zdGVwIG5vdCBpbiAoTm9u
ZSwgMSk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgSW5kZXhFcnJvcigiY2Fubm90IHNsaWNlIGEg
U291cmNlIHdpdGggYSBzdGVwIikKLSAgICAgICAgICAgIG5ld3NvdXJjZSA9IFNvdXJjZSgpCi0g
ICAgICAgICAgICBuZXdzb3VyY2UubGluZXMgPSBzZWxmLmxpbmVzW2tleS5zdGFydDprZXkuc3Rv
cF0KLSAgICAgICAgICAgIHJldHVybiBuZXdzb3VyY2UKLQotICAgIGRlZiBfX2xlbl9fKHNlbGYp
OgotICAgICAgICByZXR1cm4gbGVuKHNlbGYubGluZXMpCi0KLSAgICBkZWYgc3RyaXAoc2VsZik6
Ci0gICAgICAgICIiIiByZXR1cm4gbmV3IHNvdXJjZSBvYmplY3Qgd2l0aCB0cmFpbGluZwotICAg
ICAgICAgICAgYW5kIGxlYWRpbmcgYmxhbmsgbGluZXMgcmVtb3ZlZC4KLSAgICAgICAgIiIiCi0g
ICAgICAgIHN0YXJ0LCBlbmQgPSAwLCBsZW4oc2VsZikKLSAgICAgICAgd2hpbGUgc3RhcnQgPCBl
bmQgYW5kIG5vdCBzZWxmLmxpbmVzW3N0YXJ0XS5zdHJpcCgpOgotICAgICAgICAgICAgc3RhcnQg
Kz0gMQotICAgICAgICB3aGlsZSBlbmQgPiBzdGFydCBhbmQgbm90IHNlbGYubGluZXNbZW5kIC0g
MV0uc3RyaXAoKToKLSAgICAgICAgICAgIGVuZCAtPSAxCi0gICAgICAgIHNvdXJjZSA9IFNvdXJj
ZSgpCi0gICAgICAgIHNvdXJjZS5saW5lc1s6XSA9IHNlbGYubGluZXNbc3RhcnQ6ZW5kXQotICAg
ICAgICByZXR1cm4gc291cmNlCi0KLSAgICBkZWYgcHV0YXJvdW5kKHNlbGYsIGJlZm9yZT0nJywg
YWZ0ZXI9JycsIGluZGVudD0nICcgKiA0KToKLSAgICAgICAgIiIiIHJldHVybiBhIGNvcHkgb2Yg
dGhlIHNvdXJjZSBvYmplY3Qgd2l0aAotICAgICAgICAgICAgJ2JlZm9yZScgYW5kICdhZnRlcicg
d3JhcHBlZCBhcm91bmQgaXQuCi0gICAgICAgICIiIgotICAgICAgICBiZWZvcmUgPSBTb3VyY2Uo
YmVmb3JlKQotICAgICAgICBhZnRlciA9IFNvdXJjZShhZnRlcikKLSAgICAgICAgbmV3c291cmNl
ID0gU291cmNlKCkKLSAgICAgICAgbGluZXMgPSBbKGluZGVudCArIGxpbmUpIGZvciBsaW5lIGlu
IHNlbGYubGluZXNdCi0gICAgICAgIG5ld3NvdXJjZS5saW5lcyA9IGJlZm9yZS5saW5lcyArIGxp
bmVzICsgYWZ0ZXIubGluZXMKLSAgICAgICAgcmV0dXJuIG5ld3NvdXJjZQotCi0gICAgZGVmIGlu
ZGVudChzZWxmLCBpbmRlbnQ9JyAnICogNCk6Ci0gICAgICAgICIiIiByZXR1cm4gYSBjb3B5IG9m
IHRoZSBzb3VyY2Ugb2JqZWN0IHdpdGgKLSAgICAgICAgICAgIGFsbCBsaW5lcyBpbmRlbnRlZCBi
eSB0aGUgZ2l2ZW4gaW5kZW50LXN0cmluZy4KLSAgICAgICAgIiIiCi0gICAgICAgIG5ld3NvdXJj
ZSA9IFNvdXJjZSgpCi0gICAgICAgIG5ld3NvdXJjZS5saW5lcyA9IFsoaW5kZW50ICsgbGluZSkg
Zm9yIGxpbmUgaW4gc2VsZi5saW5lc10KLSAgICAgICAgcmV0dXJuIG5ld3NvdXJjZQotCi0gICAg
ZGVmIGdldHN0YXRlbWVudChzZWxmLCBsaW5lbm8sIGFzc2VydGlvbj1GYWxzZSk6Ci0gICAgICAg
ICIiIiByZXR1cm4gU291cmNlIHN0YXRlbWVudCB3aGljaCBjb250YWlucyB0aGUKLSAgICAgICAg
ICAgIGdpdmVuIGxpbmVudW1iZXIgKGNvdW50ZWQgZnJvbSAwKS4KLSAgICAgICAgIiIiCi0gICAg
ICAgIHN0YXJ0LCBlbmQgPSBzZWxmLmdldHN0YXRlbWVudHJhbmdlKGxpbmVubywgYXNzZXJ0aW9u
KQotICAgICAgICByZXR1cm4gc2VsZltzdGFydDplbmRdCi0KLSAgICBkZWYgZ2V0c3RhdGVtZW50
cmFuZ2Uoc2VsZiwgbGluZW5vLCBhc3NlcnRpb249RmFsc2UpOgotICAgICAgICAiIiIgcmV0dXJu
IChzdGFydCwgZW5kKSB0dXBsZSB3aGljaCBzcGFucyB0aGUgbWluaW1hbAotICAgICAgICAgICAg
c3RhdGVtZW50IHJlZ2lvbiB3aGljaCBjb250YWluaW5nIHRoZSBnaXZlbiBsaW5lbm8uCi0gICAg
ICAgICIiIgotICAgICAgICBpZiBub3QgKDAgPD0gbGluZW5vIDwgbGVuKHNlbGYpKToKLSAgICAg
ICAgICAgIHJhaXNlIEluZGV4RXJyb3IoImxpbmVubyBvdXQgb2YgcmFuZ2UiKQotICAgICAgICBh
c3QsIHN0YXJ0LCBlbmQgPSBnZXRzdGF0ZW1lbnRyYW5nZV9hc3QobGluZW5vLCBzZWxmKQotICAg
ICAgICByZXR1cm4gc3RhcnQsIGVuZAotCi0gICAgZGVmIGRlaW5kZW50KHNlbGYsIG9mZnNldD1O
b25lKToKLSAgICAgICAgIiIiIHJldHVybiBhIG5ldyBzb3VyY2Ugb2JqZWN0IGRlaW5kZW50ZWQg
Ynkgb2Zmc2V0LgotICAgICAgICAgICAgSWYgb2Zmc2V0IGlzIE5vbmUgdGhlbiBndWVzcyBhbiBp
bmRlbnRhdGlvbiBvZmZzZXQgZnJvbQotICAgICAgICAgICAgdGhlIGZpcnN0IG5vbi1ibGFuayBs
aW5lLiAgU3Vic2VxdWVudCBsaW5lcyB3aGljaCBoYXZlIGEKLSAgICAgICAgICAgIGxvd2VyIGlu
ZGVudGF0aW9uIG9mZnNldCB3aWxsIGJlIGNvcGllZCB2ZXJiYXRpbSBhcwotICAgICAgICAgICAg
dGhleSBhcmUgYXNzdW1lZCB0byBiZSBwYXJ0IG9mIG11bHRpbGluZXMuCi0gICAgICAgICIiIgot
ICAgICAgICAjIFhYWCBtYXliZSB1c2UgdGhlIHRva2VuaXplciB0byBwcm9wZXJseSBoYW5kbGUg
bXVsdGlsaW5lCi0gICAgICAgICMgICAgIHN0cmluZ3MgZXRjLnBwPwotICAgICAgICBuZXdzb3Vy
Y2UgPSBTb3VyY2UoKQotICAgICAgICBuZXdzb3VyY2UubGluZXNbOl0gPSBkZWluZGVudChzZWxm
LmxpbmVzLCBvZmZzZXQpCi0gICAgICAgIHJldHVybiBuZXdzb3VyY2UKLQotICAgIGRlZiBpc3Bh
cnNlYWJsZShzZWxmLCBkZWluZGVudD1UcnVlKToKLSAgICAgICAgIiIiIHJldHVybiBUcnVlIGlm
IHNvdXJjZSBpcyBwYXJzZWFibGUsIGhldXJpc3RpY2FsbHkKLSAgICAgICAgICAgIGRlaW5kZW50
aW5nIGl0IGJ5IGRlZmF1bHQuCi0gICAgICAgICIiIgotICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICBpbXBvcnQgcGFyc2VyCi0gICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAg
IGRlZiBzeW50YXhfY2hlY2tlcih4KToKLSAgICAgICAgICAgICAgICByZXR1cm4gY29tcGlsZSh4
LCAnYXNkJywgJ2V4ZWMnKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc3ludGF4X2NoZWNr
ZXIgPSBwYXJzZXIuc3VpdGUKLQotICAgICAgICBpZiBkZWluZGVudDoKLSAgICAgICAgICAgIHNv
dXJjZSA9IHN0cihzZWxmLmRlaW5kZW50KCkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBz
b3VyY2UgPSBzdHIoc2VsZikKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgIyBjb21waWxlKHNv
dXJjZSsnXG4nLCAieCIsICJleGVjIikKLSAgICAgICAgICAgIHN5bnRheF9jaGVja2VyKHNvdXJj
ZSArICdcbicpCi0gICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKLSAgICAgICAgICAg
IHJhaXNlCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICByZXR1cm4gRmFs
c2UKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0KLSAgICBkZWYgX19z
dHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICJcbiIuam9pbihzZWxmLmxpbmVzKQotCi0gICAg
ZGVmIGNvbXBpbGUoc2VsZiwgZmlsZW5hbWU9Tm9uZSwgbW9kZT0nZXhlYycsCi0gICAgICAgICAg
ICAgICAgZmxhZz1nZW5lcmF0b3JzLmNvbXBpbGVyX2ZsYWcsCi0gICAgICAgICAgICAgICAgZG9u
dF9pbmhlcml0PTAsIF9nZW5mcmFtZT1Ob25lKToKLSAgICAgICAgIiIiIHJldHVybiBjb21waWxl
ZCBjb2RlIG9iamVjdC4gaWYgZmlsZW5hbWUgaXMgTm9uZQotICAgICAgICAgICAgaW52ZW50IGFu
IGFydGlmaWNpYWwgZmlsZW5hbWUgd2hpY2ggZGlzcGxheXMKLSAgICAgICAgICAgIHRoZSBzb3Vy
Y2UvbGluZSBwb3NpdGlvbiBvZiB0aGUgY2FsbGVyIGZyYW1lLgotICAgICAgICAiIiIKLSAgICAg
ICAgaWYgbm90IGZpbGVuYW1lIG9yIHB5LnBhdGgubG9jYWwoZmlsZW5hbWUpLmNoZWNrKGZpbGU9
MCk6Ci0gICAgICAgICAgICBpZiBfZ2VuZnJhbWUgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBf
Z2VuZnJhbWUgPSBzeXMuX2dldGZyYW1lKDEpICAjIHRoZSBjYWxsZXIKLSAgICAgICAgICAgIGZu
LCBsaW5lbm8gPSBfZ2VuZnJhbWUuZl9jb2RlLmNvX2ZpbGVuYW1lLCBfZ2VuZnJhbWUuZl9saW5l
bm8KLSAgICAgICAgICAgIGJhc2UgPSAiPCVkLWNvZGVnZW4gIiAlIHNlbGYuX2NvbXBpbGVjb3Vu
dGVyCi0gICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fY29tcGlsZWNvdW50ZXIgKz0gMQotICAg
ICAgICAgICAgaWYgbm90IGZpbGVuYW1lOgotICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gYmFz
ZSArICclczolZD4nICUgKGZuLCBsaW5lbm8pCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgICAgIGZpbGVuYW1lID0gYmFzZSArICclciAlczolZD4nICUgKGZpbGVuYW1lLCBmbiwgbGlu
ZW5vKQotICAgICAgICBzb3VyY2UgPSAiXG4iLmpvaW4oc2VsZi5saW5lcykgKyAnXG4nCi0gICAg
ICAgIHRyeToKLSAgICAgICAgICAgIGNvID0gY3B5X2NvbXBpbGUoc291cmNlLCBmaWxlbmFtZSwg
bW9kZSwgZmxhZykKLSAgICAgICAgZXhjZXB0IFN5bnRheEVycm9yOgotICAgICAgICAgICAgZXgg
PSBzeXMuZXhjX2luZm8oKVsxXQotICAgICAgICAgICAgIyByZS1yZXByZXNlbnQgc3ludGF4IGVy
cm9ycyBmcm9tIHBhcnNpbmcgcHl0aG9uIHN0cmluZ3MKLSAgICAgICAgICAgIG1zZ2xpbmVzID0g
c2VsZi5saW5lc1s6ZXgubGluZW5vXQotICAgICAgICAgICAgaWYgZXgub2Zmc2V0OgotICAgICAg
ICAgICAgICAgIG1zZ2xpbmVzLmFwcGVuZCgiICIgKiBleC5vZmZzZXQgKyAnXicpCi0gICAgICAg
ICAgICBtc2dsaW5lcy5hcHBlbmQoIihjb2RlIHdhcyBjb21waWxlZCBwcm9iYWJseSBmcm9tIGhl
cmU6ICVzKSIgJSBmaWxlbmFtZSkKLSAgICAgICAgICAgIG5ld2V4ID0gU3ludGF4RXJyb3IoJ1xu
Jy5qb2luKG1zZ2xpbmVzKSkKLSAgICAgICAgICAgIG5ld2V4Lm9mZnNldCA9IGV4Lm9mZnNldAot
ICAgICAgICAgICAgbmV3ZXgubGluZW5vID0gZXgubGluZW5vCi0gICAgICAgICAgICBuZXdleC50
ZXh0ID0gZXgudGV4dAotICAgICAgICAgICAgcmFpc2UgbmV3ZXgKLSAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgIGlmIGZsYWcgJiBfQVNUX0ZMQUc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNv
Ci0gICAgICAgICAgICBsaW5lcyA9IFsoeCArICJcbiIpIGZvciB4IGluIHNlbGYubGluZXNdCi0g
ICAgICAgICAgICBweS5zdGQubGluZWNhY2hlLmNhY2hlW2ZpbGVuYW1lXSA9ICgxLCBOb25lLCBs
aW5lcywgZmlsZW5hbWUpCi0gICAgICAgICAgICByZXR1cm4gY28KLQotIwotIyBwdWJsaWMgQVBJ
IHNob3J0Y3V0IGZ1bmN0aW9ucwotIwotCi0KLWRlZiBjb21waWxlXyhzb3VyY2UsIGZpbGVuYW1l
PU5vbmUsIG1vZGU9J2V4ZWMnLCBmbGFncz1nZW5lcmF0b3JzLmNvbXBpbGVyX2ZsYWcsIGRvbnRf
aW5oZXJpdD0wKToKLSAgICAiIiIgY29tcGlsZSB0aGUgZ2l2ZW4gc291cmNlIHRvIGEgcmF3IGNv
ZGUgb2JqZWN0LAotICAgICAgICBhbmQgbWFpbnRhaW4gYW4gaW50ZXJuYWwgY2FjaGUgd2hpY2gg
YWxsb3dzIGxhdGVyCi0gICAgICAgIHJldHJpZXZhbCBvZiB0aGUgc291cmNlIGNvZGUgZm9yIHRo
ZSBjb2RlIG9iamVjdAotICAgICAgICBhbmQgYW55IHJlY3Vyc2l2ZWx5IGNyZWF0ZWQgY29kZSBv
YmplY3RzLgotICAgICIiIgotICAgIGlmIF9hc3QgaXMgbm90IE5vbmUgYW5kIGlzaW5zdGFuY2Uo
c291cmNlLCBfYXN0LkFTVCk6Ci0gICAgICAgICMgWFhYIHNob3VsZCBTb3VyY2Ugc3VwcG9ydCBo
YXZpbmcgQVNUPwotICAgICAgICByZXR1cm4gY3B5X2NvbXBpbGUoc291cmNlLCBmaWxlbmFtZSwg
bW9kZSwgZmxhZ3MsIGRvbnRfaW5oZXJpdCkKLSAgICBfZ2VuZnJhbWUgPSBzeXMuX2dldGZyYW1l
KDEpICAjIHRoZSBjYWxsZXIKLSAgICBzID0gU291cmNlKHNvdXJjZSkKLSAgICBjbyA9IHMuY29t
cGlsZShmaWxlbmFtZSwgbW9kZSwgZmxhZ3MsIF9nZW5mcmFtZT1fZ2VuZnJhbWUpCi0gICAgcmV0
dXJuIGNvCi0KLQotZGVmIGdldGZzbGluZW5vKG9iaik6Ci0gICAgIiIiIFJldHVybiBzb3VyY2Ug
bG9jYXRpb24gKHBhdGgsIGxpbmVubykgZm9yIHRoZSBnaXZlbiBvYmplY3QuCi0gICAgSWYgdGhl
IHNvdXJjZSBjYW5ub3QgYmUgZGV0ZXJtaW5lZCByZXR1cm4gKCIiLCAtMSkKLSAgICAiIiIKLSAg
ICBpbXBvcnQgX3B5dGVzdC5fY29kZQotICAgIHRyeToKLSAgICAgICAgY29kZSA9IF9weXRlc3Qu
X2NvZGUuQ29kZShvYmopCi0gICAgZXhjZXB0IFR5cGVFcnJvcjoKLSAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgZm4gPSAocHkuc3RkLmluc3BlY3QuZ2V0c291cmNlZmlsZShvYmopIG9yCi0gICAg
ICAgICAgICAgICAgICBweS5zdGQuaW5zcGVjdC5nZXRmaWxlKG9iaikpCi0gICAgICAgIGV4Y2Vw
dCBUeXBlRXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4gIiIsIC0xCi0KLSAgICAgICAgZnNwYXRo
ID0gZm4gYW5kIHB5LnBhdGgubG9jYWwoZm4pIG9yIE5vbmUKLSAgICAgICAgbGluZW5vID0gLTEK
LSAgICAgICAgaWYgZnNwYXRoOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIF8s
IGxpbmVubyA9IGZpbmRzb3VyY2Uob2JqKQotICAgICAgICAgICAgZXhjZXB0IElPRXJyb3I6Ci0g
ICAgICAgICAgICAgICAgcGFzcwotICAgIGVsc2U6Ci0gICAgICAgIGZzcGF0aCA9IGNvZGUucGF0
aAotICAgICAgICBsaW5lbm8gPSBjb2RlLmZpcnN0bGluZW5vCi0gICAgYXNzZXJ0IGlzaW5zdGFu
Y2UobGluZW5vLCBpbnQpCi0gICAgcmV0dXJuIGZzcGF0aCwgbGluZW5vCi0KLSMKLSMgaGVscGVy
IGZ1bmN0aW9ucwotIwotCi0KLWRlZiBmaW5kc291cmNlKG9iaik6Ci0gICAgdHJ5OgotICAgICAg
ICBzb3VyY2VsaW5lcywgbGluZW5vID0gcHkuc3RkLmluc3BlY3QuZmluZHNvdXJjZShvYmopCi0g
ICAgZXhjZXB0IHB5LmJ1aWx0aW4uX3N5c2V4OgotICAgICAgICByYWlzZQotICAgIGV4Y2VwdDog
ICMgbm9xYQotICAgICAgICByZXR1cm4gTm9uZSwgLTEKLSAgICBzb3VyY2UgPSBTb3VyY2UoKQot
ICAgIHNvdXJjZS5saW5lcyA9IFtsaW5lLnJzdHJpcCgpIGZvciBsaW5lIGluIHNvdXJjZWxpbmVz
XQotICAgIHJldHVybiBzb3VyY2UsIGxpbmVubwotCi0KLWRlZiBnZXRzb3VyY2Uob2JqLCAqKmt3
YXJncyk6Ci0gICAgaW1wb3J0IF9weXRlc3QuX2NvZGUKLSAgICBvYmogPSBfcHl0ZXN0Ll9jb2Rl
LmdldHJhd2NvZGUob2JqKQotICAgIHRyeToKLSAgICAgICAgc3Ryc3JjID0gaW5zcGVjdC5nZXRz
b3VyY2Uob2JqKQotICAgIGV4Y2VwdCBJbmRlbnRhdGlvbkVycm9yOgotICAgICAgICBzdHJzcmMg
PSAiXCJCdWdneSBweXRob24gdmVyc2lvbiBjb25zaWRlciB1cGdyYWRpbmcsIGNhbm5vdCBnZXQg
c291cmNlXCIiCi0gICAgYXNzZXJ0IGlzaW5zdGFuY2Uoc3Ryc3JjLCBzdHIpCi0gICAgcmV0dXJu
IFNvdXJjZShzdHJzcmMsICoqa3dhcmdzKQotCi0KLWRlZiBkZWluZGVudChsaW5lcywgb2Zmc2V0
PU5vbmUpOgotICAgIGlmIG9mZnNldCBpcyBOb25lOgotICAgICAgICBmb3IgbGluZSBpbiBsaW5l
czoKLSAgICAgICAgICAgIGxpbmUgPSBsaW5lLmV4cGFuZHRhYnMoKQotICAgICAgICAgICAgcyA9
IGxpbmUubHN0cmlwKCkKLSAgICAgICAgICAgIGlmIHM6Ci0gICAgICAgICAgICAgICAgb2Zmc2V0
ID0gbGVuKGxpbmUpIC0gbGVuKHMpCi0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgIG9mZnNldCA9IDAKLSAgICBpZiBvZmZzZXQgPT0gMDoKLSAgICAgICAg
cmV0dXJuIGxpc3QobGluZXMpCi0gICAgbmV3bGluZXMgPSBbXQotCi0gICAgZGVmIHJlYWRsaW5l
X2dlbmVyYXRvcihsaW5lcyk6Ci0gICAgICAgIGZvciBsaW5lIGluIGxpbmVzOgotICAgICAgICAg
ICAgeWllbGQgbGluZSArICdcbicKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIHlp
ZWxkICcnCi0KLSAgICBpdCA9IHJlYWRsaW5lX2dlbmVyYXRvcihsaW5lcykKLQotICAgIHRyeToK
LSAgICAgICAgZm9yIF8sIF8sIChzbGluZSwgXyksIChlbGluZSwgXyksIF8gaW4gdG9rZW5pemUu
Z2VuZXJhdGVfdG9rZW5zKGxhbWJkYTogbmV4dChpdCkpOgotICAgICAgICAgICAgaWYgc2xpbmUg
PiBsZW4obGluZXMpOgotICAgICAgICAgICAgICAgIGJyZWFrICAjIEVuZCBvZiBpbnB1dCByZWFj
aGVkCi0gICAgICAgICAgICBpZiBzbGluZSA+IGxlbihuZXdsaW5lcyk6Ci0gICAgICAgICAgICAg
ICAgbGluZSA9IGxpbmVzW3NsaW5lIC0gMV0uZXhwYW5kdGFicygpCi0gICAgICAgICAgICAgICAg
aWYgbGluZS5sc3RyaXAoKSBhbmQgbGluZVs6b2Zmc2V0XS5pc3NwYWNlKCk6Ci0gICAgICAgICAg
ICAgICAgICAgIGxpbmUgPSBsaW5lW29mZnNldDpdICAjIERlaW5kZW50Ci0gICAgICAgICAgICAg
ICAgbmV3bGluZXMuYXBwZW5kKGxpbmUpCi0KLSAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKHNs
aW5lLCBlbGluZSk6Ci0gICAgICAgICAgICAgICAgIyBEb24ndCBkZWluZGVudCBjb250aW51aW5n
IGxpbmVzIG9mCi0gICAgICAgICAgICAgICAgIyBtdWx0aWxpbmUgdG9rZW5zIChpLmUuIG11bHRp
bGluZSBzdHJpbmdzKQotICAgICAgICAgICAgICAgIG5ld2xpbmVzLmFwcGVuZChsaW5lc1tpXSkK
LSAgICBleGNlcHQgKEluZGVudGF0aW9uRXJyb3IsIHRva2VuaXplLlRva2VuRXJyb3IpOgotICAg
ICAgICBwYXNzCi0gICAgIyBBZGQgYW55IGxpbmVzIHdlIGRpZG4ndCBzZWUuIEUuZy4gaWYgYW4g
ZXhjZXB0aW9uIHdhcyByYWlzZWQuCi0gICAgbmV3bGluZXMuZXh0ZW5kKGxpbmVzW2xlbihuZXds
aW5lcyk6XSkKLSAgICByZXR1cm4gbmV3bGluZXMKLQotCi1kZWYgZ2V0X3N0YXRlbWVudF9zdGFy
dGVuZDIobGluZW5vLCBub2RlKToKLSAgICBpbXBvcnQgYXN0Ci0gICAgIyBmbGF0dGVuIGFsbCBz
dGF0ZW1lbnRzIGFuZCBleGNlcHQgaGFuZGxlcnMgaW50byBvbmUgbGluZW5vLWxpc3QKLSAgICAj
IEFTVCdzIGxpbmUgbnVtYmVycyBzdGFydCBpbmRleGluZyBhdCAxCi0gICAgdmFsdWVzID0gW10K
LSAgICBmb3IgeCBpbiBhc3Qud2Fsayhub2RlKToKLSAgICAgICAgaWYgaXNpbnN0YW5jZSh4LCBf
YXN0LnN0bXQpIG9yIGlzaW5zdGFuY2UoeCwgX2FzdC5FeGNlcHRIYW5kbGVyKToKLSAgICAgICAg
ICAgIHZhbHVlcy5hcHBlbmQoeC5saW5lbm8gLSAxKQotICAgICAgICAgICAgZm9yIG5hbWUgaW4g
ImZpbmFsYm9keSIsICJvcmVsc2UiOgotICAgICAgICAgICAgICAgIHZhbCA9IGdldGF0dHIoeCwg
bmFtZSwgTm9uZSkKLSAgICAgICAgICAgICAgICBpZiB2YWw6Ci0gICAgICAgICAgICAgICAgICAg
ICMgdHJlYXQgdGhlIGZpbmFsbHkvb3JlbHNlIHBhcnQgYXMgaXRzIG93biBzdGF0ZW1lbnQKLSAg
ICAgICAgICAgICAgICAgICAgdmFsdWVzLmFwcGVuZCh2YWxbMF0ubGluZW5vIC0gMSAtIDEpCi0g
ICAgdmFsdWVzLnNvcnQoKQotICAgIGluc2VydF9pbmRleCA9IGJpc2VjdF9yaWdodCh2YWx1ZXMs
IGxpbmVubykKLSAgICBzdGFydCA9IHZhbHVlc1tpbnNlcnRfaW5kZXggLSAxXQotICAgIGlmIGlu
c2VydF9pbmRleCA+PSBsZW4odmFsdWVzKToKLSAgICAgICAgZW5kID0gTm9uZQotICAgIGVsc2U6
Ci0gICAgICAgIGVuZCA9IHZhbHVlc1tpbnNlcnRfaW5kZXhdCi0gICAgcmV0dXJuIHN0YXJ0LCBl
bmQKLQotCi1kZWYgZ2V0c3RhdGVtZW50cmFuZ2VfYXN0KGxpbmVubywgc291cmNlLCBhc3NlcnRp
b249RmFsc2UsIGFzdG5vZGU9Tm9uZSk6Ci0gICAgaWYgYXN0bm9kZSBpcyBOb25lOgotICAgICAg
ICBjb250ZW50ID0gc3RyKHNvdXJjZSkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgYXN0bm9k
ZSA9IGNvbXBpbGUoY29udGVudCwgInNvdXJjZSIsICJleGVjIiwgMTAyNCkgICMgMTAyNCBmb3Ig
QVNUCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgc3RhcnQsIGVuZCA9
IGdldHN0YXRlbWVudHJhbmdlX29sZChsaW5lbm8sIHNvdXJjZSwgYXNzZXJ0aW9uKQotICAgICAg
ICAgICAgcmV0dXJuIE5vbmUsIHN0YXJ0LCBlbmQKLSAgICBzdGFydCwgZW5kID0gZ2V0X3N0YXRl
bWVudF9zdGFydGVuZDIobGluZW5vLCBhc3Rub2RlKQotICAgICMgd2UgbmVlZCB0byBjb3JyZWN0
IHRoZSBlbmQ6Ci0gICAgIyAtIGFzdC1wYXJzaW5nIHN0cmlwcyBjb21tZW50cwotICAgICMgLSB0
aGVyZSBtaWdodCBiZSBlbXB0eSBsaW5lcwotICAgICMgLSB3ZSBtaWdodCBoYXZlIGxlc3NlciBp
bmRlbnRlZCBjb2RlIGJsb2NrcyBhdCB0aGUgZW5kCi0gICAgaWYgZW5kIGlzIE5vbmU6Ci0gICAg
ICAgIGVuZCA9IGxlbihzb3VyY2UubGluZXMpCi0KLSAgICBpZiBlbmQgPiBzdGFydCArIDE6Ci0g
ICAgICAgICMgbWFrZSBzdXJlIHdlIGRvbid0IHNwYW4gZGlmZmVyZW50bHkgaW5kZW50ZWQgY29k
ZSBibG9ja3MKLSAgICAgICAgIyBieSB1c2luZyB0aGUgQmxvY2tGaW5kZXIgaGVscGVyIHVzZWQg
d2hpY2ggaW5zcGVjdC5nZXRzb3VyY2UoKSB1c2VzIGl0c2VsZgotICAgICAgICBibG9ja19maW5k
ZXIgPSBpbnNwZWN0LkJsb2NrRmluZGVyKCkKLSAgICAgICAgIyBpZiB3ZSBzdGFydCB3aXRoIGFu
IGluZGVudGVkIGxpbmUsIHB1dCBibG9ja2ZpbmRlciB0byAic3RhcnRlZCIgbW9kZQotICAgICAg
ICBibG9ja19maW5kZXIuc3RhcnRlZCA9IHNvdXJjZS5saW5lc1tzdGFydF1bMF0uaXNzcGFjZSgp
Ci0gICAgICAgIGl0ID0gKCh4ICsgIlxuIikgZm9yIHggaW4gc291cmNlLmxpbmVzW3N0YXJ0OmVu
ZF0pCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZvciB0b2sgaW4gdG9rZW5pemUuZ2VuZXJh
dGVfdG9rZW5zKGxhbWJkYTogbmV4dChpdCkpOgotICAgICAgICAgICAgICAgIGJsb2NrX2ZpbmRl
ci50b2tlbmVhdGVyKCp0b2spCi0gICAgICAgIGV4Y2VwdCAoaW5zcGVjdC5FbmRPZkJsb2NrLCBJ
bmRlbnRhdGlvbkVycm9yKToKLSAgICAgICAgICAgIGVuZCA9IGJsb2NrX2ZpbmRlci5sYXN0ICsg
c3RhcnQKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgIHBhc3MKLQotICAg
ICMgdGhlIGVuZCBtaWdodCBzdGlsbCBwb2ludCB0byBhIGNvbW1lbnQgb3IgZW1wdHkgbGluZSwg
Y29ycmVjdCBpdAotICAgIHdoaWxlIGVuZDoKLSAgICAgICAgbGluZSA9IHNvdXJjZS5saW5lc1tl
bmQgLSAxXS5sc3RyaXAoKQotICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoIiMiKSBvciBub3Qg
bGluZToKLSAgICAgICAgICAgIGVuZCAtPSAxCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBi
cmVhawotICAgIHJldHVybiBhc3Rub2RlLCBzdGFydCwgZW5kCi0KLQotZGVmIGdldHN0YXRlbWVu
dHJhbmdlX29sZChsaW5lbm8sIHNvdXJjZSwgYXNzZXJ0aW9uPUZhbHNlKToKLSAgICAiIiIgcmV0
dXJuIChzdGFydCwgZW5kKSB0dXBsZSB3aGljaCBzcGFucyB0aGUgbWluaW1hbAotICAgICAgICBz
dGF0ZW1lbnQgcmVnaW9uIHdoaWNoIGNvbnRhaW5pbmcgdGhlIGdpdmVuIGxpbmVuby4KLSAgICAg
ICAgcmFpc2UgYW4gSW5kZXhFcnJvciBpZiBubyBzdWNoIHN0YXRlbWVudHJhbmdlIGNhbiBiZSBm
b3VuZC4KLSAgICAiIiIKLSAgICAjIFhYWCB0aGlzIGxvZ2ljIGlzIG9ubHkgdXNlZCBvbiBweXRo
b24yLjQgYW5kIGJlbG93Ci0gICAgIyAxLiBmaW5kIHRoZSBzdGFydCBvZiB0aGUgc3RhdGVtZW50
Ci0gICAgZnJvbSBjb2Rlb3AgaW1wb3J0IGNvbXBpbGVfY29tbWFuZAotICAgIGZvciBzdGFydCBp
biByYW5nZShsaW5lbm8sIC0xLCAtMSk6Ci0gICAgICAgIGlmIGFzc2VydGlvbjoKLSAgICAgICAg
ICAgIGxpbmUgPSBzb3VyY2UubGluZXNbc3RhcnRdCi0gICAgICAgICAgICAjIHRoZSBmb2xsb3dp
bmcgbGluZXMgYXJlIG5vdCBmdWxseSB0ZXN0ZWQsIGNoYW5nZSB3aXRoIGNhcmUKLSAgICAgICAg
ICAgIGlmICdzdXBlcicgaW4gbGluZSBhbmQgJ3NlbGYnIGluIGxpbmUgYW5kICdfX2luaXRfXycg
aW4gbGluZToKLSAgICAgICAgICAgICAgICByYWlzZSBJbmRleEVycm9yKCJsaWtlbHkgYSBzdWJj
bGFzcyIpCi0gICAgICAgICAgICBpZiAiYXNzZXJ0IiBub3QgaW4gbGluZSBhbmQgInJhaXNlIiBu
b3QgaW4gbGluZToKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICB0cnlsaW5lcyA9
IHNvdXJjZS5saW5lc1tzdGFydDpsaW5lbm8gKyAxXQotICAgICAgICAjIHF1aWNrIGhhY2sgdG8g
cHJlcGFyZSBwYXJzaW5nIGFuIGluZGVudGVkIGxpbmUgd2l0aAotICAgICAgICAjIGNvbXBpbGVf
Y29tbWFuZCgpICh3aGljaCBlcnJvcnMgb24gInJldHVybiIgb3V0c2lkZSBkZWZzKQotICAgICAg
ICB0cnlsaW5lcy5pbnNlcnQoMCwgJ2RlZiB4eHgoKTonKQotICAgICAgICB0cnlzb3VyY2UgPSAn
XG4gJy5qb2luKHRyeWxpbmVzKQotICAgICAgICAjICAgICAgICAgICAgICBeIHNwYWNlIGhlcmUK
LSAgICAgICAgdHJ5OgotICAgICAgICAgICAgY29tcGlsZV9jb21tYW5kKHRyeXNvdXJjZSkKLSAg
ICAgICAgZXhjZXB0IChTeW50YXhFcnJvciwgT3ZlcmZsb3dFcnJvciwgVmFsdWVFcnJvcik6Ci0g
ICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICMgMi4gZmluZCB0aGUgZW5kIG9mIHRoZSBz
dGF0ZW1lbnQKLSAgICAgICAgZm9yIGVuZCBpbiByYW5nZShsaW5lbm8gKyAxLCBsZW4oc291cmNl
KSArIDEpOgotICAgICAgICAgICAgdHJ5c291cmNlID0gc291cmNlW3N0YXJ0OmVuZF0KLSAgICAg
ICAgICAgIGlmIHRyeXNvdXJjZS5pc3BhcnNlYWJsZSgpOgotICAgICAgICAgICAgICAgIHJldHVy
biBzdGFydCwgZW5kCi0gICAgcmFpc2UgU3ludGF4RXJyb3IoIm5vIHZhbGlkIHNvdXJjZSByYW5n
ZSBhcm91bmQgbGluZSAlZCAiICUgKGxpbmVubywpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
X3B5dGVzdC9fY29kZS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvX2NvZGUv
dzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyMjMzNGYzZjhl
ZGE5NjZhMmQxOGRlZGE3MmU5ZDkwMmY4N2Q3MWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9fY29kZS93M2MtaW1wb3J0
LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRp
cmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1v
ZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBw
dWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXcz
Yy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUg
dGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRv
ciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZp
eGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L19weXRlc3QvX2NvZGUvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L19jb2RlL19w
eTJ0cmFjZWJhY2sucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L19jb2RlL2NvZGUucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9fcHl0ZXN0L19jb2RlL3NvdXJjZS5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
X3B5dGVzdC9hc3NlcnRpb24vX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2Fzc2Vy
dGlvbi9fX2luaXRfXy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTQ4ZTk4Yzg1
YWEyYmJkZThkZjVjMDczYmE5YjY0NWZjYzMyNTdiNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2Fzc2VydGlvbi9fX2lu
aXRfXy5weQorKysgL2Rldi9udWxsCkBAIC0xLDE0NiArMCwwIEBACi0iIiIKLXN1cHBvcnQgZm9y
IHByZXNlbnRpbmcgZGV0YWlsZWQgaW5mb3JtYXRpb24gaW4gZmFpbGluZyBhc3NlcnRpb25zLgot
IiIiCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHBy
aW50X2Z1bmN0aW9uCi1pbXBvcnQgc3lzCi1pbXBvcnQgc2l4Ci0KLWZyb20gX3B5dGVzdC5hc3Nl
cnRpb24gaW1wb3J0IHV0aWwKLWZyb20gX3B5dGVzdC5hc3NlcnRpb24gaW1wb3J0IHJld3JpdGUK
LWZyb20gX3B5dGVzdC5hc3NlcnRpb24gaW1wb3J0IHRydW5jYXRlCi0KLQotZGVmIHB5dGVzdF9h
ZGRvcHRpb24ocGFyc2VyKToKLSAgICBncm91cCA9IHBhcnNlci5nZXRncm91cCgiZGVidWdjb25m
aWciKQotICAgIGdyb3VwLmFkZG9wdGlvbignLS1hc3NlcnQnLAotICAgICAgICAgICAgICAgICAg
ICBhY3Rpb249InN0b3JlIiwKLSAgICAgICAgICAgICAgICAgICAgZGVzdD0iYXNzZXJ0bW9kZSIs
Ci0gICAgICAgICAgICAgICAgICAgIGNob2ljZXM9KCJyZXdyaXRlIiwgInBsYWluIiwpLAotICAg
ICAgICAgICAgICAgICAgICBkZWZhdWx0PSJyZXdyaXRlIiwKLSAgICAgICAgICAgICAgICAgICAg
bWV0YXZhcj0iTU9ERSIsCi0gICAgICAgICAgICAgICAgICAgIGhlbHA9IiIiQ29udHJvbCBhc3Nl
cnRpb24gZGVidWdnaW5nIHRvb2xzLiAgJ3BsYWluJwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBlcmZvcm1zIG5vIGFzc2VydGlvbiBkZWJ1Z2dpbmcuICAncmV3cml0ZScKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAodGhlIGRlZmF1bHQpIHJld3JpdGVzIGFzc2VydCBzdGF0ZW1l
bnRzIGluCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdCBtb2R1bGVzIG9uIGltcG9y
dCB0byBwcm92aWRlIGFzc2VydAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Np
b24gaW5mb3JtYXRpb24uIiIiKQotCi0KLWRlZiByZWdpc3Rlcl9hc3NlcnRfcmV3cml0ZSgqbmFt
ZXMpOgotICAgICIiIlJlZ2lzdGVyIG9uZSBvciBtb3JlIG1vZHVsZSBuYW1lcyB0byBiZSByZXdy
aXR0ZW4gb24gaW1wb3J0LgotCi0gICAgVGhpcyBmdW5jdGlvbiB3aWxsIG1ha2Ugc3VyZSB0aGF0
IHRoaXMgbW9kdWxlIG9yIGFsbCBtb2R1bGVzIGluc2lkZQotICAgIHRoZSBwYWNrYWdlIHdpbGwg
Z2V0IHRoZWlyIGFzc2VydCBzdGF0ZW1lbnRzIHJld3JpdHRlbi4KLSAgICBUaHVzIHlvdSBzaG91
bGQgbWFrZSBzdXJlIHRvIGNhbGwgdGhpcyBiZWZvcmUgdGhlIG1vZHVsZSBpcwotICAgIGFjdHVh
bGx5IGltcG9ydGVkLCB1c3VhbGx5IGluIHlvdXIgX19pbml0X18ucHkgaWYgeW91IGFyZSBhIHBs
dWdpbgotICAgIHVzaW5nIGEgcGFja2FnZS4KLQotICAgIDpyYWlzZSBUeXBlRXJyb3I6IGlmIHRo
ZSBnaXZlbiBtb2R1bGUgbmFtZXMgYXJlIG5vdCBzdHJpbmdzLgotICAgICIiIgotICAgIGZvciBu
YW1lIGluIG5hbWVzOgotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShuYW1lLCBzdHIpOgotICAg
ICAgICAgICAgbXNnID0gJ2V4cGVjdGVkIG1vZHVsZSBuYW1lcyBhcyAqYXJncywgZ290IHswfSBp
bnN0ZWFkJwotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKG1zZy5mb3JtYXQocmVwcihuYW1l
cykpKQotICAgIGZvciBob29rIGluIHN5cy5tZXRhX3BhdGg6Ci0gICAgICAgIGlmIGlzaW5zdGFu
Y2UoaG9vaywgcmV3cml0ZS5Bc3NlcnRpb25SZXdyaXRpbmdIb29rKToKLSAgICAgICAgICAgIGlt
cG9ydGhvb2sgPSBob29rCi0gICAgICAgICAgICBicmVhawotICAgIGVsc2U6Ci0gICAgICAgIGlt
cG9ydGhvb2sgPSBEdW1teVJld3JpdGVIb29rKCkKLSAgICBpbXBvcnRob29rLm1hcmtfcmV3cml0
ZSgqbmFtZXMpCi0KLQotY2xhc3MgRHVtbXlSZXdyaXRlSG9vayhvYmplY3QpOgotICAgICIiIkEg
bm8tb3AgaW1wb3J0IGhvb2sgZm9yIHdoZW4gcmV3cml0aW5nIGlzIGRpc2FibGVkLiIiIgotCi0g
ICAgZGVmIG1hcmtfcmV3cml0ZShzZWxmLCAqbmFtZXMpOgotICAgICAgICBwYXNzCi0KLQotY2xh
c3MgQXNzZXJ0aW9uU3RhdGU6Ci0gICAgIiIiU3RhdGUgZm9yIHRoZSBhc3NlcnRpb24gcGx1Z2lu
LiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbmZpZywgbW9kZSk6Ci0gICAgICAgIHNl
bGYubW9kZSA9IG1vZGUKLSAgICAgICAgc2VsZi50cmFjZSA9IGNvbmZpZy50cmFjZS5yb290Lmdl
dCgiYXNzZXJ0aW9uIikKLSAgICAgICAgc2VsZi5ob29rID0gTm9uZQotCi0KLWRlZiBpbnN0YWxs
X2ltcG9ydGhvb2soY29uZmlnKToKLSAgICAiIiJUcnkgdG8gaW5zdGFsbCB0aGUgcmV3cml0ZSBo
b29rLCByYWlzZSBTeXN0ZW1FcnJvciBpZiBpdCBmYWlscy4iIiIKLSAgICAjIEp5dGhvbiBoYXMg
YW4gQVNUIGJ1ZyB0aGF0IG1ha2UgdGhlIGFzc2VydGlvbiByZXdyaXRpbmcgaG9vayBtYWxmdW5j
dGlvbi4KLSAgICBpZiAoc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2phdmEnKSk6Ci0gICAgICAg
IHJhaXNlIFN5c3RlbUVycm9yKCdyZXdyaXRlIG5vdCBzdXBwb3J0ZWQnKQotCi0gICAgY29uZmln
Ll9hc3NlcnRzdGF0ZSA9IEFzc2VydGlvblN0YXRlKGNvbmZpZywgJ3Jld3JpdGUnKQotICAgIGNv
bmZpZy5fYXNzZXJ0c3RhdGUuaG9vayA9IGhvb2sgPSByZXdyaXRlLkFzc2VydGlvblJld3JpdGlu
Z0hvb2soY29uZmlnKQotICAgIHN5cy5tZXRhX3BhdGguaW5zZXJ0KDAsIGhvb2spCi0gICAgY29u
ZmlnLl9hc3NlcnRzdGF0ZS50cmFjZSgnaW5zdGFsbGVkIHJld3JpdGUgaW1wb3J0IGhvb2snKQot
Ci0gICAgZGVmIHVuZG8oKToKLSAgICAgICAgaG9vayA9IGNvbmZpZy5fYXNzZXJ0c3RhdGUuaG9v
awotICAgICAgICBpZiBob29rIGlzIG5vdCBOb25lIGFuZCBob29rIGluIHN5cy5tZXRhX3BhdGg6
Ci0gICAgICAgICAgICBzeXMubWV0YV9wYXRoLnJlbW92ZShob29rKQotCi0gICAgY29uZmlnLmFk
ZF9jbGVhbnVwKHVuZG8pCi0gICAgcmV0dXJuIGhvb2sKLQotCi1kZWYgcHl0ZXN0X2NvbGxlY3Rp
b24oc2Vzc2lvbik6Ci0gICAgIyB0aGlzIGhvb2sgaXMgb25seSBjYWxsZWQgd2hlbiB0ZXN0IG1v
ZHVsZXMgYXJlIGNvbGxlY3RlZAotICAgICMgc28gZm9yIGV4YW1wbGUgbm90IGluIHRoZSBtYXN0
ZXIgcHJvY2VzcyBvZiBweXRlc3QteGRpc3QKLSAgICAjICh3aGljaCBkb2VzIG5vdCBjb2xsZWN0
IHRlc3QgbW9kdWxlcykKLSAgICBhc3NlcnRzdGF0ZSA9IGdldGF0dHIoc2Vzc2lvbi5jb25maWcs
ICdfYXNzZXJ0c3RhdGUnLCBOb25lKQotICAgIGlmIGFzc2VydHN0YXRlOgotICAgICAgICBpZiBh
c3NlcnRzdGF0ZS5ob29rIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgYXNzZXJ0c3RhdGUuaG9v
ay5zZXRfc2Vzc2lvbihzZXNzaW9uKQotCi0KLWRlZiBweXRlc3RfcnVudGVzdF9zZXR1cChpdGVt
KToKLSAgICAiIiJTZXR1cCB0aGUgcHl0ZXN0X2Fzc2VydHJlcHJfY29tcGFyZSBob29rCi0KLSAg
ICBUaGUgbmV3aW50ZXJwcmV0IGFuZCByZXdyaXRlIG1vZHVsZXMgd2lsbCB1c2UgdXRpbC5fcmVw
cmNvbXBhcmUgaWYKLSAgICBpdCBleGlzdHMgdG8gdXNlIGN1c3RvbSByZXBvcnRpbmcgdmlhIHRo
ZQotICAgIHB5dGVzdF9hc3NlcnRyZXByX2NvbXBhcmUgaG9vay4gIFRoaXMgc2V0cyB1cCB0aGlz
IGN1c3RvbQotICAgIGNvbXBhcmlzb24gZm9yIHRoZSB0ZXN0LgotICAgICIiIgotICAgIGRlZiBj
YWxsYmlucmVwcihvcCwgbGVmdCwgcmlnaHQpOgotICAgICAgICAiIiJDYWxsIHRoZSBweXRlc3Rf
YXNzZXJ0cmVwcl9jb21wYXJlIGhvb2sgYW5kIHByZXBhcmUgdGhlIHJlc3VsdAotCi0gICAgICAg
IFRoaXMgdXNlcyB0aGUgZmlyc3QgcmVzdWx0IGZyb20gdGhlIGhvb2sgYW5kIHRoZW4gZW5zdXJl
cyB0aGUKLSAgICAgICAgZm9sbG93aW5nOgotICAgICAgICAqIE92ZXJseSB2ZXJib3NlIGV4cGxh
bmF0aW9ucyBhcmUgdHJ1bmNhdGVkIHVubGVzcyBjb25maWd1cmVkIG90aGVyd2lzZQotICAgICAg
ICAgIChlZy4gaWYgcnVubmluZyBpbiB2ZXJib3NlIG1vZGUpLgotICAgICAgICAqIEVtYmVkZGVk
IG5ld2xpbmVzIGFyZSBlc2NhcGVkIHRvIGhlbHAgdXRpbC5mb3JtYXRfZXhwbGFuYXRpb24oKQot
ICAgICAgICAgIGxhdGVyLgotICAgICAgICAqIElmIHRoZSByZXdyaXRlIG1vZGUgaXMgdXNlZCBl
bWJlZGRlZCAlLWNoYXJhY3RlcnMgYXJlIHJlcGxhY2VkCi0gICAgICAgICAgdG8gcHJvdGVjdCBs
YXRlciAlIGZvcm1hdHRpbmcuCi0KLSAgICAgICAgVGhlIHJlc3VsdCBjYW4gYmUgZm9ybWF0dGVk
IGJ5IHV0aWwuZm9ybWF0X2V4cGxhbmF0aW9uKCkgZm9yCi0gICAgICAgIHByZXR0eSBwcmludGlu
Zy4KLSAgICAgICAgIiIiCi0gICAgICAgIGhvb2tfcmVzdWx0ID0gaXRlbS5paG9vay5weXRlc3Rf
YXNzZXJ0cmVwcl9jb21wYXJlKAotICAgICAgICAgICAgY29uZmlnPWl0ZW0uY29uZmlnLCBvcD1v
cCwgbGVmdD1sZWZ0LCByaWdodD1yaWdodCkKLSAgICAgICAgZm9yIG5ld19leHBsIGluIGhvb2tf
cmVzdWx0OgotICAgICAgICAgICAgaWYgbmV3X2V4cGw6Ci0gICAgICAgICAgICAgICAgbmV3X2V4
cGwgPSB0cnVuY2F0ZS50cnVuY2F0ZV9pZl9yZXF1aXJlZChuZXdfZXhwbCwgaXRlbSkKLSAgICAg
ICAgICAgICAgICBuZXdfZXhwbCA9IFtsaW5lLnJlcGxhY2UoIlxuIiwgIlxcbiIpIGZvciBsaW5l
IGluIG5ld19leHBsXQotICAgICAgICAgICAgICAgIHJlcyA9IHNpeC50ZXh0X3R5cGUoIlxufiIp
LmpvaW4obmV3X2V4cGwpCi0gICAgICAgICAgICAgICAgaWYgaXRlbS5jb25maWcuZ2V0dmFsdWUo
ImFzc2VydG1vZGUiKSA9PSAicmV3cml0ZSI6Ci0gICAgICAgICAgICAgICAgICAgIHJlcyA9IHJl
cy5yZXBsYWNlKCIlIiwgIiUlIikKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVzCi0gICAgdXRp
bC5fcmVwcmNvbXBhcmUgPSBjYWxsYmlucmVwcgotCi0KLWRlZiBweXRlc3RfcnVudGVzdF90ZWFy
ZG93bihpdGVtKToKLSAgICB1dGlsLl9yZXByY29tcGFyZSA9IE5vbmUKLQotCi1kZWYgcHl0ZXN0
X3Nlc3Npb25maW5pc2goc2Vzc2lvbik6Ci0gICAgYXNzZXJ0c3RhdGUgPSBnZXRhdHRyKHNlc3Np
b24uY29uZmlnLCAnX2Fzc2VydHN0YXRlJywgTm9uZSkKLSAgICBpZiBhc3NlcnRzdGF0ZToKLSAg
ICAgICAgaWYgYXNzZXJ0c3RhdGUuaG9vayBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGFzc2Vy
dHN0YXRlLmhvb2suc2V0X3Nlc3Npb24oTm9uZSkKLQotCi0jIEV4cG9zZSB0aGlzIHBsdWdpbidz
IGltcGxlbWVudGF0aW9uIGZvciB0aGUgcHl0ZXN0X2Fzc2VydHJlcHJfY29tcGFyZSBob29rCi1w
eXRlc3RfYXNzZXJ0cmVwcl9jb21wYXJlID0gdXRpbC5hc3NlcnRyZXByX2NvbXBhcmUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvYXNzZXJ0aW9uL3Jld3JpdGUucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9fcHl0ZXN0L2Fzc2VydGlvbi9yZXdyaXRlLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBmNjQzNThmNDkwYmM5MWFmOWE1ZWM1MjY1MmI2ZThiMmJlMGFjYzYxLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRl
c3QvYXNzZXJ0aW9uL3Jld3JpdGUucHkKKysrIC9kZXYvbnVsbApAQCAtMSw5NDggKzAsMCBAQAot
IiIiUmV3cml0ZSBhc3NlcnRpb24gQVNUIHRvIHByb2R1Y2UgbmljZSBlcnJvciBtZXNzYWdlcyIi
IgotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmlu
dF9mdW5jdGlvbgotaW1wb3J0IGFzdAotaW1wb3J0IF9hc3QKLWltcG9ydCBlcnJubwotaW1wb3J0
IGl0ZXJ0b29scwotaW1wb3J0IGltcAotaW1wb3J0IG1hcnNoYWwKLWltcG9ydCBvcwotaW1wb3J0
IHJlCi1pbXBvcnQgc2l4Ci1pbXBvcnQgc3RydWN0Ci1pbXBvcnQgc3lzCi1pbXBvcnQgdHlwZXMK
LQotaW1wb3J0IHB5Ci1mcm9tIF9weXRlc3QuYXNzZXJ0aW9uIGltcG9ydCB1dGlsCi0KLQotIyBw
eXRlc3QgY2FjaGVzIHJld3JpdHRlbiBweWNzIGluIF9fcHljYWNoZV9fLgotaWYgaGFzYXR0cihp
bXAsICJnZXRfdGFnIik6Ci0gICAgUFlURVNUX1RBRyA9IGltcC5nZXRfdGFnKCkgKyAiLVBZVEVT
VCIKLWVsc2U6Ci0gICAgaWYgaGFzYXR0cihzeXMsICJweXB5X3ZlcnNpb25faW5mbyIpOgotICAg
ICAgICBpbXBsID0gInB5cHkiCi0gICAgZWxpZiBzeXMucGxhdGZvcm0gPT0gImphdmEiOgotICAg
ICAgICBpbXBsID0gImp5dGhvbiIKLSAgICBlbHNlOgotICAgICAgICBpbXBsID0gImNweXRob24i
Ci0gICAgdmVyID0gc3lzLnZlcnNpb25faW5mbwotICAgIFBZVEVTVF9UQUcgPSAiJXMtJXMlcy1Q
WVRFU1QiICUgKGltcGwsIHZlclswXSwgdmVyWzFdKQotICAgIGRlbCB2ZXIsIGltcGwKLQotUFlD
X0VYVCA9ICIucHkiICsgKF9fZGVidWdfXyBhbmQgImMiIG9yICJvIikKLVBZQ19UQUlMID0gIi4i
ICsgUFlURVNUX1RBRyArIFBZQ19FWFQKLQotQVNDSUlfSVNfREVGQVVMVF9FTkNPRElORyA9IHN5
cy52ZXJzaW9uX2luZm9bMF0gPCAzCi0KLWlmIHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsIDUpOgot
ICAgIGFzdF9DYWxsID0gYXN0LkNhbGwKLWVsc2U6Ci0gICAgZGVmIGFzdF9DYWxsKGEsIGIsIGMp
OgotICAgICAgICByZXR1cm4gYXN0LkNhbGwoYSwgYiwgYywgTm9uZSwgTm9uZSkKLQotCi1jbGFz
cyBBc3NlcnRpb25SZXdyaXRpbmdIb29rKG9iamVjdCk6Ci0gICAgIiIiUEVQMzAyIEltcG9ydCBo
b29rIHdoaWNoIHJld3JpdGVzIGFzc2VydHMuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwg
Y29uZmlnKToKLSAgICAgICAgc2VsZi5jb25maWcgPSBjb25maWcKLSAgICAgICAgc2VsZi5mbnBh
dHMgPSBjb25maWcuZ2V0aW5pKCJweXRob25fZmlsZXMiKQotICAgICAgICBzZWxmLnNlc3Npb24g
PSBOb25lCi0gICAgICAgIHNlbGYubW9kdWxlcyA9IHt9Ci0gICAgICAgIHNlbGYuX3Jld3JpdHRl
bl9uYW1lcyA9IHNldCgpCi0gICAgICAgIHNlbGYuX3JlZ2lzdGVyX3dpdGhfcGtnX3Jlc291cmNl
cygpCi0gICAgICAgIHNlbGYuX211c3RfcmV3cml0ZSA9IHNldCgpCi0KLSAgICBkZWYgc2V0X3Nl
c3Npb24oc2VsZiwgc2Vzc2lvbik6Ci0gICAgICAgIHNlbGYuc2Vzc2lvbiA9IHNlc3Npb24KLQot
ICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCBuYW1lLCBwYXRoPU5vbmUpOgotICAgICAgICBzdGF0
ZSA9IHNlbGYuY29uZmlnLl9hc3NlcnRzdGF0ZQotICAgICAgICBzdGF0ZS50cmFjZSgiZmluZF9t
b2R1bGUgY2FsbGVkIGZvcjogJXMiICUgbmFtZSkKLSAgICAgICAgbmFtZXMgPSBuYW1lLnJzcGxp
dCgiLiIsIDEpCi0gICAgICAgIGxhc3RuYW1lID0gbmFtZXNbLTFdCi0gICAgICAgIHB0aCA9IE5v
bmUKLSAgICAgICAgaWYgcGF0aCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICMgU3RhcnRpbmcg
d2l0aCBQeXRob24gMy4zLCBwYXRoIGlzIGEgX05hbWVzcGFjZVBhdGgoKSwgd2hpY2gKLSAgICAg
ICAgICAgICMgY2F1c2VzIHByb2JsZW1zIGlmIG5vdCBjb252ZXJ0ZWQgdG8gbGlzdC4KLSAgICAg
ICAgICAgIHBhdGggPSBsaXN0KHBhdGgpCi0gICAgICAgICAgICBpZiBsZW4ocGF0aCkgPT0gMToK
LSAgICAgICAgICAgICAgICBwdGggPSBwYXRoWzBdCi0gICAgICAgIGlmIHB0aCBpcyBOb25lOgot
ICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGZkLCBmbiwgZGVzYyA9IGltcC5maW5k
X21vZHVsZShsYXN0bmFtZSwgcGF0aCkKLSAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoK
LSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICAgICAgaWYgZmQgaXMgbm90IE5v
bmU6Ci0gICAgICAgICAgICAgICAgZmQuY2xvc2UoKQotICAgICAgICAgICAgdHAgPSBkZXNjWzJd
Ci0gICAgICAgICAgICBpZiB0cCA9PSBpbXAuUFlfQ09NUElMRUQ6Ci0gICAgICAgICAgICAgICAg
aWYgaGFzYXR0cihpbXAsICJzb3VyY2VfZnJvbV9jYWNoZSIpOgotICAgICAgICAgICAgICAgICAg
ICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmbiA9IGltcC5zb3VyY2VfZnJvbV9jYWNo
ZShmbikKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAjIFB5dGhvbiAzIGRvZXNuJ3QgbGlrZSBvcnBoYW5lZCBidXQgc3RpbGwt
aW1wb3J0YWJsZQotICAgICAgICAgICAgICAgICAgICAgICAgIyAucHljIGZpbGVzLgotICAgICAg
ICAgICAgICAgICAgICAgICAgZm4gPSBmbls6LTFdCi0gICAgICAgICAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgICAgICAgICAgZm4gPSBmbls6LTFdCi0gICAgICAgICAgICBlbGlmIHRwICE9IGlt
cC5QWV9TT1VSQ0U6Ci0gICAgICAgICAgICAgICAgIyBEb24ndCBrbm93IHdoYXQgdGhpcyBpcy4K
LSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAg
Zm4gPSBvcy5wYXRoLmpvaW4ocHRoLCBuYW1lLnJwYXJ0aXRpb24oIi4iKVsyXSArICIucHkiKQot
Ci0gICAgICAgIGZuX3B5cGF0aCA9IHB5LnBhdGgubG9jYWwoZm4pCi0gICAgICAgIGlmIG5vdCBz
ZWxmLl9zaG91bGRfcmV3cml0ZShuYW1lLCBmbl9weXBhdGgsIHN0YXRlKToKLSAgICAgICAgICAg
IHJldHVybiBOb25lCi0KLSAgICAgICAgc2VsZi5fcmV3cml0dGVuX25hbWVzLmFkZChuYW1lKQot
Ci0gICAgICAgICMgVGhlIHJlcXVlc3RlZCBtb2R1bGUgbG9va3MgbGlrZSBhIHRlc3QgZmlsZSwg
c28gcmV3cml0ZSBpdC4gVGhpcyBpcwotICAgICAgICAjIHRoZSBtb3N0IG1hZ2ljYWwgcGFydCBv
ZiB0aGUgcHJvY2VzczogbG9hZCB0aGUgc291cmNlLCByZXdyaXRlIHRoZQotICAgICAgICAjIGFz
c2VydHMsIGFuZCBsb2FkIHRoZSByZXdyaXR0ZW4gc291cmNlLiBXZSBhbHNvIGNhY2hlIHRoZSBy
ZXdyaXR0ZW4KLSAgICAgICAgIyBtb2R1bGUgY29kZSBpbiBhIHNwZWNpYWwgcHljLiBXZSBtdXN0
IGJlIGF3YXJlIG9mIHRoZSBwb3NzaWJpbGl0eSBvZgotICAgICAgICAjIGNvbmN1cnJlbnQgcHl0
ZXN0IHByb2Nlc3NlcyByZXdyaXRpbmcgYW5kIGxvYWRpbmcgcHljcy4gVG8gYXZvaWQKLSAgICAg
ICAgIyB0cmlja3kgcmFjZSBjb25kaXRpb25zLCB3ZSBtYWludGFpbiB0aGUgZm9sbG93aW5nIGlu
dmFyaWFudDogVGhlCi0gICAgICAgICMgY2FjaGVkIHB5YyBpcyBhbHdheXMgYSBjb21wbGV0ZSwg
dmFsaWQgcHljLiBPcGVyYXRpb25zIG9uIGl0IG11c3QgYmUKLSAgICAgICAgIyBhdG9taWMuIFBP
U0lYJ3MgYXRvbWljIHJlbmFtZSBjb21lcyBpbiBoYW5keS4KLSAgICAgICAgd3JpdGUgPSBub3Qg
c3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUKLSAgICAgICAgY2FjaGVfZGlyID0gb3MucGF0aC5qb2lu
KGZuX3B5cGF0aC5kaXJuYW1lLCAiX19weWNhY2hlX18iKQotICAgICAgICBpZiB3cml0ZToKLSAg
ICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBvcy5ta2RpcihjYWNoZV9kaXIpCi0gICAg
ICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgICAgICBlID0gc3lzLmV4Y19pbmZv
KClbMV0uZXJybm8KLSAgICAgICAgICAgICAgICBpZiBlID09IGVycm5vLkVFWElTVDoKLSAgICAg
ICAgICAgICAgICAgICAgIyBFaXRoZXIgdGhlIF9fcHljYWNoZV9fIGRpcmVjdG9yeSBhbHJlYWR5
IGV4aXN0cyAodGhlCi0gICAgICAgICAgICAgICAgICAgICMgY29tbW9uIGNhc2UpIG9yIGl0J3Mg
YmxvY2tlZCBieSBhIG5vbi1kaXIgbm9kZS4gSW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICMg
bGF0dGVyIGNhc2UsIHdlJ2xsIGlnbm9yZSBpdCBpbiBfd3JpdGVfcHljLgotICAgICAgICAgICAg
ICAgICAgICBwYXNzCi0gICAgICAgICAgICAgICAgZWxpZiBlIGluIFtlcnJuby5FTk9FTlQsIGVy
cm5vLkVOT1RESVJdOgotICAgICAgICAgICAgICAgICAgICAjIE9uZSBvZiB0aGUgcGF0aCBjb21w
b25lbnRzIHdhcyBub3QgYSBkaXJlY3RvcnksIGxpa2VseQotICAgICAgICAgICAgICAgICAgICAj
IGJlY2F1c2Ugd2UncmUgaW4gYSB6aXAgZmlsZS4KLSAgICAgICAgICAgICAgICAgICAgd3JpdGUg
PSBGYWxzZQotICAgICAgICAgICAgICAgIGVsaWYgZSBpbiBbZXJybm8uRUFDQ0VTLCBlcnJuby5F
Uk9GUywgZXJybm8uRVBFUk1dOgotICAgICAgICAgICAgICAgICAgICBzdGF0ZS50cmFjZSgicmVh
ZCBvbmx5IGRpcmVjdG9yeTogJXIiICUgZm5fcHlwYXRoLmRpcm5hbWUpCi0gICAgICAgICAgICAg
ICAgICAgIHdyaXRlID0gRmFsc2UKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAg
ICAgICAgICByYWlzZQotICAgICAgICBjYWNoZV9uYW1lID0gZm5fcHlwYXRoLmJhc2VuYW1lWzot
M10gKyBQWUNfVEFJTAotICAgICAgICBweWMgPSBvcy5wYXRoLmpvaW4oY2FjaGVfZGlyLCBjYWNo
ZV9uYW1lKQotICAgICAgICAjIE5vdGljZSB0aGF0IGV2ZW4gaWYgd2UncmUgaW4gYSByZWFkLW9u
bHkgZGlyZWN0b3J5LCBJJ20gZ29pbmcKLSAgICAgICAgIyB0byBjaGVjayBmb3IgYSBjYWNoZWQg
cHljLiBUaGlzIG1heSBub3QgYmUgb3B0aW1hbC4uLgotICAgICAgICBjbyA9IF9yZWFkX3B5Yyhm
bl9weXBhdGgsIHB5Yywgc3RhdGUudHJhY2UpCi0gICAgICAgIGlmIGNvIGlzIE5vbmU6Ci0gICAg
ICAgICAgICBzdGF0ZS50cmFjZSgicmV3cml0aW5nICVyIiAlIChmbiwpKQotICAgICAgICAgICAg
c291cmNlX3N0YXQsIGNvID0gX3Jld3JpdGVfdGVzdChzZWxmLmNvbmZpZywgZm5fcHlwYXRoKQot
ICAgICAgICAgICAgaWYgY28gaXMgTm9uZToKLSAgICAgICAgICAgICAgICAjIFByb2JhYmx5IGEg
U3ludGF4RXJyb3IgaW4gdGhlIHRlc3QuCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAg
ICAgICAgICAgIGlmIHdyaXRlOgotICAgICAgICAgICAgICAgIF9tYWtlX3Jld3JpdHRlbl9weWMo
c3RhdGUsIHNvdXJjZV9zdGF0LCBweWMsIGNvKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAg
c3RhdGUudHJhY2UoImZvdW5kIGNhY2hlZCByZXdyaXR0ZW4gcHljIGZvciAlciIgJSAoZm4sKSkK
LSAgICAgICAgc2VsZi5tb2R1bGVzW25hbWVdID0gY28sIHB5YwotICAgICAgICByZXR1cm4gc2Vs
ZgotCi0gICAgZGVmIF9zaG91bGRfcmV3cml0ZShzZWxmLCBuYW1lLCBmbl9weXBhdGgsIHN0YXRl
KToKLSAgICAgICAgIyBhbHdheXMgcmV3cml0ZSBjb25mdGVzdCBmaWxlcwotICAgICAgICBmbiA9
IHN0cihmbl9weXBhdGgpCi0gICAgICAgIGlmIGZuX3B5cGF0aC5iYXNlbmFtZSA9PSAnY29uZnRl
c3QucHknOgotICAgICAgICAgICAgc3RhdGUudHJhY2UoInJld3JpdGluZyBjb25mdGVzdCBmaWxl
OiAlciIgJSAoZm4sKSkKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0KLSAgICAgICAgaWYgc2Vs
Zi5zZXNzaW9uIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgaWYgc2VsZi5zZXNzaW9uLmlzaW5p
dHBhdGgoZm4pOgotICAgICAgICAgICAgICAgIHN0YXRlLnRyYWNlKCJtYXRjaGVkIHRlc3QgZmls
ZSAod2FzIHNwZWNpZmllZCBvbiBjbWRsaW5lKTogJXIiICUKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoZm4sKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgICAgICMg
bW9kdWxlcyBub3QgcGFzc2VkIGV4cGxpY2l0bHkgb24gdGhlIGNvbW1hbmQgbGluZSBhcmUgb25s
eQotICAgICAgICAjIHJld3JpdHRlbiBpZiB0aGV5IG1hdGNoIHRoZSBuYW1pbmcgY29udmVudGlv
biBmb3IgdGVzdCBmaWxlcwotICAgICAgICBmb3IgcGF0IGluIHNlbGYuZm5wYXRzOgotICAgICAg
ICAgICAgaWYgZm5fcHlwYXRoLmZubWF0Y2gocGF0KToKLSAgICAgICAgICAgICAgICBzdGF0ZS50
cmFjZSgibWF0Y2hlZCB0ZXN0IGZpbGUgJXIiICUgKGZuLCkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIFRydWUKLQotICAgICAgICBmb3IgbWFya2VkIGluIHNlbGYuX211c3RfcmV3cml0ZToKLSAg
ICAgICAgICAgIGlmIG5hbWUgPT0gbWFya2VkIG9yIG5hbWUuc3RhcnRzd2l0aChtYXJrZWQgKyAn
LicpOgotICAgICAgICAgICAgICAgIHN0YXRlLnRyYWNlKCJtYXRjaGVkIG1hcmtlZCBmaWxlICVy
IChmcm9tICVyKSIgJSAobmFtZSwgbWFya2VkKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1
ZQotCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgZGVmIG1hcmtfcmV3cml0ZShzZWxmLCAq
bmFtZXMpOgotICAgICAgICAiIiJNYXJrIGltcG9ydCBuYW1lcyBhcyBuZWVkaW5nIHRvIGJlIHJl
d3JpdHRlbi4KLQotICAgICAgICBUaGUgbmFtZWQgbW9kdWxlIG9yIHBhY2thZ2UgYXMgd2VsbCBh
cyBhbnkgbmVzdGVkIG1vZHVsZXMgd2lsbAotICAgICAgICBiZSByZXdyaXR0ZW4gb24gaW1wb3J0
LgotICAgICAgICAiIiIKLSAgICAgICAgYWxyZWFkeV9pbXBvcnRlZCA9IHNldChuYW1lcykuaW50
ZXJzZWN0aW9uKHNldChzeXMubW9kdWxlcykpCi0gICAgICAgIGlmIGFscmVhZHlfaW1wb3J0ZWQ6
Ci0gICAgICAgICAgICBmb3IgbmFtZSBpbiBhbHJlYWR5X2ltcG9ydGVkOgotICAgICAgICAgICAg
ICAgIGlmIG5hbWUgbm90IGluIHNlbGYuX3Jld3JpdHRlbl9uYW1lczoKLSAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fd2Fybl9hbHJlYWR5X2ltcG9ydGVkKG5hbWUpCi0gICAgICAgIHNlbGYuX211
c3RfcmV3cml0ZS51cGRhdGUobmFtZXMpCi0KLSAgICBkZWYgX3dhcm5fYWxyZWFkeV9pbXBvcnRl
ZChzZWxmLCBuYW1lKToKLSAgICAgICAgc2VsZi5jb25maWcud2FybigKLSAgICAgICAgICAgICdQ
MScsCi0gICAgICAgICAgICAnTW9kdWxlIGFscmVhZHkgaW1wb3J0ZWQgc28gY2Fubm90IGJlIHJl
d3JpdHRlbjogJXMnICUgbmFtZSkKLQotICAgIGRlZiBsb2FkX21vZHVsZShzZWxmLCBuYW1lKToK
LSAgICAgICAgIyBJZiB0aGVyZSBpcyBhbiBleGlzdGluZyBtb2R1bGUgb2JqZWN0IG5hbWVkICdm
dWxsbmFtZScgaW4KLSAgICAgICAgIyBzeXMubW9kdWxlcywgdGhlIGxvYWRlciBtdXN0IHVzZSB0
aGF0IGV4aXN0aW5nIG1vZHVsZS4gKE90aGVyd2lzZSwKLSAgICAgICAgIyB0aGUgcmVsb2FkKCkg
YnVpbHRpbiB3aWxsIG5vdCB3b3JrIGNvcnJlY3RseS4pCi0gICAgICAgIGlmIG5hbWUgaW4gc3lz
Lm1vZHVsZXM6Ci0gICAgICAgICAgICByZXR1cm4gc3lzLm1vZHVsZXNbbmFtZV0KLQotICAgICAg
ICBjbywgcHljID0gc2VsZi5tb2R1bGVzLnBvcChuYW1lKQotICAgICAgICAjIEkgd2lzaCBJIGNv
dWxkIGp1c3QgY2FsbCBpbXAubG9hZF9jb21waWxlZCBoZXJlLCBidXQgX19maWxlX18gaGFzIHRv
Ci0gICAgICAgICMgYmUgc2V0IHByb3Blcmx5LiBJbiBQeXRob24gMy4yKywgdGhpcyBhbGwgd291
bGQgYmUgaGFuZGxlZCBjb3JyZWN0bHkKLSAgICAgICAgIyBieSBsb2FkX2NvbXBpbGVkLgotICAg
ICAgICBtb2QgPSBzeXMubW9kdWxlc1tuYW1lXSA9IGltcC5uZXdfbW9kdWxlKG5hbWUpCi0gICAg
ICAgIHRyeToKLSAgICAgICAgICAgIG1vZC5fX2ZpbGVfXyA9IGNvLmNvX2ZpbGVuYW1lCi0gICAg
ICAgICAgICAjIE5vcm1hbGx5LCB0aGlzIGF0dHJpYnV0ZSBpcyAzLjIrLgotICAgICAgICAgICAg
bW9kLl9fY2FjaGVkX18gPSBweWMKLSAgICAgICAgICAgIG1vZC5fX2xvYWRlcl9fID0gc2VsZgot
ICAgICAgICAgICAgcHkuYnVpbHRpbi5leGVjXyhjbywgbW9kLl9fZGljdF9fKQotICAgICAgICBl
eGNlcHQ6ICAjIG5vcWEKLSAgICAgICAgICAgIGlmIG5hbWUgaW4gc3lzLm1vZHVsZXM6Ci0gICAg
ICAgICAgICAgICAgZGVsIHN5cy5tb2R1bGVzW25hbWVdCi0gICAgICAgICAgICByYWlzZQotICAg
ICAgICByZXR1cm4gc3lzLm1vZHVsZXNbbmFtZV0KLQotICAgIGRlZiBpc19wYWNrYWdlKHNlbGYs
IG5hbWUpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmZCwgZm4sIGRlc2MgPSBpbXAuZmlu
ZF9tb2R1bGUobmFtZSkKLSAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAg
cmV0dXJuIEZhbHNlCi0gICAgICAgIGlmIGZkIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgZmQu
Y2xvc2UoKQotICAgICAgICB0cCA9IGRlc2NbMl0KLSAgICAgICAgcmV0dXJuIHRwID09IGltcC5Q
S0dfRElSRUNUT1JZCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgX3JlZ2lzdGVyX3dpdGhf
cGtnX3Jlc291cmNlcyhjbHMpOgotICAgICAgICAiIiIKLSAgICAgICAgRW5zdXJlIHBhY2thZ2Ug
cmVzb3VyY2VzIGNhbiBiZSBsb2FkZWQgZnJvbSB0aGlzIGxvYWRlci4gTWF5IGJlIGNhbGxlZAot
ICAgICAgICBtdWx0aXBsZSB0aW1lcywgYXMgdGhlIG9wZXJhdGlvbiBpcyBpZGVtcG90ZW50Lgot
ICAgICAgICAiIiIKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaW1wb3J0IHBrZ19yZXNvdXJj
ZXMKLSAgICAgICAgICAgICMgYWNjZXNzIGFuIGF0dHJpYnV0ZSBpbiBjYXNlIGEgZGVmZXJyZWQg
aW1wb3J0ZXIgaXMgcHJlc2VudAotICAgICAgICAgICAgcGtnX3Jlc291cmNlcy5fX25hbWVfXwot
ICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4KLQotICAgICAg
ICAjIFNpbmNlIHB5dGVzdCB0ZXN0cyBhcmUgYWx3YXlzIGxvY2F0ZWQgaW4gdGhlIGZpbGUgc3lz
dGVtLCB0aGUKLSAgICAgICAgIyAgRGVmYXVsdFByb3ZpZGVyIGlzIGFwcHJvcHJpYXRlLgotICAg
ICAgICBwa2dfcmVzb3VyY2VzLnJlZ2lzdGVyX2xvYWRlcl90eXBlKGNscywgcGtnX3Jlc291cmNl
cy5EZWZhdWx0UHJvdmlkZXIpCi0KLSAgICBkZWYgZ2V0X2RhdGEoc2VsZiwgcGF0aG5hbWUpOgot
ICAgICAgICAiIiJPcHRpb25hbCBQRVAzMDIgZ2V0X2RhdGEgQVBJLgotICAgICAgICAiIiIKLSAg
ICAgICAgd2l0aCBvcGVuKHBhdGhuYW1lLCAncmInKSBhcyBmOgotICAgICAgICAgICAgcmV0dXJu
IGYucmVhZCgpCi0KLQotZGVmIF93cml0ZV9weWMoc3RhdGUsIGNvLCBzb3VyY2Vfc3RhdCwgcHlj
KToKLSAgICAjIFRlY2huaWNhbGx5LCB3ZSBkb24ndCBoYXZlIHRvIGhhdmUgdGhlIHNhbWUgcHlj
IGZvcm1hdCBhcwotICAgICMgKEMpUHl0aG9uLCBzaW5jZSB0aGVzZSAicHljcyIgc2hvdWxkIG5l
dmVyIGJlIHNlZW4gYnkgYnVpbHRpbgotICAgICMgaW1wb3J0LiBIb3dldmVyLCB0aGVyZSdzIGxp
dHRsZSByZWFzb24gZGV2aWF0ZSwgYW5kIEkgaG9wZQotICAgICMgc29tZXRpbWUgdG8gYmUgYWJs
ZSB0byB1c2UgaW1wLmxvYWRfY29tcGlsZWQgdG8gbG9hZCB0aGVtLiAoU2VlCi0gICAgIyB0aGUg
Y29tbWVudCBpbiBsb2FkX21vZHVsZSBhYm92ZS4pCi0gICAgdHJ5OgotICAgICAgICBmcCA9IG9w
ZW4ocHljLCAid2IiKQotICAgIGV4Y2VwdCBJT0Vycm9yOgotICAgICAgICBlcnIgPSBzeXMuZXhj
X2luZm8oKVsxXS5lcnJubwotICAgICAgICBzdGF0ZS50cmFjZSgiZXJyb3Igd3JpdGluZyBweWMg
ZmlsZSBhdCAlczogZXJybm89JXMiICUgKHB5YywgZXJyKSkKLSAgICAgICAgIyB3ZSBpZ25vcmUg
YW55IGZhaWx1cmUgdG8gd3JpdGUgdGhlIGNhY2hlIGZpbGUKLSAgICAgICAgIyB0aGVyZSBhcmUg
bWFueSByZWFzb25zLCBwZXJtaXNzaW9uLWRlbmllZCwgX19weWNhY2hlX18gYmVpbmcgYQotICAg
ICAgICAjIGZpbGUgZXRjLgotICAgICAgICByZXR1cm4gRmFsc2UKLSAgICB0cnk6Ci0gICAgICAg
IGZwLndyaXRlKGltcC5nZXRfbWFnaWMoKSkKLSAgICAgICAgbXRpbWUgPSBpbnQoc291cmNlX3N0
YXQubXRpbWUpCi0gICAgICAgIHNpemUgPSBzb3VyY2Vfc3RhdC5zaXplICYgMHhGRkZGRkZGRgot
ICAgICAgICBmcC53cml0ZShzdHJ1Y3QucGFjaygiPGxsIiwgbXRpbWUsIHNpemUpKQotICAgICAg
ICBtYXJzaGFsLmR1bXAoY28sIGZwKQotICAgIGZpbmFsbHk6Ci0gICAgICAgIGZwLmNsb3NlKCkK
LSAgICByZXR1cm4gVHJ1ZQotCi0KLVJOID0gIlxyXG4iLmVuY29kZSgidXRmLTgiKQotTiA9ICJc
biIuZW5jb2RlKCJ1dGYtOCIpCi0KLWNvb2tpZV9yZSA9IHJlLmNvbXBpbGUociJeWyBcdFxmXSoj
Lipjb2RpbmdbOj1dWyBcdF0qWy1cdy5dKyIpCi1CT01fVVRGOCA9ICdceGVmXHhiYlx4YmYnCi0K
LQotZGVmIF9yZXdyaXRlX3Rlc3QoY29uZmlnLCBmbik6Ci0gICAgIiIiVHJ5IHRvIHJlYWQgYW5k
IHJld3JpdGUgKmZuKiBhbmQgcmV0dXJuIHRoZSBjb2RlIG9iamVjdC4iIiIKLSAgICBzdGF0ZSA9
IGNvbmZpZy5fYXNzZXJ0c3RhdGUKLSAgICB0cnk6Ci0gICAgICAgIHN0YXQgPSBmbi5zdGF0KCkK
LSAgICAgICAgc291cmNlID0gZm4ucmVhZCgicmIiKQotICAgIGV4Y2VwdCBFbnZpcm9ubWVudEVy
cm9yOgotICAgICAgICByZXR1cm4gTm9uZSwgTm9uZQotICAgIGlmIEFTQ0lJX0lTX0RFRkFVTFRf
RU5DT0RJTkc6Ci0gICAgICAgICMgQVNDSUkgaXMgdGhlIGRlZmF1bHQgZW5jb2RpbmcgaW4gUHl0
aG9uIDIuIFdpdGhvdXQgYSBjb2RpbmcKLSAgICAgICAgIyBkZWNsYXJhdGlvbiwgUHl0aG9uIDIg
d2lsbCBjb21wbGFpbiBhYm91dCBhbnkgYnl0ZXMgaW4gdGhlIGZpbGUKLSAgICAgICAgIyBvdXRz
aWRlIHRoZSBBU0NJSSByYW5nZS4gU2FkbHksIHRoaXMgYmVoYXZpb3IgZG9lcyBub3QgZXh0ZW5k
IHRvCi0gICAgICAgICMgY29tcGlsZSgpIG9yIGFzdC5wYXJzZSgpLCB3aGljaCBwcmVmZXIgdG8g
aW50ZXJwcmV0IHRoZSBieXRlcyBhcwotICAgICAgICAjIGxhdGluLTEuIChBdCBsZWFzdCB0aGV5
IHByb3Blcmx5IGhhbmRsZSBleHBsaWNpdCBjb2RpbmcgY29va2llcy4pIFRvCi0gICAgICAgICMg
cHJlc2VydmUgdGhpcyBlcnJvciBiZWhhdmlvciwgd2UgY291bGQgZm9yY2UgYXN0LnBhcnNlKCkg
dG8gdXNlIEFTQ0lJCi0gICAgICAgICMgYXMgdGhlIGVuY29kaW5nIGJ5IGluc2VydGluZyBhIGNv
ZGluZyBjb29raWUuIFVuZm9ydHVuYXRlbHksIHRoYXQKLSAgICAgICAgIyBtZXNzZXMgdXAgbGlu
ZSBudW1iZXJzLiBUaHVzLCB3ZSBoYXZlIHRvIGNoZWNrIG91cnNlbHZlcyBpZiBhbnl0aGluZwot
ICAgICAgICAjIGlzIG91dHNpZGUgdGhlIEFTQ0lJIHJhbmdlIGluIHRoZSBjYXNlIG5vIGVuY29k
aW5nIGlzIGV4cGxpY2l0bHkKLSAgICAgICAgIyBkZWNsYXJlZC4gRm9yIG1vcmUgY29udGV4dCwg
c2VlIGlzc3VlICMyNjkuIFlheSBmb3IgUHl0aG9uIDMgd2hpY2gKLSAgICAgICAgIyBnZXRzIHRo
aXMgcmlnaHQuCi0gICAgICAgIGVuZDEgPSBzb3VyY2UuZmluZCgiXG4iKQotICAgICAgICBlbmQy
ID0gc291cmNlLmZpbmQoIlxuIiwgZW5kMSArIDEpCi0gICAgICAgIGlmIChub3Qgc291cmNlLnN0
YXJ0c3dpdGgoQk9NX1VURjgpIGFuZAotICAgICAgICAgICAgY29va2llX3JlLm1hdGNoKHNvdXJj
ZVswOmVuZDFdKSBpcyBOb25lIGFuZAotICAgICAgICAgICAgICAgIGNvb2tpZV9yZS5tYXRjaChz
b3VyY2VbZW5kMSArIDE6ZW5kMl0pIGlzIE5vbmUpOgotICAgICAgICAgICAgaWYgaGFzYXR0cihz
dGF0ZSwgIl9pbmRlY29kZSIpOgotICAgICAgICAgICAgICAgICMgZW5jb2RpbmdzIGltcG9ydGVk
IHVzIGFnYWluLCBzbyBkb24ndCByZXdyaXRlLgotICAgICAgICAgICAgICAgIHJldHVybiBOb25l
LCBOb25lCi0gICAgICAgICAgICBzdGF0ZS5faW5kZWNvZGUgPSBUcnVlCi0gICAgICAgICAgICB0
cnk6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBzb3VyY2UuZGVj
b2RlKCJhc2NpaSIpCi0gICAgICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvcjoK
LSAgICAgICAgICAgICAgICAgICAgIyBMZXQgaXQgZmFpbCBpbiByZWFsIGltcG9ydC4KLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0g
ICAgICAgICAgICAgICAgZGVsIHN0YXRlLl9pbmRlY29kZQotICAgIHRyeToKLSAgICAgICAgdHJl
ZSA9IGFzdC5wYXJzZShzb3VyY2UpCi0gICAgZXhjZXB0IFN5bnRheEVycm9yOgotICAgICAgICAj
IExldCB0aGlzIHBvcCB1cCBhZ2FpbiBpbiB0aGUgcmVhbCBpbXBvcnQuCi0gICAgICAgIHN0YXRl
LnRyYWNlKCJmYWlsZWQgdG8gcGFyc2U6ICVyIiAlIChmbiwpKQotICAgICAgICByZXR1cm4gTm9u
ZSwgTm9uZQotICAgIHJld3JpdGVfYXNzZXJ0cyh0cmVlLCBmbiwgY29uZmlnKQotICAgIHRyeToK
LSAgICAgICAgY28gPSBjb21waWxlKHRyZWUsIGZuLnN0cnBhdGgsICJleGVjIiwgZG9udF9pbmhl
cml0PVRydWUpCi0gICAgZXhjZXB0IFN5bnRheEVycm9yOgotICAgICAgICAjIEl0J3MgcG9zc2li
bGUgdGhhdCB0aGlzIGVycm9yIGlzIGZyb20gc29tZSBidWcgaW4gdGhlCi0gICAgICAgICMgYXNz
ZXJ0aW9uIHJld3JpdGluZywgYnV0IEkgZG9uJ3Qga25vdyBvZiBhIGZhc3Qgd2F5IHRvIHRlbGwu
Ci0gICAgICAgIHN0YXRlLnRyYWNlKCJmYWlsZWQgdG8gY29tcGlsZTogJXIiICUgKGZuLCkpCi0g
ICAgICAgIHJldHVybiBOb25lLCBOb25lCi0gICAgcmV0dXJuIHN0YXQsIGNvCi0KLQotZGVmIF9t
YWtlX3Jld3JpdHRlbl9weWMoc3RhdGUsIHNvdXJjZV9zdGF0LCBweWMsIGNvKToKLSAgICAiIiJU
cnkgdG8gZHVtcCByZXdyaXR0ZW4gY29kZSB0byAqcHljKi4iIiIKLSAgICBpZiBzeXMucGxhdGZv
cm0uc3RhcnRzd2l0aCgid2luIik6Ci0gICAgICAgICMgV2luZG93cyBncmFudHMgZXhjbHVzaXZl
IGFjY2VzcyB0byBvcGVuIGZpbGVzIGFuZCBkb2Vzbid0IGhhdmUgYXRvbWljCi0gICAgICAgICMg
cmVuYW1lLCBzbyBqdXN0IHdyaXRlIGludG8gdGhlIGZpbmFsIGZpbGUuCi0gICAgICAgIF93cml0
ZV9weWMoc3RhdGUsIGNvLCBzb3VyY2Vfc3RhdCwgcHljKQotICAgIGVsc2U6Ci0gICAgICAgICMg
V2hlbiBub3Qgb24gd2luZG93cywgYXNzdW1lIHJlbmFtZSBpcyBhdG9taWMuIER1bXAgdGhlIGNv
ZGUgb2JqZWN0Ci0gICAgICAgICMgaW50byBhIGZpbGUgc3BlY2lmaWMgdG8gdGhpcyBwcm9jZXNz
IGFuZCBhdG9taWNhbGx5IHJlcGxhY2UgaXQuCi0gICAgICAgIHByb2NfcHljID0gcHljICsgIi4i
ICsgc3RyKG9zLmdldHBpZCgpKQotICAgICAgICBpZiBfd3JpdGVfcHljKHN0YXRlLCBjbywgc291
cmNlX3N0YXQsIHByb2NfcHljKToKLSAgICAgICAgICAgIG9zLnJlbmFtZShwcm9jX3B5YywgcHlj
KQotCi0KLWRlZiBfcmVhZF9weWMoc291cmNlLCBweWMsIHRyYWNlPWxhbWJkYSB4OiBOb25lKToK
LSAgICAiIiJQb3NzaWJseSByZWFkIGEgcHl0ZXN0IHB5YyBjb250YWluaW5nIHJld3JpdHRlbiBj
b2RlLgotCi0gICAgUmV0dXJuIHJld3JpdHRlbiBjb2RlIGlmIHN1Y2Nlc3NmdWwgb3IgTm9uZSBp
ZiBub3QuCi0gICAgIiIiCi0gICAgdHJ5OgotICAgICAgICBmcCA9IG9wZW4ocHljLCAicmIiKQot
ICAgIGV4Y2VwdCBJT0Vycm9yOgotICAgICAgICByZXR1cm4gTm9uZQotICAgIHdpdGggZnA6Ci0g
ICAgICAgIHRyeToKLSAgICAgICAgICAgIG10aW1lID0gaW50KHNvdXJjZS5tdGltZSgpKQotICAg
ICAgICAgICAgc2l6ZSA9IHNvdXJjZS5zaXplKCkKLSAgICAgICAgICAgIGRhdGEgPSBmcC5yZWFk
KDEyKQotICAgICAgICBleGNlcHQgRW52aXJvbm1lbnRFcnJvciBhcyBlOgotICAgICAgICAgICAg
dHJhY2UoJ19yZWFkX3B5Yyglcyk6IEVudmlyb25tZW50RXJyb3IgJXMnICUgKHNvdXJjZSwgZSkp
Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICAjIENoZWNrIGZvciBpbnZhbGlkIG9y
IG91dCBvZiBkYXRlIHB5YyBmaWxlLgotICAgICAgICBpZiAobGVuKGRhdGEpICE9IDEyIG9yIGRh
dGFbOjRdICE9IGltcC5nZXRfbWFnaWMoKSBvcgotICAgICAgICAgICAgICAgIHN0cnVjdC51bnBh
Y2soIjxsbCIsIGRhdGFbNDpdKSAhPSAobXRpbWUsIHNpemUpKToKLSAgICAgICAgICAgIHRyYWNl
KCdfcmVhZF9weWMoJXMpOiBpbnZhbGlkIG9yIG91dCBvZiBkYXRlIHB5YycgJSBzb3VyY2UpCi0g
ICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBjbyA9IG1h
cnNoYWwubG9hZChmcCkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAg
ICAgdHJhY2UoJ19yZWFkX3B5Yyglcyk6IG1hcnNoYWwubG9hZCBlcnJvciAlcycgJSAoc291cmNl
LCBlKSkKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNl
KGNvLCB0eXBlcy5Db2RlVHlwZSk6Ci0gICAgICAgICAgICB0cmFjZSgnX3JlYWRfcHljKCVzKTog
bm90IGEgY29kZSBvYmplY3QnICUgc291cmNlKQotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAg
ICAgICAgcmV0dXJuIGNvCi0KLQotZGVmIHJld3JpdGVfYXNzZXJ0cyhtb2QsIG1vZHVsZV9wYXRo
PU5vbmUsIGNvbmZpZz1Ob25lKToKLSAgICAiIiJSZXdyaXRlIHRoZSBhc3NlcnQgc3RhdGVtZW50
cyBpbiBtb2QuIiIiCi0gICAgQXNzZXJ0aW9uUmV3cml0ZXIobW9kdWxlX3BhdGgsIGNvbmZpZyku
cnVuKG1vZCkKLQotCi1kZWYgX3NhZmVyZXByKG9iaik6Ci0gICAgIiIiR2V0IGEgc2FmZSByZXBy
IG9mIGFuIG9iamVjdCBmb3IgYXNzZXJ0aW9uIGVycm9yIG1lc3NhZ2VzLgotCi0gICAgVGhlIGFz
c2VydGlvbiBmb3JtYXR0aW5nICh1dGlsLmZvcm1hdF9leHBsYW5hdGlvbigpKSByZXF1aXJlcwot
ICAgIG5ld2xpbmVzIHRvIGJlIGVzY2FwZWQgc2luY2UgdGhleSBhcmUgYSBzcGVjaWFsIGNoYXJh
Y3RlciBmb3IgaXQuCi0gICAgTm9ybWFsbHkgYXNzZXJ0aW9uLnV0aWwuZm9ybWF0X2V4cGxhbmF0
aW9uKCkgZG9lcyB0aGlzIGJ1dCBmb3IgYQotICAgIGN1c3RvbSByZXByIGl0IGlzIHBvc3NpYmxl
IHRvIGNvbnRhaW4gb25lIG9mIHRoZSBzcGVjaWFsIGVzY2FwZQotICAgIHNlcXVlbmNlcywgZXNw
ZWNpYWxseSAnXG57JyBhbmQgJ1xufScgYXJlIGxpa2VseSB0byBiZSBwcmVzZW50IGluCi0gICAg
SlNPTiByZXBycy4KLQotICAgICIiIgotICAgIHJlcHIgPSBweS5pby5zYWZlcmVwcihvYmopCi0g
ICAgaWYgaXNpbnN0YW5jZShyZXByLCBzaXgudGV4dF90eXBlKToKLSAgICAgICAgdCA9IHNpeC50
ZXh0X3R5cGUKLSAgICBlbHNlOgotICAgICAgICB0ID0gc2l4LmJpbmFyeV90eXBlCi0gICAgcmV0
dXJuIHJlcHIucmVwbGFjZSh0KCJcbiIpLCB0KCJcXG4iKSkKLQotCi1mcm9tIF9weXRlc3QuYXNz
ZXJ0aW9uLnV0aWwgaW1wb3J0IGZvcm1hdF9leHBsYW5hdGlvbiBhcyBfZm9ybWF0X2V4cGxhbmF0
aW9uICAjIG5vcWEKLQotCi1kZWYgX2Zvcm1hdF9hc3NlcnRtc2cob2JqKToKLSAgICAiIiJGb3Jt
YXQgdGhlIGN1c3RvbSBhc3NlcnRpb24gbWVzc2FnZSBnaXZlbi4KLQotICAgIEZvciBzdHJpbmdz
IHRoaXMgc2ltcGx5IHJlcGxhY2VzIG5ld2xpbmVzIHdpdGggJ1xuficgc28gdGhhdAotICAgIHV0
aWwuZm9ybWF0X2V4cGxhbmF0aW9uKCkgd2lsbCBwcmVzZXJ2ZSB0aGVtIGluc3RlYWQgb2YgZXNj
YXBpbmcKLSAgICBuZXdsaW5lcy4gIEZvciBvdGhlciBvYmplY3RzIHB5LmlvLnNhZmVyZXByKCkg
aXMgdXNlZCBmaXJzdC4KLQotICAgICIiIgotICAgICMgcmVwcmxpYiBhcHBlYXJzIHRvIGhhdmUg
YSBidWcgd2hpY2ggbWVhbnMgdGhhdCBpZiBhIHN0cmluZwotICAgICMgY29udGFpbnMgYSBuZXds
aW5lIGl0IGdldHMgZXNjYXBlZCwgaG93ZXZlciBpZiBhbiBvYmplY3QgaGFzIGEKLSAgICAjIC5f
X3JlcHJfXygpIHdoaWNoIGNvbnRhaW5zIG5ld2xpbmVzIGl0IGRvZXMgbm90IGdldCBlc2NhcGVk
LgotICAgICMgSG93ZXZlciBpbiBlaXRoZXIgY2FzZSB3ZSB3YW50IHRvIHByZXNlcnZlIHRoZSBu
ZXdsaW5lLgotICAgIGlmIGlzaW5zdGFuY2Uob2JqLCBzaXgudGV4dF90eXBlKSBvciBpc2luc3Rh
bmNlKG9iaiwgc2l4LmJpbmFyeV90eXBlKToKLSAgICAgICAgcyA9IG9iagotICAgICAgICBpc19y
ZXByID0gRmFsc2UKLSAgICBlbHNlOgotICAgICAgICBzID0gcHkuaW8uc2FmZXJlcHIob2JqKQot
ICAgICAgICBpc19yZXByID0gVHJ1ZQotICAgIGlmIGlzaW5zdGFuY2Uocywgc2l4LnRleHRfdHlw
ZSk6Ci0gICAgICAgIHQgPSBzaXgudGV4dF90eXBlCi0gICAgZWxzZToKLSAgICAgICAgdCA9IHNp
eC5iaW5hcnlfdHlwZQotICAgIHMgPSBzLnJlcGxhY2UodCgiXG4iKSwgdCgiXG5+IikpLnJlcGxh
Y2UodCgiJSIpLCB0KCIlJSIpKQotICAgIGlmIGlzX3JlcHI6Ci0gICAgICAgIHMgPSBzLnJlcGxh
Y2UodCgiXFxuIiksIHQoIlxufiIpKQotICAgIHJldHVybiBzCi0KLQotZGVmIF9zaG91bGRfcmVw
cl9nbG9iYWxfbmFtZShvYmopOgotICAgIHJldHVybiBub3QgaGFzYXR0cihvYmosICJfX25hbWVf
XyIpIGFuZCBub3QgY2FsbGFibGUob2JqKQotCi0KLWRlZiBfZm9ybWF0X2Jvb2xvcChleHBsYW5h
dGlvbnMsIGlzX29yKToKLSAgICBleHBsYW5hdGlvbiA9ICIoIiArIChpc19vciBhbmQgIiBvciAi
IG9yICIgYW5kICIpLmpvaW4oZXhwbGFuYXRpb25zKSArICIpIgotICAgIGlmIGlzaW5zdGFuY2Uo
ZXhwbGFuYXRpb24sIHNpeC50ZXh0X3R5cGUpOgotICAgICAgICB0ID0gc2l4LnRleHRfdHlwZQot
ICAgIGVsc2U6Ci0gICAgICAgIHQgPSBzaXguYmluYXJ5X3R5cGUKLSAgICByZXR1cm4gZXhwbGFu
YXRpb24ucmVwbGFjZSh0KCclJyksIHQoJyUlJykpCi0KLQotZGVmIF9jYWxsX3JlcHJjb21wYXJl
KG9wcywgcmVzdWx0cywgZXhwbHMsIGVhY2hfb2JqKToKLSAgICBmb3IgaSwgcmVzLCBleHBsIGlu
IHppcChyYW5nZShsZW4ob3BzKSksIHJlc3VsdHMsIGV4cGxzKToKLSAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgZG9uZSA9IG5vdCByZXMKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAg
ICAgICAgIGRvbmUgPSBUcnVlCi0gICAgICAgIGlmIGRvbmU6Ci0gICAgICAgICAgICBicmVhawot
ICAgIGlmIHV0aWwuX3JlcHJjb21wYXJlIGlzIG5vdCBOb25lOgotICAgICAgICBjdXN0b20gPSB1
dGlsLl9yZXByY29tcGFyZShvcHNbaV0sIGVhY2hfb2JqW2ldLCBlYWNoX29ialtpICsgMV0pCi0g
ICAgICAgIGlmIGN1c3RvbSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBjdXN0b20K
LSAgICByZXR1cm4gZXhwbAotCi0KLXVuYXJ5X21hcCA9IHsKLSAgICBhc3QuTm90OiAibm90ICVz
IiwKLSAgICBhc3QuSW52ZXJ0OiAifiVzIiwKLSAgICBhc3QuVVN1YjogIi0lcyIsCi0gICAgYXN0
LlVBZGQ6ICIrJXMiCi19Ci0KLWJpbm9wX21hcCA9IHsKLSAgICBhc3QuQml0T3I6ICJ8IiwKLSAg
ICBhc3QuQml0WG9yOiAiXiIsCi0gICAgYXN0LkJpdEFuZDogIiYiLAotICAgIGFzdC5MU2hpZnQ6
ICI8PCIsCi0gICAgYXN0LlJTaGlmdDogIj4+IiwKLSAgICBhc3QuQWRkOiAiKyIsCi0gICAgYXN0
LlN1YjogIi0iLAotICAgIGFzdC5NdWx0OiAiKiIsCi0gICAgYXN0LkRpdjogIi8iLAotICAgIGFz
dC5GbG9vckRpdjogIi8vIiwKLSAgICBhc3QuTW9kOiAiJSUiLCAgIyBlc2NhcGVkIGZvciBzdHJp
bmcgZm9ybWF0dGluZwotICAgIGFzdC5FcTogIj09IiwKLSAgICBhc3QuTm90RXE6ICIhPSIsCi0g
ICAgYXN0Lkx0OiAiPCIsCi0gICAgYXN0Lkx0RTogIjw9IiwKLSAgICBhc3QuR3Q6ICI+IiwKLSAg
ICBhc3QuR3RFOiAiPj0iLAotICAgIGFzdC5Qb3c6ICIqKiIsCi0gICAgYXN0LklzOiAiaXMiLAot
ICAgIGFzdC5Jc05vdDogImlzIG5vdCIsCi0gICAgYXN0LkluOiAiaW4iLAotICAgIGFzdC5Ob3RJ
bjogIm5vdCBpbiIKLX0KLSMgUHl0aG9uIDMuNSsgY29tcGF0aWJpbGl0eQotdHJ5OgotICAgIGJp
bm9wX21hcFthc3QuTWF0TXVsdF0gPSAiQCIKLWV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICBw
YXNzCi0KLSMgUHl0aG9uIDMuNCsgY29tcGF0aWJpbGl0eQotaWYgaGFzYXR0cihhc3QsICJOYW1l
Q29uc3RhbnQiKToKLSAgICBfTmFtZUNvbnN0YW50ID0gYXN0Lk5hbWVDb25zdGFudAotZWxzZToK
LSAgICBkZWYgX05hbWVDb25zdGFudChjKToKLSAgICAgICAgcmV0dXJuIGFzdC5OYW1lKHN0cihj
KSwgYXN0LkxvYWQoKSkKLQotCi1kZWYgc2V0X2xvY2F0aW9uKG5vZGUsIGxpbmVubywgY29sX29m
ZnNldCk6Ci0gICAgIiIiU2V0IG5vZGUgbG9jYXRpb24gaW5mb3JtYXRpb24gcmVjdXJzaXZlbHku
IiIiCi0gICAgZGVmIF9maXgobm9kZSwgbGluZW5vLCBjb2xfb2Zmc2V0KToKLSAgICAgICAgaWYg
ImxpbmVubyIgaW4gbm9kZS5fYXR0cmlidXRlczoKLSAgICAgICAgICAgIG5vZGUubGluZW5vID0g
bGluZW5vCi0gICAgICAgIGlmICJjb2xfb2Zmc2V0IiBpbiBub2RlLl9hdHRyaWJ1dGVzOgotICAg
ICAgICAgICAgbm9kZS5jb2xfb2Zmc2V0ID0gY29sX29mZnNldAotICAgICAgICBmb3IgY2hpbGQg
aW4gYXN0Lml0ZXJfY2hpbGRfbm9kZXMobm9kZSk6Ci0gICAgICAgICAgICBfZml4KGNoaWxkLCBs
aW5lbm8sIGNvbF9vZmZzZXQpCi0gICAgX2ZpeChub2RlLCBsaW5lbm8sIGNvbF9vZmZzZXQpCi0g
ICAgcmV0dXJuIG5vZGUKLQotCi1jbGFzcyBBc3NlcnRpb25SZXdyaXRlcihhc3QuTm9kZVZpc2l0
b3IpOgotICAgICIiIkFzc2VydGlvbiByZXdyaXRpbmcgaW1wbGVtZW50YXRpb24uCi0KLSAgICBU
aGUgbWFpbiBlbnRyeXBvaW50IGlzIHRvIGNhbGwgLnJ1bigpIHdpdGggYW4gYXN0Lk1vZHVsZSBp
bnN0YW5jZSwKLSAgICB0aGlzIHdpbGwgdGhlbiBmaW5kIGFsbCB0aGUgYXNzZXJ0IHN0YXRlbWVu
dHMgYW5kIHJld3JpdGUgdGhlbSB0bwotICAgIHByb3ZpZGUgaW50ZXJtZWRpYXRlIHZhbHVlcyBh
bmQgYSBkZXRhaWxlZCBhc3NlcnRpb24gZXJyb3IuICBTZWUKLSAgICBodHRwOi8vcHliaXRlcy5i
bG9nc3BvdC5iZS8yMDExLzA3L2JlaGluZC1zY2VuZXMtb2YtcHl0ZXN0cy1uZXctYXNzZXJ0aW9u
Lmh0bWwKLSAgICBmb3IgYW4gb3ZlcnZpZXcgb2YgaG93IHRoaXMgd29ya3MuCi0KLSAgICBUaGUg
ZW50cnkgcG9pbnQgaGVyZSBpcyAucnVuKCkgd2hpY2ggd2lsbCBpdGVyYXRlIG92ZXIgYWxsIHRo
ZQotICAgIHN0YXRlbWVudHMgaW4gYW4gYXN0Lk1vZHVsZSBhbmQgZm9yIGVhY2ggYXN0LkFzc2Vy
dCBzdGF0ZW1lbnQgaXQKLSAgICBmaW5kcyBjYWxsIC52aXNpdCgpIHdpdGggaXQuICBUaGVuIC52
aXNpdF9Bc3NlcnQoKSB0YWtlcyBvdmVyIGFuZAotICAgIGlzIHJlc3BvbnNpYmxlIGZvciBjcmVh
dGluZyBuZXcgYXN0IHN0YXRlbWVudHMgdG8gcmVwbGFjZSB0aGUKLSAgICBvcmlnaW5hbCBhc3Nl
cnQgc3RhdGVtZW50OiBpdCByZXdyaXRlcyB0aGUgdGVzdCBvZiBhbiBhc3NlcnRpb24KLSAgICB0
byBwcm92aWRlIGludGVybWVkaWF0ZSB2YWx1ZXMgYW5kIHJlcGxhY2UgaXQgd2l0aCBhbiBpZiBz
dGF0ZW1lbnQKLSAgICB3aGljaCByYWlzZXMgYW4gYXNzZXJ0aW9uIGVycm9yIHdpdGggYSBkZXRh
aWxlZCBleHBsYW5hdGlvbiBpbgotICAgIGNhc2UgdGhlIGV4cHJlc3Npb24gaXMgZmFsc2UuCi0K
LSAgICBGb3IgdGhpcyAudmlzaXRfQXNzZXJ0KCkgdXNlcyB0aGUgdmlzaXRvciBwYXR0ZXJuIHRv
IHZpc2l0IGFsbCB0aGUKLSAgICBBU1Qgbm9kZXMgb2YgdGhlIGFzdC5Bc3NlcnQudGVzdCBmaWVs
ZCwgZWFjaCB2aXNpdCBjYWxsIHJldHVybmluZwotICAgIGFuIEFTVCBub2RlIGFuZCB0aGUgY29y
cmVzcG9uZGluZyBleHBsYW5hdGlvbiBzdHJpbmcuICBEdXJpbmcgdGhpcwotICAgIHN0YXRlIGlz
IGtlcHQgaW4gc2V2ZXJhbCBpbnN0YW5jZSBhdHRyaWJ1dGVzOgotCi0gICAgOnN0YXRlbWVudHM6
IEFsbCB0aGUgQVNUIHN0YXRlbWVudHMgd2hpY2ggd2lsbCByZXBsYWNlIHRoZSBhc3NlcnQKLSAg
ICAgICBzdGF0ZW1lbnQuCi0KLSAgICA6dmFyaWFibGVzOiBUaGlzIGlzIHBvcHVsYXRlZCBieSAu
dmFyaWFibGUoKSB3aXRoIGVhY2ggdmFyaWFibGUKLSAgICAgICB1c2VkIGJ5IHRoZSBzdGF0ZW1l
bnRzIHNvIHRoYXQgdGhleSBjYW4gYWxsIGJlIHNldCB0byBOb25lIGF0Ci0gICAgICAgdGhlIGVu
ZCBvZiB0aGUgc3RhdGVtZW50cy4KLQotICAgIDp2YXJpYWJsZV9jb3VudGVyOiBDb3VudGVyIHRv
IGNyZWF0ZSBuZXcgdW5pcXVlIHZhcmlhYmxlcyBuZWVkZWQKLSAgICAgICBieSBzdGF0ZW1lbnRz
LiAgVmFyaWFibGVzIGFyZSBjcmVhdGVkIHVzaW5nIC52YXJpYWJsZSgpIGFuZAotICAgICAgIGhh
dmUgdGhlIGZvcm0gb2YgIkBweV9hc3NlcnQwIi4KLQotICAgIDpvbl9mYWlsdXJlOiBUaGUgQVNU
IHN0YXRlbWVudHMgd2hpY2ggd2lsbCBiZSBleGVjdXRlZCBpZiB0aGUKLSAgICAgICBhc3NlcnRp
b24gdGVzdCBmYWlscy4gIFRoaXMgaXMgdGhlIGNvZGUgd2hpY2ggd2lsbCBjb25zdHJ1Y3QKLSAg
ICAgICB0aGUgZmFpbHVyZSBtZXNzYWdlIGFuZCByYWlzZXMgdGhlIEFzc2VydGlvbkVycm9yLgot
Ci0gICAgOmV4cGxhbmF0aW9uX3NwZWNpZmllcnM6IEEgZGljdCBmaWxsZWQgYnkgLmV4cGxhbmF0
aW9uX3BhcmFtKCkKLSAgICAgICB3aXRoICUtZm9ybWF0dGluZyBwbGFjZWhvbGRlcnMgYW5kIHRo
ZWlyIGNvcnJlc3BvbmRpbmcKLSAgICAgICBleHByZXNzaW9ucyB0byB1c2UgaW4gdGhlIGJ1aWxk
aW5nIG9mIGFuIGFzc2VydGlvbiBtZXNzYWdlLgotICAgICAgIFRoaXMgaXMgdXNlZCBieSAucG9w
X2Zvcm1hdF9jb250ZXh0KCkgdG8gYnVpbGQgYSBtZXNzYWdlLgotCi0gICAgOnN0YWNrOiBBIHN0
YWNrIG9mIHRoZSBleHBsYW5hdGlvbl9zcGVjaWZpZXJzIGRpY3RzIG1haW50YWluZWQgYnkKLSAg
ICAgICAucHVzaF9mb3JtYXRfY29udGV4dCgpIGFuZCAucG9wX2Zvcm1hdF9jb250ZXh0KCkgd2hp
Y2ggYWxsb3dzCi0gICAgICAgdG8gYnVpbGQgYW5vdGhlciAlLWZvcm1hdHRlZCBzdHJpbmcgd2hp
bGUgYWxyZWFkeSBidWlsZGluZyBvbmUuCi0KLSAgICBUaGlzIHN0YXRlIGlzIHJlc2V0IG9uIGV2
ZXJ5IG5ldyBhc3NlcnQgc3RhdGVtZW50IHZpc2l0ZWQgYW5kIHVzZWQKLSAgICBieSB0aGUgb3Ro
ZXIgdmlzaXRvcnMuCi0KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtb2R1bGVf
cGF0aCwgY29uZmlnKToKLSAgICAgICAgc3VwZXIoQXNzZXJ0aW9uUmV3cml0ZXIsIHNlbGYpLl9f
aW5pdF9fKCkKLSAgICAgICAgc2VsZi5tb2R1bGVfcGF0aCA9IG1vZHVsZV9wYXRoCi0gICAgICAg
IHNlbGYuY29uZmlnID0gY29uZmlnCi0KLSAgICBkZWYgcnVuKHNlbGYsIG1vZCk6Ci0gICAgICAg
ICIiIkZpbmQgYWxsIGFzc2VydCBzdGF0ZW1lbnRzIGluICptb2QqIGFuZCByZXdyaXRlIHRoZW0u
IiIiCi0gICAgICAgIGlmIG5vdCBtb2QuYm9keToKLSAgICAgICAgICAgICMgTm90aGluZyB0byBk
by4KLSAgICAgICAgICAgIHJldHVybgotICAgICAgICAjIEluc2VydCBzb21lIHNwZWNpYWwgaW1w
b3J0cyBhdCB0aGUgdG9wIG9mIHRoZSBtb2R1bGUgYnV0IGFmdGVyIGFueQotICAgICAgICAjIGRv
Y3N0cmluZ3MgYW5kIF9fZnV0dXJlX18gaW1wb3J0cy4KLSAgICAgICAgYWxpYXNlcyA9IFthc3Qu
YWxpYXMocHkuYnVpbHRpbi5idWlsdGlucy5fX25hbWVfXywgIkBweV9idWlsdGlucyIpLAotICAg
ICAgICAgICAgICAgICAgIGFzdC5hbGlhcygiX3B5dGVzdC5hc3NlcnRpb24ucmV3cml0ZSIsICJA
cHl0ZXN0X2FyIildCi0gICAgICAgIGRvYyA9IGdldGF0dHIobW9kLCAiZG9jc3RyaW5nIiwgTm9u
ZSkKLSAgICAgICAgZXhwZWN0X2RvY3N0cmluZyA9IGRvYyBpcyBOb25lCi0gICAgICAgIGlmIGRv
YyBpcyBub3QgTm9uZSBhbmQgc2VsZi5pc19yZXdyaXRlX2Rpc2FibGVkKGRvYyk6Ci0gICAgICAg
ICAgICByZXR1cm4KLSAgICAgICAgcG9zID0gMAotICAgICAgICBsaW5lbm8gPSAxCi0gICAgICAg
IGZvciBpdGVtIGluIG1vZC5ib2R5OgotICAgICAgICAgICAgaWYgKGV4cGVjdF9kb2NzdHJpbmcg
YW5kIGlzaW5zdGFuY2UoaXRlbSwgYXN0LkV4cHIpIGFuZAotICAgICAgICAgICAgICAgICAgICBp
c2luc3RhbmNlKGl0ZW0udmFsdWUsIGFzdC5TdHIpKToKLSAgICAgICAgICAgICAgICBkb2MgPSBp
dGVtLnZhbHVlLnMKLSAgICAgICAgICAgICAgICBpZiBzZWxmLmlzX3Jld3JpdGVfZGlzYWJsZWQo
ZG9jKToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICAgICAgZXhwZWN0
X2RvY3N0cmluZyA9IEZhbHNlCi0gICAgICAgICAgICBlbGlmIChub3QgaXNpbnN0YW5jZShpdGVt
LCBhc3QuSW1wb3J0RnJvbSkgb3IgaXRlbS5sZXZlbCA+IDAgb3IKLSAgICAgICAgICAgICAgICAg
IGl0ZW0ubW9kdWxlICE9ICJfX2Z1dHVyZV9fIik6Ci0gICAgICAgICAgICAgICAgbGluZW5vID0g
aXRlbS5saW5lbm8KLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgcG9zICs9IDEK
LSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGxpbmVubyA9IGl0ZW0ubGluZW5vCi0gICAgICAg
IGltcG9ydHMgPSBbYXN0LkltcG9ydChbYWxpYXNdLCBsaW5lbm89bGluZW5vLCBjb2xfb2Zmc2V0
PTApCi0gICAgICAgICAgICAgICAgICAgZm9yIGFsaWFzIGluIGFsaWFzZXNdCi0gICAgICAgIG1v
ZC5ib2R5W3Bvczpwb3NdID0gaW1wb3J0cwotICAgICAgICAjIENvbGxlY3QgYXNzZXJ0cy4KLSAg
ICAgICAgbm9kZXMgPSBbbW9kXQotICAgICAgICB3aGlsZSBub2RlczoKLSAgICAgICAgICAgIG5v
ZGUgPSBub2Rlcy5wb3AoKQotICAgICAgICAgICAgZm9yIG5hbWUsIGZpZWxkIGluIGFzdC5pdGVy
X2ZpZWxkcyhub2RlKToKLSAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGZpZWxkLCBsaXN0
KToKLSAgICAgICAgICAgICAgICAgICAgbmV3ID0gW10KLSAgICAgICAgICAgICAgICAgICAgZm9y
IGksIGNoaWxkIGluIGVudW1lcmF0ZShmaWVsZCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBp
ZiBpc2luc3RhbmNlKGNoaWxkLCBhc3QuQXNzZXJ0KToKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjIFRyYW5zZm9ybSBhc3NlcnQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3
LmV4dGVuZChzZWxmLnZpc2l0KGNoaWxkKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3LmFwcGVuZChjaGlsZCkKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGNoaWxkLCBhc3QuQVNUKToKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXMuYXBwZW5kKGNoaWxkKQotICAgICAgICAg
ICAgICAgICAgICBzZXRhdHRyKG5vZGUsIG5hbWUsIG5ldykKLSAgICAgICAgICAgICAgICBlbGlm
IChpc2luc3RhbmNlKGZpZWxkLCBhc3QuQVNUKSBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAj
IERvbid0IHJlY3Vyc2UgaW50byBleHByZXNzaW9ucyBhcyB0aGV5IGNhbid0IGNvbnRhaW4KLSAg
ICAgICAgICAgICAgICAgICAgICAjIGFzc2VydHMuCi0gICAgICAgICAgICAgICAgICAgICAgbm90
IGlzaW5zdGFuY2UoZmllbGQsIGFzdC5leHByKSk6Ci0gICAgICAgICAgICAgICAgICAgIG5vZGVz
LmFwcGVuZChmaWVsZCkKLQotICAgIGRlZiBpc19yZXdyaXRlX2Rpc2FibGVkKHNlbGYsIGRvY3N0
cmluZyk6Ci0gICAgICAgIHJldHVybiAiUFlURVNUX0RPTlRfUkVXUklURSIgaW4gZG9jc3RyaW5n
Ci0KLSAgICBkZWYgdmFyaWFibGUoc2VsZik6Ci0gICAgICAgICIiIkdldCBhIG5ldyB2YXJpYWJs
ZS4iIiIKLSAgICAgICAgIyBVc2UgYSBjaGFyYWN0ZXIgaW52YWxpZCBpbiBweXRob24gaWRlbnRp
ZmllcnMgdG8gYXZvaWQgY2xhc2hpbmcuCi0gICAgICAgIG5hbWUgPSAiQHB5X2Fzc2VydCIgKyBz
dHIobmV4dChzZWxmLnZhcmlhYmxlX2NvdW50ZXIpKQotICAgICAgICBzZWxmLnZhcmlhYmxlcy5h
cHBlbmQobmFtZSkKLSAgICAgICAgcmV0dXJuIG5hbWUKLQotICAgIGRlZiBhc3NpZ24oc2VsZiwg
ZXhwcik6Ci0gICAgICAgICIiIkdpdmUgKmV4cHIqIGEgbmFtZS4iIiIKLSAgICAgICAgbmFtZSA9
IHNlbGYudmFyaWFibGUoKQotICAgICAgICBzZWxmLnN0YXRlbWVudHMuYXBwZW5kKGFzdC5Bc3Np
Z24oW2FzdC5OYW1lKG5hbWUsIGFzdC5TdG9yZSgpKV0sIGV4cHIpKQotICAgICAgICByZXR1cm4g
YXN0Lk5hbWUobmFtZSwgYXN0LkxvYWQoKSkKLQotICAgIGRlZiBkaXNwbGF5KHNlbGYsIGV4cHIp
OgotICAgICAgICAiIiJDYWxsIHB5LmlvLnNhZmVyZXByIG9uIHRoZSBleHByZXNzaW9uLiIiIgot
ICAgICAgICByZXR1cm4gc2VsZi5oZWxwZXIoInNhZmVyZXByIiwgZXhwcikKLQotICAgIGRlZiBo
ZWxwZXIoc2VsZiwgbmFtZSwgKmFyZ3MpOgotICAgICAgICAiIiJDYWxsIGEgaGVscGVyIGluIHRo
aXMgbW9kdWxlLiIiIgotICAgICAgICBweV9uYW1lID0gYXN0Lk5hbWUoIkBweXRlc3RfYXIiLCBh
c3QuTG9hZCgpKQotICAgICAgICBhdHRyID0gYXN0LkF0dHJpYnV0ZShweV9uYW1lLCAiXyIgKyBu
YW1lLCBhc3QuTG9hZCgpKQotICAgICAgICByZXR1cm4gYXN0X0NhbGwoYXR0ciwgbGlzdChhcmdz
KSwgW10pCi0KLSAgICBkZWYgYnVpbHRpbihzZWxmLCBuYW1lKToKLSAgICAgICAgIiIiUmV0dXJu
IHRoZSBidWlsdGluIGNhbGxlZCAqbmFtZSouIiIiCi0gICAgICAgIGJ1aWx0aW5fbmFtZSA9IGFz
dC5OYW1lKCJAcHlfYnVpbHRpbnMiLCBhc3QuTG9hZCgpKQotICAgICAgICByZXR1cm4gYXN0LkF0
dHJpYnV0ZShidWlsdGluX25hbWUsIG5hbWUsIGFzdC5Mb2FkKCkpCi0KLSAgICBkZWYgZXhwbGFu
YXRpb25fcGFyYW0oc2VsZiwgZXhwcik6Ci0gICAgICAgICIiIlJldHVybiBhIG5ldyBuYW1lZCAl
LWZvcm1hdHRpbmcgcGxhY2Vob2xkZXIgZm9yIGV4cHIuCi0KLSAgICAgICAgVGhpcyBjcmVhdGVz
IGEgJS1mb3JtYXR0aW5nIHBsYWNlaG9sZGVyIGZvciBleHByIGluIHRoZQotICAgICAgICBjdXJy
ZW50IGZvcm1hdHRpbmcgY29udGV4dCwgZS5nLiBgYCUocHkwKXNgYC4gIFRoZSBwbGFjZWhvbGRl
cgotICAgICAgICBhbmQgZXhwciBhcmUgcGxhY2VkIGluIHRoZSBjdXJyZW50IGZvcm1hdCBjb250
ZXh0IHNvIHRoYXQgaXQKLSAgICAgICAgY2FuIGJlIHVzZWQgb24gdGhlIG5leHQgY2FsbCB0byAu
cG9wX2Zvcm1hdF9jb250ZXh0KCkuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIHNwZWNpZmllciA9
ICJweSIgKyBzdHIobmV4dChzZWxmLnZhcmlhYmxlX2NvdW50ZXIpKQotICAgICAgICBzZWxmLmV4
cGxhbmF0aW9uX3NwZWNpZmllcnNbc3BlY2lmaWVyXSA9IGV4cHIKLSAgICAgICAgcmV0dXJuICIl
KCIgKyBzcGVjaWZpZXIgKyAiKXMiCi0KLSAgICBkZWYgcHVzaF9mb3JtYXRfY29udGV4dChzZWxm
KToKLSAgICAgICAgIiIiQ3JlYXRlIGEgbmV3IGZvcm1hdHRpbmcgY29udGV4dC4KLQotICAgICAg
ICBUaGUgZm9ybWF0IGNvbnRleHQgaXMgdXNlZCBmb3Igd2hlbiBhbiBleHBsYW5hdGlvbiB3YW50
cyB0bwotICAgICAgICBoYXZlIGEgdmFyaWFibGUgdmFsdWUgZm9ybWF0dGVkIGluIHRoZSBhc3Nl
cnRpb24gbWVzc2FnZS4gIEluCi0gICAgICAgIHRoaXMgY2FzZSB0aGUgdmFsdWUgcmVxdWlyZWQg
Y2FuIGJlIGFkZGVkIHVzaW5nCi0gICAgICAgIC5leHBsYW5hdGlvbl9wYXJhbSgpLiAgRmluYWxs
eSAucG9wX2Zvcm1hdF9jb250ZXh0KCkgaXMgdXNlZAotICAgICAgICB0byBmb3JtYXQgYSBzdHJp
bmcgb2YgJS1mb3JtYXR0ZWQgdmFsdWVzIGFzIGFkZGVkIGJ5Ci0gICAgICAgIC5leHBsYW5hdGlv
bl9wYXJhbSgpLgotCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLmV4cGxhbmF0aW9uX3NwZWNp
ZmllcnMgPSB7fQotICAgICAgICBzZWxmLnN0YWNrLmFwcGVuZChzZWxmLmV4cGxhbmF0aW9uX3Nw
ZWNpZmllcnMpCi0KLSAgICBkZWYgcG9wX2Zvcm1hdF9jb250ZXh0KHNlbGYsIGV4cGxfZXhwcik6
Ci0gICAgICAgICIiIkZvcm1hdCB0aGUgJS1mb3JtYXR0ZWQgc3RyaW5nIHdpdGggY3VycmVudCBm
b3JtYXQgY29udGV4dC4KLQotICAgICAgICBUaGUgZXhwbF9leHByIHNob3VsZCBiZSBhbiBhc3Qu
U3RyIGluc3RhbmNlIGNvbnN0cnVjdGVkIGZyb20KLSAgICAgICAgdGhlICUtcGxhY2Vob2xkZXJz
IGNyZWF0ZWQgYnkgLmV4cGxhbmF0aW9uX3BhcmFtKCkuICBUaGlzIHdpbGwKLSAgICAgICAgYWRk
IHRoZSByZXF1aXJlZCBjb2RlIHRvIGZvcm1hdCBzYWlkIHN0cmluZyB0byAub25fZmFpbHVyZSBh
bmQKLSAgICAgICAgcmV0dXJuIHRoZSBhc3QuTmFtZSBpbnN0YW5jZSBvZiB0aGUgZm9ybWF0dGVk
IHN0cmluZy4KLQotICAgICAgICAiIiIKLSAgICAgICAgY3VycmVudCA9IHNlbGYuc3RhY2sucG9w
KCkKLSAgICAgICAgaWYgc2VsZi5zdGFjazoKLSAgICAgICAgICAgIHNlbGYuZXhwbGFuYXRpb25f
c3BlY2lmaWVycyA9IHNlbGYuc3RhY2tbLTFdCi0gICAgICAgIGtleXMgPSBbYXN0LlN0cihrZXkp
IGZvciBrZXkgaW4gY3VycmVudC5rZXlzKCldCi0gICAgICAgIGZvcm1hdF9kaWN0ID0gYXN0LkRp
Y3Qoa2V5cywgbGlzdChjdXJyZW50LnZhbHVlcygpKSkKLSAgICAgICAgZm9ybSA9IGFzdC5CaW5P
cChleHBsX2V4cHIsIGFzdC5Nb2QoKSwgZm9ybWF0X2RpY3QpCi0gICAgICAgIG5hbWUgPSAiQHB5
X2Zvcm1hdCIgKyBzdHIobmV4dChzZWxmLnZhcmlhYmxlX2NvdW50ZXIpKQotICAgICAgICBzZWxm
Lm9uX2ZhaWx1cmUuYXBwZW5kKGFzdC5Bc3NpZ24oW2FzdC5OYW1lKG5hbWUsIGFzdC5TdG9yZSgp
KV0sIGZvcm0pKQotICAgICAgICByZXR1cm4gYXN0Lk5hbWUobmFtZSwgYXN0LkxvYWQoKSkKLQot
ICAgIGRlZiBnZW5lcmljX3Zpc2l0KHNlbGYsIG5vZGUpOgotICAgICAgICAiIiJIYW5kbGUgZXhw
cmVzc2lvbnMgd2UgZG9uJ3QgaGF2ZSBjdXN0b20gY29kZSBmb3IuIiIiCi0gICAgICAgIGFzc2Vy
dCBpc2luc3RhbmNlKG5vZGUsIGFzdC5leHByKQotICAgICAgICByZXMgPSBzZWxmLmFzc2lnbihu
b2RlKQotICAgICAgICByZXR1cm4gcmVzLCBzZWxmLmV4cGxhbmF0aW9uX3BhcmFtKHNlbGYuZGlz
cGxheShyZXMpKQotCi0gICAgZGVmIHZpc2l0X0Fzc2VydChzZWxmLCBhc3NlcnRfKToKLSAgICAg
ICAgIiIiUmV0dXJuIHRoZSBBU1Qgc3RhdGVtZW50cyB0byByZXBsYWNlIHRoZSBhc3QuQXNzZXJ0
IGluc3RhbmNlLgotCi0gICAgICAgIFRoaXMgcmV3cml0ZXMgdGhlIHRlc3Qgb2YgYW4gYXNzZXJ0
aW9uIHRvIHByb3ZpZGUKLSAgICAgICAgaW50ZXJtZWRpYXRlIHZhbHVlcyBhbmQgcmVwbGFjZSBp
dCB3aXRoIGFuIGlmIHN0YXRlbWVudCB3aGljaAotICAgICAgICByYWlzZXMgYW4gYXNzZXJ0aW9u
IGVycm9yIHdpdGggYSBkZXRhaWxlZCBleHBsYW5hdGlvbiBpbiBjYXNlCi0gICAgICAgIHRoZSBl
eHByZXNzaW9uIGlzIGZhbHNlLgotCi0gICAgICAgICIiIgotICAgICAgICBpZiBpc2luc3RhbmNl
KGFzc2VydF8udGVzdCwgYXN0LlR1cGxlKSBhbmQgc2VsZi5jb25maWcgaXMgbm90IE5vbmU6Ci0g
ICAgICAgICAgICBmc2xvY2F0aW9uID0gKHNlbGYubW9kdWxlX3BhdGgsIGFzc2VydF8ubGluZW5v
KQotICAgICAgICAgICAgc2VsZi5jb25maWcud2FybignUjEnLCAnYXNzZXJ0aW9uIGlzIGFsd2F5
cyB0cnVlLCBwZXJoYXBzICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlbW92ZSBw
YXJlbnRoZXNlcz8nLCBmc2xvY2F0aW9uPWZzbG9jYXRpb24pCi0gICAgICAgIHNlbGYuc3RhdGVt
ZW50cyA9IFtdCi0gICAgICAgIHNlbGYudmFyaWFibGVzID0gW10KLSAgICAgICAgc2VsZi52YXJp
YWJsZV9jb3VudGVyID0gaXRlcnRvb2xzLmNvdW50KCkKLSAgICAgICAgc2VsZi5zdGFjayA9IFtd
Ci0gICAgICAgIHNlbGYub25fZmFpbHVyZSA9IFtdCi0gICAgICAgIHNlbGYucHVzaF9mb3JtYXRf
Y29udGV4dCgpCi0gICAgICAgICMgUmV3cml0ZSBhc3NlcnQgaW50byBhIGJ1bmNoIG9mIHN0YXRl
bWVudHMuCi0gICAgICAgIHRvcF9jb25kaXRpb24sIGV4cGxhbmF0aW9uID0gc2VsZi52aXNpdChh
c3NlcnRfLnRlc3QpCi0gICAgICAgICMgQ3JlYXRlIGZhaWx1cmUgbWVzc2FnZS4KLSAgICAgICAg
Ym9keSA9IHNlbGYub25fZmFpbHVyZQotICAgICAgICBuZWdhdGlvbiA9IGFzdC5VbmFyeU9wKGFz
dC5Ob3QoKSwgdG9wX2NvbmRpdGlvbikKLSAgICAgICAgc2VsZi5zdGF0ZW1lbnRzLmFwcGVuZChh
c3QuSWYobmVnYXRpb24sIGJvZHksIFtdKSkKLSAgICAgICAgaWYgYXNzZXJ0Xy5tc2c6Ci0gICAg
ICAgICAgICBhc3NlcnRtc2cgPSBzZWxmLmhlbHBlcignZm9ybWF0X2Fzc2VydG1zZycsIGFzc2Vy
dF8ubXNnKQotICAgICAgICAgICAgZXhwbGFuYXRpb24gPSAiXG4+YXNzZXJ0ICIgKyBleHBsYW5h
dGlvbgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYXNzZXJ0bXNnID0gYXN0LlN0cigiIikK
LSAgICAgICAgICAgIGV4cGxhbmF0aW9uID0gImFzc2VydCAiICsgZXhwbGFuYXRpb24KLSAgICAg
ICAgdGVtcGxhdGUgPSBhc3QuQmluT3AoYXNzZXJ0bXNnLCBhc3QuQWRkKCksIGFzdC5TdHIoZXhw
bGFuYXRpb24pKQotICAgICAgICBtc2cgPSBzZWxmLnBvcF9mb3JtYXRfY29udGV4dCh0ZW1wbGF0
ZSkKLSAgICAgICAgZm10ID0gc2VsZi5oZWxwZXIoImZvcm1hdF9leHBsYW5hdGlvbiIsIG1zZykK
LSAgICAgICAgZXJyX25hbWUgPSBhc3QuTmFtZSgiQXNzZXJ0aW9uRXJyb3IiLCBhc3QuTG9hZCgp
KQotICAgICAgICBleGMgPSBhc3RfQ2FsbChlcnJfbmFtZSwgW2ZtdF0sIFtdKQotICAgICAgICBp
ZiBzeXMudmVyc2lvbl9pbmZvWzBdID49IDM6Ci0gICAgICAgICAgICByYWlzZV8gPSBhc3QuUmFp
c2UoZXhjLCBOb25lKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2VfID0gYXN0LlJh
aXNlKGV4YywgTm9uZSwgTm9uZSkKLSAgICAgICAgYm9keS5hcHBlbmQocmFpc2VfKQotICAgICAg
ICAjIENsZWFyIHRlbXBvcmFyeSB2YXJpYWJsZXMgYnkgc2V0dGluZyB0aGVtIHRvIE5vbmUuCi0g
ICAgICAgIGlmIHNlbGYudmFyaWFibGVzOgotICAgICAgICAgICAgdmFyaWFibGVzID0gW2FzdC5O
YW1lKG5hbWUsIGFzdC5TdG9yZSgpKQotICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBuYW1l
IGluIHNlbGYudmFyaWFibGVzXQotICAgICAgICAgICAgY2xlYXIgPSBhc3QuQXNzaWduKHZhcmlh
YmxlcywgX05hbWVDb25zdGFudChOb25lKSkKLSAgICAgICAgICAgIHNlbGYuc3RhdGVtZW50cy5h
cHBlbmQoY2xlYXIpCi0gICAgICAgICMgRml4IGxpbmUgbnVtYmVycy4KLSAgICAgICAgZm9yIHN0
bXQgaW4gc2VsZi5zdGF0ZW1lbnRzOgotICAgICAgICAgICAgc2V0X2xvY2F0aW9uKHN0bXQsIGFz
c2VydF8ubGluZW5vLCBhc3NlcnRfLmNvbF9vZmZzZXQpCi0gICAgICAgIHJldHVybiBzZWxmLnN0
YXRlbWVudHMKLQotICAgIGRlZiB2aXNpdF9OYW1lKHNlbGYsIG5hbWUpOgotICAgICAgICAjIERp
c3BsYXkgdGhlIHJlcHIgb2YgdGhlIG5hbWUgaWYgaXQncyBhIGxvY2FsIHZhcmlhYmxlIG9yCi0g
ICAgICAgICMgX3Nob3VsZF9yZXByX2dsb2JhbF9uYW1lKCkgdGhpbmtzIGl0J3MgYWNjZXB0YWJs
ZS4KLSAgICAgICAgbG9jcyA9IGFzdF9DYWxsKHNlbGYuYnVpbHRpbigibG9jYWxzIiksIFtdLCBb
XSkKLSAgICAgICAgaW5sb2NzID0gYXN0LkNvbXBhcmUoYXN0LlN0cihuYW1lLmlkKSwgW2FzdC5J
bigpXSwgW2xvY3NdKQotICAgICAgICBkb3JlcHIgPSBzZWxmLmhlbHBlcigic2hvdWxkX3JlcHJf
Z2xvYmFsX25hbWUiLCBuYW1lKQotICAgICAgICB0ZXN0ID0gYXN0LkJvb2xPcChhc3QuT3IoKSwg
W2lubG9jcywgZG9yZXByXSkKLSAgICAgICAgZXhwciA9IGFzdC5JZkV4cCh0ZXN0LCBzZWxmLmRp
c3BsYXkobmFtZSksIGFzdC5TdHIobmFtZS5pZCkpCi0gICAgICAgIHJldHVybiBuYW1lLCBzZWxm
LmV4cGxhbmF0aW9uX3BhcmFtKGV4cHIpCi0KLSAgICBkZWYgdmlzaXRfQm9vbE9wKHNlbGYsIGJv
b2xvcCk6Ci0gICAgICAgIHJlc192YXIgPSBzZWxmLnZhcmlhYmxlKCkKLSAgICAgICAgZXhwbF9s
aXN0ID0gc2VsZi5hc3NpZ24oYXN0Lkxpc3QoW10sIGFzdC5Mb2FkKCkpKQotICAgICAgICBhcHAg
PSBhc3QuQXR0cmlidXRlKGV4cGxfbGlzdCwgImFwcGVuZCIsIGFzdC5Mb2FkKCkpCi0gICAgICAg
IGlzX29yID0gaW50KGlzaW5zdGFuY2UoYm9vbG9wLm9wLCBhc3QuT3IpKQotICAgICAgICBib2R5
ID0gc2F2ZSA9IHNlbGYuc3RhdGVtZW50cwotICAgICAgICBmYWlsX3NhdmUgPSBzZWxmLm9uX2Zh
aWx1cmUKLSAgICAgICAgbGV2ZWxzID0gbGVuKGJvb2xvcC52YWx1ZXMpIC0gMQotICAgICAgICBz
ZWxmLnB1c2hfZm9ybWF0X2NvbnRleHQoKQotICAgICAgICAjIFByb2Nlc3MgZWFjaCBvcGVyYW5k
LCBzaG9ydC1jaXJjdXRpbmcgaWYgbmVlZGVkLgotICAgICAgICBmb3IgaSwgdiBpbiBlbnVtZXJh
dGUoYm9vbG9wLnZhbHVlcyk6Ci0gICAgICAgICAgICBpZiBpOgotICAgICAgICAgICAgICAgIGZh
aWxfaW5uZXIgPSBbXQotICAgICAgICAgICAgICAgICMgY29uZCBpcyBzZXQgaW4gYSBwcmlvciBs
b29wIGl0ZXJhdGlvbiBiZWxvdwotICAgICAgICAgICAgICAgIHNlbGYub25fZmFpbHVyZS5hcHBl
bmQoYXN0LklmKGNvbmQsIGZhaWxfaW5uZXIsIFtdKSkgICMgbm9xYQotICAgICAgICAgICAgICAg
IHNlbGYub25fZmFpbHVyZSA9IGZhaWxfaW5uZXIKLSAgICAgICAgICAgIHNlbGYucHVzaF9mb3Jt
YXRfY29udGV4dCgpCi0gICAgICAgICAgICByZXMsIGV4cGwgPSBzZWxmLnZpc2l0KHYpCi0gICAg
ICAgICAgICBib2R5LmFwcGVuZChhc3QuQXNzaWduKFthc3QuTmFtZShyZXNfdmFyLCBhc3QuU3Rv
cmUoKSldLCByZXMpKQotICAgICAgICAgICAgZXhwbF9mb3JtYXQgPSBzZWxmLnBvcF9mb3JtYXRf
Y29udGV4dChhc3QuU3RyKGV4cGwpKQotICAgICAgICAgICAgY2FsbCA9IGFzdF9DYWxsKGFwcCwg
W2V4cGxfZm9ybWF0XSwgW10pCi0gICAgICAgICAgICBzZWxmLm9uX2ZhaWx1cmUuYXBwZW5kKGFz
dC5FeHByKGNhbGwpKQotICAgICAgICAgICAgaWYgaSA8IGxldmVsczoKLSAgICAgICAgICAgICAg
ICBjb25kID0gcmVzCi0gICAgICAgICAgICAgICAgaWYgaXNfb3I6Ci0gICAgICAgICAgICAgICAg
ICAgIGNvbmQgPSBhc3QuVW5hcnlPcChhc3QuTm90KCksIGNvbmQpCi0gICAgICAgICAgICAgICAg
aW5uZXIgPSBbXQotICAgICAgICAgICAgICAgIHNlbGYuc3RhdGVtZW50cy5hcHBlbmQoYXN0Lklm
KGNvbmQsIGlubmVyLCBbXSkpCi0gICAgICAgICAgICAgICAgc2VsZi5zdGF0ZW1lbnRzID0gYm9k
eSA9IGlubmVyCi0gICAgICAgIHNlbGYuc3RhdGVtZW50cyA9IHNhdmUKLSAgICAgICAgc2VsZi5v
bl9mYWlsdXJlID0gZmFpbF9zYXZlCi0gICAgICAgIGV4cGxfdGVtcGxhdGUgPSBzZWxmLmhlbHBl
cigiZm9ybWF0X2Jvb2xvcCIsIGV4cGxfbGlzdCwgYXN0Lk51bShpc19vcikpCi0gICAgICAgIGV4
cGwgPSBzZWxmLnBvcF9mb3JtYXRfY29udGV4dChleHBsX3RlbXBsYXRlKQotICAgICAgICByZXR1
cm4gYXN0Lk5hbWUocmVzX3ZhciwgYXN0LkxvYWQoKSksIHNlbGYuZXhwbGFuYXRpb25fcGFyYW0o
ZXhwbCkKLQotICAgIGRlZiB2aXNpdF9VbmFyeU9wKHNlbGYsIHVuYXJ5KToKLSAgICAgICAgcGF0
dGVybiA9IHVuYXJ5X21hcFt1bmFyeS5vcC5fX2NsYXNzX19dCi0gICAgICAgIG9wZXJhbmRfcmVz
LCBvcGVyYW5kX2V4cGwgPSBzZWxmLnZpc2l0KHVuYXJ5Lm9wZXJhbmQpCi0gICAgICAgIHJlcyA9
IHNlbGYuYXNzaWduKGFzdC5VbmFyeU9wKHVuYXJ5Lm9wLCBvcGVyYW5kX3JlcykpCi0gICAgICAg
IHJldHVybiByZXMsIHBhdHRlcm4gJSAob3BlcmFuZF9leHBsLCkKLQotICAgIGRlZiB2aXNpdF9C
aW5PcChzZWxmLCBiaW5vcCk6Ci0gICAgICAgIHN5bWJvbCA9IGJpbm9wX21hcFtiaW5vcC5vcC5f
X2NsYXNzX19dCi0gICAgICAgIGxlZnRfZXhwciwgbGVmdF9leHBsID0gc2VsZi52aXNpdChiaW5v
cC5sZWZ0KQotICAgICAgICByaWdodF9leHByLCByaWdodF9leHBsID0gc2VsZi52aXNpdChiaW5v
cC5yaWdodCkKLSAgICAgICAgZXhwbGFuYXRpb24gPSAiKCVzICVzICVzKSIgJSAobGVmdF9leHBs
LCBzeW1ib2wsIHJpZ2h0X2V4cGwpCi0gICAgICAgIHJlcyA9IHNlbGYuYXNzaWduKGFzdC5CaW5P
cChsZWZ0X2V4cHIsIGJpbm9wLm9wLCByaWdodF9leHByKSkKLSAgICAgICAgcmV0dXJuIHJlcywg
ZXhwbGFuYXRpb24KLQotICAgIGRlZiB2aXNpdF9DYWxsXzM1KHNlbGYsIGNhbGwpOgotICAgICAg
ICAiIiIKLSAgICAgICAgdmlzaXQgYGFzdC5DYWxsYCBub2RlcyBvbiBQeXRob24zLjUgYW5kIGFm
dGVyCi0gICAgICAgICIiIgotICAgICAgICBuZXdfZnVuYywgZnVuY19leHBsID0gc2VsZi52aXNp
dChjYWxsLmZ1bmMpCi0gICAgICAgIGFyZ19leHBscyA9IFtdCi0gICAgICAgIG5ld19hcmdzID0g
W10KLSAgICAgICAgbmV3X2t3YXJncyA9IFtdCi0gICAgICAgIGZvciBhcmcgaW4gY2FsbC5hcmdz
OgotICAgICAgICAgICAgcmVzLCBleHBsID0gc2VsZi52aXNpdChhcmcpCi0gICAgICAgICAgICBh
cmdfZXhwbHMuYXBwZW5kKGV4cGwpCi0gICAgICAgICAgICBuZXdfYXJncy5hcHBlbmQocmVzKQot
ICAgICAgICBmb3Iga2V5d29yZCBpbiBjYWxsLmtleXdvcmRzOgotICAgICAgICAgICAgcmVzLCBl
eHBsID0gc2VsZi52aXNpdChrZXl3b3JkLnZhbHVlKQotICAgICAgICAgICAgbmV3X2t3YXJncy5h
cHBlbmQoYXN0LmtleXdvcmQoa2V5d29yZC5hcmcsIHJlcykpCi0gICAgICAgICAgICBpZiBrZXl3
b3JkLmFyZzoKLSAgICAgICAgICAgICAgICBhcmdfZXhwbHMuYXBwZW5kKGtleXdvcmQuYXJnICsg
Ij0iICsgZXhwbCkKLSAgICAgICAgICAgIGVsc2U6ICAjICoqYXJncyBoYXZlIGBhcmdgIGtleXdv
cmRzIHdpdGggYW4gLmFyZyBvZiBOb25lCi0gICAgICAgICAgICAgICAgYXJnX2V4cGxzLmFwcGVu
ZCgiKioiICsgZXhwbCkKLQotICAgICAgICBleHBsID0gIiVzKCVzKSIgJSAoZnVuY19leHBsLCAn
LCAnLmpvaW4oYXJnX2V4cGxzKSkKLSAgICAgICAgbmV3X2NhbGwgPSBhc3QuQ2FsbChuZXdfZnVu
YywgbmV3X2FyZ3MsIG5ld19rd2FyZ3MpCi0gICAgICAgIHJlcyA9IHNlbGYuYXNzaWduKG5ld19j
YWxsKQotICAgICAgICByZXNfZXhwbCA9IHNlbGYuZXhwbGFuYXRpb25fcGFyYW0oc2VsZi5kaXNw
bGF5KHJlcykpCi0gICAgICAgIG91dGVyX2V4cGwgPSAiJXNcbnslcyA9ICVzXG59IiAlIChyZXNf
ZXhwbCwgcmVzX2V4cGwsIGV4cGwpCi0gICAgICAgIHJldHVybiByZXMsIG91dGVyX2V4cGwKLQot
ICAgIGRlZiB2aXNpdF9TdGFycmVkKHNlbGYsIHN0YXJyZWQpOgotICAgICAgICAjIEZyb20gUHl0
aG9uIDMuNSwgYSBTdGFycmVkIG5vZGUgY2FuIGFwcGVhciBpbiBhIGZ1bmN0aW9uIGNhbGwKLSAg
ICAgICAgcmVzLCBleHBsID0gc2VsZi52aXNpdChzdGFycmVkLnZhbHVlKQotICAgICAgICByZXR1
cm4gc3RhcnJlZCwgJyonICsgZXhwbAotCi0gICAgZGVmIHZpc2l0X0NhbGxfbGVnYWN5KHNlbGYs
IGNhbGwpOgotICAgICAgICAiIiIKLSAgICAgICAgdmlzaXQgYGFzdC5DYWxsIG5vZGVzIG9uIDMu
NCBhbmQgYmVsb3dgCi0gICAgICAgICIiIgotICAgICAgICBuZXdfZnVuYywgZnVuY19leHBsID0g
c2VsZi52aXNpdChjYWxsLmZ1bmMpCi0gICAgICAgIGFyZ19leHBscyA9IFtdCi0gICAgICAgIG5l
d19hcmdzID0gW10KLSAgICAgICAgbmV3X2t3YXJncyA9IFtdCi0gICAgICAgIG5ld19zdGFyID0g
bmV3X2t3YXJnID0gTm9uZQotICAgICAgICBmb3IgYXJnIGluIGNhbGwuYXJnczoKLSAgICAgICAg
ICAgIHJlcywgZXhwbCA9IHNlbGYudmlzaXQoYXJnKQotICAgICAgICAgICAgbmV3X2FyZ3MuYXBw
ZW5kKHJlcykKLSAgICAgICAgICAgIGFyZ19leHBscy5hcHBlbmQoZXhwbCkKLSAgICAgICAgZm9y
IGtleXdvcmQgaW4gY2FsbC5rZXl3b3JkczoKLSAgICAgICAgICAgIHJlcywgZXhwbCA9IHNlbGYu
dmlzaXQoa2V5d29yZC52YWx1ZSkKLSAgICAgICAgICAgIG5ld19rd2FyZ3MuYXBwZW5kKGFzdC5r
ZXl3b3JkKGtleXdvcmQuYXJnLCByZXMpKQotICAgICAgICAgICAgYXJnX2V4cGxzLmFwcGVuZChr
ZXl3b3JkLmFyZyArICI9IiArIGV4cGwpCi0gICAgICAgIGlmIGNhbGwuc3RhcmFyZ3M6Ci0gICAg
ICAgICAgICBuZXdfc3RhciwgZXhwbCA9IHNlbGYudmlzaXQoY2FsbC5zdGFyYXJncykKLSAgICAg
ICAgICAgIGFyZ19leHBscy5hcHBlbmQoIioiICsgZXhwbCkKLSAgICAgICAgaWYgY2FsbC5rd2Fy
Z3M6Ci0gICAgICAgICAgICBuZXdfa3dhcmcsIGV4cGwgPSBzZWxmLnZpc2l0KGNhbGwua3dhcmdz
KQotICAgICAgICAgICAgYXJnX2V4cGxzLmFwcGVuZCgiKioiICsgZXhwbCkKLSAgICAgICAgZXhw
bCA9ICIlcyglcykiICUgKGZ1bmNfZXhwbCwgJywgJy5qb2luKGFyZ19leHBscykpCi0gICAgICAg
IG5ld19jYWxsID0gYXN0LkNhbGwobmV3X2Z1bmMsIG5ld19hcmdzLCBuZXdfa3dhcmdzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19zdGFyLCBuZXdfa3dhcmcpCi0gICAgICAgIHJl
cyA9IHNlbGYuYXNzaWduKG5ld19jYWxsKQotICAgICAgICByZXNfZXhwbCA9IHNlbGYuZXhwbGFu
YXRpb25fcGFyYW0oc2VsZi5kaXNwbGF5KHJlcykpCi0gICAgICAgIG91dGVyX2V4cGwgPSAiJXNc
bnslcyA9ICVzXG59IiAlIChyZXNfZXhwbCwgcmVzX2V4cGwsIGV4cGwpCi0gICAgICAgIHJldHVy
biByZXMsIG91dGVyX2V4cGwKLQotICAgICMgYXN0LkNhbGwgc2lnbmF0dXJlIGNoYW5nZWQgb24g
My41LAotICAgICMgY29uZGl0aW9uYWxseSBjaGFuZ2UgIHdoaWNoIG1ldGhvZHMgaXMgbmFtZWQK
LSAgICAjIHZpc2l0X0NhbGwgZGVwZW5kaW5nIG9uIFB5dGhvbiB2ZXJzaW9uCi0gICAgaWYgc3lz
LnZlcnNpb25faW5mbyA+PSAoMywgNSk6Ci0gICAgICAgIHZpc2l0X0NhbGwgPSB2aXNpdF9DYWxs
XzM1Ci0gICAgZWxzZToKLSAgICAgICAgdmlzaXRfQ2FsbCA9IHZpc2l0X0NhbGxfbGVnYWN5Ci0K
LSAgICBkZWYgdmlzaXRfQXR0cmlidXRlKHNlbGYsIGF0dHIpOgotICAgICAgICBpZiBub3QgaXNp
bnN0YW5jZShhdHRyLmN0eCwgYXN0LkxvYWQpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2Vu
ZXJpY192aXNpdChhdHRyKQotICAgICAgICB2YWx1ZSwgdmFsdWVfZXhwbCA9IHNlbGYudmlzaXQo
YXR0ci52YWx1ZSkKLSAgICAgICAgcmVzID0gc2VsZi5hc3NpZ24oYXN0LkF0dHJpYnV0ZSh2YWx1
ZSwgYXR0ci5hdHRyLCBhc3QuTG9hZCgpKSkKLSAgICAgICAgcmVzX2V4cGwgPSBzZWxmLmV4cGxh
bmF0aW9uX3BhcmFtKHNlbGYuZGlzcGxheShyZXMpKQotICAgICAgICBwYXQgPSAiJXNcbnslcyA9
ICVzLiVzXG59IgotICAgICAgICBleHBsID0gcGF0ICUgKHJlc19leHBsLCByZXNfZXhwbCwgdmFs
dWVfZXhwbCwgYXR0ci5hdHRyKQotICAgICAgICByZXR1cm4gcmVzLCBleHBsCi0KLSAgICBkZWYg
dmlzaXRfQ29tcGFyZShzZWxmLCBjb21wKToKLSAgICAgICAgc2VsZi5wdXNoX2Zvcm1hdF9jb250
ZXh0KCkKLSAgICAgICAgbGVmdF9yZXMsIGxlZnRfZXhwbCA9IHNlbGYudmlzaXQoY29tcC5sZWZ0
KQotICAgICAgICBpZiBpc2luc3RhbmNlKGNvbXAubGVmdCwgKF9hc3QuQ29tcGFyZSwgX2FzdC5C
b29sT3ApKToKLSAgICAgICAgICAgIGxlZnRfZXhwbCA9ICIoezB9KSIuZm9ybWF0KGxlZnRfZXhw
bCkKLSAgICAgICAgcmVzX3ZhcmlhYmxlcyA9IFtzZWxmLnZhcmlhYmxlKCkgZm9yIGkgaW4gcmFu
Z2UobGVuKGNvbXAub3BzKSldCi0gICAgICAgIGxvYWRfbmFtZXMgPSBbYXN0Lk5hbWUodiwgYXN0
LkxvYWQoKSkgZm9yIHYgaW4gcmVzX3ZhcmlhYmxlc10KLSAgICAgICAgc3RvcmVfbmFtZXMgPSBb
YXN0Lk5hbWUodiwgYXN0LlN0b3JlKCkpIGZvciB2IGluIHJlc192YXJpYWJsZXNdCi0gICAgICAg
IGl0ID0gemlwKHJhbmdlKGxlbihjb21wLm9wcykpLCBjb21wLm9wcywgY29tcC5jb21wYXJhdG9y
cykKLSAgICAgICAgZXhwbHMgPSBbXQotICAgICAgICBzeW1zID0gW10KLSAgICAgICAgcmVzdWx0
cyA9IFtsZWZ0X3Jlc10KLSAgICAgICAgZm9yIGksIG9wLCBuZXh0X29wZXJhbmQgaW4gaXQ6Ci0g
ICAgICAgICAgICBuZXh0X3JlcywgbmV4dF9leHBsID0gc2VsZi52aXNpdChuZXh0X29wZXJhbmQp
Ci0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKG5leHRfb3BlcmFuZCwgKF9hc3QuQ29tcGFyZSwg
X2FzdC5Cb29sT3ApKToKLSAgICAgICAgICAgICAgICBuZXh0X2V4cGwgPSAiKHswfSkiLmZvcm1h
dChuZXh0X2V4cGwpCi0gICAgICAgICAgICByZXN1bHRzLmFwcGVuZChuZXh0X3JlcykKLSAgICAg
ICAgICAgIHN5bSA9IGJpbm9wX21hcFtvcC5fX2NsYXNzX19dCi0gICAgICAgICAgICBzeW1zLmFw
cGVuZChhc3QuU3RyKHN5bSkpCi0gICAgICAgICAgICBleHBsID0gIiVzICVzICVzIiAlIChsZWZ0
X2V4cGwsIHN5bSwgbmV4dF9leHBsKQotICAgICAgICAgICAgZXhwbHMuYXBwZW5kKGFzdC5TdHIo
ZXhwbCkpCi0gICAgICAgICAgICByZXNfZXhwciA9IGFzdC5Db21wYXJlKGxlZnRfcmVzLCBbb3Bd
LCBbbmV4dF9yZXNdKQotICAgICAgICAgICAgc2VsZi5zdGF0ZW1lbnRzLmFwcGVuZChhc3QuQXNz
aWduKFtzdG9yZV9uYW1lc1tpXV0sIHJlc19leHByKSkKLSAgICAgICAgICAgIGxlZnRfcmVzLCBs
ZWZ0X2V4cGwgPSBuZXh0X3JlcywgbmV4dF9leHBsCi0gICAgICAgICMgVXNlIHB5dGVzdC5hc3Nl
cnRpb24udXRpbC5fcmVwcmNvbXBhcmUgaWYgdGhhdCdzIGF2YWlsYWJsZS4KLSAgICAgICAgZXhw
bF9jYWxsID0gc2VsZi5oZWxwZXIoImNhbGxfcmVwcmNvbXBhcmUiLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhc3QuVHVwbGUoc3ltcywgYXN0LkxvYWQoKSksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFzdC5UdXBsZShsb2FkX25hbWVzLCBhc3QuTG9hZCgpKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0LlR1cGxlKGV4cGxzLCBhc3QuTG9h
ZCgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0LlR1cGxlKHJlc3VsdHMs
IGFzdC5Mb2FkKCkpKQotICAgICAgICBpZiBsZW4oY29tcC5vcHMpID4gMToKLSAgICAgICAgICAg
IHJlcyA9IGFzdC5Cb29sT3AoYXN0LkFuZCgpLCBsb2FkX25hbWVzKQotICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgcmVzID0gbG9hZF9uYW1lc1swXQotICAgICAgICByZXR1cm4gcmVzLCBzZWxm
LmV4cGxhbmF0aW9uX3BhcmFtKHNlbGYucG9wX2Zvcm1hdF9jb250ZXh0KGV4cGxfY2FsbCkpCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2Fzc2VydGlvbi90cnVuY2F0ZS5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L19weXRlc3QvYXNzZXJ0aW9uL3RydW5jYXRlLnB5CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAyZWQxMmUyZTVhOTYwY2E2MGQ5OTg2OGUxOTg5N2EyN2RkYTZkODMwLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L19weXRlc3QvYXNzZXJ0aW9uL3RydW5jYXRlLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTAyICsw
LDAgQEAKLSIiIgotVXRpbGl0aWVzIGZvciB0cnVuY2F0aW5nIGFzc2VydGlvbiBvdXRwdXQuCi0K
LUN1cnJlbnQgZGVmYXVsdCBiZWhhdmlvdXIgaXMgdG8gdHJ1bmNhdGUgYXNzZXJ0aW9uIGV4cGxh
bmF0aW9ucyBhdAotfjggdGVybWluYWwgbGluZXMsIHVubGVzcyBydW5uaW5nIGluICItdnYiIG1v
ZGUgb3IgcnVubmluZyBvbiBDSS4KLSIiIgotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0
ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotaW1wb3J0IG9zCi0KLWltcG9ydCBz
aXgKLQotCi1ERUZBVUxUX01BWF9MSU5FUyA9IDgKLURFRkFVTFRfTUFYX0NIQVJTID0gOCAqIDgw
Ci1VU0FHRV9NU0cgPSAidXNlICctdnYnIHRvIHNob3ciCi0KLQotZGVmIHRydW5jYXRlX2lmX3Jl
cXVpcmVkKGV4cGxhbmF0aW9uLCBpdGVtLCBtYXhfbGVuZ3RoPU5vbmUpOgotICAgICIiIgotICAg
IFRydW5jYXRlIHRoaXMgYXNzZXJ0aW9uIGV4cGxhbmF0aW9uIGlmIHRoZSBnaXZlbiB0ZXN0IGl0
ZW0gaXMgZWxpZ2libGUuCi0gICAgIiIiCi0gICAgaWYgX3Nob3VsZF90cnVuY2F0ZV9pdGVtKGl0
ZW0pOgotICAgICAgICByZXR1cm4gX3RydW5jYXRlX2V4cGxhbmF0aW9uKGV4cGxhbmF0aW9uKQot
ICAgIHJldHVybiBleHBsYW5hdGlvbgotCi0KLWRlZiBfc2hvdWxkX3RydW5jYXRlX2l0ZW0oaXRl
bSk6Ci0gICAgIiIiCi0gICAgV2hldGhlciBvciBub3QgdGhpcyB0ZXN0IGl0ZW0gaXMgZWxpZ2li
bGUgZm9yIHRydW5jYXRpb24uCi0gICAgIiIiCi0gICAgdmVyYm9zZSA9IGl0ZW0uY29uZmlnLm9w
dGlvbi52ZXJib3NlCi0gICAgcmV0dXJuIHZlcmJvc2UgPCAyIGFuZCBub3QgX3J1bm5pbmdfb25f
Y2koKQotCi0KLWRlZiBfcnVubmluZ19vbl9jaSgpOgotICAgICIiIkNoZWNrIGlmIHdlJ3JlIGN1
cnJlbnRseSBydW5uaW5nIG9uIGEgQ0kgc3lzdGVtLiIiIgotICAgIGVudl92YXJzID0gWydDSScs
ICdCVUlMRF9OVU1CRVInXQotICAgIHJldHVybiBhbnkodmFyIGluIG9zLmVudmlyb24gZm9yIHZh
ciBpbiBlbnZfdmFycykKLQotCi1kZWYgX3RydW5jYXRlX2V4cGxhbmF0aW9uKGlucHV0X2xpbmVz
LCBtYXhfbGluZXM9Tm9uZSwgbWF4X2NoYXJzPU5vbmUpOgotICAgICIiIgotICAgIFRydW5jYXRl
IGdpdmVuIGxpc3Qgb2Ygc3RyaW5ncyB0aGF0IG1ha2VzIHVwIHRoZSBhc3NlcnRpb24gZXhwbGFu
YXRpb24uCi0KLSAgICBUcnVuY2F0ZXMgdG8gZWl0aGVyIDggbGluZXMsIG9yIDY0MCBjaGFyYWN0
ZXJzIC0gd2hpY2hldmVyIHRoZSBpbnB1dCByZWFjaGVzCi0gICAgZmlyc3QuIFRoZSByZW1haW5p
bmcgbGluZXMgd2lsbCBiZSByZXBsYWNlZCBieSBhIHVzYWdlIG1lc3NhZ2UuCi0gICAgIiIiCi0K
LSAgICBpZiBtYXhfbGluZXMgaXMgTm9uZToKLSAgICAgICAgbWF4X2xpbmVzID0gREVGQVVMVF9N
QVhfTElORVMKLSAgICBpZiBtYXhfY2hhcnMgaXMgTm9uZToKLSAgICAgICAgbWF4X2NoYXJzID0g
REVGQVVMVF9NQVhfQ0hBUlMKLQotICAgICMgQ2hlY2sgaWYgdHJ1bmNhdGlvbiByZXF1aXJlZAot
ICAgIGlucHV0X2NoYXJfY291bnQgPSBsZW4oIiIuam9pbihpbnB1dF9saW5lcykpCi0gICAgaWYg
bGVuKGlucHV0X2xpbmVzKSA8PSBtYXhfbGluZXMgYW5kIGlucHV0X2NoYXJfY291bnQgPD0gbWF4
X2NoYXJzOgotICAgICAgICByZXR1cm4gaW5wdXRfbGluZXMKLQotICAgICMgVHJ1bmNhdGUgZmly
c3QgdG8gbWF4X2xpbmVzLCBhbmQgdGhlbiB0cnVuY2F0ZSB0byBtYXhfY2hhcnMgaWYgbWF4X2No
YXJzCi0gICAgIyBpcyBleGNlZWRlZC4KLSAgICB0cnVuY2F0ZWRfZXhwbGFuYXRpb24gPSBpbnB1
dF9saW5lc1s6bWF4X2xpbmVzXQotICAgIHRydW5jYXRlZF9leHBsYW5hdGlvbiA9IF90cnVuY2F0
ZV9ieV9jaGFyX2NvdW50KHRydW5jYXRlZF9leHBsYW5hdGlvbiwgbWF4X2NoYXJzKQotCi0gICAg
IyBBZGQgZWxsaXBzaXMgdG8gZmluYWwgbGluZQotICAgIHRydW5jYXRlZF9leHBsYW5hdGlvblst
MV0gPSB0cnVuY2F0ZWRfZXhwbGFuYXRpb25bLTFdICsgIi4uLiIKLQotICAgICMgQXBwZW5kIHVz
ZWZ1bCBtZXNzYWdlIHRvIGV4cGxhbmF0aW9uCi0gICAgdHJ1bmNhdGVkX2xpbmVfY291bnQgPSBs
ZW4oaW5wdXRfbGluZXMpIC0gbGVuKHRydW5jYXRlZF9leHBsYW5hdGlvbikKLSAgICB0cnVuY2F0
ZWRfbGluZV9jb3VudCArPSAxICAjIEFjY291bnQgZm9yIHRoZSBwYXJ0LXRydW5jYXRlZCBmaW5h
bCBsaW5lCi0gICAgbXNnID0gJy4uLkZ1bGwgb3V0cHV0IHRydW5jYXRlZCcKLSAgICBpZiB0cnVu
Y2F0ZWRfbGluZV9jb3VudCA9PSAxOgotICAgICAgICBtc2cgKz0gJyAoezB9IGxpbmUgaGlkZGVu
KScuZm9ybWF0KHRydW5jYXRlZF9saW5lX2NvdW50KQotICAgIGVsc2U6Ci0gICAgICAgIG1zZyAr
PSAnICh7MH0gbGluZXMgaGlkZGVuKScuZm9ybWF0KHRydW5jYXRlZF9saW5lX2NvdW50KQotICAg
IG1zZyArPSAiLCB7MH0iIC5mb3JtYXQoVVNBR0VfTVNHKQotICAgIHRydW5jYXRlZF9leHBsYW5h
dGlvbi5leHRlbmQoWwotICAgICAgICBzaXgudGV4dF90eXBlKCIiKSwKLSAgICAgICAgc2l4LnRl
eHRfdHlwZShtc2cpLAotICAgIF0pCi0gICAgcmV0dXJuIHRydW5jYXRlZF9leHBsYW5hdGlvbgot
Ci0KLWRlZiBfdHJ1bmNhdGVfYnlfY2hhcl9jb3VudChpbnB1dF9saW5lcywgbWF4X2NoYXJzKToK
LSAgICAjIENoZWNrIGlmIHRydW5jYXRpb24gcmVxdWlyZWQKLSAgICBpZiBsZW4oIiIuam9pbihp
bnB1dF9saW5lcykpIDw9IG1heF9jaGFyczoKLSAgICAgICAgcmV0dXJuIGlucHV0X2xpbmVzCi0K
LSAgICAjIEZpbmQgcG9pbnQgYXQgd2hpY2ggaW5wdXQgbGVuZ3RoIGV4Y2VlZHMgdG90YWwgYWxs
b3dlZCBsZW5ndGgKLSAgICBpdGVyYXRlZF9jaGFyX2NvdW50ID0gMAotICAgIGZvciBpdGVyYXRl
ZF9pbmRleCwgaW5wdXRfbGluZSBpbiBlbnVtZXJhdGUoaW5wdXRfbGluZXMpOgotICAgICAgICBp
ZiBpdGVyYXRlZF9jaGFyX2NvdW50ICsgbGVuKGlucHV0X2xpbmUpID4gbWF4X2NoYXJzOgotICAg
ICAgICAgICAgYnJlYWsKLSAgICAgICAgaXRlcmF0ZWRfY2hhcl9jb3VudCArPSBsZW4oaW5wdXRf
bGluZSkKLQotICAgICMgQ3JlYXRlIHRydW5jYXRlZCBleHBsYW5hdGlvbiB3aXRoIG1vZGlmaWVk
IGZpbmFsIGxpbmUKLSAgICB0cnVuY2F0ZWRfcmVzdWx0ID0gaW5wdXRfbGluZXNbOml0ZXJhdGVk
X2luZGV4XQotICAgIGZpbmFsX2xpbmUgPSBpbnB1dF9saW5lc1tpdGVyYXRlZF9pbmRleF0KLSAg
ICBpZiBmaW5hbF9saW5lOgotICAgICAgICBmaW5hbF9saW5lX3RydW5jYXRlX3BvaW50ID0gbWF4
X2NoYXJzIC0gaXRlcmF0ZWRfY2hhcl9jb3VudAotICAgICAgICBmaW5hbF9saW5lID0gZmluYWxf
bGluZVs6ZmluYWxfbGluZV90cnVuY2F0ZV9wb2ludF0KLSAgICB0cnVuY2F0ZWRfcmVzdWx0LmFw
cGVuZChmaW5hbF9saW5lKQotICAgIHJldHVybiB0cnVuY2F0ZWRfcmVzdWx0CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2Fzc2VydGlvbi91dGlsLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5
dGVzdC9hc3NlcnRpb24vdXRpbC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTEx
ZDk4ZWYxZmRmMTk2NDNkMmFjNmI4ODY0OGU4OGM2N2JkOWRiMC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2Fzc2VydGlv
bi91dGlsLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzA4ICswLDAgQEAKLSIiIlV0aWxpdGllcyBm
b3IgYXNzZXJ0aW9uIGRlYnVnZ2luZyIiIgotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0
ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotaW1wb3J0IHBwcmludAotCi1pbXBv
cnQgX3B5dGVzdC5fY29kZQotaW1wb3J0IHB5Ci1pbXBvcnQgc2l4Ci10cnk6Ci0gICAgZnJvbSBj
b2xsZWN0aW9ucyBpbXBvcnQgU2VxdWVuY2UKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBTZXF1
ZW5jZSA9IGxpc3QKLQotCi11ID0gc2l4LnRleHRfdHlwZQotCi0jIFRoZSBfcmVwcmNvbXBhcmUg
YXR0cmlidXRlIG9uIHRoZSB1dGlsIG1vZHVsZSBpcyB1c2VkIGJ5IHRoZSBuZXcgYXNzZXJ0aW9u
Ci0jIGludGVycHJldGF0aW9uIGNvZGUgYW5kIGFzc2VydGlvbiByZXdyaXRlciB0byBkZXRlY3Qg
dGhpcyBwbHVnaW4gd2FzCi0jIGxvYWRlZCBhbmQgaW4gdHVybiBjYWxsIHRoZSBob29rcyBkZWZp
bmVkIGhlcmUgYXMgcGFydCBvZiB0aGUKLSMgRGVidWdJbnRlcnByZXRlci4KLV9yZXByY29tcGFy
ZSA9IE5vbmUKLQotCi0jIHRoZSByZS1lbmNvZGluZyBpcyBuZWVkZWQgZm9yIHB5dGhvbjIgcmVw
cgotIyB3aXRoIG5vbi1hc2NpaSBjaGFyYWN0ZXJzIChzZWUgaXNzdWUgODc3IGFuZCAxMzc5KQot
ZGVmIGVjdShzKToKLSAgICB0cnk6Ci0gICAgICAgIHJldHVybiB1KHMsICd1dGYtOCcsICdyZXBs
YWNlJykKLSAgICBleGNlcHQgVHlwZUVycm9yOgotICAgICAgICByZXR1cm4gcwotCi0KLWRlZiBm
b3JtYXRfZXhwbGFuYXRpb24oZXhwbGFuYXRpb24pOgotICAgICIiIlRoaXMgZm9ybWF0cyBhbiBl
eHBsYW5hdGlvbgotCi0gICAgTm9ybWFsbHkgYWxsIGVtYmVkZGVkIG5ld2xpbmVzIGFyZSBlc2Nh
cGVkLCBob3dldmVyIHRoZXJlIGFyZQotICAgIHRocmVlIGV4Y2VwdGlvbnM6IFxueywgXG59IGFu
ZCBcbn4uICBUaGUgZmlyc3QgdHdvIGFyZSBpbnRlbmRlZAotICAgIGNvdmVyIG5lc3RlZCBleHBs
YW5hdGlvbnMsIHNlZSBmdW5jdGlvbiBhbmQgYXR0cmlidXRlIGV4cGxhbmF0aW9ucwotICAgIGZv
ciBleGFtcGxlcyAoLnZpc2l0X0NhbGwoKSwgdmlzaXRfQXR0cmlidXRlKCkpLiAgVGhlIGxhc3Qg
b25lIGlzCi0gICAgZm9yIHdoZW4gb25lIGV4cGxhbmF0aW9uIG5lZWRzIHRvIHNwYW4gbXVsdGlw
bGUgbGluZXMsIGUuZy4gd2hlbgotICAgIGRpc3BsYXlpbmcgZGlmZnMuCi0gICAgIiIiCi0gICAg
ZXhwbGFuYXRpb24gPSBlY3UoZXhwbGFuYXRpb24pCi0gICAgbGluZXMgPSBfc3BsaXRfZXhwbGFu
YXRpb24oZXhwbGFuYXRpb24pCi0gICAgcmVzdWx0ID0gX2Zvcm1hdF9saW5lcyhsaW5lcykKLSAg
ICByZXR1cm4gdSgnXG4nKS5qb2luKHJlc3VsdCkKLQotCi1kZWYgX3NwbGl0X2V4cGxhbmF0aW9u
KGV4cGxhbmF0aW9uKToKLSAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIGluZGl2aWR1YWwgbGluZXMg
aW4gdGhlIGV4cGxhbmF0aW9uCi0KLSAgICBUaGlzIHdpbGwgcmV0dXJuIGEgbGlzdCBvZiBsaW5l
cyBzcGxpdCBvbiAnXG57JywgJ1xufScgYW5kICdcbn4nLgotICAgIEFueSBvdGhlciBuZXdsaW5l
cyB3aWxsIGJlIGVzY2FwZWQgYW5kIGFwcGVhciBpbiB0aGUgbGluZSBhcyB0aGUKLSAgICBsaXRl
cmFsICdcbicgY2hhcmFjdGVycy4KLSAgICAiIiIKLSAgICByYXdfbGluZXMgPSAoZXhwbGFuYXRp
b24gb3IgdSgnJykpLnNwbGl0KCdcbicpCi0gICAgbGluZXMgPSBbcmF3X2xpbmVzWzBdXQotICAg
IGZvciB2YWx1ZXMgaW4gcmF3X2xpbmVzWzE6XToKLSAgICAgICAgaWYgdmFsdWVzIGFuZCB2YWx1
ZXNbMF0gaW4gWyd7JywgJ30nLCAnficsICc+J106Ci0gICAgICAgICAgICBsaW5lcy5hcHBlbmQo
dmFsdWVzKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbGluZXNbLTFdICs9ICdcXG4nICsg
dmFsdWVzCi0gICAgcmV0dXJuIGxpbmVzCi0KLQotZGVmIF9mb3JtYXRfbGluZXMobGluZXMpOgot
ICAgICIiIkZvcm1hdCB0aGUgaW5kaXZpZHVhbCBsaW5lcwotCi0gICAgVGhpcyB3aWxsIHJlcGxh
Y2UgdGhlICd7JywgJ30nIGFuZCAnficgY2hhcmFjdGVycyBvZiBvdXIgbWluaQotICAgIGZvcm1h
dHRpbmcgbGFuZ3VhZ2Ugd2l0aCB0aGUgcHJvcGVyICd3aGVyZSAuLi4nLCAnYW5kIC4uLicgYW5k
ICcgKwotICAgIC4uLicgdGV4dCwgdGFraW5nIGNhcmUgb2YgaW5kZW50YXRpb24gYWxvbmcgdGhl
IHdheS4KLQotICAgIFJldHVybiBhIGxpc3Qgb2YgZm9ybWF0dGVkIGxpbmVzLgotICAgICIiIgot
ICAgIHJlc3VsdCA9IGxpbmVzWzoxXQotICAgIHN0YWNrID0gWzBdCi0gICAgc3RhY2tjbnQgPSBb
MF0KLSAgICBmb3IgbGluZSBpbiBsaW5lc1sxOl06Ci0gICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0
aCgneycpOgotICAgICAgICAgICAgaWYgc3RhY2tjbnRbLTFdOgotICAgICAgICAgICAgICAgIHMg
PSB1KCdhbmQgICAnKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzID0gdSgn
d2hlcmUgJykKLSAgICAgICAgICAgIHN0YWNrLmFwcGVuZChsZW4ocmVzdWx0KSkKLSAgICAgICAg
ICAgIHN0YWNrY250Wy0xXSArPSAxCi0gICAgICAgICAgICBzdGFja2NudC5hcHBlbmQoMCkKLSAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQodSgnICsnKSArIHUoJyAgJykgKiAobGVuKHN0YWNrKSAt
IDEpICsgcyArIGxpbmVbMTpdKQotICAgICAgICBlbGlmIGxpbmUuc3RhcnRzd2l0aCgnfScpOgot
ICAgICAgICAgICAgc3RhY2sucG9wKCkKLSAgICAgICAgICAgIHN0YWNrY250LnBvcCgpCi0gICAg
ICAgICAgICByZXN1bHRbc3RhY2tbLTFdXSArPSBsaW5lWzE6XQotICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgYXNzZXJ0IGxpbmVbMF0gaW4gWyd+JywgJz4nXQotICAgICAgICAgICAgc3RhY2tb
LTFdICs9IDEKLSAgICAgICAgICAgIGluZGVudCA9IGxlbihzdGFjaykgaWYgbGluZS5zdGFydHN3
aXRoKCd+JykgZWxzZSBsZW4oc3RhY2spIC0gMQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh1
KCcgICcpICogaW5kZW50ICsgbGluZVsxOl0pCi0gICAgYXNzZXJ0IGxlbihzdGFjaykgPT0gMQot
ICAgIHJldHVybiByZXN1bHQKLQotCi0jIFByb3ZpZGUgYmFzZXN0cmluZyBpbiBweXRob24zCi10
cnk6Ci0gICAgYmFzZXN0cmluZyA9IGJhc2VzdHJpbmcKLWV4Y2VwdCBOYW1lRXJyb3I6Ci0gICAg
YmFzZXN0cmluZyA9IHN0cgotCi0KLWRlZiBhc3NlcnRyZXByX2NvbXBhcmUoY29uZmlnLCBvcCwg
bGVmdCwgcmlnaHQpOgotICAgICIiIlJldHVybiBzcGVjaWFsaXNlZCBleHBsYW5hdGlvbnMgZm9y
IHNvbWUgb3BlcmF0b3JzL29wZXJhbmRzIiIiCi0gICAgd2lkdGggPSA4MCAtIDE1IC0gbGVuKG9w
KSAtIDIgICMgMTUgY2hhcnMgaW5kZW50YXRpb24sIDEgc3BhY2UgYXJvdW5kIG9wCi0gICAgbGVm
dF9yZXByID0gcHkuaW8uc2FmZXJlcHIobGVmdCwgbWF4c2l6ZT1pbnQod2lkdGggLy8gMikpCi0g
ICAgcmlnaHRfcmVwciA9IHB5LmlvLnNhZmVyZXByKHJpZ2h0LCBtYXhzaXplPXdpZHRoIC0gbGVu
KGxlZnRfcmVwcikpCi0KLSAgICBzdW1tYXJ5ID0gdSgnJXMgJXMgJXMnKSAlIChlY3UobGVmdF9y
ZXByKSwgb3AsIGVjdShyaWdodF9yZXByKSkKLQotICAgIGRlZiBpc3NlcXVlbmNlKHgpOgotICAg
ICAgICByZXR1cm4gKGlzaW5zdGFuY2UoeCwgKGxpc3QsIHR1cGxlLCBTZXF1ZW5jZSkpIGFuZCBu
b3QgaXNpbnN0YW5jZSh4LCBiYXNlc3RyaW5nKSkKLQotICAgIGRlZiBpc3RleHQoeCk6Ci0gICAg
ICAgIHJldHVybiBpc2luc3RhbmNlKHgsIGJhc2VzdHJpbmcpCi0KLSAgICBkZWYgaXNkaWN0KHgp
OgotICAgICAgICByZXR1cm4gaXNpbnN0YW5jZSh4LCBkaWN0KQotCi0gICAgZGVmIGlzc2V0KHgp
OgotICAgICAgICByZXR1cm4gaXNpbnN0YW5jZSh4LCAoc2V0LCBmcm96ZW5zZXQpKQotCi0gICAg
ZGVmIGlzaXRlcmFibGUob2JqKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaXRlcihvYmop
Ci0gICAgICAgICAgICByZXR1cm4gbm90IGlzdGV4dChvYmopCi0gICAgICAgIGV4Y2VwdCBUeXBl
RXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgIHZlcmJvc2UgPSBjb25maWcu
Z2V0b3B0aW9uKCd2ZXJib3NlJykKLSAgICBleHBsYW5hdGlvbiA9IE5vbmUKLSAgICB0cnk6Ci0g
ICAgICAgIGlmIG9wID09ICc9PSc6Ci0gICAgICAgICAgICBpZiBpc3RleHQobGVmdCkgYW5kIGlz
dGV4dChyaWdodCk6Ci0gICAgICAgICAgICAgICAgZXhwbGFuYXRpb24gPSBfZGlmZl90ZXh0KGxl
ZnQsIHJpZ2h0LCB2ZXJib3NlKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBp
ZiBpc3NlcXVlbmNlKGxlZnQpIGFuZCBpc3NlcXVlbmNlKHJpZ2h0KToKLSAgICAgICAgICAgICAg
ICAgICAgZXhwbGFuYXRpb24gPSBfY29tcGFyZV9lcV9zZXF1ZW5jZShsZWZ0LCByaWdodCwgdmVy
Ym9zZSkKLSAgICAgICAgICAgICAgICBlbGlmIGlzc2V0KGxlZnQpIGFuZCBpc3NldChyaWdodCk6
Ci0gICAgICAgICAgICAgICAgICAgIGV4cGxhbmF0aW9uID0gX2NvbXBhcmVfZXFfc2V0KGxlZnQs
IHJpZ2h0LCB2ZXJib3NlKQotICAgICAgICAgICAgICAgIGVsaWYgaXNkaWN0KGxlZnQpIGFuZCBp
c2RpY3QocmlnaHQpOgotICAgICAgICAgICAgICAgICAgICBleHBsYW5hdGlvbiA9IF9jb21wYXJl
X2VxX2RpY3QobGVmdCwgcmlnaHQsIHZlcmJvc2UpCi0gICAgICAgICAgICAgICAgaWYgaXNpdGVy
YWJsZShsZWZ0KSBhbmQgaXNpdGVyYWJsZShyaWdodCk6Ci0gICAgICAgICAgICAgICAgICAgIGV4
cGwgPSBfY29tcGFyZV9lcV9pdGVyYWJsZShsZWZ0LCByaWdodCwgdmVyYm9zZSkKLSAgICAgICAg
ICAgICAgICAgICAgaWYgZXhwbGFuYXRpb24gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBleHBsYW5hdGlvbi5leHRlbmQoZXhwbCkKLSAgICAgICAgICAgICAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4cGxhbmF0aW9uID0gZXhwbAotICAgICAgICBl
bGlmIG9wID09ICdub3QgaW4nOgotICAgICAgICAgICAgaWYgaXN0ZXh0KGxlZnQpIGFuZCBpc3Rl
eHQocmlnaHQpOgotICAgICAgICAgICAgICAgIGV4cGxhbmF0aW9uID0gX25vdGluX3RleHQobGVm
dCwgcmlnaHQsIHZlcmJvc2UpCi0gICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgZXhwbGFu
YXRpb24gPSBbCi0gICAgICAgICAgICB1KCcocHl0ZXN0X2Fzc2VydGlvbiBwbHVnaW46IHJlcHJl
c2VudGF0aW9uIG9mIGRldGFpbHMgZmFpbGVkLiAgJwotICAgICAgICAgICAgICAnUHJvYmFibHkg
YW4gb2JqZWN0IGhhcyBhIGZhdWx0eSBfX3JlcHJfXy4pJyksCi0gICAgICAgICAgICB1KF9weXRl
c3QuX2NvZGUuRXhjZXB0aW9uSW5mbygpKV0KLQotICAgIGlmIG5vdCBleHBsYW5hdGlvbjoKLSAg
ICAgICAgcmV0dXJuIE5vbmUKLQotICAgIHJldHVybiBbc3VtbWFyeV0gKyBleHBsYW5hdGlvbgot
Ci0KLWRlZiBfZGlmZl90ZXh0KGxlZnQsIHJpZ2h0LCB2ZXJib3NlPUZhbHNlKToKLSAgICAiIiJS
ZXR1cm4gdGhlIGV4cGxhbmF0aW9uIGZvciB0aGUgZGlmZiBiZXR3ZWVuIHRleHQgb3IgYnl0ZXMK
LQotICAgIFVubGVzcyAtLXZlcmJvc2UgaXMgdXNlZCB0aGlzIHdpbGwgc2tpcCBsZWFkaW5nIGFu
ZCB0cmFpbGluZwotICAgIGNoYXJhY3RlcnMgd2hpY2ggYXJlIGlkZW50aWNhbCB0byBrZWVwIHRo
ZSBkaWZmIG1pbmltYWwuCi0KLSAgICBJZiB0aGUgaW5wdXQgYXJlIGJ5dGVzIHRoZXkgd2lsbCBi
ZSBzYWZlbHkgY29udmVydGVkIHRvIHRleHQuCi0gICAgIiIiCi0gICAgZnJvbSBkaWZmbGliIGlt
cG9ydCBuZGlmZgotICAgIGV4cGxhbmF0aW9uID0gW10KLSAgICBpZiBpc2luc3RhbmNlKGxlZnQs
IHNpeC5iaW5hcnlfdHlwZSk6Ci0gICAgICAgIGxlZnQgPSB1KHJlcHIobGVmdClbMTotMV0pLnJl
cGxhY2UocidcbicsICdcbicpCi0gICAgaWYgaXNpbnN0YW5jZShyaWdodCwgc2l4LmJpbmFyeV90
eXBlKToKLSAgICAgICAgcmlnaHQgPSB1KHJlcHIocmlnaHQpWzE6LTFdKS5yZXBsYWNlKHInXG4n
LCAnXG4nKQotICAgIGlmIG5vdCB2ZXJib3NlOgotICAgICAgICBpID0gMCAgIyBqdXN0IGluIGNh
c2UgbGVmdCBvciByaWdodCBoYXMgemVybyBsZW5ndGgKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2Uo
bWluKGxlbihsZWZ0KSwgbGVuKHJpZ2h0KSkpOgotICAgICAgICAgICAgaWYgbGVmdFtpXSAhPSBy
aWdodFtpXToKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBpZiBpID4gNDI6Ci0gICAg
ICAgICAgICBpIC09IDEwICAgICAgICAgICAgICAgICAjIFByb3ZpZGUgc29tZSBjb250ZXh0Ci0g
ICAgICAgICAgICBleHBsYW5hdGlvbiA9IFt1KCdTa2lwcGluZyAlcyBpZGVudGljYWwgbGVhZGlu
ZyAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzIGluIGRpZmYsIHVz
ZSAtdiB0byBzaG93JykgJSBpXQotICAgICAgICAgICAgbGVmdCA9IGxlZnRbaTpdCi0gICAgICAg
ICAgICByaWdodCA9IHJpZ2h0W2k6XQotICAgICAgICBpZiBsZW4obGVmdCkgPT0gbGVuKHJpZ2h0
KToKLSAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihsZWZ0KSk6Ci0gICAgICAgICAgICAg
ICAgaWYgbGVmdFstaV0gIT0gcmlnaHRbLWldOgotICAgICAgICAgICAgICAgICAgICBicmVhawot
ICAgICAgICAgICAgaWYgaSA+IDQyOgotICAgICAgICAgICAgICAgIGkgLT0gMTAgICAgICMgUHJv
dmlkZSBzb21lIGNvbnRleHQKLSAgICAgICAgICAgICAgICBleHBsYW5hdGlvbiArPSBbdSgnU2tp
cHBpbmcgJXMgaWRlbnRpY2FsIHRyYWlsaW5nICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnY2hhcmFjdGVycyBpbiBkaWZmLCB1c2UgLXYgdG8gc2hvdycpICUgaV0KLSAgICAg
ICAgICAgICAgICBsZWZ0ID0gbGVmdFs6LWldCi0gICAgICAgICAgICAgICAgcmlnaHQgPSByaWdo
dFs6LWldCi0gICAga2VlcGVuZHMgPSBUcnVlCi0gICAgZXhwbGFuYXRpb24gKz0gW2xpbmUuc3Ry
aXAoJ1xuJykKLSAgICAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gbmRpZmYobGVmdC5zcGxp
dGxpbmVzKGtlZXBlbmRzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmlnaHQuc3BsaXRsaW5lcyhrZWVwZW5kcykpXQotICAgIHJldHVybiBleHBsYW5hdGlvbgotCi0K
LWRlZiBfY29tcGFyZV9lcV9pdGVyYWJsZShsZWZ0LCByaWdodCwgdmVyYm9zZT1GYWxzZSk6Ci0g
ICAgaWYgbm90IHZlcmJvc2U6Ci0gICAgICAgIHJldHVybiBbdSgnVXNlIC12IHRvIGdldCB0aGUg
ZnVsbCBkaWZmJyldCi0gICAgIyBkeW5hbWljIGltcG9ydCB0byBzcGVlZHVwIHB5dGVzdAotICAg
IGltcG9ydCBkaWZmbGliCi0KLSAgICB0cnk6Ci0gICAgICAgIGxlZnRfZm9ybWF0dGluZyA9IHBw
cmludC5wZm9ybWF0KGxlZnQpLnNwbGl0bGluZXMoKQotICAgICAgICByaWdodF9mb3JtYXR0aW5n
ID0gcHByaW50LnBmb3JtYXQocmlnaHQpLnNwbGl0bGluZXMoKQotICAgICAgICBleHBsYW5hdGlv
biA9IFt1KCdGdWxsIGRpZmY6JyldCi0gICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgIyBo
YWNrOiBQcmV0dHlQcmludGVyLnBmb3JtYXQoKSBpbiBweXRob24gMiBmYWlscyB3aGVuIGZvcm1h
dHRpbmcgaXRlbXMgdGhhdCBjYW4ndCBiZSBzb3J0ZWQoKSwgaWUsIGNhbGxpbmcKLSAgICAgICAg
IyBzb3J0ZWQoKSBvbiBhIGxpc3Qgd291bGQgcmFpc2UuIFNlZSBpc3N1ZSAjNzE4LgotICAgICAg
ICAjIEFzIGEgd29ya2Fyb3VuZCwgdGhlIGZ1bGwgZGlmZiBpcyBnZW5lcmF0ZWQgYnkgdXNpbmcg
dGhlIHJlcHIoKSBzdHJpbmcgb2YgZWFjaCBpdGVtIG9mIGVhY2ggY29udGFpbmVyLgotICAgICAg
ICBsZWZ0X2Zvcm1hdHRpbmcgPSBzb3J0ZWQocmVwcih4KSBmb3IgeCBpbiBsZWZ0KQotICAgICAg
ICByaWdodF9mb3JtYXR0aW5nID0gc29ydGVkKHJlcHIoeCkgZm9yIHggaW4gcmlnaHQpCi0gICAg
ICAgIGV4cGxhbmF0aW9uID0gW3UoJ0Z1bGwgZGlmZiAoZmFsbGJhY2sgdG8gY2FsbGluZyByZXBy
IG9uIGVhY2ggaXRlbSk6JyldCi0gICAgZXhwbGFuYXRpb24uZXh0ZW5kKGxpbmUuc3RyaXAoKSBm
b3IgbGluZSBpbiBkaWZmbGliLm5kaWZmKGxlZnRfZm9ybWF0dGluZywgcmlnaHRfZm9ybWF0dGlu
ZykpCi0gICAgcmV0dXJuIGV4cGxhbmF0aW9uCi0KLQotZGVmIF9jb21wYXJlX2VxX3NlcXVlbmNl
KGxlZnQsIHJpZ2h0LCB2ZXJib3NlPUZhbHNlKToKLSAgICBleHBsYW5hdGlvbiA9IFtdCi0gICAg
Zm9yIGkgaW4gcmFuZ2UobWluKGxlbihsZWZ0KSwgbGVuKHJpZ2h0KSkpOgotICAgICAgICBpZiBs
ZWZ0W2ldICE9IHJpZ2h0W2ldOgotICAgICAgICAgICAgZXhwbGFuYXRpb24gKz0gW3UoJ0F0IGlu
ZGV4ICVzIGRpZmY6ICVyICE9ICVyJykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChp
LCBsZWZ0W2ldLCByaWdodFtpXSldCi0gICAgICAgICAgICBicmVhawotICAgIGlmIGxlbihsZWZ0
KSA+IGxlbihyaWdodCk6Ci0gICAgICAgIGV4cGxhbmF0aW9uICs9IFt1KCdMZWZ0IGNvbnRhaW5z
IG1vcmUgaXRlbXMsIGZpcnN0IGV4dHJhIGl0ZW06ICVzJykKLSAgICAgICAgICAgICAgICAgICAg
ICAgICUgcHkuaW8uc2FmZXJlcHIobGVmdFtsZW4ocmlnaHQpXSwpXQotICAgIGVsaWYgbGVuKGxl
ZnQpIDwgbGVuKHJpZ2h0KToKLSAgICAgICAgZXhwbGFuYXRpb24gKz0gWwotICAgICAgICAgICAg
dSgnUmlnaHQgY29udGFpbnMgbW9yZSBpdGVtcywgZmlyc3QgZXh0cmEgaXRlbTogJXMnKSAlCi0g
ICAgICAgICAgICBweS5pby5zYWZlcmVwcihyaWdodFtsZW4obGVmdCldLCldCi0gICAgcmV0dXJu
IGV4cGxhbmF0aW9uCi0KLQotZGVmIF9jb21wYXJlX2VxX3NldChsZWZ0LCByaWdodCwgdmVyYm9z
ZT1GYWxzZSk6Ci0gICAgZXhwbGFuYXRpb24gPSBbXQotICAgIGRpZmZfbGVmdCA9IGxlZnQgLSBy
aWdodAotICAgIGRpZmZfcmlnaHQgPSByaWdodCAtIGxlZnQKLSAgICBpZiBkaWZmX2xlZnQ6Ci0g
ICAgICAgIGV4cGxhbmF0aW9uLmFwcGVuZCh1KCdFeHRyYSBpdGVtcyBpbiB0aGUgbGVmdCBzZXQ6
JykpCi0gICAgICAgIGZvciBpdGVtIGluIGRpZmZfbGVmdDoKLSAgICAgICAgICAgIGV4cGxhbmF0
aW9uLmFwcGVuZChweS5pby5zYWZlcmVwcihpdGVtKSkKLSAgICBpZiBkaWZmX3JpZ2h0OgotICAg
ICAgICBleHBsYW5hdGlvbi5hcHBlbmQodSgnRXh0cmEgaXRlbXMgaW4gdGhlIHJpZ2h0IHNldDon
KSkKLSAgICAgICAgZm9yIGl0ZW0gaW4gZGlmZl9yaWdodDoKLSAgICAgICAgICAgIGV4cGxhbmF0
aW9uLmFwcGVuZChweS5pby5zYWZlcmVwcihpdGVtKSkKLSAgICByZXR1cm4gZXhwbGFuYXRpb24K
LQotCi1kZWYgX2NvbXBhcmVfZXFfZGljdChsZWZ0LCByaWdodCwgdmVyYm9zZT1GYWxzZSk6Ci0g
ICAgZXhwbGFuYXRpb24gPSBbXQotICAgIGNvbW1vbiA9IHNldChsZWZ0KS5pbnRlcnNlY3Rpb24o
c2V0KHJpZ2h0KSkKLSAgICBzYW1lID0gZGljdCgoaywgbGVmdFtrXSkgZm9yIGsgaW4gY29tbW9u
IGlmIGxlZnRba10gPT0gcmlnaHRba10pCi0gICAgaWYgc2FtZSBhbmQgdmVyYm9zZSA8IDI6Ci0g
ICAgICAgIGV4cGxhbmF0aW9uICs9IFt1KCdPbWl0dGluZyAlcyBpZGVudGljYWwgaXRlbXMsIHVz
ZSAtdnYgdG8gc2hvdycpICUKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlbihzYW1lKV0KLSAg
ICBlbGlmIHNhbWU6Ci0gICAgICAgIGV4cGxhbmF0aW9uICs9IFt1KCdDb21tb24gaXRlbXM6Jyld
Ci0gICAgICAgIGV4cGxhbmF0aW9uICs9IHBwcmludC5wZm9ybWF0KHNhbWUpLnNwbGl0bGluZXMo
KQotICAgIGRpZmYgPSBzZXQoayBmb3IgayBpbiBjb21tb24gaWYgbGVmdFtrXSAhPSByaWdodFtr
XSkKLSAgICBpZiBkaWZmOgotICAgICAgICBleHBsYW5hdGlvbiArPSBbdSgnRGlmZmVyaW5nIGl0
ZW1zOicpXQotICAgICAgICBmb3IgayBpbiBkaWZmOgotICAgICAgICAgICAgZXhwbGFuYXRpb24g
Kz0gW3B5LmlvLnNhZmVyZXByKHtrOiBsZWZ0W2tdfSkgKyAnICE9ICcgKwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHB5LmlvLnNhZmVyZXByKHtrOiByaWdodFtrXX0pXQotICAgIGV4dHJh
X2xlZnQgPSBzZXQobGVmdCkgLSBzZXQocmlnaHQpCi0gICAgaWYgZXh0cmFfbGVmdDoKLSAgICAg
ICAgZXhwbGFuYXRpb24uYXBwZW5kKHUoJ0xlZnQgY29udGFpbnMgbW9yZSBpdGVtczonKSkKLSAg
ICAgICAgZXhwbGFuYXRpb24uZXh0ZW5kKHBwcmludC5wZm9ybWF0KAotICAgICAgICAgICAgZGlj
dCgoaywgbGVmdFtrXSkgZm9yIGsgaW4gZXh0cmFfbGVmdCkpLnNwbGl0bGluZXMoKSkKLSAgICBl
eHRyYV9yaWdodCA9IHNldChyaWdodCkgLSBzZXQobGVmdCkKLSAgICBpZiBleHRyYV9yaWdodDoK
LSAgICAgICAgZXhwbGFuYXRpb24uYXBwZW5kKHUoJ1JpZ2h0IGNvbnRhaW5zIG1vcmUgaXRlbXM6
JykpCi0gICAgICAgIGV4cGxhbmF0aW9uLmV4dGVuZChwcHJpbnQucGZvcm1hdCgKLSAgICAgICAg
ICAgIGRpY3QoKGssIHJpZ2h0W2tdKSBmb3IgayBpbiBleHRyYV9yaWdodCkpLnNwbGl0bGluZXMo
KSkKLSAgICByZXR1cm4gZXhwbGFuYXRpb24KLQotCi1kZWYgX25vdGluX3RleHQodGVybSwgdGV4
dCwgdmVyYm9zZT1GYWxzZSk6Ci0gICAgaW5kZXggPSB0ZXh0LmZpbmQodGVybSkKLSAgICBoZWFk
ID0gdGV4dFs6aW5kZXhdCi0gICAgdGFpbCA9IHRleHRbaW5kZXggKyBsZW4odGVybSk6XQotICAg
IGNvcnJlY3RfdGV4dCA9IGhlYWQgKyB0YWlsCi0gICAgZGlmZiA9IF9kaWZmX3RleHQoY29ycmVj
dF90ZXh0LCB0ZXh0LCB2ZXJib3NlKQotICAgIG5ld2RpZmYgPSBbdSgnJXMgaXMgY29udGFpbmVk
IGhlcmU6JykgJSBweS5pby5zYWZlcmVwcih0ZXJtLCBtYXhzaXplPTQyKV0KLSAgICBmb3IgbGlu
ZSBpbiBkaWZmOgotICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgodSgnU2tpcHBpbmcnKSk6Ci0g
ICAgICAgICAgICBjb250aW51ZQotICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgodSgnLSAnKSk6
Ci0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgodSgnKyAn
KSk6Ci0gICAgICAgICAgICBuZXdkaWZmLmFwcGVuZCh1KCcgICcpICsgbGluZVsyOl0pCi0gICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICBuZXdkaWZmLmFwcGVuZChsaW5lKQotICAgIHJldHVybiBu
ZXdkaWZmCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2Fzc2VydGlvbi93M2MtaW1w
b3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvYXNzZXJ0aW9uL3czYy1pbXBvcnQubG9nCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMTMwN2QzYWJjNzIxNThmNDFkNjQ0MmNmZDU5
MWUxYjA1ZjljYWNmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L19weXRlc3QvYXNzZXJ0aW9uL3czYy1pbXBvcnQubG9nCisrKyAvZGV2
L251bGwKQEAgLTEsMjAgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUg
aW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRl
c3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBv
biB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cwotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdl
YktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0K
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgot
Tm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9hc3Nl
cnRpb24vX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2Fzc2VydGlvbi9yZXdyaXRl
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9hc3NlcnRpb24vdHJ1bmNhdGUucHkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9fcHl0ZXN0L2Fzc2VydGlvbi91dGlsLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9f
cHl0ZXN0L2NhY2hlcHJvdmlkZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2NhY2hlcHJvdmlk
ZXIucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1MzdjMTQ0NzJiMWNlOTE2OWNm
ZTc2MjkwMTU4ODRiMGU0ZTNlNGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9jYWNoZXByb3ZpZGVyLnB5CisrKyAvZGV2
L251bGwKQEAgLTEsMjYwICswLDAgQEAKLSIiIgotbWVyZ2VkIGltcGxlbWVudGF0aW9uIG9mIHRo
ZSBjYWNoZSBwcm92aWRlcgotCi10aGUgbmFtZSBjYWNoZSB3YXMgbm90IGNob3NlbiB0byBlbnN1
cmUgcGx1Z2d5IGF1dG9tYXRpY2FsbHkKLWlnbm9yZXMgdGhlIGV4dGVybmFsIHB5dGVzdC1jYWNo
ZQotIiIiCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24s
IHByaW50X2Z1bmN0aW9uCi1pbXBvcnQgcHkKLWltcG9ydCBweXRlc3QKLWltcG9ydCBqc29uCi1p
bXBvcnQgb3MKLWZyb20gb3MucGF0aCBpbXBvcnQgc2VwIGFzIF9zZXAsIGFsdHNlcCBhcyBfYWx0
c2VwCi0KLQotY2xhc3MgQ2FjaGUob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgY29u
ZmlnKToKLSAgICAgICAgc2VsZi5jb25maWcgPSBjb25maWcKLSAgICAgICAgc2VsZi5fY2FjaGVk
aXIgPSBDYWNoZS5jYWNoZV9kaXJfZnJvbV9jb25maWcoY29uZmlnKQotICAgICAgICBzZWxmLnRy
YWNlID0gY29uZmlnLnRyYWNlLnJvb3QuZ2V0KCJjYWNoZSIpCi0gICAgICAgIGlmIGNvbmZpZy5n
ZXR2YWx1ZSgiY2FjaGVjbGVhciIpOgotICAgICAgICAgICAgc2VsZi50cmFjZSgiY2xlYXJpbmcg
Y2FjaGVkaXIiKQotICAgICAgICAgICAgaWYgc2VsZi5fY2FjaGVkaXIuY2hlY2soKToKLSAgICAg
ICAgICAgICAgICBzZWxmLl9jYWNoZWRpci5yZW1vdmUoKQotICAgICAgICAgICAgc2VsZi5fY2Fj
aGVkaXIubWtkaXIoKQotCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBjYWNoZV9kaXJfZnJv
bV9jb25maWcoY29uZmlnKToKLSAgICAgICAgY2FjaGVfZGlyID0gY29uZmlnLmdldGluaSgiY2Fj
aGVfZGlyIikKLSAgICAgICAgY2FjaGVfZGlyID0gb3MucGF0aC5leHBhbmR1c2VyKGNhY2hlX2Rp
cikKLSAgICAgICAgY2FjaGVfZGlyID0gb3MucGF0aC5leHBhbmR2YXJzKGNhY2hlX2RpcikKLSAg
ICAgICAgaWYgb3MucGF0aC5pc2FicyhjYWNoZV9kaXIpOgotICAgICAgICAgICAgcmV0dXJuIHB5
LnBhdGgubG9jYWwoY2FjaGVfZGlyKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJu
IGNvbmZpZy5yb290ZGlyLmpvaW4oY2FjaGVfZGlyKQotCi0gICAgZGVmIG1ha2VkaXIoc2VsZiwg
bmFtZSk6Ci0gICAgICAgICIiIiByZXR1cm4gYSBkaXJlY3RvcnkgcGF0aCBvYmplY3Qgd2l0aCB0
aGUgZ2l2ZW4gbmFtZS4gIElmIHRoZQotICAgICAgICBkaXJlY3RvcnkgZG9lcyBub3QgeWV0IGV4
aXN0LCBpdCB3aWxsIGJlIGNyZWF0ZWQuICBZb3UgY2FuIHVzZSBpdAotICAgICAgICB0byBtYW5h
Z2UgZmlsZXMgbGlrZXMgZS4gZy4gc3RvcmUvcmV0cmlldmUgZGF0YWJhc2UKLSAgICAgICAgZHVt
cHMgYWNyb3NzIHRlc3Qgc2Vzc2lvbnMuCi0KLSAgICAgICAgOnBhcmFtIG5hbWU6IG11c3QgYmUg
YSBzdHJpbmcgbm90IGNvbnRhaW5pbmcgYSBgYC9gYCBzZXBhcmF0b3IuCi0gICAgICAgICAgICAg
TWFrZSBzdXJlIHRoZSBuYW1lIGNvbnRhaW5zIHlvdXIgcGx1Z2luIG9yIGFwcGxpY2F0aW9uCi0g
ICAgICAgICAgICAgaWRlbnRpZmllcnMgdG8gcHJldmVudCBjbGFzaGVzIHdpdGggb3RoZXIgY2Fj
aGUgdXNlcnMuCi0gICAgICAgICIiIgotICAgICAgICBpZiBfc2VwIGluIG5hbWUgb3IgX2FsdHNl
cCBpcyBub3QgTm9uZSBhbmQgX2FsdHNlcCBpbiBuYW1lOgotICAgICAgICAgICAgcmFpc2UgVmFs
dWVFcnJvcigibmFtZSBpcyBub3QgYWxsb3dlZCB0byBjb250YWluIHBhdGggc2VwYXJhdG9ycyIp
Ci0gICAgICAgIHJldHVybiBzZWxmLl9jYWNoZWRpci5lbnN1cmVfZGlyKCJkIiwgbmFtZSkKLQot
ICAgIGRlZiBfZ2V0dmFsdWVwYXRoKHNlbGYsIGtleSk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9j
YWNoZWRpci5qb2luKCd2JywgKmtleS5zcGxpdCgnLycpKQotCi0gICAgZGVmIGdldChzZWxmLCBr
ZXksIGRlZmF1bHQpOgotICAgICAgICAiIiIgcmV0dXJuIGNhY2hlZCB2YWx1ZSBmb3IgdGhlIGdp
dmVuIGtleS4gIElmIG5vIHZhbHVlCi0gICAgICAgIHdhcyB5ZXQgY2FjaGVkIG9yIHRoZSB2YWx1
ZSBjYW5ub3QgYmUgcmVhZCwgdGhlIHNwZWNpZmllZAotICAgICAgICBkZWZhdWx0IGlzIHJldHVy
bmVkLgotCi0gICAgICAgIDpwYXJhbSBrZXk6IG11c3QgYmUgYSBgYC9gYCBzZXBhcmF0ZWQgdmFs
dWUuIFVzdWFsbHkgdGhlIGZpcnN0Ci0gICAgICAgICAgICAgbmFtZSBpcyB0aGUgbmFtZSBvZiB5
b3VyIHBsdWdpbiBvciB5b3VyIGFwcGxpY2F0aW9uLgotICAgICAgICA6cGFyYW0gZGVmYXVsdDog
bXVzdCBiZSBwcm92aWRlZCBpbiBjYXNlIG9mIGEgY2FjaGUtbWlzcyBvcgotICAgICAgICAgICAg
IGludmFsaWQgY2FjaGUgdmFsdWVzLgotCi0gICAgICAgICIiIgotICAgICAgICBwYXRoID0gc2Vs
Zi5fZ2V0dmFsdWVwYXRoKGtleSkKLSAgICAgICAgaWYgcGF0aC5jaGVjaygpOgotICAgICAgICAg
ICAgdHJ5OgotICAgICAgICAgICAgICAgIHdpdGggcGF0aC5vcGVuKCJyIikgYXMgZjoKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGpzb24ubG9hZChmKQotICAgICAgICAgICAgZXhjZXB0IFZh
bHVlRXJyb3I6Ci0gICAgICAgICAgICAgICAgc2VsZi50cmFjZSgiY2FjaGUtaW52YWxpZCBhdCAl
cyIgJSAocGF0aCwpKQotICAgICAgICByZXR1cm4gZGVmYXVsdAotCi0gICAgZGVmIHNldChzZWxm
LCBrZXksIHZhbHVlKToKLSAgICAgICAgIiIiIHNhdmUgdmFsdWUgZm9yIHRoZSBnaXZlbiBrZXku
Ci0KLSAgICAgICAgOnBhcmFtIGtleTogbXVzdCBiZSBhIGBgL2BgIHNlcGFyYXRlZCB2YWx1ZS4g
VXN1YWxseSB0aGUgZmlyc3QKLSAgICAgICAgICAgICBuYW1lIGlzIHRoZSBuYW1lIG9mIHlvdXIg
cGx1Z2luIG9yIHlvdXIgYXBwbGljYXRpb24uCi0gICAgICAgIDpwYXJhbSB2YWx1ZTogbXVzdCBi
ZSBvZiBhbnkgY29tYmluYXRpb24gb2YgYmFzaWMKLSAgICAgICAgICAgICAgIHB5dGhvbiB0eXBl
cywgaW5jbHVkaW5nIG5lc3RlZCB0eXBlcwotICAgICAgICAgICAgICAgbGlrZSBlLiBnLiBsaXN0
cyBvZiBkaWN0aW9uYXJpZXMuCi0gICAgICAgICIiIgotICAgICAgICBwYXRoID0gc2VsZi5fZ2V0
dmFsdWVwYXRoKGtleSkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcGF0aC5kaXJwYXRoKCku
ZW5zdXJlX2RpcigpCi0gICAgICAgIGV4Y2VwdCAocHkuZXJyb3IuRUVYSVNULCBweS5lcnJvci5F
QUNDRVMpOgotICAgICAgICAgICAgc2VsZi5jb25maWcud2FybigKLSAgICAgICAgICAgICAgICBj
b2RlPSdJOScsIG1lc3NhZ2U9J2NvdWxkIG5vdCBjcmVhdGUgY2FjaGUgcGF0aCAlcycgJSAocGF0
aCwpCi0gICAgICAgICAgICApCi0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgZiA9IHBhdGgub3BlbigndycpCi0gICAgICAgIGV4Y2VwdCBweS5lcnJvci5FTk9U
RElSOgotICAgICAgICAgICAgc2VsZi5jb25maWcud2FybigKLSAgICAgICAgICAgICAgICBjb2Rl
PSdJOScsIG1lc3NhZ2U9J2NhY2hlIGNvdWxkIG5vdCB3cml0ZSBwYXRoICVzJyAlIChwYXRoLCkp
Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB3aXRoIGY6Ci0gICAgICAgICAgICAgICAgc2Vs
Zi50cmFjZSgiY2FjaGUtd3JpdGUgJXM6ICVyIiAlIChrZXksIHZhbHVlLCkpCi0gICAgICAgICAg
ICAgICAganNvbi5kdW1wKHZhbHVlLCBmLCBpbmRlbnQ9Miwgc29ydF9rZXlzPVRydWUpCi0KLQot
Y2xhc3MgTEZQbHVnaW46Ci0gICAgIiIiIFBsdWdpbiB3aGljaCBpbXBsZW1lbnRzIHRoZSAtLWxm
IChydW4gbGFzdC1mYWlsaW5nKSBvcHRpb24gIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwg
Y29uZmlnKToKLSAgICAgICAgc2VsZi5jb25maWcgPSBjb25maWcKLSAgICAgICAgYWN0aXZlX2tl
eXMgPSAnbGYnLCAnZmFpbGVkZmlyc3QnCi0gICAgICAgIHNlbGYuYWN0aXZlID0gYW55KGNvbmZp
Zy5nZXR2YWx1ZShrZXkpIGZvciBrZXkgaW4gYWN0aXZlX2tleXMpCi0gICAgICAgIHNlbGYubGFz
dGZhaWxlZCA9IGNvbmZpZy5jYWNoZS5nZXQoImNhY2hlL2xhc3RmYWlsZWQiLCB7fSkKLSAgICAg
ICAgc2VsZi5fcHJldmlvdXNseV9mYWlsZWRfY291bnQgPSBOb25lCi0KLSAgICBkZWYgcHl0ZXN0
X3JlcG9ydF9jb2xsZWN0aW9uZmluaXNoKHNlbGYpOgotICAgICAgICBpZiBzZWxmLmFjdGl2ZToK
LSAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9wcmV2aW91c2x5X2ZhaWxlZF9jb3VudDoKLSAgICAg
ICAgICAgICAgICBtb2RlID0gInJ1biBhbGwgKG5vIHJlY29yZGVkIGZhaWx1cmVzKSIKLSAgICAg
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbm91biA9ICdmYWlsdXJlJyBpZiBzZWxmLl9w
cmV2aW91c2x5X2ZhaWxlZF9jb3VudCA9PSAxIGVsc2UgJ2ZhaWx1cmVzJwotICAgICAgICAgICAg
ICAgIHN1ZmZpeCA9ICIgZmlyc3QiIGlmIHNlbGYuY29uZmlnLmdldHZhbHVlKCJmYWlsZWRmaXJz
dCIpIGVsc2UgIiIKLSAgICAgICAgICAgICAgICBtb2RlID0gInJlcnVuIHByZXZpb3VzIHtjb3Vu
dH0ge25vdW59e3N1ZmZpeH0iLmZvcm1hdCgKLSAgICAgICAgICAgICAgICAgICAgY291bnQ9c2Vs
Zi5fcHJldmlvdXNseV9mYWlsZWRfY291bnQsIHN1ZmZpeD1zdWZmaXgsIG5vdW49bm91bgotICAg
ICAgICAgICAgICAgICkKLSAgICAgICAgICAgIHJldHVybiAicnVuLWxhc3QtZmFpbHVyZTogJXMi
ICUgbW9kZQotCi0gICAgZGVmIHB5dGVzdF9ydW50ZXN0X2xvZ3JlcG9ydChzZWxmLCByZXBvcnQp
OgotICAgICAgICBpZiAocmVwb3J0LndoZW4gPT0gJ2NhbGwnIGFuZCByZXBvcnQucGFzc2VkKSBv
ciByZXBvcnQuc2tpcHBlZDoKLSAgICAgICAgICAgIHNlbGYubGFzdGZhaWxlZC5wb3AocmVwb3J0
Lm5vZGVpZCwgTm9uZSkKLSAgICAgICAgZWxpZiByZXBvcnQuZmFpbGVkOgotICAgICAgICAgICAg
c2VsZi5sYXN0ZmFpbGVkW3JlcG9ydC5ub2RlaWRdID0gVHJ1ZQotCi0gICAgZGVmIHB5dGVzdF9j
b2xsZWN0cmVwb3J0KHNlbGYsIHJlcG9ydCk6Ci0gICAgICAgIHBhc3NlZCA9IHJlcG9ydC5vdXRj
b21lIGluICgncGFzc2VkJywgJ3NraXBwZWQnKQotICAgICAgICBpZiBwYXNzZWQ6Ci0gICAgICAg
ICAgICBpZiByZXBvcnQubm9kZWlkIGluIHNlbGYubGFzdGZhaWxlZDoKLSAgICAgICAgICAgICAg
ICBzZWxmLmxhc3RmYWlsZWQucG9wKHJlcG9ydC5ub2RlaWQpCi0gICAgICAgICAgICAgICAgc2Vs
Zi5sYXN0ZmFpbGVkLnVwZGF0ZSgKLSAgICAgICAgICAgICAgICAgICAgKGl0ZW0ubm9kZWlkLCBU
cnVlKQotICAgICAgICAgICAgICAgICAgICBmb3IgaXRlbSBpbiByZXBvcnQucmVzdWx0KQotICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5sYXN0ZmFpbGVkW3JlcG9ydC5ub2RlaWRdID0g
VHJ1ZQotCi0gICAgZGVmIHB5dGVzdF9jb2xsZWN0aW9uX21vZGlmeWl0ZW1zKHNlbGYsIHNlc3Np
b24sIGNvbmZpZywgaXRlbXMpOgotICAgICAgICBpZiBzZWxmLmFjdGl2ZSBhbmQgc2VsZi5sYXN0
ZmFpbGVkOgotICAgICAgICAgICAgcHJldmlvdXNseV9mYWlsZWQgPSBbXQotICAgICAgICAgICAg
cHJldmlvdXNseV9wYXNzZWQgPSBbXQotICAgICAgICAgICAgZm9yIGl0ZW0gaW4gaXRlbXM6Ci0g
ICAgICAgICAgICAgICAgaWYgaXRlbS5ub2RlaWQgaW4gc2VsZi5sYXN0ZmFpbGVkOgotICAgICAg
ICAgICAgICAgICAgICBwcmV2aW91c2x5X2ZhaWxlZC5hcHBlbmQoaXRlbSkKLSAgICAgICAgICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBwcmV2aW91c2x5X3Bhc3NlZC5hcHBlbmQo
aXRlbSkKLSAgICAgICAgICAgIHNlbGYuX3ByZXZpb3VzbHlfZmFpbGVkX2NvdW50ID0gbGVuKHBy
ZXZpb3VzbHlfZmFpbGVkKQotICAgICAgICAgICAgaWYgbm90IHByZXZpb3VzbHlfZmFpbGVkOgot
ICAgICAgICAgICAgICAgICMgcnVubmluZyBhIHN1YnNldCBvZiBhbGwgdGVzdHMgd2l0aCByZWNv
cmRlZCBmYWlsdXJlcyBvdXRzaWRlCi0gICAgICAgICAgICAgICAgIyBvZiB0aGUgc2V0IG9mIHRl
c3RzIGN1cnJlbnRseSBleGVjdXRpbmcKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAg
ICAgIGlmIHNlbGYuY29uZmlnLmdldHZhbHVlKCJsZiIpOgotICAgICAgICAgICAgICAgIGl0ZW1z
WzpdID0gcHJldmlvdXNseV9mYWlsZWQKLSAgICAgICAgICAgICAgICBjb25maWcuaG9vay5weXRl
c3RfZGVzZWxlY3RlZChpdGVtcz1wcmV2aW91c2x5X3Bhc3NlZCkKLSAgICAgICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICAgICAgaXRlbXNbOl0gPSBwcmV2aW91c2x5X2ZhaWxlZCArIHByZXZpb3Vz
bHlfcGFzc2VkCi0KLSAgICBkZWYgcHl0ZXN0X3Nlc3Npb25maW5pc2goc2VsZiwgc2Vzc2lvbik6
Ci0gICAgICAgIGNvbmZpZyA9IHNlbGYuY29uZmlnCi0gICAgICAgIGlmIGNvbmZpZy5nZXR2YWx1
ZSgiY2FjaGVzaG93Iikgb3IgaGFzYXR0cihjb25maWcsICJzbGF2ZWlucHV0Iik6Ci0gICAgICAg
ICAgICByZXR1cm4KLQotICAgICAgICBzYXZlZF9sYXN0ZmFpbGVkID0gY29uZmlnLmNhY2hlLmdl
dCgiY2FjaGUvbGFzdGZhaWxlZCIsIHt9KQotICAgICAgICBpZiBzYXZlZF9sYXN0ZmFpbGVkICE9
IHNlbGYubGFzdGZhaWxlZDoKLSAgICAgICAgICAgIGNvbmZpZy5jYWNoZS5zZXQoImNhY2hlL2xh
c3RmYWlsZWQiLCBzZWxmLmxhc3RmYWlsZWQpCi0KLQotZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFy
c2VyKToKLSAgICBncm91cCA9IHBhcnNlci5nZXRncm91cCgiZ2VuZXJhbCIpCi0gICAgZ3JvdXAu
YWRkb3B0aW9uKAotICAgICAgICAnLS1sZicsICctLWxhc3QtZmFpbGVkJywgYWN0aW9uPSdzdG9y
ZV90cnVlJywgZGVzdD0ibGYiLAotICAgICAgICBoZWxwPSJyZXJ1biBvbmx5IHRoZSB0ZXN0cyB0
aGF0IGZhaWxlZCAiCi0gICAgICAgICAgICAgImF0IHRoZSBsYXN0IHJ1biAob3IgYWxsIGlmIG5v
bmUgZmFpbGVkKSIpCi0gICAgZ3JvdXAuYWRkb3B0aW9uKAotICAgICAgICAnLS1mZicsICctLWZh
aWxlZC1maXJzdCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlc3Q9ImZhaWxlZGZpcnN0IiwKLSAg
ICAgICAgaGVscD0icnVuIGFsbCB0ZXN0cyBidXQgcnVuIHRoZSBsYXN0IGZhaWx1cmVzIGZpcnN0
LiAgIgotICAgICAgICAgICAgICJUaGlzIG1heSByZS1vcmRlciB0ZXN0cyBhbmQgdGh1cyBsZWFk
IHRvICIKLSAgICAgICAgICAgICAicmVwZWF0ZWQgZml4dHVyZSBzZXR1cC90ZWFyZG93biIpCi0g
ICAgZ3JvdXAuYWRkb3B0aW9uKAotICAgICAgICAnLS1jYWNoZS1zaG93JywgYWN0aW9uPSdzdG9y
ZV90cnVlJywgZGVzdD0iY2FjaGVzaG93IiwKLSAgICAgICAgaGVscD0ic2hvdyBjYWNoZSBjb250
ZW50cywgZG9uJ3QgcGVyZm9ybSBjb2xsZWN0aW9uIG9yIHRlc3RzIikKLSAgICBncm91cC5hZGRv
cHRpb24oCi0gICAgICAgICctLWNhY2hlLWNsZWFyJywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVz
dD0iY2FjaGVjbGVhciIsCi0gICAgICAgIGhlbHA9InJlbW92ZSBhbGwgY2FjaGUgY29udGVudHMg
YXQgc3RhcnQgb2YgdGVzdCBydW4uIikKLSAgICBwYXJzZXIuYWRkaW5pKAotICAgICAgICAiY2Fj
aGVfZGlyIiwgZGVmYXVsdD0nLmNhY2hlJywKLSAgICAgICAgaGVscD0iY2FjaGUgZGlyZWN0b3J5
IHBhdGguIikKLQotCi1kZWYgcHl0ZXN0X2NtZGxpbmVfbWFpbihjb25maWcpOgotICAgIGlmIGNv
bmZpZy5vcHRpb24uY2FjaGVzaG93OgotICAgICAgICBmcm9tIF9weXRlc3QubWFpbiBpbXBvcnQg
d3JhcF9zZXNzaW9uCi0gICAgICAgIHJldHVybiB3cmFwX3Nlc3Npb24oY29uZmlnLCBjYWNoZXNo
b3cpCi0KLQotQHB5dGVzdC5ob29raW1wbCh0cnlmaXJzdD1UcnVlKQotZGVmIHB5dGVzdF9jb25m
aWd1cmUoY29uZmlnKToKLSAgICBjb25maWcuY2FjaGUgPSBDYWNoZShjb25maWcpCi0gICAgY29u
ZmlnLnBsdWdpbm1hbmFnZXIucmVnaXN0ZXIoTEZQbHVnaW4oY29uZmlnKSwgImxmcGx1Z2luIikK
LQotCi1AcHl0ZXN0LmZpeHR1cmUKLWRlZiBjYWNoZShyZXF1ZXN0KToKLSAgICAiIiIKLSAgICBS
ZXR1cm4gYSBjYWNoZSBvYmplY3QgdGhhdCBjYW4gcGVyc2lzdCBzdGF0ZSBiZXR3ZWVuIHRlc3Rp
bmcgc2Vzc2lvbnMuCi0KLSAgICBjYWNoZS5nZXQoa2V5LCBkZWZhdWx0KQotICAgIGNhY2hlLnNl
dChrZXksIHZhbHVlKQotCi0gICAgS2V5cyBtdXN0IGJlIGEgYGAvYGAgc2VwYXJhdGVkIHZhbHVl
LCB3aGVyZSB0aGUgZmlyc3QgcGFydCBpcyB1c3VhbGx5IHRoZQotICAgIG5hbWUgb2YgeW91ciBw
bHVnaW4gb3IgYXBwbGljYXRpb24gdG8gYXZvaWQgY2xhc2hlcyB3aXRoIG90aGVyIGNhY2hlIHVz
ZXJzLgotCi0gICAgVmFsdWVzIGNhbiBiZSBhbnkgb2JqZWN0IGhhbmRsZWQgYnkgdGhlIGpzb24g
c3RkbGliIG1vZHVsZS4KLSAgICAiIiIKLSAgICByZXR1cm4gcmVxdWVzdC5jb25maWcuY2FjaGUK
LQotCi1kZWYgcHl0ZXN0X3JlcG9ydF9oZWFkZXIoY29uZmlnKToKLSAgICBpZiBjb25maWcub3B0
aW9uLnZlcmJvc2U6Ci0gICAgICAgIHJlbHBhdGggPSBweS5wYXRoLmxvY2FsKCkuYmVzdHJlbHBh
dGgoY29uZmlnLmNhY2hlLl9jYWNoZWRpcikKLSAgICAgICAgcmV0dXJuICJjYWNoZWRpcjogJXMi
ICUgcmVscGF0aAotCi0KLWRlZiBjYWNoZXNob3coY29uZmlnLCBzZXNzaW9uKToKLSAgICBmcm9t
IHBwcmludCBpbXBvcnQgcHByaW50Ci0gICAgdHcgPSBweS5pby5UZXJtaW5hbFdyaXRlcigpCi0g
ICAgdHcubGluZSgiY2FjaGVkaXI6ICIgKyBzdHIoY29uZmlnLmNhY2hlLl9jYWNoZWRpcikpCi0g
ICAgaWYgbm90IGNvbmZpZy5jYWNoZS5fY2FjaGVkaXIuY2hlY2soKToKLSAgICAgICAgdHcubGlu
ZSgiY2FjaGUgaXMgZW1wdHkiKQotICAgICAgICByZXR1cm4gMAotICAgIGR1bW15ID0gb2JqZWN0
KCkKLSAgICBiYXNlZGlyID0gY29uZmlnLmNhY2hlLl9jYWNoZWRpcgotICAgIHZkaXIgPSBiYXNl
ZGlyLmpvaW4oInYiKQotICAgIHR3LnNlcCgiLSIsICJjYWNoZSB2YWx1ZXMiKQotICAgIGZvciB2
YWxwYXRoIGluIHNvcnRlZCh2ZGlyLnZpc2l0KGxhbWJkYSB4OiB4LmlzZmlsZSgpKSk6Ci0gICAg
ICAgIGtleSA9IHZhbHBhdGgucmVsdG8odmRpcikucmVwbGFjZSh2YWxwYXRoLnNlcCwgIi8iKQot
ICAgICAgICB2YWwgPSBjb25maWcuY2FjaGUuZ2V0KGtleSwgZHVtbXkpCi0gICAgICAgIGlmIHZh
bCBpcyBkdW1teToKLSAgICAgICAgICAgIHR3LmxpbmUoIiVzIGNvbnRhaW5zIHVucmVhZGFibGUg
Y29udGVudCwgIgotICAgICAgICAgICAgICAgICAgICAid2lsbCBiZSBpZ25vcmVkIiAlIGtleSkK
LSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHR3LmxpbmUoIiVzIGNvbnRhaW5zOiIgJSBrZXkp
Ci0gICAgICAgICAgICBzdHJlYW0gPSBweS5pby5UZXh0SU8oKQotICAgICAgICAgICAgcHByaW50
KHZhbCwgc3RyZWFtPXN0cmVhbSkKLSAgICAgICAgICAgIGZvciBsaW5lIGluIHN0cmVhbS5nZXR2
YWx1ZSgpLnNwbGl0bGluZXMoKToKLSAgICAgICAgICAgICAgICB0dy5saW5lKCIgICIgKyBsaW5l
KQotCi0gICAgZGRpciA9IGJhc2VkaXIuam9pbigiZCIpCi0gICAgaWYgZGRpci5pc2RpcigpIGFu
ZCBkZGlyLmxpc3RkaXIoKToKLSAgICAgICAgdHcuc2VwKCItIiwgImNhY2hlIGRpcmVjdG9yaWVz
IikKLSAgICAgICAgZm9yIHAgaW4gc29ydGVkKGJhc2VkaXIuam9pbigiZCIpLnZpc2l0KCkpOgot
ICAgICAgICAgICAgIyBpZiBwLmNoZWNrKGRpcj0xKToKLSAgICAgICAgICAgICMgICAgcHJpbnQo
IiVzLyIgJSBwLnJlbHRvKGJhc2VkaXIpKQotICAgICAgICAgICAgaWYgcC5pc2ZpbGUoKToKLSAg
ICAgICAgICAgICAgICBrZXkgPSBwLnJlbHRvKGJhc2VkaXIpCi0gICAgICAgICAgICAgICAgdHcu
bGluZSgiJXMgaXMgYSBmaWxlIG9mIGxlbmd0aCAlZCIgJSAoCi0gICAgICAgICAgICAgICAgICAg
ICAgICBrZXksIHAuc2l6ZSgpKSkKLSAgICByZXR1cm4gMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvX3B5dGVzdC9jYXB0dXJlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9jYXB0dXJlLnB5CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMmViZTM4YzhjMDkwMjg2Yjc3YzczOWIzMmI2
MjAzMDI5NGM3NTI0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L19weXRlc3QvY2FwdHVyZS5weQorKysgL2Rldi9udWxsCkBAIC0xLDY4
MyArMCwwIEBACi0iIiIKLXBlci10ZXN0IHN0ZG91dC9zdGRlcnIgY2FwdHVyaW5nIG1lY2hhbmlz
bS4KLQotIiIiCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNp
b24sIHByaW50X2Z1bmN0aW9uCi0KLWltcG9ydCBjb2xsZWN0aW9ucwotaW1wb3J0IGNvbnRleHRs
aWIKLWltcG9ydCBzeXMKLWltcG9ydCBvcwotaW1wb3J0IGlvCi1mcm9tIGlvIGltcG9ydCBVbnN1
cHBvcnRlZE9wZXJhdGlvbgotZnJvbSB0ZW1wZmlsZSBpbXBvcnQgVGVtcG9yYXJ5RmlsZQotCi1p
bXBvcnQgc2l4Ci1pbXBvcnQgcHl0ZXN0Ci1mcm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCBDYXB0
dXJlSU8KLQotCi1wYXRjaHN5c2RpY3QgPSB7MDogJ3N0ZGluJywgMTogJ3N0ZG91dCcsIDI6ICdz
dGRlcnInfQotCi0KLWRlZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNlcik6Ci0gICAgZ3JvdXAgPSBw
YXJzZXIuZ2V0Z3JvdXAoImdlbmVyYWwiKQotICAgIGdyb3VwLl9hZGRvcHRpb24oCi0gICAgICAg
ICctLWNhcHR1cmUnLCBhY3Rpb249InN0b3JlIiwKLSAgICAgICAgZGVmYXVsdD0iZmQiIGlmIGhh
c2F0dHIob3MsICJkdXAiKSBlbHNlICJzeXMiLAotICAgICAgICBtZXRhdmFyPSJtZXRob2QiLCBj
aG9pY2VzPVsnZmQnLCAnc3lzJywgJ25vJ10sCi0gICAgICAgIGhlbHA9InBlci10ZXN0IGNhcHR1
cmluZyBtZXRob2Q6IG9uZSBvZiBmZHxzeXN8bm8uIikKLSAgICBncm91cC5fYWRkb3B0aW9uKAot
ICAgICAgICAnLXMnLCBhY3Rpb249InN0b3JlX2NvbnN0IiwgY29uc3Q9Im5vIiwgZGVzdD0iY2Fw
dHVyZSIsCi0gICAgICAgIGhlbHA9InNob3J0Y3V0IGZvciAtLWNhcHR1cmU9bm8uIikKLQotCi1A
cHl0ZXN0Lmhvb2tpbXBsKGhvb2t3cmFwcGVyPVRydWUpCi1kZWYgcHl0ZXN0X2xvYWRfaW5pdGlh
bF9jb25mdGVzdHMoZWFybHlfY29uZmlnLCBwYXJzZXIsIGFyZ3MpOgotICAgIG5zID0gZWFybHlf
Y29uZmlnLmtub3duX2FyZ3NfbmFtZXNwYWNlCi0gICAgaWYgbnMuY2FwdHVyZSA9PSAiZmQiOgot
ICAgICAgICBfcHkzNl93aW5kb3dzY29uc29sZWlvX3dvcmthcm91bmQoc3lzLnN0ZG91dCkKLSAg
ICBfY29sb3JhbWFfd29ya2Fyb3VuZCgpCi0gICAgX3JlYWRsaW5lX3dvcmthcm91bmQoKQotICAg
IHBsdWdpbm1hbmFnZXIgPSBlYXJseV9jb25maWcucGx1Z2lubWFuYWdlcgotICAgIGNhcG1hbiA9
IENhcHR1cmVNYW5hZ2VyKG5zLmNhcHR1cmUpCi0gICAgcGx1Z2lubWFuYWdlci5yZWdpc3Rlcihj
YXBtYW4sICJjYXB0dXJlbWFuYWdlciIpCi0KLSAgICAjIG1ha2Ugc3VyZSB0aGF0IGNhcHR1cmVt
YW5hZ2VyIGlzIHByb3Blcmx5IHJlc2V0IGF0IGZpbmFsIHNodXRkb3duCi0gICAgZWFybHlfY29u
ZmlnLmFkZF9jbGVhbnVwKGNhcG1hbi5zdG9wX2dsb2JhbF9jYXB0dXJpbmcpCi0KLSAgICAjIG1h
a2Ugc3VyZSBsb2dnaW5nIGRvZXMgbm90IHJhaXNlIGV4Y2VwdGlvbnMgYXQgdGhlIGVuZAotICAg
IGRlZiBzaWxlbmNlX2xvZ2dpbmdfYXRfc2h1dGRvd24oKToKLSAgICAgICAgaWYgImxvZ2dpbmci
IGluIHN5cy5tb2R1bGVzOgotICAgICAgICAgICAgc3lzLm1vZHVsZXNbImxvZ2dpbmciXS5yYWlz
ZUV4Y2VwdGlvbnMgPSBGYWxzZQotICAgIGVhcmx5X2NvbmZpZy5hZGRfY2xlYW51cChzaWxlbmNl
X2xvZ2dpbmdfYXRfc2h1dGRvd24pCi0KLSAgICAjIGZpbmFsbHkgdHJpZ2dlciBjb25mdGVzdCBs
b2FkaW5nIGJ1dCB3aGlsZSBjYXB0dXJpbmcgKGlzc3VlOTMpCi0gICAgY2FwbWFuLnN0YXJ0X2ds
b2JhbF9jYXB0dXJpbmcoKQotICAgIG91dGNvbWUgPSB5aWVsZAotICAgIG91dCwgZXJyID0gY2Fw
bWFuLnN1c3BlbmRfZ2xvYmFsX2NhcHR1cmUoKQotICAgIGlmIG91dGNvbWUuZXhjaW5mbyBpcyBu
b3QgTm9uZToKLSAgICAgICAgc3lzLnN0ZG91dC53cml0ZShvdXQpCi0gICAgICAgIHN5cy5zdGRl
cnIud3JpdGUoZXJyKQotCi0KLWNsYXNzIENhcHR1cmVNYW5hZ2VyOgotICAgICIiIgotICAgIENh
cHR1cmUgcGx1Z2luLCBtYW5hZ2VzIHRoYXQgdGhlIGFwcHJvcHJpYXRlIGNhcHR1cmUgbWV0aG9k
IGlzIGVuYWJsZWQvZGlzYWJsZWQgZHVyaW5nIGNvbGxlY3Rpb24gYW5kIGVhY2gKLSAgICB0ZXN0
IHBoYXNlIChzZXR1cCwgY2FsbCwgdGVhcmRvd24pLiBBZnRlciBlYWNoIG9mIHRob3NlIHBvaW50
cywgdGhlIGNhcHR1cmVkIG91dHB1dCBpcyBvYnRhaW5lZCBhbmQKLSAgICBhdHRhY2hlZCB0byB0
aGUgY29sbGVjdGlvbi9ydW50ZXN0IHJlcG9ydC4KLQotICAgIFRoZXJlIGFyZSB0d28gbGV2ZWxz
IG9mIGNhcHR1cmU6Ci0gICAgKiBnbG9iYWw6IHdoaWNoIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBh
bmQgY2FuIGJlIHN1cHByZXNzZWQgYnkgdGhlIGBgLXNgYCBvcHRpb24uIFRoaXMgaXMgYWx3YXlz
IGVuYWJsZWQvZGlzYWJsZWQKLSAgICAgIGR1cmluZyBjb2xsZWN0aW9uIGFuZCBlYWNoIHRlc3Qg
cGhhc2UuCi0gICAgKiBmaXh0dXJlOiB3aGVuIGEgdGVzdCBmdW5jdGlvbiBvciBvbmUgb2YgaXRz
IGZpeHR1cmUgZGVwZW5kIG9uIHRoZSBgYGNhcHN5c2BgIG9yIGBgY2FwZmRgYCBmaXh0dXJlcy4g
SW4gdGhpcwotICAgICAgY2FzZSBzcGVjaWFsIGhhbmRsaW5nIGlzIG5lZWRlZCB0byBlbnN1cmUg
dGhlIGZpeHR1cmVzIHRha2UgcHJlY2VkZW5jZSBvdmVyIHRoZSBnbG9iYWwgY2FwdHVyZS4KLSAg
ICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXRob2QpOgotICAgICAgICBzZWxmLl9t
ZXRob2QgPSBtZXRob2QKLSAgICAgICAgc2VsZi5fZ2xvYmFsX2NhcHR1cmluZyA9IE5vbmUKLQot
ICAgIGRlZiBfZ2V0Y2FwdHVyZShzZWxmLCBtZXRob2QpOgotICAgICAgICBpZiBtZXRob2QgPT0g
ImZkIjoKLSAgICAgICAgICAgIHJldHVybiBNdWx0aUNhcHR1cmUob3V0PVRydWUsIGVycj1UcnVl
LCBDYXB0dXJlPUZEQ2FwdHVyZSkKLSAgICAgICAgZWxpZiBtZXRob2QgPT0gInN5cyI6Ci0gICAg
ICAgICAgICByZXR1cm4gTXVsdGlDYXB0dXJlKG91dD1UcnVlLCBlcnI9VHJ1ZSwgQ2FwdHVyZT1T
eXNDYXB0dXJlKQotICAgICAgICBlbGlmIG1ldGhvZCA9PSAibm8iOgotICAgICAgICAgICAgcmV0
dXJuIE11bHRpQ2FwdHVyZShvdXQ9RmFsc2UsIGVycj1GYWxzZSwgaW5fPUZhbHNlKQotICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidW5rbm93biBjYXB0dXJpbmcg
bWV0aG9kOiAlciIgJSBtZXRob2QpCi0KLSAgICBkZWYgc3RhcnRfZ2xvYmFsX2NhcHR1cmluZyhz
ZWxmKToKLSAgICAgICAgYXNzZXJ0IHNlbGYuX2dsb2JhbF9jYXB0dXJpbmcgaXMgTm9uZQotICAg
ICAgICBzZWxmLl9nbG9iYWxfY2FwdHVyaW5nID0gc2VsZi5fZ2V0Y2FwdHVyZShzZWxmLl9tZXRo
b2QpCi0gICAgICAgIHNlbGYuX2dsb2JhbF9jYXB0dXJpbmcuc3RhcnRfY2FwdHVyaW5nKCkKLQot
ICAgIGRlZiBzdG9wX2dsb2JhbF9jYXB0dXJpbmcoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuX2ds
b2JhbF9jYXB0dXJpbmcgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLl9nbG9iYWxfY2Fw
dHVyaW5nLnBvcF9vdXRlcnJfdG9fb3JpZygpCi0gICAgICAgICAgICBzZWxmLl9nbG9iYWxfY2Fw
dHVyaW5nLnN0b3BfY2FwdHVyaW5nKCkKLSAgICAgICAgICAgIHNlbGYuX2dsb2JhbF9jYXB0dXJp
bmcgPSBOb25lCi0KLSAgICBkZWYgcmVzdW1lX2dsb2JhbF9jYXB0dXJlKHNlbGYpOgotICAgICAg
ICBzZWxmLl9nbG9iYWxfY2FwdHVyaW5nLnJlc3VtZV9jYXB0dXJpbmcoKQotCi0gICAgZGVmIHN1
c3BlbmRfZ2xvYmFsX2NhcHR1cmUoc2VsZiwgaXRlbT1Ob25lLCBpbl89RmFsc2UpOgotICAgICAg
ICBpZiBpdGVtIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2VsZi5kZWFjdGl2YXRlX2ZpeHR1
cmUoaXRlbSkKLSAgICAgICAgY2FwID0gZ2V0YXR0cihzZWxmLCAiX2dsb2JhbF9jYXB0dXJpbmci
LCBOb25lKQotICAgICAgICBpZiBjYXAgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICB0cnk6Ci0g
ICAgICAgICAgICAgICAgb3V0ZXJyID0gY2FwLnJlYWRvdXRlcnIoKQotICAgICAgICAgICAgZmlu
YWxseToKLSAgICAgICAgICAgICAgICBjYXAuc3VzcGVuZF9jYXB0dXJpbmcoaW5fPWluXykKLSAg
ICAgICAgICAgIHJldHVybiBvdXRlcnIKLQotICAgIGRlZiBhY3RpdmF0ZV9maXh0dXJlKHNlbGYs
IGl0ZW0pOgotICAgICAgICAiIiJJZiB0aGUgY3VycmVudCBpdGVtIGlzIHVzaW5nIGBgY2Fwc3lz
YGAgb3IgYGBjYXBmZGBgLCBhY3RpdmF0ZSB0aGVtIHNvIHRoZXkgdGFrZSBwcmVjZWRlbmNlIG92
ZXIKLSAgICAgICAgdGhlIGdsb2JhbCBjYXB0dXJlLgotICAgICAgICAiIiIKLSAgICAgICAgZml4
dHVyZSA9IGdldGF0dHIoaXRlbSwgIl9jYXB0dXJlX2ZpeHR1cmUiLCBOb25lKQotICAgICAgICBp
ZiBmaXh0dXJlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgZml4dHVyZS5fc3RhcnQoKQotCi0g
ICAgZGVmIGRlYWN0aXZhdGVfZml4dHVyZShzZWxmLCBpdGVtKToKLSAgICAgICAgIiIiRGVhY3Rp
dmF0ZXMgdGhlIGBgY2Fwc3lzYGAgb3IgYGBjYXBmZGBgIGZpeHR1cmUgb2YgdGhpcyBpdGVtLCBp
ZiBhbnkuIiIiCi0gICAgICAgIGZpeHR1cmUgPSBnZXRhdHRyKGl0ZW0sICJfY2FwdHVyZV9maXh0
dXJlIiwgTm9uZSkKLSAgICAgICAgaWYgZml4dHVyZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAg
IGZpeHR1cmUuY2xvc2UoKQotCi0gICAgQHB5dGVzdC5ob29raW1wbChob29rd3JhcHBlcj1UcnVl
KQotICAgIGRlZiBweXRlc3RfbWFrZV9jb2xsZWN0X3JlcG9ydChzZWxmLCBjb2xsZWN0b3IpOgot
ICAgICAgICBpZiBpc2luc3RhbmNlKGNvbGxlY3RvciwgcHl0ZXN0LkZpbGUpOgotICAgICAgICAg
ICAgc2VsZi5yZXN1bWVfZ2xvYmFsX2NhcHR1cmUoKQotICAgICAgICAgICAgb3V0Y29tZSA9IHlp
ZWxkCi0gICAgICAgICAgICBvdXQsIGVyciA9IHNlbGYuc3VzcGVuZF9nbG9iYWxfY2FwdHVyZSgp
Ci0gICAgICAgICAgICByZXAgPSBvdXRjb21lLmdldF9yZXN1bHQoKQotICAgICAgICAgICAgaWYg
b3V0OgotICAgICAgICAgICAgICAgIHJlcC5zZWN0aW9ucy5hcHBlbmQoKCJDYXB0dXJlZCBzdGRv
dXQiLCBvdXQpKQotICAgICAgICAgICAgaWYgZXJyOgotICAgICAgICAgICAgICAgIHJlcC5zZWN0
aW9ucy5hcHBlbmQoKCJDYXB0dXJlZCBzdGRlcnIiLCBlcnIpKQotICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgeWllbGQKLQotICAgIEBweXRlc3QuaG9va2ltcGwoaG9va3dyYXBwZXI9VHJ1ZSkK
LSAgICBkZWYgcHl0ZXN0X3J1bnRlc3Rfc2V0dXAoc2VsZiwgaXRlbSk6Ci0gICAgICAgIHNlbGYu
cmVzdW1lX2dsb2JhbF9jYXB0dXJlKCkKLSAgICAgICAgIyBubyBuZWVkIHRvIGFjdGl2YXRlIGEg
Y2FwdHVyZSBmaXh0dXJlIGJlY2F1c2UgdGhleSBhY3RpdmF0ZSB0aGVtc2VsdmVzIGR1cmluZyBj
cmVhdGlvbjsgdGhpcwotICAgICAgICAjIG9ubHkgbWFrZXMgc2Vuc2Ugd2hlbiBhIGZpeHR1cmUg
dXNlcyBhIGNhcHR1cmUgZml4dHVyZSwgb3RoZXJ3aXNlIHRoZSBjYXB0dXJlIGZpeHR1cmUgd2ls
bAotICAgICAgICAjIGJlIGFjdGl2YXRlZCBkdXJpbmcgcHl0ZXN0X3J1bnRlc3RfY2FsbAotICAg
ICAgICB5aWVsZAotICAgICAgICBzZWxmLnN1c3BlbmRfY2FwdHVyZV9pdGVtKGl0ZW0sICJzZXR1
cCIpCi0KLSAgICBAcHl0ZXN0Lmhvb2tpbXBsKGhvb2t3cmFwcGVyPVRydWUpCi0gICAgZGVmIHB5
dGVzdF9ydW50ZXN0X2NhbGwoc2VsZiwgaXRlbSk6Ci0gICAgICAgIHNlbGYucmVzdW1lX2dsb2Jh
bF9jYXB0dXJlKCkKLSAgICAgICAgIyBpdCBpcyBpbXBvcnRhbnQgdG8gYWN0aXZhdGUgdGhpcyBm
aXh0dXJlIGR1cmluZyB0aGUgY2FsbCBwaGFzZSBzbyBpdCBvdmVyd3JpdGVzIHRoZSAiZ2xvYmFs
IgotICAgICAgICAjIGNhcHR1cmUKLSAgICAgICAgc2VsZi5hY3RpdmF0ZV9maXh0dXJlKGl0ZW0p
Ci0gICAgICAgIHlpZWxkCi0gICAgICAgIHNlbGYuc3VzcGVuZF9jYXB0dXJlX2l0ZW0oaXRlbSwg
ImNhbGwiKQotCi0gICAgQHB5dGVzdC5ob29raW1wbChob29rd3JhcHBlcj1UcnVlKQotICAgIGRl
ZiBweXRlc3RfcnVudGVzdF90ZWFyZG93bihzZWxmLCBpdGVtKToKLSAgICAgICAgc2VsZi5yZXN1
bWVfZ2xvYmFsX2NhcHR1cmUoKQotICAgICAgICBzZWxmLmFjdGl2YXRlX2ZpeHR1cmUoaXRlbSkK
LSAgICAgICAgeWllbGQKLSAgICAgICAgc2VsZi5zdXNwZW5kX2NhcHR1cmVfaXRlbShpdGVtLCAi
dGVhcmRvd24iKQotCi0gICAgQHB5dGVzdC5ob29raW1wbCh0cnlmaXJzdD1UcnVlKQotICAgIGRl
ZiBweXRlc3Rfa2V5Ym9hcmRfaW50ZXJydXB0KHNlbGYsIGV4Y2luZm8pOgotICAgICAgICBzZWxm
LnN0b3BfZ2xvYmFsX2NhcHR1cmluZygpCi0KLSAgICBAcHl0ZXN0Lmhvb2tpbXBsKHRyeWZpcnN0
PVRydWUpCi0gICAgZGVmIHB5dGVzdF9pbnRlcm5hbGVycm9yKHNlbGYsIGV4Y2luZm8pOgotICAg
ICAgICBzZWxmLnN0b3BfZ2xvYmFsX2NhcHR1cmluZygpCi0KLSAgICBkZWYgc3VzcGVuZF9jYXB0
dXJlX2l0ZW0oc2VsZiwgaXRlbSwgd2hlbiwgaW5fPUZhbHNlKToKLSAgICAgICAgb3V0LCBlcnIg
PSBzZWxmLnN1c3BlbmRfZ2xvYmFsX2NhcHR1cmUoaXRlbSwgaW5fPWluXykKLSAgICAgICAgaXRl
bS5hZGRfcmVwb3J0X3NlY3Rpb24od2hlbiwgInN0ZG91dCIsIG91dCkKLSAgICAgICAgaXRlbS5h
ZGRfcmVwb3J0X3NlY3Rpb24od2hlbiwgInN0ZGVyciIsIGVycikKLQotCi1jYXB0dXJlX2ZpeHR1
cmVzID0geydjYXBmZCcsICdjYXBmZGJpbmFyeScsICdjYXBzeXMnLCAnY2Fwc3lzYmluYXJ5J30K
LQotCi1kZWYgX2Vuc3VyZV9vbmx5X29uZV9jYXB0dXJlX2ZpeHR1cmUocmVxdWVzdCwgbmFtZSk6
Ci0gICAgZml4dHVyZXMgPSBzZXQocmVxdWVzdC5maXh0dXJlbmFtZXMpICYgY2FwdHVyZV9maXh0
dXJlcyAtIHNldCgobmFtZSwpKQotICAgIGlmIGZpeHR1cmVzOgotICAgICAgICBmaXh0dXJlcyA9
IHNvcnRlZChmaXh0dXJlcykKLSAgICAgICAgZml4dHVyZXMgPSBmaXh0dXJlc1swXSBpZiBsZW4o
Zml4dHVyZXMpID09IDEgZWxzZSBmaXh0dXJlcwotICAgICAgICByYWlzZSByZXF1ZXN0LnJhaXNl
ZXJyb3IoCi0gICAgICAgICAgICAiY2Fubm90IHVzZSB7MH0gYW5kIHsxfSBhdCB0aGUgc2FtZSB0
aW1lIi5mb3JtYXQoCi0gICAgICAgICAgICAgICAgZml4dHVyZXMsIG5hbWUsCi0gICAgICAgICAg
ICApLAotICAgICAgICApCi0KLQotQHB5dGVzdC5maXh0dXJlCi1kZWYgY2Fwc3lzKHJlcXVlc3Qp
OgotICAgICIiIkVuYWJsZSBjYXB0dXJpbmcgb2Ygd3JpdGVzIHRvIHN5cy5zdGRvdXQvc3lzLnN0
ZGVyciBhbmQgbWFrZQotICAgIGNhcHR1cmVkIG91dHB1dCBhdmFpbGFibGUgdmlhIGBgY2Fwc3lz
LnJlYWRvdXRlcnIoKWBgIG1ldGhvZCBjYWxscwotICAgIHdoaWNoIHJldHVybiBhIGBgKG91dCwg
ZXJyKWBgIHR1cGxlLiAgYGBvdXRgYCBhbmQgYGBlcnJgYCB3aWxsIGJlIGBgdGV4dGBgCi0gICAg
b2JqZWN0cy4KLSAgICAiIiIKLSAgICBfZW5zdXJlX29ubHlfb25lX2NhcHR1cmVfZml4dHVyZShy
ZXF1ZXN0LCAnY2Fwc3lzJykKLSAgICB3aXRoIF9pbnN0YWxsX2NhcHR1cmVfZml4dHVyZV9vbl9p
dGVtKHJlcXVlc3QsIFN5c0NhcHR1cmUpIGFzIGZpeHR1cmU6Ci0gICAgICAgIHlpZWxkIGZpeHR1
cmUKLQotCi1AcHl0ZXN0LmZpeHR1cmUKLWRlZiBjYXBzeXNiaW5hcnkocmVxdWVzdCk6Ci0gICAg
IiIiRW5hYmxlIGNhcHR1cmluZyBvZiB3cml0ZXMgdG8gc3lzLnN0ZG91dC9zeXMuc3RkZXJyIGFu
ZCBtYWtlCi0gICAgY2FwdHVyZWQgb3V0cHV0IGF2YWlsYWJsZSB2aWEgYGBjYXBzeXMucmVhZG91
dGVycigpYGAgbWV0aG9kIGNhbGxzCi0gICAgd2hpY2ggcmV0dXJuIGEgYGAob3V0LCBlcnIpYGAg
dHVwbGUuICBgYG91dGBgIGFuZCBgYGVycmBgIHdpbGwgYmUgYGBieXRlc2BgCi0gICAgb2JqZWN0
cy4KLSAgICAiIiIKLSAgICBfZW5zdXJlX29ubHlfb25lX2NhcHR1cmVfZml4dHVyZShyZXF1ZXN0
LCAnY2Fwc3lzYmluYXJ5JykKLSAgICAjIEN1cnJlbnRseSwgdGhlIGltcGxlbWVudGF0aW9uIHVz
ZXMgdGhlIHB5dGhvbjMgc3BlY2lmaWMgYC5idWZmZXJgCi0gICAgIyBwcm9wZXJ0eSBvZiBDYXB0
dXJlSU8uCi0gICAgaWYgc3lzLnZlcnNpb25faW5mbyA8ICgzLCk6Ci0gICAgICAgIHJhaXNlIHJl
cXVlc3QucmFpc2VlcnJvcignY2Fwc3lzYmluYXJ5IGlzIG9ubHkgc3VwcG9ydGVkIG9uIHB5dGhv
biAzJykKLSAgICB3aXRoIF9pbnN0YWxsX2NhcHR1cmVfZml4dHVyZV9vbl9pdGVtKHJlcXVlc3Qs
IFN5c0NhcHR1cmVCaW5hcnkpIGFzIGZpeHR1cmU6Ci0gICAgICAgIHlpZWxkIGZpeHR1cmUKLQot
Ci1AcHl0ZXN0LmZpeHR1cmUKLWRlZiBjYXBmZChyZXF1ZXN0KToKLSAgICAiIiJFbmFibGUgY2Fw
dHVyaW5nIG9mIHdyaXRlcyB0byBmaWxlIGRlc2NyaXB0b3JzIDEgYW5kIDIgYW5kIG1ha2UKLSAg
ICBjYXB0dXJlZCBvdXRwdXQgYXZhaWxhYmxlIHZpYSBgYGNhcGZkLnJlYWRvdXRlcnIoKWBgIG1l
dGhvZCBjYWxscwotICAgIHdoaWNoIHJldHVybiBhIGBgKG91dCwgZXJyKWBgIHR1cGxlLiAgYGBv
dXRgYCBhbmQgYGBlcnJgYCB3aWxsIGJlIGBgdGV4dGBgCi0gICAgb2JqZWN0cy4KLSAgICAiIiIK
LSAgICBfZW5zdXJlX29ubHlfb25lX2NhcHR1cmVfZml4dHVyZShyZXF1ZXN0LCAnY2FwZmQnKQot
ICAgIGlmIG5vdCBoYXNhdHRyKG9zLCAnZHVwJyk6Ci0gICAgICAgIHB5dGVzdC5za2lwKCJjYXBm
ZCBmaXh0dXJlIG5lZWRzIG9zLmR1cCBmdW5jdGlvbiB3aGljaCBpcyBub3QgYXZhaWxhYmxlIGlu
IHRoaXMgc3lzdGVtIikKLSAgICB3aXRoIF9pbnN0YWxsX2NhcHR1cmVfZml4dHVyZV9vbl9pdGVt
KHJlcXVlc3QsIEZEQ2FwdHVyZSkgYXMgZml4dHVyZToKLSAgICAgICAgeWllbGQgZml4dHVyZQot
Ci0KLUBweXRlc3QuZml4dHVyZQotZGVmIGNhcGZkYmluYXJ5KHJlcXVlc3QpOgotICAgICIiIkVu
YWJsZSBjYXB0dXJpbmcgb2Ygd3JpdGUgdG8gZmlsZSBkZXNjcmlwdG9ycyAxIGFuZCAyIGFuZCBt
YWtlCi0gICAgY2FwdHVyZWQgb3V0cHV0IGF2YWlsYWJsZSB2aWEgYGBjYXBmZGJpbmFyeS5yZWFk
b3V0ZXJyYGAgbWV0aG9kIGNhbGxzCi0gICAgd2hpY2ggcmV0dXJuIGEgYGAob3V0LCBlcnIpYGAg
dHVwbGUuICBgYG91dGBgIGFuZCBgYGVycmBgIHdpbGwgYmUKLSAgICBgYGJ5dGVzYGAgb2JqZWN0
cy4KLSAgICAiIiIKLSAgICBfZW5zdXJlX29ubHlfb25lX2NhcHR1cmVfZml4dHVyZShyZXF1ZXN0
LCAnY2FwZmRiaW5hcnknKQotICAgIGlmIG5vdCBoYXNhdHRyKG9zLCAnZHVwJyk6Ci0gICAgICAg
IHB5dGVzdC5za2lwKCJjYXBmZGJpbmFyeSBmaXh0dXJlIG5lZWRzIG9zLmR1cCBmdW5jdGlvbiB3
aGljaCBpcyBub3QgYXZhaWxhYmxlIGluIHRoaXMgc3lzdGVtIikKLSAgICB3aXRoIF9pbnN0YWxs
X2NhcHR1cmVfZml4dHVyZV9vbl9pdGVtKHJlcXVlc3QsIEZEQ2FwdHVyZUJpbmFyeSkgYXMgZml4
dHVyZToKLSAgICAgICAgeWllbGQgZml4dHVyZQotCi0KLUBjb250ZXh0bGliLmNvbnRleHRtYW5h
Z2VyCi1kZWYgX2luc3RhbGxfY2FwdHVyZV9maXh0dXJlX29uX2l0ZW0ocmVxdWVzdCwgY2FwdHVy
ZV9jbGFzcyk6Ci0gICAgIiIiCi0gICAgQ29udGV4dCBtYW5hZ2VyIHdoaWNoIGNyZWF0ZXMgYSBg
YENhcHR1cmVGaXh0dXJlYGAgaW5zdGFuY2UgYW5kICJpbnN0YWxscyIgaXQgb24KLSAgICB0aGUg
aXRlbS9ub2RlIG9mIHRoZSBnaXZlbiByZXF1ZXN0LiBVc2VkIGJ5IGBgY2Fwc3lzYGAgYW5kIGBg
Y2FwZmRgYC4KLQotICAgIFRoZSBDYXB0dXJlRml4dHVyZSBpcyBhZGRlZCBhcyBhdHRyaWJ1dGUg
b2YgdGhlIGl0ZW0gYmVjYXVzZSBpdCBuZWVkcyB0byBhY2Nlc3NlZAotICAgIGJ5IGBgQ2FwdHVy
ZU1hbmFnZXJgYCBkdXJpbmcgaXRzIGBgcHl0ZXN0X3J1bnRlc3RfKmBgIGhvb2tzLgotICAgICIi
IgotICAgIHJlcXVlc3Qubm9kZS5fY2FwdHVyZV9maXh0dXJlID0gZml4dHVyZSA9IENhcHR1cmVG
aXh0dXJlKGNhcHR1cmVfY2xhc3MsIHJlcXVlc3QpCi0gICAgY2FwbWFuYWdlciA9IHJlcXVlc3Qu
Y29uZmlnLnBsdWdpbm1hbmFnZXIuZ2V0cGx1Z2luKCdjYXB0dXJlbWFuYWdlcicpCi0gICAgIyBu
ZWVkIHRvIGFjdGl2ZSB0aGlzIGZpeHR1cmUgcmlnaHQgYXdheSBpbiBjYXNlIGl0IGlzIGJlaW5n
IHVzZWQgYnkgYW5vdGhlciBmaXh0dXJlIChzZXR1cCBwaGFzZSkKLSAgICAjIGlmIHRoaXMgZml4
dHVyZSBpcyBiZWluZyB1c2VkIG9ubHkgYnkgYSB0ZXN0IGZ1bmN0aW9uIChjYWxsIHBoYXNlKSwg
dGhlbiB3ZSB3b3VsZG4ndCBuZWVkIHRoaXMKLSAgICAjIGFjdGl2YXRpb24sIGJ1dCBpdCBkb2Vz
bid0IGh1cnQKLSAgICBjYXBtYW5hZ2VyLmFjdGl2YXRlX2ZpeHR1cmUocmVxdWVzdC5ub2RlKQot
ICAgIHlpZWxkIGZpeHR1cmUKLSAgICBmaXh0dXJlLmNsb3NlKCkKLSAgICBkZWwgcmVxdWVzdC5u
b2RlLl9jYXB0dXJlX2ZpeHR1cmUKLQotCi1jbGFzcyBDYXB0dXJlRml4dHVyZToKLSAgICBkZWYg
X19pbml0X18oc2VsZiwgY2FwdHVyZWNsYXNzLCByZXF1ZXN0KToKLSAgICAgICAgc2VsZi5jYXB0
dXJlY2xhc3MgPSBjYXB0dXJlY2xhc3MKLSAgICAgICAgc2VsZi5yZXF1ZXN0ID0gcmVxdWVzdAot
Ci0gICAgZGVmIF9zdGFydChzZWxmKToKLSAgICAgICAgc2VsZi5fY2FwdHVyZSA9IE11bHRpQ2Fw
dHVyZShvdXQ9VHJ1ZSwgZXJyPVRydWUsIGluXz1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDYXB0dXJlPXNlbGYuY2FwdHVyZWNsYXNzKQotICAgICAgICBzZWxm
Ll9jYXB0dXJlLnN0YXJ0X2NhcHR1cmluZygpCi0KLSAgICBkZWYgY2xvc2Uoc2VsZik6Ci0gICAg
ICAgIGNhcCA9IHNlbGYuX19kaWN0X18ucG9wKCJfY2FwdHVyZSIsIE5vbmUpCi0gICAgICAgIGlm
IGNhcCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYuX291dGVyciA9IGNhcC5wb3Bfb3V0
ZXJyX3RvX29yaWcoKQotICAgICAgICAgICAgY2FwLnN0b3BfY2FwdHVyaW5nKCkKLQotICAgIGRl
ZiByZWFkb3V0ZXJyKHNlbGYpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gc2Vs
Zi5fY2FwdHVyZS5yZWFkb3V0ZXJyKCkKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgot
ICAgICAgICAgICAgcmV0dXJuIHNlbGYuX291dGVycgotCi0gICAgQGNvbnRleHRsaWIuY29udGV4
dG1hbmFnZXIKLSAgICBkZWYgZGlzYWJsZWQoc2VsZik6Ci0gICAgICAgIHNlbGYuX2NhcHR1cmUu
c3VzcGVuZF9jYXB0dXJpbmcoKQotICAgICAgICBjYXBtYW5hZ2VyID0gc2VsZi5yZXF1ZXN0LmNv
bmZpZy5wbHVnaW5tYW5hZ2VyLmdldHBsdWdpbignY2FwdHVyZW1hbmFnZXInKQotICAgICAgICBj
YXBtYW5hZ2VyLnN1c3BlbmRfZ2xvYmFsX2NhcHR1cmUoaXRlbT1Ob25lLCBpbl89RmFsc2UpCi0g
ICAgICAgIHRyeToKLSAgICAgICAgICAgIHlpZWxkCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAg
ICAgICBjYXBtYW5hZ2VyLnJlc3VtZV9nbG9iYWxfY2FwdHVyZSgpCi0gICAgICAgICAgICBzZWxm
Ll9jYXB0dXJlLnJlc3VtZV9jYXB0dXJpbmcoKQotCi0KLWRlZiBzYWZlX3RleHRfZHVwZmlsZShm
LCBtb2RlLCBkZWZhdWx0X2VuY29kaW5nPSJVVEY4Iik6Ci0gICAgIiIiIHJldHVybiBhIG9wZW4g
dGV4dCBmaWxlIG9iamVjdCB0aGF0J3MgYSBkdXBsaWNhdGUgb2YgZiBvbiB0aGUKLSAgICAgICAg
RkQtbGV2ZWwgaWYgcG9zc2libGUuCi0gICAgIiIiCi0gICAgZW5jb2RpbmcgPSBnZXRhdHRyKGYs
ICJlbmNvZGluZyIsIE5vbmUpCi0gICAgdHJ5OgotICAgICAgICBmZCA9IGYuZmlsZW5vKCkKLSAg
ICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICBpZiAiYiIgbm90IGluIGdldGF0dHIoZiwgIm1v
ZGUiLCAiIikgYW5kIGhhc2F0dHIoZiwgImVuY29kaW5nIik6Ci0gICAgICAgICAgICAjIHdlIHNl
ZW0gdG8gaGF2ZSBhIHRleHQgc3RyZWFtLCBsZXQncyBqdXN0IHVzZSBpdAotICAgICAgICAgICAg
cmV0dXJuIGYKLSAgICBlbHNlOgotICAgICAgICBuZXdmZCA9IG9zLmR1cChmZCkKLSAgICAgICAg
aWYgImIiIG5vdCBpbiBtb2RlOgotICAgICAgICAgICAgbW9kZSArPSAiYiIKLSAgICAgICAgZiA9
IG9zLmZkb3BlbihuZXdmZCwgbW9kZSwgMCkgICMgbm8gYnVmZmVyaW5nCi0gICAgcmV0dXJuIEVu
Y29kZWRGaWxlKGYsIGVuY29kaW5nIG9yIGRlZmF1bHRfZW5jb2RpbmcpCi0KLQotY2xhc3MgRW5j
b2RlZEZpbGUob2JqZWN0KToKLSAgICBlcnJvcnMgPSAic3RyaWN0IiAgIyBwb3NzaWJseSBuZWVk
ZWQgYnkgcHkzIGNvZGUgKGlzc3VlNTU1KQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGJ1ZmZl
ciwgZW5jb2RpbmcpOgotICAgICAgICBzZWxmLmJ1ZmZlciA9IGJ1ZmZlcgotICAgICAgICBzZWxm
LmVuY29kaW5nID0gZW5jb2RpbmcKLQotICAgIGRlZiB3cml0ZShzZWxmLCBvYmopOgotICAgICAg
ICBpZiBpc2luc3RhbmNlKG9iaiwgc2l4LnRleHRfdHlwZSk6Ci0gICAgICAgICAgICBvYmogPSBv
YmouZW5jb2RlKHNlbGYuZW5jb2RpbmcsICJyZXBsYWNlIikKLSAgICAgICAgc2VsZi5idWZmZXIu
d3JpdGUob2JqKQotCi0gICAgZGVmIHdyaXRlbGluZXMoc2VsZiwgbGluZWxpc3QpOgotICAgICAg
ICBkYXRhID0gJycuam9pbihsaW5lbGlzdCkKLSAgICAgICAgc2VsZi53cml0ZShkYXRhKQotCi0g
ICAgQHByb3BlcnR5Ci0gICAgZGVmIG5hbWUoc2VsZik6Ci0gICAgICAgICIiIkVuc3VyZSB0aGF0
IGZpbGUubmFtZSBpcyBhIHN0cmluZy4iIiIKLSAgICAgICAgcmV0dXJuIHJlcHIoc2VsZi5idWZm
ZXIpCi0KLSAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgbmFtZSk6Ci0gICAgICAgIHJldHVybiBn
ZXRhdHRyKG9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsICJidWZmZXIiKSwgbmFtZSkKLQot
Ci1DYXB0dXJlUmVzdWx0ID0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgiQ2FwdHVyZVJlc3VsdCIs
IFsib3V0IiwgImVyciJdKQotCi0KLWNsYXNzIE11bHRpQ2FwdHVyZShvYmplY3QpOgotICAgIG91
dCA9IGVyciA9IGluXyA9IE5vbmUKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvdXQ9VHJ1ZSwg
ZXJyPVRydWUsIGluXz1UcnVlLCBDYXB0dXJlPU5vbmUpOgotICAgICAgICBpZiBpbl86Ci0gICAg
ICAgICAgICBzZWxmLmluXyA9IENhcHR1cmUoMCkKLSAgICAgICAgaWYgb3V0OgotICAgICAgICAg
ICAgc2VsZi5vdXQgPSBDYXB0dXJlKDEpCi0gICAgICAgIGlmIGVycjoKLSAgICAgICAgICAgIHNl
bGYuZXJyID0gQ2FwdHVyZSgyKQotCi0gICAgZGVmIHN0YXJ0X2NhcHR1cmluZyhzZWxmKToKLSAg
ICAgICAgaWYgc2VsZi5pbl86Ci0gICAgICAgICAgICBzZWxmLmluXy5zdGFydCgpCi0gICAgICAg
IGlmIHNlbGYub3V0OgotICAgICAgICAgICAgc2VsZi5vdXQuc3RhcnQoKQotICAgICAgICBpZiBz
ZWxmLmVycjoKLSAgICAgICAgICAgIHNlbGYuZXJyLnN0YXJ0KCkKLQotICAgIGRlZiBwb3Bfb3V0
ZXJyX3RvX29yaWcoc2VsZik6Ci0gICAgICAgICIiIiBwb3AgY3VycmVudCBzbmFwc2hvdCBvdXQv
ZXJyIGNhcHR1cmUgYW5kIGZsdXNoIHRvIG9yaWcgc3RyZWFtcy4gIiIiCi0gICAgICAgIG91dCwg
ZXJyID0gc2VsZi5yZWFkb3V0ZXJyKCkKLSAgICAgICAgaWYgb3V0OgotICAgICAgICAgICAgc2Vs
Zi5vdXQud3JpdGVvcmcob3V0KQotICAgICAgICBpZiBlcnI6Ci0gICAgICAgICAgICBzZWxmLmVy
ci53cml0ZW9yZyhlcnIpCi0gICAgICAgIHJldHVybiBvdXQsIGVycgotCi0gICAgZGVmIHN1c3Bl
bmRfY2FwdHVyaW5nKHNlbGYsIGluXz1GYWxzZSk6Ci0gICAgICAgIGlmIHNlbGYub3V0OgotICAg
ICAgICAgICAgc2VsZi5vdXQuc3VzcGVuZCgpCi0gICAgICAgIGlmIHNlbGYuZXJyOgotICAgICAg
ICAgICAgc2VsZi5lcnIuc3VzcGVuZCgpCi0gICAgICAgIGlmIGluXyBhbmQgc2VsZi5pbl86Ci0g
ICAgICAgICAgICBzZWxmLmluXy5zdXNwZW5kKCkKLSAgICAgICAgICAgIHNlbGYuX2luX3N1c3Bl
bmRlZCA9IFRydWUKLQotICAgIGRlZiByZXN1bWVfY2FwdHVyaW5nKHNlbGYpOgotICAgICAgICBp
ZiBzZWxmLm91dDoKLSAgICAgICAgICAgIHNlbGYub3V0LnJlc3VtZSgpCi0gICAgICAgIGlmIHNl
bGYuZXJyOgotICAgICAgICAgICAgc2VsZi5lcnIucmVzdW1lKCkKLSAgICAgICAgaWYgaGFzYXR0
cihzZWxmLCAiX2luX3N1c3BlbmRlZCIpOgotICAgICAgICAgICAgc2VsZi5pbl8ucmVzdW1lKCkK
LSAgICAgICAgICAgIGRlbCBzZWxmLl9pbl9zdXNwZW5kZWQKLQotICAgIGRlZiBzdG9wX2NhcHR1
cmluZyhzZWxmKToKLSAgICAgICAgIiIiIHN0b3AgY2FwdHVyaW5nIGFuZCByZXNldCBjYXB0dXJp
bmcgc3RyZWFtcyAiIiIKLSAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAnX3Jlc2V0Jyk6Ci0gICAg
ICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ3YXMgYWxyZWFkeSBzdG9wcGVkIikKLSAgICAgICAg
c2VsZi5fcmVzZXQgPSBUcnVlCi0gICAgICAgIGlmIHNlbGYub3V0OgotICAgICAgICAgICAgc2Vs
Zi5vdXQuZG9uZSgpCi0gICAgICAgIGlmIHNlbGYuZXJyOgotICAgICAgICAgICAgc2VsZi5lcnIu
ZG9uZSgpCi0gICAgICAgIGlmIHNlbGYuaW5fOgotICAgICAgICAgICAgc2VsZi5pbl8uZG9uZSgp
Ci0KLSAgICBkZWYgcmVhZG91dGVycihzZWxmKToKLSAgICAgICAgIiIiIHJldHVybiBzbmFwc2hv
dCB1bmljb2RlIHZhbHVlIG9mIHN0ZG91dC9zdGRlcnIgY2FwdHVyaW5ncy4gIiIiCi0gICAgICAg
IHJldHVybiBDYXB0dXJlUmVzdWx0KHNlbGYub3V0LnNuYXAoKSBpZiBzZWxmLm91dCBpcyBub3Qg
Tm9uZSBlbHNlICIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmVyci5zbmFw
KCkgaWYgc2VsZi5lcnIgaXMgbm90IE5vbmUgZWxzZSAiIikKLQotCi1jbGFzcyBOb0NhcHR1cmU6
Ci0gICAgX19pbml0X18gPSBzdGFydCA9IGRvbmUgPSBzdXNwZW5kID0gcmVzdW1lID0gbGFtYmRh
ICphcmdzOiBOb25lCi0KLQotY2xhc3MgRkRDYXB0dXJlQmluYXJ5OgotICAgICIiIkNhcHR1cmUg
SU8gdG8vZnJvbSBhIGdpdmVuIG9zLWxldmVsIGZpbGVkZXNjcmlwdG9yLgotCi0gICAgc25hcCgp
IHByb2R1Y2VzIGBieXRlc2AKLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0YXJn
ZXRmZCwgdG1wZmlsZT1Ob25lKToKLSAgICAgICAgc2VsZi50YXJnZXRmZCA9IHRhcmdldGZkCi0g
ICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYudGFyZ2V0ZmRfc2F2ZSA9IG9zLmR1cChzZWxm
LnRhcmdldGZkKQotICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgIHNlbGYuc3Rh
cnQgPSBsYW1iZGE6IE5vbmUKLSAgICAgICAgICAgIHNlbGYuZG9uZSA9IGxhbWJkYTogTm9uZQot
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgdGFyZ2V0ZmQgPT0gMDoKLSAgICAgICAgICAg
ICAgICBhc3NlcnQgbm90IHRtcGZpbGUsICJjYW5ub3Qgc2V0IHRtcGZpbGUgd2l0aCBzdGRpbiIK
LSAgICAgICAgICAgICAgICB0bXBmaWxlID0gb3Blbihvcy5kZXZudWxsLCAiciIpCi0gICAgICAg
ICAgICAgICAgc2VsZi5zeXNjYXB0dXJlID0gU3lzQ2FwdHVyZSh0YXJnZXRmZCkKLSAgICAgICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaWYgdG1wZmlsZSBpcyBOb25lOgotICAgICAgICAg
ICAgICAgICAgICBmID0gVGVtcG9yYXJ5RmlsZSgpCi0gICAgICAgICAgICAgICAgICAgIHdpdGgg
ZjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcGZpbGUgPSBzYWZlX3RleHRfZHVwZmlsZShm
LCBtb2RlPSJ3YisiKQotICAgICAgICAgICAgICAgIGlmIHRhcmdldGZkIGluIHBhdGNoc3lzZGlj
dDoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5zeXNjYXB0dXJlID0gU3lzQ2FwdHVyZSh0YXJn
ZXRmZCwgdG1wZmlsZSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAg
ICBzZWxmLnN5c2NhcHR1cmUgPSBOb0NhcHR1cmUoKQotICAgICAgICAgICAgc2VsZi50bXBmaWxl
ID0gdG1wZmlsZQotICAgICAgICAgICAgc2VsZi50bXBmaWxlX2ZkID0gdG1wZmlsZS5maWxlbm8o
KQotCi0gICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIjxGRENhcHR1cmUg
JXMgb2xkZmQ9JXM+IiAlIChzZWxmLnRhcmdldGZkLCBzZWxmLnRhcmdldGZkX3NhdmUpCi0KLSAg
ICBkZWYgc3RhcnQoc2VsZik6Ci0gICAgICAgICIiIiBTdGFydCBjYXB0dXJpbmcgb24gdGFyZ2V0
ZmQgdXNpbmcgbWVtb3JpemVkIHRtcGZpbGUuICIiIgotICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICBvcy5mc3RhdChzZWxmLnRhcmdldGZkX3NhdmUpCi0gICAgICAgIGV4Y2VwdCAoQXR0cmlidXRl
RXJyb3IsIE9TRXJyb3IpOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigic2F2ZWQgZmls
ZWRlc2NyaXB0b3Igbm90IHZhbGlkIGFueW1vcmUiKQotICAgICAgICBvcy5kdXAyKHNlbGYudG1w
ZmlsZV9mZCwgc2VsZi50YXJnZXRmZCkKLSAgICAgICAgc2VsZi5zeXNjYXB0dXJlLnN0YXJ0KCkK
LQotICAgIGRlZiBzbmFwKHNlbGYpOgotICAgICAgICBzZWxmLnRtcGZpbGUuc2VlaygwKQotICAg
ICAgICByZXMgPSBzZWxmLnRtcGZpbGUucmVhZCgpCi0gICAgICAgIHNlbGYudG1wZmlsZS5zZWVr
KDApCi0gICAgICAgIHNlbGYudG1wZmlsZS50cnVuY2F0ZSgpCi0gICAgICAgIHJldHVybiByZXMK
LQotICAgIGRlZiBkb25lKHNlbGYpOgotICAgICAgICAiIiIgc3RvcCBjYXB0dXJpbmcsIHJlc3Rv
cmUgc3RyZWFtcywgcmV0dXJuIG9yaWdpbmFsIGNhcHR1cmUgZmlsZSwKLSAgICAgICAgc2Vla2Vk
IHRvIHBvc2l0aW9uIHplcm8uICIiIgotICAgICAgICB0YXJnZXRmZF9zYXZlID0gc2VsZi5fX2Rp
Y3RfXy5wb3AoInRhcmdldGZkX3NhdmUiKQotICAgICAgICBvcy5kdXAyKHRhcmdldGZkX3NhdmUs
IHNlbGYudGFyZ2V0ZmQpCi0gICAgICAgIG9zLmNsb3NlKHRhcmdldGZkX3NhdmUpCi0gICAgICAg
IHNlbGYuc3lzY2FwdHVyZS5kb25lKCkKLSAgICAgICAgc2VsZi50bXBmaWxlLmNsb3NlKCkKLQot
ICAgIGRlZiBzdXNwZW5kKHNlbGYpOgotICAgICAgICBzZWxmLnN5c2NhcHR1cmUuc3VzcGVuZCgp
Ci0gICAgICAgIG9zLmR1cDIoc2VsZi50YXJnZXRmZF9zYXZlLCBzZWxmLnRhcmdldGZkKQotCi0g
ICAgZGVmIHJlc3VtZShzZWxmKToKLSAgICAgICAgc2VsZi5zeXNjYXB0dXJlLnJlc3VtZSgpCi0g
ICAgICAgIG9zLmR1cDIoc2VsZi50bXBmaWxlX2ZkLCBzZWxmLnRhcmdldGZkKQotCi0gICAgZGVm
IHdyaXRlb3JnKHNlbGYsIGRhdGEpOgotICAgICAgICAiIiIgd3JpdGUgdG8gb3JpZ2luYWwgZmls
ZSBkZXNjcmlwdG9yLiAiIiIKLSAgICAgICAgaWYgaXNpbnN0YW5jZShkYXRhLCBzaXgudGV4dF90
eXBlKToKLSAgICAgICAgICAgIGRhdGEgPSBkYXRhLmVuY29kZSgidXRmOCIpICAjIFhYWCB1c2Ug
ZW5jb2Rpbmcgb2Ygb3JpZ2luYWwgc3RyZWFtCi0gICAgICAgIG9zLndyaXRlKHNlbGYudGFyZ2V0
ZmRfc2F2ZSwgZGF0YSkKLQotCi1jbGFzcyBGRENhcHR1cmUoRkRDYXB0dXJlQmluYXJ5KToKLSAg
ICAiIiJDYXB0dXJlIElPIHRvL2Zyb20gYSBnaXZlbiBvcy1sZXZlbCBmaWxlZGVzY3JpcHRvci4K
LQotICAgIHNuYXAoKSBwcm9kdWNlcyB0ZXh0Ci0gICAgIiIiCi0gICAgZGVmIHNuYXAoc2VsZik6
Ci0gICAgICAgIHJlcyA9IEZEQ2FwdHVyZUJpbmFyeS5zbmFwKHNlbGYpCi0gICAgICAgIGVuYyA9
IGdldGF0dHIoc2VsZi50bXBmaWxlLCAiZW5jb2RpbmciLCBOb25lKQotICAgICAgICBpZiBlbmMg
YW5kIGlzaW5zdGFuY2UocmVzLCBieXRlcyk6Ci0gICAgICAgICAgICByZXMgPSBzaXgudGV4dF90
eXBlKHJlcywgZW5jLCAicmVwbGFjZSIpCi0gICAgICAgIHJldHVybiByZXMKLQotCi1jbGFzcyBT
eXNDYXB0dXJlOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmZCwgdG1wZmlsZT1Ob25lKToKLSAg
ICAgICAgbmFtZSA9IHBhdGNoc3lzZGljdFtmZF0KLSAgICAgICAgc2VsZi5fb2xkID0gZ2V0YXR0
cihzeXMsIG5hbWUpCi0gICAgICAgIHNlbGYubmFtZSA9IG5hbWUKLSAgICAgICAgaWYgdG1wZmls
ZSBpcyBOb25lOgotICAgICAgICAgICAgaWYgbmFtZSA9PSAic3RkaW4iOgotICAgICAgICAgICAg
ICAgIHRtcGZpbGUgPSBEb250UmVhZEZyb21JbnB1dCgpCi0gICAgICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgICAgIHRtcGZpbGUgPSBDYXB0dXJlSU8oKQotICAgICAgICBzZWxmLnRtcGZpbGUg
PSB0bXBmaWxlCi0KLSAgICBkZWYgc3RhcnQoc2VsZik6Ci0gICAgICAgIHNldGF0dHIoc3lzLCBz
ZWxmLm5hbWUsIHNlbGYudG1wZmlsZSkKLQotICAgIGRlZiBzbmFwKHNlbGYpOgotICAgICAgICBy
ZXMgPSBzZWxmLnRtcGZpbGUuZ2V0dmFsdWUoKQotICAgICAgICBzZWxmLnRtcGZpbGUuc2Vlaygw
KQotICAgICAgICBzZWxmLnRtcGZpbGUudHJ1bmNhdGUoKQotICAgICAgICByZXR1cm4gcmVzCi0K
LSAgICBkZWYgZG9uZShzZWxmKToKLSAgICAgICAgc2V0YXR0cihzeXMsIHNlbGYubmFtZSwgc2Vs
Zi5fb2xkKQotICAgICAgICBkZWwgc2VsZi5fb2xkCi0gICAgICAgIHNlbGYudG1wZmlsZS5jbG9z
ZSgpCi0KLSAgICBkZWYgc3VzcGVuZChzZWxmKToKLSAgICAgICAgc2V0YXR0cihzeXMsIHNlbGYu
bmFtZSwgc2VsZi5fb2xkKQotCi0gICAgZGVmIHJlc3VtZShzZWxmKToKLSAgICAgICAgc2V0YXR0
cihzeXMsIHNlbGYubmFtZSwgc2VsZi50bXBmaWxlKQotCi0gICAgZGVmIHdyaXRlb3JnKHNlbGYs
IGRhdGEpOgotICAgICAgICBzZWxmLl9vbGQud3JpdGUoZGF0YSkKLSAgICAgICAgc2VsZi5fb2xk
LmZsdXNoKCkKLQotCi1jbGFzcyBTeXNDYXB0dXJlQmluYXJ5KFN5c0NhcHR1cmUpOgotICAgIGRl
ZiBzbmFwKHNlbGYpOgotICAgICAgICByZXMgPSBzZWxmLnRtcGZpbGUuYnVmZmVyLmdldHZhbHVl
KCkKLSAgICAgICAgc2VsZi50bXBmaWxlLnNlZWsoMCkKLSAgICAgICAgc2VsZi50bXBmaWxlLnRy
dW5jYXRlKCkKLSAgICAgICAgcmV0dXJuIHJlcwotCi0KLWNsYXNzIERvbnRSZWFkRnJvbUlucHV0
OgotICAgICIiIlRlbXBvcmFyeSBzdHViIGNsYXNzLiAgSWRlYWxseSB3aGVuIHN0ZGluIGlzIGFj
Y2Vzc2VkLCB0aGUKLSAgICBjYXB0dXJpbmcgc2hvdWxkIGJlIHR1cm5lZCBvZmYsIHdpdGggcG9z
c2libHkgYWxsIGRhdGEgY2FwdHVyZWQKLSAgICBzbyBmYXIgc2VudCB0byB0aGUgc2NyZWVuLiAg
VGhpcyBzaG91bGQgYmUgY29uZmlndXJhYmxlLCB0aG91Z2gsCi0gICAgYmVjYXVzZSBpbiBhdXRv
bWF0ZWQgdGVzdCBydW5zIGl0IGlzIGJldHRlciB0byBjcmFzaCB0aGFuCi0gICAgaGFuZyBpbmRl
ZmluaXRlbHkuCi0gICAgIiIiCi0KLSAgICBlbmNvZGluZyA9IE5vbmUKLQotICAgIGRlZiByZWFk
KHNlbGYsICphcmdzKToKLSAgICAgICAgcmFpc2UgSU9FcnJvcigicmVhZGluZyBmcm9tIHN0ZGlu
IHdoaWxlIG91dHB1dCBpcyBjYXB0dXJlZCIpCi0gICAgcmVhZGxpbmUgPSByZWFkCi0gICAgcmVh
ZGxpbmVzID0gcmVhZAotICAgIF9faXRlcl9fID0gcmVhZAotCi0gICAgZGVmIGZpbGVubyhzZWxm
KToKLSAgICAgICAgcmFpc2UgVW5zdXBwb3J0ZWRPcGVyYXRpb24oInJlZGlyZWN0ZWQgc3RkaW4g
aXMgcHNldWRvZmlsZSwgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFz
IG5vIGZpbGVubygpIikKLQotICAgIGRlZiBpc2F0dHkoc2VsZik6Ci0gICAgICAgIHJldHVybiBG
YWxzZQotCi0gICAgZGVmIGNsb3NlKHNlbGYpOgotICAgICAgICBwYXNzCi0KLSAgICBAcHJvcGVy
dHkKLSAgICBkZWYgYnVmZmVyKHNlbGYpOgotICAgICAgICBpZiBzeXMudmVyc2lvbl9pbmZvID49
ICgzLCAwKToKLSAgICAgICAgICAgIHJldHVybiBzZWxmCi0gICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigncmVkaXJlY3RlZCBzdGRpbiBoYXMgbm8gYXR0cmli
dXRlIGJ1ZmZlcicpCi0KLQotZGVmIF9jb2xvcmFtYV93b3JrYXJvdW5kKCk6Ci0gICAgIiIiCi0g
ICAgRW5zdXJlIGNvbG9yYW1hIGlzIGltcG9ydGVkIHNvIHRoYXQgaXQgYXR0YWNoZXMgdG8gdGhl
IGNvcnJlY3Qgc3RkaW8KLSAgICBoYW5kbGVzIG9uIFdpbmRvd3MuCi0KLSAgICBjb2xvcmFtYSB1
c2VzIHRoZSB0ZXJtaW5hbCBvbiBpbXBvcnQgdGltZS4gU28gaWYgc29tZXRoaW5nIGRvZXMgdGhl
Ci0gICAgZmlyc3QgaW1wb3J0IG9mIGNvbG9yYW1hIHdoaWxlIEkvTyBjYXB0dXJlIGlzIGFjdGl2
ZSwgY29sb3JhbWEgd2lsbAotICAgIGZhaWwgaW4gdmFyaW91cyB3YXlzLgotICAgICIiIgotCi0g
ICAgaWYgbm90IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4zMicpOgotICAgICAgICByZXR1
cm4KLSAgICB0cnk6Ci0gICAgICAgIGltcG9ydCBjb2xvcmFtYSAgIyBub3FhCi0gICAgZXhjZXB0
IEltcG9ydEVycm9yOgotICAgICAgICBwYXNzCi0KLQotZGVmIF9yZWFkbGluZV93b3JrYXJvdW5k
KCk6Ci0gICAgIiIiCi0gICAgRW5zdXJlIHJlYWRsaW5lIGlzIGltcG9ydGVkIHNvIHRoYXQgaXQg
YXR0YWNoZXMgdG8gdGhlIGNvcnJlY3Qgc3RkaW8KLSAgICBoYW5kbGVzIG9uIFdpbmRvd3MuCi0K
LSAgICBQZGIgdXNlcyByZWFkbGluZSBzdXBwb3J0IHdoZXJlIGF2YWlsYWJsZS0td2hlbiBub3Qg
cnVubmluZyBmcm9tIHRoZSBQeXRob24KLSAgICBwcm9tcHQsIHRoZSByZWFkbGluZSBtb2R1bGUg
aXMgbm90IGltcG9ydGVkIHVudGlsIHJ1bm5pbmcgdGhlIHBkYiBSRVBMLiAgSWYKLSAgICBydW5u
aW5nIHB5dGVzdCB3aXRoIHRoZSAtLXBkYiBvcHRpb24gdGhpcyBtZWFucyB0aGUgcmVhZGxpbmUg
bW9kdWxlIGlzIG5vdAotICAgIGltcG9ydGVkIHVudGlsIGFmdGVyIEkvTyBjYXB0dXJlIGhhcyBi
ZWVuIHN0YXJ0ZWQuCi0KLSAgICBUaGlzIGlzIGEgcHJvYmxlbSBmb3IgcHlyZWFkbGluZSwgd2hp
Y2ggaXMgb2Z0ZW4gdXNlZCB0byBpbXBsZW1lbnQgcmVhZGxpbmUKLSAgICBzdXBwb3J0IG9uIFdp
bmRvd3MsIGFzIGl0IGRvZXMgbm90IGF0dGFjaCB0byB0aGUgY29ycmVjdCBoYW5kbGVzIGZvciBz
dGRvdXQKLSAgICBhbmQvb3Igc3RkaW4gaWYgdGhleSBoYXZlIGJlZW4gcmVkaXJlY3RlZCBieSB0
aGUgRkRDYXB0dXJlIG1lY2hhbmlzbS4gIFRoaXMKLSAgICB3b3JrYXJvdW5kIGVuc3VyZXMgdGhh
dCByZWFkbGluZSBpcyBpbXBvcnRlZCBiZWZvcmUgSS9PIGNhcHR1cmUgaXMgc2V0dXAgc28KLSAg
ICB0aGF0IGl0IGNhbiBhdHRhY2ggdG8gdGhlIGFjdHVhbCBzdGRpbi9vdXQgZm9yIHRoZSBjb25z
b2xlLgotCi0gICAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC9wdWxs
LzEyODEKLSAgICAiIiIKLQotICAgIGlmIG5vdCBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2lu
MzInKToKLSAgICAgICAgcmV0dXJuCi0gICAgdHJ5OgotICAgICAgICBpbXBvcnQgcmVhZGxpbmUg
ICMgbm9xYQotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgcGFzcwotCi0KLWRlZiBf
cHkzNl93aW5kb3dzY29uc29sZWlvX3dvcmthcm91bmQoc3RyZWFtKToKLSAgICAiIiIKLSAgICBQ
eXRob24gMy42IGltcGxlbWVudGVkIHVuaWNvZGUgY29uc29sZSBoYW5kbGluZyBmb3IgV2luZG93
cy4gVGhpcyB3b3JrcwotICAgIGJ5IHJlYWRpbmcvd3JpdGluZyB0byB0aGUgcmF3IGNvbnNvbGUg
aGFuZGxlIHVzaW5nCi0gICAgYGB7UmVhZCxXcml0ZX1Db25zb2xlV2BgLgotCi0gICAgVGhlIHBy
b2JsZW0gaXMgdGhhdCB3ZSBhcmUgZ29pbmcgdG8gYGBkdXAyYGAgb3ZlciB0aGUgc3RkaW8gZmls
ZQotICAgIGRlc2NyaXB0b3JzIHdoZW4gZG9pbmcgYGBGRENhcHR1cmVgYCBhbmQgdGhpcyB3aWxs
IGBgQ2xvc2VIYW5kbGVgYCB0aGUKLSAgICBoYW5kbGVzIHVzZWQgYnkgUHl0aG9uIHRvIHdyaXRl
IHRvIHRoZSBjb25zb2xlLiBUaG91Z2ggdGhlcmUgaXMgc3RpbGwgc29tZQotICAgIHdlaXJkbmVz
cyBhbmQgdGhlIGNvbnNvbGUgaGFuZGxlIHNlZW1zIHRvIG9ubHkgYmUgY2xvc2VkIHJhbmRvbWx5
IGFuZCBub3QKLSAgICBvbiB0aGUgZmlyc3QgY2FsbCB0byBgYENsb3NlSGFuZGxlYGAsIG9yIG1h
eWJlIGl0IGdldHMgcmVvcGVuZWQgd2l0aCB0aGUKLSAgICBzYW1lIGhhbmRsZSB2YWx1ZSB3aGVu
IHdlIHN1c3BlbmQgY2FwdHVyaW5nLgotCi0gICAgVGhlIHdvcmthcm91bmQgaW4gdGhpcyBjYXNl
IHdpbGwgcmVvcGVuIHN0ZGlvIHdpdGggYSBkaWZmZXJlbnQgZmQgd2hpY2gKLSAgICBhbHNvIG1l
YW5zIGEgZGlmZmVyZW50IGhhbmRsZSBieSByZXBsaWNhdGluZyB0aGUgbG9naWMgaW4KLSAgICAi
UHlfbGlmZWN5Y2xlLmM6aW5pdHN0ZGlvL2NyZWF0ZV9zdGRpbyIuCi0KLSAgICA6cGFyYW0gc3Ry
ZWFtOiBpbiBwcmFjdGljZSBgYHN5cy5zdGRvdXRgYCBvciBgYHN5cy5zdGRlcnJgYCwgYnV0IGdp
dmVuCi0gICAgICAgIGhlcmUgYXMgcGFyYW1ldGVyIGZvciB1bml0dGVzdGluZyBwdXJwb3Nlcy4K
LQotICAgIFNlZSBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weS9pc3N1ZXMvMTAzCi0g
ICAgIiIiCi0gICAgaWYgbm90IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4zMicpIG9yIHN5
cy52ZXJzaW9uX2luZm9bOjJdIDwgKDMsIDYpOgotICAgICAgICByZXR1cm4KLQotICAgICMgYmFp
bCBvdXQgaWYgYGBzdHJlYW1gYCBkb2Vzbid0IHNlZW0gbGlrZSBhIHByb3BlciBgYGlvYGAgc3Ry
ZWFtICgjMjY2NikKLSAgICBpZiBub3QgaGFzYXR0cihzdHJlYW0sICdidWZmZXInKToKLSAgICAg
ICAgcmV0dXJuCi0KLSAgICBidWZmZXJlZCA9IGhhc2F0dHIoc3RyZWFtLmJ1ZmZlciwgJ3Jhdycp
Ci0gICAgcmF3X3N0ZG91dCA9IHN0cmVhbS5idWZmZXIucmF3IGlmIGJ1ZmZlcmVkIGVsc2Ugc3Ry
ZWFtLmJ1ZmZlcgotCi0gICAgaWYgbm90IGlzaW5zdGFuY2UocmF3X3N0ZG91dCwgaW8uX1dpbmRv
d3NDb25zb2xlSU8pOgotICAgICAgICByZXR1cm4KLQotICAgIGRlZiBfcmVvcGVuX3N0ZGlvKGYs
IG1vZGUpOgotICAgICAgICBpZiBub3QgYnVmZmVyZWQgYW5kIG1vZGVbMF0gPT0gJ3cnOgotICAg
ICAgICAgICAgYnVmZmVyaW5nID0gMAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYnVmZmVy
aW5nID0gLTEKLQotICAgICAgICByZXR1cm4gaW8uVGV4dElPV3JhcHBlcigKLSAgICAgICAgICAg
IG9wZW4ob3MuZHVwKGYuZmlsZW5vKCkpLCBtb2RlLCBidWZmZXJpbmcpLAotICAgICAgICAgICAg
Zi5lbmNvZGluZywKLSAgICAgICAgICAgIGYuZXJyb3JzLAotICAgICAgICAgICAgZi5uZXdsaW5l
cywKLSAgICAgICAgICAgIGYubGluZV9idWZmZXJpbmcpCi0KLSAgICBzeXMuX19zdGRpbl9fID0g
c3lzLnN0ZGluID0gX3Jlb3Blbl9zdGRpbyhzeXMuc3RkaW4sICdyYicpCi0gICAgc3lzLl9fc3Rk
b3V0X18gPSBzeXMuc3Rkb3V0ID0gX3Jlb3Blbl9zdGRpbyhzeXMuc3Rkb3V0LCAnd2InKQotICAg
IHN5cy5fX3N0ZGVycl9fID0gc3lzLnN0ZGVyciA9IF9yZW9wZW5fc3RkaW8oc3lzLnN0ZGVyciwg
J3diJykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvY29tcGF0LnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvX3B5dGVzdC9jb21wYXQucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1
NjBmYmVjMzk3NTU1NzQ3ZmMxNGEzYWFlMjM4Njg2Njg3OGMxODAuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9jb21wYXQu
cHkKKysrIC9kZXYvbnVsbApAQCAtMSwzMjIgKzAsMCBAQAotIiIiCi1weXRob24gdmVyc2lvbiBj
b21wYXRpYmlsaXR5IGNvZGUKLSIiIgotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9p
bXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotCi1pbXBvcnQgY29kZWNzCi1pbXBvcnQg
ZnVuY3Rvb2xzCi1pbXBvcnQgaW5zcGVjdAotaW1wb3J0IHJlCi1pbXBvcnQgc3lzCi0KLWltcG9y
dCBweQotCi1pbXBvcnQgX3B5dGVzdAotZnJvbSBfcHl0ZXN0Lm91dGNvbWVzIGltcG9ydCBURVNU
X09VVENPTUUKLQotdHJ5OgotICAgIGltcG9ydCBlbnVtCi1leGNlcHQgSW1wb3J0RXJyb3I6ICAj
IHByYWdtYTogbm8gY292ZXIKLSAgICAjIE9ubHkgYXZhaWxhYmxlIGluIFB5dGhvbiAzLjQrIG9y
IGFzIGEgYmFja3BvcnQKLSAgICBlbnVtID0gTm9uZQotCi0KLV9QWTMgPSBzeXMudmVyc2lvbl9p
bmZvID4gKDMsIDApCi1fUFkyID0gbm90IF9QWTMKLQotCi1pZiBfUFkzOgotICAgIGZyb20gaW5z
cGVjdCBpbXBvcnQgc2lnbmF0dXJlLCBQYXJhbWV0ZXIgYXMgUGFyYW1ldGVyCi1lbHNlOgotICAg
IGZyb20gZnVuY3NpZ3MgaW1wb3J0IHNpZ25hdHVyZSwgUGFyYW1ldGVyIGFzIFBhcmFtZXRlcgot
Ci0KLU5vbmVUeXBlID0gdHlwZShOb25lKQotTk9UU0VUID0gb2JqZWN0KCkKLQotUFkzNSA9IHN5
cy52ZXJzaW9uX2luZm9bOjJdID49ICgzLCA1KQotUFkzNiA9IHN5cy52ZXJzaW9uX2luZm9bOjJd
ID49ICgzLCA2KQotTU9EVUxFX05PVF9GT1VORF9FUlJPUiA9ICdNb2R1bGVOb3RGb3VuZEVycm9y
JyBpZiBQWTM2IGVsc2UgJ0ltcG9ydEVycm9yJwotCi0KLWRlZiBfZm9ybWF0X2FyZ3MoZnVuYyk6
Ci0gICAgcmV0dXJuIHN0cihzaWduYXR1cmUoZnVuYykpCi0KLQotaXNmdW5jdGlvbiA9IGluc3Bl
Y3QuaXNmdW5jdGlvbgotaXNjbGFzcyA9IGluc3BlY3QuaXNjbGFzcwotIyB1c2VkIHRvIHdvcmsg
YXJvdW5kIGEgcHl0aG9uMiBleGNlcHRpb24gaW5mbyBsZWFrCi1leGNfY2xlYXIgPSBnZXRhdHRy
KHN5cywgJ2V4Y19jbGVhcicsIGxhbWJkYTogTm9uZSkKLSMgVGhlIHR5cGUgb2YgcmUuY29tcGls
ZSBvYmplY3RzIGlzIG5vdCBleHBvc2VkIGluIFB5dGhvbi4KLVJFR0VYX1RZUEUgPSB0eXBlKHJl
LmNvbXBpbGUoJycpKQotCi0KLWRlZiBpc19nZW5lcmF0b3IoZnVuYyk6Ci0gICAgZ2VuZnVuYyA9
IGluc3BlY3QuaXNnZW5lcmF0b3JmdW5jdGlvbihmdW5jKQotICAgIHJldHVybiBnZW5mdW5jIGFu
ZCBub3QgaXNjb3JvdXRpbmVmdW5jdGlvbihmdW5jKQotCi0KLWRlZiBpc2Nvcm91dGluZWZ1bmN0
aW9uKGZ1bmMpOgotICAgICIiIlJldHVybiBUcnVlIGlmIGZ1bmMgaXMgYSBkZWNvcmF0ZWQgY29y
b3V0aW5lIGZ1bmN0aW9uLgotCi0gICAgTm90ZTogY29waWVkIGFuZCBtb2RpZmllZCBmcm9tIFB5
dGhvbiAzLjUncyBidWlsdGluIGNvdXJvdXRpbmVzLnB5IHRvIGF2b2lkIGltcG9ydCBhc3luY2lv
IGRpcmVjdGx5LAotICAgIHdoaWNoIGluIHR1cm5zIGFsc28gaW5pdGlhbGl6ZXMgdGhlICJsb2dn
aW5nIiBtb2R1bGUgYXMgc2lkZS1lZmZlY3QgKHNlZSBpc3N1ZSAjOCkuCi0gICAgIiIiCi0gICAg
cmV0dXJuIChnZXRhdHRyKGZ1bmMsICdfaXNfY29yb3V0aW5lJywgRmFsc2UpIG9yCi0gICAgICAg
ICAgICAoaGFzYXR0cihpbnNwZWN0LCAnaXNjb3JvdXRpbmVmdW5jdGlvbicpIGFuZCBpbnNwZWN0
LmlzY29yb3V0aW5lZnVuY3Rpb24oZnVuYykpKQotCi0KLWRlZiBnZXRsb2NhdGlvbihmdW5jdGlv
biwgY3VyZGlyKToKLSAgICBmbiA9IHB5LnBhdGgubG9jYWwoaW5zcGVjdC5nZXRmaWxlKGZ1bmN0
aW9uKSkKLSAgICBsaW5lbm8gPSBweS5idWlsdGluLl9nZXRjb2RlKGZ1bmN0aW9uKS5jb19maXJz
dGxpbmVubwotICAgIGlmIGZuLnJlbHRvKGN1cmRpcik6Ci0gICAgICAgIGZuID0gZm4ucmVsdG8o
Y3VyZGlyKQotICAgIHJldHVybiAiJXM6JWQiICUgKGZuLCBsaW5lbm8gKyAxKQotCi0KLWRlZiBu
dW1fbW9ja19wYXRjaF9hcmdzKGZ1bmN0aW9uKToKLSAgICAiIiIgcmV0dXJuIG51bWJlciBvZiBh
cmd1bWVudHMgdXNlZCB1cCBieSBtb2NrIGFyZ3VtZW50cyAoaWYgYW55KSAiIiIKLSAgICBwYXRj
aGluZ3MgPSBnZXRhdHRyKGZ1bmN0aW9uLCAicGF0Y2hpbmdzIiwgTm9uZSkKLSAgICBpZiBub3Qg
cGF0Y2hpbmdzOgotICAgICAgICByZXR1cm4gMAotICAgIG1vY2sgPSBzeXMubW9kdWxlcy5nZXQo
Im1vY2siLCBzeXMubW9kdWxlcy5nZXQoInVuaXR0ZXN0Lm1vY2siLCBOb25lKSkKLSAgICBpZiBt
b2NrIGlzIG5vdCBOb25lOgotICAgICAgICByZXR1cm4gbGVuKFtwIGZvciBwIGluIHBhdGNoaW5n
cwotICAgICAgICAgICAgICAgICAgICBpZiBub3QgcC5hdHRyaWJ1dGVfbmFtZSBhbmQgcC5uZXcg
aXMgbW9jay5ERUZBVUxUXSkKLSAgICByZXR1cm4gbGVuKHBhdGNoaW5ncykKLQotCi1kZWYgZ2V0
ZnVuY2FyZ25hbWVzKGZ1bmN0aW9uLCBpc19tZXRob2Q9RmFsc2UsIGNscz1Ob25lKToKLSAgICAi
IiJSZXR1cm5zIHRoZSBuYW1lcyBvZiBhIGZ1bmN0aW9uJ3MgbWFuZGF0b3J5IGFyZ3VtZW50cy4K
LQotICAgIFRoaXMgc2hvdWxkIHJldHVybiB0aGUgbmFtZXMgb2YgYWxsIGZ1bmN0aW9uIGFyZ3Vt
ZW50cyB0aGF0OgotICAgICAgICAqIEFyZW4ndCBib3VuZCB0byBhbiBpbnN0YW5jZSBvciB0eXBl
IGFzIGluIGluc3RhbmNlIG9yIGNsYXNzIG1ldGhvZHMuCi0gICAgICAgICogRG9uJ3QgaGF2ZSBk
ZWZhdWx0IHZhbHVlcy4KLSAgICAgICAgKiBBcmVuJ3QgYm91bmQgd2l0aCBmdW5jdG9vbHMucGFy
dGlhbC4KLSAgICAgICAgKiBBcmVuJ3QgcmVwbGFjZWQgd2l0aCBtb2Nrcy4KLQotICAgIFRoZSBp
c19tZXRob2QgYW5kIGNscyBhcmd1bWVudHMgaW5kaWNhdGUgdGhhdCB0aGUgZnVuY3Rpb24gc2hv
dWxkCi0gICAgYmUgdHJlYXRlZCBhcyBhIGJvdW5kIG1ldGhvZCBldmVuIHRob3VnaCBpdCdzIG5v
dCB1bmxlc3MsIG9ubHkgaW4KLSAgICB0aGUgY2FzZSBvZiBjbHMsIHRoZSBmdW5jdGlvbiBpcyBh
IHN0YXRpYyBtZXRob2QuCi0KLSAgICBAUm9ubnlQZmFubnNjaG1pZHQ6IFRoaXMgZnVuY3Rpb24g
c2hvdWxkIGJlIHJlZmFjdG9yZWQgd2hlbiB3ZQotICAgIHJldmlzaXQgZml4dHVyZXMuIFRoZSBm
aXh0dXJlIG1lY2hhbmlzbSBzaG91bGQgYXNrIHRoZSBub2RlIGZvcgotICAgIHRoZSBmaXh0dXJl
IG5hbWVzLCBhbmQgbm90IHRyeSB0byBvYnRhaW4gZGlyZWN0bHkgZnJvbSB0aGUKLSAgICBmdW5j
dGlvbiBvYmplY3Qgd2VsbCBhZnRlciBjb2xsZWN0aW9uIGhhcyBvY2N1cnJlZC4KLQotICAgICIi
IgotICAgICMgVGhlIHBhcmFtZXRlcnMgYXR0cmlidXRlIG9mIGEgU2lnbmF0dXJlIG9iamVjdCBj
b250YWlucyBhbgotICAgICMgb3JkZXJlZCBtYXBwaW5nIG9mIHBhcmFtZXRlciBuYW1lcyB0byBQ
YXJhbWV0ZXIgaW5zdGFuY2VzLiAgVGhpcwotICAgICMgY3JlYXRlcyBhIHR1cGxlIG9mIHRoZSBu
YW1lcyBvZiB0aGUgcGFyYW1ldGVycyB0aGF0IGRvbid0IGhhdmUKLSAgICAjIGRlZmF1bHRzLgot
ICAgIGFyZ19uYW1lcyA9IHR1cGxlKHAubmFtZSBmb3IgcCBpbiBzaWduYXR1cmUoZnVuY3Rpb24p
LnBhcmFtZXRlcnMudmFsdWVzKCkKLSAgICAgICAgICAgICAgICAgICAgICBpZiAocC5raW5kIGlz
IFBhcmFtZXRlci5QT1NJVElPTkFMX09SX0tFWVdPUkQgb3IKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgcC5raW5kIGlzIFBhcmFtZXRlci5LRVlXT1JEX09OTFkpIGFuZAotICAgICAgICAgICAg
ICAgICAgICAgIHAuZGVmYXVsdCBpcyBQYXJhbWV0ZXIuZW1wdHkpCi0gICAgIyBJZiB0aGlzIGZ1
bmN0aW9uIHNob3VsZCBiZSB0cmVhdGVkIGFzIGEgYm91bmQgbWV0aG9kIGV2ZW4gdGhvdWdoCi0g
ICAgIyBpdCdzIHBhc3NlZCBhcyBhbiB1bmJvdW5kIG1ldGhvZCBvciBmdW5jdGlvbiwgcmVtb3Zl
IHRoZSBmaXJzdAotICAgICMgcGFyYW1ldGVyIG5hbWUuCi0gICAgaWYgKGlzX21ldGhvZCBvcgot
ICAgICAgICAoY2xzIGFuZCBub3QgaXNpbnN0YW5jZShjbHMuX19kaWN0X18uZ2V0KGZ1bmN0aW9u
Ll9fbmFtZV9fLCBOb25lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGlj
bWV0aG9kKSkpOgotICAgICAgICBhcmdfbmFtZXMgPSBhcmdfbmFtZXNbMTpdCi0gICAgIyBSZW1v
dmUgYW55IG5hbWVzIHRoYXQgd2lsbCBiZSByZXBsYWNlZCB3aXRoIG1vY2tzLgotICAgIGlmIGhh
c2F0dHIoZnVuY3Rpb24sICJfX3dyYXBwZWRfXyIpOgotICAgICAgICBhcmdfbmFtZXMgPSBhcmdf
bmFtZXNbbnVtX21vY2tfcGF0Y2hfYXJncyhmdW5jdGlvbik6XQotICAgIHJldHVybiBhcmdfbmFt
ZXMKLQotCi1pZiBfUFkzOgotICAgIFNUUklOR19UWVBFUyA9IGJ5dGVzLCBzdHIKLSAgICBVTklD
T0RFX1RZUEVTID0gc3RyLAotCi0gICAgaWYgUFkzNToKLSAgICAgICAgZGVmIF9ieXRlc190b19h
c2NpaSh2YWwpOgotICAgICAgICAgICAgcmV0dXJuIHZhbC5kZWNvZGUoJ2FzY2lpJywgJ2JhY2tz
bGFzaHJlcGxhY2UnKQotICAgIGVsc2U6Ci0gICAgICAgIGRlZiBfYnl0ZXNfdG9fYXNjaWkodmFs
KToKLSAgICAgICAgICAgIGlmIHZhbDoKLSAgICAgICAgICAgICAgICAjIHNvdXJjZTogaHR0cDov
L2dvby5nbC9iR3Nud0MKLSAgICAgICAgICAgICAgICBlbmNvZGVkX2J5dGVzLCBfID0gY29kZWNz
LmVzY2FwZV9lbmNvZGUodmFsKQotICAgICAgICAgICAgICAgIHJldHVybiBlbmNvZGVkX2J5dGVz
LmRlY29kZSgnYXNjaWknKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIGVt
cHR5IGJ5dGVzIGNyYXNoZXMgY29kZWNzLmVzY2FwZV9lbmNvZGUgKCMxMDg3KQotICAgICAgICAg
ICAgICAgIHJldHVybiAnJwotCi0gICAgZGVmIGFzY2lpX2VzY2FwZWQodmFsKToKLSAgICAgICAg
IiIiSWYgdmFsIGlzIHB1cmUgYXNjaWksIHJldHVybnMgaXQgYXMgYSBzdHIoKS4gIE90aGVyd2lz
ZSwgZXNjYXBlcwotICAgICAgICBieXRlcyBvYmplY3RzIGludG8gYSBzZXF1ZW5jZSBvZiBlc2Nh
cGVkIGJ5dGVzOgotCi0gICAgICAgIGInXHhjM1x4YjRceGM1XHhkNicgLT4gdSdcXHhjM1xceGI0
XFx4YzVcXHhkNicKLQotICAgICAgICBhbmQgZXNjYXBlcyB1bmljb2RlIG9iamVjdHMgaW50byBh
IHNlcXVlbmNlIG9mIGVzY2FwZWQgdW5pY29kZQotICAgICAgICBpZHMsIGUuZy46Ci0KLSAgICAg
ICAgJzRcXG5WXFxVMDAwNDNlZmFcXHgwZU1YV0JcXHgxZVxcdTMwMjhcXHUxNWZkXFx4Y2RcXFUw
MDA3ZDk0NCcKLQotICAgICAgICBub3RlOgotICAgICAgICAgICB0aGUgb2J2aW91cyAidi5kZWNv
ZGUoJ3VuaWNvZGUtZXNjYXBlJykiIHdpbGwgcmV0dXJuCi0gICAgICAgICAgIHZhbGlkIHV0Zi04
IHVuaWNvZGUgaWYgaXQgZmluZHMgdGhlbSBpbiBieXRlcywgYnV0IHdlCi0gICAgICAgICAgIHdh
bnQgdG8gcmV0dXJuIGVzY2FwZWQgYnl0ZXMgZm9yIGFueSBieXRlLCBldmVuIGlmIHRoZXkgbWF0
Y2gKLSAgICAgICAgICAgYSB1dGYtOCBzdHJpbmcuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIGlm
IGlzaW5zdGFuY2UodmFsLCBieXRlcyk6Ci0gICAgICAgICAgICByZXR1cm4gX2J5dGVzX3RvX2Fz
Y2lpKHZhbCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiB2YWwuZW5jb2RlKCd1
bmljb2RlX2VzY2FwZScpLmRlY29kZSgnYXNjaWknKQotZWxzZToKLSAgICBTVFJJTkdfVFlQRVMg
PSBieXRlcywgc3RyLCB1bmljb2RlCi0gICAgVU5JQ09ERV9UWVBFUyA9IHVuaWNvZGUsCi0KLSAg
ICBkZWYgYXNjaWlfZXNjYXBlZCh2YWwpOgotICAgICAgICAiIiJJbiBweTIgYnl0ZXMgYW5kIHN0
ciBhcmUgdGhlIHNhbWUgdHlwZSwgc28gcmV0dXJuIGlmIGl0J3MgYSBieXRlcwotICAgICAgICBv
YmplY3QsIHJldHVybiBpdCB1bmNoYW5nZWQgaWYgaXQgaXMgYSBmdWxsIGFzY2lpIHN0cmluZywK
LSAgICAgICAgb3RoZXJ3aXNlIGVzY2FwZSBpdCBpbnRvIGl0cyBiaW5hcnkgZm9ybS4KLQotICAg
ICAgICBJZiBpdCdzIGEgdW5pY29kZSBzdHJpbmcsIGNoYW5nZSB0aGUgdW5pY29kZSBjaGFyYWN0
ZXJzIGludG8KLSAgICAgICAgdW5pY29kZSBlc2NhcGVzLgotCi0gICAgICAgICIiIgotICAgICAg
ICBpZiBpc2luc3RhbmNlKHZhbCwgYnl0ZXMpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAg
ICAgICAgIHJldHVybiB2YWwuZW5jb2RlKCdhc2NpaScpCi0gICAgICAgICAgICBleGNlcHQgVW5p
Y29kZURlY29kZUVycm9yOgotICAgICAgICAgICAgICAgIHJldHVybiB2YWwuZW5jb2RlKCdzdHJp
bmctZXNjYXBlJykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiB2YWwuZW5jb2Rl
KCd1bmljb2RlLWVzY2FwZScpCi0KLQotZGVmIGdldF9yZWFsX2Z1bmMob2JqKToKLSAgICAiIiIg
Z2V0cyB0aGUgcmVhbCBmdW5jdGlvbiBvYmplY3Qgb2YgdGhlIChwb3NzaWJseSkgd3JhcHBlZCBv
YmplY3QgYnkKLSAgICBmdW5jdG9vbHMud3JhcHMgb3IgZnVuY3Rvb2xzLnBhcnRpYWwuCi0gICAg
IiIiCi0gICAgc3RhcnRfb2JqID0gb2JqCi0gICAgZm9yIGkgaW4gcmFuZ2UoMTAwKToKLSAgICAg
ICAgbmV3X29iaiA9IGdldGF0dHIob2JqLCAnX193cmFwcGVkX18nLCBOb25lKQotICAgICAgICBp
ZiBuZXdfb2JqIGlzIE5vbmU6Ci0gICAgICAgICAgICBicmVhawotICAgICAgICBvYmogPSBuZXdf
b2JqCi0gICAgZWxzZToKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKLSAgICAgICAgICAgICgi
Y291bGQgbm90IGZpbmQgcmVhbCBmdW5jdGlvbiBvZiB7c3RhcnR9IgotICAgICAgICAgICAgICJc
bnN0b3BwZWQgYXQge2N1cnJlbnR9IikuZm9ybWF0KAotICAgICAgICAgICAgICAgIHN0YXJ0PXB5
LmlvLnNhZmVyZXByKHN0YXJ0X29iaiksCi0gICAgICAgICAgICAgICAgY3VycmVudD1weS5pby5z
YWZlcmVwcihvYmopKSkKLSAgICBpZiBpc2luc3RhbmNlKG9iaiwgZnVuY3Rvb2xzLnBhcnRpYWwp
OgotICAgICAgICBvYmogPSBvYmouZnVuYwotICAgIHJldHVybiBvYmoKLQotCi1kZWYgZ2V0ZnNs
aW5lbm8ob2JqKToKLSAgICAjIHh4eCBsZXQgZGVjb3JhdG9ycyBldGMgc3BlY2lmeSBhIHNhbmUg
b3JkZXJpbmcKLSAgICBvYmogPSBnZXRfcmVhbF9mdW5jKG9iaikKLSAgICBpZiBoYXNhdHRyKG9i
aiwgJ3BsYWNlX2FzJyk6Ci0gICAgICAgIG9iaiA9IG9iai5wbGFjZV9hcwotICAgIGZzbGluZW5v
ID0gX3B5dGVzdC5fY29kZS5nZXRmc2xpbmVubyhvYmopCi0gICAgYXNzZXJ0IGlzaW5zdGFuY2Uo
ZnNsaW5lbm9bMV0sIGludCksIG9iagotICAgIHJldHVybiBmc2xpbmVubwotCi0KLWRlZiBnZXRp
bWZ1bmMoZnVuYyk6Ci0gICAgdHJ5OgotICAgICAgICByZXR1cm4gZnVuYy5fX2Z1bmNfXwotICAg
IGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgcmV0dXJuIGZ1bmMKLQotCi1kZWYgc2Fm
ZV9nZXRhdHRyKG9iamVjdCwgbmFtZSwgZGVmYXVsdCk6Ci0gICAgIiIiIExpa2UgZ2V0YXR0ciBi
dXQgcmV0dXJuIGRlZmF1bHQgdXBvbiBhbnkgRXhjZXB0aW9uIG9yIGFueSBPdXRjb21lRXhjZXB0
aW9uLgotCi0gICAgQXR0cmlidXRlIGFjY2VzcyBjYW4gcG90ZW50aWFsbHkgZmFpbCBmb3IgJ2V2
aWwnIFB5dGhvbiBvYmplY3RzLgotICAgIFNlZSBpc3N1ZSAjMjE0LgotICAgIEl0IGNhdGNoZXMg
T3V0Y29tZUV4Y2VwdGlvbiBiZWNhdXNlIG9mICMyNDkwIChpc3N1ZSAjNTgwKSwgbmV3IG91dGNv
bWVzIGFyZSBkZXJpdmVkIGZyb20gQmFzZUV4Y2VwdGlvbgotICAgIGluc3RlYWQgb2YgRXhjZXB0
aW9uIChmb3IgbW9yZSBkZXRhaWxzIGNoZWNrICMyNzA3KQotICAgICIiIgotICAgIHRyeToKLSAg
ICAgICAgcmV0dXJuIGdldGF0dHIob2JqZWN0LCBuYW1lLCBkZWZhdWx0KQotICAgIGV4Y2VwdCBU
RVNUX09VVENPTUU6Ci0gICAgICAgIHJldHVybiBkZWZhdWx0Ci0KLQotZGVmIF9pc191bml0dGVz
dF91bmV4cGVjdGVkX3N1Y2Nlc3NfYV9mYWlsdXJlKCk6Ci0gICAgIiIiUmV0dXJuIGlmIHRoZSB0
ZXN0IHN1aXRlIHNob3VsZCBmYWlsIGlmIGEgQGV4cGVjdGVkRmFpbHVyZSB1bml0dGVzdCB0ZXN0
IFBBU1NFUy4KLQotICAgIEZyb20gaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy9saWJyYXJ5L3Vu
aXR0ZXN0Lmh0bWw/aGlnaGxpZ2h0PXVuaXR0ZXN0I3VuaXR0ZXN0LlRlc3RSZXN1bHQud2FzU3Vj
Y2Vzc2Z1bDoKLSAgICAgICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuNDogUmV0dXJucyBGYWxzZSBp
ZiB0aGVyZSB3ZXJlIGFueQotICAgICAgICB1bmV4cGVjdGVkU3VjY2Vzc2VzIGZyb20gdGVzdHMg
bWFya2VkIHdpdGggdGhlIGV4cGVjdGVkRmFpbHVyZSgpIGRlY29yYXRvci4KLSAgICAiIiIKLSAg
ICByZXR1cm4gc3lzLnZlcnNpb25faW5mbyA+PSAoMywgNCkKLQotCi1pZiBfUFkzOgotICAgIGRl
ZiBzYWZlX3N0cih2KToKLSAgICAgICAgIiIicmV0dXJucyB2IGFzIHN0cmluZyIiIgotICAgICAg
ICByZXR1cm4gc3RyKHYpCi1lbHNlOgotICAgIGRlZiBzYWZlX3N0cih2KToKLSAgICAgICAgIiIi
cmV0dXJucyB2IGFzIHN0cmluZywgY29udmVydGluZyB0byBhc2NpaSBpZiBuZWNlc3NhcnkiIiIK
LSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIHN0cih2KQotICAgICAgICBleGNlcHQg
VW5pY29kZUVycm9yOgotICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodiwgdW5pY29kZSk6
Ci0gICAgICAgICAgICAgICAgdiA9IHVuaWNvZGUodikKLSAgICAgICAgICAgIGVycm9ycyA9ICdy
ZXBsYWNlJwotICAgICAgICAgICAgcmV0dXJuIHYuZW5jb2RlKCd1dGYtOCcsIGVycm9ycykKLQot
Ci1DT0xMRUNUX0ZBS0VNT0RVTEVfQVRUUklCVVRFUyA9ICgKLSAgICAnQ29sbGVjdG9yJywKLSAg
ICAnTW9kdWxlJywKLSAgICAnR2VuZXJhdG9yJywKLSAgICAnRnVuY3Rpb24nLAotICAgICdJbnN0
YW5jZScsCi0gICAgJ1Nlc3Npb24nLAotICAgICdJdGVtJywKLSAgICAnQ2xhc3MnLAotICAgICdG
aWxlJywKLSAgICAnX2ZpbGxmdW5jYXJncycsCi0pCi0KLQotZGVmIF9zZXR1cF9jb2xsZWN0X2Zh
a2Vtb2R1bGUoKToKLSAgICBmcm9tIHR5cGVzIGltcG9ydCBNb2R1bGVUeXBlCi0gICAgaW1wb3J0
IHB5dGVzdAotICAgIHB5dGVzdC5jb2xsZWN0ID0gTW9kdWxlVHlwZSgncHl0ZXN0LmNvbGxlY3Qn
KQotICAgIHB5dGVzdC5jb2xsZWN0Ll9fYWxsX18gPSBbXSAgIyB1c2VkIGZvciBzZXRucwotICAg
IGZvciBhdHRyIGluIENPTExFQ1RfRkFLRU1PRFVMRV9BVFRSSUJVVEVTOgotICAgICAgICBzZXRh
dHRyKHB5dGVzdC5jb2xsZWN0LCBhdHRyLCBnZXRhdHRyKHB5dGVzdCwgYXR0cikpCi0KLQotaWYg
X1BZMjoKLSAgICAjIFdpdGhvdXQgdGhpcyB0aGUgdGVzdF9kdXBmaWxlX29uX3RleHRpbyB3aWxs
IGZhaWwsIG90aGVyd2lzZSBDYXB0dXJlSU8gY291bGQgZGlyZWN0bHkgaW5oZXJpdCBmcm9tIFN0
cmluZ0lPLgotICAgIGZyb20gcHkuaW8gaW1wb3J0IFRleHRJTwotCi0gICAgY2xhc3MgQ2FwdHVy
ZUlPKFRleHRJTyk6Ci0KLSAgICAgICAgQHByb3BlcnR5Ci0gICAgICAgIGRlZiBlbmNvZGluZyhz
ZWxmKToKLSAgICAgICAgICAgIHJldHVybiBnZXRhdHRyKHNlbGYsICdfZW5jb2RpbmcnLCAnVVRG
LTgnKQotCi1lbHNlOgotICAgIGltcG9ydCBpbwotCi0gICAgY2xhc3MgQ2FwdHVyZUlPKGlvLlRl
eHRJT1dyYXBwZXIpOgotICAgICAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgICAgICBz
dXBlcihDYXB0dXJlSU8sIHNlbGYpLl9faW5pdF9fKAotICAgICAgICAgICAgICAgIGlvLkJ5dGVz
SU8oKSwKLSAgICAgICAgICAgICAgICBlbmNvZGluZz0nVVRGLTgnLCBuZXdsaW5lPScnLCB3cml0
ZV90aHJvdWdoPVRydWUsCi0gICAgICAgICAgICApCi0KLSAgICAgICAgZGVmIGdldHZhbHVlKHNl
bGYpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuYnVmZmVyLmdldHZhbHVlKCkuZGVjb2RlKCdV
VEYtOCcpCi0KLQotY2xhc3MgRnVuY2FyZ25hbWVzQ29tcGF0QXR0cihvYmplY3QpOgotICAgICIi
IiBoZWxwZXIgY2xhc3Mgc28gdGhhdCBNZXRhZnVuYywgRnVuY3Rpb24gYW5kIEZpeHR1cmVSZXF1
ZXN0Ci0gICAgZG9uJ3QgbmVlZCB0byBlYWNoIGRlZmluZSB0aGUgImZ1bmNhcmduYW1lcyIgY29t
cGF0aWJpbGl0eSBhdHRyaWJ1dGUuCi0gICAgIiIiCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIGZ1
bmNhcmduYW1lcyhzZWxmKToKLSAgICAgICAgIiIiIGFsaWFzIGF0dHJpYnV0ZSBmb3IgYGBmaXh0
dXJlbmFtZXNgYCBmb3IgcHJlLTIuMyBjb21wYXRpYmlsaXR5IiIiCi0gICAgICAgIHJldHVybiBz
ZWxmLmZpeHR1cmVuYW1lcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9jb25maWcu
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2NvbmZpZy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNDk5YzgwNzlkNDE1OTg2YzE4YjFmM2ZmNjRkMjA3NTQyZTVlNDMxYy4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0
ZXN0L2NvbmZpZy5weQorKysgL2Rldi9udWxsCkBAIC0xLDE0MDAgKzAsMCBAQAotIiIiIGNvbW1h
bmQgbGluZSBvcHRpb25zLCBpbmktZmlsZSBhbmQgY29uZnRlc3QucHkgcHJvY2Vzc2luZy4gIiIi
Ci1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50
X2Z1bmN0aW9uCi1pbXBvcnQgYXJncGFyc2UKLWltcG9ydCBzaGxleAotaW1wb3J0IHRyYWNlYmFj
awotaW1wb3J0IHR5cGVzCi1pbXBvcnQgd2FybmluZ3MKLQotaW1wb3J0IHNpeAotaW1wb3J0IHB5
Ci0jIERPTid0IGltcG9ydCBweXRlc3QgaGVyZSBiZWNhdXNlIGl0IGNhdXNlcyBpbXBvcnQgY3lj
bGUgdHJvdWJsZXMKLWltcG9ydCBzeXMKLWltcG9ydCBvcwotaW1wb3J0IF9weXRlc3QuX2NvZGUK
LWltcG9ydCBfcHl0ZXN0Lmhvb2tzcGVjICAjIHRoZSBleHRlbnNpb24gcG9pbnQgZGVmaW5pdGlv
bnMKLWltcG9ydCBfcHl0ZXN0LmFzc2VydGlvbgotZnJvbSBwbHVnZ3kgaW1wb3J0IFBsdWdpbk1h
bmFnZXIsIEhvb2tpbXBsTWFya2VyLCBIb29rc3BlY01hcmtlcgotZnJvbSBfcHl0ZXN0LmNvbXBh
dCBpbXBvcnQgc2FmZV9zdHIKLQotaG9va2ltcGwgPSBIb29raW1wbE1hcmtlcigicHl0ZXN0IikK
LWhvb2tzcGVjID0gSG9va3NwZWNNYXJrZXIoInB5dGVzdCIpCi0KLSMgcHl0ZXN0IHN0YXJ0dXAK
LSMKLQotCi1jbGFzcyBDb25mdGVzdEltcG9ydEZhaWx1cmUoRXhjZXB0aW9uKToKLSAgICBkZWYg
X19pbml0X18oc2VsZiwgcGF0aCwgZXhjaW5mbyk6Ci0gICAgICAgIEV4Y2VwdGlvbi5fX2luaXRf
XyhzZWxmLCBwYXRoLCBleGNpbmZvKQotICAgICAgICBzZWxmLnBhdGggPSBwYXRoCi0gICAgICAg
IHNlbGYuZXhjaW5mbyA9IGV4Y2luZm8KLQotICAgIGRlZiBfX3N0cl9fKHNlbGYpOgotICAgICAg
ICBldHlwZSwgZXZhbHVlLCBldGIgPSBzZWxmLmV4Y2luZm8KLSAgICAgICAgZm9ybWF0dGVkID0g
dHJhY2ViYWNrLmZvcm1hdF90YihldGIpCi0gICAgICAgICMgVGhlIGxldmVsIG9mIHRoZSB0cmFj
ZWJhY2tzIHdlIHdhbnQgdG8gcHJpbnQgaXMgaGFuZCBjcmFmdGVkIDooCi0gICAgICAgIHJldHVy
biByZXByKGV2YWx1ZSkgKyAnXG4nICsgJycuam9pbihmb3JtYXR0ZWRbMjpdKQotCi0KLWRlZiBt
YWluKGFyZ3M9Tm9uZSwgcGx1Z2lucz1Ob25lKToKLSAgICAiIiIgcmV0dXJuIGV4aXQgY29kZSwg
YWZ0ZXIgcGVyZm9ybWluZyBhbiBpbi1wcm9jZXNzIHRlc3QgcnVuLgotCi0gICAgOmFyZyBhcmdz
OiBsaXN0IG9mIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuCi0KLSAgICA6YXJnIHBsdWdpbnM6IGxp
c3Qgb2YgcGx1Z2luIG9iamVjdHMgdG8gYmUgYXV0by1yZWdpc3RlcmVkIGR1cmluZwotICAgICAg
ICAgICAgICAgICAgaW5pdGlhbGl6YXRpb24uCi0gICAgIiIiCi0gICAgdHJ5OgotICAgICAgICB0
cnk6Ci0gICAgICAgICAgICBjb25maWcgPSBfcHJlcGFyZWNvbmZpZyhhcmdzLCBwbHVnaW5zKQot
ICAgICAgICBleGNlcHQgQ29uZnRlc3RJbXBvcnRGYWlsdXJlIGFzIGU6Ci0gICAgICAgICAgICB0
dyA9IHB5LmlvLlRlcm1pbmFsV3JpdGVyKHN5cy5zdGRlcnIpCi0gICAgICAgICAgICBmb3IgbGlu
ZSBpbiB0cmFjZWJhY2suZm9ybWF0X2V4Y2VwdGlvbigqZS5leGNpbmZvKToKLSAgICAgICAgICAg
ICAgICB0dy5saW5lKGxpbmUucnN0cmlwKCksIHJlZD1UcnVlKQotICAgICAgICAgICAgdHcubGlu
ZSgiRVJST1I6IGNvdWxkIG5vdCBsb2FkICVzXG4iICUgKGUucGF0aCksIHJlZD1UcnVlKQotICAg
ICAgICAgICAgcmV0dXJuIDQKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHRyeToKLSAgICAg
ICAgICAgICAgICByZXR1cm4gY29uZmlnLmhvb2sucHl0ZXN0X2NtZGxpbmVfbWFpbihjb25maWc9
Y29uZmlnKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBjb25maWcuX2Vu
c3VyZV91bmNvbmZpZ3VyZSgpCi0gICAgZXhjZXB0IFVzYWdlRXJyb3IgYXMgZToKLSAgICAgICAg
Zm9yIG1zZyBpbiBlLmFyZ3M6Ci0gICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJFUlJPUjog
JXNcbiIgJSAobXNnLCkpCi0gICAgICAgIHJldHVybiA0Ci0KLQotY2xhc3MgY21kbGluZTogICMg
Y29tcGF0aWJpbGl0eSBuYW1lc3BhY2UKLSAgICBtYWluID0gc3RhdGljbWV0aG9kKG1haW4pCi0K
LQotY2xhc3MgVXNhZ2VFcnJvcihFeGNlcHRpb24pOgotICAgICIiIiBlcnJvciBpbiBweXRlc3Qg
dXNhZ2Ugb3IgaW52b2NhdGlvbiIiIgotCi0KLWNsYXNzIFByaW50SGVscChFeGNlcHRpb24pOgot
ICAgICIiIlJhaXNlZCB3aGVuIHB5dGVzdCBzaG91bGQgcHJpbnQgaXQncyBoZWxwIHRvIHNraXAg
dGhlIHJlc3Qgb2YgdGhlCi0gICAgYXJndW1lbnQgcGFyc2luZyBhbmQgdmFsaWRhdGlvbi4iIiIK
LSAgICBwYXNzCi0KLQotZGVmIGZpbGVuYW1lX2FyZyhwYXRoLCBvcHRuYW1lKToKLSAgICAiIiIg
QXJncGFyc2UgdHlwZSB2YWxpZGF0b3IgZm9yIGZpbGVuYW1lIGFyZ3VtZW50cy4KLQotICAgIDpw
YXRoOiBwYXRoIG9mIGZpbGVuYW1lCi0gICAgOm9wdG5hbWU6IG5hbWUgb2YgdGhlIG9wdGlvbgot
ICAgICIiIgotICAgIGlmIG9zLnBhdGguaXNkaXIocGF0aCk6Ci0gICAgICAgIHJhaXNlIFVzYWdl
RXJyb3IoInswfSBtdXN0IGJlIGEgZmlsZW5hbWUsIGdpdmVuOiB7MX0iLmZvcm1hdChvcHRuYW1l
LCBwYXRoKSkKLSAgICByZXR1cm4gcGF0aAotCi0KLWRlZiBkaXJlY3RvcnlfYXJnKHBhdGgsIG9w
dG5hbWUpOgotICAgICIiIkFyZ3BhcnNlIHR5cGUgdmFsaWRhdG9yIGZvciBkaXJlY3RvcnkgYXJn
dW1lbnRzLgotCi0gICAgOnBhdGg6IHBhdGggb2YgZGlyZWN0b3J5Ci0gICAgOm9wdG5hbWU6IG5h
bWUgb2YgdGhlIG9wdGlvbgotICAgICIiIgotICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKHBhdGgp
OgotICAgICAgICByYWlzZSBVc2FnZUVycm9yKCJ7MH0gbXVzdCBiZSBhIGRpcmVjdG9yeSwgZ2l2
ZW46IHsxfSIuZm9ybWF0KG9wdG5hbWUsIHBhdGgpKQotICAgIHJldHVybiBwYXRoCi0KLQotZGVm
YXVsdF9wbHVnaW5zID0gKAotICAgICJtYXJrIG1haW4gdGVybWluYWwgcnVubmVyIHB5dGhvbiBm
aXh0dXJlcyBkZWJ1Z2dpbmcgdW5pdHRlc3QgY2FwdHVyZSBza2lwcGluZyAiCi0gICAgInRtcGRp
ciBtb25rZXlwYXRjaCByZWN3YXJuIHBhc3RlYmluIGhlbHBjb25maWcgbm9zZSBhc3NlcnRpb24g
IgotICAgICJqdW5pdHhtbCByZXN1bHRsb2cgZG9jdGVzdCBjYWNoZXByb3ZpZGVyIGZyZWV6ZV9z
dXBwb3J0ICIKLSAgICAic2V0dXBvbmx5IHNldHVwcGxhbiB3YXJuaW5ncyBsb2dnaW5nIikuc3Bs
aXQoKQotCi0KLWJ1aWx0aW5fcGx1Z2lucyA9IHNldChkZWZhdWx0X3BsdWdpbnMpCi1idWlsdGlu
X3BsdWdpbnMuYWRkKCJweXRlc3RlciIpCi0KLQotZGVmIGdldF9jb25maWcoKToKLSAgICAjIHN1
YnNlcXVlbnQgY2FsbHMgdG8gbWFpbiB3aWxsIGNyZWF0ZSBhIGZyZXNoIGluc3RhbmNlCi0gICAg
cGx1Z2lubWFuYWdlciA9IFB5dGVzdFBsdWdpbk1hbmFnZXIoKQotICAgIGNvbmZpZyA9IENvbmZp
ZyhwbHVnaW5tYW5hZ2VyKQotICAgIGZvciBzcGVjIGluIGRlZmF1bHRfcGx1Z2luczoKLSAgICAg
ICAgcGx1Z2lubWFuYWdlci5pbXBvcnRfcGx1Z2luKHNwZWMpCi0gICAgcmV0dXJuIGNvbmZpZwot
Ci0KLWRlZiBnZXRfcGx1Z2luX21hbmFnZXIoKToKLSAgICAiIiIKLSAgICBPYnRhaW4gYSBuZXcg
aW5zdGFuY2Ugb2YgdGhlCi0gICAgOnB5OmNsYXNzOmBfcHl0ZXN0LmNvbmZpZy5QeXRlc3RQbHVn
aW5NYW5hZ2VyYCwgd2l0aCBkZWZhdWx0IHBsdWdpbnMKLSAgICBhbHJlYWR5IGxvYWRlZC4KLQot
ICAgIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgYnkgaW50ZWdyYXRpb24gd2l0aCBvdGhlciB0
b29scywgbGlrZSBob29raW5nCi0gICAgaW50byBweXRlc3QgdG8gcnVuIHRlc3RzIGludG8gYW4g
SURFLgotICAgICIiIgotICAgIHJldHVybiBnZXRfY29uZmlnKCkucGx1Z2lubWFuYWdlcgotCi0K
LWRlZiBfcHJlcGFyZWNvbmZpZyhhcmdzPU5vbmUsIHBsdWdpbnM9Tm9uZSk6Ci0gICAgd2Fybmlu
ZyA9IE5vbmUKLSAgICBpZiBhcmdzIGlzIE5vbmU6Ci0gICAgICAgIGFyZ3MgPSBzeXMuYXJndlsx
Ol0KLSAgICBlbGlmIGlzaW5zdGFuY2UoYXJncywgcHkucGF0aC5sb2NhbCk6Ci0gICAgICAgIGFy
Z3MgPSBbc3RyKGFyZ3MpXQotICAgIGVsaWYgbm90IGlzaW5zdGFuY2UoYXJncywgKHR1cGxlLCBs
aXN0KSk6Ci0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGFyZ3MsIHN0cik6Ci0gICAgICAgICAg
ICByYWlzZSBWYWx1ZUVycm9yKCJub3QgYSBzdHJpbmcgb3IgYXJndW1lbnQgbGlzdDogJXIiICUg
KGFyZ3MsKSkKLSAgICAgICAgYXJncyA9IHNobGV4LnNwbGl0KGFyZ3MsIHBvc2l4PXN5cy5wbGF0
Zm9ybSAhPSAid2luMzIiKQotICAgICAgICBmcm9tIF9weXRlc3QgaW1wb3J0IGRlcHJlY2F0ZWQK
LSAgICAgICAgd2FybmluZyA9IGRlcHJlY2F0ZWQuTUFJTl9TVFJfQVJHUwotICAgIGNvbmZpZyA9
IGdldF9jb25maWcoKQotICAgIHBsdWdpbm1hbmFnZXIgPSBjb25maWcucGx1Z2lubWFuYWdlcgot
ICAgIHRyeToKLSAgICAgICAgaWYgcGx1Z2luczoKLSAgICAgICAgICAgIGZvciBwbHVnaW4gaW4g
cGx1Z2luczoKLSAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHBsdWdpbiwgc2l4LnN0cmlu
Z190eXBlcyk6Ci0gICAgICAgICAgICAgICAgICAgIHBsdWdpbm1hbmFnZXIuY29uc2lkZXJfcGx1
Z2luYXJnKHBsdWdpbikKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAg
ICBwbHVnaW5tYW5hZ2VyLnJlZ2lzdGVyKHBsdWdpbikKLSAgICAgICAgaWYgd2FybmluZzoKLSAg
ICAgICAgICAgIGNvbmZpZy53YXJuKCdDMScsIHdhcm5pbmcpCi0gICAgICAgIHJldHVybiBwbHVn
aW5tYW5hZ2VyLmhvb2sucHl0ZXN0X2NtZGxpbmVfcGFyc2UoCi0gICAgICAgICAgICBwbHVnaW5t
YW5hZ2VyPXBsdWdpbm1hbmFnZXIsIGFyZ3M9YXJncykKLSAgICBleGNlcHQgQmFzZUV4Y2VwdGlv
bjoKLSAgICAgICAgY29uZmlnLl9lbnN1cmVfdW5jb25maWd1cmUoKQotICAgICAgICByYWlzZQot
Ci0KLWNsYXNzIFB5dGVzdFBsdWdpbk1hbmFnZXIoUGx1Z2luTWFuYWdlcik6Ci0gICAgIiIiCi0g
ICAgT3ZlcndyaXRlcyA6cHk6Y2xhc3M6YHBsdWdneS5QbHVnaW5NYW5hZ2VyIDxwbHVnZ3kuUGx1
Z2luTWFuYWdlcj5gIHRvIGFkZCBweXRlc3Qtc3BlY2lmaWMKLSAgICBmdW5jdGlvbmFsaXR5Ogot
Ci0gICAgKiBsb2FkaW5nIHBsdWdpbnMgZnJvbSB0aGUgY29tbWFuZCBsaW5lLCBgYFBZVEVTVF9Q
TFVHSU5gYCBlbnYgdmFyaWFibGUgYW5kCi0gICAgICBgYHB5dGVzdF9wbHVnaW5zYGAgZ2xvYmFs
IHZhcmlhYmxlcyBmb3VuZCBpbiBwbHVnaW5zIGJlaW5nIGxvYWRlZDsKLSAgICAqIGBgY29uZnRl
c3QucHlgYCBsb2FkaW5nIGR1cmluZyBzdGFydC11cDsKLSAgICAiIiIKLQotICAgIGRlZiBfX2lu
aXRfXyhzZWxmKToKLSAgICAgICAgc3VwZXIoUHl0ZXN0UGx1Z2luTWFuYWdlciwgc2VsZikuX19p
bml0X18oInB5dGVzdCIsIGltcGxwcmVmaXg9InB5dGVzdF8iKQotICAgICAgICBzZWxmLl9jb25m
dGVzdF9wbHVnaW5zID0gc2V0KCkKLQotICAgICAgICAjIHN0YXRlIHJlbGF0ZWQgdG8gbG9jYWwg
Y29uZnRlc3QgcGx1Z2lucwotICAgICAgICBzZWxmLl9wYXRoMmNvbmZtb2RzID0ge30KLSAgICAg
ICAgc2VsZi5fY29uZnRlc3RwYXRoMm1vZCA9IHt9Ci0gICAgICAgIHNlbGYuX2NvbmZjdXRkaXIg
PSBOb25lCi0gICAgICAgIHNlbGYuX25vY29uZnRlc3QgPSBGYWxzZQotICAgICAgICBzZWxmLl9k
dXBsaWNhdGVwYXRocyA9IHNldCgpCi0KLSAgICAgICAgc2VsZi5hZGRfaG9va3NwZWNzKF9weXRl
c3QuaG9va3NwZWMpCi0gICAgICAgIHNlbGYucmVnaXN0ZXIoc2VsZikKLSAgICAgICAgaWYgb3Mu
ZW52aXJvbi5nZXQoJ1BZVEVTVF9ERUJVRycpOgotICAgICAgICAgICAgZXJyID0gc3lzLnN0ZGVy
cgotICAgICAgICAgICAgZW5jb2RpbmcgPSBnZXRhdHRyKGVyciwgJ2VuY29kaW5nJywgJ3V0Zjgn
KQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGVyciA9IHB5LmlvLmR1cGZpbGUo
ZXJyLCBlbmNvZGluZz1lbmNvZGluZykKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0g
ICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgc2VsZi50cmFjZS5yb290LnNldHdyaXRl
cihlcnIud3JpdGUpCi0gICAgICAgICAgICBzZWxmLmVuYWJsZV90cmFjaW5nKCkKLQotICAgICAg
ICAjIENvbmZpZy5fY29uc2lkZXJfaW1wb3J0aG9vayB3aWxsIHNldCBhIHJlYWwgb2JqZWN0IGlm
IHJlcXVpcmVkLgotICAgICAgICBzZWxmLnJld3JpdGVfaG9vayA9IF9weXRlc3QuYXNzZXJ0aW9u
LkR1bW15UmV3cml0ZUhvb2soKQotCi0gICAgZGVmIGFkZGhvb2tzKHNlbGYsIG1vZHVsZV9vcl9j
bGFzcyk6Ci0gICAgICAgICIiIgotICAgICAgICAuLiBkZXByZWNhdGVkOjogMi44Ci0KLSAgICAg
ICAgVXNlIDpweTptZXRoOmBwbHVnZ3kuUGx1Z2luTWFuYWdlci5hZGRfaG9va3NwZWNzIDxQbHVn
aW5NYW5hZ2VyLmFkZF9ob29rc3BlY3M+YAotICAgICAgICBpbnN0ZWFkLgotICAgICAgICAiIiIK
LSAgICAgICAgd2FybmluZyA9IGRpY3QoY29kZT0iSTIiLAotICAgICAgICAgICAgICAgICAgICAg
ICBmc2xvY2F0aW9uPV9weXRlc3QuX2NvZGUuZ2V0ZnNsaW5lbm8oc3lzLl9nZXRmcmFtZSgxKSks
Ci0gICAgICAgICAgICAgICAgICAgICAgIG5vZGVpZD1Ob25lLAotICAgICAgICAgICAgICAgICAg
ICAgICBtZXNzYWdlPSJ1c2UgcGx1Z2lubWFuYWdlci5hZGRfaG9va3NwZWNzIGluc3RlYWQgb2Yg
IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXByZWNhdGVkIGFkZGhvb2tzKCkg
bWV0aG9kLiIpCi0gICAgICAgIHNlbGYuX3dhcm4od2FybmluZykKLSAgICAgICAgcmV0dXJuIHNl
bGYuYWRkX2hvb2tzcGVjcyhtb2R1bGVfb3JfY2xhc3MpCi0KLSAgICBkZWYgcGFyc2VfaG9va2lt
cGxfb3B0cyhzZWxmLCBwbHVnaW4sIG5hbWUpOgotICAgICAgICAjIHB5dGVzdCBob29rcyBhcmUg
YWx3YXlzIHByZWZpeGVkIHdpdGggcHl0ZXN0XwotICAgICAgICAjIHNvIHdlIGF2b2lkIGFjY2Vz
c2luZyBwb3NzaWJseSBub24tcmVhZGFibGUgYXR0cmlidXRlcwotICAgICAgICAjIChzZWUgaXNz
dWUgIzEwNzMpCi0gICAgICAgIGlmIG5vdCBuYW1lLnN0YXJ0c3dpdGgoInB5dGVzdF8iKToKLSAg
ICAgICAgICAgIHJldHVybgotICAgICAgICAjIGlnbm9yZSBzb21lIGhpc3RvcmljIHNwZWNpYWwg
bmFtZXMgd2hpY2ggY2FuIG5vdCBiZSBob29rcyBhbnl3YXkKLSAgICAgICAgaWYgbmFtZSA9PSAi
cHl0ZXN0X3BsdWdpbnMiIG9yIG5hbWUuc3RhcnRzd2l0aCgicHl0ZXN0X2Z1bmNhcmdfXyIpOgot
ICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgbWV0aG9kID0gZ2V0YXR0cihwbHVnaW4sIG5h
bWUpCi0gICAgICAgIG9wdHMgPSBzdXBlcihQeXRlc3RQbHVnaW5NYW5hZ2VyLCBzZWxmKS5wYXJz
ZV9ob29raW1wbF9vcHRzKHBsdWdpbiwgbmFtZSkKLSAgICAgICAgaWYgb3B0cyBpcyBub3QgTm9u
ZToKLSAgICAgICAgICAgIGZvciBuYW1lIGluICgidHJ5Zmlyc3QiLCAidHJ5bGFzdCIsICJvcHRp
b25hbGhvb2siLCAiaG9va3dyYXBwZXIiKToKLSAgICAgICAgICAgICAgICBvcHRzLnNldGRlZmF1
bHQobmFtZSwgaGFzYXR0cihtZXRob2QsIG5hbWUpKQotICAgICAgICByZXR1cm4gb3B0cwotCi0g
ICAgZGVmIHBhcnNlX2hvb2tzcGVjX29wdHMoc2VsZiwgbW9kdWxlX29yX2NsYXNzLCBuYW1lKToK
LSAgICAgICAgb3B0cyA9IHN1cGVyKFB5dGVzdFBsdWdpbk1hbmFnZXIsIHNlbGYpLnBhcnNlX2hv
b2tzcGVjX29wdHMoCi0gICAgICAgICAgICBtb2R1bGVfb3JfY2xhc3MsIG5hbWUpCi0gICAgICAg
IGlmIG9wdHMgaXMgTm9uZToKLSAgICAgICAgICAgIG1ldGhvZCA9IGdldGF0dHIobW9kdWxlX29y
X2NsYXNzLCBuYW1lKQotICAgICAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCJweXRlc3RfIik6
Ci0gICAgICAgICAgICAgICAgb3B0cyA9IHsiZmlyc3RyZXN1bHQiOiBoYXNhdHRyKG1ldGhvZCwg
ImZpcnN0cmVzdWx0IiksCi0gICAgICAgICAgICAgICAgICAgICAgICAiaGlzdG9yaWMiOiBoYXNh
dHRyKG1ldGhvZCwgImhpc3RvcmljIil9Ci0gICAgICAgIHJldHVybiBvcHRzCi0KLSAgICBkZWYg
cmVnaXN0ZXIoc2VsZiwgcGx1Z2luLCBuYW1lPU5vbmUpOgotICAgICAgICBpZiBuYW1lID09ICdw
eXRlc3RfY2F0Y2hsb2cnOgotICAgICAgICAgICAgc2VsZi5fd2FybigncHl0ZXN0LWNhdGNobG9n
IHBsdWdpbiBoYXMgYmVlbiBtZXJnZWQgaW50byB0aGUgY29yZSwgJwotICAgICAgICAgICAgICAg
ICAgICAgICAncGxlYXNlIHJlbW92ZSBpdCBmcm9tIHlvdXIgcmVxdWlyZW1lbnRzLicpCi0gICAg
ICAgICAgICByZXR1cm4KLSAgICAgICAgcmV0ID0gc3VwZXIoUHl0ZXN0UGx1Z2luTWFuYWdlciwg
c2VsZikucmVnaXN0ZXIocGx1Z2luLCBuYW1lKQotICAgICAgICBpZiByZXQ6Ci0gICAgICAgICAg
ICBzZWxmLmhvb2sucHl0ZXN0X3BsdWdpbl9yZWdpc3RlcmVkLmNhbGxfaGlzdG9yaWMoCi0gICAg
ICAgICAgICAgICAga3dhcmdzPWRpY3QocGx1Z2luPXBsdWdpbiwgbWFuYWdlcj1zZWxmKSkKLQot
ICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShwbHVnaW4sIHR5cGVzLk1vZHVsZVR5cGUpOgotICAg
ICAgICAgICAgICAgIHNlbGYuY29uc2lkZXJfbW9kdWxlKHBsdWdpbikKLSAgICAgICAgcmV0dXJu
IHJldAotCi0gICAgZGVmIGdldHBsdWdpbihzZWxmLCBuYW1lKToKLSAgICAgICAgIyBzdXBwb3J0
IGRlcHJlY2F0ZWQgbmFtaW5nIGJlY2F1c2UgcGx1Z2lucyAoeGRpc3QgZS5nLikgdXNlIGl0Ci0g
ICAgICAgIHJldHVybiBzZWxmLmdldF9wbHVnaW4obmFtZSkKLQotICAgIGRlZiBoYXNwbHVnaW4o
c2VsZiwgbmFtZSk6Ci0gICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBwbHVnaW4gd2l0aCB0
aGUgZ2l2ZW4gbmFtZSBpcyByZWdpc3RlcmVkLiIiIgotICAgICAgICByZXR1cm4gYm9vbChzZWxm
LmdldF9wbHVnaW4obmFtZSkpCi0KLSAgICBkZWYgcHl0ZXN0X2NvbmZpZ3VyZShzZWxmLCBjb25m
aWcpOgotICAgICAgICAjIFhYWCBub3cgdGhhdCB0aGUgcGx1Z2lubWFuYWdlciBleHBvc2VzIGhv
b2tpbXBsKHRyeWZpcnN0Li4uKQotICAgICAgICAjIHdlIHNob3VsZCByZW1vdmUgdHJ5Zmlyc3Qv
dHJ5bGFzdCBhcyBtYXJrZXJzCi0gICAgICAgIGNvbmZpZy5hZGRpbml2YWx1ZV9saW5lKCJtYXJr
ZXJzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRyeWZpcnN0OiBtYXJrIGEg
aG9vayBpbXBsZW1lbnRhdGlvbiBmdW5jdGlvbiBzdWNoIHRoYXQgdGhlICIKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgInBsdWdpbiBtYWNoaW5lcnkgd2lsbCB0cnkgdG8gY2FsbCBp
dCBmaXJzdC9hcyBlYXJseSBhcyBwb3NzaWJsZS4iKQotICAgICAgICBjb25maWcuYWRkaW5pdmFs
dWVfbGluZSgibWFya2VycyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0cnls
YXN0OiBtYXJrIGEgaG9vayBpbXBsZW1lbnRhdGlvbiBmdW5jdGlvbiBzdWNoIHRoYXQgdGhlICIK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBsdWdpbiBtYWNoaW5lcnkgd2lsbCB0
cnkgdG8gY2FsbCBpdCBsYXN0L2FzIGxhdGUgYXMgcG9zc2libGUuIikKLQotICAgIGRlZiBfd2Fy
bihzZWxmLCBtZXNzYWdlKToKLSAgICAgICAga3dhcmdzID0gbWVzc2FnZSBpZiBpc2luc3RhbmNl
KG1lc3NhZ2UsIGRpY3QpIGVsc2UgewotICAgICAgICAgICAgJ2NvZGUnOiAnSTEnLAotICAgICAg
ICAgICAgJ21lc3NhZ2UnOiBtZXNzYWdlLAotICAgICAgICAgICAgJ2ZzbG9jYXRpb24nOiBOb25l
LAotICAgICAgICAgICAgJ25vZGVpZCc6IE5vbmUsCi0gICAgICAgIH0KLSAgICAgICAgc2VsZi5o
b29rLnB5dGVzdF9sb2d3YXJuaW5nLmNhbGxfaGlzdG9yaWMoa3dhcmdzPWt3YXJncykKLQotICAg
ICMKLSAgICAjIGludGVybmFsIEFQSSBmb3IgbG9jYWwgY29uZnRlc3QgcGx1Z2luIGhhbmRsaW5n
Ci0gICAgIwotICAgIGRlZiBfc2V0X2luaXRpYWxfY29uZnRlc3RzKHNlbGYsIG5hbWVzcGFjZSk6
Ci0gICAgICAgICIiIiBsb2FkIGluaXRpYWwgY29uZnRlc3QgZmlsZXMgZ2l2ZW4gYSBwcmVwYXJz
ZWQgIm5hbWVzcGFjZSIuCi0gICAgICAgICAgICBBcyBjb25mdGVzdCBmaWxlcyBtYXkgYWRkIHRo
ZWlyIG93biBjb21tYW5kIGxpbmUgb3B0aW9ucwotICAgICAgICAgICAgd2hpY2ggaGF2ZSBhcmd1
bWVudHMgKCctLW15LW9wdCBzb21lcGF0aCcpIHdlIG1pZ2h0IGdldCBzb21lCi0gICAgICAgICAg
ICBmYWxzZSBwb3NpdGl2ZXMuICBBbGwgYnVpbHRpbiBhbmQgM3JkIHBhcnR5IHBsdWdpbnMgd2ls
bCBoYXZlCi0gICAgICAgICAgICBiZWVuIGxvYWRlZCwgaG93ZXZlciwgc28gY29tbW9uIG9wdGlv
bnMgd2lsbCBub3QgY29uZnVzZSBvdXIgbG9naWMKLSAgICAgICAgICAgIGhlcmUuCi0gICAgICAg
ICIiIgotICAgICAgICBjdXJyZW50ID0gcHkucGF0aC5sb2NhbCgpCi0gICAgICAgIHNlbGYuX2Nv
bmZjdXRkaXIgPSBjdXJyZW50LmpvaW4obmFtZXNwYWNlLmNvbmZjdXRkaXIsIGFicz1UcnVlKSBc
Ci0gICAgICAgICAgICBpZiBuYW1lc3BhY2UuY29uZmN1dGRpciBlbHNlIE5vbmUKLSAgICAgICAg
c2VsZi5fbm9jb25mdGVzdCA9IG5hbWVzcGFjZS5ub2NvbmZ0ZXN0Ci0gICAgICAgIHRlc3RwYXRo
cyA9IG5hbWVzcGFjZS5maWxlX29yX2RpcgotICAgICAgICBmb3VuZGFuY2hvciA9IEZhbHNlCi0g
ICAgICAgIGZvciBwYXRoIGluIHRlc3RwYXRoczoKLSAgICAgICAgICAgIHBhdGggPSBzdHIocGF0
aCkKLSAgICAgICAgICAgICMgcmVtb3ZlIG5vZGUtaWQgc3ludGF4Ci0gICAgICAgICAgICBpID0g
cGF0aC5maW5kKCI6OiIpCi0gICAgICAgICAgICBpZiBpICE9IC0xOgotICAgICAgICAgICAgICAg
IHBhdGggPSBwYXRoWzppXQotICAgICAgICAgICAgYW5jaG9yID0gY3VycmVudC5qb2luKHBhdGgs
IGFicz0xKQotICAgICAgICAgICAgaWYgZXhpc3RzKGFuY2hvcik6ICAjIHdlIGZvdW5kIHNvbWUg
ZmlsZSBvYmplY3QKLSAgICAgICAgICAgICAgICBzZWxmLl90cnlfbG9hZF9jb25mdGVzdChhbmNo
b3IpCi0gICAgICAgICAgICAgICAgZm91bmRhbmNob3IgPSBUcnVlCi0gICAgICAgIGlmIG5vdCBm
b3VuZGFuY2hvcjoKLSAgICAgICAgICAgIHNlbGYuX3RyeV9sb2FkX2NvbmZ0ZXN0KGN1cnJlbnQp
Ci0KLSAgICBkZWYgX3RyeV9sb2FkX2NvbmZ0ZXN0KHNlbGYsIGFuY2hvcik6Ci0gICAgICAgIHNl
bGYuX2dldGNvbmZ0ZXN0bW9kdWxlcyhhbmNob3IpCi0gICAgICAgICMgbGV0J3MgYWxzbyBjb25z
aWRlciB0ZXN0KiBzdWJkaXJzCi0gICAgICAgIGlmIGFuY2hvci5jaGVjayhkaXI9MSk6Ci0gICAg
ICAgICAgICBmb3IgeCBpbiBhbmNob3IubGlzdGRpcigidGVzdCoiKToKLSAgICAgICAgICAgICAg
ICBpZiB4LmNoZWNrKGRpcj0xKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fZ2V0Y29uZnRl
c3Rtb2R1bGVzKHgpCi0KLSAgICBkZWYgX2dldGNvbmZ0ZXN0bW9kdWxlcyhzZWxmLCBwYXRoKToK
LSAgICAgICAgaWYgc2VsZi5fbm9jb25mdGVzdDoKLSAgICAgICAgICAgIHJldHVybiBbXQotICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fcGF0aDJjb25mbW9kc1twYXRoXQot
ICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICBpZiBwYXRoLmlzZmlsZSgpOgot
ICAgICAgICAgICAgICAgIGNsaXN0ID0gc2VsZi5fZ2V0Y29uZnRlc3Rtb2R1bGVzKHBhdGguZGly
cGF0aCgpKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIFhYWCB0aGVzZSBk
YXlzIHdlIG1heSByYXRoZXIgd2FudCB0byB1c2UgY29uZmlnLnJvb3RkaXIKLSAgICAgICAgICAg
ICAgICAjIGFuZCBhbGxvdyB1c2VycyB0byBvcHQgaW50byBsb29raW5nIGludG8gdGhlIHJvb3Rk
aXIgcGFyZW50Ci0gICAgICAgICAgICAgICAgIyBkaXJlY3RvcmllcyBpbnN0ZWFkIG9mIHJlcXVp
cmluZyB0byBzcGVjaWZ5IGNvbmZjdXRkaXIKLSAgICAgICAgICAgICAgICBjbGlzdCA9IFtdCi0g
ICAgICAgICAgICAgICAgZm9yIHBhcmVudCBpbiBwYXRoLnBhcnRzKCk6Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIHNlbGYuX2NvbmZjdXRkaXIgYW5kIHNlbGYuX2NvbmZjdXRkaXIucmVsdG8ocGFy
ZW50KToKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAg
ICAgIGNvbmZ0ZXN0cGF0aCA9IHBhcmVudC5qb2luKCJjb25mdGVzdC5weSIpCi0gICAgICAgICAg
ICAgICAgICAgIGlmIGNvbmZ0ZXN0cGF0aC5pc2ZpbGUoKToKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG1vZCA9IHNlbGYuX2ltcG9ydGNvbmZ0ZXN0KGNvbmZ0ZXN0cGF0aCkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGNsaXN0LmFwcGVuZChtb2QpCi0KLSAgICAgICAgICAgIHNlbGYuX3BhdGgy
Y29uZm1vZHNbcGF0aF0gPSBjbGlzdAotICAgICAgICAgICAgcmV0dXJuIGNsaXN0Ci0KLSAgICBk
ZWYgX3JnZXRfd2l0aF9jb25mbW9kKHNlbGYsIG5hbWUsIHBhdGgpOgotICAgICAgICBtb2R1bGVz
ID0gc2VsZi5fZ2V0Y29uZnRlc3Rtb2R1bGVzKHBhdGgpCi0gICAgICAgIGZvciBtb2QgaW4gcmV2
ZXJzZWQobW9kdWxlcyk6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IG1vZCwgZ2V0YXR0cihtb2QsIG5hbWUpCi0gICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJy
b3I6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgcmFpc2UgS2V5RXJyb3IobmFt
ZSkKLQotICAgIGRlZiBfaW1wb3J0Y29uZnRlc3Qoc2VsZiwgY29uZnRlc3RwYXRoKToKLSAgICAg
ICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NvbmZ0ZXN0cGF0aDJtb2RbY29uZnRl
c3RwYXRoXQotICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICBwa2dwYXRoID0g
Y29uZnRlc3RwYXRoLnB5cGtncGF0aCgpCi0gICAgICAgICAgICBpZiBwa2dwYXRoIGlzIE5vbmU6
Ci0gICAgICAgICAgICAgICAgX2Vuc3VyZV9yZW1vdmVkX3N5c21vZHVsZShjb25mdGVzdHBhdGgu
cHVyZWJhc2VuYW1lKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG1vZCA9IGNv
bmZ0ZXN0cGF0aC5weWltcG9ydCgpCi0gICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgotICAg
ICAgICAgICAgICAgIHJhaXNlIENvbmZ0ZXN0SW1wb3J0RmFpbHVyZShjb25mdGVzdHBhdGgsIHN5
cy5leGNfaW5mbygpKQotCi0gICAgICAgICAgICBzZWxmLl9jb25mdGVzdF9wbHVnaW5zLmFkZCht
b2QpCi0gICAgICAgICAgICBzZWxmLl9jb25mdGVzdHBhdGgybW9kW2NvbmZ0ZXN0cGF0aF0gPSBt
b2QKLSAgICAgICAgICAgIGRpcnBhdGggPSBjb25mdGVzdHBhdGguZGlycGF0aCgpCi0gICAgICAg
ICAgICBpZiBkaXJwYXRoIGluIHNlbGYuX3BhdGgyY29uZm1vZHM6Ci0gICAgICAgICAgICAgICAg
Zm9yIHBhdGgsIG1vZHMgaW4gc2VsZi5fcGF0aDJjb25mbW9kcy5pdGVtcygpOgotICAgICAgICAg
ICAgICAgICAgICBpZiBwYXRoIGFuZCBwYXRoLnJlbHRvKGRpcnBhdGgpIG9yIHBhdGggPT0gZGly
cGF0aDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBtb2Qgbm90IGluIG1vZHMKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG1vZHMuYXBwZW5kKG1vZCkKLSAgICAgICAgICAgIHNlbGYu
dHJhY2UoImxvYWRlZCBjb25mdGVzdG1vZHVsZSAlciIgJSAobW9kKSkKLSAgICAgICAgICAgIHNl
bGYuY29uc2lkZXJfY29uZnRlc3QobW9kKQotICAgICAgICAgICAgcmV0dXJuIG1vZAotCi0gICAg
IwotICAgICMgQVBJIGZvciBib290c3RyYXBwaW5nIHBsdWdpbiBsb2FkaW5nCi0gICAgIwotICAg
ICMKLQotICAgIGRlZiBjb25zaWRlcl9wcmVwYXJzZShzZWxmLCBhcmdzKToKLSAgICAgICAgZm9y
IG9wdDEsIG9wdDIgaW4gemlwKGFyZ3MsIGFyZ3NbMTpdKToKLSAgICAgICAgICAgIGlmIG9wdDEg
PT0gIi1wIjoKLSAgICAgICAgICAgICAgICBzZWxmLmNvbnNpZGVyX3BsdWdpbmFyZyhvcHQyKQot
Ci0gICAgZGVmIGNvbnNpZGVyX3BsdWdpbmFyZyhzZWxmLCBhcmcpOgotICAgICAgICBpZiBhcmcu
c3RhcnRzd2l0aCgibm86Iik6Ci0gICAgICAgICAgICBuYW1lID0gYXJnWzM6XQotICAgICAgICAg
ICAgc2VsZi5zZXRfYmxvY2tlZChuYW1lKQotICAgICAgICAgICAgaWYgbm90IG5hbWUuc3RhcnRz
d2l0aCgicHl0ZXN0XyIpOgotICAgICAgICAgICAgICAgIHNlbGYuc2V0X2Jsb2NrZWQoInB5dGVz
dF8iICsgbmFtZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuaW1wb3J0X3BsdWdp
bihhcmcpCi0KLSAgICBkZWYgY29uc2lkZXJfY29uZnRlc3Qoc2VsZiwgY29uZnRlc3Rtb2R1bGUp
OgotICAgICAgICBzZWxmLnJlZ2lzdGVyKGNvbmZ0ZXN0bW9kdWxlLCBuYW1lPWNvbmZ0ZXN0bW9k
dWxlLl9fZmlsZV9fKQotCi0gICAgZGVmIGNvbnNpZGVyX2VudihzZWxmKToKLSAgICAgICAgc2Vs
Zi5faW1wb3J0X3BsdWdpbl9zcGVjcyhvcy5lbnZpcm9uLmdldCgiUFlURVNUX1BMVUdJTlMiKSkK
LQotICAgIGRlZiBjb25zaWRlcl9tb2R1bGUoc2VsZiwgbW9kKToKLSAgICAgICAgc2VsZi5faW1w
b3J0X3BsdWdpbl9zcGVjcyhnZXRhdHRyKG1vZCwgJ3B5dGVzdF9wbHVnaW5zJywgW10pKQotCi0g
ICAgZGVmIF9pbXBvcnRfcGx1Z2luX3NwZWNzKHNlbGYsIHNwZWMpOgotICAgICAgICBwbHVnaW5z
ID0gX2dldF9wbHVnaW5fc3BlY3NfYXNfbGlzdChzcGVjKQotICAgICAgICBmb3IgaW1wb3J0X3Nw
ZWMgaW4gcGx1Z2luczoKLSAgICAgICAgICAgIHNlbGYuaW1wb3J0X3BsdWdpbihpbXBvcnRfc3Bl
YykKLQotICAgIGRlZiBpbXBvcnRfcGx1Z2luKHNlbGYsIG1vZG5hbWUpOgotICAgICAgICAjIG1v
c3Qgb2Z0ZW4gbW9kbmFtZSByZWZlcnMgdG8gYnVpbHRpbiBtb2R1bGVzLCBlLmcuICJweXRlc3Rl
ciIsCi0gICAgICAgICMgInRlcm1pbmFsIiBvciAiY2FwdHVyZSIuICBUaG9zZSBwbHVnaW5zIGFy
ZSByZWdpc3RlcmVkIHVuZGVyIHRoZWlyCi0gICAgICAgICMgYmFzZW5hbWUgZm9yIGhpc3Rvcmlj
IHB1cnBvc2VzIGJ1dCBtdXN0IGJlIGltcG9ydGVkIHdpdGggdGhlCi0gICAgICAgICMgX3B5dGVz
dCBwcmVmaXguCi0gICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG1vZG5hbWUsIChzaXgudGV4dF90
eXBlLCBzdHIpKSwgIm1vZHVsZSBuYW1lIGFzIHRleHQgcmVxdWlyZWQsIGdvdCAlciIgJSBtb2Ru
YW1lCi0gICAgICAgIG1vZG5hbWUgPSBzdHIobW9kbmFtZSkKLSAgICAgICAgaWYgc2VsZi5pc19i
bG9ja2VkKG1vZG5hbWUpIG9yIHNlbGYuZ2V0X3BsdWdpbihtb2RuYW1lKSBpcyBub3QgTm9uZToK
LSAgICAgICAgICAgIHJldHVybgotICAgICAgICBpZiBtb2RuYW1lIGluIGJ1aWx0aW5fcGx1Z2lu
czoKLSAgICAgICAgICAgIGltcG9ydHNwZWMgPSAiX3B5dGVzdC4iICsgbW9kbmFtZQotICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgaW1wb3J0c3BlYyA9IG1vZG5hbWUKLSAgICAgICAgc2VsZi5y
ZXdyaXRlX2hvb2subWFya19yZXdyaXRlKGltcG9ydHNwZWMpCi0gICAgICAgIHRyeToKLSAgICAg
ICAgICAgIF9faW1wb3J0X18oaW1wb3J0c3BlYykKLSAgICAgICAgZXhjZXB0IEltcG9ydEVycm9y
IGFzIGU6Ci0gICAgICAgICAgICBuZXdfZXhjX3R5cGUgPSBJbXBvcnRFcnJvcgotICAgICAgICAg
ICAgbmV3X2V4Y19tZXNzYWdlID0gJ0Vycm9yIGltcG9ydGluZyBwbHVnaW4gIiVzIjogJXMnICUg
KG1vZG5hbWUsIHNhZmVfc3RyKGUuYXJnc1swXSkpCi0gICAgICAgICAgICBuZXdfZXhjID0gbmV3
X2V4Y190eXBlKG5ld19leGNfbWVzc2FnZSkKLQotICAgICAgICAgICAgc2l4LnJlcmFpc2UobmV3
X2V4Y190eXBlLCBuZXdfZXhjLCBzeXMuZXhjX2luZm8oKVsyXSkKLQotICAgICAgICBleGNlcHQg
RXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICBpbXBvcnQgcHl0ZXN0Ci0gICAgICAgICAgICBp
ZiBub3QgaGFzYXR0cihweXRlc3QsICdza2lwJykgb3Igbm90IGlzaW5zdGFuY2UoZSwgcHl0ZXN0
LnNraXAuRXhjZXB0aW9uKToKLSAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgc2Vs
Zi5fd2Fybigic2tpcHBlZCBwbHVnaW4gJXI6ICVzIiAlICgobW9kbmFtZSwgZS5tc2cpKSkKLSAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgIG1vZCA9IHN5cy5tb2R1bGVzW2ltcG9ydHNwZWNdCi0g
ICAgICAgICAgICBzZWxmLnJlZ2lzdGVyKG1vZCwgbW9kbmFtZSkKLQotCi1kZWYgX2dldF9wbHVn
aW5fc3BlY3NfYXNfbGlzdChzcGVjcyk6Ci0gICAgIiIiCi0gICAgUGFyc2VzIGEgbGlzdCBvZiAi
cGx1Z2luIHNwZWNzIiBhbmQgcmV0dXJucyBhIGxpc3Qgb2YgcGx1Z2luIG5hbWVzLgotCi0gICAg
UGx1Z2luIHNwZWNzIGNhbiBiZSBnaXZlbiBhcyBhIGxpc3Qgb2Ygc3RyaW5ncyBzZXBhcmF0ZWQg
YnkgIiwiIG9yIGFscmVhZHkgYXMgYSBsaXN0L3R1cGxlIGluCi0gICAgd2hpY2ggY2FzZSBpdCBp
cyByZXR1cm5lZCBhcyBhIGxpc3QuIFNwZWNzIGNhbiBhbHNvIGJlIGBOb25lYCBpbiB3aGljaCBj
YXNlIGFuCi0gICAgZW1wdHkgbGlzdCBpcyByZXR1cm5lZC4KLSAgICAiIiIKLSAgICBpZiBzcGVj
cyBpcyBub3QgTm9uZToKLSAgICAgICAgaWYgaXNpbnN0YW5jZShzcGVjcywgc3RyKToKLSAgICAg
ICAgICAgIHNwZWNzID0gc3BlY3Muc3BsaXQoJywnKSBpZiBzcGVjcyBlbHNlIFtdCi0gICAgICAg
IGlmIG5vdCBpc2luc3RhbmNlKHNwZWNzLCAobGlzdCwgdHVwbGUpKToKLSAgICAgICAgICAgIHJh
aXNlIFVzYWdlRXJyb3IoIlBsdWdpbiBzcGVjcyBtdXN0IGJlIGEgJywnLXNlcGFyYXRlZCBzdHJp
bmcgb3IgYSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaXN0L3R1cGxlIG9mIHN0
cmluZ3MgZm9yIHBsdWdpbiBuYW1lcy4gR2l2ZW46ICVyIiAlIHNwZWNzKQotICAgICAgICByZXR1
cm4gbGlzdChzcGVjcykKLSAgICByZXR1cm4gW10KLQotCi1jbGFzcyBQYXJzZXI6Ci0gICAgIiIi
IFBhcnNlciBmb3IgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyBhbmQgaW5pLWZpbGUgdmFsdWVzLgot
Ci0gICAgOml2YXIgZXh0cmFfaW5mbzogZGljdCBvZiBnZW5lcmljIHBhcmFtIC0+IHZhbHVlIHRv
IGRpc3BsYXkgaW4gY2FzZQotICAgICAgICB0aGVyZSdzIGFuIGVycm9yIHByb2Nlc3NpbmcgdGhl
IGNvbW1hbmQgbGluZSBhcmd1bWVudHMuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgdXNhZ2U9Tm9uZSwgcHJvY2Vzc29wdD1Ob25lKToKLSAgICAgICAgc2VsZi5fYW5vbnltb3Vz
ID0gT3B0aW9uR3JvdXAoImN1c3RvbSBvcHRpb25zIiwgcGFyc2VyPXNlbGYpCi0gICAgICAgIHNl
bGYuX2dyb3VwcyA9IFtdCi0gICAgICAgIHNlbGYuX3Byb2Nlc3NvcHQgPSBwcm9jZXNzb3B0Ci0g
ICAgICAgIHNlbGYuX3VzYWdlID0gdXNhZ2UKLSAgICAgICAgc2VsZi5faW5pZGljdCA9IHt9Ci0g
ICAgICAgIHNlbGYuX2luaW5hbWVzID0gW10KLSAgICAgICAgc2VsZi5leHRyYV9pbmZvID0ge30K
LQotICAgIGRlZiBwcm9jZXNzb3B0aW9uKHNlbGYsIG9wdGlvbik6Ci0gICAgICAgIGlmIHNlbGYu
X3Byb2Nlc3NvcHQ6Ci0gICAgICAgICAgICBpZiBvcHRpb24uZGVzdDoKLSAgICAgICAgICAgICAg
ICBzZWxmLl9wcm9jZXNzb3B0KG9wdGlvbikKLQotICAgIGRlZiBnZXRncm91cChzZWxmLCBuYW1l
LCBkZXNjcmlwdGlvbj0iIiwgYWZ0ZXI9Tm9uZSk6Ci0gICAgICAgICIiIiBnZXQgKG9yIGNyZWF0
ZSkgYSBuYW1lZCBvcHRpb24gR3JvdXAuCi0KLSAgICAgICAgOm5hbWU6IG5hbWUgb2YgdGhlIG9w
dGlvbiBncm91cC4KLSAgICAgICAgOmRlc2NyaXB0aW9uOiBsb25nIGRlc2NyaXB0aW9uIGZvciAt
LWhlbHAgb3V0cHV0LgotICAgICAgICA6YWZ0ZXI6IG5hbWUgb2Ygb3RoZXIgZ3JvdXAsIHVzZWQg
Zm9yIG9yZGVyaW5nIC0taGVscCBvdXRwdXQuCi0KLSAgICAgICAgVGhlIHJldHVybmVkIGdyb3Vw
IG9iamVjdCBoYXMgYW4gYGBhZGRvcHRpb25gYCBtZXRob2Qgd2l0aCB0aGUgc2FtZQotICAgICAg
ICBzaWduYXR1cmUgYXMgOnB5OmZ1bmM6YHBhcnNlci5hZGRvcHRpb24KLSAgICAgICAgPF9weXRl
c3QuY29uZmlnLlBhcnNlci5hZGRvcHRpb24+YCBidXQgd2lsbCBiZSBzaG93biBpbiB0aGUKLSAg
ICAgICAgcmVzcGVjdGl2ZSBncm91cCBpbiB0aGUgb3V0cHV0IG9mIGBgcHl0ZXN0LiAtLWhlbHBg
YC4KLSAgICAgICAgIiIiCi0gICAgICAgIGZvciBncm91cCBpbiBzZWxmLl9ncm91cHM6Ci0gICAg
ICAgICAgICBpZiBncm91cC5uYW1lID09IG5hbWU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGdy
b3VwCi0gICAgICAgIGdyb3VwID0gT3B0aW9uR3JvdXAobmFtZSwgZGVzY3JpcHRpb24sIHBhcnNl
cj1zZWxmKQotICAgICAgICBpID0gMAotICAgICAgICBmb3IgaSwgZ3JwIGluIGVudW1lcmF0ZShz
ZWxmLl9ncm91cHMpOgotICAgICAgICAgICAgaWYgZ3JwLm5hbWUgPT0gYWZ0ZXI6Ci0gICAgICAg
ICAgICAgICAgYnJlYWsKLSAgICAgICAgc2VsZi5fZ3JvdXBzLmluc2VydChpICsgMSwgZ3JvdXAp
Ci0gICAgICAgIHJldHVybiBncm91cAotCi0gICAgZGVmIGFkZG9wdGlvbihzZWxmLCAqb3B0cywg
KiphdHRycyk6Ci0gICAgICAgICIiIiByZWdpc3RlciBhIGNvbW1hbmQgbGluZSBvcHRpb24uCi0K
LSAgICAgICAgOm9wdHM6IG9wdGlvbiBuYW1lcywgY2FuIGJlIHNob3J0IG9yIGxvbmcgb3B0aW9u
cy4KLSAgICAgICAgOmF0dHJzOiBzYW1lIGF0dHJpYnV0ZXMgd2hpY2ggdGhlIGBgYWRkX29wdGlv
bigpYGAgZnVuY3Rpb24gb2YgdGhlCi0gICAgICAgICAgIGBhcmdwYXJzZSBsaWJyYXJ5Ci0gICAg
ICAgICAgIDxodHRwOi8vZG9jcy5weXRob24ub3JnLzIvbGlicmFyeS9hcmdwYXJzZS5odG1sPmBf
Ci0gICAgICAgICAgIGFjY2VwdHMuCi0KLSAgICAgICAgQWZ0ZXIgY29tbWFuZCBsaW5lIHBhcnNp
bmcgb3B0aW9ucyBhcmUgYXZhaWxhYmxlIG9uIHRoZSBweXRlc3QgY29uZmlnCi0gICAgICAgIG9i
amVjdCB2aWEgYGBjb25maWcub3B0aW9uLk5BTUVgYCB3aGVyZSBgYE5BTUVgYCBpcyB1c3VhbGx5
IHNldAotICAgICAgICBieSBwYXNzaW5nIGEgYGBkZXN0YGAgYXR0cmlidXRlLCBmb3IgZXhhbXBs
ZQotICAgICAgICBgYGFkZG9wdGlvbigiLS1sb25nIiwgZGVzdD0iTkFNRSIsIC4uLilgYC4KLSAg
ICAgICAgIiIiCi0gICAgICAgIHNlbGYuX2Fub255bW91cy5hZGRvcHRpb24oKm9wdHMsICoqYXR0
cnMpCi0KLSAgICBkZWYgcGFyc2Uoc2VsZiwgYXJncywgbmFtZXNwYWNlPU5vbmUpOgotICAgICAg
ICBmcm9tIF9weXRlc3QuX2FyZ2NvbXBsZXRlIGltcG9ydCB0cnlfYXJnY29tcGxldGUKLSAgICAg
ICAgc2VsZi5vcHRwYXJzZXIgPSBzZWxmLl9nZXRwYXJzZXIoKQotICAgICAgICB0cnlfYXJnY29t
cGxldGUoc2VsZi5vcHRwYXJzZXIpCi0gICAgICAgIHJldHVybiBzZWxmLm9wdHBhcnNlci5wYXJz
ZV9hcmdzKFtzdHIoeCkgZm9yIHggaW4gYXJnc10sIG5hbWVzcGFjZT1uYW1lc3BhY2UpCi0KLSAg
ICBkZWYgX2dldHBhcnNlcihzZWxmKToKLSAgICAgICAgZnJvbSBfcHl0ZXN0Ll9hcmdjb21wbGV0
ZSBpbXBvcnQgZmlsZXNjb21wbGV0ZXIKLSAgICAgICAgb3B0cGFyc2VyID0gTXlPcHRpb25QYXJz
ZXIoc2VsZiwgc2VsZi5leHRyYV9pbmZvKQotICAgICAgICBncm91cHMgPSBzZWxmLl9ncm91cHMg
KyBbc2VsZi5fYW5vbnltb3VzXQotICAgICAgICBmb3IgZ3JvdXAgaW4gZ3JvdXBzOgotICAgICAg
ICAgICAgaWYgZ3JvdXAub3B0aW9uczoKLSAgICAgICAgICAgICAgICBkZXNjID0gZ3JvdXAuZGVz
Y3JpcHRpb24gb3IgZ3JvdXAubmFtZQotICAgICAgICAgICAgICAgIGFyZ2dyb3VwID0gb3B0cGFy
c2VyLmFkZF9hcmd1bWVudF9ncm91cChkZXNjKQotICAgICAgICAgICAgICAgIGZvciBvcHRpb24g
aW4gZ3JvdXAub3B0aW9uczoKLSAgICAgICAgICAgICAgICAgICAgbiA9IG9wdGlvbi5uYW1lcygp
Ci0gICAgICAgICAgICAgICAgICAgIGEgPSBvcHRpb24uYXR0cnMoKQotICAgICAgICAgICAgICAg
ICAgICBhcmdncm91cC5hZGRfYXJndW1lbnQoKm4sICoqYSkKLSAgICAgICAgIyBiYXNoIGxpa2Ug
YXV0b2NvbXBsZXRpb24gZm9yIGRpcnMgKGFwcGVuZGluZyAnLycpCi0gICAgICAgIG9wdHBhcnNl
ci5hZGRfYXJndW1lbnQoRklMRV9PUl9ESVIsIG5hcmdzPScqJykuY29tcGxldGVyID0gZmlsZXNj
b21wbGV0ZXIKLSAgICAgICAgcmV0dXJuIG9wdHBhcnNlcgotCi0gICAgZGVmIHBhcnNlX3NldG9w
dGlvbihzZWxmLCBhcmdzLCBvcHRpb24sIG5hbWVzcGFjZT1Ob25lKToKLSAgICAgICAgcGFyc2Vk
b3B0aW9uID0gc2VsZi5wYXJzZShhcmdzLCBuYW1lc3BhY2U9bmFtZXNwYWNlKQotICAgICAgICBm
b3IgbmFtZSwgdmFsdWUgaW4gcGFyc2Vkb3B0aW9uLl9fZGljdF9fLml0ZW1zKCk6Ci0gICAgICAg
ICAgICBzZXRhdHRyKG9wdGlvbiwgbmFtZSwgdmFsdWUpCi0gICAgICAgIHJldHVybiBnZXRhdHRy
KHBhcnNlZG9wdGlvbiwgRklMRV9PUl9ESVIpCi0KLSAgICBkZWYgcGFyc2Vfa25vd25fYXJncyhz
ZWxmLCBhcmdzLCBuYW1lc3BhY2U9Tm9uZSk6Ci0gICAgICAgICIiInBhcnNlcyBhbmQgcmV0dXJu
cyBhIG5hbWVzcGFjZSBvYmplY3Qgd2l0aCBrbm93biBhcmd1bWVudHMgYXQgdGhpcwotICAgICAg
ICBwb2ludC4KLSAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiBzZWxmLnBhcnNlX2tub3duX2Fu
ZF91bmtub3duX2FyZ3MoYXJncywgbmFtZXNwYWNlPW5hbWVzcGFjZSlbMF0KLQotICAgIGRlZiBw
YXJzZV9rbm93bl9hbmRfdW5rbm93bl9hcmdzKHNlbGYsIGFyZ3MsIG5hbWVzcGFjZT1Ob25lKToK
LSAgICAgICAgIiIicGFyc2VzIGFuZCByZXR1cm5zIGEgbmFtZXNwYWNlIG9iamVjdCB3aXRoIGtu
b3duIGFyZ3VtZW50cywgYW5kCi0gICAgICAgIHRoZSByZW1haW5pbmcgYXJndW1lbnRzIHVua25v
d24gYXQgdGhpcyBwb2ludC4KLSAgICAgICAgIiIiCi0gICAgICAgIG9wdHBhcnNlciA9IHNlbGYu
X2dldHBhcnNlcigpCi0gICAgICAgIGFyZ3MgPSBbc3RyKHgpIGZvciB4IGluIGFyZ3NdCi0gICAg
ICAgIHJldHVybiBvcHRwYXJzZXIucGFyc2Vfa25vd25fYXJncyhhcmdzLCBuYW1lc3BhY2U9bmFt
ZXNwYWNlKQotCi0gICAgZGVmIGFkZGluaShzZWxmLCBuYW1lLCBoZWxwLCB0eXBlPU5vbmUsIGRl
ZmF1bHQ9Tm9uZSk6Ci0gICAgICAgICIiIiByZWdpc3RlciBhbiBpbmktZmlsZSBvcHRpb24uCi0K
LSAgICAgICAgOm5hbWU6IG5hbWUgb2YgdGhlIGluaS12YXJpYWJsZQotICAgICAgICA6dHlwZTog
dHlwZSBvZiB0aGUgdmFyaWFibGUsIGNhbiBiZSBgYHBhdGhsaXN0YGAsIGBgYXJnc2BgLCBgYGxp
bmVsaXN0YGAKLSAgICAgICAgICAgICAgIG9yIGBgYm9vbGBgLgotICAgICAgICA6ZGVmYXVsdDog
ZGVmYXVsdCB2YWx1ZSBpZiBubyBpbmktZmlsZSBvcHRpb24gZXhpc3RzIGJ1dCBpcyBxdWVyaWVk
LgotCi0gICAgICAgIFRoZSB2YWx1ZSBvZiBpbmktdmFyaWFibGVzIGNhbiBiZSByZXRyaWV2ZWQg
dmlhIGEgY2FsbCB0bwotICAgICAgICA6cHk6ZnVuYzpgY29uZmlnLmdldGluaShuYW1lKSA8X3B5
dGVzdC5jb25maWcuQ29uZmlnLmdldGluaT5gLgotICAgICAgICAiIiIKLSAgICAgICAgYXNzZXJ0
IHR5cGUgaW4gKE5vbmUsICJwYXRobGlzdCIsICJhcmdzIiwgImxpbmVsaXN0IiwgImJvb2wiKQot
ICAgICAgICBzZWxmLl9pbmlkaWN0W25hbWVdID0gKGhlbHAsIHR5cGUsIGRlZmF1bHQpCi0gICAg
ICAgIHNlbGYuX2luaW5hbWVzLmFwcGVuZChuYW1lKQotCi0KLWNsYXNzIEFyZ3VtZW50RXJyb3Io
RXhjZXB0aW9uKToKLSAgICAiIiIKLSAgICBSYWlzZWQgaWYgYW4gQXJndW1lbnQgaW5zdGFuY2Ug
aXMgY3JlYXRlZCB3aXRoIGludmFsaWQgb3IKLSAgICBpbmNvbnNpc3RlbnQgYXJndW1lbnRzLgot
ICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1zZywgb3B0aW9uKToKLSAgICAgICAg
c2VsZi5tc2cgPSBtc2cKLSAgICAgICAgc2VsZi5vcHRpb25faWQgPSBzdHIob3B0aW9uKQotCi0g
ICAgZGVmIF9fc3RyX18oc2VsZik6Ci0gICAgICAgIGlmIHNlbGYub3B0aW9uX2lkOgotICAgICAg
ICAgICAgcmV0dXJuICJvcHRpb24gJXM6ICVzIiAlIChzZWxmLm9wdGlvbl9pZCwgc2VsZi5tc2cp
Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5tc2cKLQotCi1jbGFzcyBB
cmd1bWVudDoKLSAgICAiIiJjbGFzcyB0aGF0IG1pbWljcyB0aGUgbmVjZXNzYXJ5IGJlaGF2aW91
ciBvZiBvcHRwYXJzZS5PcHRpb24KLQotICAgIGl0cyBjdXJyZW50bHkgYSBsZWFzdCBlZmZvcnQg
aW1wbGVtZW50YXRpb24KLSAgICBhbmQgaWdub3JpbmcgY2hvaWNlcyBhbmQgaW50ZWdlciBwcmVm
aXhlcwotICAgIGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMvbGlicmFyeS9vcHRwYXJzZS5odG1s
I29wdHBhcnNlLXN0YW5kYXJkLW9wdGlvbi10eXBlcwotICAgICIiIgotICAgIF90eXBfbWFwID0g
ewotICAgICAgICAnaW50JzogaW50LAotICAgICAgICAnc3RyaW5nJzogc3RyLAotICAgICAgICAn
ZmxvYXQnOiBmbG9hdCwKLSAgICAgICAgJ2NvbXBsZXgnOiBjb21wbGV4LAotICAgIH0KLQotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCAqbmFtZXMsICoqYXR0cnMpOgotICAgICAgICAiIiJzdG9yZSBw
YXJtcyBpbiBwcml2YXRlIHZhcnMgZm9yIHVzZSBpbiBhZGRfYXJndW1lbnQiIiIKLSAgICAgICAg
c2VsZi5fYXR0cnMgPSBhdHRycwotICAgICAgICBzZWxmLl9zaG9ydF9vcHRzID0gW10KLSAgICAg
ICAgc2VsZi5fbG9uZ19vcHRzID0gW10KLSAgICAgICAgc2VsZi5kZXN0ID0gYXR0cnMuZ2V0KCdk
ZXN0JykKLSAgICAgICAgaWYgJyVkZWZhdWx0JyBpbiAoYXR0cnMuZ2V0KCdoZWxwJykgb3IgJycp
OgotICAgICAgICAgICAgd2FybmluZ3Mud2FybigKLSAgICAgICAgICAgICAgICAncHl0ZXN0IG5v
dyB1c2VzIGFyZ3BhcnNlLiAiJWRlZmF1bHQiIHNob3VsZCBiZScKLSAgICAgICAgICAgICAgICAn
IGNoYW5nZWQgdG8gIiUoZGVmYXVsdClzIiAnLAotICAgICAgICAgICAgICAgIERlcHJlY2F0aW9u
V2FybmluZywKLSAgICAgICAgICAgICAgICBzdGFja2xldmVsPTMpCi0gICAgICAgIHRyeToKLSAg
ICAgICAgICAgIHR5cCA9IGF0dHJzWyd0eXBlJ10KLSAgICAgICAgZXhjZXB0IEtleUVycm9yOgot
ICAgICAgICAgICAgcGFzcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyB0aGlzIG1pZ2h0
IHJhaXNlIGEga2V5ZXJyb3IgYXMgd2VsbCwgZG9uJ3Qgd2FudCB0byBjYXRjaCB0aGF0Ci0gICAg
ICAgICAgICBpZiBpc2luc3RhbmNlKHR5cCwgc2l4LnN0cmluZ190eXBlcyk6Ci0gICAgICAgICAg
ICAgICAgaWYgdHlwID09ICdjaG9pY2UnOgotICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy53
YXJuKAotICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUgYXJndW1lbnQgdG8gYWRkb3B0aW9u
KCkgaXMgYSBzdHJpbmcgJXIuJwotICAgICAgICAgICAgICAgICAgICAgICAgJyBGb3IgcGFyc2Vh
cmcgdGhpcyBpcyBvcHRpb25hbCBhbmQgd2hlbiBzdXBwbGllZCcKLSAgICAgICAgICAgICAgICAg
ICAgICAgICcgc2hvdWxkIGJlIGEgdHlwZS4nCi0gICAgICAgICAgICAgICAgICAgICAgICAnIChv
cHRpb25zOiAlcyknICUgKHR5cCwgbmFtZXMpLAotICAgICAgICAgICAgICAgICAgICAgICAgRGVw
cmVjYXRpb25XYXJuaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tsZXZlbD0zKQot
ICAgICAgICAgICAgICAgICAgICAjIGFyZ3BhcnNlIGV4cGVjdHMgYSB0eXBlIGhlcmUgdGFrZSBp
dCBmcm9tCi0gICAgICAgICAgICAgICAgICAgICMgdGhlIHR5cGUgb2YgdGhlIGZpcnN0IGVsZW1l
bnQKLSAgICAgICAgICAgICAgICAgICAgYXR0cnNbJ3R5cGUnXSA9IHR5cGUoYXR0cnNbJ2Nob2lj
ZXMnXVswXSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICB3YXJu
aW5ncy53YXJuKAotICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUgYXJndW1lbnQgdG8gYWRk
b3B0aW9uKCkgaXMgYSBzdHJpbmcgJXIuJwotICAgICAgICAgICAgICAgICAgICAgICAgJyBGb3Ig
cGFyc2VhcmcgdGhpcyBzaG91bGQgYmUgYSB0eXBlLicKLSAgICAgICAgICAgICAgICAgICAgICAg
ICcgKG9wdGlvbnM6ICVzKScgJSAodHlwLCBuYW1lcyksCi0gICAgICAgICAgICAgICAgICAgICAg
ICBEZXByZWNhdGlvbldhcm5pbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGFja2xldmVs
PTMpCi0gICAgICAgICAgICAgICAgICAgIGF0dHJzWyd0eXBlJ10gPSBBcmd1bWVudC5fdHlwX21h
cFt0eXBdCi0gICAgICAgICAgICAgICAgIyB1c2VkIGluIHRlc3RfcGFyc2VvcHQgLT4gdGVzdF9w
YXJzZV9kZWZhdWx0Z2V0dGVyCi0gICAgICAgICAgICAgICAgc2VsZi50eXBlID0gYXR0cnNbJ3R5
cGUnXQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLnR5cGUgPSB0eXAK
LSAgICAgICAgdHJ5OgotICAgICAgICAgICAgIyBhdHRyaWJ1dGUgZXhpc3RlbmNlIGlzIHRlc3Rl
ZCBpbiBDb25maWcuX3Byb2Nlc3NvcHQKLSAgICAgICAgICAgIHNlbGYuZGVmYXVsdCA9IGF0dHJz
WydkZWZhdWx0J10KLSAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgcGFzcwot
ICAgICAgICBzZWxmLl9zZXRfb3B0X3N0cmluZ3MobmFtZXMpCi0gICAgICAgIGlmIG5vdCBzZWxm
LmRlc3Q6Ci0gICAgICAgICAgICBpZiBzZWxmLl9sb25nX29wdHM6Ci0gICAgICAgICAgICAgICAg
c2VsZi5kZXN0ID0gc2VsZi5fbG9uZ19vcHRzWzBdWzI6XS5yZXBsYWNlKCctJywgJ18nKQotICAg
ICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAg
IHNlbGYuZGVzdCA9IHNlbGYuX3Nob3J0X29wdHNbMF1bMTpdCi0gICAgICAgICAgICAgICAgZXhj
ZXB0IEluZGV4RXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEFyZ3VtZW50RXJyb3Io
Ci0gICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBhIGxvbmcgb3Igc2hvcnQgb3B0aW9uJywg
c2VsZikKLQotICAgIGRlZiBuYW1lcyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3Nob3J0
X29wdHMgKyBzZWxmLl9sb25nX29wdHMKLQotICAgIGRlZiBhdHRycyhzZWxmKToKLSAgICAgICAg
IyB1cGRhdGUgYW55IGF0dHJpYnV0ZXMgc2V0IGJ5IHByb2Nlc3NvcHQKLSAgICAgICAgYXR0cnMg
PSAnZGVmYXVsdCBkZXN0IGhlbHAnLnNwbGl0KCkKLSAgICAgICAgaWYgc2VsZi5kZXN0OgotICAg
ICAgICAgICAgYXR0cnMuYXBwZW5kKHNlbGYuZGVzdCkKLSAgICAgICAgZm9yIGF0dHIgaW4gYXR0
cnM6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fYXR0cnNbYXR0cl0g
PSBnZXRhdHRyKHNlbGYsIGF0dHIpCi0gICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6
Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICBpZiBzZWxmLl9hdHRycy5nZXQoJ2hlbHAn
KToKLSAgICAgICAgICAgIGEgPSBzZWxmLl9hdHRyc1snaGVscCddCi0gICAgICAgICAgICBhID0g
YS5yZXBsYWNlKCclZGVmYXVsdCcsICclKGRlZmF1bHQpcycpCi0gICAgICAgICAgICAjIGEgPSBh
LnJlcGxhY2UoJyVwcm9nJywgJyUocHJvZylzJykKLSAgICAgICAgICAgIHNlbGYuX2F0dHJzWydo
ZWxwJ10gPSBhCi0gICAgICAgIHJldHVybiBzZWxmLl9hdHRycwotCi0gICAgZGVmIF9zZXRfb3B0
X3N0cmluZ3Moc2VsZiwgb3B0cyk6Ci0gICAgICAgICIiImRpcmVjdGx5IGZyb20gb3B0cGFyc2UK
LQotICAgICAgICBtaWdodCBub3QgYmUgbmVjZXNzYXJ5IGFzIHRoaXMgaXMgcGFzc2VkIHRvIGFy
Z3BhcnNlIGxhdGVyIG9uIiIiCi0gICAgICAgIGZvciBvcHQgaW4gb3B0czoKLSAgICAgICAgICAg
IGlmIGxlbihvcHQpIDwgMjoKLSAgICAgICAgICAgICAgICByYWlzZSBBcmd1bWVudEVycm9yKAot
ICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBvcHRpb24gc3RyaW5nICVyOiAiCi0gICAgICAg
ICAgICAgICAgICAgICJtdXN0IGJlIGF0IGxlYXN0IHR3byBjaGFyYWN0ZXJzIGxvbmciICUgb3B0
LCBzZWxmKQotICAgICAgICAgICAgZWxpZiBsZW4ob3B0KSA9PSAyOgotICAgICAgICAgICAgICAg
IGlmIG5vdCAob3B0WzBdID09ICItIiBhbmQgb3B0WzFdICE9ICItIik6Ci0gICAgICAgICAgICAg
ICAgICAgIHJhaXNlIEFyZ3VtZW50RXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICAgICAiaW52
YWxpZCBzaG9ydCBvcHRpb24gc3RyaW5nICVyOiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAi
bXVzdCBiZSBvZiB0aGUgZm9ybSAteCwgKHggYW55IG5vbi1kYXNoIGNoYXIpIiAlIG9wdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHNlbGYpCi0gICAgICAgICAgICAgICAgc2VsZi5fc2hvcnRf
b3B0cy5hcHBlbmQob3B0KQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBpZiBu
b3QgKG9wdFswOjJdID09ICItLSIgYW5kIG9wdFsyXSAhPSAiLSIpOgotICAgICAgICAgICAgICAg
ICAgICByYWlzZSBBcmd1bWVudEVycm9yKAotICAgICAgICAgICAgICAgICAgICAgICAgImludmFs
aWQgbG9uZyBvcHRpb24gc3RyaW5nICVyOiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAibXVz
dCBzdGFydCB3aXRoIC0tLCBmb2xsb3dlZCBieSBub24tZGFzaCIgJSBvcHQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBzZWxmKQotICAgICAgICAgICAgICAgIHNlbGYuX2xvbmdfb3B0cy5hcHBl
bmQob3B0KQotCi0gICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICBhcmdzID0gW10KLSAg
ICAgICAgaWYgc2VsZi5fc2hvcnRfb3B0czoKLSAgICAgICAgICAgIGFyZ3MgKz0gWydfc2hvcnRf
b3B0czogJyArIHJlcHIoc2VsZi5fc2hvcnRfb3B0cyldCi0gICAgICAgIGlmIHNlbGYuX2xvbmdf
b3B0czoKLSAgICAgICAgICAgIGFyZ3MgKz0gWydfbG9uZ19vcHRzOiAnICsgcmVwcihzZWxmLl9s
b25nX29wdHMpXQotICAgICAgICBhcmdzICs9IFsnZGVzdDogJyArIHJlcHIoc2VsZi5kZXN0KV0K
LSAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAndHlwZScpOgotICAgICAgICAgICAgYXJncyArPSBb
J3R5cGU6ICcgKyByZXByKHNlbGYudHlwZSldCi0gICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgJ2Rl
ZmF1bHQnKToKLSAgICAgICAgICAgIGFyZ3MgKz0gWydkZWZhdWx0OiAnICsgcmVwcihzZWxmLmRl
ZmF1bHQpXQotICAgICAgICByZXR1cm4gJ0FyZ3VtZW50KHswfSknLmZvcm1hdCgnLCAnLmpvaW4o
YXJncykpCi0KLQotY2xhc3MgT3B0aW9uR3JvdXA6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5h
bWUsIGRlc2NyaXB0aW9uPSIiLCBwYXJzZXI9Tm9uZSk6Ci0gICAgICAgIHNlbGYubmFtZSA9IG5h
bWUKLSAgICAgICAgc2VsZi5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uCi0gICAgICAgIHNlbGYu
b3B0aW9ucyA9IFtdCi0gICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyCi0KLSAgICBkZWYgYWRk
b3B0aW9uKHNlbGYsICpvcHRuYW1lcywgKiphdHRycyk6Ci0gICAgICAgICIiIiBhZGQgYW4gb3B0
aW9uIHRvIHRoaXMgZ3JvdXAuCi0KLSAgICAgICAgaWYgYSBzaG9ydGVuZWQgdmVyc2lvbiBvZiBh
IGxvbmcgb3B0aW9uIGlzIHNwZWNpZmllZCBpdCB3aWxsCi0gICAgICAgIGJlIHN1cHByZXNzZWQg
aW4gdGhlIGhlbHAuIGFkZG9wdGlvbignLS10d293b3JkcycsICctLXR3by13b3JkcycpCi0gICAg
ICAgIHJlc3VsdHMgaW4gaGVscCBzaG93aW5nICctLXR3by13b3Jkcycgb25seSwgYnV0IC0tdHdv
d29yZHMgZ2V0cwotICAgICAgICBhY2NlcHRlZCAqKmFuZCoqIHRoZSBhdXRvbWF0aWMgZGVzdGlu
YXRpb24gaXMgaW4gYXJncy50d293b3JkcwotICAgICAgICAiIiIKLSAgICAgICAgY29uZmxpY3Qg
PSBzZXQob3B0bmFtZXMpLmludGVyc2VjdGlvbigKLSAgICAgICAgICAgIG5hbWUgZm9yIG9wdCBp
biBzZWxmLm9wdGlvbnMgZm9yIG5hbWUgaW4gb3B0Lm5hbWVzKCkpCi0gICAgICAgIGlmIGNvbmZs
aWN0OgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigib3B0aW9uIG5hbWVzICVzIGFscmVh
ZHkgYWRkZWQiICUgY29uZmxpY3QpCi0gICAgICAgIG9wdGlvbiA9IEFyZ3VtZW50KCpvcHRuYW1l
cywgKiphdHRycykKLSAgICAgICAgc2VsZi5fYWRkb3B0aW9uX2luc3RhbmNlKG9wdGlvbiwgc2hv
cnR1cHBlcj1GYWxzZSkKLQotICAgIGRlZiBfYWRkb3B0aW9uKHNlbGYsICpvcHRuYW1lcywgKiph
dHRycyk6Ci0gICAgICAgIG9wdGlvbiA9IEFyZ3VtZW50KCpvcHRuYW1lcywgKiphdHRycykKLSAg
ICAgICAgc2VsZi5fYWRkb3B0aW9uX2luc3RhbmNlKG9wdGlvbiwgc2hvcnR1cHBlcj1UcnVlKQot
Ci0gICAgZGVmIF9hZGRvcHRpb25faW5zdGFuY2Uoc2VsZiwgb3B0aW9uLCBzaG9ydHVwcGVyPUZh
bHNlKToKLSAgICAgICAgaWYgbm90IHNob3J0dXBwZXI6Ci0gICAgICAgICAgICBmb3Igb3B0IGlu
IG9wdGlvbi5fc2hvcnRfb3B0czoKLSAgICAgICAgICAgICAgICBpZiBvcHRbMF0gPT0gJy0nIGFu
ZCBvcHRbMV0uaXNsb3dlcigpOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9y
KCJsb3dlcmNhc2Ugc2hvcnRvcHRpb25zIHJlc2VydmVkIikKLSAgICAgICAgaWYgc2VsZi5wYXJz
ZXI6Ci0gICAgICAgICAgICBzZWxmLnBhcnNlci5wcm9jZXNzb3B0aW9uKG9wdGlvbikKLSAgICAg
ICAgc2VsZi5vcHRpb25zLmFwcGVuZChvcHRpb24pCi0KLQotY2xhc3MgTXlPcHRpb25QYXJzZXIo
YXJncGFyc2UuQXJndW1lbnRQYXJzZXIpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIs
IGV4dHJhX2luZm89Tm9uZSk6Ci0gICAgICAgIGlmIG5vdCBleHRyYV9pbmZvOgotICAgICAgICAg
ICAgZXh0cmFfaW5mbyA9IHt9Ci0gICAgICAgIHNlbGYuX3BhcnNlciA9IHBhcnNlcgotICAgICAg
ICBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlci5fX2luaXRfXyhzZWxmLCB1c2FnZT1wYXJzZXIuX3Vz
YWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRfaGVscD1G
YWxzZSwgZm9ybWF0dGVyX2NsYXNzPURyb3BTaG9ydGVyTG9uZ0hlbHBGb3JtYXR0ZXIpCi0gICAg
ICAgICMgZXh0cmFfaW5mbyBpcyBhIGRpY3Qgb2YgKHBhcmFtIC0+IHZhbHVlKSB0byBkaXNwbGF5
IGlmIHRoZXJlJ3MKLSAgICAgICAgIyBhbiB1c2FnZSBlcnJvciB0byBwcm92aWRlIG1vcmUgY29u
dGV4dHVhbCBpbmZvcm1hdGlvbiB0byB0aGUgdXNlcgotICAgICAgICBzZWxmLmV4dHJhX2luZm8g
PSBleHRyYV9pbmZvCi0KLSAgICBkZWYgcGFyc2VfYXJncyhzZWxmLCBhcmdzPU5vbmUsIG5hbWVz
cGFjZT1Ob25lKToKLSAgICAgICAgIiIiYWxsb3cgc3BsaXR0aW5nIG9mIHBvc2l0aW9uYWwgYXJn
dW1lbnRzIiIiCi0gICAgICAgIGFyZ3MsIGFyZ3YgPSBzZWxmLnBhcnNlX2tub3duX2FyZ3MoYXJn
cywgbmFtZXNwYWNlKQotICAgICAgICBpZiBhcmd2OgotICAgICAgICAgICAgZm9yIGFyZyBpbiBh
cmd2OgotICAgICAgICAgICAgICAgIGlmIGFyZyBhbmQgYXJnWzBdID09ICctJzoKLSAgICAgICAg
ICAgICAgICAgICAgbGluZXMgPSBbJ3VucmVjb2duaXplZCBhcmd1bWVudHM6ICVzJyAlICgnICcu
am9pbihhcmd2KSldCi0gICAgICAgICAgICAgICAgICAgIGZvciBrLCB2IGluIHNvcnRlZChzZWxm
LmV4dHJhX2luZm8uaXRlbXMoKSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsaW5lcy5hcHBl
bmQoJyAgJXM6ICVzJyAlIChrLCB2KSkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5lcnJvcign
XG4nLmpvaW4obGluZXMpKQotICAgICAgICAgICAgZ2V0YXR0cihhcmdzLCBGSUxFX09SX0RJUiku
ZXh0ZW5kKGFyZ3YpCi0gICAgICAgIHJldHVybiBhcmdzCi0KLQotY2xhc3MgRHJvcFNob3J0ZXJM
b25nSGVscEZvcm1hdHRlcihhcmdwYXJzZS5IZWxwRm9ybWF0dGVyKToKLSAgICAiIiJzaG9ydGVu
IGhlbHAgZm9yIGxvbmcgb3B0aW9ucyB0aGF0IGRpZmZlciBvbmx5IGluIGV4dHJhIGh5cGhlbnMK
LQotICAgIC0gY29sbGFwc2UgKipsb25nKiogb3B0aW9ucyB0aGF0IGFyZSB0aGUgc2FtZSBleGNl
cHQgZm9yIGV4dHJhIGh5cGhlbnMKLSAgICAtIHNwZWNpYWwgYWN0aW9uIGF0dHJpYnV0ZSBtYXBf
bG9uZ19vcHRpb24gYWxsb3dzIHN1cnByZXNzaW5nIGFkZGl0aW9uYWwKLSAgICAgIGxvbmcgb3B0
aW9ucwotICAgIC0gc2hvcnRjdXQgaWYgdGhlcmUgYXJlIG9ubHkgdHdvIG9wdGlvbnMgYW5kIG9u
ZSBvZiB0aGVtIGlzIGEgc2hvcnQgb25lCi0gICAgLSBjYWNoZSByZXN1bHQgb24gYWN0aW9uIG9i
amVjdCBhcyB0aGlzIGlzIGNhbGxlZCBhdCBsZWFzdCAyIHRpbWVzCi0gICAgIiIiCi0KLSAgICBk
ZWYgX2Zvcm1hdF9hY3Rpb25faW52b2NhdGlvbihzZWxmLCBhY3Rpb24pOgotICAgICAgICBvcmdz
dHIgPSBhcmdwYXJzZS5IZWxwRm9ybWF0dGVyLl9mb3JtYXRfYWN0aW9uX2ludm9jYXRpb24oc2Vs
ZiwgYWN0aW9uKQotICAgICAgICBpZiBvcmdzdHIgYW5kIG9yZ3N0clswXSAhPSAnLSc6ICAjIG9u
bHkgb3B0aW9uYWwgYXJndW1lbnRzCi0gICAgICAgICAgICByZXR1cm4gb3Jnc3RyCi0gICAgICAg
IHJlcyA9IGdldGF0dHIoYWN0aW9uLCAnX2Zvcm1hdHRlZF9hY3Rpb25faW52b2NhdGlvbicsIE5v
bmUpCi0gICAgICAgIGlmIHJlczoKLSAgICAgICAgICAgIHJldHVybiByZXMKLSAgICAgICAgb3B0
aW9ucyA9IG9yZ3N0ci5zcGxpdCgnLCAnKQotICAgICAgICBpZiBsZW4ob3B0aW9ucykgPT0gMiBh
bmQgKGxlbihvcHRpb25zWzBdKSA9PSAyIG9yIGxlbihvcHRpb25zWzFdKSA9PSAyKToKLSAgICAg
ICAgICAgICMgYSBzaG9ydGN1dCBmb3IgJy1oLCAtLWhlbHAnIG9yICctLWFiYycsICctYScKLSAg
ICAgICAgICAgIGFjdGlvbi5fZm9ybWF0dGVkX2FjdGlvbl9pbnZvY2F0aW9uID0gb3Jnc3RyCi0g
ICAgICAgICAgICByZXR1cm4gb3Jnc3RyCi0gICAgICAgIHJldHVybl9saXN0ID0gW10KLSAgICAg
ICAgb3B0aW9uX21hcCA9IGdldGF0dHIoYWN0aW9uLCAnbWFwX2xvbmdfb3B0aW9uJywge30pCi0g
ICAgICAgIGlmIG9wdGlvbl9tYXAgaXMgTm9uZToKLSAgICAgICAgICAgIG9wdGlvbl9tYXAgPSB7
fQotICAgICAgICBzaG9ydF9sb25nID0ge30KLSAgICAgICAgZm9yIG9wdGlvbiBpbiBvcHRpb25z
OgotICAgICAgICAgICAgaWYgbGVuKG9wdGlvbikgPT0gMiBvciBvcHRpb25bMl0gPT0gJyAnOgot
ICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBpZiBub3Qgb3B0aW9uLnN0YXJ0
c3dpdGgoJy0tJyk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgQXJndW1lbnRFcnJvcignbG9uZyBv
cHRpb25hbCBhcmd1bWVudCB3aXRob3V0ICItLSI6IFslc10nCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAlIChvcHRpb24pLCBzZWxmKQotICAgICAgICAgICAgeHhvcHRpb24g
PSBvcHRpb25bMjpdCi0gICAgICAgICAgICBpZiB4eG9wdGlvbi5zcGxpdCgpWzBdIG5vdCBpbiBv
cHRpb25fbWFwOgotICAgICAgICAgICAgICAgIHNob3J0ZW5lZCA9IHh4b3B0aW9uLnJlcGxhY2Uo
Jy0nLCAnJykKLSAgICAgICAgICAgICAgICBpZiBzaG9ydGVuZWQgbm90IGluIHNob3J0X2xvbmcg
b3IgXAotICAgICAgICAgICAgICAgICAgIGxlbihzaG9ydF9sb25nW3Nob3J0ZW5lZF0pIDwgbGVu
KHh4b3B0aW9uKToKLSAgICAgICAgICAgICAgICAgICAgc2hvcnRfbG9uZ1tzaG9ydGVuZWRdID0g
eHhvcHRpb24KLSAgICAgICAgIyBub3cgc2hvcnRfbG9uZyBoYXMgYmVlbiBmaWxsZWQgb3V0IHRv
IHRoZSBsb25nZXN0IHdpdGggZGFzaGVzCi0gICAgICAgICMgKiphbmQqKiB3ZSBrZWVwIHRoZSBy
aWdodCBvcHRpb24gb3JkZXJpbmcgZnJvbSBhZGRfYXJndW1lbnQKLSAgICAgICAgZm9yIG9wdGlv
biBpbiBvcHRpb25zOgotICAgICAgICAgICAgaWYgbGVuKG9wdGlvbikgPT0gMiBvciBvcHRpb25b
Ml0gPT0gJyAnOgotICAgICAgICAgICAgICAgIHJldHVybl9saXN0LmFwcGVuZChvcHRpb24pCi0g
ICAgICAgICAgICBpZiBvcHRpb25bMjpdID09IHNob3J0X2xvbmcuZ2V0KG9wdGlvbi5yZXBsYWNl
KCctJywgJycpKToKLSAgICAgICAgICAgICAgICByZXR1cm5fbGlzdC5hcHBlbmQob3B0aW9uLnJl
cGxhY2UoJyAnLCAnPScsIDEpKQotICAgICAgICBhY3Rpb24uX2Zvcm1hdHRlZF9hY3Rpb25faW52
b2NhdGlvbiA9ICcsICcuam9pbihyZXR1cm5fbGlzdCkKLSAgICAgICAgcmV0dXJuIGFjdGlvbi5f
Zm9ybWF0dGVkX2FjdGlvbl9pbnZvY2F0aW9uCi0KLQotZGVmIF9lbnN1cmVfcmVtb3ZlZF9zeXNt
b2R1bGUobW9kbmFtZSk6Ci0gICAgdHJ5OgotICAgICAgICBkZWwgc3lzLm1vZHVsZXNbbW9kbmFt
ZV0KLSAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgIHBhc3MKLQotCi1jbGFzcyBDbWRPcHRp
b25zKG9iamVjdCk6Ci0gICAgIiIiIGhvbGRzIGNtZGxpbmUgb3B0aW9ucyBhcyBhdHRyaWJ1dGVz
LiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbHVlcz0oKSk6Ci0gICAgICAgIHNlbGYu
X19kaWN0X18udXBkYXRlKHZhbHVlcykKLQotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAg
ICAgcmV0dXJuICI8Q21kT3B0aW9ucyAlcj4iICUgKHNlbGYuX19kaWN0X18sKQotCi0gICAgZGVm
IGNvcHkoc2VsZik6Ci0gICAgICAgIHJldHVybiBDbWRPcHRpb25zKHNlbGYuX19kaWN0X18pCi0K
LQotY2xhc3MgTm90c2V0OgotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJu
ICI8Tk9UU0VUPiIKLQotCi1ub3RzZXQgPSBOb3RzZXQoKQotRklMRV9PUl9ESVIgPSAnZmlsZV9v
cl9kaXInCi0KLQotZGVmIF9pdGVyX3Jld3JpdGFibGVfbW9kdWxlcyhwYWNrYWdlX2ZpbGVzKToK
LSAgICBmb3IgZm4gaW4gcGFja2FnZV9maWxlczoKLSAgICAgICAgaXNfc2ltcGxlX21vZHVsZSA9
ICcvJyBub3QgaW4gZm4gYW5kIGZuLmVuZHN3aXRoKCcucHknKQotICAgICAgICBpc19wYWNrYWdl
ID0gZm4uY291bnQoJy8nKSA9PSAxIGFuZCBmbi5lbmRzd2l0aCgnX19pbml0X18ucHknKQotICAg
ICAgICBpZiBpc19zaW1wbGVfbW9kdWxlOgotICAgICAgICAgICAgbW9kdWxlX25hbWUsIF8gPSBv
cy5wYXRoLnNwbGl0ZXh0KGZuKQotICAgICAgICAgICAgeWllbGQgbW9kdWxlX25hbWUKLSAgICAg
ICAgZWxpZiBpc19wYWNrYWdlOgotICAgICAgICAgICAgcGFja2FnZV9uYW1lID0gb3MucGF0aC5k
aXJuYW1lKGZuKQotICAgICAgICAgICAgeWllbGQgcGFja2FnZV9uYW1lCi0KLQotY2xhc3MgQ29u
ZmlnKG9iamVjdCk6Ci0gICAgIiIiIGFjY2VzcyB0byBjb25maWd1cmF0aW9uIHZhbHVlcywgcGx1
Z2lubWFuYWdlciBhbmQgcGx1Z2luIGhvb2tzLiAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgcGx1Z2lubWFuYWdlcik6Ci0gICAgICAgICM6IGFjY2VzcyB0byBjb21tYW5kIGxpbmUgb3B0
aW9uIGFzIGF0dHJpYnV0ZXMuCi0gICAgICAgICM6IChkZXByZWNhdGVkKSwgdXNlIDpweTpmdW5j
OmBnZXRvcHRpb24oKSA8X3B5dGVzdC5jb25maWcuQ29uZmlnLmdldG9wdGlvbj5gIGluc3RlYWQK
LSAgICAgICAgc2VsZi5vcHRpb24gPSBDbWRPcHRpb25zKCkKLSAgICAgICAgX2EgPSBGSUxFX09S
X0RJUgotICAgICAgICBzZWxmLl9wYXJzZXIgPSBQYXJzZXIoCi0gICAgICAgICAgICB1c2FnZT0i
JSUocHJvZylzIFtvcHRpb25zXSBbJXNdIFslc10gWy4uLl0iICUgKF9hLCBfYSksCi0gICAgICAg
ICAgICBwcm9jZXNzb3B0PXNlbGYuX3Byb2Nlc3NvcHQsCi0gICAgICAgICkKLSAgICAgICAgIzog
YSBwbHVnaW5tYW5hZ2VyIGluc3RhbmNlCi0gICAgICAgIHNlbGYucGx1Z2lubWFuYWdlciA9IHBs
dWdpbm1hbmFnZXIKLSAgICAgICAgc2VsZi50cmFjZSA9IHNlbGYucGx1Z2lubWFuYWdlci50cmFj
ZS5yb290LmdldCgiY29uZmlnIikKLSAgICAgICAgc2VsZi5ob29rID0gc2VsZi5wbHVnaW5tYW5h
Z2VyLmhvb2sKLSAgICAgICAgc2VsZi5faW5pY2FjaGUgPSB7fQotICAgICAgICBzZWxmLl9vdmVy
cmlkZV9pbmkgPSAoKQotICAgICAgICBzZWxmLl9vcHQyZGVzdCA9IHt9Ci0gICAgICAgIHNlbGYu
X2NsZWFudXAgPSBbXQotICAgICAgICBzZWxmLl93YXJuID0gc2VsZi5wbHVnaW5tYW5hZ2VyLl93
YXJuCi0gICAgICAgIHNlbGYucGx1Z2lubWFuYWdlci5yZWdpc3RlcihzZWxmLCAicHl0ZXN0Y29u
ZmlnIikKLSAgICAgICAgc2VsZi5fY29uZmlndXJlZCA9IEZhbHNlCi0KLSAgICAgICAgZGVmIGRv
X3NldG5zKGRpYyk6Ci0gICAgICAgICAgICBpbXBvcnQgcHl0ZXN0Ci0gICAgICAgICAgICBzZXRu
cyhweXRlc3QsIGRpYykKLQotICAgICAgICBzZWxmLmhvb2sucHl0ZXN0X25hbWVzcGFjZS5jYWxs
X2hpc3RvcmljKGRvX3NldG5zLCB7fSkKLSAgICAgICAgc2VsZi5ob29rLnB5dGVzdF9hZGRvcHRp
b24uY2FsbF9oaXN0b3JpYyhrd2FyZ3M9ZGljdChwYXJzZXI9c2VsZi5fcGFyc2VyKSkKLQotICAg
IGRlZiBhZGRfY2xlYW51cChzZWxmLCBmdW5jKToKLSAgICAgICAgIiIiIEFkZCBhIGZ1bmN0aW9u
IHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBjb25maWcgb2JqZWN0IGdldHMgb3V0IG9mCi0gICAgICAg
IHVzZSAodXN1YWxseSBjb25pbmNpZGluZyB3aXRoIHB5dGVzdF91bmNvbmZpZ3VyZSkuIiIiCi0g
ICAgICAgIHNlbGYuX2NsZWFudXAuYXBwZW5kKGZ1bmMpCi0KLSAgICBkZWYgX2RvX2NvbmZpZ3Vy
ZShzZWxmKToKLSAgICAgICAgYXNzZXJ0IG5vdCBzZWxmLl9jb25maWd1cmVkCi0gICAgICAgIHNl
bGYuX2NvbmZpZ3VyZWQgPSBUcnVlCi0gICAgICAgIHNlbGYuaG9vay5weXRlc3RfY29uZmlndXJl
LmNhbGxfaGlzdG9yaWMoa3dhcmdzPWRpY3QoY29uZmlnPXNlbGYpKQotCi0gICAgZGVmIF9lbnN1
cmVfdW5jb25maWd1cmUoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuX2NvbmZpZ3VyZWQ6Ci0gICAg
ICAgICAgICBzZWxmLl9jb25maWd1cmVkID0gRmFsc2UKLSAgICAgICAgICAgIHNlbGYuaG9vay5w
eXRlc3RfdW5jb25maWd1cmUoY29uZmlnPXNlbGYpCi0gICAgICAgICAgICBzZWxmLmhvb2sucHl0
ZXN0X2NvbmZpZ3VyZS5fY2FsbF9oaXN0b3J5ID0gW10KLSAgICAgICAgd2hpbGUgc2VsZi5fY2xl
YW51cDoKLSAgICAgICAgICAgIGZpbiA9IHNlbGYuX2NsZWFudXAucG9wKCkKLSAgICAgICAgICAg
IGZpbigpCi0KLSAgICBkZWYgd2FybihzZWxmLCBjb2RlLCBtZXNzYWdlLCBmc2xvY2F0aW9uPU5v
bmUsIG5vZGVpZD1Ob25lKToKLSAgICAgICAgIiIiIGdlbmVyYXRlIGEgd2FybmluZyBmb3IgdGhp
cyB0ZXN0IHNlc3Npb24uICIiIgotICAgICAgICBzZWxmLmhvb2sucHl0ZXN0X2xvZ3dhcm5pbmcu
Y2FsbF9oaXN0b3JpYyhrd2FyZ3M9ZGljdCgKLSAgICAgICAgICAgIGNvZGU9Y29kZSwgbWVzc2Fn
ZT1tZXNzYWdlLAotICAgICAgICAgICAgZnNsb2NhdGlvbj1mc2xvY2F0aW9uLCBub2RlaWQ9bm9k
ZWlkKSkKLQotICAgIGRlZiBnZXRfdGVybWluYWxfd3JpdGVyKHNlbGYpOgotICAgICAgICByZXR1
cm4gc2VsZi5wbHVnaW5tYW5hZ2VyLmdldF9wbHVnaW4oInRlcm1pbmFscmVwb3J0ZXIiKS5fdHcK
LQotICAgIGRlZiBweXRlc3RfY21kbGluZV9wYXJzZShzZWxmLCBwbHVnaW5tYW5hZ2VyLCBhcmdz
KToKLSAgICAgICAgIyBSRUYxIGFzc2VydCBzZWxmID09IHBsdWdpbm1hbmFnZXIuY29uZmlnLCAo
c2VsZiwgcGx1Z2lubWFuYWdlci5jb25maWcpCi0gICAgICAgIHNlbGYucGFyc2UoYXJncykKLSAg
ICAgICAgcmV0dXJuIHNlbGYKLQotICAgIGRlZiBub3RpZnlfZXhjZXB0aW9uKHNlbGYsIGV4Y2lu
Zm8sIG9wdGlvbj1Ob25lKToKLSAgICAgICAgaWYgb3B0aW9uIGFuZCBvcHRpb24uZnVsbHRyYWNl
OgotICAgICAgICAgICAgc3R5bGUgPSAibG9uZyIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IHN0eWxlID0gIm5hdGl2ZSIKLSAgICAgICAgZXhjcmVwciA9IGV4Y2luZm8uZ2V0cmVwcihmdW5j
YXJncz1UcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dsb2NhbHM9
Z2V0YXR0cihvcHRpb24sICdzaG93bG9jYWxzJywgRmFsc2UpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0eWxlPXN0eWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICkKLSAgICAgICAgcmVzID0gc2VsZi5ob29rLnB5dGVzdF9pbnRlcm5hbGVycm9yKGV4
Y3JlcHI9ZXhjcmVwciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGV4Y2luZm89ZXhjaW5mbykKLSAgICAgICAgaWYgbm90IGFueShyZXMpOgotICAgICAgICAg
ICAgZm9yIGxpbmUgaW4gc3RyKGV4Y3JlcHIpLnNwbGl0KCJcbiIpOgotICAgICAgICAgICAgICAg
IHN5cy5zdGRlcnIud3JpdGUoIklOVEVSTkFMRVJST1I+ICVzXG4iICUgbGluZSkKLSAgICAgICAg
ICAgICAgICBzeXMuc3RkZXJyLmZsdXNoKCkKLQotICAgIGRlZiBjd2RfcmVsYXRpdmVfbm9kZWlk
KHNlbGYsIG5vZGVpZCk6Ci0gICAgICAgICMgbm9kZWlkJ3MgYXJlIHJlbGF0aXZlIHRvIHRoZSBy
b290cGF0aCwgY29tcHV0ZSByZWxhdGl2ZSB0byBjd2QKLSAgICAgICAgaWYgc2VsZi5pbnZvY2F0
aW9uX2RpciAhPSBzZWxmLnJvb3RkaXI6Ci0gICAgICAgICAgICBmdWxscGF0aCA9IHNlbGYucm9v
dGRpci5qb2luKG5vZGVpZCkKLSAgICAgICAgICAgIG5vZGVpZCA9IHNlbGYuaW52b2NhdGlvbl9k
aXIuYmVzdHJlbHBhdGgoZnVsbHBhdGgpCi0gICAgICAgIHJldHVybiBub2RlaWQKLQotICAgIEBj
bGFzc21ldGhvZAotICAgIGRlZiBmcm9tZGljdGFyZ3MoY2xzLCBvcHRpb25fZGljdCwgYXJncyk6
Ci0gICAgICAgICIiIiBjb25zdHJ1Y3RvciB1c2VhYmxlIGZvciBzdWJwcm9jZXNzZXMuICIiIgot
ICAgICAgICBjb25maWcgPSBnZXRfY29uZmlnKCkKLSAgICAgICAgY29uZmlnLm9wdGlvbi5fX2Rp
Y3RfXy51cGRhdGUob3B0aW9uX2RpY3QpCi0gICAgICAgIGNvbmZpZy5wYXJzZShhcmdzLCBhZGRv
cHRzPUZhbHNlKQotICAgICAgICBmb3IgeCBpbiBjb25maWcub3B0aW9uLnBsdWdpbnM6Ci0gICAg
ICAgICAgICBjb25maWcucGx1Z2lubWFuYWdlci5jb25zaWRlcl9wbHVnaW5hcmcoeCkKLSAgICAg
ICAgcmV0dXJuIGNvbmZpZwotCi0gICAgZGVmIF9wcm9jZXNzb3B0KHNlbGYsIG9wdCk6Ci0gICAg
ICAgIGZvciBuYW1lIGluIG9wdC5fc2hvcnRfb3B0cyArIG9wdC5fbG9uZ19vcHRzOgotICAgICAg
ICAgICAgc2VsZi5fb3B0MmRlc3RbbmFtZV0gPSBvcHQuZGVzdAotCi0gICAgICAgIGlmIGhhc2F0
dHIob3B0LCAnZGVmYXVsdCcpIGFuZCBvcHQuZGVzdDoKLSAgICAgICAgICAgIGlmIG5vdCBoYXNh
dHRyKHNlbGYub3B0aW9uLCBvcHQuZGVzdCk6Ci0gICAgICAgICAgICAgICAgc2V0YXR0cihzZWxm
Lm9wdGlvbiwgb3B0LmRlc3QsIG9wdC5kZWZhdWx0KQotCi0gICAgQGhvb2tpbXBsKHRyeWxhc3Q9
VHJ1ZSkKLSAgICBkZWYgcHl0ZXN0X2xvYWRfaW5pdGlhbF9jb25mdGVzdHMoc2VsZiwgZWFybHlf
Y29uZmlnKToKLSAgICAgICAgc2VsZi5wbHVnaW5tYW5hZ2VyLl9zZXRfaW5pdGlhbF9jb25mdGVz
dHMoZWFybHlfY29uZmlnLmtub3duX2FyZ3NfbmFtZXNwYWNlKQotCi0gICAgZGVmIF9pbml0aW5p
KHNlbGYsIGFyZ3MpOgotICAgICAgICBucywgdW5rbm93bl9hcmdzID0gc2VsZi5fcGFyc2VyLnBh
cnNlX2tub3duX2FuZF91bmtub3duX2FyZ3MoYXJncywgbmFtZXNwYWNlPXNlbGYub3B0aW9uLmNv
cHkoKSkKLSAgICAgICAgciA9IGRldGVybWluZV9zZXR1cChucy5pbmlmaWxlbmFtZSwgbnMuZmls
ZV9vcl9kaXIgKyB1bmtub3duX2FyZ3MsIHdhcm5mdW5jPXNlbGYud2FybikKLSAgICAgICAgc2Vs
Zi5yb290ZGlyLCBzZWxmLmluaWZpbGUsIHNlbGYuaW5pY2ZnID0gcgotICAgICAgICBzZWxmLl9w
YXJzZXIuZXh0cmFfaW5mb1sncm9vdGRpciddID0gc2VsZi5yb290ZGlyCi0gICAgICAgIHNlbGYu
X3BhcnNlci5leHRyYV9pbmZvWydpbmlmaWxlJ10gPSBzZWxmLmluaWZpbGUKLSAgICAgICAgc2Vs
Zi5pbnZvY2F0aW9uX2RpciA9IHB5LnBhdGgubG9jYWwoKQotICAgICAgICBzZWxmLl9wYXJzZXIu
YWRkaW5pKCdhZGRvcHRzJywgJ2V4dHJhIGNvbW1hbmQgbGluZSBvcHRpb25zJywgJ2FyZ3MnKQot
ICAgICAgICBzZWxmLl9wYXJzZXIuYWRkaW5pKCdtaW52ZXJzaW9uJywgJ21pbmltYWxseSByZXF1
aXJlZCBweXRlc3QgdmVyc2lvbicpCi0gICAgICAgIHNlbGYuX292ZXJyaWRlX2luaSA9IG5zLm92
ZXJyaWRlX2luaSBvciAoKQotCi0gICAgZGVmIF9jb25zaWRlcl9pbXBvcnRob29rKHNlbGYsIGFy
Z3MpOgotICAgICAgICAiIiJJbnN0YWxsIHRoZSBQRVAgMzAyIGltcG9ydCBob29rIGlmIHVzaW5n
IGFzc2VydGlvbiByZXdyaXRpbmcuCi0KLSAgICAgICAgTmVlZHMgdG8gcGFyc2UgdGhlIC0tYXNz
ZXJ0PTxtb2RlPiBvcHRpb24gZnJvbSB0aGUgY29tbWFuZGxpbmUKLSAgICAgICAgYW5kIGZpbmQg
YWxsIHRoZSBpbnN0YWxsZWQgcGx1Z2lucyB0byBtYXJrIHRoZW0gZm9yIHJld3JpdGluZwotICAg
ICAgICBieSB0aGUgaW1wb3J0aG9vay4KLSAgICAgICAgIiIiCi0gICAgICAgIG5zLCB1bmtub3du
X2FyZ3MgPSBzZWxmLl9wYXJzZXIucGFyc2Vfa25vd25fYW5kX3Vua25vd25fYXJncyhhcmdzKQot
ICAgICAgICBtb2RlID0gbnMuYXNzZXJ0bW9kZQotICAgICAgICBpZiBtb2RlID09ICdyZXdyaXRl
JzoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBob29rID0gX3B5dGVzdC5hc3Nl
cnRpb24uaW5zdGFsbF9pbXBvcnRob29rKHNlbGYpCi0gICAgICAgICAgICBleGNlcHQgU3lzdGVt
RXJyb3I6Ci0gICAgICAgICAgICAgICAgbW9kZSA9ICdwbGFpbicKLSAgICAgICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICAgICAgc2VsZi5fbWFya19wbHVnaW5zX2Zvcl9yZXdyaXRlKGhvb2spCi0g
ICAgICAgIHNlbGYuX3dhcm5fYWJvdXRfbWlzc2luZ19hc3NlcnRpb24obW9kZSkKLQotICAgIGRl
ZiBfbWFya19wbHVnaW5zX2Zvcl9yZXdyaXRlKHNlbGYsIGhvb2spOgotICAgICAgICAiIiIKLSAg
ICAgICAgR2l2ZW4gYW4gaW1wb3J0aG9vaywgbWFyayBmb3IgcmV3cml0ZSBhbnkgdG9wLWxldmVs
Ci0gICAgICAgIG1vZHVsZXMgb3IgcGFja2FnZXMgaW4gdGhlIGRpc3RyaWJ1dGlvbiBwYWNrYWdl
IGZvcgotICAgICAgICBhbGwgcHl0ZXN0IHBsdWdpbnMuCi0gICAgICAgICIiIgotICAgICAgICBp
bXBvcnQgcGtnX3Jlc291cmNlcwotICAgICAgICBzZWxmLnBsdWdpbm1hbmFnZXIucmV3cml0ZV9o
b29rID0gaG9vawotCi0gICAgICAgICMgJ1JFQ09SRCcgYXZhaWxhYmxlIGZvciBwbHVnaW5zIGlu
c3RhbGxlZCBub3JtYWxseSAocGlwIGluc3RhbGwpCi0gICAgICAgICMgJ1NPVVJDRVMudHh0JyBh
dmFpbGFibGUgZm9yIHBsdWdpbnMgaW5zdGFsbGVkIGluIGRldiBtb2RlIChwaXAgaW5zdGFsbCAt
ZSkKLSAgICAgICAgIyBmb3IgaW5zdGFsbGVkIHBsdWdpbnMgJ1NPVVJDRVMudHh0JyByZXR1cm5z
IGFuIGVtcHR5IGxpc3QsIGFuZCB2aWNlLXZlcnNhCi0gICAgICAgICMgc28gaXQgc2hvdWxkbid0
IGJlIGFuIGlzc3VlCi0gICAgICAgIG1ldGFkYXRhX2ZpbGVzID0gJ1JFQ09SRCcsICdTT1VSQ0VT
LnR4dCcKLQotICAgICAgICBwYWNrYWdlX2ZpbGVzID0gKAotICAgICAgICAgICAgZW50cnkuc3Bs
aXQoJywnKVswXQotICAgICAgICAgICAgZm9yIGVudHJ5cG9pbnQgaW4gcGtnX3Jlc291cmNlcy5p
dGVyX2VudHJ5X3BvaW50cygncHl0ZXN0MTEnKQotICAgICAgICAgICAgZm9yIG1ldGFkYXRhIGlu
IG1ldGFkYXRhX2ZpbGVzCi0gICAgICAgICAgICBmb3IgZW50cnkgaW4gZW50cnlwb2ludC5kaXN0
Ll9nZXRfbWV0YWRhdGEobWV0YWRhdGEpCi0gICAgICAgICkKLQotICAgICAgICBmb3IgbmFtZSBp
biBfaXRlcl9yZXdyaXRhYmxlX21vZHVsZXMocGFja2FnZV9maWxlcyk6Ci0gICAgICAgICAgICBo
b29rLm1hcmtfcmV3cml0ZShuYW1lKQotCi0gICAgZGVmIF93YXJuX2Fib3V0X21pc3NpbmdfYXNz
ZXJ0aW9uKHNlbGYsIG1vZGUpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBhc3NlcnQgRmFs
c2UKLSAgICAgICAgZXhjZXB0IEFzc2VydGlvbkVycm9yOgotICAgICAgICAgICAgcGFzcwotICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgaWYgbW9kZSA9PSAncGxhaW4nOgotICAgICAgICAgICAg
ICAgIHN5cy5zdGRlcnIud3JpdGUoIldBUk5JTkc6IEFTU0VSVElPTlMgQVJFIE5PVCBFWEVDVVRF
RCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgYW5kIEZBSUxJTkcgVEVTVFMg
V0lMTCBQQVNTLiAgQXJlIHlvdSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIg
dXNpbmcgcHl0aG9uIC1PPyIpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHN5
cy5zdGRlcnIud3JpdGUoIldBUk5JTkc6IGFzc2VydGlvbnMgbm90IGluIHRlc3QgbW9kdWxlcyBv
ciIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgcGx1Z2lucyB3aWxsIGJlIGln
bm9yZWQiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGJlY2F1c2UgYXNzZXJ0
IHN0YXRlbWVudHMgYXJlIG5vdCBleGVjdXRlZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiYnkgdGhlIHVuZGVybHlpbmcgUHl0aG9uIGludGVycHJldGVyICIKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICIoYXJlIHlvdSB1c2luZyBweXRob24gLU8/KVxuIikK
LQotICAgIGRlZiBfcHJlcGFyc2Uoc2VsZiwgYXJncywgYWRkb3B0cz1UcnVlKToKLSAgICAgICAg
aWYgYWRkb3B0czoKLSAgICAgICAgICAgIGFyZ3NbOl0gPSBzaGxleC5zcGxpdChvcy5lbnZpcm9u
LmdldCgnUFlURVNUX0FERE9QVFMnLCAnJykpICsgYXJncwotICAgICAgICBzZWxmLl9pbml0aW5p
KGFyZ3MpCi0gICAgICAgIGlmIGFkZG9wdHM6Ci0gICAgICAgICAgICBhcmdzWzpdID0gc2VsZi5n
ZXRpbmkoImFkZG9wdHMiKSArIGFyZ3MKLSAgICAgICAgc2VsZi5fY2hlY2t2ZXJzaW9uKCkKLSAg
ICAgICAgc2VsZi5fY29uc2lkZXJfaW1wb3J0aG9vayhhcmdzKQotICAgICAgICBzZWxmLnBsdWdp
bm1hbmFnZXIuY29uc2lkZXJfcHJlcGFyc2UoYXJncykKLSAgICAgICAgc2VsZi5wbHVnaW5tYW5h
Z2VyLmxvYWRfc2V0dXB0b29sc19lbnRyeXBvaW50cygncHl0ZXN0MTEnKQotICAgICAgICBzZWxm
LnBsdWdpbm1hbmFnZXIuY29uc2lkZXJfZW52KCkKLSAgICAgICAgc2VsZi5rbm93bl9hcmdzX25h
bWVzcGFjZSA9IG5zID0gc2VsZi5fcGFyc2VyLnBhcnNlX2tub3duX2FyZ3MoYXJncywgbmFtZXNw
YWNlPXNlbGYub3B0aW9uLmNvcHkoKSkKLSAgICAgICAgaWYgc2VsZi5rbm93bl9hcmdzX25hbWVz
cGFjZS5jb25mY3V0ZGlyIGlzIE5vbmUgYW5kIHNlbGYuaW5pZmlsZToKLSAgICAgICAgICAgIGNv
bmZjdXRkaXIgPSBweS5wYXRoLmxvY2FsKHNlbGYuaW5pZmlsZSkuZGlybmFtZQotICAgICAgICAg
ICAgc2VsZi5rbm93bl9hcmdzX25hbWVzcGFjZS5jb25mY3V0ZGlyID0gY29uZmN1dGRpcgotICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLmhvb2sucHl0ZXN0X2xvYWRfaW5pdGlhbF9jb25m
dGVzdHMoZWFybHlfY29uZmlnPXNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYXJncz1hcmdzLCBwYXJzZXI9c2VsZi5fcGFyc2VyKQotICAg
ICAgICBleGNlcHQgQ29uZnRlc3RJbXBvcnRGYWlsdXJlOgotICAgICAgICAgICAgZSA9IHN5cy5l
eGNfaW5mbygpWzFdCi0gICAgICAgICAgICBpZiBucy5oZWxwIG9yIG5zLnZlcnNpb246Ci0gICAg
ICAgICAgICAgICAgIyB3ZSBkb24ndCB3YW50IHRvIHByZXZlbnQgLS1oZWxwLy0tdmVyc2lvbiB0
byB3b3JrCi0gICAgICAgICAgICAgICAgIyBzbyBqdXN0IGxldCBpcyBwYXNzIGFuZCBwcmludCBh
IHdhcm5pbmcgYXQgdGhlIGVuZAotICAgICAgICAgICAgICAgIHNlbGYuX3dhcm4oImNvdWxkIG5v
dCBsb2FkIGluaXRpYWwgY29uZnRlc3RzICglcylcbiIgJSBlLnBhdGgpCi0gICAgICAgICAgICBl
bHNlOgotICAgICAgICAgICAgICAgIHJhaXNlCi0KLSAgICBkZWYgX2NoZWNrdmVyc2lvbihzZWxm
KToKLSAgICAgICAgaW1wb3J0IHB5dGVzdAotICAgICAgICBtaW52ZXIgPSBzZWxmLmluaWNmZy5n
ZXQoJ21pbnZlcnNpb24nLCBOb25lKQotICAgICAgICBpZiBtaW52ZXI6Ci0gICAgICAgICAgICB2
ZXIgPSBtaW52ZXIuc3BsaXQoIi4iKQotICAgICAgICAgICAgbXl2ZXIgPSBweXRlc3QuX192ZXJz
aW9uX18uc3BsaXQoIi4iKQotICAgICAgICAgICAgaWYgbXl2ZXIgPCB2ZXI6Ci0gICAgICAgICAg
ICAgICAgcmFpc2UgcHl0ZXN0LlVzYWdlRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICIlczol
ZDogcmVxdWlyZXMgcHl0ZXN0LSVzLCBhY3R1YWwgcHl0ZXN0LSVzJyIgJSAoCi0gICAgICAgICAg
ICAgICAgICAgICAgICBzZWxmLmluaWNmZy5jb25maWcucGF0aCwgc2VsZi5pbmljZmcubGluZW9m
KCdtaW52ZXJzaW9uJyksCi0gICAgICAgICAgICAgICAgICAgICAgICBtaW52ZXIsIHB5dGVzdC5f
X3ZlcnNpb25fXykpCi0KLSAgICBkZWYgcGFyc2Uoc2VsZiwgYXJncywgYWRkb3B0cz1UcnVlKToK
LSAgICAgICAgIyBwYXJzZSBnaXZlbiBjbWRsaW5lIGFyZ3VtZW50cyBpbnRvIHRoaXMgY29uZmln
IG9iamVjdC4KLSAgICAgICAgYXNzZXJ0IG5vdCBoYXNhdHRyKHNlbGYsICdhcmdzJyksICgKLSAg
ICAgICAgICAgICJjYW4gb25seSBwYXJzZSBjbWRsaW5lIGFyZ3MgYXQgbW9zdCBvbmNlIHBlciBD
b25maWcgb2JqZWN0IikKLSAgICAgICAgc2VsZi5fb3JpZ2FyZ3MgPSBhcmdzCi0gICAgICAgIHNl
bGYuaG9vay5weXRlc3RfYWRkaG9va3MuY2FsbF9oaXN0b3JpYygKLSAgICAgICAgICAgIGt3YXJn
cz1kaWN0KHBsdWdpbm1hbmFnZXI9c2VsZi5wbHVnaW5tYW5hZ2VyKSkKLSAgICAgICAgc2VsZi5f
cHJlcGFyc2UoYXJncywgYWRkb3B0cz1hZGRvcHRzKQotICAgICAgICAjIFhYWCBkZXByZWNhdGVk
IGhvb2s6Ci0gICAgICAgIHNlbGYuaG9vay5weXRlc3RfY21kbGluZV9wcmVwYXJzZShjb25maWc9
c2VsZiwgYXJncz1hcmdzKQotICAgICAgICBzZWxmLl9wYXJzZXIuYWZ0ZXJfcHJlcGFyc2UgPSBU
cnVlCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGFyZ3MgPSBzZWxmLl9wYXJzZXIucGFyc2Vf
c2V0b3B0aW9uKGFyZ3MsIHNlbGYub3B0aW9uLCBuYW1lc3BhY2U9c2VsZi5vcHRpb24pCi0gICAg
ICAgICAgICBpZiBub3QgYXJnczoKLSAgICAgICAgICAgICAgICBjd2QgPSBvcy5nZXRjd2QoKQot
ICAgICAgICAgICAgICAgIGlmIGN3ZCA9PSBzZWxmLnJvb3RkaXI6Ci0gICAgICAgICAgICAgICAg
ICAgIGFyZ3MgPSBzZWxmLmdldGluaSgndGVzdHBhdGhzJykKLSAgICAgICAgICAgICAgICBpZiBu
b3QgYXJnczoKLSAgICAgICAgICAgICAgICAgICAgYXJncyA9IFtjd2RdCi0gICAgICAgICAgICBz
ZWxmLmFyZ3MgPSBhcmdzCi0gICAgICAgIGV4Y2VwdCBQcmludEhlbHA6Ci0gICAgICAgICAgICBw
YXNzCi0KLSAgICBkZWYgYWRkaW5pdmFsdWVfbGluZShzZWxmLCBuYW1lLCBsaW5lKToKLSAgICAg
ICAgIiIiIGFkZCBhIGxpbmUgdG8gYW4gaW5pLWZpbGUgb3B0aW9uLiBUaGUgb3B0aW9uIG11c3Qg
aGF2ZSBiZWVuCi0gICAgICAgIGRlY2xhcmVkIGJ1dCBtaWdodCBub3QgeWV0IGJlIHNldCBpbiB3
aGljaCBjYXNlIHRoZSBsaW5lIGJlY29tZXMgdGhlCi0gICAgICAgIHRoZSBmaXJzdCBsaW5lIGlu
IGl0cyB2YWx1ZS4gIiIiCi0gICAgICAgIHggPSBzZWxmLmdldGluaShuYW1lKQotICAgICAgICBh
c3NlcnQgaXNpbnN0YW5jZSh4LCBsaXN0KQotICAgICAgICB4LmFwcGVuZChsaW5lKSAgIyBtb2Rp
ZmllcyB0aGUgY2FjaGVkIGxpc3QgaW5saW5lCi0KLSAgICBkZWYgZ2V0aW5pKHNlbGYsIG5hbWUp
OgotICAgICAgICAiIiIgcmV0dXJuIGNvbmZpZ3VyYXRpb24gdmFsdWUgZnJvbSBhbiA6cmVmOmBp
bmkgZmlsZSA8aW5pZmlsZXM+YC4gSWYgdGhlCi0gICAgICAgIHNwZWNpZmllZCBuYW1lIGhhc24n
dCBiZWVuIHJlZ2lzdGVyZWQgdGhyb3VnaCBhIHByaW9yCi0gICAgICAgIDpweTpmdW5jOmBwYXJz
ZXIuYWRkaW5pIDxfcHl0ZXN0LmNvbmZpZy5QYXJzZXIuYWRkaW5pPmAKLSAgICAgICAgY2FsbCAo
dXN1YWxseSBmcm9tIGEgcGx1Z2luKSwgYSBWYWx1ZUVycm9yIGlzIHJhaXNlZC4gIiIiCi0gICAg
ICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9pbmljYWNoZVtuYW1lXQotICAgICAg
ICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICBzZWxmLl9pbmljYWNoZVtuYW1lXSA9IHZh
bCA9IHNlbGYuX2dldGluaShuYW1lKQotICAgICAgICAgICAgcmV0dXJuIHZhbAotCi0gICAgZGVm
IF9nZXRpbmkoc2VsZiwgbmFtZSk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGRlc2NyaXB0
aW9uLCB0eXBlLCBkZWZhdWx0ID0gc2VsZi5fcGFyc2VyLl9pbmlkaWN0W25hbWVdCi0gICAgICAg
IGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInVua25vd24g
Y29uZmlndXJhdGlvbiB2YWx1ZTogJXIiICUgKG5hbWUsKSkKLSAgICAgICAgdmFsdWUgPSBzZWxm
Ll9nZXRfb3ZlcnJpZGVfaW5pX3ZhbHVlKG5hbWUpCi0gICAgICAgIGlmIHZhbHVlIGlzIE5vbmU6
Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSBzZWxmLmluaWNmZ1tu
YW1lXQotICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgIGlmIGRl
ZmF1bHQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBkZWZhdWx0Ci0g
ICAgICAgICAgICAgICAgaWYgdHlwZSBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gJycKLSAgICAgICAgICAgICAgICByZXR1cm4gW10KLSAgICAgICAgaWYgdHlwZSA9PSAicGF0
aGxpc3QiOgotICAgICAgICAgICAgZHAgPSBweS5wYXRoLmxvY2FsKHNlbGYuaW5pY2ZnLmNvbmZp
Zy5wYXRoKS5kaXJwYXRoKCkKLSAgICAgICAgICAgIHZhbHVlcyA9IFtdCi0gICAgICAgICAgICBm
b3IgcmVscGF0aCBpbiBzaGxleC5zcGxpdCh2YWx1ZSk6Ci0gICAgICAgICAgICAgICAgdmFsdWVz
LmFwcGVuZChkcC5qb2luKHJlbHBhdGgsIGFicz1UcnVlKSkKLSAgICAgICAgICAgIHJldHVybiB2
YWx1ZXMKLSAgICAgICAgZWxpZiB0eXBlID09ICJhcmdzIjoKLSAgICAgICAgICAgIHJldHVybiBz
aGxleC5zcGxpdCh2YWx1ZSkKLSAgICAgICAgZWxpZiB0eXBlID09ICJsaW5lbGlzdCI6Ci0gICAg
ICAgICAgICByZXR1cm4gW3QgZm9yIHQgaW4gbWFwKGxhbWJkYSB4OiB4LnN0cmlwKCksIHZhbHVl
LnNwbGl0KCJcbiIpKSBpZiB0XQotICAgICAgICBlbGlmIHR5cGUgPT0gImJvb2wiOgotICAgICAg
ICAgICAgcmV0dXJuIGJvb2woX3N0cnRvYm9vbCh2YWx1ZS5zdHJpcCgpKSkKLSAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgIGFzc2VydCB0eXBlIGlzIE5vbmUKLSAgICAgICAgICAgIHJldHVybiB2
YWx1ZQotCi0gICAgZGVmIF9nZXRjb25mdGVzdF9wYXRobGlzdChzZWxmLCBuYW1lLCBwYXRoKToK
LSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbW9kLCByZWxyb290cyA9IHNlbGYucGx1Z2lubWFu
YWdlci5fcmdldF93aXRoX2NvbmZtb2QobmFtZSwgcGF0aCkKLSAgICAgICAgZXhjZXB0IEtleUVy
cm9yOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgbW9kcGF0aCA9IHB5LnBhdGgu
bG9jYWwobW9kLl9fZmlsZV9fKS5kaXJwYXRoKCkKLSAgICAgICAgdmFsdWVzID0gW10KLSAgICAg
ICAgZm9yIHJlbHJvb3QgaW4gcmVscm9vdHM6Ci0gICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5j
ZShyZWxyb290LCBweS5wYXRoLmxvY2FsKToKLSAgICAgICAgICAgICAgICByZWxyb290ID0gcmVs
cm9vdC5yZXBsYWNlKCIvIiwgcHkucGF0aC5sb2NhbC5zZXApCi0gICAgICAgICAgICAgICAgcmVs
cm9vdCA9IG1vZHBhdGguam9pbihyZWxyb290LCBhYnM9VHJ1ZSkKLSAgICAgICAgICAgIHZhbHVl
cy5hcHBlbmQocmVscm9vdCkKLSAgICAgICAgcmV0dXJuIHZhbHVlcwotCi0gICAgZGVmIF9nZXRf
b3ZlcnJpZGVfaW5pX3ZhbHVlKHNlbGYsIG5hbWUpOgotICAgICAgICB2YWx1ZSA9IE5vbmUKLSAg
ICAgICAgIyBvdmVycmlkZV9pbmkgaXMgYSBsaXN0IG9mIGxpc3QsIHRvIHN1cHBvcnQgYm90aCAt
byBmb28xPWJhcjEgZm9vMj1iYXIyIGFuZAotICAgICAgICAjIGFuZCAtbyBmb28xPWJhcjEgLW8g
Zm9vMj1iYXIyIG9wdGlvbnMKLSAgICAgICAgIyBhbHdheXMgdXNlIHRoZSBsYXN0IGl0ZW0gaWYg
bXVsdGlwbGUgdmFsdWUgc2V0IGZvciBzYW1lIGluaS1uYW1lLAotICAgICAgICAjIGUuZy4gLW8g
Zm9vPWJhcjEgLW8gZm9vPWJhcjIgd2lsbCBzZXQgZm9vIHRvIGJhcjIKLSAgICAgICAgZm9yIGlu
aV9jb25maWdfbGlzdCBpbiBzZWxmLl9vdmVycmlkZV9pbmk6Ci0gICAgICAgICAgICBmb3IgaW5p
X2NvbmZpZyBpbiBpbmlfY29uZmlnX2xpc3Q6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgICAgICAgICAoa2V5LCB1c2VyX2luaV92YWx1ZSkgPSBpbmlfY29uZmlnLnNwbGl0KCI9
IiwgMSkKLSAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgICAg
ICAgICAgcmFpc2UgVXNhZ2VFcnJvcigiLW8vLS1vdmVycmlkZS1pbmkgZXhwZWN0cyBvcHRpb249
dmFsdWUgc3R5bGUuIikKLSAgICAgICAgICAgICAgICBpZiBrZXkgPT0gbmFtZToKLSAgICAgICAg
ICAgICAgICAgICAgdmFsdWUgPSB1c2VyX2luaV92YWx1ZQotICAgICAgICByZXR1cm4gdmFsdWUK
LQotICAgIGRlZiBnZXRvcHRpb24oc2VsZiwgbmFtZSwgZGVmYXVsdD1ub3RzZXQsIHNraXA9RmFs
c2UpOgotICAgICAgICAiIiIgcmV0dXJuIGNvbW1hbmQgbGluZSBvcHRpb24gdmFsdWUuCi0KLSAg
ICAgICAgOmFyZyBuYW1lOiBuYW1lIG9mIHRoZSBvcHRpb24uICBZb3UgbWF5IGFsc28gc3BlY2lm
eQotICAgICAgICAgICAgdGhlIGxpdGVyYWwgYGAtLU9QVGBgIG9wdGlvbiBpbnN0ZWFkIG9mIHRo
ZSAiZGVzdCIgb3B0aW9uIG5hbWUuCi0gICAgICAgIDphcmcgZGVmYXVsdDogZGVmYXVsdCB2YWx1
ZSBpZiBubyBvcHRpb24gb2YgdGhhdCBuYW1lIGV4aXN0cy4KLSAgICAgICAgOmFyZyBza2lwOiBp
ZiBUcnVlIHJhaXNlIHB5dGVzdC5za2lwIGlmIG9wdGlvbiBkb2VzIG5vdCBleGlzdHMKLSAgICAg
ICAgICAgIG9yIGhhcyBhIE5vbmUgdmFsdWUuCi0gICAgICAgICIiIgotICAgICAgICBuYW1lID0g
c2VsZi5fb3B0MmRlc3QuZ2V0KG5hbWUsIG5hbWUpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAg
IHZhbCA9IGdldGF0dHIoc2VsZi5vcHRpb24sIG5hbWUpCi0gICAgICAgICAgICBpZiB2YWwgaXMg
Tm9uZSBhbmQgc2tpcDoKLSAgICAgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcihuYW1l
KQotICAgICAgICAgICAgcmV0dXJuIHZhbAotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6
Ci0gICAgICAgICAgICBpZiBkZWZhdWx0IGlzIG5vdCBub3RzZXQ6Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIGRlZmF1bHQKLSAgICAgICAgICAgIGlmIHNraXA6Ci0gICAgICAgICAgICAgICAgaW1w
b3J0IHB5dGVzdAotICAgICAgICAgICAgICAgIHB5dGVzdC5za2lwKCJubyAlciBvcHRpb24gZm91
bmQiICUgKG5hbWUsKSkKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5vIG9wdGlvbiBu
YW1lZCAlciIgJSAobmFtZSwpKQotCi0gICAgZGVmIGdldHZhbHVlKHNlbGYsIG5hbWUsIHBhdGg9
Tm9uZSk6Ci0gICAgICAgICIiIiAoZGVwcmVjYXRlZCwgdXNlIGdldG9wdGlvbigpKSAiIiIKLSAg
ICAgICAgcmV0dXJuIHNlbGYuZ2V0b3B0aW9uKG5hbWUpCi0KLSAgICBkZWYgZ2V0dmFsdWVvcnNr
aXAoc2VsZiwgbmFtZSwgcGF0aD1Ob25lKToKLSAgICAgICAgIiIiIChkZXByZWNhdGVkLCB1c2Ug
Z2V0b3B0aW9uKHNraXA9VHJ1ZSkpICIiIgotICAgICAgICByZXR1cm4gc2VsZi5nZXRvcHRpb24o
bmFtZSwgc2tpcD1UcnVlKQotCi0KLWRlZiBleGlzdHMocGF0aCwgaWdub3JlPUVudmlyb25tZW50
RXJyb3IpOgotICAgIHRyeToKLSAgICAgICAgcmV0dXJuIHBhdGguY2hlY2soKQotICAgIGV4Y2Vw
dCBpZ25vcmU6Ci0gICAgICAgIHJldHVybiBGYWxzZQotCi0KLWRlZiBnZXRjZmcoYXJncywgd2Fy
bmZ1bmM9Tm9uZSk6Ci0gICAgIiIiCi0gICAgU2VhcmNoIHRoZSBsaXN0IG9mIGFyZ3VtZW50cyBm
b3IgYSB2YWxpZCBpbmktZmlsZSBmb3IgcHl0ZXN0LAotICAgIGFuZCByZXR1cm4gYSB0dXBsZSBv
ZiAocm9vdGRpciwgaW5pZmlsZSwgY2ZnLWRpY3QpLgotCi0gICAgbm90ZTogd2FybmZ1bmMgaXMg
YW4gb3B0aW9uYWwgZnVuY3Rpb24gdXNlZCB0byB3YXJuCi0gICAgICAgIGFib3V0IGluaS1maWxl
cyB0aGF0IHVzZSBkZXByZWNhdGVkIGZlYXR1cmVzLgotICAgICAgICBUaGlzIHBhcmFtZXRlciBz
aG91bGQgYmUgcmVtb3ZlZCB3aGVuIHB5dGVzdAotICAgICAgICBhZG9wdHMgc3RhbmRhcmQgZGVw
cmVjYXRpb24gd2FybmluZ3MgKCMxODA0KS4KLSAgICAiIiIKLSAgICBmcm9tIF9weXRlc3QuZGVw
cmVjYXRlZCBpbXBvcnQgU0VUVVBfQ0ZHX1BZVEVTVAotICAgIGluaWJhc2VuYW1lcyA9IFsicHl0
ZXN0LmluaSIsICJ0b3guaW5pIiwgInNldHVwLmNmZyJdCi0gICAgYXJncyA9IFt4IGZvciB4IGlu
IGFyZ3MgaWYgbm90IHN0cih4KS5zdGFydHN3aXRoKCItIildCi0gICAgaWYgbm90IGFyZ3M6Ci0g
ICAgICAgIGFyZ3MgPSBbcHkucGF0aC5sb2NhbCgpXQotICAgIGZvciBhcmcgaW4gYXJnczoKLSAg
ICAgICAgYXJnID0gcHkucGF0aC5sb2NhbChhcmcpCi0gICAgICAgIGZvciBiYXNlIGluIGFyZy5w
YXJ0cyhyZXZlcnNlPVRydWUpOgotICAgICAgICAgICAgZm9yIGluaWJhc2VuYW1lIGluIGluaWJh
c2VuYW1lczoKLSAgICAgICAgICAgICAgICBwID0gYmFzZS5qb2luKGluaWJhc2VuYW1lKQotICAg
ICAgICAgICAgICAgIGlmIGV4aXN0cyhwKToKLSAgICAgICAgICAgICAgICAgICAgaW5pY29uZmln
ID0gcHkuaW5pY29uZmlnLkluaUNvbmZpZyhwKQotICAgICAgICAgICAgICAgICAgICBpZiAncHl0
ZXN0JyBpbiBpbmljb25maWcuc2VjdGlvbnM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBp
bmliYXNlbmFtZSA9PSAnc2V0dXAuY2ZnJyBhbmQgd2FybmZ1bmM6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgd2FybmZ1bmMoJ0MxJywgU0VUVVBfQ0ZHX1BZVEVTVCkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBiYXNlLCBwLCBpbmljb25maWdbJ3B5dGVzdCddCi0gICAgICAg
ICAgICAgICAgICAgIGlmIGluaWJhc2VuYW1lID09ICdzZXR1cC5jZmcnIGFuZCAndG9vbDpweXRl
c3QnIGluIGluaWNvbmZpZy5zZWN0aW9uczoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBiYXNlLCBwLCBpbmljb25maWdbJ3Rvb2w6cHl0ZXN0J10KLSAgICAgICAgICAgICAgICAgICAg
ZWxpZiBpbmliYXNlbmFtZSA9PSAicHl0ZXN0LmluaSI6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAjIGFsbG93ZWQgdG8gYmUgZW1wdHkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBi
YXNlLCBwLCB7fQotICAgIHJldHVybiBOb25lLCBOb25lLCBOb25lCi0KLQotZGVmIGdldF9jb21t
b25fYW5jZXN0b3IocGF0aHMpOgotICAgIGNvbW1vbl9hbmNlc3RvciA9IE5vbmUKLSAgICBmb3Ig
cGF0aCBpbiBwYXRoczoKLSAgICAgICAgaWYgbm90IHBhdGguZXhpc3RzKCk6Ci0gICAgICAgICAg
ICBjb250aW51ZQotICAgICAgICBpZiBjb21tb25fYW5jZXN0b3IgaXMgTm9uZToKLSAgICAgICAg
ICAgIGNvbW1vbl9hbmNlc3RvciA9IHBhdGgKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlm
IHBhdGgucmVsdG8oY29tbW9uX2FuY2VzdG9yKSBvciBwYXRoID09IGNvbW1vbl9hbmNlc3RvcjoK
LSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgZWxpZiBjb21tb25fYW5jZXN0
b3IucmVsdG8ocGF0aCk6Ci0gICAgICAgICAgICAgICAgY29tbW9uX2FuY2VzdG9yID0gcGF0aAot
ICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzaGFyZWQgPSBwYXRoLmNvbW1vbihj
b21tb25fYW5jZXN0b3IpCi0gICAgICAgICAgICAgICAgaWYgc2hhcmVkIGlzIG5vdCBOb25lOgot
ICAgICAgICAgICAgICAgICAgICBjb21tb25fYW5jZXN0b3IgPSBzaGFyZWQKLSAgICBpZiBjb21t
b25fYW5jZXN0b3IgaXMgTm9uZToKLSAgICAgICAgY29tbW9uX2FuY2VzdG9yID0gcHkucGF0aC5s
b2NhbCgpCi0gICAgZWxpZiBjb21tb25fYW5jZXN0b3IuaXNmaWxlKCk6Ci0gICAgICAgIGNvbW1v
bl9hbmNlc3RvciA9IGNvbW1vbl9hbmNlc3Rvci5kaXJwYXRoKCkKLSAgICByZXR1cm4gY29tbW9u
X2FuY2VzdG9yCi0KLQotZGVmIGdldF9kaXJzX2Zyb21fYXJncyhhcmdzKToKLSAgICBkZWYgaXNf
b3B0aW9uKHgpOgotICAgICAgICByZXR1cm4gc3RyKHgpLnN0YXJ0c3dpdGgoJy0nKQotCi0gICAg
ZGVmIGdldF9maWxlX3BhcnRfZnJvbV9ub2RlX2lkKHgpOgotICAgICAgICByZXR1cm4gc3RyKHgp
LnNwbGl0KCc6OicpWzBdCi0KLSAgICBkZWYgZ2V0X2Rpcl9mcm9tX3BhdGgocGF0aCk6Ci0gICAg
ICAgIGlmIHBhdGguaXNkaXIoKToKLSAgICAgICAgICAgIHJldHVybiBwYXRoCi0gICAgICAgIHJl
dHVybiBweS5wYXRoLmxvY2FsKHBhdGguZGlybmFtZSkKLQotICAgICMgVGhlc2UgbG9vayBsaWtl
IHBhdGhzIGJ1dCBtYXkgbm90IGV4aXN0Ci0gICAgcG9zc2libGVfcGF0aHMgPSAoCi0gICAgICAg
IHB5LnBhdGgubG9jYWwoZ2V0X2ZpbGVfcGFydF9mcm9tX25vZGVfaWQoYXJnKSkKLSAgICAgICAg
Zm9yIGFyZyBpbiBhcmdzCi0gICAgICAgIGlmIG5vdCBpc19vcHRpb24oYXJnKQotICAgICkKLQot
ICAgIHJldHVybiBbCi0gICAgICAgIGdldF9kaXJfZnJvbV9wYXRoKHBhdGgpCi0gICAgICAgIGZv
ciBwYXRoIGluIHBvc3NpYmxlX3BhdGhzCi0gICAgICAgIGlmIHBhdGguZXhpc3RzKCkKLSAgICBd
Ci0KLQotZGVmIGRldGVybWluZV9zZXR1cChpbmlmaWxlLCBhcmdzLCB3YXJuZnVuYz1Ob25lKToK
LSAgICBkaXJzID0gZ2V0X2RpcnNfZnJvbV9hcmdzKGFyZ3MpCi0gICAgaWYgaW5pZmlsZToKLSAg
ICAgICAgaW5pY29uZmlnID0gcHkuaW5pY29uZmlnLkluaUNvbmZpZyhpbmlmaWxlKQotICAgICAg
ICB0cnk6Ci0gICAgICAgICAgICBpbmljZmcgPSBpbmljb25maWdbInB5dGVzdCJdCi0gICAgICAg
IGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIGluaWNmZyA9IE5vbmUKLSAgICAgICAgcm9v
dGRpciA9IGdldF9jb21tb25fYW5jZXN0b3IoZGlycykKLSAgICBlbHNlOgotICAgICAgICBhbmNl
c3RvciA9IGdldF9jb21tb25fYW5jZXN0b3IoZGlycykKLSAgICAgICAgcm9vdGRpciwgaW5pZmls
ZSwgaW5pY2ZnID0gZ2V0Y2ZnKFthbmNlc3Rvcl0sIHdhcm5mdW5jPXdhcm5mdW5jKQotICAgICAg
ICBpZiByb290ZGlyIGlzIE5vbmU6Ci0gICAgICAgICAgICBmb3Igcm9vdGRpciBpbiBhbmNlc3Rv
ci5wYXJ0cyhyZXZlcnNlPVRydWUpOgotICAgICAgICAgICAgICAgIGlmIHJvb3RkaXIuam9pbigi
c2V0dXAucHkiKS5leGlzdHMoKToKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcm9vdGRpciwgaW5pZmlsZSwgaW5pY2ZnID0gZ2V0
Y2ZnKGRpcnMsIHdhcm5mdW5jPXdhcm5mdW5jKQotICAgICAgICAgICAgICAgIGlmIHJvb3RkaXIg
aXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgcm9vdGRpciA9IGdldF9jb21tb25fYW5jZXN0
b3IoW3B5LnBhdGgubG9jYWwoKSwgYW5jZXN0b3JdKQotICAgICAgICAgICAgICAgICAgICBpc19m
c19yb290ID0gb3MucGF0aC5zcGxpdGRyaXZlKHN0cihyb290ZGlyKSlbMV0gPT0gJy8nCi0gICAg
ICAgICAgICAgICAgICAgIGlmIGlzX2ZzX3Jvb3Q6Ci0gICAgICAgICAgICAgICAgICAgICAgICBy
b290ZGlyID0gYW5jZXN0b3IKLSAgICByZXR1cm4gcm9vdGRpciwgaW5pZmlsZSwgaW5pY2ZnIG9y
IHt9Ci0KLQotZGVmIHNldG5zKG9iaiwgZGljKToKLSAgICBpbXBvcnQgcHl0ZXN0Ci0gICAgZm9y
IG5hbWUsIHZhbHVlIGluIGRpYy5pdGVtcygpOgotICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVl
LCBkaWN0KToKLSAgICAgICAgICAgIG1vZCA9IGdldGF0dHIob2JqLCBuYW1lLCBOb25lKQotICAg
ICAgICAgICAgaWYgbW9kIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgbW9kbmFtZSA9ICJweXRl
c3QuJXMiICUgbmFtZQotICAgICAgICAgICAgICAgIG1vZCA9IHR5cGVzLk1vZHVsZVR5cGUobW9k
bmFtZSkKLSAgICAgICAgICAgICAgICBzeXMubW9kdWxlc1ttb2RuYW1lXSA9IG1vZAotICAgICAg
ICAgICAgICAgIG1vZC5fX2FsbF9fID0gW10KLSAgICAgICAgICAgICAgICBzZXRhdHRyKG9iaiwg
bmFtZSwgbW9kKQotICAgICAgICAgICAgb2JqLl9fYWxsX18uYXBwZW5kKG5hbWUpCi0gICAgICAg
ICAgICBzZXRucyhtb2QsIHZhbHVlKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2V0YXR0
cihvYmosIG5hbWUsIHZhbHVlKQotICAgICAgICAgICAgb2JqLl9fYWxsX18uYXBwZW5kKG5hbWUp
Ci0gICAgICAgICAgICAjIGlmIG9iaiAhPSBweXRlc3Q6Ci0gICAgICAgICAgICAjICAgIHB5dGVz
dC5fX2FsbF9fLmFwcGVuZChuYW1lKQotICAgICAgICAgICAgc2V0YXR0cihweXRlc3QsIG5hbWUs
IHZhbHVlKQotCi0KLWRlZiBjcmVhdGVfdGVybWluYWxfd3JpdGVyKGNvbmZpZywgKmFyZ3MsICoq
a3dhcmdzKToKLSAgICAiIiJDcmVhdGUgYSBUZXJtaW5hbFdyaXRlciBpbnN0YW5jZSBjb25maWd1
cmVkIGFjY29yZGluZyB0byB0aGUgb3B0aW9ucwotICAgIGluIHRoZSBjb25maWcgb2JqZWN0LiBF
dmVyeSBjb2RlIHdoaWNoIHJlcXVpcmVzIGEgVGVybWluYWxXcml0ZXIgb2JqZWN0Ci0gICAgYW5k
IGhhcyBhY2Nlc3MgdG8gYSBjb25maWcgb2JqZWN0IHNob3VsZCB1c2UgdGhpcyBmdW5jdGlvbi4K
LSAgICAiIiIKLSAgICB0dyA9IHB5LmlvLlRlcm1pbmFsV3JpdGVyKCphcmdzLCAqKmt3YXJncykK
LSAgICBpZiBjb25maWcub3B0aW9uLmNvbG9yID09ICd5ZXMnOgotICAgICAgICB0dy5oYXNtYXJr
dXAgPSBUcnVlCi0gICAgaWYgY29uZmlnLm9wdGlvbi5jb2xvciA9PSAnbm8nOgotICAgICAgICB0
dy5oYXNtYXJrdXAgPSBGYWxzZQotICAgIHJldHVybiB0dwotCi0KLWRlZiBfc3RydG9ib29sKHZh
bCk6Ci0gICAgIiIiQ29udmVydCBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0cnV0aCB0byB0
cnVlICgxKSBvciBmYWxzZSAoMCkuCi0KLSAgICBUcnVlIHZhbHVlcyBhcmUgJ3knLCAneWVzJywg
J3QnLCAndHJ1ZScsICdvbicsIGFuZCAnMSc7IGZhbHNlIHZhbHVlcwotICAgIGFyZSAnbicsICdu
bycsICdmJywgJ2ZhbHNlJywgJ29mZicsIGFuZCAnMCcuICBSYWlzZXMgVmFsdWVFcnJvciBpZgot
ICAgICd2YWwnIGlzIGFueXRoaW5nIGVsc2UuCi0KLSAgICAuLiBub3RlOjogY29waWVkIGZyb20g
ZGlzdHV0aWxzLnV0aWwKLSAgICAiIiIKLSAgICB2YWwgPSB2YWwubG93ZXIoKQotICAgIGlmIHZh
bCBpbiAoJ3knLCAneWVzJywgJ3QnLCAndHJ1ZScsICdvbicsICcxJyk6Ci0gICAgICAgIHJldHVy
biAxCi0gICAgZWxpZiB2YWwgaW4gKCduJywgJ25vJywgJ2YnLCAnZmFsc2UnLCAnb2ZmJywgJzAn
KToKLSAgICAgICAgcmV0dXJuIDAKLSAgICBlbHNlOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9y
KCJpbnZhbGlkIHRydXRoIHZhbHVlICVyIiAlICh2YWwsKSkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L19weXRlc3QvZGVidWdnaW5nLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9kZWJ1Z2dpbmcu
cHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3ZGNhNzgwOTU2ZWMzOTc2MmQwNGNh
YTE3ZjlkMGZiM2JkZWZmYzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9kZWJ1Z2dpbmcucHkKKysrIC9kZXYvbnVsbApA
QCAtMSwxMjMgKzAsMCBAQAotIiIiIGludGVyYWN0aXZlIGRlYnVnZ2luZyB3aXRoIFBEQiwgdGhl
IFB5dGhvbiBEZWJ1Z2dlci4gIiIiCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2lt
cG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCi1pbXBvcnQgcGRiCi1pbXBvcnQgc3lzCi0K
LQotZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyKToKLSAgICBncm91cCA9IHBhcnNlci5nZXRn
cm91cCgiZ2VuZXJhbCIpCi0gICAgZ3JvdXAuX2FkZG9wdGlvbigKLSAgICAgICAgJy0tcGRiJywg
ZGVzdD0idXNlcGRiIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwKLSAgICAgICAgaGVscD0ic3RhcnQg
dGhlIGludGVyYWN0aXZlIFB5dGhvbiBkZWJ1Z2dlciBvbiBlcnJvcnMuIikKLSAgICBncm91cC5f
YWRkb3B0aW9uKAotICAgICAgICAnLS1wZGJjbHMnLCBkZXN0PSJ1c2VwZGJfY2xzIiwgbWV0YXZh
cj0ibW9kdWxlbmFtZTpjbGFzc25hbWUiLAotICAgICAgICBoZWxwPSJzdGFydCBhIGN1c3RvbSBp
bnRlcmFjdGl2ZSBQeXRob24gZGVidWdnZXIgb24gZXJyb3JzLiAiCi0gICAgICAgICAgICAgIkZv
ciBleGFtcGxlOiAtLXBkYmNscz1JUHl0aG9uLnRlcm1pbmFsLmRlYnVnZ2VyOlRlcm1pbmFsUGRi
IikKLQotCi1kZWYgcHl0ZXN0X2NvbmZpZ3VyZShjb25maWcpOgotICAgIGlmIGNvbmZpZy5nZXR2
YWx1ZSgidXNlcGRiX2NscyIpOgotICAgICAgICBtb2RuYW1lLCBjbGFzc25hbWUgPSBjb25maWcu
Z2V0dmFsdWUoInVzZXBkYl9jbHMiKS5zcGxpdCgiOiIpCi0gICAgICAgIF9faW1wb3J0X18obW9k
bmFtZSkKLSAgICAgICAgcGRiX2NscyA9IGdldGF0dHIoc3lzLm1vZHVsZXNbbW9kbmFtZV0sIGNs
YXNzbmFtZSkKLSAgICBlbHNlOgotICAgICAgICBwZGJfY2xzID0gcGRiLlBkYgotCi0gICAgaWYg
Y29uZmlnLmdldHZhbHVlKCJ1c2VwZGIiKToKLSAgICAgICAgY29uZmlnLnBsdWdpbm1hbmFnZXIu
cmVnaXN0ZXIoUGRiSW52b2tlKCksICdwZGJpbnZva2UnKQotCi0gICAgb2xkID0gKHBkYi5zZXRf
dHJhY2UsIHB5dGVzdFBEQi5fcGx1Z2lubWFuYWdlcikKLQotICAgIGRlZiBmaW4oKToKLSAgICAg
ICAgcGRiLnNldF90cmFjZSwgcHl0ZXN0UERCLl9wbHVnaW5tYW5hZ2VyID0gb2xkCi0gICAgICAg
IHB5dGVzdFBEQi5fY29uZmlnID0gTm9uZQotICAgICAgICBweXRlc3RQREIuX3BkYl9jbHMgPSBw
ZGIuUGRiCi0KLSAgICBwZGIuc2V0X3RyYWNlID0gcHl0ZXN0UERCLnNldF90cmFjZQotICAgIHB5
dGVzdFBEQi5fcGx1Z2lubWFuYWdlciA9IGNvbmZpZy5wbHVnaW5tYW5hZ2VyCi0gICAgcHl0ZXN0
UERCLl9jb25maWcgPSBjb25maWcKLSAgICBweXRlc3RQREIuX3BkYl9jbHMgPSBwZGJfY2xzCi0g
ICAgY29uZmlnLl9jbGVhbnVwLmFwcGVuZChmaW4pCi0KLQotY2xhc3MgcHl0ZXN0UERCOgotICAg
ICIiIiBQc2V1ZG8gUERCIHRoYXQgZGVmZXJzIHRvIHRoZSByZWFsIHBkYi4gIiIiCi0gICAgX3Bs
dWdpbm1hbmFnZXIgPSBOb25lCi0gICAgX2NvbmZpZyA9IE5vbmUKLSAgICBfcGRiX2NscyA9IHBk
Yi5QZGIKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBzZXRfdHJhY2UoY2xzKToKLSAgICAg
ICAgIiIiIGludm9rZSBQREIgc2V0X3RyYWNlIGRlYnVnZ2luZywgZHJvcHBpbmcgYW55IElPIGNh
cHR1cmluZy4gIiIiCi0gICAgICAgIGltcG9ydCBfcHl0ZXN0LmNvbmZpZwotICAgICAgICBmcmFt
ZSA9IHN5cy5fZ2V0ZnJhbWUoKS5mX2JhY2sKLSAgICAgICAgaWYgY2xzLl9wbHVnaW5tYW5hZ2Vy
IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgY2FwbWFuID0gY2xzLl9wbHVnaW5tYW5hZ2VyLmdl
dHBsdWdpbigiY2FwdHVyZW1hbmFnZXIiKQotICAgICAgICAgICAgaWYgY2FwbWFuOgotICAgICAg
ICAgICAgICAgIGNhcG1hbi5zdXNwZW5kX2dsb2JhbF9jYXB0dXJlKGluXz1UcnVlKQotICAgICAg
ICAgICAgdHcgPSBfcHl0ZXN0LmNvbmZpZy5jcmVhdGVfdGVybWluYWxfd3JpdGVyKGNscy5fY29u
ZmlnKQotICAgICAgICAgICAgdHcubGluZSgpCi0gICAgICAgICAgICB0dy5zZXAoIj4iLCAiUERC
IHNldF90cmFjZSAoSU8tY2FwdHVyaW5nIHR1cm5lZCBvZmYpIikKLSAgICAgICAgICAgIGNscy5f
cGx1Z2lubWFuYWdlci5ob29rLnB5dGVzdF9lbnRlcl9wZGIoY29uZmlnPWNscy5fY29uZmlnKQot
ICAgICAgICBjbHMuX3BkYl9jbHMoKS5zZXRfdHJhY2UoZnJhbWUpCi0KLQotY2xhc3MgUGRiSW52
b2tlOgotICAgIGRlZiBweXRlc3RfZXhjZXB0aW9uX2ludGVyYWN0KHNlbGYsIG5vZGUsIGNhbGws
IHJlcG9ydCk6Ci0gICAgICAgIGNhcG1hbiA9IG5vZGUuY29uZmlnLnBsdWdpbm1hbmFnZXIuZ2V0
cGx1Z2luKCJjYXB0dXJlbWFuYWdlciIpCi0gICAgICAgIGlmIGNhcG1hbjoKLSAgICAgICAgICAg
IG91dCwgZXJyID0gY2FwbWFuLnN1c3BlbmRfZ2xvYmFsX2NhcHR1cmUoaW5fPVRydWUpCi0gICAg
ICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKG91dCkKLSAgICAgICAgICAgIHN5cy5zdGRvdXQud3Jp
dGUoZXJyKQotICAgICAgICBfZW50ZXJfcGRiKG5vZGUsIGNhbGwuZXhjaW5mbywgcmVwb3J0KQot
Ci0gICAgZGVmIHB5dGVzdF9pbnRlcm5hbGVycm9yKHNlbGYsIGV4Y3JlcHIsIGV4Y2luZm8pOgot
ICAgICAgICBmb3IgbGluZSBpbiBzdHIoZXhjcmVwcikuc3BsaXQoIlxuIik6Ci0gICAgICAgICAg
ICBzeXMuc3RkZXJyLndyaXRlKCJJTlRFUk5BTEVSUk9SPiAlc1xuIiAlIGxpbmUpCi0gICAgICAg
ICAgICBzeXMuc3RkZXJyLmZsdXNoKCkKLSAgICAgICAgdGIgPSBfcG9zdG1vcnRlbV90cmFjZWJh
Y2soZXhjaW5mbykKLSAgICAgICAgcG9zdF9tb3J0ZW0odGIpCi0KLQotZGVmIF9lbnRlcl9wZGIo
bm9kZSwgZXhjaW5mbywgcmVwKToKLSAgICAjIFhYWCB3ZSByZS11c2UgdGhlIFRlcm1pbmFsUmVw
b3J0ZXIncyB0ZXJtaW5hbHdyaXRlcgotICAgICMgYmVjYXVzZSB0aGlzIHNlZW1zIHRvIGF2b2lk
IHNvbWUgZW5jb2RpbmcgcmVsYXRlZCB0cm91YmxlcwotICAgICMgZm9yIG5vdCBjb21wbGV0ZWx5
IGNsZWFyIHJlYXNvbnMuCi0gICAgdHcgPSBub2RlLmNvbmZpZy5wbHVnaW5tYW5hZ2VyLmdldHBs
dWdpbigidGVybWluYWxyZXBvcnRlciIpLl90dwotICAgIHR3LmxpbmUoKQotICAgIHR3LnNlcCgi
PiIsICJ0cmFjZWJhY2siKQotICAgIHJlcC50b3Rlcm1pbmFsKHR3KQotICAgIHR3LnNlcCgiPiIs
ICJlbnRlcmluZyBQREIiKQotICAgIHRiID0gX3Bvc3Rtb3J0ZW1fdHJhY2ViYWNrKGV4Y2luZm8p
Ci0gICAgcG9zdF9tb3J0ZW0odGIpCi0gICAgcmVwLl9wZGJzaG93biA9IFRydWUKLSAgICByZXR1
cm4gcmVwCi0KLQotZGVmIF9wb3N0bW9ydGVtX3RyYWNlYmFjayhleGNpbmZvKToKLSAgICAjIEEg
ZG9jdGVzdC5VbmV4cGVjdGVkRXhjZXB0aW9uIGlzIG5vdCB1c2VmdWwgZm9yIHBvc3RfbW9ydGVt
LgotICAgICMgVXNlIHRoZSB1bmRlcmx5aW5nIGV4Y2VwdGlvbiBpbnN0ZWFkOgotICAgIGZyb20g
ZG9jdGVzdCBpbXBvcnQgVW5leHBlY3RlZEV4Y2VwdGlvbgotICAgIGlmIGlzaW5zdGFuY2UoZXhj
aW5mby52YWx1ZSwgVW5leHBlY3RlZEV4Y2VwdGlvbik6Ci0gICAgICAgIHJldHVybiBleGNpbmZv
LnZhbHVlLmV4Y19pbmZvWzJdCi0gICAgZWxzZToKLSAgICAgICAgcmV0dXJuIGV4Y2luZm8uX2V4
Y2luZm9bMl0KLQotCi1kZWYgX2ZpbmRfbGFzdF9ub25faGlkZGVuX2ZyYW1lKHN0YWNrKToKLSAg
ICBpID0gbWF4KDAsIGxlbihzdGFjaykgLSAxKQotICAgIHdoaWxlIGkgYW5kIHN0YWNrW2ldWzBd
LmZfbG9jYWxzLmdldCgiX190cmFjZWJhY2toaWRlX18iLCBGYWxzZSk6Ci0gICAgICAgIGkgLT0g
MQotICAgIHJldHVybiBpCi0KLQotZGVmIHBvc3RfbW9ydGVtKHQpOgotICAgIGNsYXNzIFBkYihw
eXRlc3RQREIuX3BkYl9jbHMpOgotICAgICAgICBkZWYgZ2V0X3N0YWNrKHNlbGYsIGYsIHQpOgot
ICAgICAgICAgICAgc3RhY2ssIGkgPSBwZGIuUGRiLmdldF9zdGFjayhzZWxmLCBmLCB0KQotICAg
ICAgICAgICAgaWYgZiBpcyBOb25lOgotICAgICAgICAgICAgICAgIGkgPSBfZmluZF9sYXN0X25v
bl9oaWRkZW5fZnJhbWUoc3RhY2spCi0gICAgICAgICAgICByZXR1cm4gc3RhY2ssIGkKLSAgICBw
ID0gUGRiKCkKLSAgICBwLnJlc2V0KCkKLSAgICBwLmludGVyYWN0aW9uKE5vbmUsIHQpCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2RlcHJlY2F0ZWQucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9f
cHl0ZXN0L2RlcHJlY2F0ZWQucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljMGZi
ZWNhN2JjOWU5NzQxNzBhOWVjZWFjMzI3Njc3ZjU2MWYxMjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9kZXByZWNhdGVk
LnB5CisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotIiIiCi1UaGlzIG1vZHVsZSBjb250
YWlucyBkZXByZWNhdGlvbiBtZXNzYWdlcyBhbmQgYml0cyBvZiBjb2RlIHVzZWQgZWxzZXdoZXJl
IGluIHRoZSBjb2RlYmFzZQotdGhhdCBpcyBwbGFubmVkIHRvIGJlIHJlbW92ZWQgaW4gdGhlIG5l
eHQgcHl0ZXN0IHJlbGVhc2UuCi0KLUtlZXBpbmcgaXQgaW4gYSBjZW50cmFsIGxvY2F0aW9uIG1h
a2VzIGl0IGVhc3kgdG8gdHJhY2sgd2hhdCBpcyBkZXByZWNhdGVkIGFuZCBzaG91bGQKLWJlIHJl
bW92ZWQgd2hlbiB0aGUgdGltZSBjb21lcy4KLSIiIgotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBh
YnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotCi0KLWNsYXNzIFJlbW92
ZWRJblB5dGVzdDRXYXJuaW5nKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgIiIid2FybmluZyBj
bGFzcyBmb3IgZmVhdHVyZXMgcmVtb3ZlZCBpbiBweXRlc3QgNC4wIiIiCi0KLQotTUFJTl9TVFJf
QVJHUyA9ICdwYXNzaW5nIGEgc3RyaW5nIHRvIHB5dGVzdC5tYWluKCkgaXMgZGVwcmVjYXRlZCwg
JyBcCi0gICAgJ3Bhc3MgYSBsaXN0IG9mIGFyZ3VtZW50cyBpbnN0ZWFkLicKLQotWUlFTERfVEVT
VFMgPSAneWllbGQgdGVzdHMgYXJlIGRlcHJlY2F0ZWQsIGFuZCBzY2hlZHVsZWQgdG8gYmUgcmVt
b3ZlZCBpbiBweXRlc3QgNC4wJwotCi1GVU5DQVJHX1BSRUZJWCA9ICgKLSAgICAne25hbWV9OiBk
ZWNsYXJpbmcgZml4dHVyZXMgdXNpbmcgInB5dGVzdF9mdW5jYXJnX18iIHByZWZpeCBpcyBkZXBy
ZWNhdGVkICcKLSAgICAnYW5kIHNjaGVkdWxlZCB0byBiZSByZW1vdmVkIGluIHB5dGVzdCA0LjAu
ICAnCi0gICAgJ1BsZWFzZSByZW1vdmUgdGhlIHByZWZpeCBhbmQgdXNlIHRoZSBAcHl0ZXN0LmZp
eHR1cmUgZGVjb3JhdG9yIGluc3RlYWQuJykKLQotU0VUVVBfQ0ZHX1BZVEVTVCA9ICdbcHl0ZXN0
XSBzZWN0aW9uIGluIHNldHVwLmNmZyBmaWxlcyBpcyBkZXByZWNhdGVkLCB1c2UgW3Rvb2w6cHl0
ZXN0XSBpbnN0ZWFkLicKLQotR0VURlVOQ0FSR1ZBTFVFID0gInVzZSBvZiBnZXRmdW5jYXJndmFs
dWUgaXMgZGVwcmVjYXRlZCwgdXNlIGdldGZpeHR1cmV2YWx1ZSIKLQotUkVTVUxUX0xPRyA9ICgK
LSAgICAnLS1yZXN1bHQtbG9nIGlzIGRlcHJlY2F0ZWQgYW5kIHNjaGVkdWxlZCBmb3IgcmVtb3Zh
bCBpbiBweXRlc3QgNC4wLlxuJwotICAgICdTZWUgaHR0cHM6Ly9kb2NzLnB5dGVzdC5vcmcvZW4v
bGF0ZXN0L3VzYWdlLmh0bWwjY3JlYXRpbmctcmVzdWx0bG9nLWZvcm1hdC1maWxlcyBmb3IgbW9y
ZSBpbmZvcm1hdGlvbi4nCi0pCi0KLU1BUktfSU5GT19BVFRSSUJVVEUgPSBSZW1vdmVkSW5QeXRl
c3Q0V2FybmluZygKLSAgICAiTWFya0luZm8gb2JqZWN0cyBhcmUgZGVwcmVjYXRlZCBhcyB0aGV5
IGNvbnRhaW4gdGhlIG1lcmdlZCBtYXJrcyIKLSkKLQotTUFSS19QQVJBTUVURVJTRVRfVU5QQUNL
SU5HID0gUmVtb3ZlZEluUHl0ZXN0NFdhcm5pbmcoCi0gICAgIkFwcGx5aW5nIG1hcmtzIGRpcmVj
dGx5IHRvIHBhcmFtZXRlcnMgaXMgZGVwcmVjYXRlZCwiCi0gICAgIiBwbGVhc2UgdXNlIHB5dGVz
dC5wYXJhbSguLi4sIG1hcmtzPS4uLikgaW5zdGVhZC5cbiIKLSAgICAiRm9yIG1vcmUgZGV0YWls
cywgc2VlOiBodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9sYXRlc3QvcGFyYW1ldHJpemUuaHRt
bCIKLSkKLQotQ09MTEVDVE9SX01BS0VJVEVNID0gUmVtb3ZlZEluUHl0ZXN0NFdhcm5pbmcoCi0g
ICAgInB5Y29sbGVjdG9yIG1ha2VpdGVtIHdhcyByZW1vdmVkICIKLSAgICAiYXMgaXQgaXMgYW4g
YWNjaWRlbnRpYWxseSBsZWFrZWQgaW50ZXJuYWwgYXBpIgotKQotCi1NRVRBRlVOQ19BRERfQ0FM
TCA9ICgKLSAgICAiTWV0YWZ1bmMuYWRkY2FsbCBpcyBkZXByZWNhdGVkIGFuZCBzY2hlZHVsZWQg
dG8gYmUgcmVtb3ZlZCBpbiBweXRlc3QgNC4wLlxuIgotICAgICJQbGVhc2UgdXNlIE1ldGFmdW5j
LnBhcmFtZXRyaXplIGluc3RlYWQuIgotKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVz
dC9kb2N0ZXN0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9kb2N0ZXN0LnB5CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBiYmE5MGU1NTFjNTA1YWVkOTkzYTc5OTE5ZGQwMzk5OTg2MTBh
NmQwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L19weXRlc3QvZG9jdGVzdC5weQorKysgL2Rldi9udWxsCkBAIC0xLDM2OSArMCwwIEBA
Ci0iIiIgZGlzY292ZXIgYW5kIHJ1biBkb2N0ZXN0cyBpbiBtb2R1bGVzIGFuZCB0ZXN0IGZpbGVz
LiIiIgotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBw
cmludF9mdW5jdGlvbgotCi1pbXBvcnQgdHJhY2ViYWNrCi0KLWltcG9ydCBweXRlc3QKLWZyb20g
X3B5dGVzdC5fY29kZS5jb2RlIGltcG9ydCBFeGNlcHRpb25JbmZvLCBSZXByRmlsZUxvY2F0aW9u
LCBUZXJtaW5hbFJlcHIKLWZyb20gX3B5dGVzdC5maXh0dXJlcyBpbXBvcnQgRml4dHVyZVJlcXVl
c3QKLQotCi1ET0NURVNUX1JFUE9SVF9DSE9JQ0VfTk9ORSA9ICdub25lJwotRE9DVEVTVF9SRVBP
UlRfQ0hPSUNFX0NESUZGID0gJ2NkaWZmJwotRE9DVEVTVF9SRVBPUlRfQ0hPSUNFX05ESUZGID0g
J25kaWZmJwotRE9DVEVTVF9SRVBPUlRfQ0hPSUNFX1VESUZGID0gJ3VkaWZmJwotRE9DVEVTVF9S
RVBPUlRfQ0hPSUNFX09OTFlfRklSU1RfRkFJTFVSRSA9ICdvbmx5X2ZpcnN0X2ZhaWx1cmUnCi0K
LURPQ1RFU1RfUkVQT1JUX0NIT0lDRVMgPSAoCi0gICAgRE9DVEVTVF9SRVBPUlRfQ0hPSUNFX05P
TkUsCi0gICAgRE9DVEVTVF9SRVBPUlRfQ0hPSUNFX0NESUZGLAotICAgIERPQ1RFU1RfUkVQT1JU
X0NIT0lDRV9ORElGRiwKLSAgICBET0NURVNUX1JFUE9SVF9DSE9JQ0VfVURJRkYsCi0gICAgRE9D
VEVTVF9SRVBPUlRfQ0hPSUNFX09OTFlfRklSU1RfRkFJTFVSRSwKLSkKLQotCi1kZWYgcHl0ZXN0
X2FkZG9wdGlvbihwYXJzZXIpOgotICAgIHBhcnNlci5hZGRpbmkoJ2RvY3Rlc3Rfb3B0aW9uZmxh
Z3MnLCAnb3B0aW9uIGZsYWdzIGZvciBkb2N0ZXN0cycsCi0gICAgICAgICAgICAgICAgICB0eXBl
PSJhcmdzIiwgZGVmYXVsdD1bIkVMTElQU0lTIl0pCi0gICAgcGFyc2VyLmFkZGluaSgiZG9jdGVz
dF9lbmNvZGluZyIsICdlbmNvZGluZyB1c2VkIGZvciBkb2N0ZXN0IGZpbGVzJywgZGVmYXVsdD0i
dXRmLTgiKQotICAgIGdyb3VwID0gcGFyc2VyLmdldGdyb3VwKCJjb2xsZWN0IikKLSAgICBncm91
cC5hZGRvcHRpb24oIi0tZG9jdGVzdC1tb2R1bGVzIiwKLSAgICAgICAgICAgICAgICAgICAgYWN0
aW9uPSJzdG9yZV90cnVlIiwgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgaGVs
cD0icnVuIGRvY3Rlc3RzIGluIGFsbCAucHkgbW9kdWxlcyIsCi0gICAgICAgICAgICAgICAgICAg
IGRlc3Q9ImRvY3Rlc3Rtb2R1bGVzIikKLSAgICBncm91cC5hZGRvcHRpb24oIi0tZG9jdGVzdC1y
ZXBvcnQiLAotICAgICAgICAgICAgICAgICAgICB0eXBlPXN0ci5sb3dlciwgZGVmYXVsdD0idWRp
ZmYiLAotICAgICAgICAgICAgICAgICAgICBoZWxwPSJjaG9vc2UgYW5vdGhlciBvdXRwdXQgZm9y
bWF0IGZvciBkaWZmcyBvbiBkb2N0ZXN0IGZhaWx1cmUiLAotICAgICAgICAgICAgICAgICAgICBj
aG9pY2VzPURPQ1RFU1RfUkVQT1JUX0NIT0lDRVMsCi0gICAgICAgICAgICAgICAgICAgIGRlc3Q9
ImRvY3Rlc3RyZXBvcnQiKQotICAgIGdyb3VwLmFkZG9wdGlvbigiLS1kb2N0ZXN0LWdsb2IiLAot
ICAgICAgICAgICAgICAgICAgICBhY3Rpb249ImFwcGVuZCIsIGRlZmF1bHQ9W10sIG1ldGF2YXI9
InBhdCIsCi0gICAgICAgICAgICAgICAgICAgIGhlbHA9ImRvY3Rlc3RzIGZpbGUgbWF0Y2hpbmcg
cGF0dGVybiwgZGVmYXVsdDogdGVzdCoudHh0IiwKLSAgICAgICAgICAgICAgICAgICAgZGVzdD0i
ZG9jdGVzdGdsb2IiKQotICAgIGdyb3VwLmFkZG9wdGlvbigiLS1kb2N0ZXN0LWlnbm9yZS1pbXBv
cnQtZXJyb3JzIiwKLSAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVm
YXVsdD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgaGVscD0iaWdub3JlIGRvY3Rlc3QgSW1w
b3J0RXJyb3JzIiwKLSAgICAgICAgICAgICAgICAgICAgZGVzdD0iZG9jdGVzdF9pZ25vcmVfaW1w
b3J0X2Vycm9ycyIpCi0KLQotZGVmIHB5dGVzdF9jb2xsZWN0X2ZpbGUocGF0aCwgcGFyZW50KToK
LSAgICBjb25maWcgPSBwYXJlbnQuY29uZmlnCi0gICAgaWYgcGF0aC5leHQgPT0gIi5weSI6Ci0g
ICAgICAgIGlmIGNvbmZpZy5vcHRpb24uZG9jdGVzdG1vZHVsZXMgYW5kIG5vdCBfaXNfc2V0dXBf
cHkoY29uZmlnLCBwYXRoLCBwYXJlbnQpOgotICAgICAgICAgICAgcmV0dXJuIERvY3Rlc3RNb2R1
bGUocGF0aCwgcGFyZW50KQotICAgIGVsaWYgX2lzX2RvY3Rlc3QoY29uZmlnLCBwYXRoLCBwYXJl
bnQpOgotICAgICAgICByZXR1cm4gRG9jdGVzdFRleHRmaWxlKHBhdGgsIHBhcmVudCkKLQotCi1k
ZWYgX2lzX3NldHVwX3B5KGNvbmZpZywgcGF0aCwgcGFyZW50KToKLSAgICBpZiBwYXRoLmJhc2Vu
YW1lICE9ICJzZXR1cC5weSI6Ci0gICAgICAgIHJldHVybiBGYWxzZQotICAgIGNvbnRlbnRzID0g
cGF0aC5yZWFkKCkKLSAgICByZXR1cm4gJ3NldHVwdG9vbHMnIGluIGNvbnRlbnRzIG9yICdkaXN0
dXRpbHMnIGluIGNvbnRlbnRzCi0KLQotZGVmIF9pc19kb2N0ZXN0KGNvbmZpZywgcGF0aCwgcGFy
ZW50KToKLSAgICBpZiBwYXRoLmV4dCBpbiAoJy50eHQnLCAnLnJzdCcpIGFuZCBwYXJlbnQuc2Vz
c2lvbi5pc2luaXRwYXRoKHBhdGgpOgotICAgICAgICByZXR1cm4gVHJ1ZQotICAgIGdsb2JzID0g
Y29uZmlnLmdldG9wdGlvbigiZG9jdGVzdGdsb2IiKSBvciBbJ3Rlc3QqLnR4dCddCi0gICAgZm9y
IGdsb2IgaW4gZ2xvYnM6Ci0gICAgICAgIGlmIHBhdGguY2hlY2soZm5tYXRjaD1nbG9iKToKLSAg
ICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgcmV0dXJuIEZhbHNlCi0KLQotY2xhc3MgUmVwckZh
aWxEb2N0ZXN0KFRlcm1pbmFsUmVwcik6Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVwcmxv
Y2F0aW9uLCBsaW5lcyk6Ci0gICAgICAgIHNlbGYucmVwcmxvY2F0aW9uID0gcmVwcmxvY2F0aW9u
Ci0gICAgICAgIHNlbGYubGluZXMgPSBsaW5lcwotCi0gICAgZGVmIHRvdGVybWluYWwoc2VsZiwg
dHcpOgotICAgICAgICBmb3IgbGluZSBpbiBzZWxmLmxpbmVzOgotICAgICAgICAgICAgdHcubGlu
ZShsaW5lKQotICAgICAgICBzZWxmLnJlcHJsb2NhdGlvbi50b3Rlcm1pbmFsKHR3KQotCi0KLWNs
YXNzIERvY3Rlc3RJdGVtKHB5dGVzdC5JdGVtKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbmFt
ZSwgcGFyZW50LCBydW5uZXI9Tm9uZSwgZHRlc3Q9Tm9uZSk6Ci0gICAgICAgIHN1cGVyKERvY3Rl
c3RJdGVtLCBzZWxmKS5fX2luaXRfXyhuYW1lLCBwYXJlbnQpCi0gICAgICAgIHNlbGYucnVubmVy
ID0gcnVubmVyCi0gICAgICAgIHNlbGYuZHRlc3QgPSBkdGVzdAotICAgICAgICBzZWxmLm9iaiA9
IE5vbmUKLSAgICAgICAgc2VsZi5maXh0dXJlX3JlcXVlc3QgPSBOb25lCi0KLSAgICBkZWYgc2V0
dXAoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuZHRlc3QgaXMgbm90IE5vbmU6Ci0gICAgICAgICAg
ICBzZWxmLmZpeHR1cmVfcmVxdWVzdCA9IF9zZXR1cF9maXh0dXJlcyhzZWxmKQotICAgICAgICAg
ICAgZ2xvYnMgPSBkaWN0KGdldGZpeHR1cmU9c2VsZi5maXh0dXJlX3JlcXVlc3QuZ2V0Zml4dHVy
ZXZhbHVlKQotICAgICAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIHNlbGYuZml4dHVyZV9yZXF1
ZXN0LmdldGZpeHR1cmV2YWx1ZSgnZG9jdGVzdF9uYW1lc3BhY2UnKS5pdGVtcygpOgotICAgICAg
ICAgICAgICAgIGdsb2JzW25hbWVdID0gdmFsdWUKLSAgICAgICAgICAgIHNlbGYuZHRlc3QuZ2xv
YnMudXBkYXRlKGdsb2JzKQotCi0gICAgZGVmIHJ1bnRlc3Qoc2VsZik6Ci0gICAgICAgIF9jaGVj
a19hbGxfc2tpcHBlZChzZWxmLmR0ZXN0KQotICAgICAgICBzZWxmLnJ1bm5lci5ydW4oc2VsZi5k
dGVzdCkKLQotICAgIGRlZiByZXByX2ZhaWx1cmUoc2VsZiwgZXhjaW5mbyk6Ci0gICAgICAgIGlt
cG9ydCBkb2N0ZXN0Ci0gICAgICAgIGlmIGV4Y2luZm8uZXJyaXNpbnN0YW5jZSgoZG9jdGVzdC5E
b2NUZXN0RmFpbHVyZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N0ZXN0
LlVuZXhwZWN0ZWRFeGNlcHRpb24pKToKLSAgICAgICAgICAgIGRvY3Rlc3RmYWlsdXJlID0gZXhj
aW5mby52YWx1ZQotICAgICAgICAgICAgZXhhbXBsZSA9IGRvY3Rlc3RmYWlsdXJlLmV4YW1wbGUK
LSAgICAgICAgICAgIHRlc3QgPSBkb2N0ZXN0ZmFpbHVyZS50ZXN0Ci0gICAgICAgICAgICBmaWxl
bmFtZSA9IHRlc3QuZmlsZW5hbWUKLSAgICAgICAgICAgIGlmIHRlc3QubGluZW5vIGlzIE5vbmU6
Ci0gICAgICAgICAgICAgICAgbGluZW5vID0gTm9uZQotICAgICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgICAgICBsaW5lbm8gPSB0ZXN0LmxpbmVubyArIGV4YW1wbGUubGluZW5vICsgMQotICAg
ICAgICAgICAgbWVzc2FnZSA9IGV4Y2luZm8udHlwZS5fX25hbWVfXwotICAgICAgICAgICAgcmVw
cmxvY2F0aW9uID0gUmVwckZpbGVMb2NhdGlvbihmaWxlbmFtZSwgbGluZW5vLCBtZXNzYWdlKQot
ICAgICAgICAgICAgY2hlY2tlciA9IF9nZXRfY2hlY2tlcigpCi0gICAgICAgICAgICByZXBvcnRf
Y2hvaWNlID0gX2dldF9yZXBvcnRfY2hvaWNlKHNlbGYuY29uZmlnLmdldG9wdGlvbigiZG9jdGVz
dHJlcG9ydCIpKQotICAgICAgICAgICAgaWYgbGluZW5vIGlzIG5vdCBOb25lOgotICAgICAgICAg
ICAgICAgIGxpbmVzID0gZG9jdGVzdGZhaWx1cmUudGVzdC5kb2NzdHJpbmcuc3BsaXRsaW5lcyhG
YWxzZSkKLSAgICAgICAgICAgICAgICAjIGFkZCBsaW5lIG51bWJlcnMgdG8gdGhlIGxlZnQgb2Yg
dGhlIGVycm9yIG1lc3NhZ2UKLSAgICAgICAgICAgICAgICBsaW5lcyA9IFsiJTAzZCAlcyIgJSAo
aSArIHRlc3QubGluZW5vICsgMSwgeCkKLSAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGks
IHgpIGluIGVudW1lcmF0ZShsaW5lcyldCi0gICAgICAgICAgICAgICAgIyB0cmltIGRvY3N0cmlu
ZyBlcnJvciBsaW5lcyB0byAxMAotICAgICAgICAgICAgICAgIGxpbmVzID0gbGluZXNbbWF4KGV4
YW1wbGUubGluZW5vIC0gOSwgMCk6ZXhhbXBsZS5saW5lbm8gKyAxXQotICAgICAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgICAgICBsaW5lcyA9IFsnRVhBTVBMRSBMT0NBVElPTiBVTktOT1dOLCBu
b3Qgc2hvd2luZyBhbGwgdGVzdHMgb2YgdGhhdCBleGFtcGxlJ10KLSAgICAgICAgICAgICAgICBp
bmRlbnQgPSAnPj4+JwotICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGV4YW1wbGUuc291cmNl
LnNwbGl0bGluZXMoKToKLSAgICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCc/Pz8gJXMg
JXMnICUgKGluZGVudCwgbGluZSkpCi0gICAgICAgICAgICAgICAgICAgIGluZGVudCA9ICcuLi4n
Ci0gICAgICAgICAgICBpZiBleGNpbmZvLmVycmlzaW5zdGFuY2UoZG9jdGVzdC5Eb2NUZXN0RmFp
bHVyZSk6Ci0gICAgICAgICAgICAgICAgbGluZXMgKz0gY2hlY2tlci5vdXRwdXRfZGlmZmVyZW5j
ZShleGFtcGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZG9jdGVzdGZhaWx1cmUuZ290LCByZXBvcnRfY2hvaWNlKS5zcGxpdCgiXG4iKQotICAg
ICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBpbm5lcl9leGNpbmZvID0gRXhjZXB0aW9u
SW5mbyhleGNpbmZvLnZhbHVlLmV4Y19pbmZvKQotICAgICAgICAgICAgICAgIGxpbmVzICs9IFsi
VU5FWFBFQ1RFRCBFWENFUFRJT046ICVzIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHJl
cHIoaW5uZXJfZXhjaW5mby52YWx1ZSldCi0gICAgICAgICAgICAgICAgbGluZXMgKz0gdHJhY2Vi
YWNrLmZvcm1hdF9leGNlcHRpb24oKmV4Y2luZm8udmFsdWUuZXhjX2luZm8pCi0gICAgICAgICAg
ICByZXR1cm4gUmVwckZhaWxEb2N0ZXN0KHJlcHJsb2NhdGlvbiwgbGluZXMpCi0gICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICByZXR1cm4gc3VwZXIoRG9jdGVzdEl0ZW0sIHNlbGYpLnJlcHJfZmFp
bHVyZShleGNpbmZvKQotCi0gICAgZGVmIHJlcG9ydGluZm8oc2VsZik6Ci0gICAgICAgIHJldHVy
biBzZWxmLmZzcGF0aCwgc2VsZi5kdGVzdC5saW5lbm8sICJbZG9jdGVzdF0gJXMiICUgc2VsZi5u
YW1lCi0KLQotZGVmIF9nZXRfZmxhZ19sb29rdXAoKToKLSAgICBpbXBvcnQgZG9jdGVzdAotICAg
IHJldHVybiBkaWN0KERPTlRfQUNDRVBUX1RSVUVfRk9SXzE9ZG9jdGVzdC5ET05UX0FDQ0VQVF9U
UlVFX0ZPUl8xLAotICAgICAgICAgICAgICAgIERPTlRfQUNDRVBUX0JMQU5LTElORT1kb2N0ZXN0
LkRPTlRfQUNDRVBUX0JMQU5LTElORSwKLSAgICAgICAgICAgICAgICBOT1JNQUxJWkVfV0hJVEVT
UEFDRT1kb2N0ZXN0Lk5PUk1BTElaRV9XSElURVNQQUNFLAotICAgICAgICAgICAgICAgIEVMTElQ
U0lTPWRvY3Rlc3QuRUxMSVBTSVMsCi0gICAgICAgICAgICAgICAgSUdOT1JFX0VYQ0VQVElPTl9E
RVRBSUw9ZG9jdGVzdC5JR05PUkVfRVhDRVBUSU9OX0RFVEFJTCwKLSAgICAgICAgICAgICAgICBD
T01QQVJJU09OX0ZMQUdTPWRvY3Rlc3QuQ09NUEFSSVNPTl9GTEFHUywKLSAgICAgICAgICAgICAg
ICBBTExPV19VTklDT0RFPV9nZXRfYWxsb3dfdW5pY29kZV9mbGFnKCksCi0gICAgICAgICAgICAg
ICAgQUxMT1dfQllURVM9X2dldF9hbGxvd19ieXRlc19mbGFnKCksCi0gICAgICAgICAgICAgICAg
KQotCi0KLWRlZiBnZXRfb3B0aW9uZmxhZ3MocGFyZW50KToKLSAgICBvcHRpb25mbGFnc19zdHIg
PSBwYXJlbnQuY29uZmlnLmdldGluaSgiZG9jdGVzdF9vcHRpb25mbGFncyIpCi0gICAgZmxhZ19s
b29rdXBfdGFibGUgPSBfZ2V0X2ZsYWdfbG9va3VwKCkKLSAgICBmbGFnX2FjYyA9IDAKLSAgICBm
b3IgZmxhZyBpbiBvcHRpb25mbGFnc19zdHI6Ci0gICAgICAgIGZsYWdfYWNjIHw9IGZsYWdfbG9v
a3VwX3RhYmxlW2ZsYWddCi0gICAgcmV0dXJuIGZsYWdfYWNjCi0KLQotY2xhc3MgRG9jdGVzdFRl
eHRmaWxlKHB5dGVzdC5Nb2R1bGUpOgotICAgIG9iaiA9IE5vbmUKLQotICAgIGRlZiBjb2xsZWN0
KHNlbGYpOgotICAgICAgICBpbXBvcnQgZG9jdGVzdAotCi0gICAgICAgICMgaW5zcGlyZWQgYnkg
ZG9jdGVzdC50ZXN0ZmlsZTsgaWRlYWxseSB3ZSB3b3VsZCB1c2UgaXQgZGlyZWN0bHksCi0gICAg
ICAgICMgYnV0IGl0IGRvZXNuJ3Qgc3VwcG9ydCBwYXNzaW5nIGEgY3VzdG9tIGNoZWNrZXIKLSAg
ICAgICAgZW5jb2RpbmcgPSBzZWxmLmNvbmZpZy5nZXRpbmkoImRvY3Rlc3RfZW5jb2RpbmciKQot
ICAgICAgICB0ZXh0ID0gc2VsZi5mc3BhdGgucmVhZF90ZXh0KGVuY29kaW5nKQotICAgICAgICBm
aWxlbmFtZSA9IHN0cihzZWxmLmZzcGF0aCkKLSAgICAgICAgbmFtZSA9IHNlbGYuZnNwYXRoLmJh
c2VuYW1lCi0gICAgICAgIGdsb2JzID0geydfX25hbWVfXyc6ICdfX21haW5fXyd9Ci0KLSAgICAg
ICAgb3B0aW9uZmxhZ3MgPSBnZXRfb3B0aW9uZmxhZ3Moc2VsZikKLSAgICAgICAgcnVubmVyID0g
ZG9jdGVzdC5EZWJ1Z1J1bm5lcih2ZXJib3NlPTAsIG9wdGlvbmZsYWdzPW9wdGlvbmZsYWdzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZXI9X2dldF9jaGVja2Vy
KCkpCi0gICAgICAgIF9maXhfc3Bvb2ZfcHl0aG9uMihydW5uZXIsIGVuY29kaW5nKQotCi0gICAg
ICAgIHBhcnNlciA9IGRvY3Rlc3QuRG9jVGVzdFBhcnNlcigpCi0gICAgICAgIHRlc3QgPSBwYXJz
ZXIuZ2V0X2RvY3Rlc3QodGV4dCwgZ2xvYnMsIG5hbWUsIGZpbGVuYW1lLCAwKQotICAgICAgICBp
ZiB0ZXN0LmV4YW1wbGVzOgotICAgICAgICAgICAgeWllbGQgRG9jdGVzdEl0ZW0odGVzdC5uYW1l
LCBzZWxmLCBydW5uZXIsIHRlc3QpCi0KLQotZGVmIF9jaGVja19hbGxfc2tpcHBlZCh0ZXN0KToK
LSAgICAiIiJyYWlzZXMgcHl0ZXN0LnNraXAoKSBpZiBhbGwgZXhhbXBsZXMgaW4gdGhlIGdpdmVu
IERvY1Rlc3QgaGF2ZSB0aGUgU0tJUAotICAgIG9wdGlvbiBzZXQuCi0gICAgIiIiCi0gICAgaW1w
b3J0IGRvY3Rlc3QKLSAgICBhbGxfc2tpcHBlZCA9IGFsbCh4Lm9wdGlvbnMuZ2V0KGRvY3Rlc3Qu
U0tJUCwgRmFsc2UpIGZvciB4IGluIHRlc3QuZXhhbXBsZXMpCi0gICAgaWYgYWxsX3NraXBwZWQ6
Ci0gICAgICAgIHB5dGVzdC5za2lwKCdhbGwgdGVzdHMgc2tpcHBlZCBieSArU0tJUCBvcHRpb24n
KQotCi0KLWNsYXNzIERvY3Rlc3RNb2R1bGUocHl0ZXN0Lk1vZHVsZSk6Ci0gICAgZGVmIGNvbGxl
Y3Qoc2VsZik6Ci0gICAgICAgIGltcG9ydCBkb2N0ZXN0Ci0gICAgICAgIGlmIHNlbGYuZnNwYXRo
LmJhc2VuYW1lID09ICJjb25mdGVzdC5weSI6Ci0gICAgICAgICAgICBtb2R1bGUgPSBzZWxmLmNv
bmZpZy5wbHVnaW5tYW5hZ2VyLl9pbXBvcnRjb25mdGVzdChzZWxmLmZzcGF0aCkKLSAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLmZz
cGF0aC5weWltcG9ydCgpCi0gICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAg
ICAgICAgICAgaWYgc2VsZi5jb25maWcuZ2V0dmFsdWUoJ2RvY3Rlc3RfaWdub3JlX2ltcG9ydF9l
cnJvcnMnKToKLSAgICAgICAgICAgICAgICAgICAgcHl0ZXN0LnNraXAoJ3VuYWJsZSB0byBpbXBv
cnQgbW9kdWxlICVyJyAlIHNlbGYuZnNwYXRoKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICMgdXNlcyBpbnRlcm5hbCBkb2N0ZXN0IG1v
ZHVsZSBwYXJzaW5nIG1lY2hhbmlzbQotICAgICAgICBmaW5kZXIgPSBkb2N0ZXN0LkRvY1Rlc3RG
aW5kZXIoKQotICAgICAgICBvcHRpb25mbGFncyA9IGdldF9vcHRpb25mbGFncyhzZWxmKQotICAg
ICAgICBydW5uZXIgPSBkb2N0ZXN0LkRlYnVnUnVubmVyKHZlcmJvc2U9MCwgb3B0aW9uZmxhZ3M9
b3B0aW9uZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tl
cj1fZ2V0X2NoZWNrZXIoKSkKLQotICAgICAgICBmb3IgdGVzdCBpbiBmaW5kZXIuZmluZChtb2R1
bGUsIG1vZHVsZS5fX25hbWVfXyk6Ci0gICAgICAgICAgICBpZiB0ZXN0LmV4YW1wbGVzOiAgIyBz
a2lwIGVtcHR5IGRvY3Rlc3RzCi0gICAgICAgICAgICAgICAgeWllbGQgRG9jdGVzdEl0ZW0odGVz
dC5uYW1lLCBzZWxmLCBydW5uZXIsIHRlc3QpCi0KLQotZGVmIF9zZXR1cF9maXh0dXJlcyhkb2N0
ZXN0X2l0ZW0pOgotICAgICIiIgotICAgIFVzZWQgYnkgRG9jdGVzdFRleHRmaWxlIGFuZCBEb2N0
ZXN0SXRlbSB0byBzZXR1cCBmaXh0dXJlIGluZm9ybWF0aW9uLgotICAgICIiIgotICAgIGRlZiBm
dW5jKCk6Ci0gICAgICAgIHBhc3MKLQotICAgIGRvY3Rlc3RfaXRlbS5mdW5jYXJncyA9IHt9Ci0g
ICAgZm0gPSBkb2N0ZXN0X2l0ZW0uc2Vzc2lvbi5fZml4dHVyZW1hbmFnZXIKLSAgICBkb2N0ZXN0
X2l0ZW0uX2ZpeHR1cmVpbmZvID0gZm0uZ2V0Zml4dHVyZWluZm8obm9kZT1kb2N0ZXN0X2l0ZW0s
IGZ1bmM9ZnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2xzPU5vbmUsIGZ1bmNhcmdzPUZhbHNlKQotICAgIGZpeHR1cmVfcmVxdWVzdCA9IEZp
eHR1cmVSZXF1ZXN0KGRvY3Rlc3RfaXRlbSkKLSAgICBmaXh0dXJlX3JlcXVlc3QuX2ZpbGxmaXh0
dXJlcygpCi0gICAgcmV0dXJuIGZpeHR1cmVfcmVxdWVzdAotCi0KLWRlZiBfZ2V0X2NoZWNrZXIo
KToKLSAgICAiIiIKLSAgICBSZXR1cm5zIGEgZG9jdGVzdC5PdXRwdXRDaGVja2VyIHN1YmNsYXNz
IHRoYXQgdGFrZXMgaW4gYWNjb3VudCB0aGUKLSAgICBBTExPV19VTklDT0RFIG9wdGlvbiB0byBp
Z25vcmUgdScnIHByZWZpeGVzIGluIHN0cmluZ3MgYW5kIEFMTE9XX0JZVEVTCi0gICAgdG8gc3Ry
aXAgYicnIHByZWZpeGVzLgotICAgIFVzZWZ1bCB3aGVuIHRoZSBzYW1lIGRvY3Rlc3Qgc2hvdWxk
IHJ1biBpbiBQeXRob24gMiBhbmQgUHl0aG9uIDMuCi0KLSAgICBBbiBpbm5lciBjbGFzcyBpcyB1
c2VkIHRvIGF2b2lkIGltcG9ydGluZyAiZG9jdGVzdCIgYXQgdGhlIG1vZHVsZQotICAgIGxldmVs
LgotICAgICIiIgotICAgIGlmIGhhc2F0dHIoX2dldF9jaGVja2VyLCAnTGl0ZXJhbHNPdXRwdXRD
aGVja2VyJyk6Ci0gICAgICAgIHJldHVybiBfZ2V0X2NoZWNrZXIuTGl0ZXJhbHNPdXRwdXRDaGVj
a2VyKCkKLQotICAgIGltcG9ydCBkb2N0ZXN0Ci0gICAgaW1wb3J0IHJlCi0KLSAgICBjbGFzcyBM
aXRlcmFsc091dHB1dENoZWNrZXIoZG9jdGVzdC5PdXRwdXRDaGVja2VyKToKLSAgICAgICAgIiIi
Ci0gICAgICAgIENvcGllZCBmcm9tIGRvY3Rlc3Rfbm9zZV9wbHVnaW4ucHkgZnJvbSB0aGUgbmx0
ayBwcm9qZWN0OgotICAgICAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL25sdGsvbmx0awotCi0g
ICAgICAgIEZ1cnRoZXIgZXh0ZW5kZWQgdG8gYWxzbyBzdXBwb3J0IGJ5dGUgbGl0ZXJhbHMuCi0g
ICAgICAgICIiIgotCi0gICAgICAgIF91bmljb2RlX2xpdGVyYWxfcmUgPSByZS5jb21waWxlKHIi
KFxXfF4pW3VVXShbclJdP1tcJ1wiXSkiLCByZS5VTklDT0RFKQotICAgICAgICBfYnl0ZXNfbGl0
ZXJhbF9yZSA9IHJlLmNvbXBpbGUociIoXFd8XilbYkJdKFtyUl0/W1wnXCJdKSIsIHJlLlVOSUNP
REUpCi0KLSAgICAgICAgZGVmIGNoZWNrX291dHB1dChzZWxmLCB3YW50LCBnb3QsIG9wdGlvbmZs
YWdzKToKLSAgICAgICAgICAgIHJlcyA9IGRvY3Rlc3QuT3V0cHV0Q2hlY2tlci5jaGVja19vdXRw
dXQoc2VsZiwgd2FudCwgZ290LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvcHRpb25mbGFncykKLSAgICAgICAgICAgIGlmIHJlczoKLSAgICAg
ICAgICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgICAgICAgICBhbGxvd191bmljb2RlID0gb3B0
aW9uZmxhZ3MgJiBfZ2V0X2FsbG93X3VuaWNvZGVfZmxhZygpCi0gICAgICAgICAgICBhbGxvd19i
eXRlcyA9IG9wdGlvbmZsYWdzICYgX2dldF9hbGxvd19ieXRlc19mbGFnKCkKLSAgICAgICAgICAg
IGlmIG5vdCBhbGxvd191bmljb2RlIGFuZCBub3QgYWxsb3dfYnl0ZXM6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgICAgIGVsc2U6ICAjIHByYWdtYTogbm8gY292ZXIK
LSAgICAgICAgICAgICAgICBkZWYgcmVtb3ZlX3ByZWZpeGVzKHJlZ2V4LCB0eHQpOgotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gcmUuc3ViKHJlZ2V4LCByJ1wxXDInLCB0eHQpCi0KLSAgICAg
ICAgICAgICAgICBpZiBhbGxvd191bmljb2RlOgotICAgICAgICAgICAgICAgICAgICB3YW50ID0g
cmVtb3ZlX3ByZWZpeGVzKHNlbGYuX3VuaWNvZGVfbGl0ZXJhbF9yZSwgd2FudCkKLSAgICAgICAg
ICAgICAgICAgICAgZ290ID0gcmVtb3ZlX3ByZWZpeGVzKHNlbGYuX3VuaWNvZGVfbGl0ZXJhbF9y
ZSwgZ290KQotICAgICAgICAgICAgICAgIGlmIGFsbG93X2J5dGVzOgotICAgICAgICAgICAgICAg
ICAgICB3YW50ID0gcmVtb3ZlX3ByZWZpeGVzKHNlbGYuX2J5dGVzX2xpdGVyYWxfcmUsIHdhbnQp
Ci0gICAgICAgICAgICAgICAgICAgIGdvdCA9IHJlbW92ZV9wcmVmaXhlcyhzZWxmLl9ieXRlc19s
aXRlcmFsX3JlLCBnb3QpCi0gICAgICAgICAgICAgICAgcmVzID0gZG9jdGVzdC5PdXRwdXRDaGVj
a2VyLmNoZWNrX291dHB1dChzZWxmLCB3YW50LCBnb3QsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25mbGFncykKLSAgICAgICAg
ICAgICAgICByZXR1cm4gcmVzCi0KLSAgICBfZ2V0X2NoZWNrZXIuTGl0ZXJhbHNPdXRwdXRDaGVj
a2VyID0gTGl0ZXJhbHNPdXRwdXRDaGVja2VyCi0gICAgcmV0dXJuIF9nZXRfY2hlY2tlci5MaXRl
cmFsc091dHB1dENoZWNrZXIoKQotCi0KLWRlZiBfZ2V0X2FsbG93X3VuaWNvZGVfZmxhZygpOgot
ICAgICIiIgotICAgIFJlZ2lzdGVycyBhbmQgcmV0dXJucyB0aGUgQUxMT1dfVU5JQ09ERSBmbGFn
LgotICAgICIiIgotICAgIGltcG9ydCBkb2N0ZXN0Ci0gICAgcmV0dXJuIGRvY3Rlc3QucmVnaXN0
ZXJfb3B0aW9uZmxhZygnQUxMT1dfVU5JQ09ERScpCi0KLQotZGVmIF9nZXRfYWxsb3dfYnl0ZXNf
ZmxhZygpOgotICAgICIiIgotICAgIFJlZ2lzdGVycyBhbmQgcmV0dXJucyB0aGUgQUxMT1dfQllU
RVMgZmxhZy4KLSAgICAiIiIKLSAgICBpbXBvcnQgZG9jdGVzdAotICAgIHJldHVybiBkb2N0ZXN0
LnJlZ2lzdGVyX29wdGlvbmZsYWcoJ0FMTE9XX0JZVEVTJykKLQotCi1kZWYgX2dldF9yZXBvcnRf
Y2hvaWNlKGtleSk6Ci0gICAgIiIiCi0gICAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBhY3R1
YWwgYGRvY3Rlc3RgIG1vZHVsZSBmbGFnIHZhbHVlLCB3ZSB3YW50IHRvIGRvIGl0IGFzIGxhdGUg
YXMgcG9zc2libGUgdG8gYXZvaWQKLSAgICBpbXBvcnRpbmcgYGRvY3Rlc3RgIGFuZCBhbGwgaXRz
IGRlcGVuZGVuY2llcyB3aGVuIHBhcnNpbmcgb3B0aW9ucywgYXMgaXQgYWRkcyBvdmVyaGVhZCBh
bmQgYnJlYWtzIHRlc3RzLgotICAgICIiIgotICAgIGltcG9ydCBkb2N0ZXN0Ci0KLSAgICByZXR1
cm4gewotICAgICAgICBET0NURVNUX1JFUE9SVF9DSE9JQ0VfVURJRkY6IGRvY3Rlc3QuUkVQT1JU
X1VESUZGLAotICAgICAgICBET0NURVNUX1JFUE9SVF9DSE9JQ0VfQ0RJRkY6IGRvY3Rlc3QuUkVQ
T1JUX0NESUZGLAotICAgICAgICBET0NURVNUX1JFUE9SVF9DSE9JQ0VfTkRJRkY6IGRvY3Rlc3Qu
UkVQT1JUX05ESUZGLAotICAgICAgICBET0NURVNUX1JFUE9SVF9DSE9JQ0VfT05MWV9GSVJTVF9G
QUlMVVJFOiBkb2N0ZXN0LlJFUE9SVF9PTkxZX0ZJUlNUX0ZBSUxVUkUsCi0gICAgICAgIERPQ1RF
U1RfUkVQT1JUX0NIT0lDRV9OT05FOiAwLAotICAgIH1ba2V5XQotCi0KLWRlZiBfZml4X3Nwb29m
X3B5dGhvbjIocnVubmVyLCBlbmNvZGluZyk6Ci0gICAgIiIiCi0gICAgSW5zdGFsbHMgYSAiU3Bv
b2ZPdXQiIGludG8gdGhlIGdpdmVuIERlYnVnUnVubmVyIHNvIGl0IHByb3Blcmx5IGRlYWxzIHdp
dGggdW5pY29kZSBvdXRwdXQuIFRoaXMKLSAgICBzaG91bGQgcGF0Y2ggb25seSBkb2N0ZXN0cyBm
b3IgdGV4dCBmaWxlcyBiZWNhdXNlIHRoZXkgZG9uJ3QgaGF2ZSBhIHdheSB0byBkZWNsYXJlIHRo
ZWlyCi0gICAgZW5jb2RpbmcuIERvY3Rlc3RzIGluIGRvY3N0cmluZ3MgZnJvbSBQeXRob24gbW9k
dWxlcyBkb24ndCBoYXZlIHRoZSBzYW1lIHByb2JsZW0gZ2l2ZW4gdGhhdAotICAgIFB5dGhvbiBh
bHJlYWR5IGRlY29kZWQgdGhlIHN0cmluZ3MuCi0KLSAgICBUaGlzIGZpeGVzIHRoZSBwcm9ibGVt
IHJlbGF0ZWQgaW4gaXNzdWUgIzI0MzQuCi0gICAgIiIiCi0gICAgZnJvbSBfcHl0ZXN0LmNvbXBh
dCBpbXBvcnQgX1BZMgotICAgIGlmIG5vdCBfUFkyOgotICAgICAgICByZXR1cm4KLQotICAgIGZy
b20gZG9jdGVzdCBpbXBvcnQgX1Nwb29mT3V0Ci0KLSAgICBjbGFzcyBVbmljb2RlU3Bvb2YoX1Nw
b29mT3V0KToKLQotICAgICAgICBkZWYgZ2V0dmFsdWUoc2VsZik6Ci0gICAgICAgICAgICByZXN1
bHQgPSBfU3Bvb2ZPdXQuZ2V0dmFsdWUoc2VsZikKLSAgICAgICAgICAgIGlmIGVuY29kaW5nOgot
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5kZWNvZGUoZW5jb2RpbmcpCi0gICAgICAg
ICAgICByZXR1cm4gcmVzdWx0Ci0KLSAgICBydW5uZXIuX2Zha2VvdXQgPSBVbmljb2RlU3Bvb2Yo
KQotCi0KLUBweXRlc3QuZml4dHVyZShzY29wZT0nc2Vzc2lvbicpCi1kZWYgZG9jdGVzdF9uYW1l
c3BhY2UoKToKLSAgICAiIiIKLSAgICBJbmplY3QgbmFtZXMgaW50byB0aGUgZG9jdGVzdCBuYW1l
c3BhY2UuCi0gICAgIiIiCi0gICAgcmV0dXJuIGRpY3QoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvX3B5dGVzdC9maXh0dXJlcy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvZml4dHVyZXMucHkK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwOWZmYWRkYmE3M2ZmODRiMjM5ZDRmNGFh
MjllOTZkMDU2YzVkOGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9maXh0dXJlcy5weQorKysgL2Rldi9udWxsCkBAIC0x
LDExNDcgKzAsMCBAQAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRp
dmlzaW9uLCBwcmludF9mdW5jdGlvbgotCi1pbXBvcnQgZnVuY3Rvb2xzCi1pbXBvcnQgaW5zcGVj
dAotaW1wb3J0IHN5cwotaW1wb3J0IHdhcm5pbmdzCi1mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBP
cmRlcmVkRGljdAotCi1pbXBvcnQgYXR0cgotaW1wb3J0IHB5Ci1mcm9tIHB5Ll9jb2RlLmNvZGUg
aW1wb3J0IEZvcm1hdHRlZEV4Y2luZm8KLQotaW1wb3J0IF9weXRlc3QKLWZyb20gX3B5dGVzdCBp
bXBvcnQgbm9kZXMKLWZyb20gX3B5dGVzdC5fY29kZS5jb2RlIGltcG9ydCBUZXJtaW5hbFJlcHIK
LWZyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0ICgKLSAgICBOT1RTRVQsIGV4Y19jbGVhciwgX2Zv
cm1hdF9hcmdzLAotICAgIGdldGZzbGluZW5vLCBnZXRfcmVhbF9mdW5jLAotICAgIGlzX2dlbmVy
YXRvciwgaXNjbGFzcywgZ2V0aW1mdW5jLAotICAgIGdldGxvY2F0aW9uLCBnZXRmdW5jYXJnbmFt
ZXMsCi0gICAgc2FmZV9nZXRhdHRyLAotICAgIEZ1bmNhcmduYW1lc0NvbXBhdEF0dHIsCi0pCi1m
cm9tIF9weXRlc3Qub3V0Y29tZXMgaW1wb3J0IGZhaWwsIFRFU1RfT1VUQ09NRQotCi0KLWRlZiBw
eXRlc3Rfc2Vzc2lvbnN0YXJ0KHNlc3Npb24pOgotICAgIGltcG9ydCBfcHl0ZXN0LnB5dGhvbgot
Ci0gICAgc2NvcGVuYW1lMmNsYXNzLnVwZGF0ZSh7Ci0gICAgICAgICdjbGFzcyc6IF9weXRlc3Qu
cHl0aG9uLkNsYXNzLAotICAgICAgICAnbW9kdWxlJzogX3B5dGVzdC5weXRob24uTW9kdWxlLAot
ICAgICAgICAnZnVuY3Rpb24nOiBfcHl0ZXN0Lm1haW4uSXRlbSwKLSAgICAgICAgJ3Nlc3Npb24n
OiBfcHl0ZXN0Lm1haW4uU2Vzc2lvbiwKLSAgICB9KQotICAgIHNlc3Npb24uX2ZpeHR1cmVtYW5h
Z2VyID0gRml4dHVyZU1hbmFnZXIoc2Vzc2lvbikKLQotCi1zY29wZW5hbWUyY2xhc3MgPSB7fQot
Ci0KLXNjb3BlMnByb3BzID0gZGljdChzZXNzaW9uPSgpKQotc2NvcGUycHJvcHNbIm1vZHVsZSJd
ID0gKCJmc3BhdGgiLCAibW9kdWxlIikKLXNjb3BlMnByb3BzWyJjbGFzcyJdID0gc2NvcGUycHJv
cHNbIm1vZHVsZSJdICsgKCJjbHMiLCkKLXNjb3BlMnByb3BzWyJpbnN0YW5jZSJdID0gc2NvcGUy
cHJvcHNbImNsYXNzIl0gKyAoImluc3RhbmNlIiwgKQotc2NvcGUycHJvcHNbImZ1bmN0aW9uIl0g
PSBzY29wZTJwcm9wc1siaW5zdGFuY2UiXSArICgiZnVuY3Rpb24iLCAia2V5d29yZHMiKQotCi0K
LWRlZiBzY29wZXByb3BlcnR5KG5hbWU9Tm9uZSwgZG9jPU5vbmUpOgotICAgIGRlZiBkZWNvcmF0
ZXNjb3BlKGZ1bmMpOgotICAgICAgICBzY29wZW5hbWUgPSBuYW1lIG9yIGZ1bmMuX19uYW1lX18K
LQotICAgICAgICBkZWYgcHJvdmlkZShzZWxmKToKLSAgICAgICAgICAgIGlmIGZ1bmMuX19uYW1l
X18gaW4gc2NvcGUycHJvcHNbc2VsZi5zY29wZV06Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZ1
bmMoc2VsZikKLSAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCIlcyBub3QgYXZhaWxh
YmxlIGluICVzLXNjb3BlZCBjb250ZXh0IiAlICgKLSAgICAgICAgICAgICAgICBzY29wZW5hbWUs
IHNlbGYuc2NvcGUpKQotCi0gICAgICAgIHJldHVybiBwcm9wZXJ0eShwcm92aWRlLCBOb25lLCBO
b25lLCBmdW5jLl9fZG9jX18pCi0gICAgcmV0dXJuIGRlY29yYXRlc2NvcGUKLQotCi1kZWYgZ2V0
X3Njb3BlX25vZGUobm9kZSwgc2NvcGUpOgotICAgIGNscyA9IHNjb3BlbmFtZTJjbGFzcy5nZXQo
c2NvcGUpCi0gICAgaWYgY2xzIGlzIE5vbmU6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInVu
a25vd24gc2NvcGUiKQotICAgIHJldHVybiBub2RlLmdldHBhcmVudChjbHMpCi0KLQotZGVmIGFk
ZF9mdW5jYXJnX3BzZXVkb19maXh0dXJlX2RlZihjb2xsZWN0b3IsIG1ldGFmdW5jLCBmaXh0dXJl
bWFuYWdlcik6Ci0gICAgIyB0aGlzIGZ1bmN0aW9uIHdpbGwgdHJhbnNmb3JtIGFsbCBjb2xsZWN0
ZWQgY2FsbHMgdG8gYSBmdW5jdGlvbnMKLSAgICAjIGlmIHRoZXkgdXNlIGRpcmVjdCBmdW5jYXJn
cyAoaS5lLiBkaXJlY3QgcGFyYW1ldHJpemF0aW9uKQotICAgICMgYmVjYXVzZSB3ZSB3YW50IGxh
dGVyIHRlc3QgZXhlY3V0aW9uIHRvIGJlIGFibGUgdG8gcmVseSBvbgotICAgICMgYW4gZXhpc3Rp
bmcgRml4dHVyZURlZiBzdHJ1Y3R1cmUgZm9yIGFsbCBhcmd1bWVudHMuCi0gICAgIyBYWFggd2Ug
Y2FuIHByb2JhYmx5IGF2b2lkIHRoaXMgYWxnb3JpdGhtICBpZiB3ZSBtb2RpZnkgQ2FsbFNwZWMy
Ci0gICAgIyB0byBkaXJlY3RseSBjYXJlIGZvciBjcmVhdGluZyB0aGUgZml4dHVyZWRlZnMgd2l0
aGluIGl0cyBtZXRob2RzLgotICAgIGlmIG5vdCBtZXRhZnVuYy5fY2FsbHNbMF0uZnVuY2FyZ3M6
Ci0gICAgICAgIHJldHVybiAgIyB0aGlzIGZ1bmN0aW9uIGNhbGwgZG9lcyBub3QgaGF2ZSBkaXJl
Y3QgcGFyYW1ldHJpemF0aW9uCi0gICAgIyBjb2xsZWN0IGZ1bmNhcmdzIG9mIGFsbCBjYWxsc3Bl
Y3MgaW50byBhIGxpc3Qgb2YgdmFsdWVzCi0gICAgYXJnMnBhcmFtcyA9IHt9Ci0gICAgYXJnMnNj
b3BlID0ge30KLSAgICBmb3IgY2FsbHNwZWMgaW4gbWV0YWZ1bmMuX2NhbGxzOgotICAgICAgICBm
b3IgYXJnbmFtZSwgYXJndmFsdWUgaW4gY2FsbHNwZWMuZnVuY2FyZ3MuaXRlbXMoKToKLSAgICAg
ICAgICAgIGFzc2VydCBhcmduYW1lIG5vdCBpbiBjYWxsc3BlYy5wYXJhbXMKLSAgICAgICAgICAg
IGNhbGxzcGVjLnBhcmFtc1thcmduYW1lXSA9IGFyZ3ZhbHVlCi0gICAgICAgICAgICBhcmcycGFy
YW1zX2xpc3QgPSBhcmcycGFyYW1zLnNldGRlZmF1bHQoYXJnbmFtZSwgW10pCi0gICAgICAgICAg
ICBjYWxsc3BlYy5pbmRpY2VzW2FyZ25hbWVdID0gbGVuKGFyZzJwYXJhbXNfbGlzdCkKLSAgICAg
ICAgICAgIGFyZzJwYXJhbXNfbGlzdC5hcHBlbmQoYXJndmFsdWUpCi0gICAgICAgICAgICBpZiBh
cmduYW1lIG5vdCBpbiBhcmcyc2NvcGU6Ci0gICAgICAgICAgICAgICAgc2NvcGVudW0gPSBjYWxs
c3BlYy5fYXJnMnNjb3BlbnVtLmdldChhcmduYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGVudW1fZnVuY3Rpb24pCi0gICAgICAg
ICAgICAgICAgYXJnMnNjb3BlW2FyZ25hbWVdID0gc2NvcGVzW3Njb3BlbnVtXQotICAgICAgICBj
YWxsc3BlYy5mdW5jYXJncy5jbGVhcigpCi0KLSAgICAjIHJlZ2lzdGVyIGFydGlmaWNpYWwgRml4
dHVyZURlZidzIHNvIHRoYXQgbGF0ZXIgYXQgdGVzdCBleGVjdXRpb24KLSAgICAjIHRpbWUgd2Ug
Y2FuIHJlbHkgb24gYSBwcm9wZXIgRml4dHVyZURlZiB0byBleGlzdCBmb3IgZml4dHVyZSBzZXR1
cC4KLSAgICBhcmcyZml4dHVyZWRlZnMgPSBtZXRhZnVuYy5fYXJnMmZpeHR1cmVkZWZzCi0gICAg
Zm9yIGFyZ25hbWUsIHZhbHVlbGlzdCBpbiBhcmcycGFyYW1zLml0ZW1zKCk6Ci0gICAgICAgICMg
aWYgd2UgaGF2ZSBhIHNjb3BlIHRoYXQgaXMgaGlnaGVyIHRoYW4gZnVuY3Rpb24gd2UgbmVlZAot
ICAgICAgICAjIHRvIG1ha2Ugc3VyZSB3ZSBvbmx5IGV2ZXIgY3JlYXRlIGFuIGFjY29yZGluZyBm
aXh0dXJlZGVmIG9uCi0gICAgICAgICMgYSBwZXItc2NvcGUgYmFzaXMuIFdlIHRodXMgc3RvcmUg
YW5kIGNhY2hlIHRoZSBmaXh0dXJlZGVmIG9uIHRoZQotICAgICAgICAjIG5vZGUgcmVsYXRlZCB0
byB0aGUgc2NvcGUuCi0gICAgICAgIHNjb3BlID0gYXJnMnNjb3BlW2FyZ25hbWVdCi0gICAgICAg
IG5vZGUgPSBOb25lCi0gICAgICAgIGlmIHNjb3BlICE9ICJmdW5jdGlvbiI6Ci0gICAgICAgICAg
ICBub2RlID0gZ2V0X3Njb3BlX25vZGUoY29sbGVjdG9yLCBzY29wZSkKLSAgICAgICAgICAgIGlm
IG5vZGUgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBhc3NlcnQgc2NvcGUgPT0gImNsYXNzIiBh
bmQgaXNpbnN0YW5jZShjb2xsZWN0b3IsIF9weXRlc3QucHl0aG9uLk1vZHVsZSkKLSAgICAgICAg
ICAgICAgICAjIHVzZSBtb2R1bGUtbGV2ZWwgY29sbGVjdG9yIGZvciBjbGFzcy1zY29wZSAoZm9y
IG5vdykKLSAgICAgICAgICAgICAgICBub2RlID0gY29sbGVjdG9yCi0gICAgICAgIGlmIG5vZGUg
YW5kIGFyZ25hbWUgaW4gbm9kZS5fbmFtZTJwc2V1ZG9maXh0dXJlZGVmOgotICAgICAgICAgICAg
YXJnMmZpeHR1cmVkZWZzW2FyZ25hbWVdID0gW25vZGUuX25hbWUycHNldWRvZml4dHVyZWRlZlth
cmduYW1lXV0KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGZpeHR1cmVkZWYgPSBGaXh0dXJl
RGVmKGZpeHR1cmVtYW5hZ2VyLCAnJywgYXJnbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdldF9kaXJlY3RfcGFyYW1fZml4dHVyZV9mdW5jLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXJnMnNjb3BlW2FyZ25hbWVdLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVsaXN0LCBGYWxzZSwgRmFsc2UpCi0gICAgICAg
ICAgICBhcmcyZml4dHVyZWRlZnNbYXJnbmFtZV0gPSBbZml4dHVyZWRlZl0KLSAgICAgICAgICAg
IGlmIG5vZGUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgbm9kZS5fbmFtZTJwc2V1ZG9m
aXh0dXJlZGVmW2FyZ25hbWVdID0gZml4dHVyZWRlZgotCi0KLWRlZiBnZXRmaXh0dXJlbWFya2Vy
KG9iaik6Ci0gICAgIiIiIHJldHVybiBmaXh0dXJlbWFya2VyIG9yIE5vbmUgaWYgaXQgZG9lc24n
dCBleGlzdCBvciByYWlzZWQKLSAgICBleGNlcHRpb25zLiIiIgotICAgIHRyeToKLSAgICAgICAg
cmV0dXJuIGdldGF0dHIob2JqLCAiX3B5dGVzdGZpeHR1cmVmdW5jdGlvbiIsIE5vbmUpCi0gICAg
ZXhjZXB0IFRFU1RfT1VUQ09NRToKLSAgICAgICAgIyBzb21lIG9iamVjdHMgcmFpc2UgZXJyb3Jz
IGxpa2UgcmVxdWVzdCAoZnJvbSBmbGFzayBpbXBvcnQgcmVxdWVzdCkKLSAgICAgICAgIyB3ZSBk
b24ndCBleHBlY3QgdGhlbSB0byBiZSBmaXh0dXJlIGZ1bmN0aW9ucwotICAgICAgICByZXR1cm4g
Tm9uZQotCi0KLWRlZiBnZXRfcGFyYW1ldHJpemVkX2ZpeHR1cmVfa2V5cyhpdGVtLCBzY29wZW51
bSk6Ci0gICAgIiIiIHJldHVybiBsaXN0IG9mIGtleXMgZm9yIGFsbCBwYXJhbWV0cml6ZWQgYXJn
dW1lbnRzIHdoaWNoIG1hdGNoCi0gICAgdGhlIHNwZWNpZmllZCBzY29wZS4gIiIiCi0gICAgYXNz
ZXJ0IHNjb3BlbnVtIDwgc2NvcGVudW1fZnVuY3Rpb24gICMgZnVuY3Rpb24KLSAgICB0cnk6Ci0g
ICAgICAgIGNzID0gaXRlbS5jYWxsc3BlYwotICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAg
ICAgICAgcGFzcwotICAgIGVsc2U6Ci0gICAgICAgICMgY3MuaW5kaWNlcy5pdGVtcygpIGlzIHJh
bmRvbSBvcmRlciBvZiBhcmduYW1lcy4gIE5lZWQgdG8KLSAgICAgICAgIyBzb3J0IHRoaXMgc28g
dGhhdCBkaWZmZXJlbnQgY2FsbHMgdG8KLSAgICAgICAgIyBnZXRfcGFyYW1ldHJpemVkX2ZpeHR1
cmVfa2V5cyB3aWxsIGJlIGRldGVybWluaXN0aWMuCi0gICAgICAgIGZvciBhcmduYW1lLCBwYXJh
bV9pbmRleCBpbiBzb3J0ZWQoY3MuaW5kaWNlcy5pdGVtcygpKToKLSAgICAgICAgICAgIGlmIGNz
Ll9hcmcyc2NvcGVudW1bYXJnbmFtZV0gIT0gc2NvcGVudW06Ci0gICAgICAgICAgICAgICAgY29u
dGludWUKLSAgICAgICAgICAgIGlmIHNjb3BlbnVtID09IDA6ICAgICMgc2Vzc2lvbgotICAgICAg
ICAgICAgICAgIGtleSA9IChhcmduYW1lLCBwYXJhbV9pbmRleCkKLSAgICAgICAgICAgIGVsaWYg
c2NvcGVudW0gPT0gMTogICMgbW9kdWxlCi0gICAgICAgICAgICAgICAga2V5ID0gKGFyZ25hbWUs
IHBhcmFtX2luZGV4LCBpdGVtLmZzcGF0aCkKLSAgICAgICAgICAgIGVsaWYgc2NvcGVudW0gPT0g
MjogICMgY2xhc3MKLSAgICAgICAgICAgICAgICBrZXkgPSAoYXJnbmFtZSwgcGFyYW1faW5kZXgs
IGl0ZW0uZnNwYXRoLCBpdGVtLmNscykKLSAgICAgICAgICAgIHlpZWxkIGtleQotCi0KLSMgYWxn
b3JpdGhtIGZvciBzb3J0aW5nIG9uIGEgcGVyLXBhcmFtZXRyaXplZCByZXNvdXJjZSBzZXR1cCBi
YXNpcwotIyBpdCBpcyBjYWxsZWQgZm9yIHNjb3BlbnVtPT0wIChzZXNzaW9uKSBmaXJzdCBhbmQg
cGVyZm9ybXMgc29ydGluZwotIyBkb3duIHRvIHRoZSBsb3dlciBzY29wZXMgc3VjaCBhcyB0byBt
aW5pbWl6ZSBudW1iZXIgb2YgImhpZ2ggc2NvcGUiCi0jIHNldHVwcyBhbmQgdGVhcmRvd25zCi0K
LWRlZiByZW9yZGVyX2l0ZW1zKGl0ZW1zKToKLSAgICBhcmdrZXlzX2NhY2hlID0ge30KLSAgICBm
b3Igc2NvcGVudW0gaW4gcmFuZ2UoMCwgc2NvcGVudW1fZnVuY3Rpb24pOgotICAgICAgICBhcmdr
ZXlzX2NhY2hlW3Njb3BlbnVtXSA9IGQgPSB7fQotICAgICAgICBmb3IgaXRlbSBpbiBpdGVtczoK
LSAgICAgICAgICAgIGtleXMgPSBPcmRlcmVkRGljdC5mcm9ta2V5cyhnZXRfcGFyYW1ldHJpemVk
X2ZpeHR1cmVfa2V5cyhpdGVtLCBzY29wZW51bSkpCi0gICAgICAgICAgICBpZiBrZXlzOgotICAg
ICAgICAgICAgICAgIGRbaXRlbV0gPSBrZXlzCi0gICAgcmV0dXJuIHJlb3JkZXJfaXRlbXNfYXRz
Y29wZShpdGVtcywgc2V0KCksIGFyZ2tleXNfY2FjaGUsIDApCi0KLQotZGVmIHJlb3JkZXJfaXRl
bXNfYXRzY29wZShpdGVtcywgaWdub3JlLCBhcmdrZXlzX2NhY2hlLCBzY29wZW51bSk6Ci0gICAg
aWYgc2NvcGVudW0gPj0gc2NvcGVudW1fZnVuY3Rpb24gb3IgbGVuKGl0ZW1zKSA8IDM6Ci0gICAg
ICAgIHJldHVybiBpdGVtcwotICAgIGl0ZW1zX2RvbmUgPSBbXQotICAgIHdoaWxlIDE6Ci0gICAg
ICAgIGl0ZW1zX2JlZm9yZSwgaXRlbXNfc2FtZSwgaXRlbXNfb3RoZXIsIG5ld2lnbm9yZSA9IFwK
LSAgICAgICAgICAgIHNsaWNlX2l0ZW1zKGl0ZW1zLCBpZ25vcmUsIGFyZ2tleXNfY2FjaGVbc2Nv
cGVudW1dKQotICAgICAgICBpdGVtc19iZWZvcmUgPSByZW9yZGVyX2l0ZW1zX2F0c2NvcGUoCi0g
ICAgICAgICAgICBpdGVtc19iZWZvcmUsIGlnbm9yZSwgYXJna2V5c19jYWNoZSwgc2NvcGVudW0g
KyAxKQotICAgICAgICBpZiBpdGVtc19zYW1lIGlzIE5vbmU6Ci0gICAgICAgICAgICAjIG5vdGhp
bmcgdG8gcmVvcmRlciBpbiB0aGlzIHNjb3BlCi0gICAgICAgICAgICBhc3NlcnQgaXRlbXNfb3Ro
ZXIgaXMgTm9uZQotICAgICAgICAgICAgcmV0dXJuIGl0ZW1zX2RvbmUgKyBpdGVtc19iZWZvcmUK
LSAgICAgICAgaXRlbXNfZG9uZS5leHRlbmQoaXRlbXNfYmVmb3JlKQotICAgICAgICBpdGVtcyA9
IGl0ZW1zX3NhbWUgKyBpdGVtc19vdGhlcgotICAgICAgICBpZ25vcmUgPSBuZXdpZ25vcmUKLQot
Ci1kZWYgc2xpY2VfaXRlbXMoaXRlbXMsIGlnbm9yZSwgc2NvcGVkX2FyZ2tleXNfY2FjaGUpOgot
ICAgICMgd2UgcGljayB0aGUgZmlyc3QgaXRlbSB3aGljaCB1c2VzIGEgZml4dHVyZSBpbnN0YW5j
ZSBpbiB0aGUKLSAgICAjIHJlcXVlc3RlZCBzY29wZSBhbmQgd2hpY2ggd2UgaGF2ZW4ndCBzZWVu
IHlldC4gIFdlIHNsaWNlIHRoZSBpbnB1dAotICAgICMgaXRlbXMgbGlzdCBpbnRvIGEgbGlzdCBv
ZiBpdGVtc19ub21hdGNoLCBpdGVtc19zYW1lIGFuZAotICAgICMgaXRlbXNfb3RoZXIKLSAgICBp
ZiBzY29wZWRfYXJna2V5c19jYWNoZTogICMgZG8gd2UgbmVlZCB0byBkbyB3b3JrIGF0IGFsbD8K
LSAgICAgICAgaXQgPSBpdGVyKGl0ZW1zKQotICAgICAgICAjIGZpcnN0IGZpbmQgYSBzbGljaW5n
IGtleQotICAgICAgICBmb3IgaSwgaXRlbSBpbiBlbnVtZXJhdGUoaXQpOgotICAgICAgICAgICAg
YXJna2V5cyA9IHNjb3BlZF9hcmdrZXlzX2NhY2hlLmdldChpdGVtKQotICAgICAgICAgICAgaWYg
YXJna2V5cyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBuZXdhcmdrZXlzID0gT3JkZXJl
ZERpY3QuZnJvbWtleXMoayBmb3IgayBpbiBhcmdrZXlzIGlmIGsgbm90IGluIGlnbm9yZSkKLSAg
ICAgICAgICAgICAgICBpZiBuZXdhcmdrZXlzOiAgIyBmb3VuZCBhIHNsaWNpbmcga2V5Ci0gICAg
ICAgICAgICAgICAgICAgIHNsaWNpbmdfYXJna2V5LCBfID0gbmV3YXJna2V5cy5wb3BpdGVtKCkK
LSAgICAgICAgICAgICAgICAgICAgaXRlbXNfYmVmb3JlID0gaXRlbXNbOmldCi0gICAgICAgICAg
ICAgICAgICAgIGl0ZW1zX3NhbWUgPSBbaXRlbV0KLSAgICAgICAgICAgICAgICAgICAgaXRlbXNf
b3RoZXIgPSBbXQotICAgICAgICAgICAgICAgICAgICAjIG5vdyBzbGljZSB0aGUgcmVtYWluZGVy
IG9mIHRoZSBsaXN0Ci0gICAgICAgICAgICAgICAgICAgIGZvciBpdGVtIGluIGl0OgotICAgICAg
ICAgICAgICAgICAgICAgICAgYXJna2V5cyA9IHNjb3BlZF9hcmdrZXlzX2NhY2hlLmdldChpdGVt
KQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgYXJna2V5cyBhbmQgc2xpY2luZ19hcmdrZXkg
aW4gYXJna2V5cyBhbmQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGljaW5n
X2FyZ2tleSBub3QgaW4gaWdub3JlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1z
X3NhbWUuYXBwZW5kKGl0ZW0pCi0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zX290aGVyLmFwcGVuZChpdGVtKQotICAgICAgICAg
ICAgICAgICAgICBuZXdpZ25vcmUgPSBpZ25vcmUuY29weSgpCi0gICAgICAgICAgICAgICAgICAg
IG5ld2lnbm9yZS5hZGQoc2xpY2luZ19hcmdrZXkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
biAoaXRlbXNfYmVmb3JlLCBpdGVtc19zYW1lLCBpdGVtc19vdGhlciwgbmV3aWdub3JlKQotICAg
IHJldHVybiBpdGVtcywgTm9uZSwgTm9uZSwgTm9uZQotCi0KLWRlZiBmaWxsZml4dHVyZXMoZnVu
Y3Rpb24pOgotICAgICIiIiBmaWxsIG1pc3NpbmcgZnVuY2FyZ3MgZm9yIGEgdGVzdCBmdW5jdGlv
bi4gIiIiCi0gICAgdHJ5OgotICAgICAgICByZXF1ZXN0ID0gZnVuY3Rpb24uX3JlcXVlc3QKLSAg
ICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICMgWFhYIHRoaXMgc3BlY2lhbCBjb2Rl
IHBhdGggaXMgb25seSBleHBlY3RlZCB0byBleGVjdXRlCi0gICAgICAgICMgd2l0aCB0aGUgb2Vq
c2tpdCBwbHVnaW4uICBJdCB1c2VzIGNsYXNzZXMgd2l0aCBmdW5jYXJncwotICAgICAgICAjIGFu
ZCB3ZSB0aHVzIGhhdmUgdG8gd29yayBhIGJpdCB0byBhbGxvdyB0aGlzLgotICAgICAgICBmbSA9
IGZ1bmN0aW9uLnNlc3Npb24uX2ZpeHR1cmVtYW5hZ2VyCi0gICAgICAgIGZpID0gZm0uZ2V0Zml4
dHVyZWluZm8oZnVuY3Rpb24ucGFyZW50LCBmdW5jdGlvbi5vYmosIE5vbmUpCi0gICAgICAgIGZ1
bmN0aW9uLl9maXh0dXJlaW5mbyA9IGZpCi0gICAgICAgIHJlcXVlc3QgPSBmdW5jdGlvbi5fcmVx
dWVzdCA9IEZpeHR1cmVSZXF1ZXN0KGZ1bmN0aW9uKQotICAgICAgICByZXF1ZXN0Ll9maWxsZml4
dHVyZXMoKQotICAgICAgICAjIHBydW5lIG91dCBmdW5jYXJncyBmb3IganN0ZXN0cwotICAgICAg
ICBuZXdmdW5jYXJncyA9IHt9Ci0gICAgICAgIGZvciBuYW1lIGluIGZpLmFyZ25hbWVzOgotICAg
ICAgICAgICAgbmV3ZnVuY2FyZ3NbbmFtZV0gPSBmdW5jdGlvbi5mdW5jYXJnc1tuYW1lXQotICAg
ICAgICBmdW5jdGlvbi5mdW5jYXJncyA9IG5ld2Z1bmNhcmdzCi0gICAgZWxzZToKLSAgICAgICAg
cmVxdWVzdC5fZmlsbGZpeHR1cmVzKCkKLQotCi1kZWYgZ2V0X2RpcmVjdF9wYXJhbV9maXh0dXJl
X2Z1bmMocmVxdWVzdCk6Ci0gICAgcmV0dXJuIHJlcXVlc3QucGFyYW0KLQotCi1jbGFzcyBGdW5j
Rml4dHVyZUluZm86Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGFyZ25hbWVzLCBuYW1lc19jbG9z
dXJlLCBuYW1lMmZpeHR1cmVkZWZzKToKLSAgICAgICAgc2VsZi5hcmduYW1lcyA9IGFyZ25hbWVz
Ci0gICAgICAgIHNlbGYubmFtZXNfY2xvc3VyZSA9IG5hbWVzX2Nsb3N1cmUKLSAgICAgICAgc2Vs
Zi5uYW1lMmZpeHR1cmVkZWZzID0gbmFtZTJmaXh0dXJlZGVmcwotCi0KLWNsYXNzIEZpeHR1cmVS
ZXF1ZXN0KEZ1bmNhcmduYW1lc0NvbXBhdEF0dHIpOgotICAgICIiIiBBIHJlcXVlc3QgZm9yIGEg
Zml4dHVyZSBmcm9tIGEgdGVzdCBvciBmaXh0dXJlIGZ1bmN0aW9uLgotCi0gICAgQSByZXF1ZXN0
IG9iamVjdCBnaXZlcyBhY2Nlc3MgdG8gdGhlIHJlcXVlc3RpbmcgdGVzdCBjb250ZXh0Ci0gICAg
YW5kIGhhcyBhbiBvcHRpb25hbCBgYHBhcmFtYGAgYXR0cmlidXRlIGluIGNhc2UKLSAgICB0aGUg
Zml4dHVyZSBpcyBwYXJhbWV0cml6ZWQgaW5kaXJlY3RseS4KLSAgICAiIiIKLQotICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBweWZ1bmNpdGVtKToKLSAgICAgICAgc2VsZi5fcHlmdW5jaXRlbSA9IHB5
ZnVuY2l0ZW0KLSAgICAgICAgIzogZml4dHVyZSBmb3Igd2hpY2ggdGhpcyByZXF1ZXN0IGlzIGJl
aW5nIHBlcmZvcm1lZAotICAgICAgICBzZWxmLmZpeHR1cmVuYW1lID0gTm9uZQotICAgICAgICAj
OiBTY29wZSBzdHJpbmcsIG9uZSBvZiAiZnVuY3Rpb24iLCAiY2xhc3MiLCAibW9kdWxlIiwgInNl
c3Npb24iCi0gICAgICAgIHNlbGYuc2NvcGUgPSAiZnVuY3Rpb24iCi0gICAgICAgIHNlbGYuX2Zp
eHR1cmVfdmFsdWVzID0ge30gICMgYXJnbmFtZSAtPiBmaXh0dXJlIHZhbHVlCi0gICAgICAgIHNl
bGYuX2ZpeHR1cmVfZGVmcyA9IHt9ICAjIGFyZ25hbWUgLT4gRml4dHVyZURlZgotICAgICAgICBm
aXh0dXJlaW5mbyA9IHB5ZnVuY2l0ZW0uX2ZpeHR1cmVpbmZvCi0gICAgICAgIHNlbGYuX2FyZzJm
aXh0dXJlZGVmcyA9IGZpeHR1cmVpbmZvLm5hbWUyZml4dHVyZWRlZnMuY29weSgpCi0gICAgICAg
IHNlbGYuX2FyZzJpbmRleCA9IHt9Ci0gICAgICAgIHNlbGYuX2ZpeHR1cmVtYW5hZ2VyID0gcHlm
dW5jaXRlbS5zZXNzaW9uLl9maXh0dXJlbWFuYWdlcgotCi0gICAgQHByb3BlcnR5Ci0gICAgZGVm
IGZpeHR1cmVuYW1lcyhzZWxmKToKLSAgICAgICAgIyBiYWNrd2FyZCBpbmNvbXBhdGlibGUgbm90
ZTogbm93IGEgcmVhZG9ubHkgcHJvcGVydHkKLSAgICAgICAgcmV0dXJuIGxpc3Qoc2VsZi5fcHlm
dW5jaXRlbS5fZml4dHVyZWluZm8ubmFtZXNfY2xvc3VyZSkKLQotICAgIEBwcm9wZXJ0eQotICAg
IGRlZiBub2RlKHNlbGYpOgotICAgICAgICAiIiIgdW5kZXJseWluZyBjb2xsZWN0aW9uIG5vZGUg
KGRlcGVuZHMgb24gY3VycmVudCByZXF1ZXN0IHNjb3BlKSIiIgotICAgICAgICByZXR1cm4gc2Vs
Zi5fZ2V0c2NvcGVpdGVtKHNlbGYuc2NvcGUpCi0KLSAgICBkZWYgX2dldG5leHRmaXh0dXJlZGVm
KHNlbGYsIGFyZ25hbWUpOgotICAgICAgICBmaXh0dXJlZGVmcyA9IHNlbGYuX2FyZzJmaXh0dXJl
ZGVmcy5nZXQoYXJnbmFtZSwgTm9uZSkKLSAgICAgICAgaWYgZml4dHVyZWRlZnMgaXMgTm9uZToK
LSAgICAgICAgICAgICMgd2UgYXJyaXZlIGhlcmUgYmVjYXVzZSBvZiBhICBhIGR5bmFtaWMgY2Fs
bCB0bwotICAgICAgICAgICAgIyBnZXRmaXh0dXJldmFsdWUoYXJnbmFtZSkgdXNhZ2Ugd2hpY2gg
d2FzIG5hdHVyYWxseQotICAgICAgICAgICAgIyBub3Qga25vd24gYXQgcGFyc2luZy9jb2xsZWN0
aW9uIHRpbWUKLSAgICAgICAgICAgIHBhcmVudGlkID0gc2VsZi5fcHlmdW5jaXRlbS5wYXJlbnQu
bm9kZWlkCi0gICAgICAgICAgICBmaXh0dXJlZGVmcyA9IHNlbGYuX2ZpeHR1cmVtYW5hZ2VyLmdl
dGZpeHR1cmVkZWZzKGFyZ25hbWUsIHBhcmVudGlkKQotICAgICAgICAgICAgc2VsZi5fYXJnMmZp
eHR1cmVkZWZzW2FyZ25hbWVdID0gZml4dHVyZWRlZnMKLSAgICAgICAgIyBmaXh0dXJlZGVmcyBs
aXN0IGlzIGltbXV0YWJsZSBzbyB3ZSBtYWludGFpbiBhIGRlY3JlYXNpbmcgaW5kZXgKLSAgICAg
ICAgaW5kZXggPSBzZWxmLl9hcmcyaW5kZXguZ2V0KGFyZ25hbWUsIDApIC0gMQotICAgICAgICBp
ZiBmaXh0dXJlZGVmcyBpcyBOb25lIG9yICgtaW5kZXggPiBsZW4oZml4dHVyZWRlZnMpKToKLSAg
ICAgICAgICAgIHJhaXNlIEZpeHR1cmVMb29rdXBFcnJvcihhcmduYW1lLCBzZWxmKQotICAgICAg
ICBzZWxmLl9hcmcyaW5kZXhbYXJnbmFtZV0gPSBpbmRleAotICAgICAgICByZXR1cm4gZml4dHVy
ZWRlZnNbaW5kZXhdCi0KLSAgICBAcHJvcGVydHkKLSAgICBkZWYgY29uZmlnKHNlbGYpOgotICAg
ICAgICAiIiIgdGhlIHB5dGVzdCBjb25maWcgb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIHJl
cXVlc3QuICIiIgotICAgICAgICByZXR1cm4gc2VsZi5fcHlmdW5jaXRlbS5jb25maWcKLQotICAg
IEBzY29wZXByb3BlcnR5KCkKLSAgICBkZWYgZnVuY3Rpb24oc2VsZik6Ci0gICAgICAgICIiIiB0
ZXN0IGZ1bmN0aW9uIG9iamVjdCBpZiB0aGUgcmVxdWVzdCBoYXMgYSBwZXItZnVuY3Rpb24gc2Nv
cGUuICIiIgotICAgICAgICByZXR1cm4gc2VsZi5fcHlmdW5jaXRlbS5vYmoKLQotICAgIEBzY29w
ZXByb3BlcnR5KCJjbGFzcyIpCi0gICAgZGVmIGNscyhzZWxmKToKLSAgICAgICAgIiIiIGNsYXNz
IChjYW4gYmUgTm9uZSkgd2hlcmUgdGhlIHRlc3QgZnVuY3Rpb24gd2FzIGNvbGxlY3RlZC4gIiIi
Ci0gICAgICAgIGNsc2NvbCA9IHNlbGYuX3B5ZnVuY2l0ZW0uZ2V0cGFyZW50KF9weXRlc3QucHl0
aG9uLkNsYXNzKQotICAgICAgICBpZiBjbHNjb2w6Ci0gICAgICAgICAgICByZXR1cm4gY2xzY29s
Lm9iagotCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIGluc3RhbmNlKHNlbGYpOgotICAgICAgICAi
IiIgaW5zdGFuY2UgKGNhbiBiZSBOb25lKSBvbiB3aGljaCB0ZXN0IGZ1bmN0aW9uIHdhcyBjb2xs
ZWN0ZWQuICIiIgotICAgICAgICAjIHVuaXR0ZXN0IHN1cHBvcnQgaGFjaywgc2VlIF9weXRlc3Qu
dW5pdHRlc3QuVGVzdENhc2VGdW5jdGlvbgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1
cm4gc2VsZi5fcHlmdW5jaXRlbS5fdGVzdGNhc2UKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVy
cm9yOgotICAgICAgICAgICAgZnVuY3Rpb24gPSBnZXRhdHRyKHNlbGYsICJmdW5jdGlvbiIsIE5v
bmUpCi0gICAgICAgICAgICBpZiBmdW5jdGlvbiBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAg
ICByZXR1cm4gcHkuYnVpbHRpbi5fZ2V0aW1zZWxmKGZ1bmN0aW9uKQotCi0gICAgQHNjb3BlcHJv
cGVydHkoKQotICAgIGRlZiBtb2R1bGUoc2VsZik6Ci0gICAgICAgICIiIiBweXRob24gbW9kdWxl
IG9iamVjdCB3aGVyZSB0aGUgdGVzdCBmdW5jdGlvbiB3YXMgY29sbGVjdGVkLiAiIiIKLSAgICAg
ICAgcmV0dXJuIHNlbGYuX3B5ZnVuY2l0ZW0uZ2V0cGFyZW50KF9weXRlc3QucHl0aG9uLk1vZHVs
ZSkub2JqCi0KLSAgICBAc2NvcGVwcm9wZXJ0eSgpCi0gICAgZGVmIGZzcGF0aChzZWxmKToKLSAg
ICAgICAgIiIiIHRoZSBmaWxlIHN5c3RlbSBwYXRoIG9mIHRoZSB0ZXN0IG1vZHVsZSB3aGljaCBj
b2xsZWN0ZWQgdGhpcyB0ZXN0LiAiIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX3B5ZnVuY2l0ZW0u
ZnNwYXRoCi0KLSAgICBAcHJvcGVydHkKLSAgICBkZWYga2V5d29yZHMoc2VsZik6Ci0gICAgICAg
ICIiIiBrZXl3b3Jkcy9tYXJrZXJzIGRpY3Rpb25hcnkgZm9yIHRoZSB1bmRlcmx5aW5nIG5vZGUu
ICIiIgotICAgICAgICByZXR1cm4gc2VsZi5ub2RlLmtleXdvcmRzCi0KLSAgICBAcHJvcGVydHkK
LSAgICBkZWYgc2Vzc2lvbihzZWxmKToKLSAgICAgICAgIiIiIHB5dGVzdCBzZXNzaW9uIG9iamVj
dC4gIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9weWZ1bmNpdGVtLnNlc3Npb24KLQotICAgIGRl
ZiBhZGRmaW5hbGl6ZXIoc2VsZiwgZmluYWxpemVyKToKLSAgICAgICAgIiIiIGFkZCBmaW5hbGl6
ZXIvdGVhcmRvd24gZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGFmdGVyIHRoZQotICAgICAgICBsYXN0
IHRlc3Qgd2l0aGluIHRoZSByZXF1ZXN0aW5nIHRlc3QgY29udGV4dCBmaW5pc2hlZAotICAgICAg
ICBleGVjdXRpb24uICIiIgotICAgICAgICAjIFhYWCB1c3VhbGx5IHRoaXMgbWV0aG9kIGlzIHNo
YWRvd2VkIGJ5IGZpeHR1cmVkZWYgc3BlY2lmaWMgb25lcwotICAgICAgICBzZWxmLl9hZGRmaW5h
bGl6ZXIoZmluYWxpemVyLCBzY29wZT1zZWxmLnNjb3BlKQotCi0gICAgZGVmIF9hZGRmaW5hbGl6
ZXIoc2VsZiwgZmluYWxpemVyLCBzY29wZSk6Ci0gICAgICAgIGNvbGl0ZW0gPSBzZWxmLl9nZXRz
Y29wZWl0ZW0oc2NvcGUpCi0gICAgICAgIHNlbGYuX3B5ZnVuY2l0ZW0uc2Vzc2lvbi5fc2V0dXBz
dGF0ZS5hZGRmaW5hbGl6ZXIoCi0gICAgICAgICAgICBmaW5hbGl6ZXI9ZmluYWxpemVyLCBjb2xp
dGVtPWNvbGl0ZW0pCi0KLSAgICBkZWYgYXBwbHltYXJrZXIoc2VsZiwgbWFya2VyKToKLSAgICAg
ICAgIiIiIEFwcGx5IGEgbWFya2VyIHRvIGEgc2luZ2xlIHRlc3QgZnVuY3Rpb24gaW52b2NhdGlv
bi4KLSAgICAgICAgVGhpcyBtZXRob2QgaXMgdXNlZnVsIGlmIHlvdSBkb24ndCB3YW50IHRvIGhh
dmUgYSBrZXl3b3JkL21hcmtlcgotICAgICAgICBvbiBhbGwgZnVuY3Rpb24gaW52b2NhdGlvbnMu
Ci0KLSAgICAgICAgOmFyZyBtYXJrZXI6IGEgOnB5OmNsYXNzOmBfcHl0ZXN0Lm1hcmsuTWFya0Rl
Y29yYXRvcmAgb2JqZWN0Ci0gICAgICAgICAgICBjcmVhdGVkIGJ5IGEgY2FsbCB0byBgYHB5dGVz
dC5tYXJrLk5BTUUoLi4uKWBgLgotICAgICAgICAiIiIKLSAgICAgICAgdHJ5OgotICAgICAgICAg
ICAgc2VsZi5ub2RlLmtleXdvcmRzW21hcmtlci5tYXJrbmFtZV0gPSBtYXJrZXIKLSAgICAgICAg
ZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtYXJr
ZXIpCi0KLSAgICBkZWYgcmFpc2VlcnJvcihzZWxmLCBtc2cpOgotICAgICAgICAiIiIgcmFpc2Ug
YSBGaXh0dXJlTG9va3VwRXJyb3Igd2l0aCB0aGUgZ2l2ZW4gbWVzc2FnZS4gIiIiCi0gICAgICAg
IHJhaXNlIHNlbGYuX2ZpeHR1cmVtYW5hZ2VyLkZpeHR1cmVMb29rdXBFcnJvcihOb25lLCBzZWxm
LCBtc2cpCi0KLSAgICBkZWYgX2ZpbGxmaXh0dXJlcyhzZWxmKToKLSAgICAgICAgaXRlbSA9IHNl
bGYuX3B5ZnVuY2l0ZW0KLSAgICAgICAgZml4dHVyZW5hbWVzID0gZ2V0YXR0cihpdGVtLCAiZml4
dHVyZW5hbWVzIiwgc2VsZi5maXh0dXJlbmFtZXMpCi0gICAgICAgIGZvciBhcmduYW1lIGluIGZp
eHR1cmVuYW1lczoKLSAgICAgICAgICAgIGlmIGFyZ25hbWUgbm90IGluIGl0ZW0uZnVuY2FyZ3M6
Ci0gICAgICAgICAgICAgICAgaXRlbS5mdW5jYXJnc1thcmduYW1lXSA9IHNlbGYuZ2V0Zml4dHVy
ZXZhbHVlKGFyZ25hbWUpCi0KLSAgICBkZWYgY2FjaGVkX3NldHVwKHNlbGYsIHNldHVwLCB0ZWFy
ZG93bj1Ob25lLCBzY29wZT0ibW9kdWxlIiwgZXh0cmFrZXk9Tm9uZSk6Ci0gICAgICAgICIiIiAo
ZGVwcmVjYXRlZCkgUmV0dXJuIGEgdGVzdGluZyByZXNvdXJjZSBtYW5hZ2VkIGJ5IGBgc2V0dXBg
YCAmCi0gICAgICAgIGBgdGVhcmRvd25gYCBjYWxscy4gIGBgc2NvcGVgYCBhbmQgYGBleHRyYWtl
eWBgIGRldGVybWluZSB3aGVuIHRoZQotICAgICAgICBgYHRlYXJkb3duYGAgZnVuY3Rpb24gd2ls
bCBiZSBjYWxsZWQgc28gdGhhdCBzdWJzZXF1ZW50IGNhbGxzIHRvCi0gICAgICAgIGBgc2V0dXBg
YCB3b3VsZCByZWNyZWF0ZSB0aGUgcmVzb3VyY2UuICBXaXRoIHB5dGVzdC0yLjMgeW91IG9mdGVu
Ci0gICAgICAgIGRvIG5vdCBuZWVkIGBgY2FjaGVkX3NldHVwKClgYCBhcyB5b3UgY2FuIGRpcmVj
dGx5IGRlY2xhcmUgYSBzY29wZQotICAgICAgICBvbiBhIGZpeHR1cmUgZnVuY3Rpb24gYW5kIHJl
Z2lzdGVyIGEgZmluYWxpemVyIHRocm91Z2gKLSAgICAgICAgYGByZXF1ZXN0LmFkZGZpbmFsaXpl
cigpYGAuCi0KLSAgICAgICAgOmFyZyB0ZWFyZG93bjogZnVuY3Rpb24gcmVjZWl2aW5nIGEgcHJl
dmlvdXNseSBzZXR1cCByZXNvdXJjZS4KLSAgICAgICAgOmFyZyBzZXR1cDogYSBuby1hcmd1bWVu
dCBmdW5jdGlvbiBjcmVhdGluZyBhIHJlc291cmNlLgotICAgICAgICA6YXJnIHNjb3BlOiBhIHN0
cmluZyB2YWx1ZSBvdXQgb2YgYGBmdW5jdGlvbmBgLCBgYGNsYXNzYGAsIGBgbW9kdWxlYGAKLSAg
ICAgICAgICAgIG9yIGBgc2Vzc2lvbmBgIGluZGljYXRpbmcgdGhlIGNhY2hpbmcgbGlmZWN5Y2xl
IG9mIHRoZSByZXNvdXJjZS4KLSAgICAgICAgOmFyZyBleHRyYWtleTogYWRkZWQgdG8gaW50ZXJu
YWwgY2FjaGluZyBrZXkgb2YgKGZ1bmNhcmduYW1lLCBzY29wZSkuCi0gICAgICAgICIiIgotICAg
ICAgICBpZiBub3QgaGFzYXR0cihzZWxmLmNvbmZpZywgJ19zZXR1cGNhY2hlJyk6Ci0gICAgICAg
ICAgICBzZWxmLmNvbmZpZy5fc2V0dXBjYWNoZSA9IHt9ICAjIFhYWCB3ZWFrcmVmPwotICAgICAg
ICBjYWNoZWtleSA9IChzZWxmLmZpeHR1cmVuYW1lLCBzZWxmLl9nZXRzY29wZWl0ZW0oc2NvcGUp
LCBleHRyYWtleSkKLSAgICAgICAgY2FjaGUgPSBzZWxmLmNvbmZpZy5fc2V0dXBjYWNoZQotICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICB2YWwgPSBjYWNoZVtjYWNoZWtleV0KLSAgICAgICAgZXhj
ZXB0IEtleUVycm9yOgotICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NvcGUoc2VsZi5maXh0dXJl
bmFtZSwgc2VsZi5zY29wZSwgc2NvcGUpCi0gICAgICAgICAgICB2YWwgPSBzZXR1cCgpCi0gICAg
ICAgICAgICBjYWNoZVtjYWNoZWtleV0gPSB2YWwKLSAgICAgICAgICAgIGlmIHRlYXJkb3duIGlz
IG5vdCBOb25lOgotICAgICAgICAgICAgICAgIGRlZiBmaW5hbGl6ZXIoKToKLSAgICAgICAgICAg
ICAgICAgICAgZGVsIGNhY2hlW2NhY2hla2V5XQotICAgICAgICAgICAgICAgICAgICB0ZWFyZG93
bih2YWwpCi0gICAgICAgICAgICAgICAgc2VsZi5fYWRkZmluYWxpemVyKGZpbmFsaXplciwgc2Nv
cGU9c2NvcGUpCi0gICAgICAgIHJldHVybiB2YWwKLQotICAgIGRlZiBnZXRmaXh0dXJldmFsdWUo
c2VsZiwgYXJnbmFtZSk6Ci0gICAgICAgICIiIiBEeW5hbWljYWxseSBydW4gYSBuYW1lZCBmaXh0
dXJlIGZ1bmN0aW9uLgotCi0gICAgICAgIERlY2xhcmluZyBmaXh0dXJlcyB2aWEgZnVuY3Rpb24g
YXJndW1lbnQgaXMgcmVjb21tZW5kZWQgd2hlcmUgcG9zc2libGUuCi0gICAgICAgIEJ1dCBpZiB5
b3UgY2FuIG9ubHkgZGVjaWRlIHdoZXRoZXIgdG8gdXNlIGFub3RoZXIgZml4dHVyZSBhdCB0ZXN0
Ci0gICAgICAgIHNldHVwIHRpbWUsIHlvdSBtYXkgdXNlIHRoaXMgZnVuY3Rpb24gdG8gcmV0cmll
dmUgaXQgaW5zaWRlIGEgZml4dHVyZQotICAgICAgICBvciB0ZXN0IGZ1bmN0aW9uIGJvZHkuCi0g
ICAgICAgICIiIgotICAgICAgICByZXR1cm4gc2VsZi5fZ2V0X2FjdGl2ZV9maXh0dXJlZGVmKGFy
Z25hbWUpLmNhY2hlZF9yZXN1bHRbMF0KLQotICAgIGRlZiBnZXRmdW5jYXJndmFsdWUoc2VsZiwg
YXJnbmFtZSk6Ci0gICAgICAgICIiIiBEZXByZWNhdGVkLCB1c2UgZ2V0Zml4dHVyZXZhbHVlLiAi
IiIKLSAgICAgICAgZnJvbSBfcHl0ZXN0IGltcG9ydCBkZXByZWNhdGVkCi0gICAgICAgIHdhcm5p
bmdzLndhcm4oCi0gICAgICAgICAgICBkZXByZWNhdGVkLkdFVEZVTkNBUkdWQUxVRSwKLSAgICAg
ICAgICAgIERlcHJlY2F0aW9uV2FybmluZywKLSAgICAgICAgICAgIHN0YWNrbGV2ZWw9MikKLSAg
ICAgICAgcmV0dXJuIHNlbGYuZ2V0Zml4dHVyZXZhbHVlKGFyZ25hbWUpCi0KLSAgICBkZWYgX2dl
dF9hY3RpdmVfZml4dHVyZWRlZihzZWxmLCBhcmduYW1lKToKLSAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgcmV0dXJuIHNlbGYuX2ZpeHR1cmVfZGVmc1thcmduYW1lXQotICAgICAgICBleGNlcHQg
S2V5RXJyb3I6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZml4dHVyZWRlZiA9
IHNlbGYuX2dldG5leHRmaXh0dXJlZGVmKGFyZ25hbWUpCi0gICAgICAgICAgICBleGNlcHQgRml4
dHVyZUxvb2t1cEVycm9yOgotICAgICAgICAgICAgICAgIGlmIGFyZ25hbWUgPT0gInJlcXVlc3Qi
OgotICAgICAgICAgICAgICAgICAgICBjbGFzcyBQc2V1ZG9GaXh0dXJlRGVmOgotICAgICAgICAg
ICAgICAgICAgICAgICAgY2FjaGVkX3Jlc3VsdCA9IChzZWxmLCBbMF0sIE5vbmUpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBzY29wZSA9ICJmdW5jdGlvbiIKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIFBzZXVkb0ZpeHR1cmVEZWYKLSAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAj
IHJlbW92ZSBpbmRlbnQgdG8gcHJldmVudCB0aGUgcHl0aG9uMyBleGNlcHRpb24KLSAgICAgICAg
IyBmcm9tIGxlYWtpbmcgaW50byB0aGUgY2FsbAotICAgICAgICByZXN1bHQgPSBzZWxmLl9nZXRm
aXh0dXJldmFsdWUoZml4dHVyZWRlZikKLSAgICAgICAgc2VsZi5fZml4dHVyZV92YWx1ZXNbYXJn
bmFtZV0gPSByZXN1bHQKLSAgICAgICAgc2VsZi5fZml4dHVyZV9kZWZzW2FyZ25hbWVdID0gZml4
dHVyZWRlZgotICAgICAgICByZXR1cm4gZml4dHVyZWRlZgotCi0gICAgZGVmIF9nZXRfZml4dHVy
ZXN0YWNrKHNlbGYpOgotICAgICAgICBjdXJyZW50ID0gc2VsZgotICAgICAgICB2YWx1ZXMgPSBb
XQotICAgICAgICB3aGlsZSAxOgotICAgICAgICAgICAgZml4dHVyZWRlZiA9IGdldGF0dHIoY3Vy
cmVudCwgIl9maXh0dXJlZGVmIiwgTm9uZSkKLSAgICAgICAgICAgIGlmIGZpeHR1cmVkZWYgaXMg
Tm9uZToKLSAgICAgICAgICAgICAgICB2YWx1ZXMucmV2ZXJzZSgpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIHZhbHVlcwotICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChmaXh0dXJlZGVmKQotICAg
ICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQuX3BhcmVudF9yZXF1ZXN0Ci0KLSAgICBkZWYgX2dl
dGZpeHR1cmV2YWx1ZShzZWxmLCBmaXh0dXJlZGVmKToKLSAgICAgICAgIyBwcmVwYXJlIGEgc3Vi
cmVxdWVzdCBvYmplY3QgYmVmb3JlIGNhbGxpbmcgZml4dHVyZSBmdW5jdGlvbgotICAgICAgICAj
IChsYXR0ZXIgbWFuYWdlZCBieSBmaXh0dXJlZGVmKQotICAgICAgICBhcmduYW1lID0gZml4dHVy
ZWRlZi5hcmduYW1lCi0gICAgICAgIGZ1bmNpdGVtID0gc2VsZi5fcHlmdW5jaXRlbQotICAgICAg
ICBzY29wZSA9IGZpeHR1cmVkZWYuc2NvcGUKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcGFy
YW0gPSBmdW5jaXRlbS5jYWxsc3BlYy5nZXRwYXJhbShhcmduYW1lKQotICAgICAgICBleGNlcHQg
KEF0dHJpYnV0ZUVycm9yLCBWYWx1ZUVycm9yKToKLSAgICAgICAgICAgIHBhcmFtID0gTk9UU0VU
Ci0gICAgICAgICAgICBwYXJhbV9pbmRleCA9IDAKLSAgICAgICAgICAgIGlmIGZpeHR1cmVkZWYu
cGFyYW1zIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIGZyYW1lID0gaW5zcGVjdC5zdGFj
aygpWzNdCi0gICAgICAgICAgICAgICAgZnJhbWVpbmZvID0gaW5zcGVjdC5nZXRmcmFtZWluZm8o
ZnJhbWVbMF0pCi0gICAgICAgICAgICAgICAgc291cmNlX3BhdGggPSBmcmFtZWluZm8uZmlsZW5h
bWUKLSAgICAgICAgICAgICAgICBzb3VyY2VfbGluZW5vID0gZnJhbWVpbmZvLmxpbmVubwotICAg
ICAgICAgICAgICAgIHNvdXJjZV9wYXRoID0gcHkucGF0aC5sb2NhbChzb3VyY2VfcGF0aCkKLSAg
ICAgICAgICAgICAgICBpZiBzb3VyY2VfcGF0aC5yZWx0byhmdW5jaXRlbS5jb25maWcucm9vdGRp
cik6Ci0gICAgICAgICAgICAgICAgICAgIHNvdXJjZV9wYXRoID0gc291cmNlX3BhdGgucmVsdG8o
ZnVuY2l0ZW0uY29uZmlnLnJvb3RkaXIpCi0gICAgICAgICAgICAgICAgbXNnID0gKAotICAgICAg
ICAgICAgICAgICAgICAiVGhlIHJlcXVlc3RlZCBmaXh0dXJlIGhhcyBubyBwYXJhbWV0ZXIgZGVm
aW5lZCBmb3IgdGhlICIKLSAgICAgICAgICAgICAgICAgICAgImN1cnJlbnQgdGVzdC5cblxuUmVx
dWVzdGVkIGZpeHR1cmUgJ3swfScgZGVmaW5lZCBpbjpcbnsxfSIKLSAgICAgICAgICAgICAgICAg
ICAgIlxuXG5SZXF1ZXN0ZWQgaGVyZTpcbnsyfTp7M30iLmZvcm1hdCgKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGZpeHR1cmVkZWYuYXJnbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGdl
dGxvY2F0aW9uKGZpeHR1cmVkZWYuZnVuYywgZnVuY2l0ZW0uY29uZmlnLnJvb3RkaXIpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgc291cmNlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICBzb3VyY2VfbGluZW5vLAotICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAg
KQotICAgICAgICAgICAgICAgIGZhaWwobXNnKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAg
IyBpbmRpY2VzIG1pZ2h0IG5vdCBiZSBzZXQgaWYgb2xkLXN0eWxlIG1ldGFmdW5jLmFkZGNhbGwo
KSB3YXMgdXNlZAotICAgICAgICAgICAgcGFyYW1faW5kZXggPSBmdW5jaXRlbS5jYWxsc3BlYy5p
bmRpY2VzLmdldChhcmduYW1lLCAwKQotICAgICAgICAgICAgIyBpZiBhIHBhcmFtZXRyaXplIGlu
dm9jYXRpb24gc2V0IGEgc2NvcGUgaXQgd2lsbCBvdmVycmlkZQotICAgICAgICAgICAgIyB0aGUg
c3RhdGljIHNjb3BlIGRlZmluZWQgd2l0aCB0aGUgZml4dHVyZSBmdW5jdGlvbgotICAgICAgICAg
ICAgcGFyYW1zY29wZW51bSA9IGZ1bmNpdGVtLmNhbGxzcGVjLl9hcmcyc2NvcGVudW0uZ2V0KGFy
Z25hbWUpCi0gICAgICAgICAgICBpZiBwYXJhbXNjb3BlbnVtIGlzIG5vdCBOb25lOgotICAgICAg
ICAgICAgICAgIHNjb3BlID0gc2NvcGVzW3BhcmFtc2NvcGVudW1dCi0KLSAgICAgICAgc3VicmVx
dWVzdCA9IFN1YlJlcXVlc3Qoc2VsZiwgc2NvcGUsIHBhcmFtLCBwYXJhbV9pbmRleCwgZml4dHVy
ZWRlZikKLQotICAgICAgICAjIGNoZWNrIGlmIGEgaGlnaGVyLWxldmVsIHNjb3BlZCBmaXh0dXJl
IGFjY2Vzc2VzIGEgbG93ZXIgbGV2ZWwgb25lCi0gICAgICAgIHN1YnJlcXVlc3QuX2NoZWNrX3Nj
b3BlKGFyZ25hbWUsIHNlbGYuc2NvcGUsIHNjb3BlKQotCi0gICAgICAgICMgY2xlYXIgc3lzLmV4
Y19pbmZvIGJlZm9yZSBpbnZva2luZyB0aGUgZml4dHVyZSAocHl0aG9uIGJ1Zz8pCi0gICAgICAg
ICMgaWYgaXRzIG5vdCBleHBsaWNpdGx5IGNsZWFyZWQgaXQgd2lsbCBsZWFrIGludG8gdGhlIGNh
bGwKLSAgICAgICAgZXhjX2NsZWFyKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgIyBjYWxs
IHRoZSBmaXh0dXJlIGZ1bmN0aW9uCi0gICAgICAgICAgICB2YWwgPSBmaXh0dXJlZGVmLmV4ZWN1
dGUocmVxdWVzdD1zdWJyZXF1ZXN0KQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgIyBp
ZiBmaXh0dXJlIGZ1bmN0aW9uIGZhaWxlZCBpdCBtaWdodCBoYXZlIHJlZ2lzdGVyZWQgZmluYWxp
emVycwotICAgICAgICAgICAgc2VsZi5zZXNzaW9uLl9zZXR1cHN0YXRlLmFkZGZpbmFsaXplcihm
dW5jdG9vbHMucGFydGlhbChmaXh0dXJlZGVmLmZpbmlzaCwgcmVxdWVzdD1zdWJyZXF1ZXN0KSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VicmVx
dWVzdC5ub2RlKQotICAgICAgICByZXR1cm4gdmFsCi0KLSAgICBkZWYgX2NoZWNrX3Njb3BlKHNl
bGYsIGFyZ25hbWUsIGludm9raW5nX3Njb3BlLCByZXF1ZXN0ZWRfc2NvcGUpOgotICAgICAgICBp
ZiBhcmduYW1lID09ICJyZXF1ZXN0IjoKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBpZiBz
Y29wZW1pc21hdGNoKGludm9raW5nX3Njb3BlLCByZXF1ZXN0ZWRfc2NvcGUpOgotICAgICAgICAg
ICAgIyB0cnkgdG8gcmVwb3J0IHNvbWV0aGluZyBoZWxwZnVsCi0gICAgICAgICAgICBsaW5lcyA9
IHNlbGYuX2ZhY3Rvcnl0cmFjZWJhY2soKQotICAgICAgICAgICAgZmFpbCgiU2NvcGVNaXNtYXRj
aDogWW91IHRyaWVkIHRvIGFjY2VzcyB0aGUgJXIgc2NvcGVkICIKLSAgICAgICAgICAgICAgICAg
ImZpeHR1cmUgJXIgd2l0aCBhICVyIHNjb3BlZCByZXF1ZXN0IG9iamVjdCwgIgotICAgICAgICAg
ICAgICAgICAiaW52b2x2ZWQgZmFjdG9yaWVzXG4lcyIgJSAoCi0gICAgICAgICAgICAgICAgICAg
ICAocmVxdWVzdGVkX3Njb3BlLCBhcmduYW1lLCBpbnZva2luZ19zY29wZSwgIlxuIi5qb2luKGxp
bmVzKSkpLAotICAgICAgICAgICAgICAgICBweXRyYWNlPUZhbHNlKQotCi0gICAgZGVmIF9mYWN0
b3J5dHJhY2ViYWNrKHNlbGYpOgotICAgICAgICBsaW5lcyA9IFtdCi0gICAgICAgIGZvciBmaXh0
dXJlZGVmIGluIHNlbGYuX2dldF9maXh0dXJlc3RhY2soKToKLSAgICAgICAgICAgIGZhY3Rvcnkg
PSBmaXh0dXJlZGVmLmZ1bmMKLSAgICAgICAgICAgIGZzLCBsaW5lbm8gPSBnZXRmc2xpbmVubyhm
YWN0b3J5KQotICAgICAgICAgICAgcCA9IHNlbGYuX3B5ZnVuY2l0ZW0uc2Vzc2lvbi5mc3BhdGgu
YmVzdHJlbHBhdGgoZnMpCi0gICAgICAgICAgICBhcmdzID0gX2Zvcm1hdF9hcmdzKGZhY3Rvcnkp
Ci0gICAgICAgICAgICBsaW5lcy5hcHBlbmQoIiVzOiVkOiAgZGVmICVzJXMiICUgKAotICAgICAg
ICAgICAgICAgIHAsIGxpbmVubywgZmFjdG9yeS5fX25hbWVfXywgYXJncykpCi0gICAgICAgIHJl
dHVybiBsaW5lcwotCi0gICAgZGVmIF9nZXRzY29wZWl0ZW0oc2VsZiwgc2NvcGUpOgotICAgICAg
ICBpZiBzY29wZSA9PSAiZnVuY3Rpb24iOgotICAgICAgICAgICAgIyB0aGlzIG1pZ2h0IGFsc28g
YmUgYSBub24tZnVuY3Rpb24gSXRlbSBkZXNwaXRlIGl0cyBhdHRyaWJ1dGUgbmFtZQotICAgICAg
ICAgICAgcmV0dXJuIHNlbGYuX3B5ZnVuY2l0ZW0KLSAgICAgICAgbm9kZSA9IGdldF9zY29wZV9u
b2RlKHNlbGYuX3B5ZnVuY2l0ZW0sIHNjb3BlKQotICAgICAgICBpZiBub2RlIGlzIE5vbmUgYW5k
IHNjb3BlID09ICJjbGFzcyI6Ci0gICAgICAgICAgICAjIGZhbGxiYWNrIHRvIGZ1bmN0aW9uIGl0
ZW0gaXRzZWxmCi0gICAgICAgICAgICBub2RlID0gc2VsZi5fcHlmdW5jaXRlbQotICAgICAgICBh
c3NlcnQgbm9kZSwgJ0NvdWxkIG5vdCBvYnRhaW4gYSBub2RlIGZvciBzY29wZSAie30iIGZvciBm
dW5jdGlvbiB7IXJ9Jy5mb3JtYXQoc2NvcGUsIHNlbGYuX3B5ZnVuY2l0ZW0pCi0gICAgICAgIHJl
dHVybiBub2RlCi0KLSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiPEZp
eHR1cmVSZXF1ZXN0IGZvciAlcj4iICUgKHNlbGYubm9kZSkKLQotCi1jbGFzcyBTdWJSZXF1ZXN0
KEZpeHR1cmVSZXF1ZXN0KToKLSAgICAiIiIgYSBzdWIgcmVxdWVzdCBmb3IgaGFuZGxpbmcgZ2V0
dGluZyBhIGZpeHR1cmUgZnJvbSBhCi0gICAgdGVzdCBmdW5jdGlvbi9maXh0dXJlLiAiIiIKLQot
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0LCBzY29wZSwgcGFyYW0sIHBhcmFtX2luZGV4
LCBmaXh0dXJlZGVmKToKLSAgICAgICAgc2VsZi5fcGFyZW50X3JlcXVlc3QgPSByZXF1ZXN0Ci0g
ICAgICAgIHNlbGYuZml4dHVyZW5hbWUgPSBmaXh0dXJlZGVmLmFyZ25hbWUKLSAgICAgICAgaWYg
cGFyYW0gaXMgbm90IE5PVFNFVDoKLSAgICAgICAgICAgIHNlbGYucGFyYW0gPSBwYXJhbQotICAg
ICAgICBzZWxmLnBhcmFtX2luZGV4ID0gcGFyYW1faW5kZXgKLSAgICAgICAgc2VsZi5zY29wZSA9
IHNjb3BlCi0gICAgICAgIHNlbGYuX2ZpeHR1cmVkZWYgPSBmaXh0dXJlZGVmCi0gICAgICAgIHNl
bGYuX3B5ZnVuY2l0ZW0gPSByZXF1ZXN0Ll9weWZ1bmNpdGVtCi0gICAgICAgIHNlbGYuX2ZpeHR1
cmVfdmFsdWVzID0gcmVxdWVzdC5fZml4dHVyZV92YWx1ZXMKLSAgICAgICAgc2VsZi5fZml4dHVy
ZV9kZWZzID0gcmVxdWVzdC5fZml4dHVyZV9kZWZzCi0gICAgICAgIHNlbGYuX2FyZzJmaXh0dXJl
ZGVmcyA9IHJlcXVlc3QuX2FyZzJmaXh0dXJlZGVmcwotICAgICAgICBzZWxmLl9hcmcyaW5kZXgg
PSByZXF1ZXN0Ll9hcmcyaW5kZXgKLSAgICAgICAgc2VsZi5fZml4dHVyZW1hbmFnZXIgPSByZXF1
ZXN0Ll9maXh0dXJlbWFuYWdlcgotCi0gICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICBy
ZXR1cm4gIjxTdWJSZXF1ZXN0ICVyIGZvciAlcj4iICUgKHNlbGYuZml4dHVyZW5hbWUsIHNlbGYu
X3B5ZnVuY2l0ZW0pCi0KLSAgICBkZWYgYWRkZmluYWxpemVyKHNlbGYsIGZpbmFsaXplcik6Ci0g
ICAgICAgIHNlbGYuX2ZpeHR1cmVkZWYuYWRkZmluYWxpemVyKGZpbmFsaXplcikKLQotCi1jbGFz
cyBTY29wZU1pc21hdGNoRXJyb3IoRXhjZXB0aW9uKToKLSAgICAiIiIgQSBmaXh0dXJlIGZ1bmN0
aW9uIHRyaWVzIHRvIHVzZSBhIGRpZmZlcmVudCBmaXh0dXJlIGZ1bmN0aW9uIHdoaWNoCi0gICAg
d2hpY2ggaGFzIGEgbG93ZXIgc2NvcGUgKGUuZy4gYSBTZXNzaW9uIG9uZSBjYWxscyBhIGZ1bmN0
aW9uIG9uZSkKLSAgICAiIiIKLQotCi1zY29wZXMgPSAic2Vzc2lvbiBtb2R1bGUgY2xhc3MgZnVu
Y3Rpb24iLnNwbGl0KCkKLXNjb3BlbnVtX2Z1bmN0aW9uID0gc2NvcGVzLmluZGV4KCJmdW5jdGlv
biIpCi0KLQotZGVmIHNjb3BlbWlzbWF0Y2goY3VycmVudHNjb3BlLCBuZXdzY29wZSk6Ci0gICAg
cmV0dXJuIHNjb3Blcy5pbmRleChuZXdzY29wZSkgPiBzY29wZXMuaW5kZXgoY3VycmVudHNjb3Bl
KQotCi0KLWRlZiBzY29wZTJpbmRleChzY29wZSwgZGVzY3IsIHdoZXJlPU5vbmUpOgotICAgICIi
Ikxvb2sgdXAgdGhlIGluZGV4IG9mIGBgc2NvcGVgYCBhbmQgcmFpc2UgYSBkZXNjcmlwdGl2ZSB2
YWx1ZSBlcnJvcgotICAgIGlmIG5vdCBkZWZpbmVkLgotICAgICIiIgotICAgIHRyeToKLSAgICAg
ICAgcmV0dXJuIHNjb3Blcy5pbmRleChzY29wZSkKLSAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAg
ICAgICAgcmFpc2UgVmFsdWVFcnJvcigKLSAgICAgICAgICAgICJ7MH0gezF9aGFzIGFuIHVuc3Vw
cG9ydGVkIHNjb3BlIHZhbHVlICd7Mn0nIi5mb3JtYXQoCi0gICAgICAgICAgICAgICAgZGVzY3Is
ICdmcm9tIHswfSAnLmZvcm1hdCh3aGVyZSkgaWYgd2hlcmUgZWxzZSAnJywKLSAgICAgICAgICAg
ICAgICBzY29wZSkKLSAgICAgICAgKQotCi0KLWNsYXNzIEZpeHR1cmVMb29rdXBFcnJvcihMb29r
dXBFcnJvcik6Ci0gICAgIiIiIGNvdWxkIG5vdCByZXR1cm4gYSByZXF1ZXN0ZWQgRml4dHVyZSAo
bWlzc2luZyBvciBpbnZhbGlkKS4gIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgYXJnbmFt
ZSwgcmVxdWVzdCwgbXNnPU5vbmUpOgotICAgICAgICBzZWxmLmFyZ25hbWUgPSBhcmduYW1lCi0g
ICAgICAgIHNlbGYucmVxdWVzdCA9IHJlcXVlc3QKLSAgICAgICAgc2VsZi5maXh0dXJlc3RhY2sg
PSByZXF1ZXN0Ll9nZXRfZml4dHVyZXN0YWNrKCkKLSAgICAgICAgc2VsZi5tc2cgPSBtc2cKLQot
ICAgIGRlZiBmb3JtYXRyZXByKHNlbGYpOgotICAgICAgICB0YmxpbmVzID0gW10KLSAgICAgICAg
YWRkbGluZSA9IHRibGluZXMuYXBwZW5kCi0gICAgICAgIHN0YWNrID0gW3NlbGYucmVxdWVzdC5f
cHlmdW5jaXRlbS5vYmpdCi0gICAgICAgIHN0YWNrLmV4dGVuZChtYXAobGFtYmRhIHg6IHguZnVu
Yywgc2VsZi5maXh0dXJlc3RhY2spKQotICAgICAgICBtc2cgPSBzZWxmLm1zZwotICAgICAgICBp
ZiBtc2cgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAjIHRoZSBsYXN0IGZpeHR1cmUgcmFpc2Ug
YW4gZXJyb3IsIGxldCdzIHByZXNlbnQKLSAgICAgICAgICAgICMgaXQgYXQgdGhlIHJlcXVlc3Rp
bmcgc2lkZQotICAgICAgICAgICAgc3RhY2sgPSBzdGFja1s6LTFdCi0gICAgICAgIGZvciBmdW5j
dGlvbiBpbiBzdGFjazoKLSAgICAgICAgICAgIGZzcGF0aCwgbGluZW5vID0gZ2V0ZnNsaW5lbm8o
ZnVuY3Rpb24pCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgbGluZXMsIF8gPSBp
bnNwZWN0LmdldHNvdXJjZWxpbmVzKGdldF9yZWFsX2Z1bmMoZnVuY3Rpb24pKQotICAgICAgICAg
ICAgZXhjZXB0IChJT0Vycm9yLCBJbmRleEVycm9yLCBUeXBlRXJyb3IpOgotICAgICAgICAgICAg
ICAgIGVycm9yX21zZyA9ICJmaWxlICVzLCBsaW5lICVzOiBzb3VyY2UgY29kZSBub3QgYXZhaWxh
YmxlIgotICAgICAgICAgICAgICAgIGFkZGxpbmUoZXJyb3JfbXNnICUgKGZzcGF0aCwgbGluZW5v
ICsgMSkpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGFkZGxpbmUoImZpbGUg
JXMsIGxpbmUgJXMiICUgKGZzcGF0aCwgbGluZW5vICsgMSkpCi0gICAgICAgICAgICAgICAgZm9y
IGksIGxpbmUgaW4gZW51bWVyYXRlKGxpbmVzKToKLSAgICAgICAgICAgICAgICAgICAgbGluZSA9
IGxpbmUucnN0cmlwKCkKLSAgICAgICAgICAgICAgICAgICAgYWRkbGluZSgiICAiICsgbGluZSkK
LSAgICAgICAgICAgICAgICAgICAgaWYgbGluZS5sc3RyaXAoKS5zdGFydHN3aXRoKCdkZWYnKToK
LSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0KLSAgICAgICAgaWYgbXNnIGlzIE5vbmU6
Ci0gICAgICAgICAgICBmbSA9IHNlbGYucmVxdWVzdC5fZml4dHVyZW1hbmFnZXIKLSAgICAgICAg
ICAgIGF2YWlsYWJsZSA9IFtdCi0gICAgICAgICAgICBwYXJlbnRpZCA9IHNlbGYucmVxdWVzdC5f
cHlmdW5jaXRlbS5wYXJlbnQubm9kZWlkCi0gICAgICAgICAgICBmb3IgbmFtZSwgZml4dHVyZWRl
ZnMgaW4gZm0uX2FyZzJmaXh0dXJlZGVmcy5pdGVtcygpOgotICAgICAgICAgICAgICAgIGZhY2xp
c3QgPSBsaXN0KGZtLl9tYXRjaGZhY3RvcmllcyhmaXh0dXJlZGVmcywgcGFyZW50aWQpKQotICAg
ICAgICAgICAgICAgIGlmIGZhY2xpc3QgYW5kIG5hbWUgbm90IGluIGF2YWlsYWJsZToKLSAgICAg
ICAgICAgICAgICAgICAgYXZhaWxhYmxlLmFwcGVuZChuYW1lKQotICAgICAgICAgICAgbXNnID0g
ImZpeHR1cmUgJXIgbm90IGZvdW5kIiAlIChzZWxmLmFyZ25hbWUsKQotICAgICAgICAgICAgbXNn
ICs9ICJcbiBhdmFpbGFibGUgZml4dHVyZXM6ICVzIiAlICgiLCAiLmpvaW4oc29ydGVkKGF2YWls
YWJsZSkpLCkKLSAgICAgICAgICAgIG1zZyArPSAiXG4gdXNlICdweXRlc3QgLS1maXh0dXJlcyBb
dGVzdHBhdGhdJyBmb3IgaGVscCBvbiB0aGVtLiIKLQotICAgICAgICByZXR1cm4gRml4dHVyZUxv
b2t1cEVycm9yUmVwcihmc3BhdGgsIGxpbmVubywgdGJsaW5lcywgbXNnLCBzZWxmLmFyZ25hbWUp
Ci0KLQotY2xhc3MgRml4dHVyZUxvb2t1cEVycm9yUmVwcihUZXJtaW5hbFJlcHIpOgotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgZmlyc3RsaW5lbm8sIHRibGluZXMsIGVycm9yc3Ry
aW5nLCBhcmduYW1lKToKLSAgICAgICAgc2VsZi50YmxpbmVzID0gdGJsaW5lcwotICAgICAgICBz
ZWxmLmVycm9yc3RyaW5nID0gZXJyb3JzdHJpbmcKLSAgICAgICAgc2VsZi5maWxlbmFtZSA9IGZp
bGVuYW1lCi0gICAgICAgIHNlbGYuZmlyc3RsaW5lbm8gPSBmaXJzdGxpbmVubwotICAgICAgICBz
ZWxmLmFyZ25hbWUgPSBhcmduYW1lCi0KLSAgICBkZWYgdG90ZXJtaW5hbChzZWxmLCB0dyk6Ci0g
ICAgICAgICMgdHcubGluZSgiRml4dHVyZUxvb2t1cEVycm9yOiAlcyIgJShzZWxmLmFyZ25hbWUp
LCByZWQ9VHJ1ZSkKLSAgICAgICAgZm9yIHRibGluZSBpbiBzZWxmLnRibGluZXM6Ci0gICAgICAg
ICAgICB0dy5saW5lKHRibGluZS5yc3RyaXAoKSkKLSAgICAgICAgbGluZXMgPSBzZWxmLmVycm9y
c3RyaW5nLnNwbGl0KCJcbiIpCi0gICAgICAgIGlmIGxpbmVzOgotICAgICAgICAgICAgdHcubGlu
ZSgnezB9ICAgICAgIHsxfScuZm9ybWF0KEZvcm1hdHRlZEV4Y2luZm8uZmFpbF9tYXJrZXIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZXNbMF0uc3RyaXAo
KSksIHJlZD1UcnVlKQotICAgICAgICAgICAgZm9yIGxpbmUgaW4gbGluZXNbMTpdOgotICAgICAg
ICAgICAgICAgIHR3LmxpbmUoJ3swfSAgICAgICB7MX0nLmZvcm1hdChGb3JtYXR0ZWRFeGNpbmZv
LmZsb3dfbWFya2VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBsaW5lLnN0cmlwKCkpLCByZWQ9VHJ1ZSkKLSAgICAgICAgdHcubGluZSgpCi0gICAgICAg
IHR3LmxpbmUoIiVzOiVkIiAlIChzZWxmLmZpbGVuYW1lLCBzZWxmLmZpcnN0bGluZW5vICsgMSkp
Ci0KLQotZGVmIGZhaWxfZml4dHVyZWZ1bmMoZml4dHVyZWZ1bmMsIG1zZyk6Ci0gICAgZnMsIGxp
bmVubyA9IGdldGZzbGluZW5vKGZpeHR1cmVmdW5jKQotICAgIGxvY2F0aW9uID0gIiVzOiVzIiAl
IChmcywgbGluZW5vICsgMSkKLSAgICBzb3VyY2UgPSBfcHl0ZXN0Ll9jb2RlLlNvdXJjZShmaXh0
dXJlZnVuYykKLSAgICBmYWlsKG1zZyArICI6XG5cbiIgKyBzdHIoc291cmNlLmluZGVudCgpKSAr
ICJcbiIgKyBsb2NhdGlvbiwKLSAgICAgICAgIHB5dHJhY2U9RmFsc2UpCi0KLQotZGVmIGNhbGxf
Zml4dHVyZV9mdW5jKGZpeHR1cmVmdW5jLCByZXF1ZXN0LCBrd2FyZ3MpOgotICAgIHlpZWxkY3R4
ID0gaXNfZ2VuZXJhdG9yKGZpeHR1cmVmdW5jKQotICAgIGlmIHlpZWxkY3R4OgotICAgICAgICBp
dCA9IGZpeHR1cmVmdW5jKCoqa3dhcmdzKQotICAgICAgICByZXMgPSBuZXh0KGl0KQotCi0gICAg
ICAgIGRlZiB0ZWFyZG93bigpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG5l
eHQoaXQpCi0gICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKLSAgICAgICAgICAgICAg
ICBwYXNzCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGZhaWxfZml4dHVyZWZ1
bmMoZml4dHVyZWZ1bmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieWllbGRf
Zml4dHVyZSBmdW5jdGlvbiBoYXMgbW9yZSB0aGFuIG9uZSAneWllbGQnIikKLQotICAgICAgICBy
ZXF1ZXN0LmFkZGZpbmFsaXplcih0ZWFyZG93bikKLSAgICBlbHNlOgotICAgICAgICByZXMgPSBm
aXh0dXJlZnVuYygqKmt3YXJncykKLSAgICByZXR1cm4gcmVzCi0KLQotY2xhc3MgRml4dHVyZURl
ZjoKLSAgICAiIiIgQSBjb250YWluZXIgZm9yIGEgZmFjdG9yeSBkZWZpbml0aW9uLiAiIiIKLQot
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaXh0dXJlbWFuYWdlciwgYmFzZWlkLCBhcmduYW1lLCBm
dW5jLCBzY29wZSwgcGFyYW1zLAotICAgICAgICAgICAgICAgICB1bml0dGVzdD1GYWxzZSwgaWRz
PU5vbmUpOgotICAgICAgICBzZWxmLl9maXh0dXJlbWFuYWdlciA9IGZpeHR1cmVtYW5hZ2VyCi0g
ICAgICAgIHNlbGYuYmFzZWlkID0gYmFzZWlkIG9yICcnCi0gICAgICAgIHNlbGYuaGFzX2xvY2F0
aW9uID0gYmFzZWlkIGlzIG5vdCBOb25lCi0gICAgICAgIHNlbGYuZnVuYyA9IGZ1bmMKLSAgICAg
ICAgc2VsZi5hcmduYW1lID0gYXJnbmFtZQotICAgICAgICBzZWxmLnNjb3BlID0gc2NvcGUKLSAg
ICAgICAgc2VsZi5zY29wZW51bSA9IHNjb3BlMmluZGV4KAotICAgICAgICAgICAgc2NvcGUgb3Ig
ImZ1bmN0aW9uIiwKLSAgICAgICAgICAgIGRlc2NyPSdmaXh0dXJlIHswfScuZm9ybWF0KGZ1bmMu
X19uYW1lX18pLAotICAgICAgICAgICAgd2hlcmU9YmFzZWlkCi0gICAgICAgICkKLSAgICAgICAg
c2VsZi5wYXJhbXMgPSBwYXJhbXMKLSAgICAgICAgc2VsZi5hcmduYW1lcyA9IGdldGZ1bmNhcmdu
YW1lcyhmdW5jLCBpc19tZXRob2Q9dW5pdHRlc3QpCi0gICAgICAgIHNlbGYudW5pdHRlc3QgPSB1
bml0dGVzdAotICAgICAgICBzZWxmLmlkcyA9IGlkcwotICAgICAgICBzZWxmLl9maW5hbGl6ZXJz
ID0gW10KLQotICAgIGRlZiBhZGRmaW5hbGl6ZXIoc2VsZiwgZmluYWxpemVyKToKLSAgICAgICAg
c2VsZi5fZmluYWxpemVycy5hcHBlbmQoZmluYWxpemVyKQotCi0gICAgZGVmIGZpbmlzaChzZWxm
LCByZXF1ZXN0KToKLSAgICAgICAgZXhjZXB0aW9ucyA9IFtdCi0gICAgICAgIHRyeToKLSAgICAg
ICAgICAgIHdoaWxlIHNlbGYuX2ZpbmFsaXplcnM6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgICAgICAgICBmdW5jID0gc2VsZi5fZmluYWxpemVycy5wb3AoKQotICAgICAgICAg
ICAgICAgICAgICBmdW5jKCkKLSAgICAgICAgICAgICAgICBleGNlcHQ6ICAjIG5vcWEKLSAgICAg
ICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5hcHBlbmQoc3lzLmV4Y19pbmZvKCkpCi0gICAgICAg
ICAgICBpZiBleGNlcHRpb25zOgotICAgICAgICAgICAgICAgIGUgPSBleGNlcHRpb25zWzBdCi0g
ICAgICAgICAgICAgICAgZGVsIGV4Y2VwdGlvbnMgICMgZW5zdXJlIHdlIGRvbid0IGtlZXAgYWxs
IGZyYW1lcyBhbGl2ZSBiZWNhdXNlIG9mIHRoZSB0cmFjZWJhY2sKLSAgICAgICAgICAgICAgICBw
eS5idWlsdGluLl9yZXJhaXNlKCplKQotCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBo
b29rID0gc2VsZi5fZml4dHVyZW1hbmFnZXIuc2Vzc2lvbi5nZXRob29rcHJveHkocmVxdWVzdC5u
b2RlLmZzcGF0aCkKLSAgICAgICAgICAgIGhvb2sucHl0ZXN0X2ZpeHR1cmVfcG9zdF9maW5hbGl6
ZXIoZml4dHVyZWRlZj1zZWxmLCByZXF1ZXN0PXJlcXVlc3QpCi0gICAgICAgICAgICAjIGV2ZW4g
aWYgZmluYWxpemF0aW9uIGZhaWxzLCB3ZSBpbnZhbGlkYXRlCi0gICAgICAgICAgICAjIHRoZSBj
YWNoZWQgZml4dHVyZSB2YWx1ZSBhbmQgcmVtb3ZlCi0gICAgICAgICAgICAjIGFsbCBmaW5hbGl6
ZXJzIGJlY2F1c2UgdGhleSBtYXkgYmUgYm91bmQgbWV0aG9kcyB3aGljaCB3aWxsCi0gICAgICAg
ICAgICAjIGtlZXAgaW5zdGFuY2VzIGFsaXZlCi0gICAgICAgICAgICBpZiBoYXNhdHRyKHNlbGYs
ICJjYWNoZWRfcmVzdWx0Iik6Ci0gICAgICAgICAgICAgICAgZGVsIHNlbGYuY2FjaGVkX3Jlc3Vs
dAotICAgICAgICAgICAgc2VsZi5fZmluYWxpemVycyA9IFtdCi0KLSAgICBkZWYgZXhlY3V0ZShz
ZWxmLCByZXF1ZXN0KToKLSAgICAgICAgIyBnZXQgcmVxdWlyZWQgYXJndW1lbnRzIGFuZCByZWdp
c3RlciBvdXIgb3duIGZpbmlzaCgpCi0gICAgICAgICMgd2l0aCB0aGVpciBmaW5hbGl6YXRpb24K
LSAgICAgICAgZm9yIGFyZ25hbWUgaW4gc2VsZi5hcmduYW1lczoKLSAgICAgICAgICAgIGZpeHR1
cmVkZWYgPSByZXF1ZXN0Ll9nZXRfYWN0aXZlX2ZpeHR1cmVkZWYoYXJnbmFtZSkKLSAgICAgICAg
ICAgIGlmIGFyZ25hbWUgIT0gInJlcXVlc3QiOgotICAgICAgICAgICAgICAgIGZpeHR1cmVkZWYu
YWRkZmluYWxpemVyKGZ1bmN0b29scy5wYXJ0aWFsKHNlbGYuZmluaXNoLCByZXF1ZXN0PXJlcXVl
c3QpKQotCi0gICAgICAgIG15X2NhY2hlX2tleSA9IHJlcXVlc3QucGFyYW1faW5kZXgKLSAgICAg
ICAgY2FjaGVkX3Jlc3VsdCA9IGdldGF0dHIoc2VsZiwgImNhY2hlZF9yZXN1bHQiLCBOb25lKQot
ICAgICAgICBpZiBjYWNoZWRfcmVzdWx0IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcmVzdWx0
LCBjYWNoZV9rZXksIGVyciA9IGNhY2hlZF9yZXN1bHQKLSAgICAgICAgICAgIGlmIG15X2NhY2hl
X2tleSA9PSBjYWNoZV9rZXk6Ci0gICAgICAgICAgICAgICAgaWYgZXJyIGlzIG5vdCBOb25lOgot
ICAgICAgICAgICAgICAgICAgICBweS5idWlsdGluLl9yZXJhaXNlKCplcnIpCi0gICAgICAgICAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAotICAgICAgICAg
ICAgIyB3ZSBoYXZlIGEgcHJldmlvdXMgYnV0IGRpZmZlcmVudGx5IHBhcmFtZXRyaXplZCBmaXh0
dXJlIGluc3RhbmNlCi0gICAgICAgICAgICAjIHNvIHdlIG5lZWQgdG8gdGVhciBpdCBkb3duIGJl
Zm9yZSBjcmVhdGluZyBhIG5ldyBvbmUKLSAgICAgICAgICAgIHNlbGYuZmluaXNoKHJlcXVlc3Qp
Ci0gICAgICAgICAgICBhc3NlcnQgbm90IGhhc2F0dHIoc2VsZiwgImNhY2hlZF9yZXN1bHQiKQot
Ci0gICAgICAgIGhvb2sgPSBzZWxmLl9maXh0dXJlbWFuYWdlci5zZXNzaW9uLmdldGhvb2twcm94
eShyZXF1ZXN0Lm5vZGUuZnNwYXRoKQotICAgICAgICByZXR1cm4gaG9vay5weXRlc3RfZml4dHVy
ZV9zZXR1cChmaXh0dXJlZGVmPXNlbGYsIHJlcXVlc3Q9cmVxdWVzdCkKLQotICAgIGRlZiBfX3Jl
cHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICgiPEZpeHR1cmVEZWYgbmFtZT0lciBzY29wZT0l
ciBiYXNlaWQ9JXIgPiIgJQotICAgICAgICAgICAgICAgIChzZWxmLmFyZ25hbWUsIHNlbGYuc2Nv
cGUsIHNlbGYuYmFzZWlkKSkKLQotCi1kZWYgcHl0ZXN0X2ZpeHR1cmVfc2V0dXAoZml4dHVyZWRl
ZiwgcmVxdWVzdCk6Ci0gICAgIiIiIEV4ZWN1dGlvbiBvZiBmaXh0dXJlIHNldHVwLiAiIiIKLSAg
ICBrd2FyZ3MgPSB7fQotICAgIGZvciBhcmduYW1lIGluIGZpeHR1cmVkZWYuYXJnbmFtZXM6Ci0g
ICAgICAgIGZpeGRlZiA9IHJlcXVlc3QuX2dldF9hY3RpdmVfZml4dHVyZWRlZihhcmduYW1lKQot
ICAgICAgICByZXN1bHQsIGFyZ19jYWNoZV9rZXksIGV4YyA9IGZpeGRlZi5jYWNoZWRfcmVzdWx0
Ci0gICAgICAgIHJlcXVlc3QuX2NoZWNrX3Njb3BlKGFyZ25hbWUsIHJlcXVlc3Quc2NvcGUsIGZp
eGRlZi5zY29wZSkKLSAgICAgICAga3dhcmdzW2FyZ25hbWVdID0gcmVzdWx0Ci0KLSAgICBmaXh0
dXJlZnVuYyA9IGZpeHR1cmVkZWYuZnVuYwotICAgIGlmIGZpeHR1cmVkZWYudW5pdHRlc3Q6Ci0g
ICAgICAgIGlmIHJlcXVlc3QuaW5zdGFuY2UgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAjIGJp
bmQgdGhlIHVuYm91bmQgbWV0aG9kIHRvIHRoZSBUZXN0Q2FzZSBpbnN0YW5jZQotICAgICAgICAg
ICAgZml4dHVyZWZ1bmMgPSBmaXh0dXJlZGVmLmZ1bmMuX19nZXRfXyhyZXF1ZXN0Lmluc3RhbmNl
KQotICAgIGVsc2U6Ci0gICAgICAgICMgdGhlIGZpeHR1cmUgZnVuY3Rpb24gbmVlZHMgdG8gYmUg
Ym91bmQgdG8gdGhlIGFjdHVhbAotICAgICAgICAjIHJlcXVlc3QuaW5zdGFuY2Ugc28gdGhhdCBj
b2RlIHdvcmtpbmcgd2l0aCAiZml4dHVyZWRlZiIgYmVoYXZlcwotICAgICAgICAjIGFzIGV4cGVj
dGVkLgotICAgICAgICBpZiByZXF1ZXN0Lmluc3RhbmNlIGlzIG5vdCBOb25lOgotICAgICAgICAg
ICAgZml4dHVyZWZ1bmMgPSBnZXRpbWZ1bmMoZml4dHVyZWRlZi5mdW5jKQotICAgICAgICAgICAg
aWYgZml4dHVyZWZ1bmMgIT0gZml4dHVyZWRlZi5mdW5jOgotICAgICAgICAgICAgICAgIGZpeHR1
cmVmdW5jID0gZml4dHVyZWZ1bmMuX19nZXRfXyhyZXF1ZXN0Lmluc3RhbmNlKQotICAgIG15X2Nh
Y2hlX2tleSA9IHJlcXVlc3QucGFyYW1faW5kZXgKLSAgICB0cnk6Ci0gICAgICAgIHJlc3VsdCA9
IGNhbGxfZml4dHVyZV9mdW5jKGZpeHR1cmVmdW5jLCByZXF1ZXN0LCBrd2FyZ3MpCi0gICAgZXhj
ZXB0IFRFU1RfT1VUQ09NRToKLSAgICAgICAgZml4dHVyZWRlZi5jYWNoZWRfcmVzdWx0ID0gKE5v
bmUsIG15X2NhY2hlX2tleSwgc3lzLmV4Y19pbmZvKCkpCi0gICAgICAgIHJhaXNlCi0gICAgZml4
dHVyZWRlZi5jYWNoZWRfcmVzdWx0ID0gKHJlc3VsdCwgbXlfY2FjaGVfa2V5LCBOb25lKQotICAg
IHJldHVybiByZXN1bHQKLQotCi1kZWYgX2Vuc3VyZV9pbW11dGFibGVfaWRzKGlkcyk6Ci0gICAg
aWYgaWRzIGlzIE5vbmU6Ci0gICAgICAgIHJldHVybgotICAgIGlmIGNhbGxhYmxlKGlkcyk6Ci0g
ICAgICAgIHJldHVybiBpZHMKLSAgICByZXR1cm4gdHVwbGUoaWRzKQotCi0KLUBhdHRyLnMoZnJv
emVuPVRydWUpCi1jbGFzcyBGaXh0dXJlRnVuY3Rpb25NYXJrZXIob2JqZWN0KToKLSAgICBzY29w
ZSA9IGF0dHIuaWIoKQotICAgIHBhcmFtcyA9IGF0dHIuaWIoY29udmVydD1hdHRyLmNvbnZlcnRl
cnMub3B0aW9uYWwodHVwbGUpKQotICAgIGF1dG91c2UgPSBhdHRyLmliKGRlZmF1bHQ9RmFsc2Up
Ci0gICAgaWRzID0gYXR0ci5pYihkZWZhdWx0PU5vbmUsIGNvbnZlcnQ9X2Vuc3VyZV9pbW11dGFi
bGVfaWRzKQotICAgIG5hbWUgPSBhdHRyLmliKGRlZmF1bHQ9Tm9uZSkKLQotICAgIGRlZiBfX2Nh
bGxfXyhzZWxmLCBmdW5jdGlvbik6Ci0gICAgICAgIGlmIGlzY2xhc3MoZnVuY3Rpb24pOgotICAg
ICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKLSAgICAgICAgICAgICAgICAiY2xhc3MgZml4dHVy
ZXMgbm90IHN1cHBvcnRlZCAobWF5IGJlIGluIHRoZSBmdXR1cmUpIikKLSAgICAgICAgZnVuY3Rp
b24uX3B5dGVzdGZpeHR1cmVmdW5jdGlvbiA9IHNlbGYKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9u
Ci0KLQotZGVmIGZpeHR1cmUoc2NvcGU9ImZ1bmN0aW9uIiwgcGFyYW1zPU5vbmUsIGF1dG91c2U9
RmFsc2UsIGlkcz1Ob25lLCBuYW1lPU5vbmUpOgotICAgICIiIiAocmV0dXJuIGEpIGRlY29yYXRv
ciB0byBtYXJrIGEgZml4dHVyZSBmYWN0b3J5IGZ1bmN0aW9uLgotCi0gICAgVGhpcyBkZWNvcmF0
b3IgY2FuIGJlIHVzZWQgKHdpdGggb3Igd2l0aG91dCBwYXJhbWV0ZXJzKSB0byBkZWZpbmUgYQot
ICAgIGZpeHR1cmUgZnVuY3Rpb24uICBUaGUgbmFtZSBvZiB0aGUgZml4dHVyZSBmdW5jdGlvbiBj
YW4gbGF0ZXIgYmUKLSAgICByZWZlcmVuY2VkIHRvIGNhdXNlIGl0cyBpbnZvY2F0aW9uIGFoZWFk
IG9mIHJ1bm5pbmcgdGVzdHM6IHRlc3QKLSAgICBtb2R1bGVzIG9yIGNsYXNzZXMgY2FuIHVzZSB0
aGUgcHl0ZXN0Lm1hcmsudXNlZml4dHVyZXMoZml4dHVyZW5hbWUpCi0gICAgbWFya2VyLiAgVGVz
dCBmdW5jdGlvbnMgY2FuIGRpcmVjdGx5IHVzZSBmaXh0dXJlIG5hbWVzIGFzIGlucHV0Ci0gICAg
YXJndW1lbnRzIGluIHdoaWNoIGNhc2UgdGhlIGZpeHR1cmUgaW5zdGFuY2UgcmV0dXJuZWQgZnJv
bSB0aGUgZml4dHVyZQotICAgIGZ1bmN0aW9uIHdpbGwgYmUgaW5qZWN0ZWQuCi0KLSAgICA6YXJn
IHNjb3BlOiB0aGUgc2NvcGUgZm9yIHdoaWNoIHRoaXMgZml4dHVyZSBpcyBzaGFyZWQsIG9uZSBv
ZgotICAgICAgICAgICAgICAgICJmdW5jdGlvbiIgKGRlZmF1bHQpLCAiY2xhc3MiLCAibW9kdWxl
IiBvciAic2Vzc2lvbiIuCi0KLSAgICA6YXJnIHBhcmFtczogYW4gb3B0aW9uYWwgbGlzdCBvZiBw
YXJhbWV0ZXJzIHdoaWNoIHdpbGwgY2F1c2UgbXVsdGlwbGUKLSAgICAgICAgICAgICAgICBpbnZv
Y2F0aW9ucyBvZiB0aGUgZml4dHVyZSBmdW5jdGlvbiBhbmQgYWxsIG9mIHRoZSB0ZXN0cwotICAg
ICAgICAgICAgICAgIHVzaW5nIGl0LgotCi0gICAgOmFyZyBhdXRvdXNlOiBpZiBUcnVlLCB0aGUg
Zml4dHVyZSBmdW5jIGlzIGFjdGl2YXRlZCBmb3IgYWxsIHRlc3RzIHRoYXQKLSAgICAgICAgICAg
ICAgICBjYW4gc2VlIGl0LiAgSWYgRmFsc2UgKHRoZSBkZWZhdWx0KSB0aGVuIGFuIGV4cGxpY2l0
Ci0gICAgICAgICAgICAgICAgcmVmZXJlbmNlIGlzIG5lZWRlZCB0byBhY3RpdmF0ZSB0aGUgZml4
dHVyZS4KLQotICAgIDphcmcgaWRzOiBsaXN0IG9mIHN0cmluZyBpZHMgZWFjaCBjb3JyZXNwb25k
aW5nIHRvIHRoZSBwYXJhbXMKLSAgICAgICAgICAgICAgICBzbyB0aGF0IHRoZXkgYXJlIHBhcnQg
b2YgdGhlIHRlc3QgaWQuIElmIG5vIGlkcyBhcmUgcHJvdmlkZWQKLSAgICAgICAgICAgICAgICB0
aGV5IHdpbGwgYmUgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgZnJvbSB0aGUgcGFyYW1zLgotCi0g
ICAgOmFyZyBuYW1lOiB0aGUgbmFtZSBvZiB0aGUgZml4dHVyZS4gVGhpcyBkZWZhdWx0cyB0byB0
aGUgbmFtZSBvZiB0aGUKLSAgICAgICAgICAgICAgICBkZWNvcmF0ZWQgZnVuY3Rpb24uIElmIGEg
Zml4dHVyZSBpcyB1c2VkIGluIHRoZSBzYW1lIG1vZHVsZSBpbgotICAgICAgICAgICAgICAgIHdo
aWNoIGl0IGlzIGRlZmluZWQsIHRoZSBmdW5jdGlvbiBuYW1lIG9mIHRoZSBmaXh0dXJlIHdpbGwg
YmUKLSAgICAgICAgICAgICAgICBzaGFkb3dlZCBieSB0aGUgZnVuY3Rpb24gYXJnIHRoYXQgcmVx
dWVzdHMgdGhlIGZpeHR1cmU7IG9uZSB3YXkKLSAgICAgICAgICAgICAgICB0byByZXNvbHZlIHRo
aXMgaXMgdG8gbmFtZSB0aGUgZGVjb3JhdGVkIGZ1bmN0aW9uCi0gICAgICAgICAgICAgICAgYGBm
aXh0dXJlXzxmaXh0dXJlbmFtZT5gYCBhbmQgdGhlbiB1c2UKLSAgICAgICAgICAgICAgICBgYEBw
eXRlc3QuZml4dHVyZShuYW1lPSc8Zml4dHVyZW5hbWU+JylgYC4KLQotICAgIEZpeHR1cmVzIGNh
biBvcHRpb25hbGx5IHByb3ZpZGUgdGhlaXIgdmFsdWVzIHRvIHRlc3QgZnVuY3Rpb25zIHVzaW5n
IGEgYGB5aWVsZGBgIHN0YXRlbWVudCwKLSAgICBpbnN0ZWFkIG9mIGBgcmV0dXJuYGAuIEluIHRo
aXMgY2FzZSwgdGhlIGNvZGUgYmxvY2sgYWZ0ZXIgdGhlIGBgeWllbGRgYCBzdGF0ZW1lbnQgaXMg
ZXhlY3V0ZWQKLSAgICBhcyB0ZWFyZG93biBjb2RlIHJlZ2FyZGxlc3Mgb2YgdGhlIHRlc3Qgb3V0
Y29tZS4gQSBmaXh0dXJlIGZ1bmN0aW9uIG11c3QgeWllbGQgZXhhY3RseSBvbmNlLgotICAgICIi
IgotICAgIGlmIGNhbGxhYmxlKHNjb3BlKSBhbmQgcGFyYW1zIGlzIE5vbmUgYW5kIGF1dG91c2Ug
aXMgRmFsc2U6Ci0gICAgICAgICMgZGlyZWN0IGRlY29yYXRpb24KLSAgICAgICAgcmV0dXJuIEZp
eHR1cmVGdW5jdGlvbk1hcmtlcigKLSAgICAgICAgICAgICJmdW5jdGlvbiIsIHBhcmFtcywgYXV0
b3VzZSwgbmFtZT1uYW1lKShzY29wZSkKLSAgICBpZiBwYXJhbXMgaXMgbm90IE5vbmUgYW5kIG5v
dCBpc2luc3RhbmNlKHBhcmFtcywgKGxpc3QsIHR1cGxlKSk6Ci0gICAgICAgIHBhcmFtcyA9IGxp
c3QocGFyYW1zKQotICAgIHJldHVybiBGaXh0dXJlRnVuY3Rpb25NYXJrZXIoc2NvcGUsIHBhcmFt
cywgYXV0b3VzZSwgaWRzPWlkcywgbmFtZT1uYW1lKQotCi0KLWRlZiB5aWVsZF9maXh0dXJlKHNj
b3BlPSJmdW5jdGlvbiIsIHBhcmFtcz1Ob25lLCBhdXRvdXNlPUZhbHNlLCBpZHM9Tm9uZSwgbmFt
ZT1Ob25lKToKLSAgICAiIiIgKHJldHVybiBhKSBkZWNvcmF0b3IgdG8gbWFyayBhIHlpZWxkLWZp
eHR1cmUgZmFjdG9yeSBmdW5jdGlvbi4KLQotICAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjAKLSAgICAg
ICAgVXNlIDpweTpmdW5jOmBweXRlc3QuZml4dHVyZWAgZGlyZWN0bHkgaW5zdGVhZC4KLSAgICAi
IiIKLSAgICBpZiBjYWxsYWJsZShzY29wZSkgYW5kIHBhcmFtcyBpcyBOb25lIGFuZCBub3QgYXV0
b3VzZToKLSAgICAgICAgIyBkaXJlY3QgZGVjb3JhdGlvbgotICAgICAgICByZXR1cm4gRml4dHVy
ZUZ1bmN0aW9uTWFya2VyKAotICAgICAgICAgICAgImZ1bmN0aW9uIiwgcGFyYW1zLCBhdXRvdXNl
LCBpZHM9aWRzLCBuYW1lPW5hbWUpKHNjb3BlKQotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiBG
aXh0dXJlRnVuY3Rpb25NYXJrZXIoc2NvcGUsIHBhcmFtcywgYXV0b3VzZSwgaWRzPWlkcywgbmFt
ZT1uYW1lKQotCi0KLWRlZmF1bHRmdW5jYXJncHJlZml4bWFya2VyID0gZml4dHVyZSgpCi0KLQot
QGZpeHR1cmUoc2NvcGU9InNlc3Npb24iKQotZGVmIHB5dGVzdGNvbmZpZyhyZXF1ZXN0KToKLSAg
ICAiIiIgdGhlIHB5dGVzdCBjb25maWcgb2JqZWN0IHdpdGggYWNjZXNzIHRvIGNvbW1hbmQgbGlu
ZSBvcHRzLiIiIgotICAgIHJldHVybiByZXF1ZXN0LmNvbmZpZwotCi0KLWNsYXNzIEZpeHR1cmVN
YW5hZ2VyOgotICAgICIiIgotICAgIHB5dGVzdCBmaXh0dXJlcyBkZWZpbml0aW9ucyBhbmQgaW5m
b3JtYXRpb24gaXMgc3RvcmVkIGFuZCBtYW5hZ2VkCi0gICAgZnJvbSB0aGlzIGNsYXNzLgotCi0g
ICAgRHVyaW5nIGNvbGxlY3Rpb24gZm0ucGFyc2VmYWN0b3JpZXMoKSBpcyBjYWxsZWQgbXVsdGlw
bGUgdGltZXMgdG8gcGFyc2UKLSAgICBmaXh0dXJlIGZ1bmN0aW9uIGRlZmluaXRpb25zIGludG8g
Rml4dHVyZURlZiBvYmplY3RzIGFuZCBpbnRlcm5hbAotICAgIGRhdGEgc3RydWN0dXJlcy4KLQot
ICAgIER1cmluZyBjb2xsZWN0aW9uIG9mIHRlc3QgZnVuY3Rpb25zLCBtZXRhZnVuYy1tZWNoYW5p
Y3MgaW5zdGFudGlhdGUKLSAgICBhIEZ1bmNGaXh0dXJlSW5mbyBvYmplY3Qgd2hpY2ggaXMgY2Fj
aGVkIHBlciBub2RlL2Z1bmMtbmFtZS4KLSAgICBUaGlzIEZ1bmNGaXh0dXJlSW5mbyBvYmplY3Qg
aXMgbGF0ZXIgcmV0cmlldmVkIGJ5IEZ1bmN0aW9uIG5vZGVzCi0gICAgd2hpY2ggdGhlbXNlbHZl
cyBvZmZlciBhIGZpeHR1cmVuYW1lcyBhdHRyaWJ1dGUuCi0KLSAgICBUaGUgRnVuY0ZpeHR1cmVJ
bmZvIG9iamVjdCBob2xkcyBpbmZvcm1hdGlvbiBhYm91dCBmaXh0dXJlcyBhbmQgRml4dHVyZURl
ZnMKLSAgICByZWxldmFudCBmb3IgYSBwYXJ0aWN1bGFyIGZ1bmN0aW9uLiAgQW4gaW5pdGlhbCBs
aXN0IG9mIGZpeHR1cmVzIGlzCi0gICAgYXNzZW1ibGVkIGxpa2UgdGhpczoKLQotICAgIC0gaW5p
LWRlZmluZWQgdXNlZml4dHVyZXMKLSAgICAtIGF1dG91c2UtbWFya2VkIGZpeHR1cmVzIGFsb25n
IHRoZSBjb2xsZWN0aW9uIGNoYWluIHVwIGZyb20gdGhlIGZ1bmN0aW9uCi0gICAgLSB1c2VmaXh0
dXJlcyBtYXJrZXJzIGF0IG1vZHVsZS9jbGFzcy9mdW5jdGlvbiBsZXZlbAotICAgIC0gdGVzdCBm
dW5jdGlvbiBmdW5jYXJncwotCi0gICAgU3Vic2VxdWVudGx5IHRoZSBmdW5jZml4dHVyZWluZm8u
Zml4dHVyZW5hbWVzIGF0dHJpYnV0ZSBpcyBjb21wdXRlZAotICAgIGFzIHRoZSBjbG9zdXJlIG9m
IHRoZSBmaXh0dXJlcyBuZWVkZWQgdG8gc2V0dXAgdGhlIGluaXRpYWwgZml4dHVyZXMsCi0gICAg
aS4gZS4gZml4dHVyZXMgbmVlZGVkIGJ5IGZpeHR1cmUgZnVuY3Rpb25zIHRoZW1zZWx2ZXMgYXJl
IGFwcGVuZGVkCi0gICAgdG8gdGhlIGZpeHR1cmVuYW1lcyBsaXN0LgotCi0gICAgVXBvbiB0aGUg
dGVzdC1zZXR1cCBwaGFzZXMgYWxsIGZpeHR1cmVuYW1lcyBhcmUgaW5zdGFudGlhdGVkLCByZXRy
aWV2ZWQKLSAgICBieSBhIGxvb2t1cCBvZiB0aGVpciBGdW5jRml4dHVyZUluZm8uCi0gICAgIiIi
Ci0KLSAgICBfYXJncHJlZml4ID0gInB5dGVzdF9mdW5jYXJnX18iCi0gICAgRml4dHVyZUxvb2t1
cEVycm9yID0gRml4dHVyZUxvb2t1cEVycm9yCi0gICAgRml4dHVyZUxvb2t1cEVycm9yUmVwciA9
IEZpeHR1cmVMb29rdXBFcnJvclJlcHIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzZXNzaW9u
KToKLSAgICAgICAgc2VsZi5zZXNzaW9uID0gc2Vzc2lvbgotICAgICAgICBzZWxmLmNvbmZpZyA9
IHNlc3Npb24uY29uZmlnCi0gICAgICAgIHNlbGYuX2FyZzJmaXh0dXJlZGVmcyA9IHt9Ci0gICAg
ICAgIHNlbGYuX2hvbGRlcm9ianNlZW4gPSBzZXQoKQotICAgICAgICBzZWxmLl9hcmcyZmluaXNo
ID0ge30KLSAgICAgICAgc2VsZi5fbm9kZWlkX2FuZF9hdXRvdXNlbmFtZXMgPSBbKCIiLCBzZWxm
LmNvbmZpZy5nZXRpbmkoInVzZWZpeHR1cmVzIikpXQotICAgICAgICBzZXNzaW9uLmNvbmZpZy5w
bHVnaW5tYW5hZ2VyLnJlZ2lzdGVyKHNlbGYsICJmdW5jbWFuYWdlIikKLQotICAgIGRlZiBnZXRm
aXh0dXJlaW5mbyhzZWxmLCBub2RlLCBmdW5jLCBjbHMsIGZ1bmNhcmdzPVRydWUpOgotICAgICAg
ICBpZiBmdW5jYXJncyBhbmQgbm90IGhhc2F0dHIobm9kZSwgIm5vZnVuY2FyZ3MiKToKLSAgICAg
ICAgICAgIGFyZ25hbWVzID0gZ2V0ZnVuY2FyZ25hbWVzKGZ1bmMsIGNscz1jbHMpCi0gICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICBhcmduYW1lcyA9ICgpCi0gICAgICAgIHVzZWZpeHR1cmVzID0g
Z2V0YXR0cihmdW5jLCAidXNlZml4dHVyZXMiLCBOb25lKQotICAgICAgICBpbml0aWFsbmFtZXMg
PSBhcmduYW1lcwotICAgICAgICBpZiB1c2VmaXh0dXJlcyBpcyBub3QgTm9uZToKLSAgICAgICAg
ICAgIGluaXRpYWxuYW1lcyA9IHVzZWZpeHR1cmVzLmFyZ3MgKyBpbml0aWFsbmFtZXMKLSAgICAg
ICAgZm0gPSBub2RlLnNlc3Npb24uX2ZpeHR1cmVtYW5hZ2VyCi0gICAgICAgIG5hbWVzX2Nsb3N1
cmUsIGFyZzJmaXh0dXJlZGVmcyA9IGZtLmdldGZpeHR1cmVjbG9zdXJlKGluaXRpYWxuYW1lcywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbm9kZSkKLSAgICAgICAgcmV0dXJuIEZ1bmNGaXh0dXJlSW5mbyhhcmduYW1lcywgbmFt
ZXNfY2xvc3VyZSwgYXJnMmZpeHR1cmVkZWZzKQotCi0gICAgZGVmIHB5dGVzdF9wbHVnaW5fcmVn
aXN0ZXJlZChzZWxmLCBwbHVnaW4pOgotICAgICAgICBub2RlaWQgPSBOb25lCi0gICAgICAgIHRy
eToKLSAgICAgICAgICAgIHAgPSBweS5wYXRoLmxvY2FsKHBsdWdpbi5fX2ZpbGVfXykKLSAgICAg
ICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBlbHNl
OgotICAgICAgICAgICAgIyBjb25zdHJ1Y3QgdGhlIGJhc2Ugbm9kZWlkIHdoaWNoIGlzIGxhdGVy
IHVzZWQgdG8gY2hlY2sKLSAgICAgICAgICAgICMgd2hhdCBmaXh0dXJlcyBhcmUgdmlzaWJsZSBm
b3IgcGFydGljdWxhciB0ZXN0cyAoYXMgZGVub3RlZAotICAgICAgICAgICAgIyBieSB0aGVpciB0
ZXN0IGlkKQotICAgICAgICAgICAgaWYgcC5iYXNlbmFtZS5zdGFydHN3aXRoKCJjb25mdGVzdC5w
eSIpOgotICAgICAgICAgICAgICAgIG5vZGVpZCA9IHAuZGlycGF0aCgpLnJlbHRvKHNlbGYuY29u
ZmlnLnJvb3RkaXIpCi0gICAgICAgICAgICAgICAgaWYgcC5zZXAgIT0gbm9kZXMuU0VQOgotICAg
ICAgICAgICAgICAgICAgICBub2RlaWQgPSBub2RlaWQucmVwbGFjZShwLnNlcCwgbm9kZXMuU0VQ
KQotICAgICAgICBzZWxmLnBhcnNlZmFjdG9yaWVzKHBsdWdpbiwgbm9kZWlkKQotCi0gICAgZGVm
IF9nZXRhdXRvdXNlbmFtZXMoc2VsZiwgbm9kZWlkKToKLSAgICAgICAgIiIiIHJldHVybiBhIHR1
cGxlIG9mIGZpeHR1cmUgbmFtZXMgdG8gYmUgdXNlZC4gIiIiCi0gICAgICAgIGF1dG91c2VuYW1l
cyA9IFtdCi0gICAgICAgIGZvciBiYXNlaWQsIGJhc2VuYW1lcyBpbiBzZWxmLl9ub2RlaWRfYW5k
X2F1dG91c2VuYW1lczoKLSAgICAgICAgICAgIGlmIG5vZGVpZC5zdGFydHN3aXRoKGJhc2VpZCk6
Ci0gICAgICAgICAgICAgICAgaWYgYmFzZWlkOgotICAgICAgICAgICAgICAgICAgICBpID0gbGVu
KGJhc2VpZCkKLSAgICAgICAgICAgICAgICAgICAgbmV4dGNoYXIgPSBub2RlaWRbaTppICsgMV0K
LSAgICAgICAgICAgICAgICAgICAgaWYgbmV4dGNoYXIgYW5kIG5leHRjaGFyIG5vdCBpbiAiOi8i
OgotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBhdXRv
dXNlbmFtZXMuZXh0ZW5kKGJhc2VuYW1lcykKLSAgICAgICAgIyBtYWtlIHN1cmUgYXV0b3VzZW5h
bWVzIGFyZSBzb3J0ZWQgYnkgc2NvcGUsIHNjb3BlbnVtIDAgaXMgc2Vzc2lvbgotICAgICAgICBh
dXRvdXNlbmFtZXMuc29ydCgKLSAgICAgICAgICAgIGtleT1sYW1iZGEgeDogc2VsZi5fYXJnMmZp
eHR1cmVkZWZzW3hdWy0xXS5zY29wZW51bSkKLSAgICAgICAgcmV0dXJuIGF1dG91c2VuYW1lcwot
Ci0gICAgZGVmIGdldGZpeHR1cmVjbG9zdXJlKHNlbGYsIGZpeHR1cmVuYW1lcywgcGFyZW50bm9k
ZSk6Ci0gICAgICAgICMgY29sbGVjdCB0aGUgY2xvc3VyZSBvZiBhbGwgZml4dHVyZXMgLCBzdGFy
dGluZyB3aXRoIHRoZSBnaXZlbgotICAgICAgICAjIGZpeHR1cmVuYW1lcyBhcyB0aGUgaW5pdGlh
bCBzZXQuICBBcyB3ZSBoYXZlIHRvIHZpc2l0IGFsbAotICAgICAgICAjIGZhY3RvcnkgZGVmaW5p
dGlvbnMgYW55d2F5LCB3ZSBhbHNvIHJldHVybiBhIGFyZzJmaXh0dXJlZGVmcwotICAgICAgICAj
IG1hcHBpbmcgc28gdGhhdCB0aGUgY2FsbGVyIGNhbiByZXVzZSBpdCBhbmQgZG9lcyBub3QgaGF2
ZQotICAgICAgICAjIHRvIHJlLWRpc2NvdmVyIGZpeHR1cmVkZWZzIGFnYWluIGZvciBlYWNoIGZp
eHR1cmVuYW1lCi0gICAgICAgICMgKGRpc2NvdmVyaW5nIG1hdGNoaW5nIGZpeHR1cmVzIGZvciBh
IGdpdmVuIG5hbWUvbm9kZSBpcyBleHBlbnNpdmUpCi0KLSAgICAgICAgcGFyZW50aWQgPSBwYXJl
bnRub2RlLm5vZGVpZAotICAgICAgICBmaXh0dXJlbmFtZXNfY2xvc3VyZSA9IHNlbGYuX2dldGF1
dG91c2VuYW1lcyhwYXJlbnRpZCkKLQotICAgICAgICBkZWYgbWVyZ2Uob3RoZXJsaXN0KToKLSAg
ICAgICAgICAgIGZvciBhcmcgaW4gb3RoZXJsaXN0OgotICAgICAgICAgICAgICAgIGlmIGFyZyBu
b3QgaW4gZml4dHVyZW5hbWVzX2Nsb3N1cmU6Ci0gICAgICAgICAgICAgICAgICAgIGZpeHR1cmVu
YW1lc19jbG9zdXJlLmFwcGVuZChhcmcpCi0KLSAgICAgICAgbWVyZ2UoZml4dHVyZW5hbWVzKQot
ICAgICAgICBhcmcyZml4dHVyZWRlZnMgPSB7fQotICAgICAgICBsYXN0bGVuID0gLTEKLSAgICAg
ICAgd2hpbGUgbGFzdGxlbiAhPSBsZW4oZml4dHVyZW5hbWVzX2Nsb3N1cmUpOgotICAgICAgICAg
ICAgbGFzdGxlbiA9IGxlbihmaXh0dXJlbmFtZXNfY2xvc3VyZSkKLSAgICAgICAgICAgIGZvciBh
cmduYW1lIGluIGZpeHR1cmVuYW1lc19jbG9zdXJlOgotICAgICAgICAgICAgICAgIGlmIGFyZ25h
bWUgaW4gYXJnMmZpeHR1cmVkZWZzOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAg
ICAgICAgICAgICAgIGZpeHR1cmVkZWZzID0gc2VsZi5nZXRmaXh0dXJlZGVmcyhhcmduYW1lLCBw
YXJlbnRpZCkKLSAgICAgICAgICAgICAgICBpZiBmaXh0dXJlZGVmczoKLSAgICAgICAgICAgICAg
ICAgICAgYXJnMmZpeHR1cmVkZWZzW2FyZ25hbWVdID0gZml4dHVyZWRlZnMKLSAgICAgICAgICAg
ICAgICAgICAgbWVyZ2UoZml4dHVyZWRlZnNbLTFdLmFyZ25hbWVzKQotICAgICAgICByZXR1cm4g
Zml4dHVyZW5hbWVzX2Nsb3N1cmUsIGFyZzJmaXh0dXJlZGVmcwotCi0gICAgZGVmIHB5dGVzdF9n
ZW5lcmF0ZV90ZXN0cyhzZWxmLCBtZXRhZnVuYyk6Ci0gICAgICAgIGZvciBhcmduYW1lIGluIG1l
dGFmdW5jLmZpeHR1cmVuYW1lczoKLSAgICAgICAgICAgIGZhY2xpc3QgPSBtZXRhZnVuYy5fYXJn
MmZpeHR1cmVkZWZzLmdldChhcmduYW1lKQotICAgICAgICAgICAgaWYgZmFjbGlzdDoKLSAgICAg
ICAgICAgICAgICBmaXh0dXJlZGVmID0gZmFjbGlzdFstMV0KLSAgICAgICAgICAgICAgICBpZiBm
aXh0dXJlZGVmLnBhcmFtcyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgcGFyYW1l
dHJpemVfZnVuYyA9IGdldGF0dHIobWV0YWZ1bmMuZnVuY3Rpb24sICdwYXJhbWV0cml6ZScsIE5v
bmUpCi0gICAgICAgICAgICAgICAgICAgIGZ1bmNfcGFyYW1zID0gZ2V0YXR0cihwYXJhbWV0cml6
ZV9mdW5jLCAnYXJncycsIFtbTm9uZV1dKQotICAgICAgICAgICAgICAgICAgICBmdW5jX2t3YXJn
cyA9IGdldGF0dHIocGFyYW1ldHJpemVfZnVuYywgJ2t3YXJncycsIHt9KQotICAgICAgICAgICAg
ICAgICAgICAjIHNraXAgZGlyZWN0bHkgcGFyYW1ldHJpemVkIGFyZ3VtZW50cwotICAgICAgICAg
ICAgICAgICAgICBpZiAiYXJnbmFtZXMiIGluIGZ1bmNfa3dhcmdzOgotICAgICAgICAgICAgICAg
ICAgICAgICAgYXJnbmFtZXMgPSBwYXJhbWV0cml6ZV9mdW5jLmt3YXJnc1siYXJnbmFtZXMiXQot
ICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgYXJnbmFt
ZXMgPSBmdW5jX3BhcmFtc1swXQotICAgICAgICAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5j
ZShhcmduYW1lcywgKHR1cGxlLCBsaXN0KSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBhcmdu
YW1lcyA9IFt4LnN0cmlwKCkgZm9yIHggaW4gYXJnbmFtZXMuc3BsaXQoIiwiKSBpZiB4LnN0cmlw
KCldCi0gICAgICAgICAgICAgICAgICAgIGlmIGFyZ25hbWUgbm90IGluIGZ1bmNfcGFyYW1zIGFu
ZCBhcmduYW1lIG5vdCBpbiBhcmduYW1lczoKLSAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFm
dW5jLnBhcmFtZXRyaXplKGFyZ25hbWUsIGZpeHR1cmVkZWYucGFyYW1zLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaXJlY3Q9VHJ1ZSwgc2NvcGU9Zml4
dHVyZWRlZi5zY29wZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlkcz1maXh0dXJlZGVmLmlkcykKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAg
ICAgY29udGludWUgICMgd2lsbCByYWlzZSBGaXh0dXJlTG9va3VwRXJyb3IgYXQgc2V0dXAgdGlt
ZQotCi0gICAgZGVmIHB5dGVzdF9jb2xsZWN0aW9uX21vZGlmeWl0ZW1zKHNlbGYsIGl0ZW1zKToK
LSAgICAgICAgIyBzZXBhcmF0ZSBwYXJhbWV0cml6ZWQgc2V0dXBzCi0gICAgICAgIGl0ZW1zWzpd
ID0gcmVvcmRlcl9pdGVtcyhpdGVtcykKLQotICAgIGRlZiBwYXJzZWZhY3RvcmllcyhzZWxmLCBu
b2RlX29yX29iaiwgbm9kZWlkPU5PVFNFVCwgdW5pdHRlc3Q9RmFsc2UpOgotICAgICAgICBpZiBu
b2RlaWQgaXMgbm90IE5PVFNFVDoKLSAgICAgICAgICAgIGhvbGRlcm9iaiA9IG5vZGVfb3Jfb2Jq
Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBob2xkZXJvYmogPSBub2RlX29yX29iai5vYmoK
LSAgICAgICAgICAgIG5vZGVpZCA9IG5vZGVfb3Jfb2JqLm5vZGVpZAotICAgICAgICBpZiBob2xk
ZXJvYmogaW4gc2VsZi5faG9sZGVyb2Jqc2VlbjoKLSAgICAgICAgICAgIHJldHVybgotICAgICAg
ICBzZWxmLl9ob2xkZXJvYmpzZWVuLmFkZChob2xkZXJvYmopCi0gICAgICAgIGF1dG91c2VuYW1l
cyA9IFtdCi0gICAgICAgIGZvciBuYW1lIGluIGRpcihob2xkZXJvYmopOgotICAgICAgICAgICAg
IyBUaGUgYXR0cmlidXRlIGNhbiBiZSBhbiBhcmJpdHJhcnkgZGVzY3JpcHRvciwgc28gdGhlIGF0
dHJpYnV0ZQotICAgICAgICAgICAgIyBhY2Nlc3MgYmVsb3cgY2FuIHJhaXNlLiBzYWZlX2dldGF0
dCgpIGlnbm9yZXMgc3VjaCBleGNlcHRpb25zLgotICAgICAgICAgICAgb2JqID0gc2FmZV9nZXRh
dHRyKGhvbGRlcm9iaiwgbmFtZSwgTm9uZSkKLSAgICAgICAgICAgICMgZml4dHVyZSBmdW5jdGlv
bnMgaGF2ZSBhIHB5dGVzdF9mdW5jYXJnX18gcHJlZml4IChwcmUtMi4zIHN0eWxlKQotICAgICAg
ICAgICAgIyBvciBhcmUgIkBweXRlc3QuZml4dHVyZSIgbWFya2VkCi0gICAgICAgICAgICBtYXJr
ZXIgPSBnZXRmaXh0dXJlbWFya2VyKG9iaikKLSAgICAgICAgICAgIGlmIG1hcmtlciBpcyBOb25l
OgotICAgICAgICAgICAgICAgIGlmIG5vdCBuYW1lLnN0YXJ0c3dpdGgoc2VsZi5fYXJncHJlZml4
KToKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBpZiBub3Qg
Y2FsbGFibGUob2JqKToKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAg
ICAgICBtYXJrZXIgPSBkZWZhdWx0ZnVuY2FyZ3ByZWZpeG1hcmtlcgotICAgICAgICAgICAgICAg
IGZyb20gX3B5dGVzdCBpbXBvcnQgZGVwcmVjYXRlZAotICAgICAgICAgICAgICAgIHNlbGYuY29u
ZmlnLndhcm4oJ0MxJywgZGVwcmVjYXRlZC5GVU5DQVJHX1BSRUZJWC5mb3JtYXQobmFtZT1uYW1l
KSwgbm9kZWlkPW5vZGVpZCkKLSAgICAgICAgICAgICAgICBuYW1lID0gbmFtZVtsZW4oc2VsZi5f
YXJncHJlZml4KTpdCi0gICAgICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKG1hcmtlciwgRml4
dHVyZUZ1bmN0aW9uTWFya2VyKToKLSAgICAgICAgICAgICAgICAjIG1hZ2ljIGdsb2JhbHMgIHdp
dGggX19nZXRhdHRyX18gbWlnaHQgaGF2ZSBnb3QgdXMgYSB3cm9uZwotICAgICAgICAgICAgICAg
ICMgZml4dHVyZSBhdHRyaWJ1dGUKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgICAgICBpZiBtYXJrZXIubmFtZToKLSAgICAgICAgICAgICAg
ICAgICAgbmFtZSA9IG1hcmtlci5uYW1lCi0gICAgICAgICAgICAgICAgbXNnID0gJ2ZpeHR1cmVz
IGNhbm5vdCBoYXZlICJweXRlc3RfZnVuY2FyZ19fIiBwcmVmaXggJyBcCi0gICAgICAgICAgICAg
ICAgICAgICAgJ2FuZCBiZSBkZWNvcmF0ZWQgd2l0aCBAcHl0ZXN0LmZpeHR1cmU6XG4lcycgJSBu
YW1lCi0gICAgICAgICAgICAgICAgYXNzZXJ0IG5vdCBuYW1lLnN0YXJ0c3dpdGgoc2VsZi5fYXJn
cHJlZml4KSwgbXNnCi0KLSAgICAgICAgICAgIGZpeHR1cmVfZGVmID0gRml4dHVyZURlZihzZWxm
LCBub2RlaWQsIG5hbWUsIG9iaiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtYXJrZXIuc2NvcGUsIG1hcmtlci5wYXJhbXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5pdHRlc3Q9dW5pdHRlc3QsIGlkcz1tYXJrZXIuaWRzKQotCi0gICAgICAg
ICAgICBmYWNsaXN0ID0gc2VsZi5fYXJnMmZpeHR1cmVkZWZzLnNldGRlZmF1bHQobmFtZSwgW10p
Ci0gICAgICAgICAgICBpZiBmaXh0dXJlX2RlZi5oYXNfbG9jYXRpb246Ci0gICAgICAgICAgICAg
ICAgZmFjbGlzdC5hcHBlbmQoZml4dHVyZV9kZWYpCi0gICAgICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgICAgICMgZml4dHVyZWRlZnMgd2l0aCBubyBsb2NhdGlvbiBhcmUgYXQgdGhlIGZyb250
Ci0gICAgICAgICAgICAgICAgIyBzbyB0aGlzIGluc2VydHMgdGhlIGN1cnJlbnQgZml4dHVyZWRl
ZiBhZnRlciB0aGUKLSAgICAgICAgICAgICAgICAjIGV4aXN0aW5nIGZpeHR1cmVkZWZzIGZyb20g
ZXh0ZXJuYWwgcGx1Z2lucyBidXQKLSAgICAgICAgICAgICAgICAjIGJlZm9yZSB0aGUgZml4dHVy
ZWRlZnMgcHJvdmlkZWQgaW4gY29uZnRlc3RzLgotICAgICAgICAgICAgICAgIGkgPSBsZW4oW2Yg
Zm9yIGYgaW4gZmFjbGlzdCBpZiBub3QgZi5oYXNfbG9jYXRpb25dKQotICAgICAgICAgICAgICAg
IGZhY2xpc3QuaW5zZXJ0KGksIGZpeHR1cmVfZGVmKQotICAgICAgICAgICAgaWYgbWFya2VyLmF1
dG91c2U6Ci0gICAgICAgICAgICAgICAgYXV0b3VzZW5hbWVzLmFwcGVuZChuYW1lKQotCi0gICAg
ICAgIGlmIGF1dG91c2VuYW1lczoKLSAgICAgICAgICAgIHNlbGYuX25vZGVpZF9hbmRfYXV0b3Vz
ZW5hbWVzLmFwcGVuZCgobm9kZWlkIG9yICcnLCBhdXRvdXNlbmFtZXMpKQotCi0gICAgZGVmIGdl
dGZpeHR1cmVkZWZzKHNlbGYsIGFyZ25hbWUsIG5vZGVpZCk6Ci0gICAgICAgICIiIgotICAgICAg
ICBHZXRzIGEgbGlzdCBvZiBmaXh0dXJlcyB3aGljaCBhcmUgYXBwbGljYWJsZSB0byB0aGUgZ2l2
ZW4gbm9kZSBpZC4KLQotICAgICAgICA6cGFyYW0gc3RyIGFyZ25hbWU6IG5hbWUgb2YgdGhlIGZp
eHR1cmUgdG8gc2VhcmNoIGZvcgotICAgICAgICA6cGFyYW0gc3RyIG5vZGVpZDogZnVsbCBub2Rl
IGlkIG9mIHRoZSByZXF1ZXN0aW5nIHRlc3QuCi0gICAgICAgIDpyZXR1cm46IGxpc3RbRml4dHVy
ZURlZl0KLSAgICAgICAgIiIiCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZpeHR1cmVkZWZz
ID0gc2VsZi5fYXJnMmZpeHR1cmVkZWZzW2FyZ25hbWVdCi0gICAgICAgIGV4Y2VwdCBLZXlFcnJv
cjoKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBy
ZXR1cm4gdHVwbGUoc2VsZi5fbWF0Y2hmYWN0b3JpZXMoZml4dHVyZWRlZnMsIG5vZGVpZCkpCi0K
LSAgICBkZWYgX21hdGNoZmFjdG9yaWVzKHNlbGYsIGZpeHR1cmVkZWZzLCBub2RlaWQpOgotICAg
ICAgICBmb3IgZml4dHVyZWRlZiBpbiBmaXh0dXJlZGVmczoKLSAgICAgICAgICAgIGlmIG5vZGVz
LmlzY2hpbGRub2RlKGZpeHR1cmVkZWYuYmFzZWlkLCBub2RlaWQpOgotICAgICAgICAgICAgICAg
IHlpZWxkIGZpeHR1cmVkZWYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvZnJlZXpl
X3N1cHBvcnQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2ZyZWV6ZV9zdXBwb3J0LnB5CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NzE0N2E4ODI1MGEzNTUzYzg1YzQ0YjE4MjgyM2U1
NDJiOWY3NGJjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L19weXRlc3QvZnJlZXplX3N1cHBvcnQucHkKKysrIC9kZXYvbnVsbApAQCAt
MSw0MyArMCwwIEBACi0iIiIKLVByb3ZpZGVzIGEgZnVuY3Rpb24gdG8gcmVwb3J0IGFsbCBpbnRl
cm5hbCBtb2R1bGVzIGZvciB1c2luZyBmcmVlemluZyB0b29scwotcHl0ZXN0Ci0iIiIKLWZyb20g
X19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rp
b24KLQotCi1kZWYgZnJlZXplX2luY2x1ZGVzKCk6Ci0gICAgIiIiCi0gICAgUmV0dXJucyBhIGxp
c3Qgb2YgbW9kdWxlIG5hbWVzIHVzZWQgYnkgcHkudGVzdCB0aGF0IHNob3VsZCBiZQotICAgIGlu
Y2x1ZGVkIGJ5IGN4X2ZyZWV6ZS4KLSAgICAiIiIKLSAgICBpbXBvcnQgcHkKLSAgICBpbXBvcnQg
X3B5dGVzdAotICAgIHJlc3VsdCA9IGxpc3QoX2l0ZXJfYWxsX21vZHVsZXMocHkpKQotICAgIHJl
c3VsdCArPSBsaXN0KF9pdGVyX2FsbF9tb2R1bGVzKF9weXRlc3QpKQotICAgIHJldHVybiByZXN1
bHQKLQotCi1kZWYgX2l0ZXJfYWxsX21vZHVsZXMocGFja2FnZSwgcHJlZml4PScnKToKLSAgICAi
IiIKLSAgICBJdGVyYXRlcyBvdmVyIHRoZSBuYW1lcyBvZiBhbGwgbW9kdWxlcyB0aGF0IGNhbiBi
ZSBmb3VuZCBpbiB0aGUgZ2l2ZW4KLSAgICBwYWNrYWdlLCByZWN1cnNpdmVseS4KLSAgICBFeGFt
cGxlOgotICAgICAgICBfaXRlcl9hbGxfbW9kdWxlcyhfcHl0ZXN0KSAtPgotICAgICAgICAgICAg
WydfcHl0ZXN0LmFzc2VydGlvbi5uZXdpbnRlcnByZXQnLAotICAgICAgICAgICAgICdfcHl0ZXN0
LmNhcHR1cmUnLAotICAgICAgICAgICAgICdfcHl0ZXN0LmNvcmUnLAotICAgICAgICAgICAgIC4u
LgotICAgICAgICAgICAgXQotICAgICIiIgotICAgIGltcG9ydCBvcwotICAgIGltcG9ydCBwa2d1
dGlsCi0gICAgaWYgdHlwZShwYWNrYWdlKSBpcyBub3Qgc3RyOgotICAgICAgICBwYXRoLCBwcmVm
aXggPSBwYWNrYWdlLl9fcGF0aF9fWzBdLCBwYWNrYWdlLl9fbmFtZV9fICsgJy4nCi0gICAgZWxz
ZToKLSAgICAgICAgcGF0aCA9IHBhY2thZ2UKLSAgICBmb3IgXywgbmFtZSwgaXNfcGFja2FnZSBp
biBwa2d1dGlsLml0ZXJfbW9kdWxlcyhbcGF0aF0pOgotICAgICAgICBpZiBpc19wYWNrYWdlOgot
ICAgICAgICAgICAgZm9yIG0gaW4gX2l0ZXJfYWxsX21vZHVsZXMob3MucGF0aC5qb2luKHBhdGgs
IG5hbWUpLCBwcmVmaXg9bmFtZSArICcuJyk6Ci0gICAgICAgICAgICAgICAgeWllbGQgcHJlZml4
ICsgbQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgeWllbGQgcHJlZml4ICsgbmFtZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9oZWxwY29uZmlnLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
X3B5dGVzdC9oZWxwY29uZmlnLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzQ0
NjM3Zjg2NjBmMjcyYzQ4OGEyYWIwYzY4ZWU0ZTg1NzE4YmJiLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvaGVscGNvbmZp
Zy5weQorKysgL2Rldi9udWxsCkBAIC0xLDE4NCArMCwwIEBACi0iIiIgdmVyc2lvbiBpbmZvLCBo
ZWxwIG1lc3NhZ2VzLCB0cmFjaW5nIGNvbmZpZ3VyYXRpb24uICAiIiIKLWZyb20gX19mdXR1cmVf
XyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KLQotaW1w
b3J0IHB5Ci1pbXBvcnQgcHl0ZXN0Ci1mcm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBQcmludEhl
bHAKLWltcG9ydCBvcwotaW1wb3J0IHN5cwotZnJvbSBhcmdwYXJzZSBpbXBvcnQgQWN0aW9uCi0K
LQotY2xhc3MgSGVscEFjdGlvbihBY3Rpb24pOgotICAgICIiIlRoaXMgaXMgYW4gYXJncGFyc2Ug
QWN0aW9uIHRoYXQgd2lsbCByYWlzZSBhbiBleGNlcHRpb24gaW4KLSAgICBvcmRlciB0byBza2lw
IHRoZSByZXN0IG9mIHRoZSBhcmd1bWVudCBwYXJzaW5nIHdoZW4gLS1oZWxwIGlzIHBhc3NlZC4K
LSAgICBUaGlzIHByZXZlbnRzIGFyZ3BhcnNlIGZyb20gcXVpdHRpbmcgZHVlIHRvIG1pc3Npbmcg
cmVxdWlyZWQgYXJndW1lbnRzCi0gICAgd2hlbiBhbnkgYXJlIGRlZmluZWQsIGZvciBleGFtcGxl
IGJ5IGBgcHl0ZXN0X2FkZG9wdGlvbmBgLgotICAgIFRoaXMgaXMgc2ltaWxhciB0byB0aGUgd2F5
IHRoYXQgdGhlIGJ1aWx0aW4gYXJncGFyc2UgLS1oZWxwIG9wdGlvbiBpcwotICAgIGltcGxlbWVu
dGVkIGJ5IHJhaXNpbmcgU3lzdGVtRXhpdC4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLAotICAgICAgICAgICAgICAgICBvcHRpb25fc3RyaW5ncywKLSAgICAgICAgICAgICAgICAg
ZGVzdD1Ob25lLAotICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLAotICAgICAgICAgICAg
ICAgICBoZWxwPU5vbmUpOgotICAgICAgICBzdXBlcihIZWxwQWN0aW9uLCBzZWxmKS5fX2luaXRf
XygKLSAgICAgICAgICAgIG9wdGlvbl9zdHJpbmdzPW9wdGlvbl9zdHJpbmdzLAotICAgICAgICAg
ICAgZGVzdD1kZXN0LAotICAgICAgICAgICAgY29uc3Q9VHJ1ZSwKLSAgICAgICAgICAgIGRlZmF1
bHQ9ZGVmYXVsdCwKLSAgICAgICAgICAgIG5hcmdzPTAsCi0gICAgICAgICAgICBoZWxwPWhlbHAp
Ci0KLSAgICBkZWYgX19jYWxsX18oc2VsZiwgcGFyc2VyLCBuYW1lc3BhY2UsIHZhbHVlcywgb3B0
aW9uX3N0cmluZz1Ob25lKToKLSAgICAgICAgc2V0YXR0cihuYW1lc3BhY2UsIHNlbGYuZGVzdCwg
c2VsZi5jb25zdCkKLQotICAgICAgICAjIFdlIHNob3VsZCBvbmx5IHNraXAgdGhlIHJlc3Qgb2Yg
dGhlIHBhcnNpbmcgYWZ0ZXIgcHJlcGFyc2UgaXMgZG9uZQotICAgICAgICBpZiBnZXRhdHRyKHBh
cnNlci5fcGFyc2VyLCAnYWZ0ZXJfcHJlcGFyc2UnLCBGYWxzZSk6Ci0gICAgICAgICAgICByYWlz
ZSBQcmludEhlbHAKLQotCi1kZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgotICAgIGdyb3Vw
ID0gcGFyc2VyLmdldGdyb3VwKCdkZWJ1Z2NvbmZpZycpCi0gICAgZ3JvdXAuYWRkb3B0aW9uKCct
LXZlcnNpb24nLCBhY3Rpb249InN0b3JlX3RydWUiLAotICAgICAgICAgICAgICAgICAgICBoZWxw
PSJkaXNwbGF5IHB5dGVzdCBsaWIgdmVyc2lvbiBhbmQgaW1wb3J0IGluZm9ybWF0aW9uLiIpCi0g
ICAgZ3JvdXAuX2FkZG9wdGlvbigiLWgiLCAiLS1oZWxwIiwgYWN0aW9uPUhlbHBBY3Rpb24sIGRl
c3Q9ImhlbHAiLAotICAgICAgICAgICAgICAgICAgICAgaGVscD0ic2hvdyBoZWxwIG1lc3NhZ2Ug
YW5kIGNvbmZpZ3VyYXRpb24gaW5mbyIpCi0gICAgZ3JvdXAuX2FkZG9wdGlvbignLXAnLCBhY3Rp
b249ImFwcGVuZCIsIGRlc3Q9InBsdWdpbnMiLCBkZWZhdWx0PVtdLAotICAgICAgICAgICAgICAg
ICAgICAgbWV0YXZhcj0ibmFtZSIsCi0gICAgICAgICAgICAgICAgICAgICBoZWxwPSJlYXJseS1s
b2FkIGdpdmVuIHBsdWdpbiAobXVsdGktYWxsb3dlZCkuICIKLSAgICAgICAgICAgICAgICAgICAg
ICJUbyBhdm9pZCBsb2FkaW5nIG9mIHBsdWdpbnMsIHVzZSB0aGUgYG5vOmAgcHJlZml4LCBlLmcu
ICIKLSAgICAgICAgICAgICAgICAgICAgICJgbm86ZG9jdGVzdGAuIikKLSAgICBncm91cC5hZGRv
cHRpb24oJy0tdHJhY2Vjb25maWcnLCAnLS10cmFjZS1jb25maWcnLAotICAgICAgICAgICAgICAg
ICAgICBhY3Rpb249InN0b3JlX3RydWUiLCBkZWZhdWx0PUZhbHNlLAotICAgICAgICAgICAgICAg
ICAgICBoZWxwPSJ0cmFjZSBjb25zaWRlcmF0aW9ucyBvZiBjb25mdGVzdC5weSBmaWxlcy4iKSwK
LSAgICBncm91cC5hZGRvcHRpb24oJy0tZGVidWcnLAotICAgICAgICAgICAgICAgICAgICBhY3Rp
b249InN0b3JlX3RydWUiLCBkZXN0PSJkZWJ1ZyIsIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgICAg
ICAgICAgICAgIGhlbHA9InN0b3JlIGludGVybmFsIHRyYWNpbmcgZGVidWcgaW5mb3JtYXRpb24g
aW4gJ3B5dGVzdGRlYnVnLmxvZycuIikKLSAgICBncm91cC5fYWRkb3B0aW9uKAotICAgICAgICAn
LW8nLCAnLS1vdmVycmlkZS1pbmknLCBuYXJncz0nKicsIGRlc3Q9Im92ZXJyaWRlX2luaSIsCi0g
ICAgICAgIGFjdGlvbj0iYXBwZW5kIiwKLSAgICAgICAgaGVscD0ib3ZlcnJpZGUgY29uZmlnIG9w
dGlvbiB3aXRoIG9wdGlvbj12YWx1ZSBzdHlsZSwgZS5nLiBgLW8geGZhaWxfc3RyaWN0PVRydWVg
LiIpCi0KLQotQHB5dGVzdC5ob29raW1wbChob29rd3JhcHBlcj1UcnVlKQotZGVmIHB5dGVzdF9j
bWRsaW5lX3BhcnNlKCk6Ci0gICAgb3V0Y29tZSA9IHlpZWxkCi0gICAgY29uZmlnID0gb3V0Y29t
ZS5nZXRfcmVzdWx0KCkKLSAgICBpZiBjb25maWcub3B0aW9uLmRlYnVnOgotICAgICAgICBwYXRo
ID0gb3MucGF0aC5hYnNwYXRoKCJweXRlc3RkZWJ1Zy5sb2ciKQotICAgICAgICBkZWJ1Z2ZpbGUg
PSBvcGVuKHBhdGgsICd3JykKLSAgICAgICAgZGVidWdmaWxlLndyaXRlKCJ2ZXJzaW9ucyBweXRl
c3QtJXMsIHB5LSVzLCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uLSVzXG5jd2Q9
JXNcbmFyZ3M9JXNcblxuIiAlICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBweXRlc3Qu
X192ZXJzaW9uX18sIHB5Ll9fdmVyc2lvbl9fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICIuIi5qb2luKG1hcChzdHIsIHN5cy52ZXJzaW9uX2luZm8pKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvcy5nZXRjd2QoKSwgY29uZmlnLl9vcmlnYXJncykpCi0gICAgICAgIGNvbmZp
Zy50cmFjZS5yb290LnNldHdyaXRlcihkZWJ1Z2ZpbGUud3JpdGUpCi0gICAgICAgIHVuZG9fdHJh
Y2luZyA9IGNvbmZpZy5wbHVnaW5tYW5hZ2VyLmVuYWJsZV90cmFjaW5nKCkKLSAgICAgICAgc3lz
LnN0ZGVyci53cml0ZSgid3JpdGluZyBweXRlc3RkZWJ1ZyBpbmZvcm1hdGlvbiB0byAlc1xuIiAl
IHBhdGgpCi0KLSAgICAgICAgZGVmIHVuc2V0X3RyYWNpbmcoKToKLSAgICAgICAgICAgIGRlYnVn
ZmlsZS5jbG9zZSgpCi0gICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJ3cm90ZSBweXRlc3Rk
ZWJ1ZyBpbmZvcm1hdGlvbiB0byAlc1xuIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRlYnVnZmlsZS5uYW1lKQotICAgICAgICAgICAgY29uZmlnLnRyYWNlLnJvb3Quc2V0d3JpdGVy
KE5vbmUpCi0gICAgICAgICAgICB1bmRvX3RyYWNpbmcoKQotCi0gICAgICAgIGNvbmZpZy5hZGRf
Y2xlYW51cCh1bnNldF90cmFjaW5nKQotCi0KLWRlZiBweXRlc3RfY21kbGluZV9tYWluKGNvbmZp
Zyk6Ci0gICAgaWYgY29uZmlnLm9wdGlvbi52ZXJzaW9uOgotICAgICAgICBwID0gcHkucGF0aC5s
b2NhbChweXRlc3QuX19maWxlX18pCi0gICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIlRoaXMgaXMg
cHl0ZXN0IHZlcnNpb24gJXMsIGltcG9ydGVkIGZyb20gJXNcbiIgJQotICAgICAgICAgICAgICAg
ICAgICAgICAgIChweXRlc3QuX192ZXJzaW9uX18sIHApKQotICAgICAgICBwbHVnaW5pbmZvID0g
Z2V0cGx1Z2ludmVyc2lvbmluZm8oY29uZmlnKQotICAgICAgICBpZiBwbHVnaW5pbmZvOgotICAg
ICAgICAgICAgZm9yIGxpbmUgaW4gcGx1Z2luaW5mbzoKLSAgICAgICAgICAgICAgICBzeXMuc3Rk
ZXJyLndyaXRlKGxpbmUgKyAiXG4iKQotICAgICAgICByZXR1cm4gMAotICAgIGVsaWYgY29uZmln
Lm9wdGlvbi5oZWxwOgotICAgICAgICBjb25maWcuX2RvX2NvbmZpZ3VyZSgpCi0gICAgICAgIHNo
b3doZWxwKGNvbmZpZykKLSAgICAgICAgY29uZmlnLl9lbnN1cmVfdW5jb25maWd1cmUoKQotICAg
ICAgICByZXR1cm4gMAotCi0KLWRlZiBzaG93aGVscChjb25maWcpOgotICAgIHJlcG9ydGVyID0g
Y29uZmlnLnBsdWdpbm1hbmFnZXIuZ2V0X3BsdWdpbigndGVybWluYWxyZXBvcnRlcicpCi0gICAg
dHcgPSByZXBvcnRlci5fdHcKLSAgICB0dy53cml0ZShjb25maWcuX3BhcnNlci5vcHRwYXJzZXIu
Zm9ybWF0X2hlbHAoKSkKLSAgICB0dy5saW5lKCkKLSAgICB0dy5saW5lKCkKLSAgICB0dy5saW5l
KCJbcHl0ZXN0XSBpbmktb3B0aW9ucyBpbiB0aGUgZmlyc3QgIgotICAgICAgICAgICAgInB5dGVz
dC5pbml8dG94LmluaXxzZXR1cC5jZmcgZmlsZSBmb3VuZDoiKQotICAgIHR3LmxpbmUoKQotCi0g
ICAgZm9yIG5hbWUgaW4gY29uZmlnLl9wYXJzZXIuX2luaW5hbWVzOgotICAgICAgICBoZWxwLCB0
eXBlLCBkZWZhdWx0ID0gY29uZmlnLl9wYXJzZXIuX2luaWRpY3RbbmFtZV0KLSAgICAgICAgaWYg
dHlwZSBpcyBOb25lOgotICAgICAgICAgICAgdHlwZSA9ICJzdHJpbmciCi0gICAgICAgIHNwZWMg
PSAiJXMgKCVzKSIgJSAobmFtZSwgdHlwZSkKLSAgICAgICAgbGluZSA9ICIgICUtMjRzICVzIiAl
IChzcGVjLCBoZWxwKQotICAgICAgICB0dy5saW5lKGxpbmVbOnR3LmZ1bGx3aWR0aF0pCi0KLSAg
ICB0dy5saW5lKCkKLSAgICB0dy5saW5lKCJlbnZpcm9ubWVudCB2YXJpYWJsZXM6IikKLSAgICB2
YXJzID0gWwotICAgICAgICAoIlBZVEVTVF9BRERPUFRTIiwgImV4dHJhIGNvbW1hbmQgbGluZSBv
cHRpb25zIiksCi0gICAgICAgICgiUFlURVNUX1BMVUdJTlMiLCAiY29tbWEtc2VwYXJhdGVkIHBs
dWdpbnMgdG8gbG9hZCBkdXJpbmcgc3RhcnR1cCIpLAotICAgICAgICAoIlBZVEVTVF9ERUJVRyIs
ICJzZXQgdG8gZW5hYmxlIGRlYnVnIHRyYWNpbmcgb2YgcHl0ZXN0J3MgaW50ZXJuYWxzIikKLSAg
ICBdCi0gICAgZm9yIG5hbWUsIGhlbHAgaW4gdmFyczoKLSAgICAgICAgdHcubGluZSgiICAlLTI0
cyAlcyIgJSAobmFtZSwgaGVscCkpCi0gICAgdHcubGluZSgpCi0gICAgdHcubGluZSgpCi0KLSAg
ICB0dy5saW5lKCJ0byBzZWUgYXZhaWxhYmxlIG1hcmtlcnMgdHlwZTogcHl0ZXN0IC0tbWFya2Vy
cyIpCi0gICAgdHcubGluZSgidG8gc2VlIGF2YWlsYWJsZSBmaXh0dXJlcyB0eXBlOiBweXRlc3Qg
LS1maXh0dXJlcyIpCi0gICAgdHcubGluZSgiKHNob3duIGFjY29yZGluZyB0byBzcGVjaWZpZWQg
ZmlsZV9vcl9kaXIgb3IgY3VycmVudCBkaXIgIgotICAgICAgICAgICAgImlmIG5vdCBzcGVjaWZp
ZWQpIikKLQotICAgIGZvciB3YXJuaW5ncmVwb3J0IGluIHJlcG9ydGVyLnN0YXRzLmdldCgnd2Fy
bmluZ3MnLCBbXSk6Ci0gICAgICAgIHR3LmxpbmUoIndhcm5pbmcgOiAiICsgd2FybmluZ3JlcG9y
dC5tZXNzYWdlLCByZWQ9VHJ1ZSkKLSAgICByZXR1cm4KLQotCi1jb25mdGVzdF9vcHRpb25zID0g
WwotICAgICgncHl0ZXN0X3BsdWdpbnMnLCAnbGlzdCBvZiBwbHVnaW4gbmFtZXMgdG8gbG9hZCcp
LAotXQotCi0KLWRlZiBnZXRwbHVnaW52ZXJzaW9uaW5mbyhjb25maWcpOgotICAgIGxpbmVzID0g
W10KLSAgICBwbHVnaW5pbmZvID0gY29uZmlnLnBsdWdpbm1hbmFnZXIubGlzdF9wbHVnaW5fZGlz
dGluZm8oKQotICAgIGlmIHBsdWdpbmluZm86Ci0gICAgICAgIGxpbmVzLmFwcGVuZCgic2V0dXB0
b29scyByZWdpc3RlcmVkIHBsdWdpbnM6IikKLSAgICAgICAgZm9yIHBsdWdpbiwgZGlzdCBpbiBw
bHVnaW5pbmZvOgotICAgICAgICAgICAgbG9jID0gZ2V0YXR0cihwbHVnaW4sICdfX2ZpbGVfXycs
IHJlcHIocGx1Z2luKSkKLSAgICAgICAgICAgIGNvbnRlbnQgPSAiJXMtJXMgYXQgJXMiICUgKGRp
c3QucHJvamVjdF9uYW1lLCBkaXN0LnZlcnNpb24sIGxvYykKLSAgICAgICAgICAgIGxpbmVzLmFw
cGVuZCgiICAiICsgY29udGVudCkKLSAgICByZXR1cm4gbGluZXMKLQotCi1kZWYgcHl0ZXN0X3Jl
cG9ydF9oZWFkZXIoY29uZmlnKToKLSAgICBsaW5lcyA9IFtdCi0gICAgaWYgY29uZmlnLm9wdGlv
bi5kZWJ1ZyBvciBjb25maWcub3B0aW9uLnRyYWNlY29uZmlnOgotICAgICAgICBsaW5lcy5hcHBl
bmQoInVzaW5nOiBweXRlc3QtJXMgcHlsaWItJXMiICUKLSAgICAgICAgICAgICAgICAgICAgIChw
eXRlc3QuX192ZXJzaW9uX18sIHB5Ll9fdmVyc2lvbl9fKSkKLQotICAgICAgICB2ZXJpbmZvID0g
Z2V0cGx1Z2ludmVyc2lvbmluZm8oY29uZmlnKQotICAgICAgICBpZiB2ZXJpbmZvOgotICAgICAg
ICAgICAgbGluZXMuZXh0ZW5kKHZlcmluZm8pCi0KLSAgICBpZiBjb25maWcub3B0aW9uLnRyYWNl
Y29uZmlnOgotICAgICAgICBsaW5lcy5hcHBlbmQoImFjdGl2ZSBwbHVnaW5zOiIpCi0gICAgICAg
IGl0ZW1zID0gY29uZmlnLnBsdWdpbm1hbmFnZXIubGlzdF9uYW1lX3BsdWdpbigpCi0gICAgICAg
IGZvciBuYW1lLCBwbHVnaW4gaW4gaXRlbXM6Ci0gICAgICAgICAgICBpZiBoYXNhdHRyKHBsdWdp
biwgJ19fZmlsZV9fJyk6Ci0gICAgICAgICAgICAgICAgciA9IHBsdWdpbi5fX2ZpbGVfXwotICAg
ICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByID0gcmVwcihwbHVnaW4pCi0gICAgICAg
ICAgICBsaW5lcy5hcHBlbmQoIiAgICAlLTIwczogJXMiICUgKG5hbWUsIHIpKQotICAgIHJldHVy
biBsaW5lcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9ob29rc3BlYy5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L19weXRlc3QvaG9va3NwZWMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDQ0MGJmOTlkMzc1YWE2Yzc1ZWU3NDNmZTY5ZWNmNzk3MDIyMzIyY2EuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9o
b29rc3BlYy5weQorKysgL2Rldi9udWxsCkBAIC0xLDQyMyArMCwwIEBACi0iIiIgaG9vayBzcGVj
aWZpY2F0aW9ucyBmb3IgcHl0ZXN0IHBsdWdpbnMsIGludm9rZWQgZnJvbSBtYWluLnB5IGFuZCBi
dWlsdGluIHBsdWdpbnMuICAiIiIKLQotZnJvbSBwbHVnZ3kgaW1wb3J0IEhvb2tzcGVjTWFya2Vy
Ci0KLWhvb2tzcGVjID0gSG9va3NwZWNNYXJrZXIoInB5dGVzdCIpCi0KLSMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotIyBJbml0aWFsaXphdGlvbiBob29rcyBjYWxsZWQgZm9yIGV2ZXJ5IHBsdWdpbgotIyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi0KLQotQGhvb2tzcGVjKGhpc3RvcmljPVRydWUpCi1kZWYgcHl0ZXN0
X2FkZGhvb2tzKHBsdWdpbm1hbmFnZXIpOgotICAgICIiImNhbGxlZCBhdCBwbHVnaW4gcmVnaXN0
cmF0aW9uIHRpbWUgdG8gYWxsb3cgYWRkaW5nIG5ldyBob29rcyB2aWEgYSBjYWxsIHRvCi0gICAg
cGx1Z2lubWFuYWdlci5hZGRfaG9va3NwZWNzKG1vZHVsZV9vcl9jbGFzcywgcHJlZml4KS4iIiIK
LQotCi1AaG9va3NwZWMoaGlzdG9yaWM9VHJ1ZSkKLWRlZiBweXRlc3RfbmFtZXNwYWNlKCk6Ci0g
ICAgIiIiCi0gICAgREVQUkVDQVRFRDogdGhpcyBob29rIGNhdXNlcyBkaXJlY3QgbW9ua2V5cGF0
Y2hpbmcgb24gcHl0ZXN0LCBpdHMgdXNlIGlzIHN0cm9uZ2x5IGRpc2NvdXJhZ2VkCi0gICAgcmV0
dXJuIGRpY3Qgb2YgbmFtZS0+b2JqZWN0IHRvIGJlIG1hZGUgZ2xvYmFsbHkgYXZhaWxhYmxlIGlu
Ci0gICAgdGhlIHB5dGVzdCBuYW1lc3BhY2UuICBUaGlzIGhvb2sgaXMgY2FsbGVkIGF0IHBsdWdp
biByZWdpc3RyYXRpb24KLSAgICB0aW1lLgotICAgICIiIgotCi0KLUBob29rc3BlYyhoaXN0b3Jp
Yz1UcnVlKQotZGVmIHB5dGVzdF9wbHVnaW5fcmVnaXN0ZXJlZChwbHVnaW4sIG1hbmFnZXIpOgot
ICAgICIiIiBhIG5ldyBweXRlc3QgcGx1Z2luIGdvdCByZWdpc3RlcmVkLiAiIiIKLQotCi1AaG9v
a3NwZWMoaGlzdG9yaWM9VHJ1ZSkKLWRlZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNlcik6Ci0gICAg
IiIicmVnaXN0ZXIgYXJncGFyc2Utc3R5bGUgb3B0aW9ucyBhbmQgaW5pLXN0eWxlIGNvbmZpZyB2
YWx1ZXMsCi0gICAgY2FsbGVkIG9uY2UgYXQgdGhlIGJlZ2lubmluZyBvZiBhIHRlc3QgcnVuLgot
Ci0gICAgLi4gbm90ZTo6Ci0KLSAgICAgICAgVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgaW1wbGVt
ZW50ZWQgb25seSBpbiBwbHVnaW5zIG9yIGBgY29uZnRlc3QucHlgYAotICAgICAgICBmaWxlcyBz
aXR1YXRlZCBhdCB0aGUgdGVzdHMgcm9vdCBkaXJlY3RvcnkgZHVlIHRvIGhvdyBweXRlc3QKLSAg
ICAgICAgOnJlZjpgZGlzY292ZXJzIHBsdWdpbnMgZHVyaW5nIHN0YXJ0dXAgPHBsdWdpbm9yZGVy
PmAuCi0KLSAgICA6YXJnIHBhcnNlcjogVG8gYWRkIGNvbW1hbmQgbGluZSBvcHRpb25zLCBjYWxs
Ci0gICAgICAgIDpweTpmdW5jOmBwYXJzZXIuYWRkb3B0aW9uKC4uLikgPF9weXRlc3QuY29uZmln
LlBhcnNlci5hZGRvcHRpb24+YC4KLSAgICAgICAgVG8gYWRkIGluaS1maWxlIHZhbHVlcyBjYWxs
IDpweTpmdW5jOmBwYXJzZXIuYWRkaW5pKC4uLikKLSAgICAgICAgPF9weXRlc3QuY29uZmlnLlBh
cnNlci5hZGRpbmk+YC4KLQotICAgIE9wdGlvbnMgY2FuIGxhdGVyIGJlIGFjY2Vzc2VkIHRocm91
Z2ggdGhlCi0gICAgOnB5OmNsYXNzOmBjb25maWcgPF9weXRlc3QuY29uZmlnLkNvbmZpZz5gIG9i
amVjdCwgcmVzcGVjdGl2ZWx5OgotCi0gICAgLSA6cHk6ZnVuYzpgY29uZmlnLmdldG9wdGlvbihu
YW1lKSA8X3B5dGVzdC5jb25maWcuQ29uZmlnLmdldG9wdGlvbj5gIHRvCi0gICAgICByZXRyaWV2
ZSB0aGUgdmFsdWUgb2YgYSBjb21tYW5kIGxpbmUgb3B0aW9uLgotCi0gICAgLSA6cHk6ZnVuYzpg
Y29uZmlnLmdldGluaShuYW1lKSA8X3B5dGVzdC5jb25maWcuQ29uZmlnLmdldGluaT5gIHRvIHJl
dHJpZXZlCi0gICAgICBhIHZhbHVlIHJlYWQgZnJvbSBhbiBpbmktc3R5bGUgZmlsZS4KLQotICAg
IFRoZSBjb25maWcgb2JqZWN0IGlzIHBhc3NlZCBhcm91bmQgb24gbWFueSBpbnRlcm5hbCBvYmpl
Y3RzIHZpYSB0aGUgYGAuY29uZmlnYGAKLSAgICBhdHRyaWJ1dGUgb3IgY2FuIGJlIHJldHJpZXZl
ZCBhcyB0aGUgYGBweXRlc3Rjb25maWdgYCBmaXh0dXJlIG9yIGFjY2Vzc2VkCi0gICAgdmlhIChk
ZXByZWNhdGVkKSBgYHB5dGVzdC5jb25maWdgYC4KLSAgICAiIiIKLQotCi1AaG9va3NwZWMoaGlz
dG9yaWM9VHJ1ZSkKLWRlZiBweXRlc3RfY29uZmlndXJlKGNvbmZpZyk6Ci0gICAgIiIiCi0gICAg
QWxsb3dzIHBsdWdpbnMgYW5kIGNvbmZ0ZXN0IGZpbGVzIHRvIHBlcmZvcm0gaW5pdGlhbCBjb25m
aWd1cmF0aW9uLgotCi0gICAgVGhpcyBob29rIGlzIGNhbGxlZCBmb3IgZXZlcnkgcGx1Z2luIGFu
ZCBpbml0aWFsIGNvbmZ0ZXN0IGZpbGUKLSAgICBhZnRlciBjb21tYW5kIGxpbmUgb3B0aW9ucyBo
YXZlIGJlZW4gcGFyc2VkLgotCi0gICAgQWZ0ZXIgdGhhdCwgdGhlIGhvb2sgaXMgY2FsbGVkIGZv
ciBvdGhlciBjb25mdGVzdCBmaWxlcyBhcyB0aGV5IGFyZQotICAgIGltcG9ydGVkLgotCi0gICAg
OmFyZyBjb25maWc6IHB5dGVzdCBjb25maWcgb2JqZWN0Ci0gICAgOnR5cGUgY29uZmlnOiBfcHl0
ZXN0LmNvbmZpZy5Db25maWcKLSAgICAiIiIKLQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIEJvb3Rz
dHJhcHBpbmcgaG9va3MgY2FsbGVkIGZvciBwbHVnaW5zIHJlZ2lzdGVyZWQgZWFybHkgZW5vdWdo
OgotIyBpbnRlcm5hbCBhbmQgM3JkIHBhcnR5IHBsdWdpbnMgYXMgd2VsbCBhcyBkaXJlY3RseQot
IyBkaXNjb3ZlcmFibGUgY29uZnRlc3QucHkgbG9jYWwgcGx1Z2lucy4KLSMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotCi0KLUBob29rc3BlYyhmaXJzdHJlc3VsdD1UcnVlKQotZGVmIHB5dGVzdF9jbWRsaW5l
X3BhcnNlKHBsdWdpbm1hbmFnZXIsIGFyZ3MpOgotICAgICIiInJldHVybiBpbml0aWFsaXplZCBj
b25maWcgb2JqZWN0LCBwYXJzaW5nIHRoZSBzcGVjaWZpZWQgYXJncy4KLQotICAgIFN0b3BzIGF0
IGZpcnN0IG5vbi1Ob25lIHJlc3VsdCwgc2VlIDpyZWY6YGZpcnN0cmVzdWx0YCAiIiIKLQotCi1k
ZWYgcHl0ZXN0X2NtZGxpbmVfcHJlcGFyc2UoY29uZmlnLCBhcmdzKToKLSAgICAiIiIoZGVwcmVj
YXRlZCkgbW9kaWZ5IGNvbW1hbmQgbGluZSBhcmd1bWVudHMgYmVmb3JlIG9wdGlvbiBwYXJzaW5n
LiAiIiIKLQotCi1AaG9va3NwZWMoZmlyc3RyZXN1bHQ9VHJ1ZSkKLWRlZiBweXRlc3RfY21kbGlu
ZV9tYWluKGNvbmZpZyk6Ci0gICAgIiIiIGNhbGxlZCBmb3IgcGVyZm9ybWluZyB0aGUgbWFpbiBj
b21tYW5kIGxpbmUgYWN0aW9uLiBUaGUgZGVmYXVsdAotICAgIGltcGxlbWVudGF0aW9uIHdpbGwg
aW52b2tlIHRoZSBjb25maWd1cmUgaG9va3MgYW5kIHJ1bnRlc3RfbWFpbmxvb3AuCi0KLSAgICBT
dG9wcyBhdCBmaXJzdCBub24tTm9uZSByZXN1bHQsIHNlZSA6cmVmOmBmaXJzdHJlc3VsdGAgIiIi
Ci0KLQotZGVmIHB5dGVzdF9sb2FkX2luaXRpYWxfY29uZnRlc3RzKGVhcmx5X2NvbmZpZywgcGFy
c2VyLCBhcmdzKToKLSAgICAiIiIgaW1wbGVtZW50cyB0aGUgbG9hZGluZyBvZiBpbml0aWFsIGNv
bmZ0ZXN0IGZpbGVzIGFoZWFkCi0gICAgb2YgY29tbWFuZCBsaW5lIG9wdGlvbiBwYXJzaW5nLiAi
IiIKLQotCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgY29sbGVjdGlvbiBob29rcwotIyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0KLUBob29rc3BlYyhmaXJzdHJlc3VsdD1UcnVlKQotZGVmIHB5dGVzdF9jb2xs
ZWN0aW9uKHNlc3Npb24pOgotICAgICIiIiBwZXJmb3JtIHRoZSBjb2xsZWN0aW9uIHByb3RvY29s
IGZvciB0aGUgZ2l2ZW4gc2Vzc2lvbi4KLQotICAgIFN0b3BzIGF0IGZpcnN0IG5vbi1Ob25lIHJl
c3VsdCwgc2VlIDpyZWY6YGZpcnN0cmVzdWx0YCAiIiIKLQotCi1kZWYgcHl0ZXN0X2NvbGxlY3Rp
b25fbW9kaWZ5aXRlbXMoc2Vzc2lvbiwgY29uZmlnLCBpdGVtcyk6Ci0gICAgIiIiIGNhbGxlZCBh
ZnRlciBjb2xsZWN0aW9uIGhhcyBiZWVuIHBlcmZvcm1lZCwgbWF5IGZpbHRlciBvciByZS1vcmRl
cgotICAgIHRoZSBpdGVtcyBpbi1wbGFjZS4iIiIKLQotCi1kZWYgcHl0ZXN0X2NvbGxlY3Rpb25f
ZmluaXNoKHNlc3Npb24pOgotICAgICIiIiBjYWxsZWQgYWZ0ZXIgY29sbGVjdGlvbiBoYXMgYmVl
biBwZXJmb3JtZWQgYW5kIG1vZGlmaWVkLiAiIiIKLQotCi1AaG9va3NwZWMoZmlyc3RyZXN1bHQ9
VHJ1ZSkKLWRlZiBweXRlc3RfaWdub3JlX2NvbGxlY3QocGF0aCwgY29uZmlnKToKLSAgICAiIiIg
cmV0dXJuIFRydWUgdG8gcHJldmVudCBjb25zaWRlcmluZyB0aGlzIHBhdGggZm9yIGNvbGxlY3Rp
b24uCi0gICAgVGhpcyBob29rIGlzIGNvbnN1bHRlZCBmb3IgYWxsIGZpbGVzIGFuZCBkaXJlY3Rv
cmllcyBwcmlvciB0byBjYWxsaW5nCi0gICAgbW9yZSBzcGVjaWZpYyBob29rcy4KLQotICAgIFN0
b3BzIGF0IGZpcnN0IG5vbi1Ob25lIHJlc3VsdCwgc2VlIDpyZWY6YGZpcnN0cmVzdWx0YAotICAg
ICIiIgotCi0KLUBob29rc3BlYyhmaXJzdHJlc3VsdD1UcnVlKQotZGVmIHB5dGVzdF9jb2xsZWN0
X2RpcmVjdG9yeShwYXRoLCBwYXJlbnQpOgotICAgICIiIiBjYWxsZWQgYmVmb3JlIHRyYXZlcnNp
bmcgYSBkaXJlY3RvcnkgZm9yIGNvbGxlY3Rpb24gZmlsZXMuCi0KLSAgICBTdG9wcyBhdCBmaXJz
dCBub24tTm9uZSByZXN1bHQsIHNlZSA6cmVmOmBmaXJzdHJlc3VsdGAgIiIiCi0KLQotZGVmIHB5
dGVzdF9jb2xsZWN0X2ZpbGUocGF0aCwgcGFyZW50KToKLSAgICAiIiIgcmV0dXJuIGNvbGxlY3Rp
b24gTm9kZSBvciBOb25lIGZvciB0aGUgZ2l2ZW4gcGF0aC4gQW55IG5ldyBub2RlCi0gICAgbmVl
ZHMgdG8gaGF2ZSB0aGUgc3BlY2lmaWVkIGBgcGFyZW50YGAgYXMgYSBwYXJlbnQuIiIiCi0KLSMg
bG9nZ2luZyBob29rcyBmb3IgY29sbGVjdGlvbgotCi0KLWRlZiBweXRlc3RfY29sbGVjdHN0YXJ0
KGNvbGxlY3Rvcik6Ci0gICAgIiIiIGNvbGxlY3RvciBzdGFydHMgY29sbGVjdGluZy4gIiIiCi0K
LQotZGVmIHB5dGVzdF9pdGVtY29sbGVjdGVkKGl0ZW0pOgotICAgICIiIiB3ZSBqdXN0IGNvbGxl
Y3RlZCBhIHRlc3QgaXRlbS4gIiIiCi0KLQotZGVmIHB5dGVzdF9jb2xsZWN0cmVwb3J0KHJlcG9y
dCk6Ci0gICAgIiIiIGNvbGxlY3RvciBmaW5pc2hlZCBjb2xsZWN0aW5nLiAiIiIKLQotCi1kZWYg
cHl0ZXN0X2Rlc2VsZWN0ZWQoaXRlbXMpOgotICAgICIiIiBjYWxsZWQgZm9yIHRlc3QgaXRlbXMg
ZGVzZWxlY3RlZCBieSBrZXl3b3JkLiAiIiIKLQotCi1AaG9va3NwZWMoZmlyc3RyZXN1bHQ9VHJ1
ZSkKLWRlZiBweXRlc3RfbWFrZV9jb2xsZWN0X3JlcG9ydChjb2xsZWN0b3IpOgotICAgICIiIiBw
ZXJmb3JtIGBgY29sbGVjdG9yLmNvbGxlY3QoKWBgIGFuZCByZXR1cm4gYSBDb2xsZWN0UmVwb3J0
LgotCi0gICAgU3RvcHMgYXQgZmlyc3Qgbm9uLU5vbmUgcmVzdWx0LCBzZWUgOnJlZjpgZmlyc3Ry
ZXN1bHRgICIiIgotCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgUHl0aG9uIHRlc3QgZnVuY3Rpb24g
cmVsYXRlZCBob29rcwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLQotQGhvb2tzcGVjKGZpcnN0cmVz
dWx0PVRydWUpCi1kZWYgcHl0ZXN0X3B5Y29sbGVjdF9tYWtlbW9kdWxlKHBhdGgsIHBhcmVudCk6
Ci0gICAgIiIiIHJldHVybiBhIE1vZHVsZSBjb2xsZWN0b3Igb3IgTm9uZSBmb3IgdGhlIGdpdmVu
IHBhdGguCi0gICAgVGhpcyBob29rIHdpbGwgYmUgY2FsbGVkIGZvciBlYWNoIG1hdGNoaW5nIHRl
c3QgbW9kdWxlIHBhdGguCi0gICAgVGhlIHB5dGVzdF9jb2xsZWN0X2ZpbGUgaG9vayBuZWVkcyB0
byBiZSB1c2VkIGlmIHlvdSB3YW50IHRvCi0gICAgY3JlYXRlIHRlc3QgbW9kdWxlcyBmb3IgZmls
ZXMgdGhhdCBkbyBub3QgbWF0Y2ggYXMgYSB0ZXN0IG1vZHVsZS4KLQotICAgIFN0b3BzIGF0IGZp
cnN0IG5vbi1Ob25lIHJlc3VsdCwgc2VlIDpyZWY6YGZpcnN0cmVzdWx0YCAiIiIKLQotCi1AaG9v
a3NwZWMoZmlyc3RyZXN1bHQ9VHJ1ZSkKLWRlZiBweXRlc3RfcHljb2xsZWN0X21ha2VpdGVtKGNv
bGxlY3RvciwgbmFtZSwgb2JqKToKLSAgICAiIiIgcmV0dXJuIGN1c3RvbSBpdGVtL2NvbGxlY3Rv
ciBmb3IgYSBweXRob24gb2JqZWN0IGluIGEgbW9kdWxlLCBvciBOb25lLgotCi0gICAgU3RvcHMg
YXQgZmlyc3Qgbm9uLU5vbmUgcmVzdWx0LCBzZWUgOnJlZjpgZmlyc3RyZXN1bHRgICIiIgotCi0K
LUBob29rc3BlYyhmaXJzdHJlc3VsdD1UcnVlKQotZGVmIHB5dGVzdF9weWZ1bmNfY2FsbChweWZ1
bmNpdGVtKToKLSAgICAiIiIgY2FsbCB1bmRlcmx5aW5nIHRlc3QgZnVuY3Rpb24uCi0KLSAgICBT
dG9wcyBhdCBmaXJzdCBub24tTm9uZSByZXN1bHQsIHNlZSA6cmVmOmBmaXJzdHJlc3VsdGAgIiIi
Ci0KLQotZGVmIHB5dGVzdF9nZW5lcmF0ZV90ZXN0cyhtZXRhZnVuYyk6Ci0gICAgIiIiIGdlbmVy
YXRlIChtdWx0aXBsZSkgcGFyYW1ldHJpemVkIGNhbGxzIHRvIGEgdGVzdCBmdW5jdGlvbi4iIiIK
LQotCi1AaG9va3NwZWMoZmlyc3RyZXN1bHQ9VHJ1ZSkKLWRlZiBweXRlc3RfbWFrZV9wYXJhbWV0
cml6ZV9pZChjb25maWcsIHZhbCwgYXJnbmFtZSk6Ci0gICAgIiIiUmV0dXJuIGEgdXNlci1mcmll
bmRseSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIGBgdmFsYGAgdGhhdCB3aWxs
IGJlIHVzZWQKLSAgICBieSBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUgY2FsbHMuIFJldHVybiBO
b25lIGlmIHRoZSBob29rIGRvZXNuJ3Qga25vdyBhYm91dCBgYHZhbGBgLgotICAgIFRoZSBwYXJh
bWV0ZXIgbmFtZSBpcyBhdmFpbGFibGUgYXMgYGBhcmduYW1lYGAsIGlmIHJlcXVpcmVkLgotCi0g
ICAgU3RvcHMgYXQgZmlyc3Qgbm9uLU5vbmUgcmVzdWx0LCBzZWUgOnJlZjpgZmlyc3RyZXN1bHRg
ICIiIgotCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgZ2VuZXJpYyBydW50ZXN0IHJlbGF0ZWQgaG9v
a3MKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0KLUBob29rc3BlYyhmaXJzdHJlc3VsdD1UcnVlKQot
ZGVmIHB5dGVzdF9ydW50ZXN0bG9vcChzZXNzaW9uKToKLSAgICAiIiIgY2FsbGVkIGZvciBwZXJm
b3JtaW5nIHRoZSBtYWluIHJ1bnRlc3QgbG9vcAotICAgIChhZnRlciBjb2xsZWN0aW9uIGZpbmlz
aGVkKS4KLQotICAgIFN0b3BzIGF0IGZpcnN0IG5vbi1Ob25lIHJlc3VsdCwgc2VlIDpyZWY6YGZp
cnN0cmVzdWx0YCAiIiIKLQotCi1kZWYgcHl0ZXN0X2l0ZW1zdGFydChpdGVtLCBub2RlKToKLSAg
ICAiIiIgKGRlcHJlY2F0ZWQsIHVzZSBweXRlc3RfcnVudGVzdF9sb2dzdGFydCkuICIiIgotCi0K
LUBob29rc3BlYyhmaXJzdHJlc3VsdD1UcnVlKQotZGVmIHB5dGVzdF9ydW50ZXN0X3Byb3RvY29s
KGl0ZW0sIG5leHRpdGVtKToKLSAgICAiIiIgaW1wbGVtZW50cyB0aGUgcnVudGVzdF9zZXR1cC9j
YWxsL3RlYXJkb3duIHByb3RvY29sIGZvcgotICAgIHRoZSBnaXZlbiB0ZXN0IGl0ZW0sIGluY2x1
ZGluZyBjYXB0dXJpbmcgZXhjZXB0aW9ucyBhbmQgY2FsbGluZwotICAgIHJlcG9ydGluZyBob29r
cy4KLQotICAgIDphcmcgaXRlbTogdGVzdCBpdGVtIGZvciB3aGljaCB0aGUgcnVudGVzdCBwcm90
b2NvbCBpcyBwZXJmb3JtZWQuCi0KLSAgICA6YXJnIG5leHRpdGVtOiB0aGUgc2NoZWR1bGVkLXRv
LWJlLW5leHQgdGVzdCBpdGVtIChvciBOb25lIGlmIHRoaXMKLSAgICAgICAgICAgICAgICAgICBp
cyB0aGUgZW5kIG15IGZyaWVuZCkuICBUaGlzIGFyZ3VtZW50IGlzIHBhc3NlZCBvbiB0bwotICAg
ICAgICAgICAgICAgICAgIDpweTpmdW5jOmBweXRlc3RfcnVudGVzdF90ZWFyZG93bmAuCi0KLSAg
ICA6cmV0dXJuIGJvb2xlYW46IFRydWUgaWYgbm8gZnVydGhlciBob29rIGltcGxlbWVudGF0aW9u
cyBzaG91bGQgYmUgaW52b2tlZC4KLQotCi0gICAgU3RvcHMgYXQgZmlyc3Qgbm9uLU5vbmUgcmVz
dWx0LCBzZWUgOnJlZjpgZmlyc3RyZXN1bHRgICIiIgotCi0KLWRlZiBweXRlc3RfcnVudGVzdF9s
b2dzdGFydChub2RlaWQsIGxvY2F0aW9uKToKLSAgICAiIiIgc2lnbmFsIHRoZSBzdGFydCBvZiBy
dW5uaW5nIGEgc2luZ2xlIHRlc3QgaXRlbS4gIiIiCi0KLQotZGVmIHB5dGVzdF9ydW50ZXN0X3Nl
dHVwKGl0ZW0pOgotICAgICIiIiBjYWxsZWQgYmVmb3JlIGBgcHl0ZXN0X3J1bnRlc3RfY2FsbChp
dGVtKWBgLiAiIiIKLQotCi1kZWYgcHl0ZXN0X3J1bnRlc3RfY2FsbChpdGVtKToKLSAgICAiIiIg
Y2FsbGVkIHRvIGV4ZWN1dGUgdGhlIHRlc3QgYGBpdGVtYGAuICIiIgotCi0KLWRlZiBweXRlc3Rf
cnVudGVzdF90ZWFyZG93bihpdGVtLCBuZXh0aXRlbSk6Ci0gICAgIiIiIGNhbGxlZCBhZnRlciBg
YHB5dGVzdF9ydW50ZXN0X2NhbGxgYC4KLQotICAgIDphcmcgbmV4dGl0ZW06IHRoZSBzY2hlZHVs
ZWQtdG8tYmUtbmV4dCB0ZXN0IGl0ZW0gKE5vbmUgaWYgbm8gZnVydGhlcgotICAgICAgICAgICAg
ICAgICAgIHRlc3QgaXRlbSBpcyBzY2hlZHVsZWQpLiAgVGhpcyBhcmd1bWVudCBjYW4gYmUgdXNl
ZCB0bwotICAgICAgICAgICAgICAgICAgIHBlcmZvcm0gZXhhY3QgdGVhcmRvd25zLCBpLmUuIGNh
bGxpbmcganVzdCBlbm91Z2ggZmluYWxpemVycwotICAgICAgICAgICAgICAgICAgIHNvIHRoYXQg
bmV4dGl0ZW0gb25seSBuZWVkcyB0byBjYWxsIHNldHVwLWZ1bmN0aW9ucy4KLSAgICAiIiIKLQot
Ci1AaG9va3NwZWMoZmlyc3RyZXN1bHQ9VHJ1ZSkKLWRlZiBweXRlc3RfcnVudGVzdF9tYWtlcmVw
b3J0KGl0ZW0sIGNhbGwpOgotICAgICIiIiByZXR1cm4gYSA6cHk6Y2xhc3M6YF9weXRlc3QucnVu
bmVyLlRlc3RSZXBvcnRgIG9iamVjdAotICAgIGZvciB0aGUgZ2l2ZW4gOnB5OmNsYXNzOmBweXRl
c3QuSXRlbSA8X3B5dGVzdC5tYWluLkl0ZW0+YCBhbmQKLSAgICA6cHk6Y2xhc3M6YF9weXRlc3Qu
cnVubmVyLkNhbGxJbmZvYC4KLQotICAgIFN0b3BzIGF0IGZpcnN0IG5vbi1Ob25lIHJlc3VsdCwg
c2VlIDpyZWY6YGZpcnN0cmVzdWx0YCAiIiIKLQotCi1kZWYgcHl0ZXN0X3J1bnRlc3RfbG9ncmVw
b3J0KHJlcG9ydCk6Ci0gICAgIiIiIHByb2Nlc3MgYSB0ZXN0IHNldHVwL2NhbGwvdGVhcmRvd24g
cmVwb3J0IHJlbGF0aW5nIHRvCi0gICAgdGhlIHJlc3BlY3RpdmUgcGhhc2Ugb2YgZXhlY3V0aW5n
IGEgdGVzdC4gIiIiCi0KLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBGaXh0dXJlIHJlbGF0ZWQgaG9v
a3MKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0KLUBob29rc3BlYyhmaXJzdHJlc3VsdD1UcnVlKQot
ZGVmIHB5dGVzdF9maXh0dXJlX3NldHVwKGZpeHR1cmVkZWYsIHJlcXVlc3QpOgotICAgICIiIiBw
ZXJmb3JtcyBmaXh0dXJlIHNldHVwIGV4ZWN1dGlvbi4KLQotICAgIFN0b3BzIGF0IGZpcnN0IG5v
bi1Ob25lIHJlc3VsdCwgc2VlIDpyZWY6YGZpcnN0cmVzdWx0YCAiIiIKLQotCi1kZWYgcHl0ZXN0
X2ZpeHR1cmVfcG9zdF9maW5hbGl6ZXIoZml4dHVyZWRlZiwgcmVxdWVzdCk6Ci0gICAgIiIiIGNh
bGxlZCBhZnRlciBmaXh0dXJlIHRlYXJkb3duLCBidXQgYmVmb3JlIHRoZSBjYWNoZSBpcyBjbGVh
cmVkIHNvCi0gICAgdGhlIGZpeHR1cmUgcmVzdWx0IGNhY2hlIGBgZml4dHVyZWRlZi5jYWNoZWRf
cmVzdWx0YGAgY2FuCi0gICAgc3RpbGwgYmUgYWNjZXNzZWQuIiIiCi0KLSMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotIyB0ZXN0IHNlc3Npb24gcmVsYXRlZCBob29rcwotIyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0K
LQotZGVmIHB5dGVzdF9zZXNzaW9uc3RhcnQoc2Vzc2lvbik6Ci0gICAgIiIiIGJlZm9yZSBzZXNz
aW9uLm1haW4oKSBpcyBjYWxsZWQuICIiIgotCi0KLWRlZiBweXRlc3Rfc2Vzc2lvbmZpbmlzaChz
ZXNzaW9uLCBleGl0c3RhdHVzKToKLSAgICAiIiIgd2hvbGUgdGVzdCBydW4gZmluaXNoZXMuICIi
IgotCi0KLWRlZiBweXRlc3RfdW5jb25maWd1cmUoY29uZmlnKToKLSAgICAiIiIgY2FsbGVkIGJl
Zm9yZSB0ZXN0IHByb2Nlc3MgaXMgZXhpdGVkLiAgIiIiCi0KLQotIyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci0jIGhvb2tzIGZvciBjdXN0b21pemluZyB0aGUgYXNzZXJ0IG1ldGhvZHMKLSMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotCi1kZWYgcHl0ZXN0X2Fzc2VydHJlcHJfY29tcGFyZShjb25maWcsIG9wLCBsZWZ0
LCByaWdodCk6Ci0gICAgIiIicmV0dXJuIGV4cGxhbmF0aW9uIGZvciBjb21wYXJpc29ucyBpbiBm
YWlsaW5nIGFzc2VydCBleHByZXNzaW9ucy4KLQotICAgIFJldHVybiBOb25lIGZvciBubyBjdXN0
b20gZXhwbGFuYXRpb24sIG90aGVyd2lzZSByZXR1cm4gYSBsaXN0Ci0gICAgb2Ygc3RyaW5ncy4g
IFRoZSBzdHJpbmdzIHdpbGwgYmUgam9pbmVkIGJ5IG5ld2xpbmVzIGJ1dCBhbnkgbmV3bGluZXMK
LSAgICAqaW4qIGEgc3RyaW5nIHdpbGwgYmUgZXNjYXBlZC4gIE5vdGUgdGhhdCBhbGwgYnV0IHRo
ZSBmaXJzdCBsaW5lIHdpbGwKLSAgICBiZSBpbmRlbnRlZCBzbGlnaHRseSwgdGhlIGludGVudGlv
biBpcyBmb3IgdGhlIGZpcnN0IGxpbmUgdG8gYmUgYSBzdW1tYXJ5LgotICAgICIiIgotCi0jIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLSMgaG9va3MgZm9yIGluZmx1ZW5jaW5nIHJlcG9ydGluZyAoaW52b2tl
ZCBmcm9tIF9weXRlc3RfdGVybWluYWwpCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotCi1kZWYgcHl0
ZXN0X3JlcG9ydF9oZWFkZXIoY29uZmlnLCBzdGFydGRpcik6Ci0gICAgIiIiIHJldHVybiBhIHN0
cmluZyBvciBsaXN0IG9mIHN0cmluZ3MgdG8gYmUgZGlzcGxheWVkIGFzIGhlYWRlciBpbmZvIGZv
ciB0ZXJtaW5hbCByZXBvcnRpbmcuCi0KLSAgICA6cGFyYW0gY29uZmlnOiB0aGUgcHl0ZXN0IGNv
bmZpZyBvYmplY3QuCi0gICAgOnBhcmFtIHN0YXJ0ZGlyOiBweS5wYXRoIG9iamVjdCB3aXRoIHRo
ZSBzdGFydGluZyBkaXIKLQotICAgIC4uIG5vdGU6OgotCi0gICAgICAgIFRoaXMgZnVuY3Rpb24g
c2hvdWxkIGJlIGltcGxlbWVudGVkIG9ubHkgaW4gcGx1Z2lucyBvciBgYGNvbmZ0ZXN0LnB5YGAK
LSAgICAgICAgZmlsZXMgc2l0dWF0ZWQgYXQgdGhlIHRlc3RzIHJvb3QgZGlyZWN0b3J5IGR1ZSB0
byBob3cgcHl0ZXN0Ci0gICAgICAgIDpyZWY6YGRpc2NvdmVycyBwbHVnaW5zIGR1cmluZyBzdGFy
dHVwIDxwbHVnaW5vcmRlcj5gLgotICAgICIiIgotCi0KLWRlZiBweXRlc3RfcmVwb3J0X2NvbGxl
Y3Rpb25maW5pc2goY29uZmlnLCBzdGFydGRpciwgaXRlbXMpOgotICAgICIiIgotICAgIC4uIHZl
cnNpb25hZGRlZDo6IDMuMgotCi0gICAgcmV0dXJuIGEgc3RyaW5nIG9yIGxpc3Qgb2Ygc3RyaW5n
cyB0byBiZSBkaXNwbGF5ZWQgYWZ0ZXIgY29sbGVjdGlvbiBoYXMgZmluaXNoZWQgc3VjY2Vzc2Z1
bGx5LgotCi0gICAgVGhpcyBzdHJpbmdzIHdpbGwgYmUgZGlzcGxheWVkIGFmdGVyIHRoZSBzdGFu
ZGFyZCAiY29sbGVjdGVkIFggaXRlbXMiIG1lc3NhZ2UuCi0KLSAgICA6cGFyYW0gY29uZmlnOiB0
aGUgcHl0ZXN0IGNvbmZpZyBvYmplY3QuCi0gICAgOnBhcmFtIHN0YXJ0ZGlyOiBweS5wYXRoIG9i
amVjdCB3aXRoIHRoZSBzdGFydGluZyBkaXIKLSAgICA6cGFyYW0gaXRlbXM6IGxpc3Qgb2YgcHl0
ZXN0IGl0ZW1zIHRoYXQgYXJlIGdvaW5nIHRvIGJlIGV4ZWN1dGVkOyB0aGlzIGxpc3Qgc2hvdWxk
IG5vdCBiZSBtb2RpZmllZC4KLSAgICAiIiIKLQotCi1AaG9va3NwZWMoZmlyc3RyZXN1bHQ9VHJ1
ZSkKLWRlZiBweXRlc3RfcmVwb3J0X3Rlc3RzdGF0dXMocmVwb3J0KToKLSAgICAiIiIgcmV0dXJu
IHJlc3VsdC1jYXRlZ29yeSwgc2hvcnRsZXR0ZXIgYW5kIHZlcmJvc2Ugd29yZCBmb3IgcmVwb3J0
aW5nLgotCi0gICAgU3RvcHMgYXQgZmlyc3Qgbm9uLU5vbmUgcmVzdWx0LCBzZWUgOnJlZjpgZmly
c3RyZXN1bHRgICIiIgotCi0KLWRlZiBweXRlc3RfdGVybWluYWxfc3VtbWFyeSh0ZXJtaW5hbHJl
cG9ydGVyLCBleGl0c3RhdHVzKToKLSAgICAiIiIgYWRkIGFkZGl0aW9uYWwgc2VjdGlvbiBpbiB0
ZXJtaW5hbCBzdW1tYXJ5IHJlcG9ydGluZy4gICIiIgotCi0KLUBob29rc3BlYyhoaXN0b3JpYz1U
cnVlKQotZGVmIHB5dGVzdF9sb2d3YXJuaW5nKG1lc3NhZ2UsIGNvZGUsIG5vZGVpZCwgZnNsb2Nh
dGlvbik6Ci0gICAgIiIiIHByb2Nlc3MgYSB3YXJuaW5nIHNwZWNpZmllZCBieSBhIG1lc3NhZ2Us
IGEgY29kZSBzdHJpbmcsCi0gICAgYSBub2RlaWQgYW5kIGZzbG9jYXRpb24gKGJvdGggb2Ygd2hp
Y2ggbWF5IGJlIE5vbmUKLSAgICBpZiB0aGUgd2FybmluZyBpcyBub3QgdGllZCB0byBhIHBhcnRp
bGFyIG5vZGUvbG9jYXRpb24pLiIiIgotCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgZG9jdGVzdCBo
b29rcwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLQotQGhvb2tzcGVjKGZpcnN0cmVzdWx0PVRydWUp
Ci1kZWYgcHl0ZXN0X2RvY3Rlc3RfcHJlcGFyZV9jb250ZW50KGNvbnRlbnQpOgotICAgICIiIiBy
ZXR1cm4gcHJvY2Vzc2VkIGNvbnRlbnQgZm9yIGEgZ2l2ZW4gZG9jdGVzdAotCi0gICAgU3RvcHMg
YXQgZmlyc3Qgbm9uLU5vbmUgcmVzdWx0LCBzZWUgOnJlZjpgZmlyc3RyZXN1bHRgICIiIgotCi0j
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLSMgZXJyb3IgaGFuZGxpbmcgYW5kIGludGVybmFsIGRlYnVnZ2lu
ZyBob29rcwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLQotZGVmIHB5dGVzdF9pbnRlcm5hbGVycm9y
KGV4Y3JlcHIsIGV4Y2luZm8pOgotICAgICIiIiBjYWxsZWQgZm9yIGludGVybmFsIGVycm9ycy4g
IiIiCi0KLQotZGVmIHB5dGVzdF9rZXlib2FyZF9pbnRlcnJ1cHQoZXhjaW5mbyk6Ci0gICAgIiIi
IGNhbGxlZCBmb3Iga2V5Ym9hcmQgaW50ZXJydXB0LiAiIiIKLQotCi1kZWYgcHl0ZXN0X2V4Y2Vw
dGlvbl9pbnRlcmFjdChub2RlLCBjYWxsLCByZXBvcnQpOgotICAgICIiImNhbGxlZCB3aGVuIGFu
IGV4Y2VwdGlvbiB3YXMgcmFpc2VkIHdoaWNoIGNhbiBwb3RlbnRpYWxseSBiZQotICAgIGludGVy
YWN0aXZlbHkgaGFuZGxlZC4KLQotICAgIFRoaXMgaG9vayBpcyBvbmx5IGNhbGxlZCBpZiBhbiBl
eGNlcHRpb24gd2FzIHJhaXNlZAotICAgIHRoYXQgaXMgbm90IGFuIGludGVybmFsIGV4Y2VwdGlv
biBsaWtlIGBgc2tpcC5FeGNlcHRpb25gYC4KLSAgICAiIiIKLQotCi1kZWYgcHl0ZXN0X2VudGVy
X3BkYihjb25maWcpOgotICAgICIiIiBjYWxsZWQgdXBvbiBwZGIuc2V0X3RyYWNlKCksIGNhbiBi
ZSB1c2VkIGJ5IHBsdWdpbnMgdG8gdGFrZSBzcGVjaWFsCi0gICAgYWN0aW9uIGp1c3QgYmVmb3Jl
IHRoZSBweXRob24gZGVidWdnZXIgZW50ZXJzIGluIGludGVyYWN0aXZlIG1vZGUuCi0KLSAgICA6
YXJnIGNvbmZpZzogcHl0ZXN0IGNvbmZpZyBvYmplY3QKLSAgICA6dHlwZSBjb25maWc6IF9weXRl
c3QuY29uZmlnLkNvbmZpZwotICAgICIiIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVz
dC9qdW5pdHhtbC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvanVuaXR4bWwucHkKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdmYjQwZGMzNTQ4NzRmMDM2NGRlMGM4M2FjOWZmNjYxYmNh
Nzc5ZjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvX3B5dGVzdC9qdW5pdHhtbC5weQorKysgL2Rldi9udWxsCkBAIC0xLDQ1MyArMCww
IEBACi0iIiIKLSAgICByZXBvcnQgdGVzdCByZXN1bHRzIGluIEpVbml0LVhNTCBmb3JtYXQsCi0g
ICAgZm9yIHVzZSB3aXRoIEplbmtpbnMgYW5kIGJ1aWxkIGludGVncmF0aW9uIHNlcnZlcnMuCi0K
LQotQmFzZWQgb24gaW5pdGlhbCBjb2RlIGZyb20gUm9zcyBMYXdsZXkuCi0KLU91dHB1dCBjb25m
b3JtcyB0byBodHRwczovL2dpdGh1Yi5jb20vamVua2luc2NpL3h1bml0LXBsdWdpbi9ibG9iL21h
c3Rlci8KLXNyYy9tYWluL3Jlc291cmNlcy9vcmcvamVua2luc2NpL3BsdWdpbnMveHVuaXQvdHlw
ZXMvbW9kZWwveHNkL2p1bml0LTEwLnhzZAotIiIiCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFi
c29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCi0KLWltcG9ydCBmdW5jdG9v
bHMKLWltcG9ydCBweQotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLWltcG9ydCBzeXMKLWltcG9ydCB0
aW1lCi1pbXBvcnQgcHl0ZXN0Ci1mcm9tIF9weXRlc3QgaW1wb3J0IG5vZGVzCi1mcm9tIF9weXRl
c3QuY29uZmlnIGltcG9ydCBmaWxlbmFtZV9hcmcKLQotIyBQeXRob24gMi5YIGFuZCAzLlggY29t
cGF0aWJpbGl0eQotaWYgc3lzLnZlcnNpb25faW5mb1swXSA8IDM6Ci0gICAgZnJvbSBjb2RlY3Mg
aW1wb3J0IG9wZW4KLWVsc2U6Ci0gICAgdW5pY2hyID0gY2hyCi0gICAgdW5pY29kZSA9IHN0cgot
ICAgIGxvbmcgPSBpbnQKLQotCi1jbGFzcyBKdW5pdChweS54bWwuTmFtZXNwYWNlKToKLSAgICBw
YXNzCi0KLQotIyBXZSBuZWVkIHRvIGdldCB0aGUgc3Vic2V0IG9mIHRoZSBpbnZhbGlkIHVuaWNv
ZGUgcmFuZ2VzIGFjY29yZGluZyB0bwotIyBYTUwgMS4wIHdoaWNoIGFyZSB2YWxpZCBpbiB0aGlz
IHB5dGhvbiBidWlsZC4gIEhlbmNlIHdlIGNhbGN1bGF0ZQotIyB0aGlzIGR5bmFtaWNhbGx5IGlu
c3RlYWQgb2YgaGFyZGNvZGluZyBpdC4gIFRoZSBzcGVjIHJhbmdlIG9mIHZhbGlkCi0jIGNoYXJz
IGlzOiBDaGFyIDo6PSAjeDkgfCAjeEEgfCAjeEQgfCBbI3gyMC0jeEQ3RkZdIHwgWyN4RTAwMC0j
eEZGRkRdCi0jICAgICAgICAgICAgICAgICAgICB8IFsjeDEwMDAwLSN4MTBGRkZGXQotX2xlZ2Fs
X2NoYXJzID0gKDB4MDksIDB4MEEsIDB4MGQpCi1fbGVnYWxfcmFuZ2VzID0gKAotICAgICgweDIw
LCAweDdFKSwgKDB4ODAsIDB4RDdGRiksICgweEUwMDAsIDB4RkZGRCksICgweDEwMDAwLCAweDEw
RkZGRiksCi0pCi1fbGVnYWxfeG1sX3JlID0gWwotICAgIHVuaWNvZGUoIiVzLSVzIikgJSAodW5p
Y2hyKGxvdyksIHVuaWNocihoaWdoKSkKLSAgICBmb3IgKGxvdywgaGlnaCkgaW4gX2xlZ2FsX3Jh
bmdlcyBpZiBsb3cgPCBzeXMubWF4dW5pY29kZQotXQotX2xlZ2FsX3htbF9yZSA9IFt1bmljaHIo
eCkgZm9y